open-telemetry / opentelemetry-python

OpenTelemetry Python API and SDK
https://opentelemetry.io
Apache License 2.0
1.76k stars 614 forks source link

Run mypy on opentelemetry-sdk package #3809

Open aabmass opened 6 months ago

aabmass commented 6 months ago

Fixes https://github.com/open-telemetry/opentelemetry-python/issues/773 Partially fixes https://github.com/open-telemetry/opentelemetry-python/issues/1608

I turned on mypy for the SDK and used mypy-upgrade to silence existing type issues with type-ignore comments.

Since there were >1000 existing issues to silence, this is quite noisy. We may consider using a less strict config for the SDK to begin with and avoid the issue.

xrmx commented 6 months ago

Tried this with latest mypy (see https://github.com/open-telemetry/opentelemetry-python/pull/3795) and it fails with:

opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py:54: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py:55: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py:56: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py:68: error: Module "opentelemetry.attributes" has no attribute "BoundedAttributes"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py:69: error: Unused "type: ignore" comment  [unused-ignore]
Found 41 errors in 9 files (checked 39 source files)
opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py:46: error: Module "opentelemetry.attributes" has no attribute "BoundedAttributes"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py:47: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py:124: error: Missing return statement  [empty-body]
opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py:483: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py:145: error: Unused "type: ignore[no-any-return]" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py:28: error: Module "opentelemetry.sdk.metrics._internal.export" does not explicitly export attribute "AggregationTemporality"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py:29: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py:125: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py:135: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:38: error: Module "opentelemetry.sdk.metrics._internal.export" does not explicitly export attribute "AggregationTemporality"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:39: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:66: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:77: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:149: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:158: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:170: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:189: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:205: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:221: error: "Instrument" has no attribute "instrumentation_scope"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:221: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py:222: error: Unused "type: ignore[attr-defined, misc]" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:85: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:85: error: Expression type contains "Any" (has type "type[_Counter]")  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:86: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:200: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:200: error: Expression type contains "Any" (has type "type[_Histogram]")  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:201: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:235: error: Expression has type "Any"  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:235: error: Expression type contains "Any" (has type "type[_Gauge]")  [misc]
opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py:236: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py:68: error: Missing return statement  [empty-body]
opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py:86: error: Missing return statement  [empty-body]
opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py:512: error: Unused "type: ignore[no-any-return]" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py:36: error: Module "opentelemetry.attributes" has no attribute "BoundedAttributes"  [attr-defined]
opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py:37: error: Unused "type: ignore" comment  [unused-ignore]
opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py:524: error: Expression type contains "Any" (has type "str | Any")  [misc]
aabmass commented 6 months ago

Tried this with latest mypy (see #3795) and it fails with:

Ya makes sense. I can re-generate these changes once that PR is merged and possibly make the checks more lenient

xrmx commented 6 months ago

Mypy bump has been merged in main.