|
* Fix type annotations of Forward dunder-methods
The `__lshift__`, `__ilshift__`, and `__or__` methods each return a
ParserElement object, but have no annotated return type. The result is
that the following code will not type check:
def foo() -> pp.ParserElement:
expr = pp.Forward()
expr <<= bar()
return expr | pp.Literal("baz")
whereas the code will type check if the return line is changed to
return pp.MatchFirst([expr, pp.Literal("baz")])
This is a bug in the types which can be resolved fairly simply with
some return type annotations.
Testing is more complicated. Testing annotation accuracy is a
relatively novel space with a few options, none of which can be
considered standard as of yet.
Many solutions require learning a new toolchain only for that purpose.
However, one of the lower-impact options is to use
`mypy --warn-unused-ignores` to check that annotations satisfy some
constraints. This isn't the most precise test possible, but it's simple
and uses a widely known and familiar tool for the job.
`tox -e mypy-tests` is a new tox env which calls `mypy` in the desired
way. We can confirm with a new test case file that `tox -e mypy-tests`
fails prior to this change to `pyparsing/` and that it passes with the
change made.
* Comment out mypy-test tox env for CI
Until CI adjustments are made, it's not possible to add mypy-test to
the tox config. It will be run under pypy where it does not work until
other changes are made.
|