Skip to content

Commit 5dc48c5

Browse files
authored
Separate lint into several jobs (open-telemetry#3902)
* Separate lint into several jobs Fixes open-telemetry#3893 * Remove proto-related packages from getting-started * Add global lint * Fix lint workflow * Revert "Remove proto-related packages from getting-started" This reverts commit 34d6139. * Do not run getting started tests with pypy * Add missing requirements for lint
1 parent ee1b008 commit 5dc48c5

File tree

11 files changed

+281
-90
lines changed

11 files changed

+281
-90
lines changed

.codespellrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
[codespell]
22
# skipping auto generated folders
3-
skip = ./.tox,./.mypy_cache,./docs/_build,./target,*/LICENSE,./venv,.git,./opentelemetry-semantic-conventions
3+
skip = ./.tox,./.mypy_cache,./docs/_build,./target,*/LICENSE,./venv,.git,./opentelemetry-semantic-conventions,*-requirements*.txt
44
ignore-words-list = ans,ue,ot,hist,ro

.github/workflows/lint.yml

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Lint tests
2+
3+
on:
4+
push:
5+
branches-ignore:
6+
- 'release/*'
7+
pull_request:
8+
9+
jobs:
10+
lint-3_12:
11+
strategy:
12+
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
13+
matrix:
14+
package:
15+
- "opentelemetry-api"
16+
- "opentelemetry-proto"
17+
- "opentelemetry-sdk"
18+
- "opentelemetry-semantic-conventions"
19+
- "opentelemetry-getting-started"
20+
- "opentelemetry-opentracing-shim"
21+
- "opentelemetry-opencensus-shim"
22+
- "opentelemetry-exporter-opencensus"
23+
- "opentelemetry-exporter-otlp-proto-common"
24+
- "opentelemetry-exporter-otlp-combined"
25+
- "opentelemetry-exporter-otlp-proto-grpc"
26+
- "opentelemetry-exporter-otlp-proto-http"
27+
- "opentelemetry-exporter-otlp-proto-prometheus"
28+
- "opentelemetry-exporter-otlp-proto-zipkin-combined"
29+
- "opentelemetry-exporter-otlp-proto-zipkin-proto-http"
30+
- "opentelemetry-exporter-otlp-proto-zipkin-json"
31+
- "opentelemetry-propagator-b3"
32+
- "opentelemetry-propagator-jaeger"
33+
- "opentelemetry-test-utils"
34+
os: [ubuntu-20.04]
35+
runs-on: ubuntu-20.04
36+
steps:
37+
- name: Checkout Core Repo @ SHA - ${{ github.sha }}
38+
uses: actions/checkout@v4
39+
- name: Set up Python 3.12
40+
uses: actions/setup-python@v5
41+
with:
42+
python-version: 3.12
43+
- name: Install tox
44+
run: pip install tox
45+
- name: Cache tox environment
46+
# Preserves .tox directory between runs for faster installs
47+
uses: actions/cache@v4
48+
with:
49+
path: |
50+
.tox
51+
~/.cache/pip
52+
key: v7-build-tox-cache-${{ matrix.package }}-${{ hashFiles('tox.ini', 'gen-requirements.txt', 'dev-requirements.txt') }}
53+
- name: run tox
54+
run: tox -e lint-${{ matrix.package }}

.github/workflows/test.yml

+4-2
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ jobs:
5656
- "exporter-zipkin-combined"
5757
- "exporter-zipkin-proto-http"
5858
- "exporter-zipkin-json"
59-
- "protobuf"
59+
- "proto"
6060
- "propagator-b3"
6161
- "propagator-jaeger"
6262
os: [ubuntu-20.04, windows-2019]
@@ -69,6 +69,8 @@ jobs:
6969
package: "exporter-otlp-combined"
7070
- python-version: pypy3
7171
package: "exporter-otlp-proto-grpc"
72+
- python-version: pypy3
73+
package: "getting-started"
7274

7375
steps:
7476
- name: Checkout Core Repo @ SHA - ${{ github.sha }}
@@ -98,7 +100,7 @@ jobs:
98100
strategy:
99101
fail-fast: false
100102
matrix:
101-
tox-environment: ["docker-tests-proto3", "docker-tests-proto4", "lint", "spellcheck",
103+
tox-environment: ["docker-tests-proto3", "docker-tests-proto4", "spellcheck",
102104
"docs", "mypy", "mypyinstalled", "tracecontext"]
103105
name: ${{ matrix.tox-environment }}
104106
runs-on: ubuntu-20.04

CONTRIBUTING.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ You can run `tox` with the following arguments:
5757
- `tox -e py312-opentelemetry-api` to e.g. run the API unit tests under a specific
5858
Python version
5959
- `tox -e spellcheck` to run a spellcheck on all the code
60-
- `tox -e lint` to run lint checks on all code
60+
- `tox -e lint-some-package` to run lint checks on `some-package`
6161

6262
`black` and `isort` are executed when `tox -e lint` is run. The reported errors can be tedious to fix manually.
6363
An easier way to do so is:

docs/getting_started/__init__.py

Whitespace-only changes.

docs/getting_started/flask_example.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
@app.route("/")
4141
def hello():
4242
with tracer.start_as_current_span("example-request"):
43-
requests.get("http://www.example.com")
43+
requests.get("http://www.example.com", timeout=10)
4444
return "hello"
4545

4646

docs/getting_started/tests/requirements.txt

+3
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,8 @@ Werkzeug==3.0.3
2323
wrapt==1.15.0
2424
zipp==3.19.2
2525
-e opentelemetry-semantic-conventions
26+
-e opentelemetry-proto
27+
-e exporter/opentelemetry-exporter-otlp-proto-common
28+
-e exporter/opentelemetry-exporter-otlp-proto-grpc
2629
-e opentelemetry-api
2730
-e opentelemetry-sdk

docs/getting_started/tests/test_flask.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,16 @@
1919

2020
import requests
2121
from requests.adapters import HTTPAdapter
22-
from requests.packages.urllib3.util.retry import Retry
22+
from requests.packages.urllib3.util.retry import ( # pylint: disable=import-error
23+
Retry,
24+
)
2325

2426

2527
class TestFlask(unittest.TestCase):
2628
def test_flask(self):
2729
dirpath = os.path.dirname(os.path.realpath(__file__))
2830
server_script = f"{dirpath}/../flask_example.py"
29-
server = subprocess.Popen(
31+
server = subprocess.Popen( # pylint: disable=consider-using-with
3032
[sys.executable, server_script],
3133
stdout=subprocess.PIPE,
3234
)

exporter/opentelemetry-exporter-zipkin-proto-http/test-requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ urllib3==2.2.2
1717
wrapt==1.16.0
1818
zipp==3.19.2
1919
-e opentelemetry-api
20+
-e opentelemetry-proto
2021
-e exporter/opentelemetry-exporter-zipkin-json
2122
-e opentelemetry-sdk
2223
-e tests/opentelemetry-test-utils

lint-requirements.txt

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
astroid==3.0.3
2+
black==24.3.0
3+
click==8.1.7
4+
dill==0.3.8
5+
flake8==6.1.0
6+
isort==5.12.0
7+
mccabe==0.7.0
8+
mypy-extensions==1.0.0
9+
packaging==24.0
10+
pathspec==0.12.1
11+
platformdirs==4.2.1
12+
pycodestyle==2.11.1
13+
pyflakes==3.1.0
14+
pylint==3.0.2
15+
tomlkit==0.12.4

0 commit comments

Comments
 (0)