-
Notifications
You must be signed in to change notification settings - Fork 6
Roadmap
David Foster edited this page May 29, 2022
·
101 revisions
- Improve documentation:
- Extend README with full set of documentation types: Quickstart/Tutorial, Guide, API Reference
- Or write Sphinx documentation and post on ReadTheDocs. Link to documentation from pyproject.toml.
- Add developer documentation to README:
- How to checkout, setup local virtualenv, and install dependencies with Poetry.
- How to test within a virtualenv.
- How to run tests across all supported Python versions with tox. (
make testall)
- Link to Philosophy from README in a prominent position.
- Consider linking to Typing Summit 2022 talk that surveyed various runtime typechecking libraries.
- Extend README with full set of documentation types: Quickstart/Tutorial, Guide, API Reference
- Extend tests for certain non-JSON-like types to be even more careful, to ensure their checking is spec-conformant:
- Review remainder of PEP 484, looking for other edge cases to handle.
- –––
- complex: Fix issues:
-
for [...] type complex, arguments of type float or int are acceptable.
-
- NewType: Recognize, and raise NotImplementedError.
- Callable (bare): Recognize.
- Callable[...] (generic): Recognize,
and raise NotImplementedError. - Unions plus Enum: Recognize.
- See §"Support for singleton types in unions" in PEP 484
- TypeVar: Recognize, and raise NotImplementedError.
- –––
- User-defined generic types:
- See whether these are already recognized indirectly by isinstance. (Probably not.)
- Recognize, and raise NotImplementedError.
- Fix outstanding major issues & enhancements:
- [🛑] Support PEP 655: Required[] and NotRequired[] in TypedDict
- Support the final version of (Not)Required in typing.py from Python 3.11b1
- typing(_extensions).TypedDict: Fix to treat as open by default
- Verify this behavior with existing type checkers
- Implement the fix
- [🛑] Support PEP 655: Required[] and NotRequired[] in TypedDict
- Release 1.0.0 version of trycast.
- trycast: Enhance to use TypeForm
- Standardize TypeForm:
- ▶︎ Draft/shepherd PEP for TypeForm so that it can move to typing module
- ––
- Wait for a Python 3.x to be released with TypeForm in typing
- Revise imports of TypeForm to pull from typing module instead of typing_extensions when possible
- Release 0.y.1 version of trycast
- ▶︎ Implement TypeForm support in mypy -- https://github.com/python/mypy/issues/9773
- Revise {trycast, isassignable} signatures to use TypeForm
- Standardize TypeForm:
- Improve documentation:
- Automate computation of code coverage % across all supported Python versions. Advertise in README prominently.
- Release 1.1.0 version of trycast.
- –––
- (?) Add support for additional common non-JSON types:
- typing.Iterable
- typing.Iterator
- typing.Generator
- typing.ContextManager
- –––
- ⎋ Consider special items supported by typeguard
- ⎋ Consider special items supported by PEP 585 (Type Hinting Generics In Standard Collections)
- (?) Recognize other types and special forms, beyond just the JSON-related ones:
- User-defined generic types
- Typeguard supports these types by allowing users to write custom matchers as a plugin
- TypeVar
- Nominal vs structural subtyping: Sized, Iterable
-
Special typing primitives
- ... (many more)
-
Generic concrete collections
- typing.Set
- typing.FrozenSet
- ... (many more)
-
Abstract Base Classes
- typing.Iterable
- typing.Iterator
- typing.Generator
- typing.ContextManager
- ... (many more)
- Protocols
- User-defined generic types