Yury Selivanov
5376ba9630
Issue #24400 : Introduce a distinct type for 'async def' coroutines.
...
Summary of changes:
1. Coroutines now have a distinct, separate from generators
type at the C level: PyGen_Type, and a new typedef PyCoroObject.
PyCoroObject shares the initial segment of struct layout with
PyGenObject, making it possible to reuse existing generators
machinery. The new type is exposed as 'types.CoroutineType'.
As a consequence of having a new type, CO_GENERATOR flag is
no longer applied to coroutines.
2. Having a separate type for coroutines made it possible to add
an __await__ method to the type. Although it is not used by the
interpreter (see details on that below), it makes coroutines
naturally (without using __instancecheck__) conform to
collections.abc.Coroutine and collections.abc.Awaitable ABCs.
[The __instancecheck__ is still used for generator-based
coroutines, as we don't want to add __await__ for generators.]
3. Add new opcode: GET_YIELD_FROM_ITER. The opcode is needed to
allow passing native coroutines to the YIELD_FROM opcode.
Before this change, 'yield from o' expression was compiled to:
(o)
GET_ITER
LOAD_CONST
YIELD_FROM
Now, we use GET_YIELD_FROM_ITER instead of GET_ITER.
The reason for adding a new opcode is that GET_ITER is used
in some contexts (such as 'for .. in' loops) where passing
a coroutine object is invalid.
4. Add two new introspection functions to the inspec module:
getcoroutinestate(c) and getcoroutinelocals(c).
5. inspect.iscoroutine(o) is updated to test if 'o' is a native
coroutine object. Before this commit it used abc.Coroutine,
and it was requested to update inspect.isgenerator(o) to use
abc.Generator; it was decided, however, that inspect functions
should really be tailored for checking for native types.
6. sys.set_coroutine_wrapper(w) API is updated to work with only
native coroutines. Since types.coroutine decorator supports
any type of callables now, it would be confusing that it does
not work for all types of coroutines.
7. Exceptions logic in generators C implementation was updated
to raise clearer messages for coroutines:
Before: TypeError("generator raised StopIteration")
After: TypeError("coroutine raised StopIteration")
2015-06-22 12:19:30 -04:00
Yury Selivanov
bf304fcb32
Issue #23934 : Fix inspect.signature to fail correctly for builtin types.
...
Initial patch by James Powell.
2015-05-30 17:08:36 -04:00
Yury Selivanov
507cd3cf91
Issue 24298: Fix signature() to properly unwrap wrappers around bound methods
2015-05-27 21:59:03 -04:00
Yury Selivanov
46c759d76d
Issue 24298: Fix signature() to properly unwrap wrappers around bound methods
2015-05-27 21:56:53 -04:00
Yury Selivanov
c8386f78fd
Issue 20438: Adjust stacklevel of inspect.getargspec() warning.
2015-05-22 16:09:44 -04:00
Yury Selivanov
3cfec2e2fc
Issue 20438: Deprecate inspect.getargspec() and friends.
2015-05-22 11:38:38 -04:00
Berker Peksag
b560158622
Set stacklevel to 2 to get more accurate warning messages from deprecated functions.
2015-05-21 23:40:54 +03:00
Yury Selivanov
095fb84fc2
Issue 23898: Fix inspect.classify_class_attrs() to work with __eq__
...
Patch by Mike Bayer.
2015-05-21 15:45:08 -04:00
Yury Selivanov
bf341fb5f6
Issue 23898: Fix inspect.classify_class_attrs() to work with __eq__
2015-05-21 15:41:57 -04:00
Yury Selivanov
ff54223606
Issue 24017: Use abc.Coroutine in inspect.iscoroutine() function
2015-05-21 12:03:21 -04:00
Yury Selivanov
57c74fca02
Issue 24248: Deprecate inspect.Signature.from_function and .from_builtin
2015-05-20 23:07:02 -04:00
Yury Selivanov
cf45f022b7
inspect.Signature: Factor out Signature.from_function to a private helper
2015-05-20 14:38:50 -04:00
Yury Selivanov
bcd4fc161a
Issue 20691: Add follow_wrapped arg to inspect.signature/from_callable.
2015-05-20 14:30:08 -04:00
Yury Selivanov
8687275358
Issue 24205: Improve inspect.Signature.bind() error messages.
2015-05-19 00:27:49 -04:00
Yury Selivanov
b907a513c8
Issue 24190: Add inspect.BoundArguments.apply_defaults() method.
2015-05-16 13:45:09 -04:00
Yury Selivanov
f229bc5c53
inspect: Remove "0x..." IDs from Signature objects' __repr__
...
Issue 24200.
2015-05-15 12:53:56 -04:00
Yury Selivanov
3f6538fed0
Issue 22547: Implement informative __repr__ for inspect.BoundArguments
2015-05-14 18:47:17 -04:00
Yury Selivanov
692b340092
inspect: Micro-optimize __eq__ for Signature, Parameter and BoundArguments
...
Provide __ne__ method for consistency.
2015-05-14 18:20:01 -04:00
Yury Selivanov
6abe03288b
inspect: Add __slots__ to BoundArguments.
2015-05-13 17:18:41 -04:00
Yury Selivanov
7544508f02
PEP 0492 -- Coroutines with async and await syntax. Issue #24017 .
2015-05-11 22:57:16 -04:00
Antoine Pitrou
a8723a02ea
Issue #21217 : inspect.getsourcelines() now tries to compute the start and
...
end lines from the code object, fixing an issue when a lambda function is
used as decorator argument. Patch by Thomas Ballinger.
2015-04-15 00:41:29 +02:00
Serhiy Storchaka
5cf2b7253d
Issue #15582 : inspect.getdoc() now follows inheritance chains.
2015-04-03 22:38:53 +03:00
Serhiy Storchaka
08448a1f4d
Issue #23326 : Removed __ne__ implementations. Since fixing default __ne__
...
implementation in issue #21408 they are redundant.
2015-01-31 12:05:05 +02:00
Yury Selivanov
ef1e750225
inspect: Fix getsource() to load updated source of reloaded module
...
Issue #1218234 . Initial patch by Berker Peksag.
2014-12-08 16:05:34 -05:00
Berker Peksag
1ed2e69a4a
Issue #22186 : Fix typos in Lib/.
...
Patch by Févry Thibault.
2014-10-19 18:07:05 +03:00
Berker Peksag
f23530f569
Issue #22186 : Fix typos in Lib/.
...
Patch by Févry Thibault.
2014-10-19 18:04:38 +03:00
Yury Selivanov
081bbf6b28
inspect: Fix getsource() to support decorated functions.
...
Issue #1764286 . Patch by Claudiu Popa.
2014-09-26 17:34:54 -04:00
Yury Selivanov
08d4a4f488
inspect.Signature: Fix discrepancy between __eq__ and __hash__.
...
Issue #20334 . Thanks to Antony Lee for bug report & initial patch.
2014-09-12 15:48:02 -04:00
Antoine Pitrou
cdcafb78b2
Issue #16808 : inspect.stack() now returns a named tuple instead of a tuple.
...
Patch by Daniel Shahaf.
2014-08-24 10:50:28 -04:00
Serhiy Storchaka
521e5860a5
Issue #22032 : __qualname__ instead of __name__ is now always used to format
...
fully qualified class names of Python implemented classes.
2014-07-22 15:00:37 +03:00
Guido van Rossum
e82881cea7
Fix getargspec() doctring (varkw -> keywords).
2014-07-15 12:29:11 -07:00
Yury Selivanov
42407abe24
inspect: Validate that __signature__ is None or an instance of Signature.
...
Closes #21801 .
2014-06-23 10:23:50 -07:00
Yury Selivanov
c0f964fd55
inspect: Validate that __signature__ is None or an instance of Signature.
...
Closes #21801 .
2014-06-23 10:21:04 -07:00
Yury Selivanov
7de29687f2
inspect: Fix getsource() to load updated source of reloaded module
...
Issue #1218234 . Initial patch by Berker Peksag.
2014-12-08 18:00:25 -05:00
Yury Selivanov
67ae50ee1c
inspect: Make Signature and Parameter hashable. Issue #20334 .
2014-04-08 11:46:50 -04:00
Yury Selivanov
3f73ca23cf
inspect.signautre: Fix functools.partial support. Issue #21117
2014-04-08 11:30:45 -04:00
Yury Selivanov
0fceaf45e2
inspect.signautre: Fix functools.partial support. Issue #21117
2014-04-08 11:28:02 -04:00
Yury Selivanov
0cf3ed60d0
inspect: Remove references to Python-3000
2014-04-01 10:17:08 -04:00
Yury Selivanov
5a23bd0d37
inspect: Update docstrings; Rename _signature_internal to _signature_from_callable.
2014-03-29 13:47:11 -04:00
Yury Selivanov
dccfa13cdb
inspect: Fix getcallargs() to fail correctly if more than 3 args are missing.
...
Patch by Jeremiah Lowin. Closes #20817 .
2014-03-27 18:42:52 -04:00
Yury Selivanov
2542b66bb0
inspect: Fix getcallargs() to fail correctly if more than 3 args are missing.
...
Patch by Jeremiah Lowin. Closes #20817 .
2014-03-27 18:42:52 -04:00
Yury Selivanov
875df20e8a
inspect: Fix getcallargs() to raise correct TypeError
...
... for missing keyword-only arguments. Patch by Jeremiah Lowin.
Closes #20816 .
2014-03-27 18:23:03 -04:00
Yury Selivanov
b1d060bf8b
inspect: Fix getcallargs() to raise correct TypeError
...
... for missing keyword-only arguments. Patch by Jeremiah Lowin.
Closes #20816 .
2014-03-27 18:23:03 -04:00
Yury Selivanov
374375dd26
inspect.signature: Improve repr of Signature and Parameter. Closes #20378
2014-03-27 12:41:53 -04:00
Yury Selivanov
da39645ad3
inspect.Signature: Add 'Signature.from_callable' classmethod. Closes #17373
2014-03-27 12:09:24 -04:00
Yury Selivanov
a5d63dd7b8
inspect.signature: Make Signature and Parameter picklable. Closes #20726
2014-03-27 11:31:43 -04:00
Yury Selivanov
21e83a5564
inspect.signature: Use enum for parameter kind constants. Closes #19573
...
Patch by Antony Lee.
2014-03-27 11:23:13 -04:00
Yury Selivanov
a773de040d
inspect.signature: Check for function-like objects before builtins. Issue #17159
2014-02-21 18:30:53 -05:00
Yury Selivanov
8c185ee12e
inspect: Fix getfullargspec to support builtin module-level functions. Issue #20711
2014-02-21 01:32:42 -05:00
Yury Selivanov
57d240ef64
inspect: Fix getfullargspec() to not to follow __wrapped__ chains
...
Initial patch by Nick Coghlan.
2014-02-19 16:27:23 -05:00