blob: 96e0fe13037c1779e2c18066174063cfbb8a3648 [file] [log] [blame]
.. _python-language-reference:
Python Language Reference Coverage
==================================
This is a 1:1 mapping of the features listed in https://docs.python.org/3/reference/ and their
support in TorchScript. The categorizations are as follows:
.. list-table::
:header-rows: 1
* - Section
- Status
- Note
* - `1. Introduction <https://docs.python.org/3/reference/introduction.html>`_
- Not Relevant
-
* - `1.1. Alternate Implementations <https://docs.python.org/3/reference/introduction.html#alternate-implementations>`_
- Not Relevant
-
* - `1.2. Notation <https://docs.python.org/3/reference/introduction.html#notation>`_
- Not Relevant
-
* - `2. Lexical analysis <https://docs.python.org/3/reference/lexical_analysis.html#>`_
- Not Relevant
-
* - `2.1. Line structure <https://docs.python.org/3/reference/lexical_analysis.html#line-structure>`_
- Not Relevant
-
* - `2.1.1. Logical lines <https://docs.python.org/3/reference/lexical_analysis.html#logical-lines>`_
- Not Relevant
-
* - `2.1.2. Physical lines <https://docs.python.org/3/reference/lexical_analysis.html#physical-lines>`_
- Supported
-
* - `2.1.3. Comments <https://docs.python.org/3/reference/lexical_analysis.html#comments>`_
- Supported
-
* - `2.1.4. Encoding declarations <https://docs.python.org/3/reference/lexical_analysis.html#encoding-declarations>`_
- Not Supported
- TorchScript explicitly don't support unicode
* - `2.1.5. Explicit line joining <https://docs.python.org/3/reference/lexical_analysis.html#explicit-line-joining>`_
- Supported
-
* - `2.1.6. Implicit line joining <https://docs.python.org/3/reference/lexical_analysis.html#implicit-line-joining>`_
- Supported
-
* - `2.1.7. Blank lines <https://docs.python.org/3/reference/lexical_analysis.html#blank-lines>`_
- Supported
-
* - `2.1.8. Indentation <https://docs.python.org/3/reference/lexical_analysis.html#indentation>`_
- Supported
-
* - `2.1.9. Whitespace between tokens <https://docs.python.org/3/reference/lexical_analysis.html#whitespace-between-tokens>`_
- Not Relevant
-
* - `2.2. Other tokens <https://docs.python.org/3/reference/lexical_analysis.html#other-tokens>`_
- Not Relevant
-
* - `2.3. Identifiers and keywords <https://docs.python.org/3/reference/lexical_analysis.html#identifiers>`_
- Supported
-
* - `2.3.1. Keywords <https://docs.python.org/3/reference/lexical_analysis.html#keywords>`_
- Supported
-
* - `2.3.2. Reserved classes of identifiers <https://docs.python.org/3/reference/lexical_analysis.html#reserved-classes-of-identifiers>`_
- Supported
-
* - `2.4. Literals <https://docs.python.org/3/reference/lexical_analysis.html#literals>`_
- Not Relevant
-
* - `2.4.1. String and Bytes literals <https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals>`_
- Supported
-
* - `2.4.2. String literal concatenation <https://docs.python.org/3/reference/lexical_analysis.html#string-literal-concatenation>`_
- Supported
-
* - `2.4.3. Formatted string literals <https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals>`_
- Partially Supported
-
* - `2.4.4. Numeric literals <https://docs.python.org/3/reference/lexical_analysis.html#numeric-literals>`_
- Supported
-
* - `2.4.5. Integer literals <https://docs.python.org/3/reference/lexical_analysis.html#integer-literals>`_
- Supported
-
* - `2.4.6. Floating point literals <https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals>`_
- Supported
-
* - `2.4.7. Imaginary literals <https://docs.python.org/3/reference/lexical_analysis.html#imaginary-literals>`_
- Not Supported
-
* - `2.5. Operators <https://docs.python.org/3/reference/lexical_analysis.html#operators>`_
- Partially Supported
- Not supported: ``<<``, ``>>``, ``:=``
* - `2.6. Delimiters <https://docs.python.org/3/reference/lexical_analysis.html#delimiters>`_
- Partially Supported
- Not supported: ``**=``, ``<<=``, ``>>=``, ``%=``, ``^=``, ``@=``, ``&=``, ``//=``, ``%`` operator for some types (e.g. ``str``\ )
* - `3. Data model <https://docs.python.org/3/reference/datamodel.html#>`_
- Not Relevant
-
* - `3.1. Objects, values and types <https://docs.python.org/3/reference/datamodel.html#objects-values-and-types>`_
- Not Relevant
-
* - `3.2. The standard type hierarchy <https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy>`_
- Partially Supported
- Not supported: NotImplemented, Ellipsis, numbers.Complex, bytes, byte arrays, sets, frozen sets, generators, coroutines, async generators, modules, I/O objects, internal objects, slice objects ( though slicing is supported), classmethod
* - `3.3. Special method names <https://docs.python.org/3/reference/datamodel.html#special-method-names>`_
- Supported
-
* - `3.3.1. Basic customization <https://docs.python.org/3/reference/datamodel.html#basic-customization>`_
- Partially Supported
- Not supported: ``__new__`` , ``__del__`` , ``__bytes__`` , ``__format__`` , ``__hash__`` ,
* - `3.3.2. Customizing attribute access <https://docs.python.org/3/reference/datamodel.html#customizing-attribute-access>`_
- Not Supported
-
* - `3.3.2.1. Customizing module attribute access <https://docs.python.org/3/reference/datamodel.html#customizing-module-attribute-access>`_
- Not Supported
-
* - `3.3.2.2. Implementing Descriptors <https://docs.python.org/3/reference/datamodel.html#implementing-descriptors>`_
- Not Supported
-
* - `3.3.2.3. Invoking Descriptors <https://docs.python.org/3/reference/datamodel.html#invoking-descriptors>`_
- Not Supported
-
* - `3.3.2.4. __slots__ <https://docs.python.org/3/reference/datamodel.html#slots>`_
- Not Supported
-
* - `3.3.2.4.1. Notes on using __slots__ <https://docs.python.org/3/reference/datamodel.html#notes-on-using-slots>`_
- Not Supported
-
* - `3.3.3. Customizing class creation <https://docs.python.org/3/reference/datamodel.html#customizing-class-creation>`_
- Not Supported
-
* - `3.3.3.1. Metaclasses <https://docs.python.org/3/reference/datamodel.html#metaclasses>`_
- Not Supported
-
* - `3.3.3.2. Resolving MRO entries <https://docs.python.org/3/reference/datamodel.html#resolving-mro-entries>`_
- Not Supported
- ``super()`` is not supported
* - `3.3.3.3. Determining the appropriate metaclass <https://docs.python.org/3/reference/datamodel.html#determining-the-appropriate-metaclass>`_
- Not relevant
-
* - `3.3.3.4. Preparing the class namespace <https://docs.python.org/3/reference/datamodel.html#preparing-the-class-namespace>`_
- Not relevant
-
* - `3.3.3.5. Executing the class body <https://docs.python.org/3/reference/datamodel.html#executing-the-class-body>`_
- Not relevant
-
* - `3.3.3.6. Creating the class object <https://docs.python.org/3/reference/datamodel.html#creating-the-class-object>`_
- Not relevant
-
* - `3.3.3.7. Uses for metaclasses <https://docs.python.org/3/reference/datamodel.html#uses-for-metaclasses>`_
- Not relevant
-
* - `3.3.4. Customizing instance and subclass checks <https://docs.python.org/3/reference/datamodel.html#customizing-instance-and-subclass-checks>`_
- Not Supported
-
* - `3.3.5. Emulating generic types <https://docs.python.org/3/reference/datamodel.html#emulating-generic-types>`_
- Not Supported
-
* - `3.3.6. Emulating callable objects <https://docs.python.org/3/reference/datamodel.html#emulating-callable-objects>`_
- Supported
-
* - `3.3.7. Emulating container types <https://docs.python.org/3/reference/datamodel.html#emulating-container-types>`_
- Partially Supported
- Some magic methods not supported (e.g. ``__iter__`` )
* - `3.3.8. Emulating numeric types <https://docs.python.org/3/reference/datamodel.html#emulating-numeric-types>`_
- Partially Supported
- Magic methods with swapped operands not supported (``__r*__``)
* - `3.3.9. With Statement Context Managers <https://docs.python.org/3/reference/datamodel.html#with-statement-context-managers>`_
- Not Supported
-
* - `3.3.10. Special method lookup <https://docs.python.org/3/reference/datamodel.html#special-method-lookup>`_
- Not relevant
-
* - `3.4. Coroutines <https://docs.python.org/3/reference/datamodel.html#coroutines>`_
- Not Supported
-
* - `3.4.1. Awaitable Objects <https://docs.python.org/3/reference/datamodel.html#awaitable-objects>`_
- Not Supported
-
* - `3.4.2. Coroutine Objects <https://docs.python.org/3/reference/datamodel.html#coroutine-objects>`_
- Not Supported
-
* - `3.4.3. Asynchronous Iterators <https://docs.python.org/3/reference/datamodel.html#asynchronous-iterators>`_
- Not Supported
-
* - `3.4.4. Asynchronous Context Managers <https://docs.python.org/3/reference/datamodel.html#asynchronous-context-managers>`_
- Not Supported
-
* - `4. Execution model <https://docs.python.org/3/reference/executionmodel.html#>`_
- Not Relevant
-
* - `4.1. Structure of a program <https://docs.python.org/3/reference/executionmodel.html#structure-of-a-program>`_
- Not Relevant
-
* - `4.2. Naming and binding <https://docs.python.org/3/reference/executionmodel.html#naming-and-binding>`_
- Not Relevant
- Names are bound at compile time in TorchScript
* - `4.2.1. Binding of names <https://docs.python.org/3/reference/executionmodel.html#binding-of-names>`_
- Not Relevant
- See ``global`` and ``nonlocal`` statements section
* - `4.2.2. Resolution of names <https://docs.python.org/3/reference/executionmodel.html#resolution-of-names>`_
- Not Relevant
- See ``global`` and ``nonlocal`` statements section
* - `4.2.3. Builtins and restricted execution <https://docs.python.org/3/reference/executionmodel.html#builtins-and-restricted-execution>`_
- Not Relevant
-
* - `4.2.4. Interaction with dynamic features <https://docs.python.org/3/reference/executionmodel.html#interaction-with-dynamic-features>`_
- Not Supported
- Python values cannot be captured
* - `4.3. Exceptions <https://docs.python.org/3/reference/executionmodel.html#exceptions>`_
- Partially Supported
- See ``try`` and ``raise`` statement section
* - `5. The import system <https://docs.python.org/3/reference/import.html>`_
- Not Relevant
-
* - `6. Expressions <https://docs.python.org/3/reference/expressions.html#>`_
- Not Relevant
- See expressions section
* - `6.1. Arithmetic conversions <https://docs.python.org/3/reference/expressions.html#arithmetic-conversions>`_
- Supported
-
* - `6.2. Atoms <https://docs.python.org/3/reference/expressions.html#atoms>`_
- Not Relevant
-
* - `6.2.1. Identifiers (Names) <https://docs.python.org/3/reference/expressions.html#atom-identifiers>`_
- Supported
-
* - `6.2.2. Literals <https://docs.python.org/3/reference/expressions.html#literals>`_
- Partially Supported
- ``bytesliteral``\ , ``imagnumber`` not supported
* - `6.2.3. Parenthesized forms <https://docs.python.org/3/reference/expressions.html#parenthesized-forms>`_
- Supported
-
* - `6.2.4. Displays for lists, sets and dictionaries <https://docs.python.org/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries>`_
- Partially Supported
- Not supported: comprehension ifs, async iterators
* - `6.2.5. List displays <https://docs.python.org/3/reference/expressions.html#list-displays>`_
- Supported
-
* - `6.2.6. Set displays <https://docs.python.org/3/reference/expressions.html#set-displays>`_
- Not Supported
-
* - `6.2.7. Dictionary displays <https://docs.python.org/3/reference/expressions.html#dictionary-displays>`_
- Supported
- dict() constructor with kwargs doesn't work, dict comprehensions, dictionary unpacking
* - `6.2.8. Generator expressions <https://docs.python.org/3/reference/expressions.html#generator-expressions>`_
- Not Supported
-
* - `6.2.9. Yield expressions <https://docs.python.org/3/reference/expressions.html#yield-expressions>`_
- Not Supported
-
* - `6.2.9.1. Generator-iterator methods <https://docs.python.org/3/reference/expressions.html#generator-iterator-methods>`_
- Not Supported
-
* - `6.2.9.2. Examples <https://docs.python.org/3/reference/expressions.html#examples>`_
- Not Supported
-
* - `6.2.9.3. Asynchronous generator functions <https://docs.python.org/3/reference/expressions.html#asynchronous-generator-functions>`_
- Not Supported
-
* - `6.2.9.4. Asynchronous generator-iterator methods <https://docs.python.org/3/reference/expressions.html#asynchronous-generator-iterator-methods>`_
- Not Supported
-
* - `6.3. Primaries <https://docs.python.org/3/reference/expressions.html#primaries>`_
- Supported
-
* - `6.3.1. Attribute references <https://docs.python.org/3/reference/expressions.html#attribute-references>`_
- Supported
-
* - `6.3.2. Subscriptions <https://docs.python.org/3/reference/expressions.html#subscriptions>`_
- Supported
-
* - `6.3.3. Slicings <https://docs.python.org/3/reference/expressions.html#slicings>`_
- Partially Supported
- Tuple slicing with stride is not supported
* - `6.3.4. Calls <https://docs.python.org/3/reference/expressions.html#calls>`_
- Partially Supported
- Args unpack / kwargs unpack is not supported
* - `6.4. Await expression <https://docs.python.org/3/reference/expressions.html#await-expression>`_
- Not Supported
-
* - `6.5. The power operator <https://docs.python.org/3/reference/expressions.html#the-power-operator>`_
- Supported
-
* - `6.6. Unary arithmetic and bitwise operations <https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations>`_
- Partially Supported
- Some bitwise operators are not implemented for primitive types (e.g. ``~x`` where ``x`` is an ``int`` is not currently supported)
* - `6.7. Binary arithmetic operations <https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations>`_
- Partially Supported
- See delimiters section
* - `6.8. Shifting operations <https://docs.python.org/3/reference/expressions.html#shifting-operations>`_
- Not Supported
-
* - `6.9. Binary bitwise operations <https://docs.python.org/3/reference/expressions.html#binary-bitwise-operations>`_
- Supported
-
* - `6.10. Comparisons <https://docs.python.org/3/reference/expressions.html#comparisons>`_
- Supported
-
* - `6.10.1. Value comparisons <https://docs.python.org/3/reference/expressions.html#value-comparisons>`_
- Partially Supported
- Dictionary equality checks are not currently supported
* - `6.10.2. Membership test operations <https://docs.python.org/3/reference/expressions.html#membership-test-operations>`_
- Partially Supported
- Not supported for TorchScript classes
* - `6.10.3. Identity comparisons <https://docs.python.org/3/reference/expressions.html#is-not>`_
- Supported
-
* - `6.11. Boolean operations <https://docs.python.org/3/reference/expressions.html#boolean-operations>`_
- Supported
-
* - `6.12. Conditional expressions <https://docs.python.org/3/reference/expressions.html#conditional-expressions>`_
- Supported
-
* - `6.13. Lambdas <https://docs.python.org/3/reference/expressions.html#lambda>`_
- Not Supported
-
* - `6.14. Expression lists <https://docs.python.org/3/reference/expressions.html#expression-lists>`_
- Partially Supported
- Iterable unpacking not supported
* - `6.15. Evaluation order <https://docs.python.org/3/reference/expressions.html#evaluation-order>`_
- Supported
-
* - `6.16. Operator precedence <https://docs.python.org/3/reference/expressions.html#operator-precedence>`_
- Supported
-
* - `7. Simple statements <https://docs.python.org/3/reference/simple_stmts.html#>`_
- Supported
-
* - `7.1. Expression statements <https://docs.python.org/3/reference/simple_stmts.html#expression-statements>`_
- Supported
-
* - `7.2. Assignment statements <https://docs.python.org/3/reference/simple_stmts.html#assignment-statements>`_
- Supported
-
* - `7.2.1. Augmented assignment statements <https://docs.python.org/3/reference/simple_stmts.html#augmented-assignment-statements>`_
- Partially Supported
- See delimiters section
* - `7.2.2. Annotated assignment statements <https://docs.python.org/3/reference/simple_stmts.html#annotated-assignment-statements>`_
- Supported
-
* - `7.3. The assert statement <https://docs.python.org/3/reference/simple_stmts.html#the-assert-statement>`_
- Partially Supported
- Exception message is not customizable
* - `7.4. The pass statement <https://docs.python.org/3/reference/simple_stmts.html#the-pass-statement>`_
- Supported
-
* - `7.5. The del statement <https://docs.python.org/3/reference/simple_stmts.html#the-del-statement>`_
- Not Supported
-
* - `7.6. The return statement <https://docs.python.org/3/reference/simple_stmts.html#the-return-statement>`_
- Supported
- Some other features of returning (e.g. behavior with try..finally) are unsupported
* - `7.7. The yield statement <https://docs.python.org/3/reference/simple_stmts.html#the-yield-statement>`_
- Not Supported
-
* - `7.8. The raise statement <https://docs.python.org/3/reference/simple_stmts.html#the-raise-statement>`_
- Partially Supported
- Exception message is not customizable
* - `7.9. The break statement <https://docs.python.org/3/reference/simple_stmts.html#the-break-statement>`_
- Supported
- Some other features of returning (e.g. behavior with try..finally) are unsupported
* - `7.10. The continue statement <https://docs.python.org/3/reference/simple_stmts.html#the-continue-statement>`_
- Supported
- Some other features of returning (e.g. behavior with try..finally) are unsupported
* - `7.11. The import statement <https://docs.python.org/3/reference/simple_stmts.html#the-import-statement>`_
- Not Supported
-
* - `7.11.1. Future statements <https://docs.python.org/3/reference/simple_stmts.html#future-statements>`_
- Not Supported
-
* - `7.12. The global statement <https://docs.python.org/3/reference/simple_stmts.html#the-global-statement>`_
- Not Supported
-
* - `7.13. The nonlocal statement <https://docs.python.org/3/reference/simple_stmts.html#the-nonlocal-statement>`_
- Not Supported
-
* - `8. Compound statements <https://docs.python.org/3/reference/compound_stmts.html#>`_
- Irrelevant
-
* - `8.1. The if statement <https://docs.python.org/3/reference/compound_stmts.html#the-if-statement>`_
- Supported
-
* - `8.2. The while statement <https://docs.python.org/3/reference/compound_stmts.html#the-while-statement>`_
- Partially Supported
- while..else is not supported
* - `8.3. The for statement <https://docs.python.org/3/reference/compound_stmts.html#the-for-statement>`_
- Partially Supported
- for..else is not supported
* - `8.4. The try statement <https://docs.python.org/3/reference/compound_stmts.html#the-try-statement>`_
- Not Supported
-
* - `8.5. The with statement <https://docs.python.org/3/reference/compound_stmts.html#the-with-statement>`_
- Partially Supported
- ``__exit__`` is always called with ``exc_type``, ``exc_value``, and ``traceback`` set to None, even if an exception was raised, and ``__exit__``'s return value is ignored.
* - `8.6. Function definitions <https://docs.python.org/3/reference/compound_stmts.html#function-definitions>`_
- Not Supported
-
* - `8.7. Class definitions <https://docs.python.org/3/reference/compound_stmts.html#class-definitions>`_
- Not Supported
-
* - `8.8. Coroutines <https://docs.python.org/3/reference/compound_stmts.html#coroutines>`_
- Not Supported
-
* - `8.8.1. Coroutine function definition <https://docs.python.org/3/reference/compound_stmts.html#coroutine-function-definition>`_
- Not Supported
-
* - `8.8.2. The async for statement <https://docs.python.org/3/reference/compound_stmts.html#the-async-for-statement>`_
- Not Supported
-
* - `8.8.3. The async with statement <https://docs.python.org/3/reference/compound_stmts.html#the-async-with-statement>`_
- Not Supported
-
* - `9. Top-level components <https://docs.python.org/3/reference/toplevel_components.html#>`_
- Not Relevant
-
* - `9.1. Complete Python programs <https://docs.python.org/3/reference/toplevel_components.html#complete-python-programs>`_
- Not Relevant
-
* - `9.2. File input <https://docs.python.org/3/reference/toplevel_components.html#file-input>`_
- Not Relevant
-
* - `9.3. Interactive input <https://docs.python.org/3/reference/toplevel_components.html#interactive-input>`_
- Not Relevant
-
* - `9.4. Expression input <https://docs.python.org/3/reference/toplevel_components.html#expression-input>`_
- Not Relevant
-