Skip to content

Commit 3d0046a

Browse files
authored
Add flake8 and isort lint checks (#46)
1 parent 677e848 commit 3d0046a

File tree

5 files changed

+44
-24
lines changed

5 files changed

+44
-24
lines changed

.isort.cfg

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[settings]
2+
from_first=True

opentelemetry-api/src/opentelemetry/loader.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def my_factory_for_t(api_type: typing.Type[T]) -> typing.Optional[T]:
6161
means that the Python interpreter was invoked with the ``-E`` or ``-I`` flag).
6262
"""
6363

64-
from typing import Type, TypeVar, Optional, Callable
64+
from typing import Callable, Optional, Type, TypeVar
6565
import importlib
6666
import os
6767
import sys
@@ -78,10 +78,11 @@ def my_factory_for_t(api_type: typing.Type[T]) -> typing.Optional[T]:
7878
# annotate setters, were it not for https://github.com/python/mypy/issues/7092
7979
# Once that bug is resolved, setters should use this instead of duplicating the
8080
# code.
81-
#ImplementationFactory = Callable[[Type[_T]], Optional[_T]]
81+
# ImplementationFactory = Callable[[Type[_T]], Optional[_T]]
8282

8383
_DEFAULT_FACTORY: Optional[_UntrustedImplFactory[object]] = None
8484

85+
8586
def _try_load_impl_from_modname(
8687
implementation_modname: str, api_type: Type[_T]) -> Optional[_T]:
8788
try:
@@ -92,6 +93,7 @@ def _try_load_impl_from_modname(
9293

9394
return _try_load_impl_from_mod(implementation_mod, api_type)
9495

96+
9597
def _try_load_impl_from_mod(
9698
implementation_mod: object, api_type: Type[_T]) -> Optional[_T]:
9799

@@ -109,6 +111,7 @@ def _try_load_impl_from_mod(
109111

110112
return _try_load_impl_from_callback(implementation_fn, api_type)
111113

114+
112115
def _try_load_impl_from_callback(
113116
implementation_fn: _UntrustedImplFactory[_T],
114117
api_type: Type[_T]
@@ -149,11 +152,10 @@ def _try_load_configured_impl(
149152
return _try_load_impl_from_callback(_DEFAULT_FACTORY, api_type)
150153
return None
151154

155+
152156
# Public to other opentelemetry-api modules
153-
def _load_impl(
154-
api_type: Type[_T],
155-
factory: Optional[Callable[[Type[_T]], Optional[_T]]]
156-
) -> _T:
157+
def _load_impl(api_type: Type[_T],
158+
factory: Optional[Callable[[Type[_T]], Optional[_T]]]) -> _T:
157159
"""Tries to load a configured implementation, if unsuccessful, returns a
158160
fast no-op implemenation that is always available.
159161
"""
@@ -163,9 +165,10 @@ def _load_impl(
163165
return api_type()
164166
return result
165167

168+
166169
def set_preferred_default_implementation(
167170
implementation_factory: _UntrustedImplFactory[_T]) -> None:
168171
"""Sets a factory function that may be called for any implementation
169172
object. See the :ref:`module docs <loader-factory>` for more details."""
170-
global _DEFAULT_FACTORY #pylint:disable=global-statement
173+
global _DEFAULT_FACTORY # pylint:disable=global-statement
171174
_DEFAULT_FACTORY = implementation_factory

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464

6565
from contextlib import contextmanager
6666
import typing
67+
6768
from opentelemetry import loader
6869

6970

opentelemetry-api/tests/test_loader.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,28 @@
1313
# limitations under the License.
1414

1515
from importlib import reload
16+
import os
1617
import sys
1718
import unittest
18-
import os
1919

2020
from opentelemetry import loader
2121
from opentelemetry import trace
2222

2323
DUMMY_TRACER = None
2424

25+
2526
class DummyTracer(trace.Tracer):
2627
pass
2728

29+
2830
def get_opentelemetry_implementation(type_):
29-
global DUMMY_TRACER #pylint:disable=global-statement
31+
global DUMMY_TRACER # pylint:disable=global-statement
3032
assert type_ is trace.Tracer
3133
DUMMY_TRACER = DummyTracer()
3234
return DUMMY_TRACER
3335

34-
#pylint:disable=redefined-outer-name,protected-access,unidiomatic-typecheck
36+
37+
# pylint:disable=redefined-outer-name,protected-access,unidiomatic-typecheck
3538

3639
class TestLoader(unittest.TestCase):
3740

@@ -43,7 +46,6 @@ def setUp(self):
4346
# class after reloading `trace`.
4447
reload(sys.modules[__name__])
4548

46-
4749
def test_get_default(self):
4850
tracer = trace.tracer()
4951
self.assertIs(type(tracer), trace.Tracer)
@@ -60,8 +62,10 @@ def do_test_preferred_impl(self, setter):
6062
setter(get_opentelemetry_implementation)
6163
tracer = trace.tracer()
6264
self.assertIs(tracer, DUMMY_TRACER)
65+
6366
def test_preferred_impl_with_tracer(self):
6467
self.do_test_preferred_impl(trace.set_preferred_tracer_implementation)
68+
6569
def test_preferred_impl_with_default(self):
6670
self.do_test_preferred_impl(
6771
loader.set_preferred_default_implementation)
@@ -75,7 +79,7 @@ def test_try_set_again(self):
7579
self.assertIn('already loaded', str(einfo.exception))
7680

7781
def do_test_get_envvar(self, envvar_suffix):
78-
global DUMMY_TRACER #pylint:disable=global-statement
82+
global DUMMY_TRACER # pylint:disable=global-statement
7983

8084
# Test is not runnable with this!
8185
self.assertFalse(sys.flags.ignore_environment)
@@ -89,7 +93,9 @@ def do_test_get_envvar(self, envvar_suffix):
8993
DUMMY_TRACER = None
9094
del os.environ[envname]
9195
self.assertIs(type(tracer), DummyTracer)
96+
9297
def test_get_envvar_tracer(self):
9398
return self.do_test_get_envvar('TRACER')
99+
94100
def test_get_envvar_default(self):
95101
return self.do_test_get_envvar('DEFAULT')

tox.ini

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
[tox]
22
skipsdist = True
3-
envlist = py37-{lint,mypy,test}, docs
3+
envlist = py{34,35,36,37}-test, lint, py37-mypy, docs
44

55
[travis]
66
python =
7-
3.7: py37, docs
7+
3.7: py37, lint, docs
88

99
[testenv]
1010
deps =
11-
lint: pylint~=2.3.1
1211
mypy: mypy~=0.711
1312

1413
setenv =
@@ -18,23 +17,32 @@ setenv =
1817
changedir =
1918
test: opentelemetry-api/tests
2019

21-
2220
commands =
23-
; Prefer putting everything in one pylint command to profit from duplication
24-
; warnings.
25-
py37-lint: pylint opentelemetry-api/src/opentelemetry/ opentelemetry-api/tests/ opentelemetry-api/setup.py
2621
py37-mypy: mypy opentelemetry-api/src/opentelemetry/
2722
; For test code, we don't want to enforce the full mypy strictness
28-
py37-mypy: mypy opentelemetry-api/src/opentelemetry/
2923
py37-mypy: mypy --config-file=mypy-relaxed.ini opentelemetry-api/tests/ opentelemetry-api/setup.py
3024
test: python -m unittest discover
3125

26+
[testenv:lint]
27+
deps =
28+
pylint~=2.3
29+
flake8~=3.7
30+
isort~=4.3
31+
32+
commands =
33+
; Prefer putting everything in one pylint command to profit from duplication
34+
; warnings.
35+
pylint opentelemetry-api/src/opentelemetry/ opentelemetry-api/tests/
36+
flake8 opentelemetry-api/src/opentelemetry/ opentelemetry-api/tests/
37+
isort --check-only --recursive opentelemetry-api/src
38+
3239
[testenv:docs]
3340
deps =
34-
sphinx~=2.1.2
35-
sphinx-rtd-theme~=0.4.3
36-
sphinx-autodoc-typehints~=1.6.0
41+
sphinx~=2.1
42+
sphinx-rtd-theme~=0.4
43+
sphinx-autodoc-typehints~=1.6
44+
45+
changedir = docs
3746

3847
commands =
3948
sphinx-build -W --keep-going -b html -T . _build/html
40-
changedir = docs

0 commit comments

Comments
 (0)