diff options
author | Guido van Rossum <guido@python.org> | 2020-04-07 16:50:06 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-07 16:50:06 (GMT) |
commit | 48b069a003ba6c684a9ba78493fbbec5e89f10b8 (patch) | |
tree | e67e71abd17516cea5fe1a1ec487bf929ab0b9fd /Include | |
parent | 9cc3ebd7e04cb645ac7b2f372eaafa7464e16b9c (diff) | |
download | cpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.zip cpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.tar.gz cpython-48b069a003ba6c684a9ba78493fbbec5e89f10b8.tar.bz2 |
bpo-39481: Implementation for PEP 585 (#18239)
This implements things like `list[int]`,
which returns an object of type `types.GenericAlias`.
This object mostly acts as a proxy for `list`,
but has attributes `__origin__` and `__args__`
that allow recovering the parts (with values `list` and `(int,)`.
There is also an approximate notion of type variables;
e.g. `list[T]` has a `__parameters__` attribute equal to `(T,)`.
Type variables are objects of type `typing.TypeVar`.
Diffstat (limited to 'Include')
-rw-r--r-- | Include/Python.h | 1 | ||||
-rw-r--r-- | Include/genericaliasobject.h | 14 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Include/Python.h b/Include/Python.h index 969d8e6..769ec49 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -120,6 +120,7 @@ #include "iterobject.h" #include "genobject.h" #include "descrobject.h" +#include "genericaliasobject.h" #include "warnings.h" #include "weakrefobject.h" #include "structseq.h" diff --git a/Include/genericaliasobject.h b/Include/genericaliasobject.h new file mode 100644 index 0000000..cf00297 --- /dev/null +++ b/Include/genericaliasobject.h @@ -0,0 +1,14 @@ +// Implementation of PEP 585: support list[int] etc. +#ifndef Py_GENERICALIASOBJECT_H +#define Py_GENERICALIASOBJECT_H +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(PyObject *) Py_GenericAlias(PyObject *, PyObject *); +PyAPI_DATA(PyTypeObject) Py_GenericAliasType; + +#ifdef __cplusplus +} +#endif +#endif /* !Py_GENERICALIASOBJECT_H */ |