open-telemetry / opentelemetry-python

OpenTelemetry Python API and SDK
https://opentelemetry.io
Apache License 2.0
1.66k stars 568 forks source link

Some tox targets need better escaping on macOS #3988

Closed pmcollins closed 4 days ago

pmcollins commented 1 week ago

Describe your environment

OS: macOS Sonoma

What happened?

The tox targets tracecontext and getting-started use escaping that doesn't appear to work on macOS.

e.g.:

(.venv) user@C02CT31XMD6R opentelemetry-python % tox -e tracecontext                      
tracecontext installed: aiohttp==3.9.5,aiosignal==1.3.1,async-timeout==4.0.3,attrs==23.2.0,blinker==1.8.2,certifi==2024.6.2,charset-normalizer==3.3.2,click==8.1.7,Deprecated==1.2.14,Flask==2.3.3,frozenlist==1.4.1,idna==3.7,importlib_metadata==7.1.0,itsdangerous==2.2.0,Jinja2==3.1.4,MarkupSafe==2.1.5,multidict==6.0.5,-e git+ssh://git@github.com/open-telemetry/opentelemetry-python.git@754fc36a408dd45e86d4a0f820f84e692f14b4c1#egg=opentelemetry_api&subdirectory=opentelemetry-api,-e git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@593f86fd043ace5e20d52df415b687f37229b484#egg=opentelemetry_instrumentation&subdirectory=opentelemetry-instrumentation,-e git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@593f86fd043ace5e20d52df415b687f37229b484#egg=opentelemetry_instrumentation_requests&subdirectory=instrumentation/opentelemetry-instrumentation-requests,-e git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@593f86fd043ace5e20d52df415b687f37229b484#egg=opentelemetry_instrumentation_wsgi&subdirectory=instrumentation/opentelemetry-instrumentation-wsgi,-e git+ssh://git@github.com/open-telemetry/opentelemetry-python.git@754fc36a408dd45e86d4a0f820f84e692f14b4c1#egg=opentelemetry_sdk&subdirectory=opentelemetry-sdk,-e git+ssh://git@github.com/open-telemetry/opentelemetry-python.git@754fc36a408dd45e86d4a0f820f84e692f14b4c1#egg=opentelemetry_semantic_conventions&subdirectory=opentelemetry-semantic-conventions,-e git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@593f86fd043ace5e20d52df415b687f37229b484#egg=opentelemetry_util_http&subdirectory=util/opentelemetry-util-http,requests==2.32.3,typing_extensions==4.12.2,urllib3==2.2.2,Werkzeug==3.0.3,wrapt==1.16.0,yarl==1.9.4,zipp==3.19.2
tracecontext run-test-pre: PYTHONHASHSEED='2810921942'
tracecontext run-test-pre: commands[0] | pip install -e /Users/user/open-telemetry/opentelemetry-python/opentelemetry-api -e /Users/user/open-telemetry/opentelemetry-python/opentelemetry-semantic-conventions -e /Users/user/open-telemetry/opentelemetry-python/opentelemetry-sdk -e 'git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@main\'
ERROR: Could not detect requirement name for 'git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@main\', please specify one with #egg=your_package_name

[notice] A new release of pip is available: 24.0 -> 24.1
[notice] To update, run: pip install --upgrade pip
ERROR: InvocationError for command /Users/user/open-telemetry/opentelemetry-python/.tox/tracecontext/bin/pip install -e opentelemetry-api -e opentelemetry-semantic-conventions -e opentelemetry-sdk -e 'git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@main\' (exited with code 1)
____________________________________________________________________________________________________________________ summary _____________________________________________________________________________________________________________________
ERROR:   tracecontext: commands failed
(.venv) user@C02CT31XMD6R opentelemetry-python % 

Steps to Reproduce

Run run tox with the tracecontext target on a mac: % tox -e tracecontext

Expected Result

Tests execute.

Actual Result

ERROR: InvocationError for command /Users/user/open-telemetry/opentelemetry-python/.tox/tracecontext/bin/pip install -e opentelemetry-api -e opentelemetry-semantic-conventions -e opentelemetry-sdk -e 'git+https://github.com/open-telemetry/opentelemetry-python-contrib.git@main\' (exited with code 1)

Notice the trailing backslash above (main\)

Additional context

On macOS a solution is to remove the backslashes in front of the pound symbols \# in tox.ini and instead wrap the problematic arguments in quotes.

e.g. replace arguments such as {env:CONTRIB_REPO}\#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http with "{env:CONTRIB_REPO}#egg=opentelemetry-util-http&subdirectory=util/opentelemetry-util-http"

There's a similar issue in contrib.

Would you like to implement a fix?

Yes

pmcollins commented 4 days ago

Fixed by upgrading tox. Closing.