Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

backoff 2.0.x update blocked by opentelemetry-exporter-otlp #2693

Closed
jvtm opened this issue May 16, 2022 · 4 comments · Fixed by #2726
Closed

backoff 2.0.x update blocked by opentelemetry-exporter-otlp #2693

jvtm opened this issue May 16, 2022 · 4 comments · Fixed by #2726
Labels
bug Something isn't working

Comments

@jvtm
Copy link

jvtm commented May 16, 2022

Describe your environment

  • Python 3.8.12, 3.9.12, 3.10.4 (matrix build)
  • Poetry 1.1.13
  • Private package X depends on
    • backoff
    • opentelemetry-api
    • opentelemetry-sdk
    • opentelemetry-exporter-otlp
  • Renovate bot trying to apply the backoff major version update from 1.x series to 2.0.x
  • Other additional dependencies already updated to backoff 2.0.x series, resulting in failing builds and deployments

Steps to reproduce

  1. Create pyproject.toml:
[tool.poetry]
name = "boffdep"
version = "1.0.0"
description = "backoff 2.x vs opentelemetry"
authors = []

[tool.poetry.dependencies]
python = "^3.10"
backoff = "^2.0.0"
opentelemetry-api = "^1.11.0"
opentelemetry-sdk = "^1.11.0"
opentelemetry-exporter-otlp = "^1.11.0"

[build-system]
requires = ["poetry_core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
  1. Run poetry install

What is the expected behavior?

Updating to / using backoff 2.0.x succeeds.

What is the actual behavior?

Poetry output:

Resolving dependencies...

  SolverProblemError

  Because no versions of opentelemetry-exporter-otlp match >1.11.0,<1.11.1 || >1.11.1,<2.0.0
   and opentelemetry-exporter-otlp (1.11.0) depends on opentelemetry-exporter-otlp-proto-http (1.11.0), opentelemetry-exporter-otlp (>=1.11.0,<1.11.1 || >1.11.1,<2.0.0) requires opentelemetry-exporter-otlp-proto-http (1.11.0).
  And because opentelemetry-exporter-otlp-proto-http (1.11.0) depends on backoff (>=1.10.0,<2.0.0), opentelemetry-exporter-otlp (>=1.11.0,<1.11.1 || >1.11.1,<2.0.0) requires backoff (>=1.10.0,<2.0.0).
  And because opentelemetry-exporter-otlp (1.11.1) depends on opentelemetry-exporter-otlp-proto-http (1.11.1)
   and opentelemetry-exporter-otlp-proto-http (1.11.1) depends on backoff (>=1.10.0,<2.0.0), opentelemetry-exporter-otlp (>=1.11.0,<2.0.0) requires backoff (>=1.10.0,<2.0.0).
  So, because boffdep depends on both backoff (^2.0.0) and opentelemetry-exporter-otlp (^1.11.0), version solving failed.

Additional context

Backoff 2.0.x release dropped Python 3.6 support.
https://github.com/litl/backoff/blob/master/CHANGELOG.md#v200---2022-04-26

Some Opentelemery Python components depend on backoff >= 1.10.0, < 2.0.0.

Previous change:
b2e9387

README states:

We remove support for old Python versions 6 months after they reach their end of life.
https://github.com/open-telemetry/opentelemetry-python#python-version-support-addition-and-removal

Python 3.6 reached EOL 2021-12-23, which means opentelemetry-python support for it ends in about five weeks from now.

-> Just wait? Or could the dependency be loosened (for fresh Python versions)?

@jvtm jvtm added the bug Something isn't working label May 16, 2022
@srikanthccv
Copy link
Member

If there are no breaking changes with backoff 2.0 and it works with all environments, we can loosed the dependency earlier.

@jvtm
Copy link
Author

jvtm commented May 16, 2022

If there are no breaking changes with backoff 2.0 and it works with all environments, we can loosed the dependency earlier.

According to backoff changelog it's just:

  • dropping Python 3.6 support
  • adding Python 3.10 support
  • improving type hints

https://github.com/litl/backoff/blob/master/CHANGELOG.md

@srikanthccv
Copy link
Member

Does it work with python3.6?

@musicinmybrain
Copy link
Contributor

Does it work with python3.6?

They intentionally dropped Python 3.6 support in 2.0, although there might not be any actual incompatible changes.

If you still need to support Python 3.6 (which, as you probably know, is at end-of-life), you could still remove the upper bound on backoff for later Pythons, something like:

[options]
python_requires = >=3.6
install_requires =
    backoff >= 1.10.0, < 2.0.0; python_version<'3.7'
    backoff >= 1.10.0; python_version>='3.7'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants