PEP 646: Add note of alternatives that exist (#1884)
This commit is contained in:
parent
47cb40ea58
commit
701678f4d7
31
pep-0646.rst
31
pep-0646.rst
|
@ -698,6 +698,31 @@ between old unannotated code and new versions of libraries which do use
|
|||
these type annotations.
|
||||
|
||||
|
||||
Alternatives
|
||||
============
|
||||
|
||||
It should be noted that the approach outlined in this PEP to solve the
|
||||
issue of shape checking in numerical libraries is *not* the only approach
|
||||
possible. Examples of lighter-weight alternatives based on *runtime* checking include
|
||||
ShapeGuard [#shapeguard]_, tsanley [#tsanley]_, and PyContracts [#pycontracts]_.
|
||||
|
||||
While these existing approaches improve significantly on the default
|
||||
situation of shape checking only being possible through lengthy and verbose
|
||||
assert statements, none of them enable *static* analysis of shape correctness.
|
||||
As mentioned in `Motivation`_, this is particularly desirable for
|
||||
machine learning applications where, due to library and infrastructure complexity,
|
||||
even relatively simple programs must suffer long startup times; iterating
|
||||
by running the program until it crashes, as is necessary with these
|
||||
existing runtime-based approaches, can be a tedious and frustrating
|
||||
experience.
|
||||
|
||||
Our hope with this PEP is to begin to codify generic type annotations as
|
||||
an official, language-supported way of dealing with shape correctness.
|
||||
With something of a standard in place, in the long run, this will
|
||||
hopefully enable a thriving ecosystem of tools for analysing and verifying
|
||||
shape properties of numerical computing programs.
|
||||
|
||||
|
||||
Backwards Compatibility
|
||||
=======================
|
||||
|
||||
|
@ -809,6 +834,12 @@ References
|
|||
.. [#arbitrary_len] Discussion on Python typing-sig mailing list:
|
||||
https://mail.python.org/archives/list/typing-sig@python.org/thread/SQVTQYWIOI4TIO7NNBTFFWFMSMS2TA4J/
|
||||
|
||||
.. [#tsanley] tsanley: https://github.com/ofnote/tsanley
|
||||
|
||||
.. [#pycontracts] PyContracts: https://github.com/AndreaCensi/contracts
|
||||
|
||||
.. [#shapeguard] ShapeGuard: https://github.com/Qwlouse/shapeguard
|
||||
|
||||
.. _cpython/23527: https://github.com/python/cpython/pull/24527
|
||||
|
||||
.. _mrahtz/cpython/pep637+646: https://github.com/mrahtz/cpython/tree/pep637%2B646
|
||||
|
|
Loading…
Reference in New Issue