src-py-lib 0.3.0__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.github/workflows/release.yml +2 -2
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.github/workflows/validate.yml +10 -7
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/AGENTS.md +1 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/PKG-INFO +4 -4
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/pyproject.toml +7 -7
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/logging.py +1 -1
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/tests/test_tsv.py +2 -2
- src_py_lib-0.3.1/tests/test_unicode_scan.py +22 -0
- src_py_lib-0.3.1/tests/unicode_scan.py +65 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/uv.lock +47 -47
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.github/CODEOWNERS +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.github/workflows/ci.yml +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.gitignore +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.markdownlint-cli2.yaml +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/.python-version +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/LICENSE +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/README.md +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/SECURITY.md +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/renovate.json +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/__init__.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/__init__.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/github.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/google_sheets.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/graphql.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/linear.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/one_password.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/slack.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/clients/sourcegraph.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/py.typed +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/__init__.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/config.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/events.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/http.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/json_cache.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/json_types.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/telemetry.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/src/src_py_lib/utils/tsv.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/tests/test_import.py +0 -0
- {src_py_lib-0.3.0 → src_py_lib-0.3.1}/tests/test_logging_http_clients.py +0 -0
|
@@ -67,7 +67,7 @@ jobs:
|
|
|
67
67
|
|
|
68
68
|
steps:
|
|
69
69
|
- name: Check out release ref
|
|
70
|
-
uses: actions/checkout@
|
|
70
|
+
uses: actions/checkout@v7
|
|
71
71
|
with:
|
|
72
72
|
fetch-depth: 0
|
|
73
73
|
persist-credentials: false
|
|
@@ -79,7 +79,7 @@ jobs:
|
|
|
79
79
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
80
80
|
|
|
81
81
|
- name: Cache uv
|
|
82
|
-
uses: actions/cache@
|
|
82
|
+
uses: actions/cache@v6
|
|
83
83
|
with:
|
|
84
84
|
path: ~/.cache/uv
|
|
85
85
|
key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }}
|
|
@@ -98,7 +98,7 @@ jobs:
|
|
|
98
98
|
|
|
99
99
|
steps:
|
|
100
100
|
- name: Check out code
|
|
101
|
-
uses: actions/checkout@
|
|
101
|
+
uses: actions/checkout@v7
|
|
102
102
|
with:
|
|
103
103
|
persist-credentials: false
|
|
104
104
|
ref: ${{ inputs.ref || github.ref }}
|
|
@@ -130,13 +130,13 @@ jobs:
|
|
|
130
130
|
|
|
131
131
|
steps:
|
|
132
132
|
- name: Check out code
|
|
133
|
-
uses: actions/checkout@
|
|
133
|
+
uses: actions/checkout@v7
|
|
134
134
|
with:
|
|
135
135
|
persist-credentials: false
|
|
136
136
|
ref: ${{ inputs.ref || github.ref }}
|
|
137
137
|
|
|
138
138
|
- name: Cache npm
|
|
139
|
-
uses: actions/cache@
|
|
139
|
+
uses: actions/cache@v6
|
|
140
140
|
with:
|
|
141
141
|
path: ~/.npm
|
|
142
142
|
key: npm-${{ runner.os }}-markdownlint-cli2-${{ env.MARKDOWNLINT_CLI2_VERSION }}
|
|
@@ -156,7 +156,7 @@ jobs:
|
|
|
156
156
|
|
|
157
157
|
steps:
|
|
158
158
|
- name: Check out code
|
|
159
|
-
uses: actions/checkout@
|
|
159
|
+
uses: actions/checkout@v7
|
|
160
160
|
with:
|
|
161
161
|
fetch-depth: 0
|
|
162
162
|
persist-credentials: false
|
|
@@ -168,7 +168,7 @@ jobs:
|
|
|
168
168
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
169
169
|
|
|
170
170
|
- name: Cache uv
|
|
171
|
-
uses: actions/cache@
|
|
171
|
+
uses: actions/cache@v6
|
|
172
172
|
with:
|
|
173
173
|
path: ~/.cache/uv
|
|
174
174
|
key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }}
|
|
@@ -181,6 +181,9 @@ jobs:
|
|
|
181
181
|
- name: Validate lockfile
|
|
182
182
|
run: uv lock --check
|
|
183
183
|
|
|
184
|
+
- name: Scan for Unicode characters
|
|
185
|
+
run: uv run --frozen python tests/unicode_scan.py
|
|
186
|
+
|
|
184
187
|
- name: Lint Python
|
|
185
188
|
run: uv run --frozen ruff check .
|
|
186
189
|
|
|
@@ -216,7 +219,7 @@ jobs:
|
|
|
216
219
|
|
|
217
220
|
steps:
|
|
218
221
|
- name: Check out code
|
|
219
|
-
uses: actions/checkout@
|
|
222
|
+
uses: actions/checkout@v7
|
|
220
223
|
with:
|
|
221
224
|
fetch-depth: 0
|
|
222
225
|
persist-credentials: false
|
|
@@ -228,7 +231,7 @@ jobs:
|
|
|
228
231
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
229
232
|
|
|
230
233
|
- name: Cache uv
|
|
231
|
-
uses: actions/cache@
|
|
234
|
+
uses: actions/cache@v6
|
|
232
235
|
with:
|
|
233
236
|
path: ~/.cache/uv
|
|
234
237
|
key: uv-${{ runner.os }}-py${{ env.PYTHON_VERSION }}-${{ hashFiles('uv.lock') }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: src-py-lib
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Reusable libraries for Sourcegraph projects
|
|
5
5
|
Project-URL: Homepage, https://github.com/sourcegraph/src-py-lib
|
|
6
6
|
Project-URL: Issues, https://github.com/sourcegraph/src-py-lib/issues
|
|
@@ -17,12 +17,12 @@ Classifier: Programming Language :: Python :: 3
|
|
|
17
17
|
Classifier: Typing :: Typed
|
|
18
18
|
Requires-Python: >=3.11
|
|
19
19
|
Requires-Dist: httpx<1,>=0.28.1
|
|
20
|
-
Requires-Dist: opentelemetry-api<2,>=1.
|
|
20
|
+
Requires-Dist: opentelemetry-api<2,>=1.43.0
|
|
21
21
|
Requires-Dist: pydantic<3,>=2.13.4
|
|
22
22
|
Requires-Dist: python-dotenv<2,>=1.2.2
|
|
23
23
|
Provides-Extra: otel
|
|
24
|
-
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.
|
|
25
|
-
Requires-Dist: opentelemetry-sdk<2,>=1.
|
|
24
|
+
Requires-Dist: opentelemetry-exporter-otlp-proto-http<2,>=1.43.0; extra == 'otel'
|
|
25
|
+
Requires-Dist: opentelemetry-sdk<2,>=1.43.0; extra == 'otel'
|
|
26
26
|
Description-Content-Type: text/markdown
|
|
27
27
|
|
|
28
28
|
# src-py-lib
|
|
@@ -4,10 +4,10 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[dependency-groups]
|
|
6
6
|
dev = [
|
|
7
|
-
"opentelemetry-exporter-otlp-proto-http>=1.
|
|
8
|
-
"opentelemetry-sdk>=1.
|
|
9
|
-
"pyright>=1.1.
|
|
10
|
-
"ruff>=0.15.
|
|
7
|
+
"opentelemetry-exporter-otlp-proto-http>=1.43.0,<2",
|
|
8
|
+
"opentelemetry-sdk>=1.43.0,<2",
|
|
9
|
+
"pyright>=1.1.411",
|
|
10
|
+
"ruff>=0.15.20",
|
|
11
11
|
]
|
|
12
12
|
|
|
13
13
|
[project]
|
|
@@ -32,7 +32,7 @@ classifiers = [
|
|
|
32
32
|
]
|
|
33
33
|
dependencies = [
|
|
34
34
|
"httpx>=0.28.1,<1",
|
|
35
|
-
"opentelemetry-api>=1.
|
|
35
|
+
"opentelemetry-api>=1.43.0,<2",
|
|
36
36
|
"pydantic>=2.13.4,<3",
|
|
37
37
|
"python-dotenv>=1.2.2,<2",
|
|
38
38
|
]
|
|
@@ -46,8 +46,8 @@ Issues = "https://github.com/sourcegraph/src-py-lib/issues"
|
|
|
46
46
|
|
|
47
47
|
[project.optional-dependencies]
|
|
48
48
|
otel = [
|
|
49
|
-
"opentelemetry-exporter-otlp-proto-http>=1.
|
|
50
|
-
"opentelemetry-sdk>=1.
|
|
49
|
+
"opentelemetry-exporter-otlp-proto-http>=1.43.0,<2",
|
|
50
|
+
"opentelemetry-sdk>=1.43.0,<2",
|
|
51
51
|
]
|
|
52
52
|
|
|
53
53
|
[tool.hatch.build.targets.wheel]
|
|
@@ -378,7 +378,7 @@ def cli_logging_handlers(
|
|
|
378
378
|
"""Attach terminal (and optional bridge) handlers to the named loggers.
|
|
379
379
|
|
|
380
380
|
Adds and removes only its own handlers, restores prior logger levels on
|
|
381
|
-
exit, and never touches the root logger or other handlers
|
|
381
|
+
exit, and never touches the root logger or other handlers - safe to
|
|
382
382
|
compose with a host application's logging configuration.
|
|
383
383
|
|
|
384
384
|
With `suppress_http_dependency_logs=False`, httpx/httpcore loggers are
|
|
@@ -31,9 +31,9 @@ class TSVTest(unittest.TestCase):
|
|
|
31
31
|
|
|
32
32
|
def test_display_width_handles_wide_and_combining_characters(self) -> None:
|
|
33
33
|
self.assertEqual(display_width("a"), 1)
|
|
34
|
-
self.assertEqual(display_width("
|
|
34
|
+
self.assertEqual(display_width("\u6e2c"), 2)
|
|
35
35
|
self.assertEqual(display_width("e\u0301"), 1)
|
|
36
|
-
self.assertEqual(pad_display("
|
|
36
|
+
self.assertEqual(pad_display("\u6e2c", 4), "\u6e2c ")
|
|
37
37
|
|
|
38
38
|
def test_write_tsv_creates_aligned_table(self) -> None:
|
|
39
39
|
with tempfile.TemporaryDirectory() as directory:
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import unittest
|
|
4
|
+
|
|
5
|
+
from tests import unicode_scan
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class UnicodeScanTests(unittest.TestCase):
|
|
9
|
+
def test_ascii_text_has_no_findings(self) -> None:
|
|
10
|
+
self.assertEqual(unicode_scan.findings_in_text("plain - ascii 'text' x 2\n"), [])
|
|
11
|
+
|
|
12
|
+
def test_non_ascii_characters_are_flagged(self) -> None:
|
|
13
|
+
findings = unicode_scan.findings_in_text("first line\na \u2014 b \u2192 c\n")
|
|
14
|
+
self.assertEqual(findings, [(2, 3, "\u2014"), (2, 7, "\u2192")])
|
|
15
|
+
|
|
16
|
+
def test_invisible_character_is_flagged(self) -> None:
|
|
17
|
+
findings = unicode_scan.findings_in_text("zero\u200bwidth")
|
|
18
|
+
self.assertEqual(findings, [(1, 5, "\u200b")])
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
if __name__ == "__main__":
|
|
22
|
+
unittest.main()
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""Fail on non-ASCII characters in tracked text files.
|
|
3
|
+
|
|
4
|
+
Usage: uv run python tests/unicode_scan.py
|
|
5
|
+
Exit code 1 when any Unicode character outside ASCII is found.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import subprocess
|
|
11
|
+
import sys
|
|
12
|
+
import unicodedata
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def findings_in_text(text: str) -> list[tuple[int, int, str]]:
|
|
17
|
+
"""Return (line, column, character) findings, 1-based."""
|
|
18
|
+
findings: list[tuple[int, int, str]] = []
|
|
19
|
+
for line_number, line in enumerate(text.splitlines(), start=1):
|
|
20
|
+
for column_number, character in enumerate(line, start=1):
|
|
21
|
+
if not character.isascii():
|
|
22
|
+
findings.append((line_number, column_number, character))
|
|
23
|
+
return findings
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def tracked_files(root: Path) -> list[Path]:
|
|
27
|
+
"""Return tracked files the gate should scan."""
|
|
28
|
+
listing = subprocess.run(
|
|
29
|
+
["git", "ls-files", "-z"],
|
|
30
|
+
capture_output=True,
|
|
31
|
+
text=True,
|
|
32
|
+
check=True,
|
|
33
|
+
cwd=root,
|
|
34
|
+
)
|
|
35
|
+
return [root / name for name in listing.stdout.split("\0") if name]
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def describe(character: str) -> str:
|
|
39
|
+
name = unicodedata.name(character, f"U+{ord(character):04X}")
|
|
40
|
+
return f"`{character}` ({name}, U+{ord(character):04X})"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def main() -> int:
|
|
44
|
+
root = Path(__file__).resolve().parent.parent
|
|
45
|
+
finding_count = 0
|
|
46
|
+
for path in tracked_files(root):
|
|
47
|
+
try:
|
|
48
|
+
text = path.read_text(encoding="utf-8")
|
|
49
|
+
except (UnicodeDecodeError, FileNotFoundError, IsADirectoryError):
|
|
50
|
+
continue # binary or vanished files are not lintable text
|
|
51
|
+
for line_number, column_number, character in findings_in_text(text):
|
|
52
|
+
print(
|
|
53
|
+
f"{path.relative_to(root)}:{line_number}:{column_number} "
|
|
54
|
+
f"non-ASCII character {describe(character)}"
|
|
55
|
+
)
|
|
56
|
+
finding_count += 1
|
|
57
|
+
if finding_count:
|
|
58
|
+
print(f"\nFound {finding_count} non-ASCII character(s).")
|
|
59
|
+
return 1
|
|
60
|
+
print("No non-ASCII characters found.")
|
|
61
|
+
return 0
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
if __name__ == "__main__":
|
|
65
|
+
sys.exit(main())
|
|
@@ -191,31 +191,31 @@ wheels = [
|
|
|
191
191
|
|
|
192
192
|
[[package]]
|
|
193
193
|
name = "opentelemetry-api"
|
|
194
|
-
version = "1.
|
|
194
|
+
version = "1.43.0"
|
|
195
195
|
source = { registry = "https://pypi.org/simple" }
|
|
196
196
|
dependencies = [
|
|
197
197
|
{ name = "typing-extensions" },
|
|
198
198
|
]
|
|
199
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
199
|
+
sdist = { url = "https://files.pythonhosted.org/packages/ae/cc/e4c9584181f86494df0f6bdec1a4f3280c50db44704dc2a407e994fc87bb/opentelemetry_api-1.43.0.tar.gz", hash = "sha256:107d0d03857ea8fc7c5fcbbbd83f800c281f0d560553d61c1d675fccfd1761c1", size = 73476, upload-time = "2026-06-24T15:19:55.323Z" }
|
|
200
200
|
wheels = [
|
|
201
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
201
|
+
{ url = "https://files.pythonhosted.org/packages/17/83/6dba32b85f31868400440dc7ad2ca1eab94cbbf3a7b0459ed39f8311a9e2/opentelemetry_api-1.43.0-py3-none-any.whl", hash = "sha256:20acf45e9b21851926835292e4045d290acade1edd2ff3de86d2f069687ba1fd", size = 61912, upload-time = "2026-06-24T15:19:35.434Z" },
|
|
202
202
|
]
|
|
203
203
|
|
|
204
204
|
[[package]]
|
|
205
205
|
name = "opentelemetry-exporter-otlp-proto-common"
|
|
206
|
-
version = "1.
|
|
206
|
+
version = "1.43.0"
|
|
207
207
|
source = { registry = "https://pypi.org/simple" }
|
|
208
208
|
dependencies = [
|
|
209
209
|
{ name = "opentelemetry-proto" },
|
|
210
210
|
]
|
|
211
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
211
|
+
sdist = { url = "https://files.pythonhosted.org/packages/55/c1/e8098490ab15abf116dcaf9fa89ededcb35547c7d08d4b5a62f573dc1e63/opentelemetry_exporter_otlp_proto_common-1.43.0.tar.gz", hash = "sha256:c4e32ba6d6b13bdb2b8f6764c4fd28d00192826561aa04f6d14eedfce7ac076f", size = 20197, upload-time = "2026-06-24T15:20:00.247Z" }
|
|
212
212
|
wheels = [
|
|
213
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
213
|
+
{ url = "https://files.pythonhosted.org/packages/d0/b2/41ebc74ae1d5859901f1b69305de58724bf043381103d6ef413521cbc35a/opentelemetry_exporter_otlp_proto_common-1.43.0-py3-none-any.whl", hash = "sha256:123c3f9cc87218562490c63b36f497bf3a722faf174a515d1443f31ababa6264", size = 17048, upload-time = "2026-06-24T15:19:41.264Z" },
|
|
214
214
|
]
|
|
215
215
|
|
|
216
216
|
[[package]]
|
|
217
217
|
name = "opentelemetry-exporter-otlp-proto-http"
|
|
218
|
-
version = "1.
|
|
218
|
+
version = "1.43.0"
|
|
219
219
|
source = { registry = "https://pypi.org/simple" }
|
|
220
220
|
dependencies = [
|
|
221
221
|
{ name = "googleapis-common-protos" },
|
|
@@ -226,48 +226,48 @@ dependencies = [
|
|
|
226
226
|
{ name = "requests" },
|
|
227
227
|
{ name = "typing-extensions" },
|
|
228
228
|
]
|
|
229
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
229
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/92/0b9f56412483a8891d4843890294796c9df8ab42417bd9bad8035d840cb3/opentelemetry_exporter_otlp_proto_http-1.43.0.tar.gz", hash = "sha256:fa8a42bb7d00ee5391f4c0b04d8e6a46c03caa437903296ab73a81dc11ba118f", size = 25406, upload-time = "2026-06-24T15:20:01.515Z" }
|
|
230
230
|
wheels = [
|
|
231
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
231
|
+
{ url = "https://files.pythonhosted.org/packages/b3/20/b685ed7af2e17c29ffc8af56f1fa8bc2033258fc30fb0d2b722f49d13ba0/opentelemetry_exporter_otlp_proto_http-1.43.0-py3-none-any.whl", hash = "sha256:647f603aa8efdbdb4dbff842e0729d0406a6fff26b295a72d3d60e7d963b2610", size = 21795, upload-time = "2026-06-24T15:19:43.164Z" },
|
|
232
232
|
]
|
|
233
233
|
|
|
234
234
|
[[package]]
|
|
235
235
|
name = "opentelemetry-proto"
|
|
236
|
-
version = "1.
|
|
236
|
+
version = "1.43.0"
|
|
237
237
|
source = { registry = "https://pypi.org/simple" }
|
|
238
238
|
dependencies = [
|
|
239
239
|
{ name = "protobuf" },
|
|
240
240
|
]
|
|
241
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
241
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e0/b9/d357faefb40bda1d4799913e6af611171ff22a2dedcb93576bc92242d056/opentelemetry_proto-1.43.0.tar.gz", hash = "sha256:224778df17e1f3fafeaaa21d874236ca5f6ffc2f86e0899298ec7351aac27924", size = 46481, upload-time = "2026-06-24T15:20:07.625Z" }
|
|
242
242
|
wheels = [
|
|
243
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
243
|
+
{ url = "https://files.pythonhosted.org/packages/ed/a7/3e5308cf548b8f72529c7db1afdb3a404211982376a12927fd7759f77bf3/opentelemetry_proto-1.43.0-py3-none-any.whl", hash = "sha256:c58f1f7ef84bc7dc2834016c0c37fe0081dde7ca9f6339be1970fbf9cdaaa90d", size = 72489, upload-time = "2026-06-24T15:19:51.164Z" },
|
|
244
244
|
]
|
|
245
245
|
|
|
246
246
|
[[package]]
|
|
247
247
|
name = "opentelemetry-sdk"
|
|
248
|
-
version = "1.
|
|
248
|
+
version = "1.43.0"
|
|
249
249
|
source = { registry = "https://pypi.org/simple" }
|
|
250
250
|
dependencies = [
|
|
251
251
|
{ name = "opentelemetry-api" },
|
|
252
252
|
{ name = "opentelemetry-semantic-conventions" },
|
|
253
253
|
{ name = "typing-extensions" },
|
|
254
254
|
]
|
|
255
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
255
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3e/eb/5041074274ac0956b03637cc039d434569112468e875eddfcc9a0674ce06/opentelemetry_sdk-1.43.0.tar.gz", hash = "sha256:d8187c81c162df9913e4003dd6485f7390d9a24fc17026ec7387b8b8218b08e9", size = 254744, upload-time = "2026-06-24T15:20:08.467Z" }
|
|
256
256
|
wheels = [
|
|
257
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
257
|
+
{ url = "https://files.pythonhosted.org/packages/49/e3/b17be23af124201c9f52eececd4cc8ddfed1597d37b4ee771895d325805c/opentelemetry_sdk-1.43.0-py3-none-any.whl", hash = "sha256:d1323a547c1ce69d6a069a17a44b7da82bb8b332051ecb074041f87642c86823", size = 178852, upload-time = "2026-06-24T15:19:52.169Z" },
|
|
258
258
|
]
|
|
259
259
|
|
|
260
260
|
[[package]]
|
|
261
261
|
name = "opentelemetry-semantic-conventions"
|
|
262
|
-
version = "0.
|
|
262
|
+
version = "0.64b0"
|
|
263
263
|
source = { registry = "https://pypi.org/simple" }
|
|
264
264
|
dependencies = [
|
|
265
265
|
{ name = "opentelemetry-api" },
|
|
266
266
|
{ name = "typing-extensions" },
|
|
267
267
|
]
|
|
268
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
268
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5a/30/5f26df29509eccd86b99b481ac9ffa39da49ba9577cc69071c552ae30447/opentelemetry_semantic_conventions-0.64b0.tar.gz", hash = "sha256:72f76fb2d1582d9d033dd1fcd84532e961e6ff3d90d24ba6fabc72975a83864c", size = 148340, upload-time = "2026-06-24T15:20:09.267Z" }
|
|
269
269
|
wheels = [
|
|
270
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
270
|
+
{ url = "https://files.pythonhosted.org/packages/f2/ca/23ba87a221b574a7c5a99d48849d80bfe8b047624681357e2b002e566187/opentelemetry_semantic_conventions-0.64b0-py3-none-any.whl", hash = "sha256:ea77e85e354b8f604ddbe5f3d9135216f982fa4d77e5859ac30f6d8a50505aa6", size = 203713, upload-time = "2026-06-24T15:19:53.339Z" },
|
|
271
271
|
]
|
|
272
272
|
|
|
273
273
|
[[package]]
|
|
@@ -404,15 +404,15 @@ wheels = [
|
|
|
404
404
|
|
|
405
405
|
[[package]]
|
|
406
406
|
name = "pyright"
|
|
407
|
-
version = "1.1.
|
|
407
|
+
version = "1.1.411"
|
|
408
408
|
source = { registry = "https://pypi.org/simple" }
|
|
409
409
|
dependencies = [
|
|
410
410
|
{ name = "nodeenv" },
|
|
411
411
|
{ name = "typing-extensions" },
|
|
412
412
|
]
|
|
413
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
413
|
+
sdist = { url = "https://files.pythonhosted.org/packages/7e/ab/265f7dc69d28113ebba19092e57b075f41543b2ed048429c5f56e2b88eac/pyright-1.1.411.tar.gz", hash = "sha256:d885a0551f2e763b089a02702174e7f4ba77548cddabc972ab86d1f7f1b0f998", size = 4112861, upload-time = "2026-06-25T02:14:06.37Z" }
|
|
414
414
|
wheels = [
|
|
415
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
415
|
+
{ url = "https://files.pythonhosted.org/packages/0a/49/385be530a6a5b78d1cbcd5c2e38debc8959a2fc6bdb716f4e581002979fc/pyright-1.1.411-py3-none-any.whl", hash = "sha256:dc7c72a8e2700c55baa127554040e067041ea53ccfd50bf96308cc4291c7d5d9", size = 6181526, upload-time = "2026-06-25T02:14:04.691Z" },
|
|
416
416
|
]
|
|
417
417
|
|
|
418
418
|
[[package]]
|
|
@@ -441,27 +441,27 @@ wheels = [
|
|
|
441
441
|
|
|
442
442
|
[[package]]
|
|
443
443
|
name = "ruff"
|
|
444
|
-
version = "0.15.
|
|
444
|
+
version = "0.15.20"
|
|
445
445
|
source = { registry = "https://pypi.org/simple" }
|
|
446
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
446
|
+
sdist = { url = "https://files.pythonhosted.org/packages/43/dc/35b341fc554ba02f217fc10da57d1a75168cfbcf75b0ef2202176d4c4f2d/ruff-0.15.20.tar.gz", hash = "sha256:1416eb04349192646b54de98f146c4f59afe37d0decfc02c3cbbf396f3a28566", size = 4755489, upload-time = "2026-06-25T17:20:37.578Z" }
|
|
447
447
|
wheels = [
|
|
448
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
449
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
450
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
451
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
452
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
453
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
454
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
455
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
456
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
457
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
458
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
459
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
460
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
461
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
462
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
463
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
464
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
448
|
+
{ url = "https://files.pythonhosted.org/packages/94/d9/2d5014f0253ba541d2061d9fa7193f48e941c8b21bb88a7ff9bbe0bd0596/ruff-0.15.20-py3-none-linux_armv6l.whl", hash = "sha256:00e188c53e499c3c1637f73c91dcf2fb56d576cab76ce1be50a27c4e80e37078", size = 10839665, upload-time = "2026-06-25T17:19:44.702Z" },
|
|
449
|
+
{ url = "https://files.pythonhosted.org/packages/c6/d3/ac1798ba64f670698867fcfc591d50e7e421bef137db564858f619a30fcf/ruff-0.15.20-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:9ebd1fd9b9c95fc0bd7b2761aebec1f030013d2e193a2901b224af68fe47251b", size = 11208649, upload-time = "2026-06-25T17:19:48.787Z" },
|
|
450
|
+
{ url = "https://files.pythonhosted.org/packages/47/47/d3ac899991202095dfcf3d5176be4272642be3cf981a2f1a30f72a2afb95/ruff-0.15.20-py3-none-macosx_11_0_arm64.whl", hash = "sha256:c5b16cdd67ca108185cd36dce98c576350c03b1660a751de725fb049193a0632", size = 10622638, upload-time = "2026-06-25T17:19:51.354Z" },
|
|
451
|
+
{ url = "https://files.pythonhosted.org/packages/33/13/4e043fe30aa94d4ff5213a9881fc296d12960f5971b234a5263fdc225312/ruff-0.15.20-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3413bb3c3d2ca6a8208f1f4809cd2dca3c6de6d0b491c0e70847672bde6e6efd", size = 10984227, upload-time = "2026-06-25T17:19:54.044Z" },
|
|
452
|
+
{ url = "https://files.pythonhosted.org/packages/76/e6/92e7bf40388bc5800073b96564f56264f7e48bfd1a498f5ced6ae6d5a769/ruff-0.15.20-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd7ec42b3bb3da066488db093308a69c4ac5ee6d2af333a86ba6e2eb2e7dd44b", size = 10622882, upload-time = "2026-06-25T17:19:57.037Z" },
|
|
453
|
+
{ url = "https://files.pythonhosted.org/packages/13/7a/43460be3f24495a3aa46d4b16873e2c4941b3b5f0b00cf88c03b7b94b339/ruff-0.15.20-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1a36ad0eb77fba9aabfb69ede54de6f376d04ac18ebea022847046d340a8267", size = 11474808, upload-time = "2026-06-25T17:20:00.357Z" },
|
|
454
|
+
{ url = "https://files.pythonhosted.org/packages/27/a0/f37077884873221c6b33b4ab49eb18f9f88e54a16a25a5bca59bef46dd66/ruff-0.15.20-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b6df3b1e4610432f0386dba04d853b5f08cbbc903410c6fcc02f620f05aff53c", size = 12293094, upload-time = "2026-06-25T17:20:03.446Z" },
|
|
455
|
+
{ url = "https://files.pythonhosted.org/packages/a6/74/165545b60256a9704c21ac0ec4a0d07933b320812f9584836c9f4aca4292/ruff-0.15.20-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e89f198a1ea6ef0d727c1cf16088bc91a6cb0ab947dedc966715691647186eae", size = 11526176, upload-time = "2026-06-25T17:20:06.301Z" },
|
|
456
|
+
{ url = "https://files.pythonhosted.org/packages/86/b1/a976a136d40ade83ce743578399865f57001003a409acadc0ecbb3051082/ruff-0.15.20-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:309809086c2acb67624950a3c8133e80f32d0d3e27106c0cd60ff26657c9f24b", size = 11520767, upload-time = "2026-06-25T17:20:09.191Z" },
|
|
457
|
+
{ url = "https://files.pythonhosted.org/packages/19/0f/f032696cb01c9b54c0263fa393474d7758f1cdc021a01b04e3cbc2500999/ruff-0.15.20-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:2d2374caa2f2c2f9e2b7da0a50802cfb8b79f55a9b5e49379f564544fbf56487", size = 11500132, upload-time = "2026-06-25T17:20:13.602Z" },
|
|
458
|
+
{ url = "https://files.pythonhosted.org/packages/4b/f4/51b1a14bc69e8c224b15dab9cce8e99b425e0455d462caa2b3c9be2b6a8e/ruff-0.15.20-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:a1ed17b65293e0c2f22fc387bc13198a5de94bf4429589b0ff6946b0feaf21a3", size = 10943828, upload-time = "2026-06-25T17:20:16.635Z" },
|
|
459
|
+
{ url = "https://files.pythonhosted.org/packages/71/4b/fe267640783cd02bf6c5cc290b1df1051be2ec294c678b5c15fe19e52343/ruff-0.15.20-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f701305e66b38ea6c91882490eb73459796808e4c6362a1b765255e0cdcd4053", size = 10645418, upload-time = "2026-06-25T17:20:19.4Z" },
|
|
460
|
+
{ url = "https://files.pythonhosted.org/packages/b0/c0/a65aa4ec2f5e87a1df32dc3ec1fede434fe3dfd5cbcf3b503cafc676ab54/ruff-0.15.20-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5b9c0c367ad8e5d0d5b5b8537864c469a0a0e55417aadfbeca41fa61333be9f4", size = 11211770, upload-time = "2026-06-25T17:20:22.033Z" },
|
|
461
|
+
{ url = "https://files.pythonhosted.org/packages/5a/a4/0caa331d954ae2723d729d351c989cb4ca8b6077d5c6c2cb6de75e98c041/ruff-0.15.20-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:01cc00dd58f0df339d0e902219dd53990ea99996a0344e5d9cc8d45d5307e460", size = 11618698, upload-time = "2026-06-25T17:20:25.259Z" },
|
|
462
|
+
{ url = "https://files.pythonhosted.org/packages/10/9b/5f14927848d2fd4aa891fd88d883788c5a7baba561c7874732364045708c/ruff-0.15.20-py3-none-win32.whl", hash = "sha256:ed65ef510e43a137207e0f01cfcf998aeddb1aeeda5c9d35023e910284d7cf21", size = 10857322, upload-time = "2026-06-25T17:20:28.612Z" },
|
|
463
|
+
{ url = "https://files.pythonhosted.org/packages/fa/f0/fe47c501f9dea92a26d788ff98bb5d92ed4cb4c88792c5c88af6b697dc8e/ruff-0.15.20-py3-none-win_amd64.whl", hash = "sha256:a525c81c70fb0380344dd1d8745d8cc1c890b7fc94a58d5a07bd8eb9557b8415", size = 11993274, upload-time = "2026-06-25T17:20:31.871Z" },
|
|
464
|
+
{ url = "https://files.pythonhosted.org/packages/d7/2b/9555445e1201d92b3195f45cdb153a0b68f24e0a4273f6e3d5ab46e212bb/ruff-0.15.20-py3-none-win_arm64.whl", hash = "sha256:2f5b2a6d614e8700388806a14996c40fab2c47b819ef57d790a34878858ed9ca", size = 11343498, upload-time = "2026-06-25T17:20:35.03Z" },
|
|
465
465
|
]
|
|
466
466
|
|
|
467
467
|
[[package]]
|
|
@@ -491,9 +491,9 @@ dev = [
|
|
|
491
491
|
[package.metadata]
|
|
492
492
|
requires-dist = [
|
|
493
493
|
{ name = "httpx", specifier = ">=0.28.1,<1" },
|
|
494
|
-
{ name = "opentelemetry-api", specifier = ">=1.
|
|
495
|
-
{ name = "opentelemetry-exporter-otlp-proto-http", marker = "extra == 'otel'", specifier = ">=1.
|
|
496
|
-
{ name = "opentelemetry-sdk", marker = "extra == 'otel'", specifier = ">=1.
|
|
494
|
+
{ name = "opentelemetry-api", specifier = ">=1.43.0,<2" },
|
|
495
|
+
{ name = "opentelemetry-exporter-otlp-proto-http", marker = "extra == 'otel'", specifier = ">=1.43.0,<2" },
|
|
496
|
+
{ name = "opentelemetry-sdk", marker = "extra == 'otel'", specifier = ">=1.43.0,<2" },
|
|
497
497
|
{ name = "pydantic", specifier = ">=2.13.4,<3" },
|
|
498
498
|
{ name = "python-dotenv", specifier = ">=1.2.2,<2" },
|
|
499
499
|
]
|
|
@@ -501,10 +501,10 @@ provides-extras = ["otel"]
|
|
|
501
501
|
|
|
502
502
|
[package.metadata.requires-dev]
|
|
503
503
|
dev = [
|
|
504
|
-
{ name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.
|
|
505
|
-
{ name = "opentelemetry-sdk", specifier = ">=1.
|
|
506
|
-
{ name = "pyright", specifier = ">=1.1.
|
|
507
|
-
{ name = "ruff", specifier = ">=0.15.
|
|
504
|
+
{ name = "opentelemetry-exporter-otlp-proto-http", specifier = ">=1.43.0,<2" },
|
|
505
|
+
{ name = "opentelemetry-sdk", specifier = ">=1.43.0,<2" },
|
|
506
|
+
{ name = "pyright", specifier = ">=1.1.411" },
|
|
507
|
+
{ name = "ruff", specifier = ">=0.15.20" },
|
|
508
508
|
]
|
|
509
509
|
|
|
510
510
|
[[package]]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|