diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5d7277e910c..4af72ac18a3 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ env: # Otherwise, set variable to the commit of your branch on # opentelemetry-python-contrib which is compatible with these Core repo # changes. - CONTRIB_REPO_SHA: 1e7ea92f2e4df1ee8cd4b24ce4fa1dcefa20347a + CONTRIB_REPO_SHA: 23bfe9fcadc1e205fbce1b6cf58fc3004eecace3 # This is needed because we do not clone the core repo in contrib builds anymore. # When running contrib builds as part of core builds, we use actions/checkout@v2 which # does not set an environment variable (simply just runs tox), which is different when @@ -23,7 +23,6 @@ jobs: build: env: # We use these variables to convert between tox and GHA version literals - py36: 3.6 py37: 3.7 py38: 3.8 py39: 3.9 @@ -34,7 +33,7 @@ jobs: strategy: fail-fast: false # ensures the entire test matrix is run, even if one permutation fails matrix: - python-version: [ py36, py37, py38, py39, py310, pypy3 ] + python-version: [ py37, py38, py39, py310, pypy3 ] package: ["api", "sdk", "semantic", "getting", "shim", "exporter", "protobuf", "propagator"] os: [ ubuntu-20.04, windows-2019 ] steps: @@ -55,11 +54,6 @@ jobs: .tox ~/.cache/pip key: v3-tox-cache-${{ env.RUN_MATRIX_COMBINATION }}-${{ hashFiles('tox.ini', 'dev-requirements.txt') }}-core - # tox fails on windows and Python3.6 when tox dir is reused between builds so we remove it - - name: fix for windows + py3.6 - if: ${{ matrix.os == 'windows-2019' && matrix.python-version == 'py36' }} - shell: pwsh - run: Remove-Item .\.tox\ -Force -Recurse -ErrorAction Ignore - name: Windows does not let git check out files with long names if: ${{ matrix.os == 'windows-2019'}} run: git config --system core.longpaths true @@ -117,17 +111,17 @@ jobs: run: tox -e ${{ matrix.tox-environment }} # Contrib unit test suite in order to ensure changes in core do not break anything in contrib. - # We only run contrib unit tests on the oldest supported Python version (3.6) as running the same tests + # We only run contrib unit tests on the oldest supported Python version (3.7) as running the same tests # on all versions is somewhat redundant. contrib-build: env: # We use these variables to convert between tox and GHA version literals - py36: 3.6 + py37: 3.7 runs-on: ${{ matrix.os }} strategy: fail-fast: false # ensures the entire test matrix is run, even if one permutation fails matrix: - python-version: [ py36 ] + python-version: [ py37 ] package: ["instrumentation", "exporter"] os: [ ubuntu-20.04] steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index 9024086922c..a4af2ef82ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Remove support for 3.6 + ([#2763](https://github.com/open-telemetry/opentelemetry-python/pull/2763)) - Update PeriodicExportingMetricReader to never call export() concurrently ([#2873](https://github.com/open-telemetry/opentelemetry-python/pull/2873)) - Add param for `indent` size to `LogRecord.to_json()` @@ -14,7 +16,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix: Remove `LogEmitter.flush()` to align with OTel Log spec ([#2863](https://github.com/open-telemetry/opentelemetry-python/pull/2863)) -## [1.12.0-0.33b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.12.0-0.33b0) - 2022-08-08 +## [1.12.0-0.33b0](https://github.com/open-telemetry/opentelemetry-python/releases/tag/v1.12.0) - 2022-08-08 - Add `force_flush` method to metrics exporter ([#2852](https://github.com/open-telemetry/opentelemetry-python/pull/2852)) diff --git a/README.md b/README.md index 9a060129db2..d41ba8a9c08 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ This page describes the Python [OpenTelemetry](https://opentelemetry.io/) implementation. OpenTelemetry is an observability framework for cloud-native software. ## Requirements -Unless otherwise noted, all published artifacts support Python 3.6 or higher. See CONTRIBUTING.md for additional instructions for building this project for development. +Unless otherwise noted, all published artifacts support Python 3.7 or higher. See CONTRIBUTING.md for additional instructions for building this project for development. ## Getting started diff --git a/docs/examples/error_handler/error_handler_0/setup.cfg b/docs/examples/error_handler/error_handler_0/setup.cfg index 9eced88d7c3..6f14742b626 100644 --- a/docs/examples/error_handler/error_handler_0/setup.cfg +++ b/docs/examples/error_handler/error_handler_0/setup.cfg @@ -25,14 +25,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/docs/examples/error_handler/error_handler_1/setup.cfg b/docs/examples/error_handler/error_handler_1/setup.cfg index 8d09f423db1..7b31bc84ce6 100644 --- a/docs/examples/error_handler/error_handler_1/setup.cfg +++ b/docs/examples/error_handler/error_handler_1/setup.cfg @@ -25,14 +25,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-jaeger-proto-grpc/setup.cfg b/exporter/opentelemetry-exporter-jaeger-proto-grpc/setup.cfg index 36a5d2b27e3..be0e897ef36 100644 --- a/exporter/opentelemetry-exporter-jaeger-proto-grpc/setup.cfg +++ b/exporter/opentelemetry-exporter-jaeger-proto-grpc/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-jaeger-thrift/setup.cfg b/exporter/opentelemetry-exporter-jaeger-thrift/setup.cfg index 8f55cd34d4b..23cde387a4b 100644 --- a/exporter/opentelemetry-exporter-jaeger-thrift/setup.cfg +++ b/exporter/opentelemetry-exporter-jaeger-thrift/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-jaeger/setup.cfg b/exporter/opentelemetry-exporter-jaeger/setup.cfg index 5498969bd30..890f99561e2 100644 --- a/exporter/opentelemetry-exporter-jaeger/setup.cfg +++ b/exporter/opentelemetry-exporter-jaeger/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-opencensus/setup.cfg b/exporter/opentelemetry-exporter-opencensus/setup.cfg index dd984a23462..cf613eca3cc 100644 --- a/exporter/opentelemetry-exporter-opencensus/setup.cfg +++ b/exporter/opentelemetry-exporter-opencensus/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/setup.cfg b/exporter/opentelemetry-exporter-otlp-proto-grpc/setup.cfg index d589bd075a2..9c28be2d1fe 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/setup.cfg +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/setup.cfg @@ -28,14 +28,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/setup.cfg b/exporter/opentelemetry-exporter-otlp-proto-http/setup.cfg index 5df6d9dd643..18f029981e4 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/setup.cfg +++ b/exporter/opentelemetry-exporter-otlp-proto-http/setup.cfg @@ -28,14 +28,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-otlp/setup.cfg b/exporter/opentelemetry-exporter-otlp/setup.cfg index 04cf27218f5..91aa0818406 100644 --- a/exporter/opentelemetry-exporter-otlp/setup.cfg +++ b/exporter/opentelemetry-exporter-otlp/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-prometheus/setup.cfg b/exporter/opentelemetry-exporter-prometheus/setup.cfg index be3f16ca6f8..44df3631148 100644 --- a/exporter/opentelemetry-exporter-prometheus/setup.cfg +++ b/exporter/opentelemetry-exporter-prometheus/setup.cfg @@ -28,14 +28,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-zipkin-json/setup.cfg b/exporter/opentelemetry-exporter-zipkin-json/setup.cfg index 8e86fac2557..a0e41cf8a35 100644 --- a/exporter/opentelemetry-exporter-zipkin-json/setup.cfg +++ b/exporter/opentelemetry-exporter-zipkin-json/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py index aae4b3bb236..ada00c7c8e6 100644 --- a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py +++ b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/common_tests.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import abc -import json -import sys import unittest from typing import Dict, List @@ -478,28 +476,4 @@ def pop_and_sort(source_list, source_index, sort_key): return popped_item def assert_equal_encoded_spans(self, expected_spans, actual_spans): - if sys.version_info.major == 3 and sys.version_info.minor <= 5: - expected_spans = json.loads(expected_spans) - actual_spans = json.loads(actual_spans) - for expected_span, actual_span in zip( - expected_spans, actual_spans - ): - actual_annotations = self.pop_and_sort( - actual_span, "annotations", "timestamp" - ) - expected_annotations = self.pop_and_sort( - expected_span, "annotations", "timestamp" - ) - expected_binary_annotations = self.pop_and_sort( - expected_span, "binaryAnnotations", "key" - ) - actual_binary_annotations = self.pop_and_sort( - actual_span, "binaryAnnotations", "key" - ) - self.assertEqual(actual_span, expected_span) - self.assertEqual(actual_annotations, expected_annotations) - self.assertEqual( - actual_binary_annotations, expected_binary_annotations - ) - else: - self.assertEqual(expected_spans, actual_spans) + self.assertEqual(expected_spans, actual_spans) diff --git a/exporter/opentelemetry-exporter-zipkin-proto-http/setup.cfg b/exporter/opentelemetry-exporter-zipkin-proto-http/setup.cfg index 8382149a023..bdffdb71612 100644 --- a/exporter/opentelemetry-exporter-zipkin-proto-http/setup.cfg +++ b/exporter/opentelemetry-exporter-zipkin-proto-http/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py b/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py index aae4b3bb236..ada00c7c8e6 100644 --- a/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py +++ b/exporter/opentelemetry-exporter-zipkin-proto-http/tests/encoder/common_tests.py @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. import abc -import json -import sys import unittest from typing import Dict, List @@ -478,28 +476,4 @@ def pop_and_sort(source_list, source_index, sort_key): return popped_item def assert_equal_encoded_spans(self, expected_spans, actual_spans): - if sys.version_info.major == 3 and sys.version_info.minor <= 5: - expected_spans = json.loads(expected_spans) - actual_spans = json.loads(actual_spans) - for expected_span, actual_span in zip( - expected_spans, actual_spans - ): - actual_annotations = self.pop_and_sort( - actual_span, "annotations", "timestamp" - ) - expected_annotations = self.pop_and_sort( - expected_span, "annotations", "timestamp" - ) - expected_binary_annotations = self.pop_and_sort( - expected_span, "binaryAnnotations", "key" - ) - actual_binary_annotations = self.pop_and_sort( - actual_span, "binaryAnnotations", "key" - ) - self.assertEqual(actual_span, expected_span) - self.assertEqual(actual_annotations, expected_annotations) - self.assertEqual( - actual_binary_annotations, expected_binary_annotations - ) - else: - self.assertEqual(expected_spans, actual_spans) + self.assertEqual(expected_spans, actual_spans) diff --git a/exporter/opentelemetry-exporter-zipkin/setup.cfg b/exporter/opentelemetry-exporter-zipkin/setup.cfg index af9d84f3221..09921337ade 100644 --- a/exporter/opentelemetry-exporter-zipkin/setup.cfg +++ b/exporter/opentelemetry-exporter-zipkin/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/opentelemetry-api/setup.cfg b/opentelemetry-api/setup.cfg index c15cd53a37b..5b40671c42b 100644 --- a/opentelemetry-api/setup.cfg +++ b/opentelemetry-api/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/opentelemetry-api/src/opentelemetry/context/contextvars_context.py b/opentelemetry-api/src/opentelemetry/context/contextvars_context.py index 7afded5701d..5f606764fcc 100644 --- a/opentelemetry-api/src/opentelemetry/context/contextvars_context.py +++ b/opentelemetry-api/src/opentelemetry/context/contextvars_context.py @@ -12,15 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. from contextvars import ContextVar -from sys import version_info from opentelemetry.context.context import Context, _RuntimeContext -if version_info < (3, 7): - import aiocontextvars # type: ignore # pylint: disable=import-error - - aiocontextvars # pylint: disable=pointless-statement - class ContextVarsRuntimeContext(_RuntimeContext): """An implementation of the RuntimeContext interface which wraps ContextVar under diff --git a/opentelemetry-api/src/opentelemetry/util/_time.py b/opentelemetry-api/src/opentelemetry/util/_time.py deleted file mode 100644 index a3fd113ce3c..00000000000 --- a/opentelemetry-api/src/opentelemetry/util/_time.py +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright The OpenTelemetry Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from logging import getLogger -from sys import version_info - -if version_info.minor < 7: - getLogger(__name__).warning( # pylint: disable=logging-not-lazy - "You are using Python 3.%s. This version does not support timestamps " # pylint: disable=C0209 - "with nanosecond precision and the OpenTelemetry SDK will use " - "millisecond precision instead. Please refer to PEP 564 for more " - "information. Please upgrade to Python 3.7 or newer to use nanosecond " - "precision." % version_info.minor - ) - from time import time - - def _time_ns() -> int: - return int(time() * 1e9) - -else: - from time import time_ns - - _time_ns = time_ns diff --git a/opentelemetry-proto/setup.cfg b/opentelemetry-proto/setup.cfg index 94ec991771d..5f67d7c3e89 100644 --- a/opentelemetry-proto/setup.cfg +++ b/opentelemetry-proto/setup.cfg @@ -28,14 +28,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/opentelemetry-sdk/setup.cfg b/opentelemetry-sdk/setup.cfg index 407b06a0daf..03c31ed0c75 100644 --- a/opentelemetry-sdk/setup.cfg +++ b/opentelemetry-sdk/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py index 247e8ca7dc7..1a617ed3f0a 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/__init__.py @@ -20,6 +20,7 @@ import os import threading import traceback +from time import time_ns from typing import Any, Callable, Optional, Tuple, Union, cast from opentelemetry.sdk._logs.severity import SeverityNumber, std_to_otlp @@ -37,7 +38,6 @@ ) from opentelemetry.trace.span import TraceFlags from opentelemetry.util._providers import _load_provider -from opentelemetry.util._time import _time_ns from opentelemetry.util.types import Attributes _logger = logging.getLogger(__name__) @@ -185,9 +185,9 @@ def force_flush(self, timeout_millis: int = 30000) -> bool: True if all the log processors flushes the logs within timeout, False otherwise. """ - deadline_ns = _time_ns() + timeout_millis * 1000000 + deadline_ns = time_ns() + timeout_millis * 1000000 for lp in self._log_processors: - current_ts = _time_ns() + current_ts = time_ns() if current_ts >= deadline_ns: return False diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py index 826ba3f3d63..af0221d9914 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/export/__init__.py @@ -20,12 +20,12 @@ import sys import threading from os import linesep +from time import time_ns from typing import IO, Callable, Deque, List, Optional, Sequence from opentelemetry.context import attach, detach, set_value from opentelemetry.sdk._logs import LogData, LogProcessor, LogRecord from opentelemetry.util._once import Once -from opentelemetry.util._time import _time_ns _logger = logging.getLogger(__name__) @@ -205,9 +205,9 @@ def worker(self): if self._shutdown: break - start_ns = _time_ns() + start_ns = time_ns() self._export(flush_request) - end_ns = _time_ns() + end_ns = time_ns() # subtract the duration of this export call to the next timeout timeout = self._schedule_delay_millis / 1e3 - ( (end_ns - start_ns) / 1e9 diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py index cfb032a39bc..92c8c3ed3f9 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py @@ -15,6 +15,7 @@ from atexit import register, unregister from logging import getLogger from threading import Lock +from time import time_ns from typing import Optional, Sequence # This kind of import is needed to avoid Sphinx errors. @@ -49,7 +50,6 @@ from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.util.instrumentation import InstrumentationScope from opentelemetry.util._once import Once -from opentelemetry.util._time import _time_ns _logger = getLogger(__name__) @@ -376,12 +376,12 @@ def __init__( ) def force_flush(self, timeout_millis: float = 10_000) -> bool: - deadline_ns = _time_ns() + timeout_millis * 10**6 + deadline_ns = time_ns() + timeout_millis * 10**6 metric_reader_error = {} for metric_reader in self._sdk_config.metric_readers: - current_ts = _time_ns() + current_ts = time_ns() try: if current_ts >= deadline_ns: raise MetricsTimeoutError( @@ -413,7 +413,7 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool: return True def shutdown(self, timeout_millis: float = 30_000): - deadline_ns = _time_ns() + timeout_millis * 10**6 + deadline_ns = time_ns() + timeout_millis * 10**6 def _shutdown(): self._shutdown = True @@ -427,7 +427,7 @@ def _shutdown(): metric_reader_error = {} for metric_reader in self._sdk_config.metric_readers: - current_ts = _time_ns() + current_ts = time_ns() try: if current_ts >= deadline_ns: raise Exception( diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py index 4ada52d91b0..4cff25ae789 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/_view_instrument_match.py @@ -15,6 +15,7 @@ from logging import getLogger from threading import Lock +from time import time_ns from typing import Dict, Iterable from opentelemetry.metrics import Instrument @@ -28,7 +29,6 @@ from opentelemetry.sdk.metrics._internal.measurement import Measurement from opentelemetry.sdk.metrics._internal.point import DataPointT from opentelemetry.sdk.metrics._internal.view import View -from opentelemetry.util._time import _time_ns _logger = getLogger(__name__) @@ -40,7 +40,7 @@ def __init__( instrument: Instrument, instrument_class_aggregation: Dict[type, Aggregation], ): - self._start_time_unix_nano = _time_ns() + self._start_time_unix_nano = time_ns() self._view = view self._instrument = instrument self._attributes_aggregation: Dict[frozenset, _Aggregation] = {} diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py index 04354fc24a3..c5f4d3885e0 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py @@ -19,6 +19,7 @@ from os import environ, linesep from sys import stdout from threading import Event, Lock, RLock, Thread +from time import time_ns from typing import IO, Callable, Dict, Iterable, Optional from typing_extensions import final @@ -51,7 +52,6 @@ ) from opentelemetry.sdk.metrics._internal.point import MetricsData from opentelemetry.util._once import Once -from opentelemetry.util._time import _time_ns _logger = getLogger(__name__) @@ -497,7 +497,7 @@ def _receive_metrics( detach(token) def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None: - deadline_ns = _time_ns() + timeout_millis * 10**6 + deadline_ns = time_ns() + timeout_millis * 10**6 def _shutdown(): self._shutdown = True @@ -508,8 +508,8 @@ def _shutdown(): return self._shutdown_event.set() - self._daemon_thread.join(timeout=(deadline_ns - _time_ns()) / 10**9) - self._exporter.shutdown(timeout=(deadline_ns - _time_ns()) / 10**6) + self._daemon_thread.join(timeout=(deadline_ns - time_ns()) / 10**9) + self._exporter.shutdown(timeout=(deadline_ns - time_ns()) / 10**6) def force_flush(self, timeout_millis: float = 10_000) -> bool: super().force_flush(timeout_millis=timeout_millis) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py index 4da62b3f03f..9daf1eff461 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py @@ -16,6 +16,7 @@ from abc import ABC, abstractmethod from threading import Lock +from time import time_ns from typing import Iterable, List, Mapping # This kind of import is needed to avoid Sphinx errors. @@ -29,7 +30,6 @@ MetricReaderStorage, ) from opentelemetry.sdk.metrics._internal.point import Metric -from opentelemetry.util._time import _time_ns class MeasurementConsumer(ABC): @@ -100,13 +100,13 @@ def collect( metric_reader_storage = self._reader_storages[metric_reader] # for now, just use the defaults callback_options = CallbackOptions() - deadline_ns = _time_ns() + timeout_millis * 10**6 + deadline_ns = time_ns() + timeout_millis * 10**6 default_timeout_millis = 10000 * 10**6 for async_instrument in self._async_instruments: - remaining_time = deadline_ns - _time_ns() + remaining_time = deadline_ns - time_ns() if remaining_time < default_timeout_millis: @@ -115,7 +115,7 @@ def collect( ) measurements = async_instrument.callback(callback_options) - if _time_ns() >= deadline_ns: + if time_ns() >= deadline_ns: raise MetricsTimeoutError( "Timed out while executing callback" ) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py index 702eab4a1e4..4602b7b6bc3 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/metric_reader_storage.py @@ -14,6 +14,7 @@ from logging import getLogger from threading import RLock +from time import time_ns from typing import Dict, List from opentelemetry.metrics import ( @@ -49,7 +50,6 @@ ) from opentelemetry.sdk.metrics._internal.view import View from opentelemetry.sdk.util.instrumentation import InstrumentationScope -from opentelemetry.util._time import _time_ns _logger = getLogger(__name__) @@ -130,7 +130,7 @@ def collect(self) -> MetricsData: # streams produced by the SDK, but we still align the output timestamps # for a single instrument. - collection_start_nanos = _time_ns() + collection_start_nanos = time_ns() with self._lock: diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py index e4f67f0ff21..b930c7a9660 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py @@ -17,7 +17,7 @@ from logging import getLogger from typing import Optional, Set, Type -# FIXME import from typing when support for 3.6 is removed +# FIXME import from typing when support for 3.7 is removed from typing_extensions import final from opentelemetry.metrics import Instrument diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py index 02d3f2aabb3..76021bd576d 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/export/__init__.py @@ -13,8 +13,6 @@ # limitations under the License. # pylint: disable=unused-import -# FIXME Remove when 3.6 is no longer supported -from sys import version_info as _version_info from opentelemetry.sdk.metrics._internal.export import ( # noqa: F401 AggregationTemporality, @@ -44,7 +42,5 @@ __all__ = [] for key, value in globals().copy().items(): if not key.startswith("_"): - if _version_info.minor == 6 and key in ["DataPointT", "DataT"]: - continue value.__module__ = __name__ __all__.append(key) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py index 6d30e94ed53..51ede5e1211 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py @@ -24,6 +24,7 @@ from collections import OrderedDict from contextlib import contextmanager from os import environ +from time import time_ns from types import MappingProxyType, TracebackType from typing import ( Any, @@ -64,7 +65,6 @@ from opentelemetry.trace import SpanContext from opentelemetry.trace.status import Status, StatusCode from opentelemetry.util import types -from opentelemetry.util._time import _time_ns logger = logging.getLogger(__name__) @@ -184,9 +184,9 @@ def force_flush(self, timeout_millis: int = 30000) -> bool: True if all span processors flushed their spans within the given timeout, False otherwise. """ - deadline_ns = _time_ns() + timeout_millis * 1000000 + deadline_ns = time_ns() + timeout_millis * 1000000 for sp in self._span_processors: - current_time_ns = _time_ns() + current_time_ns = time_ns() if current_time_ns >= deadline_ns: return False @@ -286,7 +286,7 @@ class EventBase(abc.ABC): def __init__(self, name: str, timestamp: Optional[int] = None) -> None: self._name = name if timestamp is None: - self._timestamp = _time_ns() + self._timestamp = time_ns() else: self._timestamp = timestamp @@ -864,7 +864,7 @@ def start( logger.warning("Calling start() on a started span.") return self._start_time = ( - start_time if start_time is not None else _time_ns() + start_time if start_time is not None else time_ns() ) self._span_processor.on_start(self, parent_context=parent_context) @@ -877,7 +877,7 @@ def end(self, end_time: Optional[int] = None) -> None: logger.warning("Calling end() on an ended span.") return - self._end_time = end_time if end_time is not None else _time_ns() + self._end_time = end_time if end_time is not None else time_ns() self._span_processor.on_end(self._readable_span()) diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py index c574a327f09..558618c8d74 100644 --- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py +++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py @@ -20,6 +20,7 @@ import typing from enum import Enum from os import environ, linesep +from time import time_ns from typing import Optional from opentelemetry.context import ( @@ -37,7 +38,6 @@ ) from opentelemetry.sdk.trace import ReadableSpan, Span, SpanProcessor from opentelemetry.util._once import Once -from opentelemetry.util._time import _time_ns logger = logging.getLogger(__name__) @@ -273,9 +273,9 @@ def worker(self): break # subtract the duration of this export call to the next timeout - start = _time_ns() + start = time_ns() self._export(flush_request) - end = _time_ns() + end = time_ns() duration = (end - start) / 1e9 timeout = self.schedule_delay_millis / 1e3 - duration diff --git a/opentelemetry-sdk/tests/context/test_asyncio.py b/opentelemetry-sdk/tests/context/test_asyncio.py index b6012a0d7b8..7c5288a274e 100644 --- a/opentelemetry-sdk/tests/context/test_asyncio.py +++ b/opentelemetry-sdk/tests/context/test_asyncio.py @@ -14,23 +14,16 @@ import asyncio import unittest -from sys import version_info from unittest.mock import patch from opentelemetry import context +from opentelemetry.context.contextvars_context import ContextVarsRuntimeContext from opentelemetry.sdk import trace from opentelemetry.sdk.trace import export from opentelemetry.sdk.trace.export.in_memory_span_exporter import ( InMemorySpanExporter, ) -if version_info.minor < 7: - raise unittest.SkipTest("contextvars not available") - -from opentelemetry.context.contextvars_context import ( # pylint:disable=wrong-import-position - ContextVarsRuntimeContext, -) - _SPAN_NAMES = [ "test_span1", "test_span2", diff --git a/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py b/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py index bdc15eb9636..b95c1d88069 100644 --- a/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py +++ b/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import time +from time import sleep, time_ns from typing import Sequence from unittest.mock import Mock @@ -35,7 +35,6 @@ LastValueAggregation, ) from opentelemetry.test.concurrency_test import ConcurrencyTestBase -from opentelemetry.util._time import _time_ns class FakeMetricsExporter(MetricExporter): @@ -56,7 +55,7 @@ def export( timeout_millis: float = 10_000, **kwargs, ) -> MetricExportResult: - time.sleep(self.wait) + sleep(self.wait) self.metrics.extend(metrics) return True @@ -76,8 +75,8 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool: data_points=[ NumberDataPoint( attributes={}, - start_time_unix_nano=_time_ns(), - time_unix_nano=_time_ns(), + start_time_unix_nano=time_ns(), + time_unix_nano=time_ns(), value=2, ) ], @@ -93,8 +92,8 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool: data_points=[ NumberDataPoint( attributes={}, - start_time_unix_nano=_time_ns(), - time_unix_nano=_time_ns(), + start_time_unix_nano=time_ns(), + time_unix_nano=time_ns(), value=2, ) ] @@ -119,7 +118,7 @@ def _create_periodic_reader( ) def _collect(reader, timeout_millis): - time.sleep(collect_wait) + sleep(collect_wait) pmr._receive_metrics(metrics, timeout_millis) pmr._set_collect_callback(_collect) @@ -131,7 +130,7 @@ def test_ticker_called(self): exporter.export = Mock() pmr = PeriodicExportingMetricReader(exporter, export_interval_millis=1) pmr._set_collect_callback(collect_mock) - time.sleep(0.1) + sleep(0.1) self.assertTrue(collect_mock.assert_called_once) pmr.shutdown() @@ -142,7 +141,7 @@ def test_ticker_collects_metrics(self): pmr = self._create_periodic_reader( metrics_list, exporter, interval=100 ) - time.sleep(0.15) + sleep(0.15) self.assertEqual(exporter.metrics, metrics_list) pmr.shutdown() diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py index 13ccc20f10e..8b8d33faa45 100644 --- a/opentelemetry-sdk/tests/trace/test_trace.py +++ b/opentelemetry-sdk/tests/trace/test_trace.py @@ -13,12 +13,14 @@ # limitations under the License. # pylint: disable=too-many-lines + import shutil import subprocess import unittest from importlib import reload from logging import ERROR, WARNING from random import randint +from time import time_ns from typing import Optional from unittest import mock @@ -46,7 +48,6 @@ new_tracer, ) from opentelemetry.trace import Status, StatusCode -from opentelemetry.util._time import _time_ns class TestTracer(unittest.TestCase): @@ -740,7 +741,7 @@ def test_events(self): ) # event name, attributes and timestamp - now = _time_ns() + now = time_ns() root.add_event("event2", {"name": ["birthday"]}, now) mutable_list = ["original_contents"] diff --git a/opentelemetry-semantic-conventions/setup.cfg b/opentelemetry-semantic-conventions/setup.cfg index 377bb6ffdf7..383158d1c40 100644 --- a/opentelemetry-semantic-conventions/setup.cfg +++ b/opentelemetry-semantic-conventions/setup.cfg @@ -28,14 +28,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: @@ -46,4 +45,4 @@ include_package_data = True where = src [options.extras_require] -test = \ No newline at end of file +test = diff --git a/propagator/opentelemetry-propagator-b3/setup.cfg b/propagator/opentelemetry-propagator-b3/setup.cfg index ee9dbc4d155..3756ab806f9 100644 --- a/propagator/opentelemetry-propagator-b3/setup.cfg +++ b/propagator/opentelemetry-propagator-b3/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: @@ -53,4 +52,4 @@ where = src [options.entry_points] opentelemetry_propagator = b3 = opentelemetry.propagators.b3:B3SingleFormat - b3multi = opentelemetry.propagators.b3:B3MultiFormat \ No newline at end of file + b3multi = opentelemetry.propagators.b3:B3MultiFormat diff --git a/propagator/opentelemetry-propagator-jaeger/setup.cfg b/propagator/opentelemetry-propagator-jaeger/setup.cfg index 0f6c8fe2493..932f7e16478 100644 --- a/propagator/opentelemetry-propagator-jaeger/setup.cfg +++ b/propagator/opentelemetry-propagator-jaeger/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: @@ -51,4 +50,4 @@ where = src [options.entry_points] opentelemetry_propagator = - jaeger = opentelemetry.propagators.jaeger:JaegerPropagator \ No newline at end of file + jaeger = opentelemetry.propagators.jaeger:JaegerPropagator diff --git a/shim/opentelemetry-opentracing-shim/setup.cfg b/shim/opentelemetry-opentracing-shim/setup.cfg index 5edba807d9f..377b9761830 100644 --- a/shim/opentelemetry-opentracing-shim/setup.cfg +++ b/shim/opentelemetry-opentracing-shim/setup.cfg @@ -28,7 +28,6 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 @@ -36,7 +35,7 @@ classifiers = Typing :: Typed [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/shim/opentelemetry-opentracing-shim/tests/test_util.py b/shim/opentelemetry-opentracing-shim/tests/test_util.py index e9a57a9d1f0..c8f7571e77d 100644 --- a/shim/opentelemetry-opentracing-shim/tests/test_util.py +++ b/shim/opentelemetry-opentracing-shim/tests/test_util.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from time import time +from time import time, time_ns from unittest import TestCase from opentelemetry.shim.opentracing_shim.util import ( @@ -21,7 +21,6 @@ time_seconds_from_ns, time_seconds_to_ns, ) -from opentelemetry.util._time import _time_ns class TestUtil(TestCase): @@ -50,7 +49,7 @@ def test_time_seconds_to_ns(self): self.assertEqual(result, int(time_seconds * 1e9)) def test_time_seconds_from_ns(self): - time_nanoseconds = _time_ns() + time_nanoseconds = time_ns() result = time_seconds_from_ns(time_nanoseconds) self.assertEqual(result, time_nanoseconds / 1e9) diff --git a/tests/opentelemetry-test-utils/setup.cfg b/tests/opentelemetry-test-utils/setup.cfg index 90769491b19..abb338c6f66 100644 --- a/tests/opentelemetry-test-utils/setup.cfg +++ b/tests/opentelemetry-test-utils/setup.cfg @@ -26,14 +26,13 @@ classifiers = License :: OSI Approved :: Apache Software License Programming Language :: Python Programming Language :: Python :: 3 - Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.8 Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 [options] -python_requires = >=3.6 +python_requires = >=3.7 package_dir= =src packages=find_namespace: diff --git a/tox.ini b/tox.ini index d31e4adf38a..893c0d21039 100644 --- a/tox.ini +++ b/tox.ini @@ -4,61 +4,61 @@ skip_missing_interpreters = True envlist = ; Environments are organized by individual package, allowing ; for specifying supported Python versions per package. - py3{6,7,8,9,10}-opentelemetry-api + py3{7,8,9,10}-opentelemetry-api pypy3-opentelemetry-api - py3{6,7,8,9,10}-opentelemetry-protobuf + py3{7,8,9,10}-opentelemetry-protobuf pypy3-opentelemetry-protobuf - py3{6,7,8,9,10}-opentelemetry-sdk + py3{7,8,9,10}-opentelemetry-sdk pypy3-opentelemetry-sdk - py3{6,7,8,9,10}-opentelemetry-semantic-conventions + py3{7,8,9,10}-opentelemetry-semantic-conventions pypy3-opentelemetry-semantic-conventions ; docs/getting-started - py3{6,7,8,9,10}-opentelemetry-getting-started + py3{7,8,9,10}-opentelemetry-getting-started pypy3-opentelemetry-getting-started - py3{6,7,8,9,10}-opentelemetry-opentracing-shim + py3{7,8,9,10}-opentelemetry-opentracing-shim pypy3-opentelemetry-opentracing-shim - py3{6,7,8,9,10}-opentelemetry-exporter-jaeger-combined + py3{7,8,9,10}-opentelemetry-exporter-jaeger-combined - py3{6,7,8,9,10}-opentelemetry-exporter-jaeger-proto-grpc + py3{7,8,9,10}-opentelemetry-exporter-jaeger-proto-grpc - py3{6,7,8,9,10}-opentelemetry-exporter-jaeger-thrift + py3{7,8,9,10}-opentelemetry-exporter-jaeger-thrift - py3{6,7,8,9,10}-opentelemetry-exporter-opencensus + py3{7,8,9,10}-opentelemetry-exporter-opencensus ; exporter-opencensus intentionally excluded from pypy3 ; opentelemetry-exporter-otlp - py3{6,7,8,9,10}-opentelemetry-exporter-otlp-combined + py3{7,8,9,10}-opentelemetry-exporter-otlp-combined ; intentionally excluded from pypy3 - py3{6,7,8,9,10}-opentelemetry-exporter-otlp-proto-grpc + py3{7,8,9,10}-opentelemetry-exporter-otlp-proto-grpc ; intentionally excluded from pypy3 - py3{6,7,8,9,10}-opentelemetry-exporter-otlp-proto-http + py3{7,8,9,10}-opentelemetry-exporter-otlp-proto-http pypy3-opentelemetry-exporter-otlp-proto-http py3{6,7,8,9,10}-opentelemetry-exporter-prometheus pypy3-opentelemetry-exporter-prometheus ; opentelemetry-exporter-zipkin - py3{6,7,8,9,10}-opentelemetry-exporter-zipkin-combined + py3{7,8,9,10}-opentelemetry-exporter-zipkin-combined pypy3-opentelemetry-exporter-zipkin-combined - py3{6,7,8,9,10}-opentelemetry-exporter-zipkin-proto-http + py3{7,8,9,10}-opentelemetry-exporter-zipkin-proto-http pypy3-opentelemetry-exporter-zipkin-proto-http - py3{6,7,8,9,10}-opentelemetry-exporter-zipkin-json + py3{7,8,9,10}-opentelemetry-exporter-zipkin-json pypy3-opentelemetry-exporter-zipkin-json - py3{6,7,8,9,10}-opentelemetry-propagator-b3 + py3{7,8,9,10}-opentelemetry-propagator-b3 pypy3-opentelemetry-propagator-b3 - py3{6,7,8,9,10}-opentelemetry-propagator-jaeger + py3{7,8,9,10}-opentelemetry-propagator-jaeger pypy3-opentelemetry-propagator-jaeger lint @@ -111,7 +111,7 @@ changedir = commands_pre = ; Install without -e to test the actual installation - py3{6,7,8,9,10}: python -m pip install -U pip setuptools wheel + py3{7,8,9,10}: python -m pip install -U pip setuptools wheel ; Install common packages for all the tests. These are not needed in all the ; cases but it saves a lot of boilerplate in this file. opentelemetry: pip install {toxinidir}/opentelemetry-api {toxinidir}/opentelemetry-semantic-conventions {toxinidir}/opentelemetry-sdk {toxinidir}/tests/opentelemetry-test-utils