diff -r c45a10b93a56 Lib/inspect.py --- a/Lib/inspect.py Mon Feb 03 09:35:08 2014 -0500 +++ b/Lib/inspect.py Mon Feb 03 13:14:36 2014 -0500 @@ -1653,6 +1653,12 @@ # and return a Signature based on it Parameter = cls._parameter_cls + name = None + lparen = s.find('(') + if lparen > 0: + name = s[:lparen] + s = s[lparen:] + if s.endswith("/)"): kind = Parameter.POSITIONAL_ONLY s = s[:-2] + ')' @@ -1679,9 +1685,17 @@ empty = Parameter.empty invalid = object() + module_name = getattr(obj, '__module__', None) + if not module_name and name: + name_parts = name.split('.') + if first_parameter_is_self: + module_name = '.'.join(name_parts[:-2]) + else: + module_name = '.'.join(name_parts[:-1]) + module = None module_dict = {} - module_name = getattr(obj, '__module__', None) + if module_name: module = sys.modules.get(module_name, None) if module: diff -r c45a10b93a56 Modules/clinic/zlibmodule.c.h --- a/Modules/clinic/zlibmodule.c.h Mon Feb 03 09:35:08 2014 -0500 +++ b/Modules/clinic/zlibmodule.c.h Mon Feb 03 13:14:36 2014 -0500 @@ -3,7 +3,7 @@ [clinic start generated code]*/ PyDoc_STRVAR(zlib_compress__doc__, -"sig=($module, bytes, level=Z_DEFAULT_COMPRESSION)\n" +"sig=zlib.compress($module, bytes, level=Z_DEFAULT_COMPRESSION)\n" "Returns a bytes object containing compressed data.\n" "\n" " bytes\n" @@ -39,7 +39,7 @@ } PyDoc_STRVAR(zlib_decompress__doc__, -"sig=($module, data, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)\n" +"sig=zlib.decompress($module, data, wbits=MAX_WBITS, bufsize=DEF_BUF_SIZE)\n" "Returns a bytes object containing the uncompressed data.\n" "\n" " data\n" @@ -78,7 +78,7 @@ } PyDoc_STRVAR(zlib_compressobj__doc__, -"sig=($module, level=Z_DEFAULT_COMPRESSION, method=DEFLATED, wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=Z_DEFAULT_STRATEGY, zdict=None)\n" +"sig=zlib.compressobj($module, level=Z_DEFAULT_COMPRESSION, method=DEFLATED, wbits=MAX_WBITS, memLevel=DEF_MEM_LEVEL, strategy=Z_DEFAULT_STRATEGY, zdict=None)\n" "Return a compressor object.\n" "\n" " level\n" @@ -132,7 +132,7 @@ } PyDoc_STRVAR(zlib_decompressobj__doc__, -"sig=($module, wbits=MAX_WBITS, zdict=b\'\')\n" +"sig=zlib.decompressobj($module, wbits=MAX_WBITS, zdict=b\'\')\n" "Return a decompressor object.\n" "\n" " wbits\n" @@ -166,7 +166,7 @@ } PyDoc_STRVAR(zlib_Compress_compress__doc__, -"sig=($self, data)\n" +"sig=zlib.Compress.compress($self, data)\n" "Returns a bytes object containing compressed data.\n" "\n" " data\n" @@ -203,7 +203,7 @@ } PyDoc_STRVAR(zlib_Decompress_decompress__doc__, -"sig=($self, data, max_length=0)\n" +"sig=zlib.Decompress.decompress($self, data, max_length=0)\n" "Return a bytes object containing the decompressed version of the data.\n" "\n" " data\n" @@ -245,7 +245,7 @@ } PyDoc_STRVAR(zlib_Compress_flush__doc__, -"sig=($self, mode=Z_FINISH)\n" +"sig=zlib.Compress.flush($self, mode=Z_FINISH)\n" "Return a bytes object containing any remaining compressed data.\n" "\n" " mode\n" @@ -279,7 +279,7 @@ #if defined(HAVE_ZLIB_COPY) PyDoc_STRVAR(zlib_Compress_copy__doc__, -"sig=($self)\n" +"sig=zlib.Compress.copy($self)\n" "Return a copy of the compression object."); #define ZLIB_COMPRESS_COPY_METHODDEF \ @@ -303,7 +303,7 @@ #if defined(HAVE_ZLIB_COPY) PyDoc_STRVAR(zlib_Decompress_copy__doc__, -"sig=($self)\n" +"sig=zlib.Decompress.copy($self)\n" "Return a copy of the decompression object."); #define ZLIB_DECOMPRESS_COPY_METHODDEF \ @@ -325,7 +325,7 @@ #endif /* !defined(ZLIB_DECOMPRESS_COPY_METHODDEF) */ PyDoc_STRVAR(zlib_Decompress_flush__doc__, -"sig=($self, length=DEF_BUF_SIZE)\n" +"sig=zlib.Decompress.flush($self, length=DEF_BUF_SIZE)\n" "Return a bytes object containing any remaining decompressed data.\n" "\n" " length\n" @@ -354,7 +354,7 @@ } PyDoc_STRVAR(zlib_adler32__doc__, -"sig=($module, data, value=1)\n" +"sig=zlib.adler32($module, data, value=1)\n" "Compute an Adler-32 checksum of data.\n" "\n" " value\n" @@ -390,7 +390,7 @@ } PyDoc_STRVAR(zlib_crc32__doc__, -"sig=($module, data, value=0)\n" +"sig=zlib.crc32($module, data, value=0)\n" "Compute a CRC-32 checksum of data.\n" "\n" " value\n" @@ -424,4 +424,4 @@ return return_value; } -/*[clinic end generated code: output=21556008559f839c input=a9049054013a1b77]*/ +/*[clinic end generated code: output=7376f1e95be65409 input=a9049054013a1b77]*/ diff -r c45a10b93a56 Objects/typeobject.c --- a/Objects/typeobject.c Mon Feb 03 09:35:08 2014 -0500 +++ b/Objects/typeobject.c Mon Feb 03 13:14:36 2014 -0500 @@ -62,7 +62,7 @@ static const char * find_signature(const char *doc) { - if (doc && !strncmp(doc, "sig=(", 5)) + if (doc && !strncmp(doc, "sig=", 4)) return doc + 4; return NULL; } diff -r c45a10b93a56 Tools/clinic/clinic.py --- a/Tools/clinic/clinic.py Mon Feb 03 09:35:08 2014 -0500 +++ b/Tools/clinic/clinic.py Mon Feb 03 13:14:36 2014 -0500 @@ -3792,6 +3792,7 @@ if not f.suppress_signature: add('sig=') + add(f.full_name) else: if new_or_init: assert f.cls