[Python-Dev] PEP 362 Third Revision (original) (raw)

Victor Stinner victor.stinner at gmail.com
Thu Jun 14 14:06:09 CEST 2012


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:

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 where isimplemented 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 not None - 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 of  BuiltinFunction, raise a ValueError

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



More information about the Python-Dev mailing list