Roadmap (original) (raw)
Beyond 1.0
v1.3.0
- Fix issues in the v1.3 milestone:
- Recognize generic TypedDicts, like Point[int] (#28)
Future
To satisfy the §"Statically narrowing" goal mentioned in trycast's Philosophy:
- Use TypeForm, to narrow the caller's argument when passing a non-Type
- 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 {checkcast, trycast, isassignable} signatures to use TypeForm
- Standardize TypeForm:
- Use TypeIs instead of TypeGuard, to narrow the caller's argument in the negative case (when passing either a Type or a TypeForm)
- Shepherd/assist in acceptance of related PEP
- Revise {checkcast, trycast, isassignable} signatures to use TypeIs
Also:
- Improve documentation:
- Automate computation of code coverage % across all supported Python versions. Advertise in README prominently. Resources:
* Python Code Coverage Using GitHub Actions and Codecov | Codecov
* Combine Coverage for Different Python Versions
* Configuring Test Coverage | Code Climate
* Merging Reports | Codecov
* Features | Codecov
* Codecov GitHub Action
- Automate computation of code coverage % across all supported Python versions. Advertise in README prominently. Resources:
Support more types:
- (?) 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