open-telemetry / open-telemetry/opentelemetry-python
No version of `opentelemetry-sdk` since version 1.0.0 can be installed with --only-final
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 2.6k
- Forks
- 1k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 19
Description
It appears that every single version of opentelemetry-sdk since (but excluding) 1.0.0 has required a pre-release version of opentelemetry-semantic-conventions -- making it impossible to install any later version of opentelemetry-sdk other than 1.0.0 when installing with the --only-final ":all:" flag.
Using --only-final ":all:" might be obviously an intentional choice that clashes with the decision to release opentelemetry-semantic-conventions exclusively as pre-releases; but since February this year with setuptools version 82.0.0 getting rid of pkg_resources, opentelemetry-api (locked to version 1.0.0 by opentelemetry-sdk being stuck on 1.0.0 when using --only-final ":all:" no longer works in environments where you can't intentionally install older versions of setuptools e.g. in GCP cloud run functions you cannot downgrade setuptools which is now deployed as version 82 or later, so any package that still relies on pkg_resources will break with no remedy other than to upgrade the package that is using pkg_resources. In this case, opentelemetry-api 1.0.0 is using pkg_resources and can't be upgraded from whilst using anything that relies on opentelemetry-sdk while using the --only-final ":all:" flag.
It would be great if it were possible to release a non-pre-release version of opentelemetry-semantic-conventions as it's the only package in my setup that is "only ever a pre-release"..
This can be circumvented by adding an exception, e.g. instead of only only-final
--only-final ":all:" --all-releases "opentelemetry-semantic-conventions"
but this is the only exception necessary and it would be nice if it weren't so.
I do appreciate that these are relatively ancient problems e.g. the version of packages from 2021, caused by new flags introduced at the start of this year -- and that it's an intentional choice to make them pre-releases which is what the new flag on pip is supposed to manage, but it's silly that there have been "stable" releases of opentelemetry-sdk frequently released over the last 5 years but they have all required specific pre-releases of opentelemetry-semantic-conventions and that this forces opentelemetry-api to be limited to 1.0.0, and it took me a few hours to track this down as the source of my problem so thought I'd raise this.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the reported dependency resolution with pip using --only-final ":all:" and inspect the dependency metadata for opentelemetry-sdk versions after 1.0.0 alongside opentelemetry-semantic-conventions releases. Done means a current stable SDK can be selected without the exception, or the supported release-policy limitation is documented clearly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- build-system, release
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100