Skip to content

Commit 897e8c9

Browse files
authored
infra: improve tox for local development (#4238)
1 parent 966750a commit 897e8c9

File tree

1 file changed

+66
-79
lines changed

1 file changed

+66
-79
lines changed

tox.ini

Lines changed: 66 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -103,73 +103,70 @@ deps =
103103
coverage: pytest
104104
coverage: pytest-cov
105105

106-
allowlist_externals = sh
106+
mypy,mypyinstalled: -r {toxinidir}/mypy-requirements.txt
107107

108-
setenv =
109-
; override CONTRIB_REPO_SHA via env variable when testing other branches/commits than main
110-
; i.e: CONTRIB_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e <env to test>
111-
CONTRIB_REPO_SHA={env:CONTRIB_REPO_SHA:main}
112-
CONTRIB_REPO=git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@{env:CONTRIB_REPO_SHA}
113-
mypy: MYPYPATH={toxinidir}/opentelemetry-api/src/:{toxinidir}/opentelemetry-semantic-conventions/src/:{toxinidir}/opentelemetry-sdk/src/:{toxinidir}/tests/opentelemetry-test-utils/src/
108+
api: -r {toxinidir}/opentelemetry-api/test-requirements.txt
114109

115-
commands_pre =
110+
sdk: -r {toxinidir}/opentelemetry-sdk/test-requirements.txt
111+
benchmark-opentelemetry-sdk: -r {toxinidir}/opentelemetry-sdk/benchmark-requirements.txt
116112

117-
mypy,mypyinstalled: pip install -r {toxinidir}/mypy-requirements.txt
113+
semantic-conventions: -r {toxinidir}/opentelemetry-semantic-conventions/test-requirements.txt
118114

119-
api: pip install -r {toxinidir}/opentelemetry-api/test-requirements.txt
115+
test-utils: -r {toxinidir}/tests/opentelemetry-test-utils/test-requirements.txt
120116

121-
sdk: pip install -r {toxinidir}/opentelemetry-sdk/test-requirements.txt
122-
benchmark-opentelemetry-sdk: pip install -r {toxinidir}/opentelemetry-sdk/benchmark-requirements.txt
117+
opentelemetry-proto-protobuf5: -r {toxinidir}/opentelemetry-proto/test-requirements.txt
123118

124-
semantic-conventions: pip install -r {toxinidir}/opentelemetry-semantic-conventions/test-requirements.txt
119+
exporter-opencensus: -r {toxinidir}/exporter/opentelemetry-exporter-opencensus/test-requirements.txt
125120

126-
test-utils: pip install -r {toxinidir}/tests/opentelemetry-test-utils/test-requirements.txt
121+
exporter-otlp-proto-common: -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common/test-requirements.txt
127122

128-
opentelemetry-proto-protobuf5: pip install -r {toxinidir}/opentelemetry-proto/test-requirements.txt
123+
exporter-otlp-combined: -r {toxinidir}/exporter/opentelemetry-exporter-otlp/test-requirements.txt
129124

130-
getting-started: pip install -r {toxinidir}/docs/getting_started/tests/requirements.txt
131-
getting-started: pip install -e {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http
132-
getting-started: pip install -e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation
133-
getting-started: pip install -e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-requests&subdirectory=instrumentation/opentelemetry-instrumentation-requests
134-
getting-started: pip install -e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-wsgi&subdirectory=instrumentation/opentelemetry-instrumentation-wsgi
135-
getting-started: pip install -e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-flask&subdirectory=instrumentation/opentelemetry-instrumentation-flask
125+
opentelemetry-exporter-otlp-proto-grpc: -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/test-requirements.txt
126+
benchmark-exporter-otlp-proto-grpc: -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/benchmark-requirements.txt
136127

137-
exporter-opencensus: pip install -r {toxinidir}/exporter/opentelemetry-exporter-opencensus/test-requirements.txt
128+
opentelemetry-exporter-otlp-proto-http: -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http/test-requirements.txt
138129

139-
exporter-otlp-proto-common: pip install -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common/test-requirements.txt
130+
opentracing-shim: -r {toxinidir}/shim/opentelemetry-opentracing-shim/test-requirements.txt
140131

141-
exporter-otlp-combined: pip install -r {toxinidir}/exporter/opentelemetry-exporter-otlp/test-requirements.txt
132+
opencensus-shim: -r {toxinidir}/shim/opentelemetry-opencensus-shim/test-requirements.txt
142133

143-
opentelemetry-exporter-otlp-proto-grpc: pip install -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/test-requirements.txt
144-
benchmark-exporter-otlp-proto-grpc: pip install -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/benchmark-requirements.txt
134+
exporter-prometheus: -r {toxinidir}/exporter/opentelemetry-exporter-prometheus/test-requirements.txt
145135

146-
opentelemetry-exporter-otlp-proto-http: pip install -r {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http/test-requirements.txt
136+
exporter-zipkin-combined: -r {toxinidir}/exporter/opentelemetry-exporter-zipkin/test-requirements.txt
147137

148-
opentracing-shim: pip install -r {toxinidir}/shim/opentelemetry-opentracing-shim/test-requirements.txt
138+
exporter-zipkin-proto-http: -r {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http/test-requirements.txt
149139

150-
opencensus-shim: pip install -r {toxinidir}/shim/opentelemetry-opencensus-shim/test-requirements.txt
140+
exporter-zipkin-json: -r {toxinidir}/exporter/opentelemetry-exporter-zipkin-json/test-requirements.txt
151141

152-
exporter-prometheus: pip install -r {toxinidir}/exporter/opentelemetry-exporter-prometheus/test-requirements.txt
142+
propagator-b3: -r {toxinidir}/propagator/opentelemetry-propagator-b3/test-requirements.txt
143+
benchmark-opentelemetry-propagator-b3: -r {toxinidir}/propagator/opentelemetry-propagator-b3/benchmark-requirements.txt
153144

154-
exporter-zipkin-combined: pip install -r {toxinidir}/exporter/opentelemetry-exporter-zipkin/test-requirements.txt
145+
propagator-jaeger: -r {toxinidir}/propagator/opentelemetry-propagator-jaeger/test-requirements.txt
155146

156-
exporter-zipkin-proto-http: pip install -r {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http/test-requirements.txt
147+
mypyinstalled: -e {toxinidir}/opentelemetry-api
157148

158-
exporter-zipkin-json: pip install -r {toxinidir}/exporter/opentelemetry-exporter-zipkin-json/test-requirements.txt
149+
getting-started: -r {toxinidir}/docs/getting_started/tests/requirements.txt
150+
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http
151+
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation
152+
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-requests&subdirectory=instrumentation/opentelemetry-instrumentation-requests
153+
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-wsgi&subdirectory=instrumentation/opentelemetry-instrumentation-wsgi
154+
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-flask&subdirectory=instrumentation/opentelemetry-instrumentation-flask
159155

160-
propagator-b3: pip install -r {toxinidir}/propagator/opentelemetry-propagator-b3/test-requirements.txt
161-
benchmark-opentelemetry-propagator-b3: pip install -r {toxinidir}/propagator/opentelemetry-propagator-b3/benchmark-requirements.txt
156+
allowlist_externals = sh
162157

163-
propagator-jaeger: pip install -r {toxinidir}/propagator/opentelemetry-propagator-jaeger/test-requirements.txt
158+
setenv =
159+
; override CONTRIB_REPO_SHA via env variable when testing other branches/commits than main
160+
; i.e: CONTRIB_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e <env to test>
161+
CONTRIB_REPO_SHA={env:CONTRIB_REPO_SHA:main}
162+
CONTRIB_REPO=git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@{env:CONTRIB_REPO_SHA}
163+
mypy: MYPYPATH={toxinidir}/opentelemetry-api/src/:{toxinidir}/opentelemetry-semantic-conventions/src/:{toxinidir}/opentelemetry-sdk/src/:{toxinidir}/tests/opentelemetry-test-utils/src/
164164

165-
; In order to get a healthy coverage report,
166-
; we have to install packages in editable mode.
165+
commands_pre =
166+
; In order to get a healthy coverage report,
167+
; we have to install packages in editable mode.
167168
coverage: python {toxinidir}/scripts/eachdist.py install --editable
168169

169-
; Using file:// here because otherwise tox invokes just "pip install
170-
; opentelemetry-api", leading to an error
171-
mypyinstalled: pip install file://{toxinidir}/opentelemetry-api/
172-
173170
commands =
174171
test-opentelemetry-api: pytest {toxinidir}/opentelemetry-api/tests {posargs}
175172
lint-opentelemetry-api: pylint {toxinidir}/opentelemetry-api
@@ -278,19 +275,17 @@ deps =
278275
flask~=2.3
279276
requests~=2.7
280277
markupsafe~=2.1
278+
-e {toxinidir}/opentelemetry-api
279+
-e {toxinidir}/opentelemetry-semantic-conventions
280+
-e {toxinidir}/opentelemetry-sdk
281+
-e {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http
282+
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation
283+
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-requests&subdirectory=instrumentation/opentelemetry-instrumentation-requests
284+
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-wsgi&subdirectory=instrumentation/opentelemetry-instrumentation-wsgi
281285

282286
allowlist_externals =
283287
{toxinidir}/scripts/tracecontext-integration-test.sh
284288

285-
commands_pre =
286-
pip install -e {toxinidir}/opentelemetry-api \
287-
-e {toxinidir}/opentelemetry-semantic-conventions \
288-
-e {toxinidir}/opentelemetry-sdk \
289-
-e {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http \
290-
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation \
291-
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-requests&subdirectory=instrumentation/opentelemetry-instrumentation-requests \
292-
-e {env:CONTRIB_REPO}\#egg=opentelemetry-instrumentation-wsgi&subdirectory=instrumentation/opentelemetry-instrumentation-wsgi
293-
294289
commands =
295290
{toxinidir}/scripts/tracecontext-integration-test.sh
296291

@@ -303,25 +298,25 @@ deps =
303298
docker<7
304299
docker-compose==1.29.2
305300
requests==2.28.2
301+
; core packages
302+
-e {toxinidir}/opentelemetry-api
303+
-e {toxinidir}/opentelemetry-semantic-conventions
304+
-e {toxinidir}/opentelemetry-sdk
305+
-e {toxinidir}/tests/opentelemetry-test-utils
306+
; OTLP packages
307+
otlpexporter: -e {toxinidir}/opentelemetry-proto
308+
otlpexporter: -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common
309+
otlpexporter: -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc
310+
otlpexporter: -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http
311+
otlpexporter: -e {toxinidir}/exporter/opentelemetry-exporter-otlp
312+
313+
opencensus: -e {toxinidir}/exporter/opentelemetry-exporter-opencensus
306314

307315
changedir =
308316
tests/opentelemetry-docker-tests/tests
309317

310318
commands_pre =
311319
pip freeze
312-
pip install -e {toxinidir}/opentelemetry-api \
313-
-e {toxinidir}/opentelemetry-semantic-conventions \
314-
-e {toxinidir}/opentelemetry-sdk \
315-
-e {toxinidir}/tests/opentelemetry-test-utils
316-
317-
otlpexporter: pip install -e {toxinidir}/opentelemetry-proto
318-
otlpexporter: pip install -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common
319-
otlpexporter: pip install -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc
320-
otlpexporter: pip install -e {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http
321-
otlpexporter: pip install -e {toxinidir}/exporter/opentelemetry-exporter-otlp
322-
323-
opencensus: pip install -e {toxinidir}/exporter/opentelemetry-exporter-opencensus
324-
325320
docker-compose up -d
326321
commands =
327322
otlpexporter: pytest otlpexporter {posargs}
@@ -339,32 +334,24 @@ commands =
339334
python {toxinidir}/scripts/public_symbols_checker.py
340335

341336
[testenv:generate-workflows]
342-
343-
commands_pre =
344-
pip install -e {env:CONTRIB_REPO}\#egg=generate_workflows_lib&subdirectory=.github/workflows/generate_workflows_lib
345-
337+
deps =
338+
{env:CONTRIB_REPO}\#egg=generate_workflows_lib&subdirectory=.github/workflows/generate_workflows_lib
346339
commands =
347340
python {toxinidir}/.github/workflows/generate_workflows.py
348341

349342
[testenv:shellcheck]
350-
351343
commands_pre =
352344
sh -c "sudo apt update -y && sudo apt install --assume-yes shellcheck"
353-
354345
commands =
355346
sh -c "find {toxinidir} -name \*.sh | xargs shellcheck --severity=warning"
356347

357348
[testenv:pyright]
358349
basepython: python3
359-
360-
allowlist_externals = pyright
361-
362-
commands_pre =
363-
pip install -r {toxinidir}/pyright-requirements.txt \
364-
-e {toxinidir}/opentelemetry-api \
365-
-e {toxinidir}/opentelemetry-semantic-conventions \
366-
-e {toxinidir}/opentelemetry-sdk
367-
350+
deps =
351+
-r {toxinidir}/pyright-requirements.txt
352+
-e {toxinidir}/opentelemetry-api
353+
-e {toxinidir}/opentelemetry-semantic-conventions
354+
-e {toxinidir}/opentelemetry-sdk
368355
commands =
369356
pyright --version
370357
pyright

0 commit comments

Comments
 (0)