ENH: df.assign accepting dependent **kwargs (#14207)
State: closed

Specifically, 'df.assign(b=1, c=lambda x:x['b'])'
does not throw an exception in python 3.6 and above.
Further details are discussed in Issues #14207 and #18797.

closes #14207 
closes #18797
- [X] tests added / passed
- [X] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [X] whatsnew entry


Labels:
name: Enhancement
name: API Design

Comments:
thanks for the valuable feedback. If I want to recommit my pull request, is a rebase required or can I also just add a new commit with the appropriate changes. (Sorry I'm new to that). I think I will issue a new pull request (with the appropriate change) later today
@datajanko :

1) Don't issue a new PR!  You are more than welcome to push new changes to your current PR.  The fewer PR's we have to review, the better :smile: 

2) Making your PR merge-able is of secondary concern because your tests aren't passing.  Once you get them to pass, then worry about it.  For the time being, just keep pushing new commits.
The tests pass and hopefully I fixed the errors. However, in the whatsnew section the exception traceback is printed out (when I ran it) due different python versions. What could be done there to avoid printing the traceback?
I hopefully rebased correctly. Additionally, I could fix the "errors" in the whatsnew description and squashed all commits into one
# [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=h1) Report
> :exclamation: No coverage uploaded for pull request base (`master@5c76f33`). [Click here to learn what that means](https://docs.codecov.io/docs/error-reference#section-missing-base-commit).
> The diff coverage is `28.57%`.

[![Impacted file tree graph](https://codecov.io/gh/pandas-dev/pandas/pull/18852/graphs/tree.svg?height=150&width=650&token=eZ4WkYLtcO&src=pr)](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=tree)

```diff
@@            Coverage Diff            @@
##             master   #18852   +/-   ##
=========================================
  Coverage          ?   91.61%           
=========================================
  Files             ?      150           
  Lines             ?    48796           
  Branches          ?        0           
=========================================
  Hits              ?    44704           
  Misses            ?     4092           
  Partials          ?        0
```

| Flag | Coverage Δ | |
|---|---|---|
| #multiple | `89.98% <28.57%> (?)` | |
| #single | `41.72% <28.57%> (?)` | |

| [Impacted Files](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [pandas/core/frame.py](https://codecov.io/gh/pandas-dev/pandas/pull/18852/diff?src=pr&el=tree#diff-cGFuZGFzL2NvcmUvZnJhbWUucHk=) | `97.17% <28.57%> (ø)` | |

------

[Continue to review full report at Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=footer). Last update [5c76f33...4184732](https://codecov.io/gh/pandas-dev/pandas/pull/18852?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

Why is the coverage changing in only the documentation is changed?
coverage is a little bit bogus :<
Could you add a 

    .. versionmodified :: 0.23.0
       Keyword argument order is maintained for Python 3.6 and later.

to https://github.com/pandas-dev/pandas/pull/18852/files#diff-1e79abbbdd150d4771b91ea60a4e1cc7R2648
Sorry, I am not sure why travis failed on some 3.5 builds. Any ideas? Maybe I messed something up when reading?
  
I restarted the builds to check, but you might need to rebase onto `master`.  There has been some `numpy` weirdness lately (see d5194e5 from @TomAugspurger where we pinned `numpy`).
I saw some issues yesterday and already performed a rebase (I hope correctly). I think I know where the issues are coming from: I added an example in frame.py (as @TomAugspurger suggested) as a doctest which will only work for python 3.6 and above. Is it possible to skip the doctest for older python versions? If not can I post examples in the doctoring of a function also using restructured texts code-blocks?
so what is the next thing I should do in this pull request? some rebasing required? Or just sit back and wait?
@TomAugspurger if you'd verify this reads ok.
is there anything left I need to do?
can you rebase on master
just for clarification: rebasing the changes you made to my branch on the current master branch of pandas-dev? I think I will be able to manage this over the weekend
yes just rebase against master and push again
sorry, did the rebase just now. Had some urgent family matters to attend. Hope the rebase is correct. 
thanks!