Skip to content

Commit a70982b

Browse files
committed
feat: python improvements and uv support
1 parent 653874a commit a70982b

13 files changed

Lines changed: 1026 additions & 115 deletions

File tree

.github/workflows/ci-python.yml

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ on:
1616

1717
env:
1818
AWS_REGION: us-east-1
19-
# Copied this CORE_REPO_SHA from
20-
# https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/.github/workflows/test.yml#L9
21-
CORE_REPO_SHA: v1.19.0
2219

2320
permissions:
2421
contents: read
@@ -36,19 +33,17 @@ jobs:
3633
steps:
3734
- name: Checkout this repo
3835
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
36+
3937
- name: Setup Python for OTel Python SDK
4038
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
4139
with:
4240
python-version: ${{ matrix.python }}
43-
- name: Install tox testing package
44-
working-directory: python/src
41+
42+
- name: Set up uv
43+
uses: astral-sh/setup-uv@v7
44+
45+
- name: Run tests
46+
working-directory: python/src/otel
4547
run: |
46-
pip install tox
47-
tox
48-
- name: Set up Go for ADOT Collector
49-
uses: actions/setup-go@4dc6199c7b1a012772edbd06daecab0f50c9053c # v6.1.0
50-
with:
51-
go-version: '^1.20.8'
52-
- name: Build Python Layer which includes ADOT Collector
53-
working-directory: python/src
54-
run: ./run.sh -b
48+
uv sync --extra test --extra instrumentation
49+
uv run pytest tests

.github/workflows/release-layer-python.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ jobs:
3737
- name: Save PYTHON_OPENTELEMETRY_SDK_VERSION
3838
id: save-python-opentelemetry-sdk-version
3939
run: |
40-
cd python/src
41-
echo "PYTHON_OPENTELEMETRY_SDK_VERSION=$(cat otel/otel_sdk/requirements.txt | grep opentelemetry-sdk | sed 's/.*==\([^ ]*\).*/\1/')" >> $GITHUB_ENV
40+
cd python/src/otel
41+
echo "PYTHON_OPENTELEMETRY_SDK_VERSION=$(grep 'opentelemetry-sdk' pyproject.toml | sed 's/.*==\([^"]*\).*/\1/')" >> $GITHUB_ENV
4242
echo "PYTHON_OPENTELEMETRY_SDK_VERSION=$PYTHON_OPENTELEMETRY_SDK_VERSION" >> $GITHUB_OUTPUT
4343
shell: bash
4444

@@ -78,7 +78,7 @@ jobs:
7878
needs: build-layer
7979
strategy:
8080
matrix:
81-
aws_region:
81+
aws_region:
8282
- ap-northeast-1
8383
- ap-northeast-2
8484
- ap-south-1

.gitignore

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ terraform.*
1313
.DS_Store
1414

1515
.tox
16-
__pycache__/*
17-
.pyc
16+
.venv
17+
.pytest_cache/
18+
__pycache__/
19+
*.pyc
1820
build.toml
1921

2022
*.zip

python/src/otel/Dockerfile

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ ADD . /workspace
66

77
WORKDIR /workspace
88

9+
# Install uv
10+
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
11+
export PATH="/root/.local/bin:$PATH"
12+
913
RUN mkdir -p /build && \
10-
python3 -m pip install -r otel_sdk/requirements.txt -t /build/python && \
11-
python3 -m pip install -r otel_sdk/nodeps-requirements.txt -t /build/tmp --no-deps && \
12-
# We need to use a `/build/tmp/` folder otherwise the instrumentation packages
13-
# do not get fully downloaded to the `opentelemetry/instrumentation/` path.
14-
cp -r /build/tmp/* /build/python/ && \
15-
rm -rf /build/tmp && \
14+
/root/.local/bin/uv venv /build/.venv && \
15+
/root/.local/bin/uv pip install --python /build/.venv/bin/python '.[instrumentation]' --target /build/python && \
1616
mv otel_sdk/otel_wrapper.py /build/python && \
1717
mv otel_sdk/otel-instrument /build && \
1818
mv otel_sdk/otel-handler /build && \

python/src/otel/Makefile

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

python/src/otel/otel_sdk/nodeps-requirements.txt

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

python/src/otel/otel_sdk/requirements.txt

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

python/src/otel/pyproject.toml

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
[project]
2+
name = "otel"
3+
version = "0.1.0"
4+
dependencies = [
5+
"opentelemetry-sdk==1.39.0",
6+
"opentelemetry-exporter-otlp-proto-http==1.39.0",
7+
"opentelemetry-distro==0.60b0",
8+
"opentelemetry-instrumentation==0.60b0",
9+
"opentelemetry-semantic-conventions==0.60b0",
10+
"opentelemetry-propagator-aws-xray==1.0.2",
11+
]
12+
13+
[project.optional-dependencies]
14+
test = [
15+
"opentelemetry-test-utils==0.60b0",
16+
"pytest"
17+
]
18+
instrumentation = [
19+
"opentelemetry-instrumentation-aiohttp-client==0.60b0",
20+
"opentelemetry-util-http==0.60b0",
21+
"opentelemetry-instrumentation-asgi==0.60b0",
22+
"opentelemetry-instrumentation-asyncpg==0.60b0",
23+
"opentelemetry-instrumentation-aws-lambda==0.60b0",
24+
"opentelemetry-instrumentation-boto==0.60b0",
25+
"opentelemetry-instrumentation-botocore==0.60b0",
26+
"opentelemetry-instrumentation-boto3sqs==0.60b0",
27+
"opentelemetry-instrumentation-celery==0.60b0",
28+
"opentelemetry-instrumentation-dbapi==0.60b0",
29+
"opentelemetry-instrumentation-django==0.60b0",
30+
"opentelemetry-instrumentation-elasticsearch==0.60b0",
31+
"opentelemetry-instrumentation-fastapi==0.60b0",
32+
"opentelemetry-instrumentation-falcon==0.60b0",
33+
"opentelemetry-instrumentation-flask==0.60b0",
34+
"opentelemetry-instrumentation-grpc==0.60b0",
35+
"opentelemetry-instrumentation-jinja2==0.60b0",
36+
"opentelemetry-instrumentation-mysql==0.60b0",
37+
"opentelemetry-instrumentation-psycopg2==0.60b0",
38+
"opentelemetry-instrumentation-pymemcache==0.60b0",
39+
"opentelemetry-instrumentation-pymongo==0.60b0",
40+
"opentelemetry-instrumentation-pymysql==0.60b0",
41+
"opentelemetry-instrumentation-pyramid==0.60b0",
42+
"opentelemetry-instrumentation-redis==0.60b0",
43+
"opentelemetry-instrumentation-requests==0.60b0",
44+
"opentelemetry-instrumentation-sqlalchemy==0.60b0",
45+
"opentelemetry-instrumentation-sqlite3==0.60b0",
46+
"opentelemetry-instrumentation-starlette==0.60b0",
47+
"opentelemetry-instrumentation-tornado==0.60b0",
48+
"opentelemetry-instrumentation-wsgi==0.60b0",
49+
]

python/src/otel/tests/nodeps-requirements.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

python/src/otel/tests/requirements.txt

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

0 commit comments

Comments
 (0)