Skip to content

Roadmap

David Foster edited this page May 29, 2022 · 101 revisions

The road to 1.0

  • 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 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:
  • Release 1.0.0 version of trycast.

Beyond 1.0

  • 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
  • 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:
  • (?) Recognize other types and special forms, beyond just the JSON-related ones:
Clone this wiki locally