Skip to content

Drop Python 3.9 support#4412

Merged
xrmx merged 12 commits into
open-telemetry:mainfrom
emdneto:py39-drop
Apr 13, 2026
Merged

Drop Python 3.9 support#4412
xrmx merged 12 commits into
open-telemetry:mainfrom
emdneto:py39-drop

Conversation

@emdneto

@emdneto emdneto commented Apr 10, 2026

Copy link
Copy Markdown
Member

@emdneto emdneto moved this to Ready for review in Python PR digest Apr 10, 2026
@github-project-automation github-project-automation Bot moved this from Ready for review to Approved PRs in Python PR digest Apr 13, 2026
@xrmx

xrmx commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

I think you missed instrumentation/opentelemetry-instrumentation-flask/tests/test_flask_compatibility.py:301: sys.version_info < (3, 10),

emdneto added 2 commits April 13, 2026 10:58
Signed-off-by: emdneto <[email protected]>
Signed-off-by: emdneto <[email protected]>
@xrmx
xrmx enabled auto-merge (squash) April 13, 2026 14:40
@xrmx
xrmx disabled auto-merge April 13, 2026 14:40
@xrmx
xrmx merged commit a912524 into open-telemetry:main Apr 13, 2026
750 checks passed
@github-project-automation github-project-automation Bot moved this from Approved PRs to Done in Python PR digest Apr 13, 2026
shuningc pushed a commit to shuningc/opentelemetry-python-contrib that referenced this pull request Apr 16, 2026
* Drop Python 3.9 support

Signed-off-by: emdneto <[email protected]>

* generate-workflows

Signed-off-by: emdneto <[email protected]>

* fixes

Signed-off-by: emdneto <[email protected]>

* remove extra reference to pypy310

Signed-off-by: emdneto <[email protected]>

* changelog

Signed-off-by: emdneto <[email protected]>

* fix flask tests

Signed-off-by: emdneto <[email protected]>

* fix google-genai tests

Signed-off-by: emdneto <[email protected]>

* fix google-genai tests

Signed-off-by: emdneto <[email protected]>

* fix

Signed-off-by: emdneto <[email protected]>

* remove unused _ensure_gzip_single_response

Signed-off-by: emdneto <[email protected]>

---------

Signed-off-by: emdneto <[email protected]>
Co-authored-by: Riccardo Magliocchetti <[email protected]>
aabmass pushed a commit that referenced this pull request Apr 16, 2026
* linting fix

* Updating changelog

* Updating changelog PR number

* Removing embedding events emission

* Refatoring and adding input token metric for Embedding invocation

* Merging and removing unused import

* build(deps): bump aiohttp from 3.13.3 to 3.13.4 (#4386)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Revert "Build list of required jobs in generate-workflow (#4326)" (#4413)

This reverts commit 22879d6.

Now that we have just one job to check we don't need to build the list anymore.

* Drop Python 3.9 support (#4412)

* Drop Python 3.9 support

Signed-off-by: emdneto <[email protected]>

* generate-workflows

Signed-off-by: emdneto <[email protected]>

* fixes

Signed-off-by: emdneto <[email protected]>

* remove extra reference to pypy310

Signed-off-by: emdneto <[email protected]>

* changelog

Signed-off-by: emdneto <[email protected]>

* fix flask tests

Signed-off-by: emdneto <[email protected]>

* fix google-genai tests

Signed-off-by: emdneto <[email protected]>

* fix google-genai tests

Signed-off-by: emdneto <[email protected]>

* fix

Signed-off-by: emdneto <[email protected]>

* remove unused _ensure_gzip_single_response

Signed-off-by: emdneto <[email protected]>

---------

Signed-off-by: emdneto <[email protected]>
Co-authored-by: Riccardo Magliocchetti <[email protected]>

* Add AGENTS.md with project structure and commands (#4233)

* Add CLAUDE.md with project structure and commands

* Add AGENTS.md symlink to CLAUDE.md

* Move guidance to AGENTS.md and address review feedback

- Move main content from CLAUDE.md to AGENTS.md so all AI agents
  (not only Claude) pick up the guidance; CLAUDE.md now just references
  it via `@AGENTS.md`.
- Add general rules, PR scoping, and `Assisted-by:` commit trailer
  guidance (inspired by the Collector's AGENTS.md).
- Clarify that only instrumentation packages live under
  `src/opentelemetry/instrumentation/{name}/`; other package types use
  their own namespace.

---------

Co-authored-by: Riccardo Magliocchetti <[email protected]>

* scripts: drop update_sha (#4430)

It's buggy and unused.

* Fix pylint false positives for ThreadPoolExecutor (#4244)

* Bump pylint to 4.0.5 to fix Python 3.14 concurrent.futures false positives

* Fix too-many-positional-arguments pylint failures - Add max-positional-arguments=10, Add pylint: disable=too-many-positional-arguments to functions that legitimately exceed the limit

* Bump max-positional-arguments to 12 and remove unnecessary disable comments

* Address review comments: fix CHANGELOG, remove stale pylintrc comment, add openai-agents disable

* Fix formatting: restore blank line in CHANGELOG and remove extra blank line in .pylintrc

* Update processor.py

* Update test_botocore_bedrock.py

---------

Co-authored-by: Riccardo Magliocchetti <[email protected]>

* feat(util-genai): refactor and make API smaller and more user-friendly (#4391)

* Refactor public API on GenAI utils

* more lint

* review feedback

* update tests to use named params

* address some of the comments

* up

* fix failing checks and clean up imports

* lint

* lint

* fix lint

* replace @deprecated with docstring info to avoid warnings for users

* up

* common code for context manager

* Adding metrics call for Embedding type after refactoring

* Updating metrics tests with embedding

* Adding fix for markdown-link-check

---------

Signed-off-by: dependabot[bot] <[email protected]>
Signed-off-by: emdneto <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Riccardo Magliocchetti <[email protected]>
Co-authored-by: Emídio Neto <[email protected]>
Co-authored-by: Marcelo Trylesinski <[email protected]>
Co-authored-by: Sri Kaaviya <[email protected]>
Co-authored-by: Liudmila Molkova <[email protected]>
@tammy-baylis-swi tammy-baylis-swi mentioned this pull request May 8, 2026
10 tasks
liustve added a commit to aws-observability/aws-otel-python-instrumentation that referenced this pull request Jun 17, 2026
Automated update of OpenTelemetry dependencies.

**Build Status:** ❌
[failure](https://github.com/aws-observability/aws-otel-python-instrumentation/actions/runs/27184408784)

**Updated versions:**
- [OpenTelemetry
Python](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.42.1):
1.42.1
- [OpenTelemetry
Contrib](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.63b1):
0.63b1
-
[opentelemetry-sdk-extension-aws](https://pypi.org/project/opentelemetry-sdk-extension-aws/2.1.0/):
2.1.0
-
[opentelemetry-propagator-aws-xray](https://pypi.org/project/opentelemetry-propagator-aws-xray/1.0.2/):
1.0.2

**Upstream releases with breaking changes:**
Note: the mechanism to detect upstream breaking changes is not perfect.
Be sure to check all new releases and understand if any additional
changes need to be addressed.


**opentelemetry-python-contrib:**
- [Version
1.41.0/0.62b0](https://github.com/open-telemetry/opentelemetry-python-contrib/releases/tag/v0.62b0)

*Description of changes:*

- Drops the `opentelemetry-instrumentation-boto` runtime dependency
(legacy boto2 instrumentation), removed entirely upstream in:
open-telemetry/opentelemetry-python-contrib#4303

- Drops Python 3.9 support to match upstream's new minimum (Python
≥3.10): open-telemetry/opentelemetry-python#5076
(core) and
open-telemetry/opentelemetry-python-contrib#4412
(contrib)

- Switches `from importlib_metadata import version` to stdlib `from
importlib.metadata import version` after upstream dropped the
third-party `importlib-metadata` package from `opentelemetry-api`:
open-telemetry/opentelemetry-python#3234

- Refactors the botocore patches (`_botocore_patches.py`) to use the new
`ExtensionRegistry` API. Upstream split `_KNOWN_EXTENSIONS` into
`_BOTOCORE_EXTENSIONS` + `_AIOBOTOCORE_EXTENSIONS`, removed
`_find_extension`, and moved `_safe_invoke` to
`opentelemetry.instrumentation.botocore.utils` as part of adding
aiobotocore instrumentation:
open-telemetry/opentelemetry-python-contrib#4049

- Removes the Starlette ASGI `suppress_http_instrumentation` patch
(which the existing ADOT TODO already flagged) since the ASGI middleware
now natively honors `suppress_http_instrumentation` upstream:
open-telemetry/opentelemetry-python-contrib#4375

- Adapts the configurator tests to upstream's renamed
`BaggageSpanProcessor._baggage_key_predicate` → `_predicates` (now a
list of callables, after the constructor was reworked to accept either a
single predicate or a sequence):
open-telemetry/opentelemetry-python-contrib#4371

- Adapts `test_otlp_attribute_vs_body_types` to upstream's
`_VALID_ANY_VALUE_TYPES` switching `typing.Mapping`/`typing.Sequence` to
`collections.abc.Mapping`/`collections.abc.Sequence`:
open-telemetry/opentelemetry-python#5133

- Bumps the mysqlclient contract-test pin from `2.2.4` to `2.2.8` and
updates the matching `db.name` assertion. The 0.62b0 dbapi
semantic-convention migration
(open-telemetry/opentelemetry-python-contrib#4109)
added an empty-string filter inside `_set_db_name`, which exposed a
latent gap: mysqlclient < 2.2.7 didn't expose a Python-level `conn.db`
attribute (added upstream in
PyMySQL/mysqlclient#752, shipped in mysqlclient
2.2.7), so OTel's dbapi instrumentation defaulted `database` to `""` and
the empty value used to land on the span unconditionally. After 0.62b0
the empty value is dropped, so the assertion `db.name == ""` now fails
with "key not found". Bumping mysqlclient lets `conn.db` flow through as
the actual database name (`testdb`) so the assertion becomes meaningful.


By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice.

---------

Co-authored-by: github-actions <[email protected]>
Co-authored-by: Steve Liu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

It's time to drop Python 3.9

9 participants