Skip to content

Commit 6245fb8

Browse files
Kludexemdneto
andauthored
Use UV to install all needed packages locally (#3124)
* Use UV to install all needed packages locally * Add opentelemetry-test-utils * Add asgi and fastapi * Add more projects, since it helped me * add urllib * Add system metrics * Add dbapi and sqlite3 * Add sqlalchemy * add pyramid * Add pymongo * Add jinja2 * add lock file * add falcon as well * Add uv lock to the pre-commit * Update uv.lock * Update lockfile * remove xray test dependencies * Add otel-sdk to xray * Update uv version * Drop xray from the list of packages --------- Co-authored-by: Emídio Neto <[email protected]>
1 parent 8644630 commit 6245fb8

File tree

4 files changed

+5375
-30
lines changed

4 files changed

+5375
-30
lines changed

.pre-commit-config.yaml

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
repos:
2-
- repo: https://github.com/astral-sh/ruff-pre-commit
3-
# Ruff version.
4-
rev: v0.6.9
5-
hooks:
6-
# Run the linter.
7-
- id: ruff
8-
args: ["--fix", "--show-fixes"]
9-
# Run the formatter.
10-
- id: ruff-format
2+
- repo: https://github.com/astral-sh/ruff-pre-commit
3+
# Ruff version.
4+
rev: v0.6.9
5+
hooks:
6+
# Run the linter.
7+
- id: ruff
8+
args: ["--fix", "--show-fixes"]
9+
# Run the formatter.
10+
- id: ruff-format
11+
- repo: https://github.com/astral-sh/uv-pre-commit
12+
# uv version.
13+
rev: 0.6.0
14+
hooks:
15+
- id: uv-lock

CONTRIBUTING.md

+39-17
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,31 @@ Please also read the [OpenTelemetry Contributor Guide](https://github.com/open-t
1919

2020
## Index
2121

22-
* [Find a Buddy and get Started Quickly](#find-a-buddy-and-get-started-quickly)
23-
* [Development](#development)
24-
* [Troubleshooting](#troubleshooting)
25-
* [Benchmarks](#benchmarks)
26-
* [Pull requests](#pull-requests)
27-
* [How to Send Pull Requests](#how-to-send-pull-requests)
28-
* [How to Receive Comments](#how-to-receive-comments)
29-
* [How to Get PRs Reviewed](#how-to-get-prs-reviewed)
30-
* [How to Get PRs Merged](#how-to-get-prs-merged)
31-
* [Design Choices](#design-choices)
32-
* [Focus on Capabilities, Not Structure Compliance](#focus-on-capabilities-not-structure-compliance)
33-
* [Running Tests Locally](#running-tests-locally)
34-
* [Testing against a different Core repo branch/commit](#testing-against-a-different-core-repo-branchcommit)
35-
* [Style Guide](#style-guide)
36-
* [Guideline for instrumentations](#guideline-for-instrumentations)
37-
* [Guideline for GenAI instrumentations](#guideline-for-genai-instrumentations)
38-
* [Expectations from contributors](#expectations-from-contributors)
22+
- [Contributing to opentelemetry-python-contrib](#contributing-to-opentelemetry-python-contrib)
23+
- [Index](#index)
24+
- [Find a Buddy and get Started Quickly](#find-a-buddy-and-get-started-quickly)
25+
- [Development](#development)
26+
- [Virtual Environment](#virtual-environment)
27+
- [Troubleshooting](#troubleshooting)
28+
- [Benchmarks](#benchmarks)
29+
- [Pull Requests](#pull-requests)
30+
- [How to Send Pull Requests](#how-to-send-pull-requests)
31+
- [How to Receive Comments](#how-to-receive-comments)
32+
- [How to Get PRs Reviewed](#how-to-get-prs-reviewed)
33+
- [How to Get PRs Merged](#how-to-get-prs-merged)
34+
- [Design Choices](#design-choices)
35+
- [Focus on Capabilities, Not Structure Compliance](#focus-on-capabilities-not-structure-compliance)
36+
- [Running Tests Locally](#running-tests-locally)
37+
- [Testing against a different Core repo branch/commit](#testing-against-a-different-core-repo-branchcommit)
38+
- [Style Guide](#style-guide)
39+
- [Guideline for instrumentations](#guideline-for-instrumentations)
40+
- [Update supported instrumentation package versions](#update-supported-instrumentation-package-versions)
41+
- [Guideline for GenAI instrumentations](#guideline-for-genai-instrumentations)
42+
- [Get Involved](#get-involved)
43+
- [Expectations from contributors](#expectations-from-contributors)
44+
- [Updating supported Python versions](#updating-supported-python-versions)
45+
- [Bumping the Python baseline](#bumping-the-python-baseline)
46+
- [Adding support for a new Python release](#adding-support-for-a-new-python-release)
3947

4048
## Find a Buddy and get Started Quickly
4149

@@ -93,6 +101,20 @@ See
93101
[`tox.ini`](https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/tox.ini)
94102
for more detail on available tox commands.
95103

104+
### Virtual Environment
105+
106+
You can also create a single virtual environment to make it easier to run local tests.
107+
108+
For that, you'll need to install [`uv`](https://docs.astral.sh/uv/getting-started/installation/).
109+
110+
After installing `uv`, you can run the following command:
111+
112+
```sh
113+
uv sync
114+
```
115+
116+
This will create a virtual environment in the `.venv` directory and install all the necessary dependencies.
117+
96118
### Troubleshooting
97119

98120
Some packages may require additional system-wide dependencies to be installed. For example, you may need to install `libpq-dev` to run the postgresql client libraries instrumentation tests or `libsnappy-dev` to run the prometheus exporter tests. If you encounter a build error, please check the installation instructions for the package you are trying to run tests for.

pyproject.toml

+141-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,148 @@
1+
# Used for local development, not to be published.
2+
[project]
3+
name = "opentelemetry-python-contrib"
4+
version = "0.0.0" # This is not used.
5+
requires-python = ">=3.8"
6+
dependencies = [
7+
"opentelemetry-api",
8+
"opentelemetry-sdk",
9+
"opentelemetry-semantic-conventions",
10+
"opentelemetry-test-utils",
11+
"opentelemetry-exporter-prometheus-remote-write",
12+
"opentelemetry-exporter-richconsole",
13+
"opentelemetry-instrumentation",
14+
"opentelemetry-instrumentation-aio-pika[instruments]",
15+
"opentelemetry-instrumentation-aiohttp-client[instruments]",
16+
"opentelemetry-instrumentation-aiohttp-server[instruments]",
17+
"opentelemetry-instrumentation-aiokafka[instruments]",
18+
"opentelemetry-instrumentation-aiopg[instruments]",
19+
"opentelemetry-instrumentation-asgi[instruments]",
20+
"opentelemetry-instrumentation-asyncio",
21+
"opentelemetry-instrumentation-asyncpg[instruments]",
22+
"opentelemetry-instrumentation-aws-lambda[instruments]",
23+
"opentelemetry-instrumentation-boto[instruments]",
24+
"opentelemetry-instrumentation-boto3sqs[instruments]",
25+
"opentelemetry-instrumentation-botocore[instruments]",
26+
"opentelemetry-instrumentation-cassandra[instruments]",
27+
"opentelemetry-instrumentation-celery[instruments]",
28+
"opentelemetry-instrumentation-click[instruments]",
29+
"opentelemetry-instrumentation-confluent-kafka[instruments]",
30+
"opentelemetry-instrumentation-dbapi",
31+
"opentelemetry-instrumentation-django[instruments]",
32+
"opentelemetry-instrumentation-elasticsearch[instruments]",
33+
"opentelemetry-instrumentation-falcon[instruments]",
34+
"opentelemetry-instrumentation-fastapi[instruments]",
35+
"opentelemetry-instrumentation-flask[instruments]",
36+
"opentelemetry-instrumentation-grpc[instruments]",
37+
"opentelemetry-instrumentation-httpx[instruments]",
38+
"opentelemetry-instrumentation-jinja2[instruments]",
39+
"opentelemetry-instrumentation-kafka-python[instruments]",
40+
"opentelemetry-instrumentation-logging",
41+
"opentelemetry-instrumentation-mysql[instruments]",
42+
"opentelemetry-instrumentation-mysqlclient[instruments]",
43+
"opentelemetry-instrumentation-pika[instruments]",
44+
"opentelemetry-instrumentation-psycopg[instruments]",
45+
"opentelemetry-instrumentation-psycopg2[instruments]",
46+
"opentelemetry-instrumentation-pymemcache[instruments]",
47+
"opentelemetry-instrumentation-pymongo[instruments]",
48+
"opentelemetry-instrumentation-pymysql[instruments]",
49+
"opentelemetry-instrumentation-pyramid[instruments]",
50+
"opentelemetry-instrumentation-redis[instruments]",
51+
"opentelemetry-instrumentation-remoulade[instruments]",
52+
"opentelemetry-instrumentation-requests[instruments]",
53+
"opentelemetry-instrumentation-sqlalchemy[instruments]",
54+
"opentelemetry-instrumentation-sqlite3",
55+
"opentelemetry-instrumentation-system-metrics",
56+
"opentelemetry-instrumentation-threading",
57+
"opentelemetry-instrumentation-tornado",
58+
"opentelemetry-instrumentation-tortoiseorm",
59+
"opentelemetry-instrumentation-urllib",
60+
"opentelemetry-instrumentation-urllib3[instruments]",
61+
"opentelemetry-instrumentation-wsgi",
62+
"opentelemetry-propagator-ot-trace",
63+
"opentelemetry-util-http",
64+
]
65+
66+
# https://docs.astral.sh/uv/reference/settings/
67+
[tool.uv]
68+
package = false # https://docs.astral.sh/uv/reference/settings/#package
69+
required-version = ">=0.6.0"
70+
71+
# https://docs.astral.sh/uv/reference/settings/#sources
72+
[tool.uv.sources]
73+
opentelemetry-api = { git = "https://github.com/open-telemetry/opentelemetry-python", branch = "main", subdirectory = "opentelemetry-api" }
74+
opentelemetry-sdk = { git = "https://github.com/open-telemetry/opentelemetry-python", branch = "main", subdirectory = "opentelemetry-sdk" }
75+
opentelemetry-semantic-conventions = { git = "https://github.com/open-telemetry/opentelemetry-python", branch = "main", subdirectory = "opentelemetry-semantic-conventions" }
76+
opentelemetry-test-utils = { git = "https://github.com/open-telemetry/opentelemetry-python", branch = "main", subdirectory = "tests/opentelemetry-test-utils" }
77+
opentelemetry-exporter-prometheus-remote-write = { workspace = true }
78+
opentelemetry-exporter-richconsole = { workspace = true }
79+
opentelemetry-instrumentation = { workspace = true }
80+
opentelemetry-instrumentation-aio-pika = { workspace = true }
81+
opentelemetry-instrumentation-aiohttp-client = { workspace = true }
82+
opentelemetry-instrumentation-aiohttp-server = { workspace = true }
83+
opentelemetry-instrumentation-aiokafka = { workspace = true }
84+
opentelemetry-instrumentation-aiopg = { workspace = true }
85+
opentelemetry-instrumentation-asgi = { workspace = true }
86+
opentelemetry-instrumentation-asyncio = { workspace = true }
87+
opentelemetry-instrumentation-asyncpg = { workspace = true }
88+
opentelemetry-instrumentation-aws-lambda = { workspace = true }
89+
opentelemetry-instrumentation-boto = { workspace = true }
90+
opentelemetry-instrumentation-boto3sqs = { workspace = true }
91+
opentelemetry-instrumentation-botocore = { workspace = true }
92+
opentelemetry-instrumentation-cassandra = { workspace = true }
93+
opentelemetry-instrumentation-celery = { workspace = true }
94+
opentelemetry-instrumentation-click = { workspace = true }
95+
opentelemetry-instrumentation-confluent-kafka = { workspace = true }
96+
opentelemetry-instrumentation-dbapi = { workspace = true }
97+
opentelemetry-instrumentation-django = { workspace = true }
98+
opentelemetry-instrumentation-elasticsearch = { workspace = true }
99+
opentelemetry-instrumentation-falcon = { workspace = true }
100+
opentelemetry-instrumentation-fastapi = { workspace = true }
101+
opentelemetry-instrumentation-flask = { workspace = true }
102+
opentelemetry-instrumentation-grpc = { workspace = true }
103+
opentelemetry-instrumentation-httpx = { workspace = true }
104+
opentelemetry-instrumentation-jinja2 = { workspace = true }
105+
opentelemetry-instrumentation-kafka-python = { workspace = true }
106+
opentelemetry-instrumentation-logging = { workspace = true }
107+
opentelemetry-instrumentation-mysql = { workspace = true }
108+
opentelemetry-instrumentation-mysqlclient = { workspace = true }
109+
opentelemetry-instrumentation-pika = { workspace = true }
110+
opentelemetry-instrumentation-psycopg = { workspace = true }
111+
opentelemetry-instrumentation-psycopg2 = { workspace = true }
112+
opentelemetry-instrumentation-pymemcache = { workspace = true }
113+
opentelemetry-instrumentation-pymongo = { workspace = true }
114+
opentelemetry-instrumentation-pymysql = { workspace = true }
115+
opentelemetry-instrumentation-pyramid = { workspace = true }
116+
opentelemetry-instrumentation-redis = { workspace = true }
117+
opentelemetry-instrumentation-remoulade = { workspace = true }
118+
opentelemetry-instrumentation-requests = { workspace = true }
119+
opentelemetry-instrumentation-sqlalchemy = { workspace = true }
120+
opentelemetry-instrumentation-sqlite3 = { workspace = true }
121+
opentelemetry-instrumentation-system-metrics = { workspace = true }
122+
opentelemetry-instrumentation-threading = { workspace = true }
123+
opentelemetry-instrumentation-tornado = { workspace = true }
124+
opentelemetry-instrumentation-tortoiseorm = { workspace = true }
125+
opentelemetry-instrumentation-urllib = { workspace = true }
126+
opentelemetry-instrumentation-urllib3 = { workspace = true }
127+
opentelemetry-instrumentation-wsgi = { workspace = true }
128+
opentelemetry-propagator-ot-trace = { workspace = true }
129+
opentelemetry-util-http = { workspace = true }
130+
131+
# https://docs.astral.sh/uv/reference/settings/#workspace
132+
[tool.uv.workspace]
133+
members = [
134+
"instrumentation/*",
135+
"exporter/*",
136+
"opentelemetry-instrumentation",
137+
"propagator/opentelemetry-propagator-ot-trace",
138+
"util/opentelemetry-util-http",
139+
]
140+
1141
[tool.ruff]
2142
# https://docs.astral.sh/ruff/configuration/
3143
target-version = "py38"
4144
line-length = 79
5-
extend-exclude = [
6-
"_template",
7-
"*_pb2*.py*",
8-
]
145+
extend-exclude = ["_template", "*_pb2*.py*"]
9146
output-format = "concise"
10147

11148
[tool.ruff.lint]

0 commit comments

Comments
 (0)