Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 531d0b1

Browse files
authored
Ensure that type info is picked up from installed package. (open-telemetry#124)
* Ensure that type info is picked up from installed package. This required moving all top-level modules to a sub-package, to not create collisions with py.typed marker files. See https://www.python.org/dev/peps/pep-0561/#packaging-type-information * Add MANIFEST.in for SDK package.
1 parent 46ae415 commit 531d0b1

File tree

21 files changed

+47
-14
lines changed

21 files changed

+47
-14
lines changed

docs/index.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ abstract types for OpenTelemetry implementations.
1616
:caption: Contents:
1717

1818
opentelemetry.context
19-
opentelemetry.loader
19+
opentelemetry.util.loader
2020
opentelemetry.metrics
2121
opentelemetry.trace
22+
opentelemetry.util.loader
2223

2324

2425
Indices and tables

docs/opentelemetry.loader.rst

Lines changed: 0 additions & 4 deletions
This file was deleted.

docs/opentelemetry.util.loader.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
opentelemetry.util.loader module
2+
================================
3+
4+
.. automodule:: opentelemetry.util.loader

opentelemetry-api/MANIFEST.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
prune tests
2+
graft src
3+
global-exclude *.pyc
4+
global-exclude *.pyo
5+
global-exclude __pycache__/*
6+
include MANIFEST.in
7+
include README.rst

opentelemetry-api/setup.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
import setuptools
1818

1919
BASE_DIR = os.path.dirname(__file__)
20-
VERSION_FILENAME = os.path.join(BASE_DIR, "src", "opentelemetry", "version.py")
20+
VERSION_FILENAME = os.path.join(
21+
BASE_DIR, "src", "opentelemetry", "util", "version.py"
22+
)
2123
PACKAGE_INFO = {}
2224
with open(VERSION_FILENAME) as f:
2325
exec(f.read(), PACKAGE_INFO)

opentelemetry-api/src/opentelemetry/context/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/distributedcontext/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/logs/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/metrics/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/resources/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/trace/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464
import typing
6565
from contextlib import contextmanager
6666

67-
from opentelemetry import loader, types
67+
from opentelemetry.util import loader, types
6868

6969
# TODO: quarantine
7070
ParentSpan = typing.Optional[typing.Union["Span", "SpanContext"]]
@@ -445,7 +445,7 @@ def use_span(self, span: "Span") -> typing.Iterator[None]:
445445

446446
# Once https://github.com/python/mypy/issues/7092 is resolved,
447447
# the following type definition should be replaced with
448-
# from opentelemetry.loader import ImplementationFactory
448+
# from opentelemetry.util.loader import ImplementationFactory
449449
ImplementationFactory = typing.Callable[
450450
[typing.Type[Tracer]], typing.Optional[Tracer]
451451
]
@@ -474,7 +474,7 @@ def set_preferred_tracer_implementation(
474474
) -> None:
475475
"""Set the factory to be used to create the tracer.
476476
477-
See :mod:`opentelemetry.loader` for details.
477+
See :mod:`opentelemetry.util.loader` for details.
478478
479479
This function may not be called after a tracer is already loaded.
480480

opentelemetry-api/src/opentelemetry/trace/py.typed

Whitespace-only changes.

opentelemetry-api/src/opentelemetry/util/py.typed

Whitespace-only changes.

opentelemetry-api/tests/mypysmoke.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import opentelemetry.trace
2+
3+
4+
def dummy_check_mypy_returntype() -> opentelemetry.trace.Tracer:
5+
return opentelemetry.trace.tracer()

opentelemetry-api/tests/test_loader.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
import unittest
1818
from importlib import reload
1919

20-
from opentelemetry import loader, trace
20+
from opentelemetry import trace
21+
from opentelemetry.util import loader
2122

2223
DUMMY_TRACER = None
2324

opentelemetry-sdk/MANIFEST.in

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
prune tests
2+
graft src
3+
global-exclude *.pyc
4+
global-exclude *.pyo
5+
global-exclude __pycache__/*
6+
include MANIFEST.in
7+
include README.rst

opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121
from contextlib import contextmanager
2222

2323
from opentelemetry import trace as trace_api
24-
from opentelemetry import types
2524
from opentelemetry.context import Context
2625
from opentelemetry.sdk import util
26+
from opentelemetry.util import types
2727

2828
logger = logging.getLogger(__name__)
2929

tox.ini

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ envlist =
55
py3{4,5,6,7,8}-test-{api,sdk,example-app,ext-wsgi,ext-http-requests}
66
pypy3-test-{api,sdk,example-app,ext-wsgi,ext-http-requests}
77
lint
8-
py37-mypy
8+
py37-{mypy,mypyinstalled}
99
docs
1010

1111
[travis]
@@ -14,7 +14,7 @@ python =
1414

1515
[testenv]
1616
deps =
17-
mypy: mypy~=0.711
17+
mypy,mypyinstalled: mypy~=0.711
1818

1919
setenv =
2020
mypy: MYPYPATH={toxinidir}/opentelemetry-api/src/
@@ -39,11 +39,21 @@ commands_pre =
3939
wsgi: pip install {toxinidir}/ext/opentelemetry-ext-wsgi
4040
http-requests: pip install {toxinidir}/ext/opentelemetry-ext-http-requests
4141

42+
; Using file:// here because otherwise tox invokes just "pip install
43+
; opentelemetry-api", leading to an error
44+
mypyinstalled: pip install file://{toxinidir}/opentelemetry-api/
45+
4246
commands =
47+
test: python -m unittest discover
48+
4349
mypy: mypy --namespace-packages opentelemetry-api/src/opentelemetry/
4450
; For test code, we don't want to enforce the full mypy strictness
4551
mypy: mypy --namespace-packages --config-file=mypy-relaxed.ini opentelemetry-api/tests/
46-
test: python -m unittest discover
52+
53+
; Test that mypy can pick up typeinfo from an installed package (otherwise,
54+
; implicit Any due to unfollowed import would result).
55+
mypyinstalled: mypy --namespace-packages opentelemetry-api/tests/mypysmoke.py --strict
56+
4757

4858
[testenv:lint]
4959
basepython: python3.7

0 commit comments

Comments
 (0)