This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2016年02月03日 21:44 by serhiy.storchaka, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| pyarg_parse_positional_only_and_keywords.patch | serhiy.storchaka, 2016年02月09日 14:01 | review | ||
| pyarg_parse_positional_only_and_keywords_2.patch | serhiy.storchaka, 2016年05月02日 12:20 | review | ||
| zlib_compress_positional_only_data.patch | serhiy.storchaka, 2016年05月02日 12:23 | review | ||
| pyarg_parse_positional_only_and_keywords_3.patch | serhiy.storchaka, 2016年05月08日 14:58 | review | ||
| Messages (10) | |||
|---|---|---|---|
| msg259521 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年02月03日 21:44 | |
Currently extension functions either accept only positional-only arguments (PyArg_ParseTuple), or keyword arguments (PyArg_ParseTupleAndKeywords). While adding support passing by keywords looks good for some arguments, for other arguments it doesn't make much sense. For example "encoding" and "errors" arguments for str or "base" argument for int are examples of good keyword arguments, but it is hard to choose good name for the first argument. I suggest to allow to add the support of keyword arguments only for the part of arguments, while left other arguments positional-only. This issue consists from two stages: 1. Allow PyArg_ParseTupleAndKeywords to accept empty string "" as keywords and interpret this as positional-only argument. 2. Make Argument Clinic to generate code for partial keyword arguments. The syntax already supports this: "/" separates positional-only arguments from keyword arguments. |
|||
| msg259525 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2016年02月04日 02:22 | |
For the examples you gave, they already seem to support keywords for the first parameter: int(x=0), str(object=""), bytes(source=b""). Maybe it is a bit unfortunate that they are inconsistent, but these names seem reasonable when considered separately. But I agree that in those cases having the option of a keyword would rarely be useful. This proposal sounds like it could give a small benefit, and I guess it wouldn’t be costly to implement. |
|||
| msg259773 - (view) | Author: Raymond Hettinger (rhettinger) * (Python committer) | Date: 2016年02月07日 09:31 | |
+1 for this suggestion. There are a number of places where we've been trapped between having no keyword arguments or having to use keywords for all arguments even when it doesn't make sense to have all arguments be keywords. |
|||
| msg259933 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年02月09日 14:01 | |
Proposed patch adds support for positional-only parameters in PyArg_ParseTupleAndKeywords(). It is simple, the most complex part is generating detailed error message for the case of calling with insufficient number of positional arguments. |
|||
| msg264639 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月02日 12:20 | |
Removed development code from tests (thanks Martin for catching this) and adds support in Argument Clinic. Now the patch is complete and ready for final review. |
|||
| msg264640 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月02日 12:23 | |
For example here is a patch that partially reverts issue26243 by making "data" positional parameter, but keeping "level" positional-or-keyword parameter. |
|||
| msg264972 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月06日 12:48 | |
If there are no objections I'm inclined to commit pyarg_parse_positional_only_and_keywords_2.patch in short time. |
|||
| msg265120 - (view) | Author: Martin Panter (martin.panter) * (Python committer) | Date: 2016年05月08日 09:35 | |
I made some suggestions in the documentation. I only skimmed over the C and arg clinic code, but there is nothing obviously wrong. |
|||
| msg265143 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月08日 14:58 | |
On new patch applied Martin's suggestions, added entities in What's New and NEWS, added a reference to the glossary, and improved error message. |
|||
| msg268141 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2016年06月10日 18:47 | |
New changeset 69c0aa8a8185 by Serhiy Storchaka in branch 'default': Issue #26282: PyArg_ParseTupleAndKeywords() and Argument Clinic now support https://hg.python.org/cpython/rev/69c0aa8a8185 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:27 | admin | set | github: 70470 |
| 2016年06月10日 18:55:30 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2016年06月10日 18:47:43 | python-dev | set | nosy:
+ python-dev messages: + msg268141 |
| 2016年05月08日 14:58:35 | serhiy.storchaka | set | files:
+ pyarg_parse_positional_only_and_keywords_3.patch messages: + msg265143 |
| 2016年05月08日 09:35:53 | martin.panter | set | messages: + msg265120 |
| 2016年05月06日 12:48:13 | serhiy.storchaka | set | assignee: serhiy.storchaka messages: + msg264972 |
| 2016年05月02日 12:23:10 | serhiy.storchaka | set | files:
+ zlib_compress_positional_only_data.patch messages: + msg264640 |
| 2016年05月02日 12:20:05 | serhiy.storchaka | set | files:
+ pyarg_parse_positional_only_and_keywords_2.patch messages: + msg264639 components: + Interpreter Core, Argument Clinic stage: patch review |
| 2016年04月12日 08:42:18 | ncoghlan | link | issue26729 dependencies |
| 2016年02月12日 18:15:12 | anish.shah | set | nosy:
- anish.shah |
| 2016年02月09日 14:01:34 | serhiy.storchaka | set | files:
+ pyarg_parse_positional_only_and_keywords.patch keywords: + patch messages: + msg259933 |
| 2016年02月07日 09:31:29 | rhettinger | set | nosy:
+ rhettinger messages: + msg259773 |
| 2016年02月04日 07:43:02 | anish.shah | set | nosy:
+ anish.shah |
| 2016年02月04日 02:22:28 | martin.panter | set | messages: + msg259525 |
| 2016年02月03日 21:44:16 | serhiy.storchaka | create | |