Skip to content

Commit d2984f5

Browse files
author
alrex
authored
remove need to clone core repo (open-telemetry#678)
1 parent 8e0d0e0 commit d2984f5

11 files changed

+64
-77
lines changed

.flake8

-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,5 @@ exclude =
1919
exporter/opentelemetry-exporter-jaeger/build/*
2020
docs/examples/opentelemetry-example-app/src/opentelemetry_example_app/grpc/gen/
2121
docs/examples/opentelemetry-example-app/build/*
22-
opentelemetry-python-core/
2322
opentelemetry-proto/build/*
2423
opentelemetry-proto/src/opentelemetry/proto/

.github/workflows/test.yml

-15
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,6 @@ jobs:
2828
steps:
2929
- name: Checkout Contrib Repo @ SHA - ${{ github.sha }}
3030
uses: actions/checkout@v2
31-
- name: Checkout Core Repo @ SHA - ${{ env.CORE_REPO_SHA }}
32-
uses: actions/checkout@v2
33-
with:
34-
repository: open-telemetry/opentelemetry-python
35-
ref: ${{ env.CORE_REPO_SHA }}
36-
path: opentelemetry-python-core
3731
- name: Set up Python ${{ env[matrix.python-version] }}
3832
uses: actions/setup-python@v2
3933
with:
@@ -84,12 +78,6 @@ jobs:
8478
steps:
8579
- name: Checkout Contrib Repo @ SHA - ${{ github.sha }}
8680
uses: actions/checkout@v2
87-
- name: Checkout Core Repo @ SHA ${{ env.CORE_REPO_SHA }}
88-
uses: actions/checkout@v2
89-
with:
90-
repository: open-telemetry/opentelemetry-python
91-
ref: ${{ env.CORE_REPO_SHA }}
92-
path: opentelemetry-python-core
9381
- name: Set up Python 3.9
9482
uses: actions/setup-python@v2
9583
with:
@@ -109,6 +97,3 @@ jobs:
10997
key: v4-misc-tox-cache-${{ matrix.tox-environment }}-${{ hashFiles('tox.ini', 'dev-requirements.txt', 'gen-requirements.txt', 'docs-requirements.txt') }}
11098
- name: run tox
11199
run: tox -e ${{ matrix.tox-environment }}
112-
- name: Ensure generated code is up to date
113-
if: matrix.tox-environment == 'generate'
114-
run: git diff --exit-code || (echo 'Generated code is out of date, please run "tox -e generate" and commit the changes in this PR.' && exit 1)

.gitignore

-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ lib64
2323
__pycache__
2424
venv*/
2525
.venv*/
26-
opentelemetry-python-core*/
27-
/opentelemetry-python-core
2826

2927
# Installer logs
3028
pip-log.txt

.isort.cfg

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ profile=black
1414
; docs: https://github.com/timothycrosley/isort#multi-line-output-modes
1515
multi_line_output=3
1616
skip=target
17-
skip_glob=**/gen/*,.venv*/*,venv*/*,opentelemetry-python-core/*,.tox/*
17+
skip_glob=**/gen/*,.venv*/*,venv*/*,.tox/*
1818
known_first_party=opentelemetry
1919
known_third_party=psutil,pytest,redis,redis_opentracing

CONTRIBUTING.md

+7-7
Original file line numberDiff line numberDiff line change
@@ -156,16 +156,16 @@ For a deeper discussion, see: https://github.com/open-telemetry/opentelemetry-sp
156156
## Running Tests Locally
157157

158158
1. Go to your Contrib repo directory. `git clone [email protected]:open-telemetry/opentelemetry-python-contrib.git && cd opentelemetry-python-contrib`.
159-
2. Clone the [OpenTelemetry Python](https://github.com/open-telemetry/opentelemetry-python) Python Core repo to a folder named `opentelemetry-python-core`. `git clone https://github.com/open-telemetry/opentelemetry-python.git opentelemetry-python-core`.
160-
3. Make sure you have `tox` installed. `pip install tox`.
161-
4. Run `tox` without any arguments to run tests for all the packages. Read more about [tox](https://tox.readthedocs.io/en/latest/).
159+
2. Make sure you have `tox` installed. `pip install tox`.
160+
3. Run `tox` without any arguments to run tests for all the packages. Read more about [tox](https://tox.readthedocs.io/en/latest/).
162161

163162
### Testing against a different Core repo branch/commit
164163

165-
1. Change directory to the repo that was cloned above. `cd opentelemetry-python-core`.
166-
2. Move the head of this repo to the SHA hash you want your tests to use. The current SHA hash can be found in `.github/workflows/test.yml` file under the `opentelemetry-python-contrib` directory. For example, currently it is `1a12fa0d681e37c1fda9cb8d46212ff3bbf6b76a`. So use `git fetch && git checkout <current SHA hash>`.
167-
3. Go back to the root directory. `cd ../`.
168-
4. With `tox` installed, run tests for a package. (e.g. `tox -e test-instrumentation-flask`.)
164+
Some of the tox targets install packages from the [OpenTelemetry Python Core Repository](https://github.com/open-telemetry/opentelemetry-python) via pip. The version of the packages installed defaults to the main branch in that repository when tox is run locally. It is possible to install packages tagged with a specific git commit hash by setting an environment variable before running tox as per the following example:
165+
166+
CORE_REPO_SHA=c49ad57bfe35cfc69bfa863d74058ca9bec55fc3 tox
167+
168+
The continuation integration overrides that environment variable with as per the configuration [here](https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/.github/workflows/test.yml#L9).
169169

170170

171171
## Style Guide

README.md

+2-6
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,8 @@ Maintainers ([@open-telemetry/python-maintainers](https://github.com/orgs/open-t
116116
1. Go to your Contrib repo directory. `cd ~/git/opentelemetry-python-contrib`.
117117
2. Create a virtual env in your Contrib repo directory. `python3 -m venv my_test_venv`.
118118
3. Activate your virtual env. `source my_test_venv/bin/activate`.
119-
4. Clone the [OpenTelemetry Python](https://github.com/open-telemetry/opentelemetry-python) Python Core repo to a folder named `opentelemetry-python-core`. `git clone [email protected]:open-telemetry/opentelemetry-python.git opentelemetry-python-core`.
120-
5. Change directory to the repo that was just cloned. `cd opentelemetry-python-core`.
121-
6. Move the head of this repo to the hash you want your tests to use. This is currently the SHA `47483865854c7adae7455f8441dab7f814f4ce2a` as seen in `.github/workflows/test.yml`. Use `git fetch && git checkout 47483865854c7adae7455f8441dab7f814f4ce2a`.
122-
7. Go back to the root directory. `cd ../`.
123-
8. Make sure you have `tox` installed. `pip install tox`.
124-
9. Run tests for a package. (e.g. `tox -e test-instrumentation-flask`.)
119+
4. Make sure you have `tox` installed. `pip install tox`.
120+
5. Run tests for a package. (e.g. `tox -e test-instrumentation-flask`.)
125121

126122
### Thanks to all the people who already contributed!
127123

docs/conf.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,7 @@
2424

2525
settings.configure()
2626

27-
source_dirs = [
28-
os.path.abspath(
29-
"../opentelemetry-python-core/opentelemetry-instrumentation/src/"
30-
),
31-
]
27+
source_dirs = []
3228

3329
exp = "../exporter"
3430
exp_dirs = [
@@ -51,7 +47,7 @@
5147
if isdir(join(sdk_ext, f))
5248
]
5349

54-
sys.path[:0] = source_dirs + exp_dirs + instr_dirs + sdk_ext_dirs
50+
sys.path[:0] = exp_dirs + instr_dirs + sdk_ext_dirs
5551

5652
# -- Project information -----------------------------------------------------
5753

eachdist.ini

-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
[DEFAULT]
44
ignore=
55
_template
6-
reference
7-
opentelemetry-python-core
86

97
sortfirst=
108
util/opentelemetry-util-http

gen-requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ astor==0.8.1
33
jinja2~=2.7
44
isort
55
black
6-
6+
requests

scripts/generate_instrumentation_bootstrap.py

+24-15
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,17 @@
1515
# limitations under the License.
1616

1717
import ast
18+
import filecmp
1819
import logging
1920
import os
2021
import subprocess
2122
import sys
23+
import tempfile
2224

2325
import astor
2426
import pkg_resources
25-
from otel_packaging import (
26-
get_instrumentation_packages,
27-
root_path,
28-
scripts_path,
29-
)
27+
import requests
28+
from otel_packaging import get_instrumentation_packages, scripts_path
3029

3130
logging.basicConfig(level=logging.INFO)
3231
logger = logging.getLogger("instrumentation_list_generator")
@@ -50,16 +49,16 @@
5049
default_instrumentations = []
5150
"""
5251

52+
tmpdir = tempfile.TemporaryDirectory() # pylint: disable=R1732
53+
gen_path = os.path.join(tmpdir.name, "new.py",)
5354

54-
gen_path = os.path.join(
55-
root_path,
56-
"opentelemetry-python-core",
57-
"opentelemetry-instrumentation",
58-
"src",
59-
"opentelemetry",
60-
"instrumentation",
61-
"bootstrap_gen.py",
62-
)
55+
current_path = os.path.join(tmpdir.name, "current.py",)
56+
57+
core_repo = os.getenv("CORE_REPO_SHA", "main")
58+
url = f"https://raw.githubusercontent.com/open-telemetry/opentelemetry-python/{core_repo}/opentelemetry-instrumentation/src/opentelemetry/instrumentation/bootstrap_gen.py"
59+
r = requests.get(url, allow_redirects=True)
60+
with open(current_path, "wb") as output:
61+
output.write(r.content)
6362

6463

6564
def main():
@@ -99,13 +98,23 @@ def main():
9998
"scripts/eachdist.py",
10099
"format",
101100
"--path",
102-
"opentelemetry-python-core/opentelemetry-instrumentation",
101+
tmpdir.name,
103102
],
104103
check=True,
105104
)
106105

107106
logger.info("generated %s", gen_path)
108107

109108

109+
def compare():
110+
if not filecmp.cmp(current_path, gen_path):
111+
logger.info(
112+
'Generated code is out of date, please run "tox -e generate" and commit bootstrap_gen.py to core repo.'
113+
)
114+
os.replace(gen_path, "bootstrap_gen.py")
115+
sys.exit(1)
116+
117+
110118
if __name__ == "__main__":
111119
main()
120+
compare()

tox.ini

+27-21
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,12 @@ deps =
184184
; FIXME: add coverage testing
185185
; FIXME: add mypy testing
186186

187+
setenv =
188+
; override CORE_REPO_SHA via env variable when testing other branches/commits than main
189+
; i.e: CORE_REPO_SHA=dde62cebffe519c35875af6d06fae053b3be65ec tox -e <env to test>
190+
CORE_REPO_SHA={env:CORE_REPO_SHA:"main"}
191+
CORE_REPO="git+https://github.com/open-telemetry/opentelemetry-python.git@{env:CORE_REPO_SHA}"
192+
187193
changedir =
188194
test-instrumentation-aiohttp-client: instrumentation/opentelemetry-instrumentation-aiohttp-client/tests
189195
test-instrumentation-aiopg: instrumentation/opentelemetry-instrumentation-aiopg/tests
@@ -228,11 +234,11 @@ commands_pre =
228234
py3{6,7,8,9}: python -m pip install -U pip setuptools wheel
229235
; Install common packages for all the tests. These are not needed in all the
230236
; cases but it saves a lot of boilerplate in this file.
231-
test: pip install {toxinidir}/opentelemetry-python-core/opentelemetry-api[test]
232-
test: pip install {toxinidir}/opentelemetry-python-core/opentelemetry-semantic-conventions[test]
233-
test: pip install {toxinidir}/opentelemetry-python-core/opentelemetry-instrumentation[test]
234-
test: pip install {toxinidir}/opentelemetry-python-core/opentelemetry-sdk[test]
235-
test: pip install {toxinidir}/opentelemetry-python-core/tests/util[test]
237+
test: pip install "opentelemetry-api[test] @ {env:CORE_REPO}#egg=opentelemetry-api&subdirectory=opentelemetry-api"
238+
test: pip install "opentelemetry-semantic-conventions[test] @ {env:CORE_REPO}#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions"
239+
test: pip install "opentelemetry-instrumentation[test] @ {env:CORE_REPO}#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
240+
test: pip install "opentelemetry-sdk[test] @ {env:CORE_REPO}#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk"
241+
test: pip install "opentelemetry-test[test] @ {env:CORE_REPO}#egg=opentelemetry-test&subdirectory=tests/util"
236242

237243
celery: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-celery[test]
238244

@@ -299,7 +305,7 @@ commands_pre =
299305

300306
sqlalchemy{11,14}: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy[test]
301307

302-
elasticsearch{2,5,6}: pip install {toxinidir}/opentelemetry-python-core/opentelemetry-instrumentation {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test]
308+
elasticsearch{2,5,6}: pip install "{env:CORE_REPO}#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation" {toxinidir}/instrumentation/opentelemetry-instrumentation-elasticsearch[test]
303309

304310
httpx: pip install {toxinidir}/instrumentation/opentelemetry-instrumentation-httpx[test]
305311

@@ -323,10 +329,10 @@ deps =
323329
pytest
324330

325331
commands_pre =
326-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-api
327-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-semantic-conventions
328-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-instrumentation
329-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-sdk
332+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-api&subdirectory=opentelemetry-api"
333+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions"
334+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
335+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk"
330336
python -m pip install {toxinidir}/util/opentelemetry-util-http
331337

332338
changedir = docs
@@ -348,11 +354,11 @@ deps =
348354
httpretty
349355

350356
commands_pre =
351-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-api
352-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-semantic-conventions
353-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-instrumentation[test]
354-
python -m pip install {toxinidir}/opentelemetry-python-core/opentelemetry-sdk
355-
python -m pip install {toxinidir}/opentelemetry-python-core/tests/util
357+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-api&subdirectory=opentelemetry-api"
358+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions"
359+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation"
360+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk"
361+
python -m pip install "{env:CORE_REPO}#egg=opentelemetry-test&subdirectory=tests/util"
356362
python -m pip install -e {toxinidir}/util/opentelemetry-util-http[test]
357363
python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-wsgi[test]
358364
python -m pip install -e {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi[test]
@@ -417,11 +423,11 @@ changedir =
417423
tests/opentelemetry-docker-tests/tests
418424

419425
commands_pre =
420-
pip install -e {toxinidir}/opentelemetry-python-core/opentelemetry-api \
421-
-e {toxinidir}/opentelemetry-python-core/opentelemetry-semantic-conventions \
422-
-e {toxinidir}/opentelemetry-python-core/opentelemetry-instrumentation \
423-
-e {toxinidir}/opentelemetry-python-core/opentelemetry-sdk \
424-
-e {toxinidir}/opentelemetry-python-core/tests/util \
426+
pip install "{env:CORE_REPO}#egg=opentelemetry-api&subdirectory=opentelemetry-api" \
427+
"{env:CORE_REPO}#egg=opentelemetry-semantic-conventions&subdirectory=opentelemetry-semantic-conventions" \
428+
"{env:CORE_REPO}#egg=opentelemetry-instrumentation&subdirectory=opentelemetry-instrumentation" \
429+
"{env:CORE_REPO}#egg=opentelemetry-sdk&subdirectory=opentelemetry-sdk" \
430+
"{env:CORE_REPO}#egg=opentelemetry-test&subdirectory=tests/util" \
425431
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-asyncpg \
426432
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-celery \
427433
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-dbapi \
@@ -432,7 +438,7 @@ commands_pre =
432438
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-sqlalchemy \
433439
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-aiopg \
434440
-e {toxinidir}/instrumentation/opentelemetry-instrumentation-redis \
435-
-e {toxinidir}/opentelemetry-python-core/exporter/opentelemetry-exporter-opencensus
441+
"{env:CORE_REPO}#egg=opentelemetry-exporter-opencensus&subdirectory=exporter/opentelemetry-exporter-opencensus"
436442
docker-compose up -d
437443
python check_availability.py
438444

0 commit comments

Comments
 (0)