[Python-Dev] PEP 362 Third Revision (original) (raw)
Victor Stinner victor.stinner at gmail.com
Thu Jun 14 14:06:09 CEST 2012
- Previous message: [Python-Dev] PEP 362 Third Revision
- Next message: [Python-Dev] PEP 362 Third Revision
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Sorry if I'm asking dummy questions, I didn't follow the discussion.
* format(...) -> str Formats the Signature object to a string. Optional arguments allow for custom render functions for parameter names, annotations and default values, along with custom separators.
Hum, what are these "custom render functions"? Can you give an example?
* iskeywordonly : bool True if the parameter is keyword-only, else False. * isargs : bool True if the parameter accepts variable number of arguments (
*args
-like), else False. * iskwargs : bool True if the parameter accepts variable number of keyword arguments (**kwargs
-like), else False.
Hum, why not using a attribute with a string value instead of 3 attribute? For example:
- argtype: "index", "varargs", "keyword" or "keyword_only"
It would avoid a possible inconsitency (ex: is_args=True and is_kwargs=True). And it would help to implement something like a C switch/case using a dict: argtype => function for functions using signatures.
* isimplemented : bool True if the parameter is implemented for use. Some platforms implement functions but can't support specific parameters (e.g. "mode" for
os.mkdir
). Passing in an unimplemented parameter may result in the parameter being ignored, or in NotImplementedError being raised. It is intended that all conditions whereisimplemented
may be False be thoroughly documented.
I suppose that the value depends on the running platform? (For example, you may get a different value on Linux and Windows.)
Implementation ==============
- If the object has a
_signature_
attribute and if it is notNone
- return a deepcopy of it
Oh, why copying the object? It may impact performances. If fhe caller knows that it will modify the signature, it can deepcopy the signature.
- If it is
None
and the object is an instance ofBuiltinFunction
, raise aValueError
What about builtin functions (ex: len)? Do you plan to add a signature attribute? If yes, something created on demand or created at startup?
It would be nice to have a C API to create Signature objects, maybe from the same format string than PyArg_Parse*() functions. But it can be implemented later.
Is it possible to build a Signature object from a string describing the prototype (ex: "def f(x, y): pass")? (I mean: do you plan to add such function?)
--
Except of these remarks, I like this PEP :-)
Victor
- Previous message: [Python-Dev] PEP 362 Third Revision
- Next message: [Python-Dev] PEP 362 Third Revision
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]