diff --git a/.github/workflows/application-signals-e2e-test.yml b/.github/workflows/application-signals-e2e-test.yml index 99bb2fd26..5d4f87dca 100644 --- a/.github/workflows/application-signals-e2e-test.yml +++ b/.github/workflows/application-signals-e2e-test.yml @@ -46,17 +46,6 @@ jobs: # DEFAULT SETTING: {Python Version}, EC2, AMD64, AL2 # - default-py38-amd64: - needs: [ upload-main-build ] - uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-ec2-default-test.yml@main - secrets: inherit - with: - aws-region: us-east-1 - caller-workflow-name: 'main-build' - python-version: '3.8' - cpu-architecture: 'x86_64' - staging-wheel-name: ${{ inputs.staging-wheel-name }} - default-py39-amd64: needs: [ upload-main-build ] uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-ec2-default-test.yml@main @@ -106,16 +95,6 @@ jobs: # DEFAULT SETTING: {Python Version}, EKS, AMD64, AL2 # - eks-py38-amd64: - uses: aws-observability/aws-application-signals-test-framework/.github/workflows/python-eks-test.yml@main - secrets: inherit - with: - aws-region: us-east-1 - test-cluster-name: 'e2e-python-adot-test' - adot-image-name: ${{ inputs.adot-image-name }} - caller-workflow-name: 'main-build' - python-version: '3.8' - eks-py39-amd64: if: ${{ always() }} needs: eks-py38-amd64 diff --git a/.github/workflows/pr_build.yml b/.github/workflows/pr_build.yml index 965fc9caf..e866dc86d 100644 --- a/.github/workflows/pr_build.yml +++ b/.github/workflows/pr_build.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false # ensures the entire test matrix is run, even if one permutation fails matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.9", "3.10", "3.11"] steps: - name: Checkout Repo @ SHA - ${{ github.sha }} uses: actions/checkout@v4 diff --git a/Dockerfile b/Dockerfile index d946b3695..197bb5dc1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,19 +18,7 @@ ADD aws-opentelemetry-distro/ ./aws-opentelemetry-distro/ # * https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/azure-functions/recover-python-functions.md#troubleshoot-cannot-import-cygrpc RUN sed -i "/opentelemetry-exporter-otlp-proto-grpc/d" ./aws-opentelemetry-distro/pyproject.toml -# urllib3 recently made a release that drops support for Python 3.8 -# Our sdk depends on botocore which pulls in the version of urllib3 based Python runtime it detects. -# The rule is that if current pip command version is > 3.9 botocore will pick up the latest urllib3, -# otherwise it picks up the older urllib3 that is compatible with Python 3.8. -# https://github.com/boto/botocore/blob/develop/requirements-docs.txt -# Since this Dockerfile currently uses the fixed Python 3.11 base image to pull the required dependencies, -# EKS and ECS applications will encounter a runtime error for Python 3.8 compatibility. -# Our fix is to temporarily restrict the urllib3 version to one that works for all supported Python versions -# that we currently commit to support (notably 3.8). -# We also pin the setuptools version for similar issues with the library dropping 3.8 support. -# https://github.com/pypa/setuptools/blame/main/pkg_resources/__init__.py#L24 -# TODO: Remove these temporary workarounds once we deprecate Python 3.8 support since it has reached end-of-life. -RUN mkdir workspace && pip install setuptools==75.2.0 urllib3==2.2.3 --target workspace ./aws-opentelemetry-distro +RUN mkdir workspace && pip install --target workspace ./aws-opentelemetry-distro # Stage 2: Build the cp-utility binary FROM public.ecr.aws/docker/library/rust:1.82 as builder diff --git a/README.md b/README.md index 611081b58..581773b67 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ This project is licensed under the Apache-2.0 License. ## Notices ### Python Version Support -This project ensures compatibility with the following supported Python versions: 3.8, 3.9, 3.10, 3.11, 3.12 +This project ensures compatibility with the following supported Python versions: 3.9, 3.10, 3.11, 3.12 ### Note on Amazon CloudWatch Application Signals [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. diff --git a/aws-opentelemetry-distro/pyproject.toml b/aws-opentelemetry-distro/pyproject.toml index d4f9ca204..e49fffbb0 100644 --- a/aws-opentelemetry-distro/pyproject.toml +++ b/aws-opentelemetry-distro/pyproject.toml @@ -8,7 +8,7 @@ dynamic = ["version"] description = "AWS OpenTelemetry Python Distro" readme = "README.rst" license = "Apache-2.0" -requires-python = ">=3.8" +requires-python = ">=3.9" authors = [ { name = "Amazon Web Services" }, ] @@ -18,7 +18,6 @@ classifiers = [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/contract-tests/images/applications/botocore/pyproject.toml b/contract-tests/images/applications/botocore/pyproject.toml index 4773661d0..5c530ff96 100644 --- a/contract-tests/images/applications/botocore/pyproject.toml +++ b/contract-tests/images/applications/botocore/pyproject.toml @@ -3,4 +3,4 @@ name = "botocore-server" description = "Simple server that relies on botocore library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/django/pyproject.toml b/contract-tests/images/applications/django/pyproject.toml index 928ee0883..8f7685c33 100644 --- a/contract-tests/images/applications/django/pyproject.toml +++ b/contract-tests/images/applications/django/pyproject.toml @@ -3,4 +3,4 @@ name = "django-server" description = "Simple server that relies on django library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/mysql-connector/pyproject.toml b/contract-tests/images/applications/mysql-connector/pyproject.toml index f93981e16..f19ac95e8 100644 --- a/contract-tests/images/applications/mysql-connector/pyproject.toml +++ b/contract-tests/images/applications/mysql-connector/pyproject.toml @@ -3,4 +3,4 @@ name = "mysql-connector-server" description = "Simple server that relies on mysql-connector library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/mysqlclient/pyproject.toml b/contract-tests/images/applications/mysqlclient/pyproject.toml index e29cb186a..b932e6c71 100644 --- a/contract-tests/images/applications/mysqlclient/pyproject.toml +++ b/contract-tests/images/applications/mysqlclient/pyproject.toml @@ -3,4 +3,4 @@ name = "mysqlclient-server" description = "Simple server that relies on mysqlclient library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/psycopg2/pyproject.toml b/contract-tests/images/applications/psycopg2/pyproject.toml index 39dad4e72..3aa07335a 100644 --- a/contract-tests/images/applications/psycopg2/pyproject.toml +++ b/contract-tests/images/applications/psycopg2/pyproject.toml @@ -3,4 +3,4 @@ name = "psycopg2-server" description = "Simple server that relies on psycopg2 library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/pymysql/pyproject.toml b/contract-tests/images/applications/pymysql/pyproject.toml index 114400061..1ca5fcc2f 100644 --- a/contract-tests/images/applications/pymysql/pyproject.toml +++ b/contract-tests/images/applications/pymysql/pyproject.toml @@ -3,4 +3,4 @@ name = "pymysql-server" description = "Simple server that relies on pymysql library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/applications/requests/pyproject.toml b/contract-tests/images/applications/requests/pyproject.toml index 7e010fb84..9894c46bf 100644 --- a/contract-tests/images/applications/requests/pyproject.toml +++ b/contract-tests/images/applications/requests/pyproject.toml @@ -3,4 +3,4 @@ name = "requests-server" description = "Simple server that relies on requests library" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" \ No newline at end of file +requires-python = ">=3.9" diff --git a/contract-tests/images/mock-collector/pyproject.toml b/contract-tests/images/mock-collector/pyproject.toml index 76227044f..ec502d256 100644 --- a/contract-tests/images/mock-collector/pyproject.toml +++ b/contract-tests/images/mock-collector/pyproject.toml @@ -7,7 +7,7 @@ name = "mock-collector" description = "Mock Collector used by contract tests for AWS OTEL Python Instrumentation" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" +requires-python = ">=3.9" dependencies = [ "grpcio ~= 1.60.0", diff --git a/contract-tests/tests/pyproject.toml b/contract-tests/tests/pyproject.toml index ff5f8eb92..48e2b3d7b 100644 --- a/contract-tests/tests/pyproject.toml +++ b/contract-tests/tests/pyproject.toml @@ -7,7 +7,7 @@ name = "contract-tests" description = "Contract tests for AWS OTEL Python Instrumentation" version = "1.0.0" license = "Apache-2.0" -requires-python = ">=3.8" +requires-python = ">=3.9" dependencies = [ "opentelemetry-proto==1.25.0", @@ -32,4 +32,4 @@ packages = ["test/amazon"] log_cli = true log_cli_level = "INFO" log_cli_format = "%(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)" -log_cli_date_format = "%Y-%m-%d %H:%M:%S" \ No newline at end of file +log_cli_date_format = "%Y-%m-%d %H:%M:%S"