Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

gh-92248: Deprecatetype,choices,metavar parameters ofargparse.BooleanOptionalAction#103678

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
hugovk merged 6 commits intopython:mainfromsobolevn:issue-92248
May 19, 2023

Conversation

sobolevn
Copy link
Member

@sobolevnsobolevn commentedApr 22, 2023
edited by bedevere-bot
Loading

argparse.BooleanOptionalAction was added in 3.9
#85039 removed just a single wrong parameter.
But, it was on time when 3.9 was recently released, and no deprecation warning was issued.
The parameter was just removed.

But, since we already have 3.9, 3.10, and 3.11, (and all alphas of 3.12), I am sure that we need a deprecation period now.

People might use this (the use-case is probably wrong), but I don't like breaking things for no clear benefit.

I'm feeling pretty safe about this deprecation (I even considered just removing these parameters straight away), because code search shows that no one is using these arguments:https://cs.github.com/?q=action%3DBooleanOptionalAction

Plus, they don't make any sense and are mostly not changing any behaviour ofBooleanOptionalAction.

CC@barneygale since you've asked for this 😆
CC@rhettinger and@hauntsaninja since you've reviewed#85039

…VTKR.rstCo-authored-by: Kirill <80244920+Eclips4@users.noreply.github.com>
@rhettinger
Copy link
Contributor

This would gradually nudge the code toward the way it should have been designed from the outset. Eventually, it might save someone a few minutes of time.

That said, this is a pretty minor issue (ignoring unused arguments). Changing the behavior will be inconvenient for people who happened to have fed in an unused argument in code that is currently functioning correctly — we've breaking code that was sloppy but correct — I'm not sure they will appreciate being forced to make a minor edit that doesn't change behavior or fix any problem that they have.

@sobolevn
Copy link
MemberAuthor

sobolevn commentedApr 29, 2023
edited
Loading

@rhettinger thank you for your input. However, I don't quite agree with some of your points.

Changing the behavior will be inconvenient for people who happened to have fed in an unused argument in code that is currently functioning correctly

Two things here:

  1. Changing the behavior will be inconvenient: Yes, it can cause a new warning. But, this is pretty easy to deal with: just remove the argument. It won't require any compat code or migration plan. I think that this is a good thing, because it helps to indicate a problem with your code. And, of course, people with the correct code won't have any warnings at all
  2. currently functioning correctly: I don't think that we can call this code "correct". Here's the first example:
>>>fromargparseimport*>>>parser=ArgumentParser()>>>parser.add_argument('--foo',action=BooleanOptionalAction,type=int)# we expect `int`>>>parser.parse_args(['--foo'])# but get `bool`Namespace(foo=True)

Here's the code does not "function correctly" in a sense thattype is ignored. While user explicitly asks to useint.

The second example:

>>>fromargparseimport*>>>parser=ArgumentParser()>>>parser.add_argument('--foo',action=BooleanOptionalAction,choices=['on','off'])>>>parser.parse_args(['--foo'])Namespace(foo=True)

And again: user specifies two values that must be respected. But, they are ignored.

We also do not document this behaviour:
Снимок экрана 2023-04-29 в 12 59 28

So, any user might expect it to work similarly to other action types. Which is not the case right now.

All in all, I see this as an improvement:

  1. We show what's wrong and do not break any code
  2. In the future we will have the correct signature that does the correct thing

@hugovkhugovk changed the titlegh-92248: Deprecatetype,chocies,metavar parameters ofargparse.BooleanOptionalActiongh-92248: Deprecatetype,choices,metavar parameters ofargparse.BooleanOptionalActionMay 1, 2023
sobolevnand others added2 commitsMay 1, 2023 10:48
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
@hugovk
Copy link
Member

Let's merge this before the beta if there's no remaining objections.

@hugovkhugovkenabled auto-merge (squash)May 19, 2023 15:28
@hugovkhugovk merged commit27a7d5e intopython:mainMay 19, 2023
carljm added a commit to gsallam/cpython_with_perfmap_apii that referenced this pull requestMay 20, 2023
* main: (30 commits)pythongh-103987: fix several crashes in mmap module (python#103990)  docs: fix wrong indentation causing rendering error in dis page (python#104661)pythongh-94906: Support multiple steps in math.nextafter (python#103881)pythongh-104472: Skip `test_subprocess.ProcessTestCase.test_empty_env` if ASAN is enabled (python#104667)pythongh-103839: Allow building Tkinter against Tcl 8.7 without external libtommath (pythonGH-103842)pythongh-85984: New additions and improvements to the tty library. (python#101832)pythongh-104659: Consolidate python examples in enum documentation (python#104665)pythongh-92248: Deprecate `type`, `choices`, `metavar` parameters of `argparse.BooleanOptionalAction` (python#103678)pythongh-104645: fix error handling in marshal tests (python#104646)pythongh-104600: Make type.__type_params__ writable (python#104634)pythongh-104602: Add additional test for listcomp with lambda (python#104639)pythongh-104640: Disallow walrus in comprehension within type scopes (python#104641)pythongh-103921: Rename "type" header in argparse docs (python#104654)  Improve readability of `typing._ProtocolMeta.__instancecheck__` (python#104649)pythongh-96522: Fix deadlock in pty.spawn (python#96639)pythonGH-102818: Do not call `PyTraceBack_Here` in sys.settrace trampoline.  (pythonGH-104579)pythonGH-103545: Add macOS specific constants for ``os.setpriority`` to ``os`` (python#104606)pythongh-104623: Update macOS installer to SQLite 3.42.0 (pythonGH-104624)pythongh-104619: never leak comprehension locals to outer locals() (python#104637)pythongh-104602: ensure all cellvars are known up front (python#104603)  ...
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@Eclips4Eclips4Eclips4 left review comments

@hugovkhugovkhugovk approved these changes

@barneygalebarneygaleAwaiting requested review from barneygale

@rhettingerrhettingerAwaiting requested review from rhettinger

@hauntsaninjahauntsaninjaAwaiting requested review from hauntsaninja

Assignees
No one assigned
Labels
None yet
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

6 participants
@sobolevn@rhettinger@hugovk@Eclips4@bedevere-bot@arhadthedev

[8]ページ先頭

©2009-2025 Movatter.jp