Skip to content

Commit 9dadbb9

Browse files
authored
Drop Python 3.8 Support in ADOT SDK (#381)
## What does this pull request do? Removes Python 3.8 support in our ADOT SDK since it has reached 6 months past EoL, which is the duration that upstream OTel commits to supporting. Found all references to Python 3.8 via [GitHub repo search](https://github.com/search?q=repo%3Aaws-observability%2Faws-otel-python-instrumentation%203.8&type=code). By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
1 parent b6b7cf8 commit 9dadbb9

File tree

14 files changed

+14
-48
lines changed

14 files changed

+14
-48
lines changed

.github/workflows/application-signals-e2e-test.yml

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,6 @@ jobs:
4646
# DEFAULT SETTING: {Python Version}, EC2, AMD64, AL2
4747
#
4848

49-
default-py38-amd64:
50-
needs: [ upload-main-build ]
51-
uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-ec2-default-test.yml@main
52-
secrets: inherit
53-
with:
54-
aws-region: us-east-1
55-
caller-workflow-name: 'main-build'
56-
python-version: '3.8'
57-
cpu-architecture: 'x86_64'
58-
staging-wheel-name: ${{ inputs.staging-wheel-name }}
59-
6049
default-py39-amd64:
6150
needs: [ upload-main-build ]
6251
uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-ec2-default-test.yml@main
@@ -106,16 +95,6 @@ jobs:
10695
# DEFAULT SETTING: {Python Version}, EKS, AMD64, AL2
10796
#
10897

109-
eks-py38-amd64:
110-
uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-eks-test.yml@main
111-
secrets: inherit
112-
with:
113-
aws-region: us-east-1
114-
test-cluster-name: 'e2e-python-adot-test'
115-
adot-image-name: ${{ inputs.adot-image-name }}
116-
caller-workflow-name: 'main-build'
117-
python-version: '3.8'
118-
11998
eks-py39-amd64:
12099
if: ${{ always() }}
121100
needs: eks-py38-amd64

.github/workflows/pr_build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
strategy:
1616
fail-fast: false # ensures the entire test matrix is run, even if one permutation fails
1717
matrix:
18-
python-version: ["3.8", "3.9", "3.10", "3.11"]
18+
python-version: ["3.9", "3.10", "3.11"]
1919
steps:
2020
- name: Checkout Repo @ SHA - ${{ github.sha }}
2121
uses: actions/checkout@v4

Dockerfile

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,7 @@ ADD aws-opentelemetry-distro/ ./aws-opentelemetry-distro/
1818
# * https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/azure-functions/recover-python-functions.md#troubleshoot-cannot-import-cygrpc
1919
RUN sed -i "/opentelemetry-exporter-otlp-proto-grpc/d" ./aws-opentelemetry-distro/pyproject.toml
2020

21-
# urllib3 recently made a release that drops support for Python 3.8
22-
# Our sdk depends on botocore which pulls in the version of urllib3 based Python runtime it detects.
23-
# The rule is that if current pip command version is > 3.9 botocore will pick up the latest urllib3,
24-
# otherwise it picks up the older urllib3 that is compatible with Python 3.8.
25-
# https://github.com/boto/botocore/blob/develop/requirements-docs.txt
26-
# Since this Dockerfile currently uses the fixed Python 3.11 base image to pull the required dependencies,
27-
# EKS and ECS applications will encounter a runtime error for Python 3.8 compatibility.
28-
# Our fix is to temporarily restrict the urllib3 version to one that works for all supported Python versions
29-
# that we currently commit to support (notably 3.8).
30-
# We also pin the setuptools version for similar issues with the library dropping 3.8 support.
31-
# https://github.com/pypa/setuptools/blame/main/pkg_resources/__init__.py#L24
32-
# TODO: Remove these temporary workarounds once we deprecate Python 3.8 support since it has reached end-of-life.
33-
RUN mkdir workspace && pip install setuptools==75.2.0 urllib3==2.2.3 --target workspace ./aws-opentelemetry-distro
21+
RUN mkdir workspace && pip install --target workspace ./aws-opentelemetry-distro
3422

3523
# Stage 2: Build the cp-utility binary
3624
FROM public.ecr.aws/docker/library/rust:1.82 as builder

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ This project is licensed under the Apache-2.0 License.
3535
## Notices
3636

3737
### Python Version Support
38-
This project ensures compatibility with the following supported Python versions: 3.8, 3.9, 3.10, 3.11, 3.12
38+
This project ensures compatibility with the following supported Python versions: 3.9, 3.10, 3.11, 3.12
3939

4040
### Note on Amazon CloudWatch Application Signals
4141
[Amazon CloudWatch Application Signals](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Application-Monitoring-Sections.html) components are designed to seamlessly work with all library instrumentations offered by [OpenTelemetry Python auto-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib/blob/main/instrumentation/README.md). While upstream OpenTelemetry Python instrumentations are in beta, Application Signals components are stable, production ready and have also been tested for popular libraries/frameworks such as [Django, Boto3, and others](https://github.com/aws-observability/aws-otel-python-instrumentation/tree/main/contract-tests/images/applications). We will prioritize backward compatibility for Application Signals components, striving to ensure that they remain functional even in the face of potential breaking changes introduced by OpenTelemetry upstream libraries. Please [raise an issue](https://github.com/aws-observability/aws-otel-python-instrumentation/blob/main/CONTRIBUTING.md#reporting-bugsfeature-requests) if you notice Application Signals doesn't work for a particular OpenTelemetry supported library.

aws-opentelemetry-distro/pyproject.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dynamic = ["version"]
88
description = "AWS OpenTelemetry Python Distro"
99
readme = "README.rst"
1010
license = "Apache-2.0"
11-
requires-python = ">=3.8"
11+
requires-python = ">=3.9"
1212
authors = [
1313
{ name = "Amazon Web Services" },
1414
]
@@ -18,7 +18,6 @@ classifiers = [
1818
"License :: OSI Approved :: Apache Software License",
1919
"Programming Language :: Python",
2020
"Programming Language :: Python :: 3",
21-
"Programming Language :: Python :: 3.8",
2221
"Programming Language :: Python :: 3.9",
2322
"Programming Language :: Python :: 3.10",
2423
"Programming Language :: Python :: 3.11",

contract-tests/images/applications/botocore/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "botocore-server"
33
description = "Simple server that relies on botocore library"
44
version = "1.0.0"
55
license = "Apache-2.0"
6-
requires-python = ">=3.8"
6+
requires-python = ">=3.9"

contract-tests/images/applications/django/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "django-server"
33
description = "Simple server that relies on django library"
44
version = "1.0.0"
55
license = "Apache-2.0"
6-
requires-python = ">=3.8"
6+
requires-python = ">=3.9"

contract-tests/images/applications/mysql-connector/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "mysql-connector-server"
33
description = "Simple server that relies on mysql-connector library"
44
version = "1.0.0"
55
license = "Apache-2.0"
6-
requires-python = ">=3.8"
6+
requires-python = ">=3.9"

contract-tests/images/applications/mysqlclient/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "mysqlclient-server"
33
description = "Simple server that relies on mysqlclient library"
44
version = "1.0.0"
55
license = "Apache-2.0"
6-
requires-python = ">=3.8"
6+
requires-python = ">=3.9"

contract-tests/images/applications/psycopg2/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ name = "psycopg2-server"
33
description = "Simple server that relies on psycopg2 library"
44
version = "1.0.0"
55
license = "Apache-2.0"
6-
requires-python = ">=3.8"
6+
requires-python = ">=3.9"

0 commit comments

Comments
 (0)