pytest2/testing/python
Ran Benita 8d98de8f8a typing: set no_implicit_reexport
In Python, if module A defines a name `name`, and module B does `import
name from A`, then another module C can `import name from B`.

Sometimes it is intentional -- module B is meant to "reexport" `name`.
But sometimes it is just confusion/inconsistency on where `name` should
be imported from.

mypy has a flag `--no-implicit-reexport` which puts some order into
this. A name can only be imported from a module if

1. The module defines the name
2. The module's `__all__` includes the name
3. The module imports the name as `from ... import .. as name`.

This flag is included in mypy's `--strict` flag.

I like this flag, but I realize it is a bit controversial, and in
particular item 3 above is a bit unfriendly to contributors who don't
know about it. So I didn't intend to add it to pytest.

But while investigating issue 7589 I came upon mypy issue 8754 which
causes `--no-implicit-reexport` to leak into installed libraries and
causes some unexpected typing differences *in pytest* if the user uses
this flag.

Since the diff mostly makes sense, let's just conform to it.
2020-07-31 10:09:11 +03:00
..
approx.py python_api: type annotate some parts of pytest.approx() 2020-06-25 15:15:24 +03:00
collect.py typing: set no_implicit_reexport 2020-07-31 10:09:11 +03:00
fixtures.py typing: set no_implicit_reexport 2020-07-31 10:09:11 +03:00
integration.py typing: set no_implicit_reexport 2020-07-31 10:09:11 +03:00
metafunc.py typing: set no_implicit_reexport 2020-07-31 10:09:11 +03:00
raises.py Clearer guidance on pytest.raise(match=...) failure (#7499) 2020-07-15 22:26:47 +03:00
show_fixtures_per_test.py Use new no-match functions to replace previous idiom 2019-10-06 18:05:24 -03:00