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

Skip to content

Commit b3476a5

Browse files
authored
typecheck: add sdk/resources and drop mypy (open-telemetry#4578)
1 parent 037e9cb commit b3476a5

File tree

8 files changed

+17
-117
lines changed

8 files changed

+17
-117
lines changed

.github/workflows/misc_0.yml

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -66,44 +66,6 @@ jobs:
6666
- name: Run tests
6767
run: tox -e tracecontext
6868

69-
mypy:
70-
name: mypy
71-
runs-on: ubuntu-latest
72-
timeout-minutes: 30
73-
steps:
74-
- name: Checkout repo @ SHA - ${{ github.sha }}
75-
uses: actions/checkout@v4
76-
77-
- name: Set up Python 3.11
78-
uses: actions/setup-python@v5
79-
with:
80-
python-version: "3.11"
81-
82-
- name: Install tox
83-
run: pip install tox
84-
85-
- name: Run tests
86-
run: tox -e mypy
87-
88-
mypyinstalled:
89-
name: mypyinstalled
90-
runs-on: ubuntu-latest
91-
timeout-minutes: 30
92-
steps:
93-
- name: Checkout repo @ SHA - ${{ github.sha }}
94-
uses: actions/checkout@v4
95-
96-
- name: Set up Python 3.11
97-
uses: actions/setup-python@v5
98-
with:
99-
python-version: "3.11"
100-
101-
- name: Install tox
102-
run: pip install tox
103-
104-
- name: Run tests
105-
run: tox -e mypyinstalled
106-
10769
typecheck:
10870
name: typecheck
10971
runs-on: ubuntu-latest

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
- typecheck: add sdk/resources and drop mypy
11+
([#4578](https://github.com/open-telemetry/opentelemetry-python/pull/4578))
1012
- Refactor `BatchLogRecordProcessor` to simplify code and make the control flow more
1113
clear ([#4562](https://github.com/open-telemetry/opentelemetry-python/pull/4562/)
1214
and [#4535](https://github.com/open-telemetry/opentelemetry-python/pull/4535)).
1315

14-
1516
## Version 1.33.0/0.54b0 (2025-05-09)
1617

1718
- Fix intermittent `Connection aborted` error when using otlp/http exporters

dev-requirements.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
pylint==3.3.4
22
httpretty==1.1.4
33
pyright==1.1.396
4-
mypy==1.9.0
54
sphinx==7.1.2
65
sphinx-rtd-theme==2.0.0rc4
76
sphinx-autodoc-typehints==1.25.2

mypy-relaxed.ini

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

mypy.ini

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

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

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
from json import dumps
6868
from os import environ
6969
from types import ModuleType
70-
from typing import List, MutableMapping, Optional, cast
70+
from typing import List, Optional, cast
7171
from urllib import parse
7272

7373
from opentelemetry.attributes import BoundedAttributes
@@ -77,7 +77,10 @@
7777
OTEL_SERVICE_NAME,
7878
)
7979
from opentelemetry.semconv.resource import ResourceAttributes
80-
from opentelemetry.util._importlib_metadata import entry_points, version
80+
from opentelemetry.util._importlib_metadata import (
81+
entry_points, # type: ignore[reportUnknownVariableType]
82+
version,
83+
)
8184
from opentelemetry.util.types import AttributeValue
8285

8386
psutil: Optional[ModuleType] = None
@@ -210,7 +213,7 @@ def create(
210213
entry_points(
211214
group="opentelemetry_resource_detector",
212215
name=resource_detector.strip(),
213-
) # type: ignore
216+
) # type: ignore[reportUnknownArgumentType]
214217
)
215218
).load()()
216219
)
@@ -266,8 +269,8 @@ def merge(self, other: "Resource") -> "Resource":
266269
Returns:
267270
The newly-created Resource.
268271
"""
269-
merged_attributes = self.attributes.copy() # type: ignore
270-
merged_attributes.update(other.attributes) # type: ignore
272+
merged_attributes = dict(self.attributes).copy()
273+
merged_attributes.update(other.attributes)
271274

272275
if self.schema_url == "":
273276
schema_url = other.schema_url
@@ -282,7 +285,7 @@ def merge(self, other: "Resource") -> "Resource":
282285
other.schema_url,
283286
)
284287
return self
285-
return Resource(merged_attributes, schema_url) # type: ignore
288+
return Resource(merged_attributes, schema_url)
286289

287290
def __eq__(self, other: object) -> bool:
288291
if not isinstance(other, Resource):
@@ -294,16 +297,13 @@ def __eq__(self, other: object) -> bool:
294297

295298
def __hash__(self) -> int:
296299
return hash(
297-
f"{dumps(self._attributes.copy(), sort_keys=True)}|{self._schema_url}" # type: ignore
300+
f"{dumps(self._attributes.copy(), sort_keys=True)}|{self._schema_url}"
298301
)
299302

300303
def to_json(self, indent: Optional[int] = 4) -> str:
301-
attributes: MutableMapping[str, AttributeValue] = dict(
302-
self._attributes
303-
)
304304
return dumps(
305305
{
306-
"attributes": attributes, # type: ignore
306+
"attributes": dict(self.attributes),
307307
"schema_url": self._schema_url,
308308
},
309309
indent=indent,
@@ -334,7 +334,7 @@ class OTELResourceDetector(ResourceDetector):
334334
# pylint: disable=no-self-use
335335
def detect(self) -> "Resource":
336336
env_resources_items = environ.get(OTEL_RESOURCE_ATTRIBUTES)
337-
env_resource_map = {}
337+
env_resource_map: dict[str, AttributeValue] = {}
338338

339339
if env_resources_items:
340340
for item in env_resources_items.split(","):
@@ -392,7 +392,7 @@ def detect(self) -> "Resource":
392392
resource_info[PROCESS_PARENT_PID] = os.getppid()
393393

394394
if psutil is not None:
395-
process: psutil_module.Process = psutil.Process()
395+
process = psutil.Process()
396396
username = process.username()
397397
resource_info[PROCESS_OWNER] = username
398398

@@ -483,7 +483,7 @@ def detect(self) -> "Resource":
483483
)
484484

485485

486-
class _HostResourceDetector(ResourceDetector):
486+
class _HostResourceDetector(ResourceDetector): # type: ignore[reportUnusedClass]
487487
"""
488488
The HostResourceDetector detects the hostname and architecture attributes.
489489
"""

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ exclude = [
113113
"opentelemetry-sdk/src/opentelemetry/sdk/_events",
114114
"opentelemetry-sdk/src/opentelemetry/sdk/_logs",
115115
"opentelemetry-sdk/src/opentelemetry/sdk/error_handler",
116-
"opentelemetry-sdk/src/opentelemetry/sdk/resources",
117116
"opentelemetry-sdk/src/opentelemetry/sdk/metrics",
118117
"opentelemetry-sdk/src/opentelemetry/sdk/trace",
119118
"opentelemetry-sdk/src/opentelemetry/sdk/util",
@@ -124,4 +123,5 @@ exclude = [
124123
strict = [
125124
"opentelemetry-semantic-conventions",
126125
"opentelemetry-sdk/src/opentelemetry/sdk/environment_variables",
126+
"opentelemetry-sdk/src/opentelemetry/sdk/resources",
127127
]

tox.ini

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ envlist =
8888

8989
spellcheck
9090
tracecontext
91-
mypy,mypyinstalled
9291
typecheck
9392
docs
9493
docker-tests-{otlpexporter,opencensus}
@@ -103,9 +102,6 @@ deps =
103102
coverage: pytest
104103
coverage: pytest-cov
105104

106-
mypy,mypyinstalled: -c {toxinidir}/dev-requirements.txt
107-
mypy,mypyinstalled: mypy
108-
109105
api: -r {toxinidir}/opentelemetry-api/test-requirements.txt
110106

111107
sdk: -r {toxinidir}/opentelemetry-sdk/test-requirements.txt
@@ -145,7 +141,6 @@ deps =
145141

146142
propagator-jaeger: -r {toxinidir}/propagator/opentelemetry-propagator-jaeger/test-requirements.txt
147143

148-
mypyinstalled: -e {toxinidir}/opentelemetry-api
149144

150145
getting-started: -r {toxinidir}/docs/getting_started/tests/requirements.txt
151146
getting-started: {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http
@@ -161,7 +156,6 @@ setenv =
161156
; i.e: CONTRIB_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e <env to test>
162157
CONTRIB_REPO_SHA={env:CONTRIB_REPO_SHA:main}
163158
CONTRIB_REPO=git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@{env:CONTRIB_REPO_SHA}
164-
mypy: MYPYPATH={toxinidir}/opentelemetry-api/src/:{toxinidir}/opentelemetry-semantic-conventions/src/:{toxinidir}/opentelemetry-sdk/src/:{toxinidir}/tests/opentelemetry-test-utils/src/
165159
commands_pre =
166160
; In order to get a healthy coverage report,
167161
; we have to install packages in editable mode.
@@ -230,18 +224,6 @@ commands =
230224

231225
coverage: {toxinidir}/scripts/coverage.sh
232226

233-
mypy: mypy --version
234-
mypy: mypy --install-types --non-interactive --namespace-packages --explicit-package-bases opentelemetry-api/src/opentelemetry/
235-
mypy: mypy --install-types --non-interactive --namespace-packages --explicit-package-bases opentelemetry-sdk/src/opentelemetry/sdk/resources
236-
mypy: mypy --install-types --non-interactive --namespace-packages --explicit-package-bases opentelemetry-semantic-conventions/src/opentelemetry/semconv/
237-
238-
; For test code, we don't want to enforce the full mypy strictness
239-
mypy: mypy --install-types --non-interactive --namespace-packages --config-file=mypy-relaxed.ini opentelemetry-api/tests/
240-
241-
; Test that mypy can pick up typeinfo from an installed package (otherwise,
242-
; implicit Any due to unfollowed import would result).
243-
mypyinstalled: mypy --install-types --non-interactive --namespace-packages opentelemetry-api/tests/mypysmoke.py --strict
244-
245227
[testenv:spellcheck]
246228
basepython: python3
247229
recreate = True

0 commit comments

Comments
 (0)