Repository: open-telemetry/opentelemetry-python (language: python)

Issue:
Investigate better tools for linting
Similar to [this](https://github.com/open-telemetry/opentelemetry-python-contrib/issues/2449)


Discussion / hints:

Fix patch:
diff --git a/.flake8 b/.flake8
deleted file mode 100644
index 8e17b0ab21a..00000000000
--- a/.flake8
+++ /dev/null
@@ -1,35 +0,0 @@
-[flake8]
-ignore =
-  # line too long, defer to black
-  E501
-
-  # allow line breaks before binary ops
-  W503
-
-  # allow line breaks after binary ops
-  W504
-
-  # allow whitespace before ':' (https://github.com/psf/black#slices)
-  E203
-
-  # conflicts with black
-  E701
-  E704
-
-exclude =
-  .bzr
-  .git
-  .hg
-  .svn
-  .tox
-  CVS
-  .venv*/
-  venv*/
-  target
-  __pycache__
-  exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/gen/
-  docs/examples/opentelemetry-example-app/src/opentelemetry_example_app/grpc/gen/
-  docs/examples/opentelemetry-example-app/build/*
-  opentelemetry-proto/build/*
-  opentelemetry-proto/src/opentelemetry/proto/
-  */build/lib/*
diff --git a/.github/workflows/generate_workflows.py b/.github/workflows/generate_workflows.py
index fa60ada6225..2b456d29423 100644
--- a/.github/workflows/generate_workflows.py
+++ b/.github/workflows/generate_workflows.py
@@ -1,10 +1,10 @@
 from pathlib import Path
 
 from generate_workflows_lib import (
-    generate_test_workflow,
-    generate_lint_workflow,
     generate_contrib_workflow,
-    generate_misc_workflow
+    generate_lint_workflow,
+    generate_misc_workflow,
+    generate_test_workflow,
 )
 
 tox_ini_path = Path(__file__).parent.parent.parent.joinpath("tox.ini")
diff --git a/.github/workflows/misc_0.yml b/.github/workflows/misc_0.yml
index a404c7930c6..e4466574fe5 100644
--- a/.github/workflows/misc_0.yml
+++ b/.github/workflows/misc_0.yml
@@ -233,3 +233,21 @@ jobs:
 
       - name: Check workflows are up to date
         run: git diff --exit-code || (echo 'Generated workflows are out of date, run "tox -e generate-workflows" and commit the changes in this PR.' && exit 1)
+
+  ruff:
+    name: ruff
+    runs-on: ubuntu-latest
+    steps:
+      - name: Checkout repo @ SHA - ${{ github.sha }}
+        uses: actions/checkout@v4
+
+      - name: Set up Python 3.10
+        uses: actions/setup-python@v5
+        with:
+          python-version: "3.10"
+
+      - name: Install tox
+        run: pip install tox
+
+      - name: Run tests
+        run: tox -e ruff
diff --git a/.isort.cfg b/.isort.cfg
deleted file mode 100644
index ab1ab74ee59..00000000000
--- a/.isort.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-[settings]
-include_trailing_comma=True
-force_grid_wrap=0
-use_parentheses=True
-line_length=79
-profile=black
-
-; 3 stands for Vertical Hanging Indent, e.g.
-; from third_party import (
-;     lib1,
-;     lib2,
-;     lib3,
-; )
-; docs: https://github.com/timothycrosley/isort#multi-line-output-modes
-multi_line_output=3
-skip=target
-skip_glob=**/gen/*,.venv*/*,venv*/*,**/proto/*,.tox/*
-known_first_party=opentelemetry,opentelemetry_example_app
-known_third_party=psutil,pytest,redis,redis_opentracing
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index b01b7ce4d7b..bf0e8f76537 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -1,14 +1,10 @@
 repos:
-  - repo: https://github.com/psf/black-pre-commit-mirror
-    rev: 24.3.0
-    hooks:
-      - id: black
-        language_version: python3.12
-  - repo: https://github.com/pycqa/isort
-    rev: 5.12.0
-    hooks:
-      - id: isort
-  - repo: https://github.com/pycqa/flake8
-    rev: '6.1.0'
-    hooks:
-    -   id: flake8
+- repo: https://github.com/astral-sh/ruff-pre-commit
+  # Ruff version.
+  rev: v0.6.9
+  hooks:
+    # Run the linter.
+    - id: ruff
+      args: ["--fix", "--show-fixes"]
+    # Run the formatter.
+    - id: ruff-format
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 81376baeba5..a2defe8b659 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -58,20 +58,15 @@ You can run `tox` with the following arguments:
   Python version
 - `tox -e spellcheck` to run a spellcheck on all the code
 - `tox -e lint-some-package` to run lint checks on `some-package`
+- `tox -e ruff` to run ruff linter and formatter checks against the entire codebase
 
-`black` and `isort` are executed when `tox -e lint` is run. The reported errors can be tedious to fix manually.
-An easier way to do so is:
-
-1. Run `.tox/lint/bin/black .`
-2. Run `.tox/lint/bin/isort .`
-
-Or you can call formatting and linting in one command by [pre-commit](https://pre-commit.com/):
+`ruff check` and `ruff format` are executed when `tox -e ruff` is run. We strongly recommend you to configure [pre-commit](https://pre-commit.com/) locally to run `ruff` automatically before each commit by installing it as git hooks. You just need to [install pre-commit](https://pre-commit.com/#install) in your environment:
 
 ```console
-$ pre-commit
+$ pip install pre-commit -c dev-requirements.txt
 ```
 
-You can also configure it to run lint tools automatically before committing with:
+and run this command inside the git repository:
 
 ```console
 $ pre-commit install
diff --git a/dev-requirements.txt b/dev-requirements.txt
index 849dec4e66c..e4228d8178c 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -1,7 +1,4 @@
 pylint==3.2.1
-flake8==6.1.0
-isort==5.12.0
-black==24.3.0
 httpretty==1.1.4
 mypy==1.9.0
 sphinx==7.1.2
@@ -20,3 +17,4 @@ psutil==5.9.6
 GitPython==3.1.41
 pre-commit==3.7.0; python_version >= '3.9'
 pre-commit==3.5.0; python_version < '3.9'
+ruff==0.6.9
diff --git a/docs/conf.py b/docs/conf.py
index 2224eedde5c..965a806d06a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -204,9 +204,7 @@
 .. |SCM_WEB| replace:: {s}
 .. |SCM_RAW_WEB| replace:: {sr}
 .. |SCM_BRANCH| replace:: {b}
-""".format(
-    s=scm_web, sr=scm_raw_web, b=branch
-)
+""".format(s=scm_web, sr=scm_raw_web, b=branch)
 
 # used to have links to repo files
 extlinks = {
diff --git a/docs/examples/auto-instrumentation/client.py b/docs/examples/auto-instrumentation/client.py
index 4f70e2b9333..0320493f94a 100644
--- a/docs/examples/auto-instrumentation/client.py
+++ b/docs/examples/auto-instrumentation/client.py
@@ -35,7 +35,6 @@
 assert len(argv) == 2
 
 with tracer.start_as_current_span("client"):
-
     with tracer.start_as_current_span("client-server"):
         headers = {}
         inject(headers)
diff --git a/docs/examples/django/client.py b/docs/examples/django/client.py
index 859fe4a9da7..d8d476902e8 100644
--- a/docs/examples/django/client.py
+++ b/docs/examples/django/client.py
@@ -33,7 +33,6 @@
 
 
 with tracer.start_as_current_span("client"):
-
     with tracer.start_as_current_span("client-server"):
         headers = {}
         inject(headers)
diff --git a/docs/examples/django/instrumentation_example/urls.py b/docs/examples/django/instrumentation_example/urls.py
index 292467155f8..fcdb2e09be8 100644
--- a/docs/examples/django/instrumentation_example/urls.py
+++ b/docs/examples/django/instrumentation_example/urls.py
@@ -26,6 +26,7 @@
     1. Import the include() function: from django.urls import include, path
     2. Add a URL to urlpatterns:  path("blog/", include("blog.urls"))
 """
+
 from django.contrib import admin
 from django.urls import include, path
 
diff --git a/docs/examples/django/manage.py b/docs/examples/django/manage.py
index bc2d44886b4..0a6f51e2596 100755
--- a/docs/examples/django/manage.py
+++ b/docs/examples/django/manage.py
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 """Django"s command-line utility for administrative tasks."""
+
 import os
 import sys
 
diff --git a/docs/examples/error_handler/error_handler_0/src/error_handler_0/__init__.py b/docs/examples/error_handler/error_handler_0/src/error_handler_0/__init__.py
index 8b42b7c70eb..ef3034bc6b9 100644
--- a/docs/examples/error_handler/error_handler_0/src/error_handler_0/__init__.py
+++ b/docs/examples/error_handler/error_handler_0/src/error_handler_0/__init__.py
@@ -21,5 +21,4 @@
 
 class ErrorHandler0(ErrorHandler, ZeroDivisionError):
     def _handle(self, error: Exception, *args, **kwargs):
-
         logger.exception("ErrorHandler0 handling a ZeroDivisionError")
diff --git a/docs/examples/error_handler/error_handler_1/src/error_handler_1/__init__.py b/docs/examples/error_handler/error_handler_1/src/error_handler_1/__init__.py
index cc63465617f..1f210a384f6 100644
--- a/docs/examples/error_handler/error_handler_1/src/error_handler_1/__init__.py
+++ b/docs/examples/error_handler/error_handler_1/src/error_handler_1/__init__.py
@@ -22,7 +22,6 @@
 # pylint: disable=too-many-ancestors
 class ErrorHandler1(ErrorHandler, IndexError, KeyError):
     def _handle(self, error: Exception, *args, **kwargs):
-
         if isinstance(error, IndexError):
             logger.exception("ErrorHandler1 handling an IndexError")
 
diff --git a/docs/examples/opentracing/rediscache.py b/docs/examples/opentracing/rediscache.py
index 9d2a51aab87..61025eac725 100644
--- a/docs/examples/opentracing/rediscache.py
+++ b/docs/examples/opentracing/rediscache.py
@@ -30,7 +30,6 @@ def __call__(self, func):
         @wraps(func)
         def inner(*args, **kwargs):
             with self.tracer.start_active_span("Caching decorator") as scope1:
-
                 # Pickle the call args to get a canonical key. Don't do this in
                 # prod!
                 key = pickle.dumps((func.__qualname__, args, kwargs))
diff --git a/exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/trace_exporter/__init__.py b/exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/trace_exporter/__init__.py
index e5d7e6239a8..0b79bbb2073 100644
--- a/exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/trace_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-opencensus/src/opentelemetry/exporter/opencensus/trace_exporter/__init__.py
@@ -144,7 +144,6 @@ def translate_to_collector(spans: Sequence[ReadableSpan]):
 
         if span.events:
             for event in span.events:
-
                 collector_annotation = trace_pb2.Span.TimeEvent.Annotation(
                     description=trace_pb2.TruncatableString(value=event.name)
                 )
diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py
index 65f94771407..4e75a6bcbe5 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py
@@ -18,31 +18,31 @@
 from itertools import count
 from typing import (
     Any,
-    Mapping,
-    Optional,
-    List,
     Callable,
-    TypeVar,
     Dict,
     Iterator,
+    List,
+    Mapping,
+    Optional,
+    TypeVar,
 )
 
-from opentelemetry.sdk.util.instrumentation import InstrumentationScope
+from opentelemetry.proto.common.v1.common_pb2 import AnyValue as PB2AnyValue
 from opentelemetry.proto.common.v1.common_pb2 import (
-    InstrumentationScope as PB2InstrumentationScope,
+    ArrayValue as PB2ArrayValue,
 )
-from opentelemetry.proto.resource.v1.resource_pb2 import (
-    Resource as PB2Resource,
+from opentelemetry.proto.common.v1.common_pb2 import (
+    InstrumentationScope as PB2InstrumentationScope,
 )
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue as PB2AnyValue
 from opentelemetry.proto.common.v1.common_pb2 import KeyValue as PB2KeyValue
 from opentelemetry.proto.common.v1.common_pb2 import (
     KeyValueList as PB2KeyValueList,
 )
-from opentelemetry.proto.common.v1.common_pb2 import (
-    ArrayValue as PB2ArrayValue,
+from opentelemetry.proto.resource.v1.resource_pb2 import (
+    Resource as PB2Resource,
 )
 from opentelemetry.sdk.trace import Resource
+from opentelemetry.sdk.util.instrumentation import InstrumentationScope
 from opentelemetry.util.types import Attributes
 
 _logger = logging.getLogger(__name__)
diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py
index 47ff0cf3e0f..b1f116135e5 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py
@@ -12,25 +12,24 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 from collections import defaultdict
-from typing import Sequence, List
+from typing import List, Sequence
 
 from opentelemetry.exporter.otlp.proto.common._internal import (
+    _encode_attributes,
     _encode_instrumentation_scope,
     _encode_resource,
     _encode_span_id,
     _encode_trace_id,
     _encode_value,
-    _encode_attributes,
 )
 from opentelemetry.proto.collector.logs.v1.logs_service_pb2 import (
     ExportLogsServiceRequest,
 )
+from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
 from opentelemetry.proto.logs.v1.logs_pb2 import (
-    ScopeLogs,
     ResourceLogs,
+    ScopeLogs,
 )
-from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
-
 from opentelemetry.sdk._logs import LogData
 
 
diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py
index b3c7b98f1db..9f2b27d5a55 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-common/src/opentelemetry/exporter/otlp/proto/common/_internal/metrics_encoder/__init__.py
@@ -12,53 +12,51 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 import logging
-
-from opentelemetry.sdk.metrics.export import (
-    MetricExporter,
-)
-from opentelemetry.sdk.metrics.view import Aggregation
 from os import environ
-from opentelemetry.sdk.metrics import (
-    Counter,
-    Histogram,
-    ObservableCounter,
-    ObservableGauge,
-    ObservableUpDownCounter,
-    UpDownCounter,
-)
+from typing import Dict
+
 from opentelemetry.exporter.otlp.proto.common._internal import (
     _encode_attributes,
     _encode_span_id,
     _encode_trace_id,
 )
-from opentelemetry.sdk.environment_variables import (
-    OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
-)
-from opentelemetry.sdk.metrics.export import (
-    AggregationTemporality,
-)
 from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (
     ExportMetricsServiceRequest,
 )
 from opentelemetry.proto.common.v1.common_pb2 import InstrumentationScope
 from opentelemetry.proto.metrics.v1 import metrics_pb2 as pb2
-from opentelemetry.sdk.metrics.export import (
-    MetricsData,
-    Gauge,
-    Histogram as HistogramType,
-    Sum,
-    ExponentialHistogram as ExponentialHistogramType,
-)
-from typing import Dict
 from opentelemetry.proto.resource.v1.resource_pb2 import (
     Resource as PB2Resource,
 )
 from opentelemetry.sdk.environment_variables import (
     OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
+    OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
+)
+from opentelemetry.sdk.metrics import (
+    Counter,
+    Histogram,
+    ObservableCounter,
+    ObservableGauge,
+    ObservableUpDownCounter,
+    UpDownCounter,
+)
+from opentelemetry.sdk.metrics.export import (
+    AggregationTemporality,
+    Gauge,
+    MetricExporter,
+    MetricsData,
+    Sum,
+)
+from opentelemetry.sdk.metrics.export import (
+    ExponentialHistogram as ExponentialHistogramType,
+)
+from opentelemetry.sdk.metrics.export import (
+    Histogram as HistogramType,
 )
 from opentelemetry.sdk.metrics.view import (
-    ExponentialBucketHistogramAggregation,
+    Aggregation,
     ExplicitBucketHistogramAggregation,
+    ExponentialBucketHistogramAggregation,
 )
 
 _logger = logging.getLogger(__name__)
@@ -70,7 +68,6 @@ def _common_configuration(
         preferred_temporality: Dict[type, AggregationTemporality] = None,
         preferred_aggregation: Dict[type, Aggregation] = None,
     ) -> None:
-
         MetricExporter.__init__(
             self,
             preferred_temporality=self._get_temporality(preferred_temporality),
@@ -80,7 +77,6 @@ def _common_configuration(
     def _get_temporality(
         self, preferred_temporality: Dict[type, AggregationTemporality]
     ) -> Dict[type, AggregationTemporality]:
-
         otel_exporter_otlp_metrics_temporality_preference = (
             environ.get(
                 OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE,
@@ -137,7 +133,6 @@ def _get_aggregation(
         self,
         preferred_aggregation: Dict[type, Aggregation],
     ) -> Dict[type, Aggregation]:
-
         otel_exporter_otlp_metrics_default_histogram_aggregation = environ.get(
             OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION,
             "explicit_bucket_histogram",
@@ -146,17 +141,14 @@ def _get_aggregation(
         if otel_exporter_otlp_metrics_default_histogram_aggregation == (
             "base2_exponential_bucket_histogram"
         ):
-
             instrument_class_aggregation = {
                 Histogram: ExponentialBucketHistogramAggregation(),
             }
 
         else:
-
             if otel_exporter_otlp_metrics_default_histogram_aggregation != (
                 "explicit_bucket_histogram"
             ):
-
                 _logger.warning(
                     (
                         "Invalid value for %s: %s, using explicit bucket "
@@ -306,7 +298,6 @@ def _encode_metric(metric, pb2_metric):
 
     elif isinstance(metric.data, ExponentialHistogramType):
         for data_point in metric.data.data_points:
-
             if data_point.positive.bucket_counts:
                 positive = pb2.ExponentialHistogramDataPoint.Buckets(
                     offset=data_point.positive.offset,
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py
index 07553d69d03..31976a43dac 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/__init__.py
@@ -69,6 +69,7 @@
 API
 ---
 """
+
 from .version import __version__
 
 _USER_AGENT_HEADER_VALUE = "OTel-OTLP-Exporter-Python/" + __version__
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py
index d8f2ba2efb6..8f629899d77 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py
@@ -12,10 +12,10 @@
 # limitations under the License.
 
 from os import environ
-from typing import Dict, Optional, Tuple, Union, Sequence
+from typing import Dict, Optional, Sequence, Tuple, Union
 from typing import Sequence as TypingSequence
-from grpc import ChannelCredentials, Compression
 
+from grpc import ChannelCredentials, Compression
 from opentelemetry.exporter.otlp.proto.common._log_encoder import encode_logs
 from opentelemetry.exporter.otlp.proto.grpc.exporter import (
     OTLPExporterMixin,
@@ -28,10 +28,9 @@
 from opentelemetry.proto.collector.logs.v1.logs_service_pb2_grpc import (
     LogsServiceStub,
 )
-from opentelemetry.sdk._logs import LogRecord as SDKLogRecord
 from opentelemetry.sdk._logs import LogData
+from opentelemetry.sdk._logs import LogRecord as SDKLogRecord
 from opentelemetry.sdk._logs.export import LogExporter, LogExportResult
-
 from opentelemetry.sdk.environment_variables import (
     OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE,
     OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE,
@@ -48,7 +47,6 @@ class OTLPLogExporter(
     LogExporter,
     OTLPExporterMixin[SDKLogRecord, ExportLogsServiceRequest, LogExportResult],
 ):
-
     _result = LogExportResult
     _stub = LogsServiceStub
 
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py
index b07d24e0d0e..582d083e86f 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/exporter.py
@@ -28,19 +28,15 @@
     List,
     Optional,
     Tuple,
+    TypeVar,
     Union,
 )
 from typing import Sequence as TypingSequence
-from typing import TypeVar
 from urllib.parse import urlparse
 
 from deprecated import deprecated
-
-from opentelemetry.exporter.otlp.proto.common._internal import (
-    _get_resource_data,
-    _create_exp_backoff_generator,
-)
 from google.rpc.error_details_pb2 import RetryInfo
+
 from grpc import (
     ChannelCredentials,
     Compression,
@@ -50,7 +46,10 @@
     secure_channel,
     ssl_channel_credentials,
 )
-
+from opentelemetry.exporter.otlp.proto.common._internal import (
+    _create_exp_backoff_generator,
+    _get_resource_data,
+)
 from opentelemetry.exporter.otlp.proto.grpc import (
     _OTLP_GRPC_HEADERS,
 )
@@ -61,9 +60,9 @@
 )
 from opentelemetry.proto.resource.v1.resource_pb2 import Resource  # noqa: F401
 from opentelemetry.sdk.environment_variables import (
+    OTEL_EXPORTER_OTLP_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_KEY,
-    OTEL_EXPORTER_OTLP_CERTIFICATE,
     OTEL_EXPORTER_OTLP_COMPRESSION,
     OTEL_EXPORTER_OTLP_ENDPOINT,
     OTEL_EXPORTER_OTLP_HEADERS,
@@ -306,7 +305,6 @@ def _export(
                     return self._result.SUCCESS
 
                 except RpcError as error:
-
                     if error.code() in [
                         StatusCode.CANCELLED,
                         StatusCode.DEADLINE_EXCEEDED,
@@ -316,7 +314,6 @@ def _export(
                         StatusCode.UNAVAILABLE,
                         StatusCode.DATA_LOSS,
                     ]:
-
                         retry_info_bin = dict(error.trailing_metadata()).get(
                             "google.rpc.retryinfo-bin"
                         )
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py
index 645885b6f28..c4701908e75 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/metric_exporter/__init__.py
@@ -16,18 +16,18 @@
 from os import environ
 from typing import Dict, Iterable, List, Optional, Tuple, Union
 from typing import Sequence as TypingSequence
-from grpc import ChannelCredentials, Compression
 
+from grpc import ChannelCredentials, Compression
+from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
+    OTLPMetricExporterMixin,
+)
 from opentelemetry.exporter.otlp.proto.common.metrics_encoder import (
     encode_metrics,
 )
-from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (
+from opentelemetry.exporter.otlp.proto.grpc.exporter import (  # noqa: F401
     OTLPExporterMixin,
     _get_credentials,
     environ_to_compression,
-)
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (  # noqa: F401
     get_resource_data,
 )
 from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (
@@ -50,24 +50,24 @@
     OTEL_EXPORTER_OTLP_METRICS_INSECURE,
     OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
 )
-from opentelemetry.sdk.metrics.export import (
+from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
+from opentelemetry.sdk.metrics.export import (  # noqa: F401
     AggregationTemporality,
     DataPointT,
+    Gauge,
     Metric,
     MetricExporter,
     MetricExportResult,
     MetricsData,
     ResourceMetrics,
     ScopeMetrics,
+    Sum,
 )
 from opentelemetry.sdk.metrics.export import (  # noqa: F401
-    Gauge,
-    Histogram as HistogramType,
-    Sum,
     ExponentialHistogram as ExponentialHistogramType,
 )
-from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
-    OTLPMetricExporterMixin,
+from opentelemetry.sdk.metrics.export import (  # noqa: F401
+    Histogram as HistogramType,
 )
 
 _logger = getLogger(__name__)
@@ -104,7 +104,6 @@ def __init__(
         preferred_aggregation: Dict[type, Aggregation] = None,
         max_export_batch_size: Optional[int] = None,
     ):
-
         if insecure is None:
             insecure = environ.get(OTEL_EXPORTER_OTLP_METRICS_INSECURE)
             if insecure is not None:
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py
index ce8dcaabdf7..c78c1b81bb6 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/src/opentelemetry/exporter/otlp/proto/grpc/trace_exporter/__init__.py
@@ -18,18 +18,14 @@
 from typing import Dict, Optional, Sequence, Tuple, Union
 from typing import Sequence as TypingSequence
 
-
 from grpc import ChannelCredentials, Compression
-
 from opentelemetry.exporter.otlp.proto.common.trace_encoder import (
     encode_spans,
 )
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (
+from opentelemetry.exporter.otlp.proto.grpc.exporter import (  # noqa: F401
     OTLPExporterMixin,
     _get_credentials,
     environ_to_compression,
-)
-from opentelemetry.exporter.otlp.proto.grpc.exporter import (  # noqa: F401
     get_resource_data,
 )
 from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import (
@@ -42,15 +38,17 @@
     InstrumentationScope,
 )
 from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
-    ScopeSpans,
     ResourceSpans,
+    ScopeSpans,
+    Status,
+)
+from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
     Span as CollectorSpan,
 )
-from opentelemetry.proto.trace.v1.trace_pb2 import Status  # noqa: F401
 from opentelemetry.sdk.environment_variables import (
+    OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
     OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
-    OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
     OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
     OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
     OTEL_EXPORTER_OTLP_TRACES_HEADERS,
@@ -96,7 +94,6 @@ def __init__(
         timeout: Optional[int] = None,
         compression: Optional[Compression] = None,
     ):
-
         if insecure is None:
             insecure = environ.get(OTEL_EXPORTER_OTLP_TRACES_INSECURE)
             if insecure is not None:
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py
index 2c40b39590b..b8f92bd9a87 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/__init__.py
@@ -69,11 +69,11 @@
 API
 ---
 """
+
 import enum
 
 from .version import __version__
 
-
 _OTLP_HTTP_HEADERS = {
     "Content-Type": "application/x-protobuf",
     "User-Agent": "OTel-OTLP-Exporter-Python/" + __version__,
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py
index 597b012a49a..21b877380c8 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/_log_exporter/__init__.py
@@ -17,8 +17,8 @@
 import zlib
 from io import BytesIO
 from os import environ
-from typing import Dict, Optional, Sequence
 from time import sleep
+from typing import Dict, Optional, Sequence
 
 import requests
 
@@ -26,6 +26,15 @@
     _create_exp_backoff_generator,
 )
 from opentelemetry.exporter.otlp.proto.common._log_encoder import encode_logs
+from opentelemetry.exporter.otlp.proto.http import (
+    _OTLP_HTTP_HEADERS,
+    Compression,
+)
+from opentelemetry.sdk._logs import LogData
+from opentelemetry.sdk._logs.export import (
+    LogExporter,
+    LogExportResult,
+)
 from opentelemetry.sdk.environment_variables import (
     OTEL_EXPORTER_OTLP_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
@@ -33,27 +42,17 @@
     OTEL_EXPORTER_OTLP_COMPRESSION,
     OTEL_EXPORTER_OTLP_ENDPOINT,
     OTEL_EXPORTER_OTLP_HEADERS,
-    OTEL_EXPORTER_OTLP_TIMEOUT,
-    OTEL_EXPORTER_OTLP_LOGS_ENDPOINT,
     OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE,
     OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY,
+    OTEL_EXPORTER_OTLP_LOGS_COMPRESSION,
+    OTEL_EXPORTER_OTLP_LOGS_ENDPOINT,
     OTEL_EXPORTER_OTLP_LOGS_HEADERS,
     OTEL_EXPORTER_OTLP_LOGS_TIMEOUT,
-    OTEL_EXPORTER_OTLP_LOGS_COMPRESSION,
-)
-from opentelemetry.sdk._logs import LogData
-from opentelemetry.sdk._logs.export import (
-    LogExporter,
-    LogExportResult,
-)
-from opentelemetry.exporter.otlp.proto.http import (
-    _OTLP_HTTP_HEADERS,
-    Compression,
+    OTEL_EXPORTER_OTLP_TIMEOUT,
 )
 from opentelemetry.util.re import parse_env_headers
 
-
 _logger = logging.getLogger(__name__)
 
 
@@ -64,7 +63,6 @@
 
 
 class OTLPLogExporter(LogExporter):
-
     _MAX_RETRY_TIMEOUT = 64
 
     def __init__(
@@ -163,7 +161,6 @@ def export(self, batch: Sequence[LogData]) -> LogExportResult:
         for delay in _create_exp_backoff_generator(
             max_value=self._MAX_RETRY_TIMEOUT
         ):
-
             if delay == self._MAX_RETRY_TIMEOUT:
                 return LogExportResult.FAILURE
 
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py
index 16ac042dd89..d08014c22e7 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/metric_exporter/__init__.py
@@ -14,17 +14,25 @@
 import gzip
 import logging
 import zlib
-from os import environ
-from typing import Dict, Optional, Any, Callable, List
-from typing import Sequence, Mapping  # noqa: F401
-
 from io import BytesIO
+from os import environ
 from time import sleep
+from typing import (  # noqa: F401
+    Any,
+    Callable,
+    Dict,
+    List,
+    Mapping,
+    Optional,
+    Sequence,
+)
+
+import requests
 from deprecated import deprecated
 
 from opentelemetry.exporter.otlp.proto.common._internal import (
-    _get_resource_data,
     _create_exp_backoff_generator,
+    _get_resource_data,
 )
 from opentelemetry.exporter.otlp.proto.common._internal.metrics_encoder import (
     OTLPMetricExporterMixin,
@@ -33,56 +41,52 @@
     encode_metrics,
 )
 from opentelemetry.exporter.otlp.proto.http import Compression
-from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
 from opentelemetry.proto.collector.metrics.v1.metrics_service_pb2 import (  # noqa: F401
     ExportMetricsServiceRequest,
 )
-from opentelemetry.proto.common.v1.common_pb2 import (  # noqa: F401
+from opentelemetry.proto.common.v1.common_pb2 import (  # noqa: F401  # noqa: F401
     AnyValue,
     ArrayValue,
+    InstrumentationScope,
     KeyValue,
     KeyValueList,
 )
-from opentelemetry.proto.common.v1.common_pb2 import (  # noqa: F401
-    InstrumentationScope,
-)
-from opentelemetry.proto.resource.v1.resource_pb2 import Resource  # noqa: F401
 from opentelemetry.proto.metrics.v1 import metrics_pb2 as pb2  # noqa: F401
+from opentelemetry.proto.resource.v1.resource_pb2 import Resource  # noqa: F401
+from opentelemetry.proto.resource.v1.resource_pb2 import (
+    Resource as PB2Resource,
+)
 from opentelemetry.sdk.environment_variables import (
-    OTEL_EXPORTER_OTLP_ENDPOINT,
     OTEL_EXPORTER_OTLP_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_KEY,
-    OTEL_EXPORTER_OTLP_HEADERS,
-    OTEL_EXPORTER_OTLP_TIMEOUT,
     OTEL_EXPORTER_OTLP_COMPRESSION,
-    OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
+    OTEL_EXPORTER_OTLP_ENDPOINT,
+    OTEL_EXPORTER_OTLP_HEADERS,
     OTEL_EXPORTER_OTLP_METRICS_CERTIFICATE,
     OTEL_EXPORTER_OTLP_METRICS_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_METRICS_CLIENT_KEY,
+    OTEL_EXPORTER_OTLP_METRICS_COMPRESSION,
+    OTEL_EXPORTER_OTLP_METRICS_ENDPOINT,
     OTEL_EXPORTER_OTLP_METRICS_HEADERS,
     OTEL_EXPORTER_OTLP_METRICS_TIMEOUT,
-    OTEL_EXPORTER_OTLP_METRICS_COMPRESSION,
+    OTEL_EXPORTER_OTLP_TIMEOUT,
 )
-from opentelemetry.sdk.metrics.export import (
+from opentelemetry.sdk.metrics._internal.aggregation import Aggregation
+from opentelemetry.sdk.metrics.export import (  # noqa: F401
     AggregationTemporality,
+    Gauge,
     MetricExporter,
     MetricExportResult,
     MetricsData,
+    Sum,
 )
 from opentelemetry.sdk.metrics.export import (  # noqa: F401
-    Gauge,
     Histogram as HistogramType,
-    Sum,
 )
 from opentelemetry.sdk.resources import Resource as SDKResource
 from opentelemetry.util.re import parse_env_headers
 
-import requests
-from opentelemetry.proto.resource.v1.resource_pb2 import (
-    Resource as PB2Resource,
-)
-
 _logger = logging.getLogger(__name__)
 
 
@@ -93,7 +97,6 @@
 
 
 class OTLPMetricExporter(MetricExporter, OTLPMetricExporterMixin):
-
     _MAX_RETRY_TIMEOUT = 64
 
     def __init__(
@@ -196,7 +199,6 @@ def export(
         for delay in _create_exp_backoff_generator(
             max_value=self._MAX_RETRY_TIMEOUT
         ):
-
             if delay == self._MAX_RETRY_TIMEOUT:
                 return MetricExportResult.FAILURE
 
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py
index ac69b6acde3..7bcf4b4ced1 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/__init__.py
@@ -17,8 +17,8 @@
 import zlib
 from io import BytesIO
 from os import environ
-from typing import Dict, Optional
 from time import sleep
+from typing import Dict, Optional
 
 import requests
 
@@ -28,30 +28,29 @@
 from opentelemetry.exporter.otlp.proto.common.trace_encoder import (
     encode_spans,
 )
+from opentelemetry.exporter.otlp.proto.http import (
+    _OTLP_HTTP_HEADERS,
+    Compression,
+)
 from opentelemetry.sdk.environment_variables import (
-    OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
-    OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
-    OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
-    OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
-    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
-    OTEL_EXPORTER_OTLP_TRACES_HEADERS,
-    OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
     OTEL_EXPORTER_OTLP_CERTIFICATE,
-    OTEL_EXPORTER_OTLP_COMPRESSION,
     OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE,
     OTEL_EXPORTER_OTLP_CLIENT_KEY,
+    OTEL_EXPORTER_OTLP_COMPRESSION,
     OTEL_EXPORTER_OTLP_ENDPOINT,
     OTEL_EXPORTER_OTLP_HEADERS,
     OTEL_EXPORTER_OTLP_TIMEOUT,
+    OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
+    OTEL_EXPORTER_OTLP_TRACES_CLIENT_CERTIFICATE,
+    OTEL_EXPORTER_OTLP_TRACES_CLIENT_KEY,
+    OTEL_EXPORTER_OTLP_TRACES_COMPRESSION,
+    OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
+    OTEL_EXPORTER_OTLP_TRACES_HEADERS,
+    OTEL_EXPORTER_OTLP_TRACES_TIMEOUT,
 )
 from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult
-from opentelemetry.exporter.otlp.proto.http import (
-    _OTLP_HTTP_HEADERS,
-    Compression,
-)
 from opentelemetry.util.re import parse_env_headers
 
-
 _logger = logging.getLogger(__name__)
 
 
@@ -62,7 +61,6 @@
 
 
 class OTLPSpanExporter(SpanExporter):
-
     _MAX_RETRY_TIMEOUT = 64
 
     def __init__(
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py
index a0036ecd24a..aec46da1a24 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/src/opentelemetry/exporter/otlp/proto/http/trace_exporter/encoder/__init__.py
@@ -35,10 +35,10 @@
     Resource as PB2Resource,
 )
 from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
-    ScopeSpans as PB2ScopeSpans,
+    ResourceSpans as PB2ResourceSpans,
 )
 from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
-    ResourceSpans as PB2ResourceSpans,
+    ScopeSpans as PB2ScopeSpans,
 )
 from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
     Span as PB2SPan,
@@ -46,17 +46,21 @@
 from opentelemetry.proto.trace.v1.trace_pb2 import (  # noqa: F401
     Status as PB2Status,
 )
-from opentelemetry.sdk.trace import Event  # noqa: F401
+from opentelemetry.sdk.trace import (
+    Event,  # noqa: F401
+    Resource,  # noqa: F401
+)
+from opentelemetry.sdk.trace import Span as SDKSpan  # noqa: F401
 from opentelemetry.sdk.util.instrumentation import (  # noqa: F401
     InstrumentationScope,
 )
-from opentelemetry.sdk.trace import Resource  # noqa: F401
-from opentelemetry.sdk.trace import Span as SDKSpan  # noqa: F401
-from opentelemetry.trace import Link  # noqa: F401
-from opentelemetry.trace import SpanKind  # noqa: F401
+from opentelemetry.trace import (
+    Link,  # noqa: F401
+    SpanKind,  # noqa: F401
+)
 from opentelemetry.trace.span import (  # noqa: F401
     SpanContext,
-    TraceState,
     Status,
+    TraceState,
 )
 from opentelemetry.util.types import Attributes  # noqa: F401
diff --git a/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py
index 09ca1f901e5..801d70c7b60 100644
--- a/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py
+++ b/exporter/opentelemetry-exporter-prometheus/src/opentelemetry/exporter/prometheus/__init__.py
@@ -89,14 +89,14 @@
     OTEL_EXPORTER_PROMETHEUS_PORT,
     OTEL_PYTHON_EXPERIMENTAL_DISABLE_PROMETHEUS_UNIT_NORMALIZATION,
 )
-from opentelemetry.sdk.metrics import Counter
-from opentelemetry.sdk.metrics import Histogram as HistogramInstrument
 from opentelemetry.sdk.metrics import (
+    Counter,
     ObservableCounter,
     ObservableGauge,
     ObservableUpDownCounter,
     UpDownCounter,
 )
+from opentelemetry.sdk.metrics import Histogram as HistogramInstrument
 from opentelemetry.sdk.metrics.export import (
     AggregationTemporality,
     Gauge,
@@ -302,7 +302,6 @@ def _translate_to_prometheus(
                     isinstance(metric.data, Sum)
                     and not should_convert_sum_to_gauge
                 ):
-
                     metric_family_id = "|".join(
                         [pre_metric_family_id, CounterMetricFamily.__name__]
                     )
@@ -323,7 +322,6 @@ def _translate_to_prometheus(
                     isinstance(metric.data, Gauge)
                     or should_convert_sum_to_gauge
                 ):
-
                     metric_family_id = "|".join(
                         [pre_metric_family_id, GaugeMetricFamily.__name__]
                     )
@@ -344,7 +342,6 @@ def _translate_to_prometheus(
                         metric_family_id
                     ].add_metric(labels=label_values, value=value)
                 elif isinstance(metric.data, Histogram):
-
                     metric_family_id = "|".join(
                         [pre_metric_family_id, HistogramMetricFamily.__name__]
                     )
diff --git a/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v1/__init__.py b/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v1/__init__.py
index 5272173f315..c44a2dd0af2 100644
--- a/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v1/__init__.py
+++ b/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v1/__init__.py
@@ -12,8 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Zipkin Export Encoders for JSON formats
-"""
+"""Zipkin Export Encoders for JSON formats"""
 
 from typing import Dict, List
 
diff --git a/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v2/__init__.py b/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v2/__init__.py
index ec6e53382b6..579087c4516 100644
--- a/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v2/__init__.py
+++ b/exporter/opentelemetry-exporter-zipkin-json/src/opentelemetry/exporter/zipkin/json/v2/__init__.py
@@ -12,8 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-"""Zipkin Export Encoders for JSON formats
-"""
+"""Zipkin Export Encoders for JSON formats"""
+
 from typing import Dict
 
 from opentelemetry.exporter.zipkin.encoder import JsonEncoder
diff --git a/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/__init__.py b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/__init__.py
index 8177efc07bc..dcb092c9cec 100644
--- a/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/__init__.py
+++ b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/__init__.py
@@ -77,8 +77,8 @@
 
 import requests
 
-from opentelemetry.exporter.zipkin.proto.http.v2 import ProtobufEncoder
 from opentelemetry.exporter.zipkin.node_endpoint import IpInput, NodeEndpoint
+from opentelemetry.exporter.zipkin.proto.http.v2 import ProtobufEncoder
 from opentelemetry.sdk.environment_variables import (
     OTEL_EXPORTER_ZIPKIN_ENDPOINT,
     OTEL_EXPORTER_ZIPKIN_TIMEOUT,
diff --git a/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/__init__.py b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/__init__.py
index 308abde01f8..d7ca3b88d27 100644
--- a/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/__init__.py
+++ b/exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/__init__.py
@@ -16,11 +16,12 @@
 
 API spec: https://github.com/openzipkin/zipkin-api/blob/master/zipkin.proto
 """
+
 from typing import List, Optional, Sequence
 
 from opentelemetry.exporter.zipkin.encoder import Encoder
-from opentelemetry.exporter.zipkin.proto.http.v2.gen import zipkin_pb2
 from opentelemetry.exporter.zipkin.node_endpoint import NodeEndpoint
+from opentelemetry.exporter.zipkin.proto.http.v2.gen import zipkin_pb2
 from opentelemetry.sdk.trace import Event
 from opentelemetry.trace import Span, SpanKind
 
diff --git a/lint-requirements.txt b/lint-requirements.txt
deleted file mode 100644
index 006edb46e8c..00000000000
--- a/lint-requirements.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-astroid==3.0.3
-black==24.3.0
-click==8.1.7
-dill==0.3.8
-flake8==6.1.0
-isort==5.12.0
-mccabe==0.7.0
-mypy-extensions==1.0.0
-packaging==24.0
-pathspec==0.12.1
-platformdirs==4.2.1
-pycodestyle==2.11.1
-pyflakes==3.1.0
-pylint==3.0.2
-tomlkit==0.12.4
diff --git a/opentelemetry-api/src/opentelemetry/_events/__init__.py b/opentelemetry-api/src/opentelemetry/_events/__init__.py
index 8284f0830db..a291055ec71 100644
--- a/opentelemetry-api/src/opentelemetry/_events/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/_events/__init__.py
@@ -31,7 +31,6 @@
 
 
 class Event(LogRecord):
-
     def __init__(
         self,
         name: str,
@@ -58,7 +57,6 @@ def __init__(
 
 
 class EventLogger(ABC):
-
     def __init__(
         self,
         name: str,
@@ -77,7 +75,6 @@ def emit(self, event: "Event") -> None:
 
 
 class NoOpEventLogger(EventLogger):
-
     def emit(self, event: Event) -> None:
         pass
 
@@ -119,7 +116,6 @@ def emit(self, event: Event) -> None:
 
 
 class EventLoggerProvider(ABC):
-
     @abstractmethod
     def get_event_logger(
         self,
@@ -132,7 +128,6 @@ def get_event_logger(
 
 
 class NoOpEventLoggerProvider(EventLoggerProvider):
-
     def get_event_logger(
         self,
         name: str,
@@ -146,7 +141,6 @@ def get_event_logger(
 
 
 class ProxyEventLoggerProvider(EventLoggerProvider):
-
     def get_event_logger(
         self,
         name: str,
@@ -175,7 +169,6 @@ def get_event_logger(
 
 
 def get_event_logger_provider() -> EventLoggerProvider:
-
     global _EVENT_LOGGER_PROVIDER  # pylint: disable=global-variable-not-assigned
     if _EVENT_LOGGER_PROVIDER is None:
         if _OTEL_PYTHON_EVENT_LOGGER_PROVIDER not in environ:
@@ -208,7 +201,6 @@ def set_elp() -> None:
 def set_event_logger_provider(
     event_logger_provider: EventLoggerProvider,
 ) -> None:
-
     _set_event_logger_provider(event_logger_provider, log=True)
 
 
diff --git a/opentelemetry-api/src/opentelemetry/context/__init__.py b/opentelemetry-api/src/opentelemetry/context/__init__.py
index a932c644a0e..b9a5a17b2f1 100644
--- a/opentelemetry-api/src/opentelemetry/context/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/context/__init__.py
@@ -37,9 +37,7 @@ def _load_runtime_context() -> _RuntimeContext:
     # environment variables
     default_context = "contextvars_context"
 
-    configured_context = environ.get(
-        OTEL_PYTHON_CONTEXT, default_context
-    )  # type: str
+    configured_context = environ.get(OTEL_PYTHON_CONTEXT, default_context)  # type: str
 
     try:
         return next(  # type: ignore
diff --git a/opentelemetry-api/src/opentelemetry/metrics/__init__.py b/opentelemetry-api/src/opentelemetry/metrics/__init__.py
index 56ffabee6cd..74284ad6e3f 100644
--- a/opentelemetry-api/src/opentelemetry/metrics/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/metrics/__init__.py
@@ -53,15 +53,9 @@
     CallbackOptions,
     CallbackT,
     Counter,
-)
-from opentelemetry.metrics._internal.instrument import Gauge as _Gauge
-from opentelemetry.metrics._internal.instrument import (
     Histogram,
     Instrument,
     NoOpCounter,
-)
-from opentelemetry.metrics._internal.instrument import NoOpGauge as _NoOpGauge
-from opentelemetry.metrics._internal.instrument import (
     NoOpHistogram,
     NoOpObservableCounter,
     NoOpObservableGauge,
@@ -73,6 +67,8 @@
     Synchronous,
     UpDownCounter,
 )
+from opentelemetry.metrics._internal.instrument import Gauge as _Gauge
+from opentelemetry.metrics._internal.instrument import NoOpGauge as _NoOpGauge
 from opentelemetry.metrics._internal.observation import Observation
 
 for obj in [
diff --git a/opentelemetry-api/src/opentelemetry/metrics/_internal/__init__.py b/opentelemetry-api/src/opentelemetry/metrics/_internal/__init__.py
index 972ff2707c6..8ee3c1e6b99 100644
--- a/opentelemetry-api/src/opentelemetry/metrics/_internal/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/metrics/_internal/__init__.py
@@ -40,7 +40,6 @@
 .. versionadded:: 1.10.0
 """
 
-
 import warnings
 from abc import ABC, abstractmethod
 from logging import getLogger
diff --git a/opentelemetry-api/src/opentelemetry/propagate/__init__.py b/opentelemetry-api/src/opentelemetry/propagate/__init__.py
index 622b8fff6fd..afe406fb593 100644
--- a/opentelemetry-api/src/opentelemetry/propagate/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/propagate/__init__.py
@@ -134,7 +134,6 @@ def inject(
     propagator = propagator.strip()
 
     try:
-
         propagators.append(  # type: ignore
             next(  # type: ignore
                 iter(  # type: ignore
diff --git a/opentelemetry-api/src/opentelemetry/trace/__init__.py b/opentelemetry-api/src/opentelemetry/trace/__init__.py
index 27400c996f1..d38a7bc8df4 100644
--- a/opentelemetry-api/src/opentelemetry/trace/__init__.py
+++ b/opentelemetry-api/src/opentelemetry/trace/__init__.py
@@ -73,7 +73,6 @@
     `set_tracer_provider`.
 """
 
-
 import os
 import typing
 from abc import ABC, abstractmethod
diff --git a/opentelemetry-api/src/opentelemetry/trace/span.py b/opentelemetry-api/src/opentelemetry/trace/span.py
index 4afc4d520a2..325bb9064a8 100644
--- a/opentelemetry-api/src/opentelemetry/trace/span.py
+++ b/opentelemetry-api/src/opentelemetry/trace/span.py
@@ -45,7 +45,6 @@
 
 
 def _is_valid_pair(key: str, value: str) -> bool:
-
     return (
         isinstance(key, str)
         and _KEY_PATTERN.fullmatch(key) is not None
diff --git a/opentelemetry-api/src/opentelemetry/util/_decorator.py b/opentelemetry-api/src/opentelemetry/util/_decorator.py
index 870c97bd989..5bf88552b85 100644
--- a/opentelemetry-api/src/opentelemetry/util/_decorator.py
+++ b/opentelemetry-api/src/opentelemetry/util/_decorator.py
@@ -30,7 +30,8 @@
 
 
 class _AgnosticContextManager(
-    contextlib._GeneratorContextManager, Generic[R]  # type: ignore  # FIXME use contextlib._GeneratorContextManager[R] when we drop the python 3.8 support
+    contextlib._GeneratorContextManager,  # type: ignore  # FIXME use contextlib._GeneratorContextManager[R] when we drop the python 3.8 support
+    Generic[R],
 ):  # pylint: disable=protected-access
     """Context manager that can decorate both async and sync functions.
 
diff --git a/opentelemetry-api/src/opentelemetry/util/_providers.py b/opentelemetry-api/src/opentelemetry/util/_providers.py
index 0a1f70f7fa7..b748eadfe0a 100644
--- a/opentelemetry-api/src/opentelemetry/util/_providers.py
+++ b/opentelemetry-api/src/opentelemetry/util/_providers.py
@@ -30,9 +30,7 @@
 def _load_provider(
     provider_environment_variable: str, provider: str
 ) -> Provider:  # type: ignore[type-var]
-
     try:
-
         provider_name = cast(
             str,
             environ.get(provider_environment_variable, f"default_{provider}"),
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py
index 97de4fb1001..8cc15d3bf49 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/_configuration/__init__.py
@@ -91,7 +91,6 @@
 def _import_config_components(
     selected_components: List[str], entry_point_name: str
 ) -> Sequence[Tuple[str, object]]:
-
     component_implementations = []
 
     for selected_component in selected_components:
@@ -109,13 +108,11 @@ def _import_config_components(
                 )
             )
         except KeyError:
-
             raise RuntimeError(
                 f"Requested entry point '{entry_point_name}' not found"
             )
 
         except StopIteration:
-
             raise RuntimeError(
                 f"Requested component '{selected_component}' not found in "
                 f"entry point '{entry_point_name}'"
@@ -177,7 +174,7 @@ def _get_exporter_entry_point(
 
 
 def _get_exporter_names(
-    signal_type: Literal["traces", "metrics", "logs"]
+    signal_type: Literal["traces", "metrics", "logs"],
 ) -> Sequence[str]:
     names = environ.get(_EXPORTER_ENV_BY_SIGNAL_TYPE.get(signal_type, ""))
 
@@ -424,7 +421,6 @@ class _BaseConfigurator(ABC):
     _is_instrumented = False
 
     def __new__(cls, *args, **kwargs):
-
         if cls._instance is None:
             cls._instance = object.__new__(cls, *args, **kwargs)
 
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py
index dc054f50e32..ed4ec388011 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py
@@ -108,7 +108,6 @@ def __init__(
         max_attributes: Optional[int] = None,
         max_attribute_length: Optional[int] = None,
     ):
-
         # attribute count
         global_max_attributes = self._from_env_if_absent(
             max_attributes, OTEL_ATTRIBUTE_COUNT_LIMIT
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py
index 40b4969b9bd..e5669580c4b 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/export/__init__.py
@@ -135,9 +135,7 @@ def shutdown(self):
         self._shutdown = True
         self._exporter.shutdown()
 
-    def force_flush(
-        self, timeout_millis: int = 30000
-    ) -> bool:  # pylint: disable=no-self-use
+    def force_flush(self, timeout_millis: int = 30000) -> bool:  # pylint: disable=no-self-use
         return True
 
 
@@ -217,9 +215,7 @@ def __init__(
         self._log_records = [None] * self._max_export_batch_size
         self._worker_thread.start()
         if hasattr(os, "register_at_fork"):
-            os.register_at_fork(
-                after_in_child=self._at_fork_reinit
-            )  # pylint: disable=protected-access
+            os.register_at_fork(after_in_child=self._at_fork_reinit)  # pylint: disable=protected-access
         self._pid = os.getpid()
 
     def _at_fork_reinit(self):
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py
index 728c773fa48..3e0e778f1ae 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/error_handler/__init__.py
@@ -84,7 +84,6 @@ class _DefaultErrorHandler(ErrorHandler):
 
     # pylint: disable=useless-return
     def _handle(self, error: Exception, *args, **kwargs):
-
         logger.exception("Error handled by default error handler: ")
         return None
 
@@ -111,9 +110,7 @@ def __enter__(self):
 
     # pylint: disable=no-self-use
     def __exit__(self, exc_type, exc_value, traceback):
-
         if exc_value is None:
-
             return None
 
         plugin_handled = False
@@ -123,19 +120,15 @@ def __exit__(self, exc_type, exc_value, traceback):
         )
 
         for error_handler_entry_point in error_handler_entry_points:
-
             error_handler_class = error_handler_entry_point.load()
 
             if issubclass(error_handler_class, exc_value.__class__):
-
                 try:
-
                     error_handler_class()._handle(exc_value)
                     plugin_handled = True
 
                 # pylint: disable=broad-exception-caught
                 except Exception as error_handling_error:
-
                     logger.exception(
                         "%s error while handling error"
                         " %s by error handler %s",
@@ -145,7 +138,6 @@ def __exit__(self, exc_type, exc_value, traceback):
                     )
 
         if not plugin_handled:
-
             _DefaultErrorHandler()._handle(exc_value)
 
         return True
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py
index b89c08da042..b022f1294f0 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/__init__.py
@@ -25,15 +25,15 @@
     SimpleFixedSizeExemplarReservoir,
     TraceBasedExemplarFilter,
 )
-from opentelemetry.sdk.metrics._internal.instrument import Counter
-from opentelemetry.sdk.metrics._internal.instrument import Gauge as _Gauge
 from opentelemetry.sdk.metrics._internal.instrument import (
+    Counter,
     Histogram,
     ObservableCounter,
     ObservableGauge,
     ObservableUpDownCounter,
     UpDownCounter,
 )
+from opentelemetry.sdk.metrics._internal.instrument import Gauge as _Gauge
 
 __all__ = [
     "AlignedHistogramBucketExemplarReservoir",
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py
index f9ed0280325..7740ba1b5fd 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/__init__.py
@@ -87,7 +87,6 @@ def __init__(
         self._instrument_id_instrument_lock = Lock()
 
     def create_counter(self, name, unit="", description="") -> APICounter:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -123,7 +122,6 @@ def create_counter(self, name, unit="", description="") -> APICounter:
     def create_up_down_counter(
         self, name, unit="", description=""
     ) -> APIUpDownCounter:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -161,7 +159,6 @@ def create_up_down_counter(
     def create_observable_counter(
         self, name, callbacks=None, unit="", description=""
     ) -> APIObservableCounter:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -200,7 +197,6 @@ def create_observable_counter(
             return instrument
 
     def create_histogram(self, name, unit="", description="") -> APIHistogram:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -233,7 +229,6 @@ def create_histogram(self, name, unit="", description="") -> APIHistogram:
             return instrument
 
     def create_gauge(self, name, unit="", description="") -> APIGauge:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -269,7 +264,6 @@ def create_gauge(self, name, unit="", description="") -> APIGauge:
     def create_observable_gauge(
         self, name, callbacks=None, unit="", description=""
     ) -> APIObservableGauge:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -310,7 +304,6 @@ def create_observable_gauge(
     def create_observable_up_down_counter(
         self, name, callbacks=None, unit="", description=""
     ) -> APIObservableUpDownCounter:
-
         (
             is_instrument_registered,
             instrument_id,
@@ -435,7 +428,6 @@ def __init__(
         self._shutdown = False
 
         for metric_reader in self._sdk_config.metric_readers:
-
             with self._all_metric_readers_lock:
                 if metric_reader in self._all_metric_readers:
                     # pylint: disable=broad-exception-raised
@@ -468,11 +460,9 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool:
 
             # pylint: disable=broad-exception-caught
             except Exception as error:
-
                 metric_reader_error[metric_reader] = error
 
         if metric_reader_error:
-
             metric_reader_error_string = "\n".join(
                 [
                     f"{metric_reader.__class__.__name__}: {repr(error)}"
@@ -516,7 +506,6 @@ def _shutdown():
 
             # pylint: disable=broad-exception-caught
             except Exception as error:
-
                 metric_reader_error[metric_reader] = error
 
         if self._atexit_handler is not None:
@@ -524,7 +513,6 @@ def _shutdown():
             self._atexit_handler = None
 
         if metric_reader_error:
-
             metric_reader_error_string = "\n".join(
                 [
                     f"{metric_reader.__class__.__name__}: {repr(error)}"
@@ -548,7 +536,6 @@ def get_meter(
         schema_url: Optional[str] = None,
         attributes: Optional[Attributes] = None,
     ) -> Meter:
-
         if self._disabled:
             _logger.warning("SDK is disabled.")
             return NoOpMeter(name, version=version, schema_url=schema_url)
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 5431d1fa02d..be81d70e5cd 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
@@ -91,9 +91,7 @@ def conflicts(self, other: "_ViewInstrumentMatch") -> bool:
     def consume_measurement(
         self, measurement: Measurement, should_sample_exemplar: bool = True
     ) -> None:
-
         if self._view._attribute_keys is not None:
-
             attributes = {}
 
             for key, value in (measurement.attributes or {}).items():
@@ -140,7 +138,6 @@ def collect(
         collection_aggregation_temporality: AggregationTemporality,
         collection_start_nanos: int,
     ) -> Optional[Sequence[DataPointT]]:
-
         data_points: List[DataPointT] = []
         with self._lock:
             for aggregation in self._attributes_aggregation.values():
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py
index 39c967e4c86..a579e3072e9 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/aggregation.py
@@ -55,16 +55,14 @@
 from opentelemetry.sdk.metrics._internal.point import Buckets as BucketsPoint
 from opentelemetry.sdk.metrics._internal.point import (
     ExponentialHistogramDataPoint,
+    HistogramDataPoint,
+    NumberDataPoint,
+    Sum,
 )
 from opentelemetry.sdk.metrics._internal.point import Gauge as GaugePoint
 from opentelemetry.sdk.metrics._internal.point import (
     Histogram as HistogramPoint,
 )
-from opentelemetry.sdk.metrics._internal.point import (
-    HistogramDataPoint,
-    NumberDataPoint,
-    Sum,
-)
 from opentelemetry.util.types import Attributes
 
 _DataPointVarT = TypeVar("_DataPointVarT", NumberDataPoint, HistogramDataPoint)
@@ -328,7 +326,6 @@ def collect(
                     collection_aggregation_temporality
                     is AggregationTemporality.DELTA
                 ):
-
                     previous_collection_start_nano = (
                         self._previous_collection_start_nano
                     )
@@ -498,7 +495,6 @@ def _get_empty_bucket_counts(self) -> List[int]:
     def aggregate(
         self, measurement: Measurement, should_sample_exemplar: bool = True
     ) -> None:
-
         with self._lock:
             if self._value is None:
                 self._value = self._get_empty_bucket_counts()
@@ -545,7 +541,6 @@ def collect(
                     collection_aggregation_temporality
                     is AggregationTemporality.DELTA
                 ):
-
                     previous_collection_start_nano = (
                         self._previous_collection_start_nano
                     )
@@ -765,7 +760,6 @@ def aggregate(
                 high = index
 
             if is_rescaling_needed:
-
                 scale_change = self._get_scale_change(low, high)
                 self._downscale(
                     scale_change,
@@ -851,7 +845,6 @@ def collect(
                     collection_aggregation_temporality
                     is AggregationTemporality.DELTA
                 ):
-
                     previous_collection_start_nano = (
                         self._previous_collection_start_nano
                     )
@@ -1062,7 +1055,6 @@ def _get_low_high_previous_current(
         current_scale,
         min_scale,
     ):
-
         (previous_point_low, previous_point_high) = self._get_low_high(
             previous_point_buckets, self._previous_scale, min_scale
         )
@@ -1100,7 +1092,6 @@ def _new_mapping(scale: int) -> Mapping:
         return LogarithmMapping(scale)
 
     def _get_scale_change(self, low, high):
-
         change = 0
 
         while high - low >= self._max_size:
@@ -1113,7 +1104,6 @@ def _get_scale_change(self, low, high):
 
     @staticmethod
     def _downscale(change: int, positive, negative):
-
         if change == 0:
             return
 
@@ -1132,13 +1122,11 @@ def _merge(
         min_scale,
         aggregation_temporality,
     ):
-
         current_change = current_scale - min_scale
 
         for current_bucket_index, current_bucket in enumerate(
             current_buckets.counts
         ):
-
             if current_bucket == 0:
                 continue
 
@@ -1235,7 +1223,6 @@ def _create_aggregation(
         ],
         start_time_unix_nano: int,
     ) -> _Aggregation:
-
         # pylint: disable=too-many-return-statements
         if isinstance(instrument, Counter):
             return _SumAggregation(
@@ -1326,7 +1313,6 @@ def _create_aggregation(
         ],
         start_time_unix_nano: int,
     ) -> _Aggregation:
-
         instrument_aggregation_temporality = AggregationTemporality.UNSPECIFIED
         if isinstance(instrument, Synchronous):
             instrument_aggregation_temporality = AggregationTemporality.DELTA
@@ -1392,7 +1378,6 @@ def _create_aggregation(
         ],
         start_time_unix_nano: int,
     ) -> _Aggregation:
-
         instrument_aggregation_temporality = AggregationTemporality.UNSPECIFIED
         if isinstance(instrument, Synchronous):
             instrument_aggregation_temporality = AggregationTemporality.DELTA
@@ -1426,7 +1411,6 @@ def _create_aggregation(
         ],
         start_time_unix_nano: int,
     ) -> _Aggregation:
-
         instrument_aggregation_temporality = AggregationTemporality.UNSPECIFIED
         if isinstance(instrument, Synchronous):
             instrument_aggregation_temporality = AggregationTemporality.DELTA
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/buckets.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/buckets.py
index 8877985c234..e8a93326088 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/buckets.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/buckets.py
@@ -16,7 +16,6 @@
 
 
 class Buckets:
-
     # No method of this class is protected by locks because instances of this
     # class are only used in methods that are protected by locks themselves.
 
@@ -78,7 +77,6 @@ def get_offset_counts(self):
         return self._counts[-bias:] + self._counts[:-bias]
 
     def grow(self, needed: int, max_size: int) -> None:
-
         size = len(self._counts)
         bias = self.__index_base - self.__index_start
         old_positive_limit = size - bias
@@ -160,7 +158,6 @@ def downscale(self, amount: int) -> None:
             index = mod
 
             while index < each and inpos < size:
-
                 if outpos != inpos:
                     self._counts[outpos] += self._counts[inpos]
                     self._counts[inpos] = 0
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py
index 5c9bd2d2a9a..387b1d1444f 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/__init__.py
@@ -22,7 +22,6 @@ class Mapping(ABC):
 
     # pylint: disable=no-member
     def __new__(cls, scale: int):
-
         with cls._mappings_lock:
             # cls._mappings and cls._mappings_lock are implemented in each of
             # the child classes as a dictionary and a lock, respectively. They
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/ieee_754.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/ieee_754.py
index 9503b57c0e0..d4b7e86148a 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/ieee_754.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/ieee_754.py
@@ -82,8 +82,7 @@ def get_ieee_754_exponent(value: float) -> int:
             #
             # This step isolates the exponent bits, turning every bit outside
             # of the exponent field (sign and mantissa bits) to 0.
-            c_uint64.from_buffer(c_double(value)).value
-            & EXPONENT_MASK
+            c_uint64.from_buffer(c_double(value)).value & EXPONENT_MASK
             # For the example this means:
             # 18442240474082181119 & EXPONENT_MASK == 9214364837600034816
             # bin(9214364837600034816) == '0b111111111100000000000000000000000000000000000000000000000000000'
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/logarithm_mapping.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/logarithm_mapping.py
index 5abf9238b9b..e73f3a81e23 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/logarithm_mapping.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/exponential_histogram/mapping/logarithm_mapping.py
@@ -115,7 +115,6 @@ def map_to_index(self, value: float) -> int:
         )
 
     def get_lower_boundary(self, index: int) -> float:
-
         if index >= self._max_normal_lower_boundary_index:
             if index == self._max_normal_lower_boundary_index:
                 return 2 * exp(
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 4acf1cc81dd..cd9aafaa190 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/export/__init__.py
@@ -142,8 +142,7 @@ def __init__(
         out: IO = stdout,
         formatter: Callable[
             ["opentelemetry.sdk.metrics.export.MetricsData"], str
-        ] = lambda metrics_data: metrics_data.to_json()
-        + linesep,
+        ] = lambda metrics_data: metrics_data.to_json() + linesep,
         preferred_temporality: Dict[type, AggregationTemporality] = None,
         preferred_aggregation: Dict[
             type, "opentelemetry.sdk.metrics.view.Aggregation"
@@ -333,7 +332,6 @@ def collect(self, timeout_millis: float = 10_000) -> None:
         metrics = self._collect(self, timeout_millis=timeout_millis)
 
         if metrics is not None:
-
             self._receive_metrics(
                 metrics,
                 timeout_millis=timeout_millis,
@@ -490,9 +488,7 @@ def __init__(
             )
             self._daemon_thread.start()
             if hasattr(os, "register_at_fork"):
-                os.register_at_fork(
-                    after_in_child=self._at_fork_reinit
-                )  # pylint: disable=protected-access
+                os.register_at_fork(after_in_child=self._at_fork_reinit)  # pylint: disable=protected-access
         elif self._export_interval_millis <= 0:
             raise ValueError(
                 f"interval value {self._export_interval_millis} is invalid \
@@ -533,7 +529,6 @@ def _receive_metrics(
         timeout_millis: float = 10_000,
         **kwargs,
     ) -> None:
-
         token = attach(set_value(_SUPPRESS_INSTRUMENTATION_KEY, True))
         # pylint: disable=broad-exception-caught,invalid-name
         try:
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py
index ea373ccc6fb..c93f83a4e62 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/instrument.py
@@ -110,11 +110,8 @@ def __init__(
         self._callbacks: List[CallbackT] = []
 
         if callbacks is not None:
-
             for callback in callbacks:
-
                 if isinstance(callback, Generator):
-
                     # advance generator to it's first yield
                     next(callback)
 
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 b516d6abb05..2acbe1734c0 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/measurement_consumer.py
@@ -103,7 +103,6 @@ def collect(
         metric_reader: "opentelemetry.sdk.metrics.MetricReader",
         timeout_millis: float = 10_000,
     ) -> Optional[Iterable[Metric]]:
-
         with self._lock:
             metric_reader_storage = self._reader_storages[metric_reader]
             # for now, just use the defaults
@@ -113,11 +112,9 @@ def collect(
             default_timeout_ns = 10000 * 1e6
 
             for async_instrument in self._async_instruments:
-
                 remaining_time = deadline_ns - time_ns()
 
                 if remaining_time < default_timeout_ns:
-
                     callback_options = CallbackOptions(
                         timeout_millis=remaining_time / 1e6
                     )
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 1c94733a3d3..f5121811ebc 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
@@ -139,7 +139,6 @@ def collect(self) -> Optional[MetricsData]:
         collection_start_nanos = time_ns()
 
         with self._lock:
-
             instrumentation_scope_scope_metrics: Dict[
                 InstrumentationScope, ScopeMetrics
             ] = {}
@@ -155,7 +154,6 @@ def collect(self) -> Optional[MetricsData]:
                 metrics: List[Metric] = []
 
                 for view_instrument_match in view_instrument_matches:
-
                     data_points = view_instrument_match.collect(
                         aggregation_temporality, collection_start_nanos
                     )
@@ -219,7 +217,6 @@ def collect(self) -> Optional[MetricsData]:
                     )
 
                 if metrics:
-
                     if instrument.instrumentation_scope not in (
                         instrumentation_scope_scope_metrics
                     ):
@@ -236,7 +233,6 @@ def collect(self) -> Optional[MetricsData]:
                         ].metrics.extend(metrics)
 
             if instrumentation_scope_scope_metrics:
-
                 return MetricsData(
                     resource_metrics=[
                         ResourceMetrics(
@@ -281,7 +277,6 @@ def _handle_view_instrument_match(
                     if existing_view_instrument_match.conflicts(
                         new_view_instrument_match
                     ):
-
                         _logger.warning(
                             "Views %s and %s will cause conflicting "
                             "metrics identities",
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py
index 5dd11be1f94..b3fa029d6c7 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/metrics/_internal/view.py
@@ -165,7 +165,6 @@ def __init__(
     # pylint: disable=too-many-return-statements
     # pylint: disable=too-many-branches
     def _match(self, instrument: Instrument) -> bool:
-
         if self._instrument_type is not None:
             if not isinstance(instrument, self._instrument_type):
                 return False
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py
index bbec2850701..3235ba10dcd 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/resources/__init__.py
@@ -53,7 +53,7 @@
 <https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/README.md>`_
 that have prescribed semantic meanings, for example ``service.name`` in the
 above example.
- """
+"""
 
 import abc
 import concurrent.futures
@@ -322,7 +322,6 @@ def detect(self) -> "Resource":
 class OTELResourceDetector(ResourceDetector):
     # pylint: disable=no-self-use
     def detect(self) -> "Resource":
-
         env_resources_items = environ.get(OTEL_RESOURCE_ATTRIBUTES)
         env_resource_map = {}
 
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py
index 58cbf01e08b..b144e071a8a 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/__init__.py
@@ -619,7 +619,6 @@ def __init__(
         max_attribute_length: Optional[int] = None,
         max_span_attribute_length: Optional[int] = None,
     ):
-
         # span events and links count
         self.max_events = self._from_env_if_absent(
             max_events,
@@ -726,12 +725,10 @@ def _from_env_if_absent(
 )
 
 # not removed for backward compat. please use SpanLimits instead.
-SPAN_ATTRIBUTE_COUNT_LIMIT = (
-    SpanLimits._from_env_if_absent(  # pylint: disable=protected-access
-        None,
-        OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
-        _DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
-    )
+SPAN_ATTRIBUTE_COUNT_LIMIT = SpanLimits._from_env_if_absent(  # pylint: disable=protected-access
+    None,
+    OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
+    _DEFAULT_OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT,
 )
 
 
@@ -890,7 +887,6 @@ def add_link(
         context: SpanContext,
         attributes: types.Attributes = None,
     ) -> None:
-
         if not _is_valid_link(context, attributes):
             return
 
@@ -1118,7 +1114,6 @@ def start_span(  # pylint: disable=too-many-locals
         record_exception: bool = True,
         set_status_on_exception: bool = True,
     ) -> trace_api.Span:
-
         parent_span_context = trace_api.get_current_span(
             context
         ).get_span_context()
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py
index 98f82f08b74..bdfc348611e 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/export/__init__.py
@@ -183,9 +183,7 @@ def __init__(
         )
 
         self.span_exporter = span_exporter
-        self.queue = collections.deque(
-            [], max_queue_size
-        )  # type: typing.Deque[Span]
+        self.queue = collections.deque([], max_queue_size)  # type: typing.Deque[Span]
         self.worker_thread = threading.Thread(
             name="OtelBatchSpanProcessor", target=self.worker, daemon=True
         )
@@ -199,14 +197,10 @@ def __init__(
         # flag that indicates that spans are being dropped
         self._spans_dropped = False
         # precallocated list to send spans to exporter
-        self.spans_list = [
-            None
-        ] * self.max_export_batch_size  # type: typing.List[typing.Optional[Span]]
+        self.spans_list = [None] * self.max_export_batch_size  # type: typing.List[typing.Optional[Span]]
         self.worker_thread.start()
         if hasattr(os, "register_at_fork"):
-            os.register_at_fork(
-                after_in_child=self._at_fork_reinit
-            )  # pylint: disable=protected-access
+            os.register_at_fork(after_in_child=self._at_fork_reinit)  # pylint: disable=protected-access
         self._pid = os.getpid()
 
     def on_start(
@@ -259,7 +253,6 @@ def worker(self):
                     len(self.queue) < self.max_export_batch_size
                     and flush_request is None
                 ):
-
                     self.condition.wait(timeout)
                     flush_request = self._get_and_unset_flush_request()
                     if not self.queue:
@@ -384,7 +377,6 @@ def _drain_queue(self):
             self._export_batch()
 
     def force_flush(self, timeout_millis: int = None) -> bool:
-
         if timeout_millis is None:
             timeout_millis = self.export_timeout_millis
 
@@ -509,8 +501,7 @@ def __init__(
         out: typing.IO = sys.stdout,
         formatter: typing.Callable[
             [ReadableSpan], str
-        ] = lambda span: span.to_json()
-        + linesep,
+        ] = lambda span: span.to_json() + linesep,
     ):
         self.out = out
         self.formatter = formatter
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py b/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py
index c0b460f8c29..fb6990a0075 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/trace/sampling.py
@@ -131,6 +131,7 @@ def get_sampler(sampler_argument):
 In order to configure you application with a custom sampler's entry point, set the ``OTEL_TRACES_SAMPLER`` environment variable to the key name of the entry point. For example, to configured the
 above sampler, set ``OTEL_TRACES_SAMPLER=custom_sampler_name`` and ``OTEL_TRACES_SAMPLER_ARG=0.5``.
 """
+
 import abc
 import enum
 import os
diff --git a/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi b/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi
index b09cb9858a9..e949ad4ebc3 100644
--- a/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi
+++ b/opentelemetry-sdk/src/opentelemetry/sdk/util/__init__.pyi
@@ -30,7 +30,7 @@ _VT = TypeVar("_VT")
 
 def ns_to_iso_str(nanoseconds: int) -> str: ...
 def get_dict_as_key(
-    labels: Mapping[str, AttributeValue]
+    labels: Mapping[str, AttributeValue],
 ) -> AttributesAsKey: ...
 
 # pylint: disable=no-self-use
@@ -52,9 +52,7 @@ class BoundedList(Sequence[_T]):
     def append(self, item: _T): ...
     def extend(self, seq: Sequence[_T]): ...
     @classmethod
-    def from_seq(
-        cls, maxlen: int, seq: Iterable[_T]
-    ) -> BoundedList[_T]: ...  # pylint: disable=undefined-variable
+    def from_seq(cls, maxlen: int, seq: Iterable[_T]) -> BoundedList[_T]: ...  # pylint: disable=undefined-variable
 
 class BoundedDict(MutableMapping[_KT, _VT]):
     """An ordered dict with a fixed max capacity.
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/container_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/container_attributes.py
index 128769194e7..9c5be2b6869 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/container_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/container_attributes.py
@@ -100,7 +100,9 @@
 """
 
 
-@deprecated(reason="The attribute container.cpu.state is deprecated - Replaced by `cpu.mode`")  # type: ignore
+@deprecated(
+    reason="The attribute container.cpu.state is deprecated - Replaced by `cpu.mode`"
+)  # type: ignore
 class ContainerCpuStateValues(Enum):
     USER = "user"
     """When tasks of the cgroup are in user mode (Linux). When all container processes are in user mode (Windows)."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/db_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/db_attributes.py
index 14974bbd4ff..2f3b5bae7e8 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/db_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/db_attributes.py
@@ -286,7 +286,9 @@ class DbClientConnectionStateValues(Enum):
     """used."""
 
 
-@deprecated(reason="The attribute db.client.connections.state is deprecated - Replaced by `db.client.connection.state`")  # type: ignore
+@deprecated(
+    reason="The attribute db.client.connections.state is deprecated - Replaced by `db.client.connection.state`"
+)  # type: ignore
 class DbClientConnectionsStateValues(Enum):
     IDLE = "idle"
     """idle."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/error_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/error_attributes.py
index d3d33ff395c..a86592be983 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/error_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/error_attributes.py
@@ -23,7 +23,9 @@
 """
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.error_attributes.ErrorTypeValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.error_attributes.ErrorTypeValues`."
+)  # type: ignore
 class ErrorTypeValues(Enum):
     OTHER = "_OTHER"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.error_attributes.ErrorTypeValues.OTHER`."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/http_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/http_attributes.py
index 3631c890c65..f2e1ccb7408 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/http_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/http_attributes.py
@@ -159,7 +159,9 @@ class HttpConnectionStateValues(Enum):
     """idle state."""
 
 
-@deprecated(reason="The attribute http.flavor is deprecated - Replaced by `network.protocol.name`")  # type: ignore
+@deprecated(
+    reason="The attribute http.flavor is deprecated - Replaced by `network.protocol.name`"
+)  # type: ignore
 class HttpFlavorValues(Enum):
     HTTP_1_0 = "1.0"
     """HTTP/1.0."""
@@ -175,7 +177,9 @@ class HttpFlavorValues(Enum):
     """QUIC protocol."""
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.http_attributes.HttpRequestMethodValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.http_attributes.HttpRequestMethodValues`."
+)  # type: ignore
 class HttpRequestMethodValues(Enum):
     CONNECT = "CONNECT"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.http_attributes.HttpRequestMethodValues.CONNECT`."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/message_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/message_attributes.py
index 770b01592be..8728d81b46e 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/message_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/message_attributes.py
@@ -38,7 +38,9 @@
 """
 
 
-@deprecated(reason="The attribute message.type is deprecated - Replaced by `rpc.message.type`")  # type: ignore
+@deprecated(
+    reason="The attribute message.type is deprecated - Replaced by `rpc.message.type`"
+)  # type: ignore
 class MessageTypeValues(Enum):
     SENT = "SENT"
     """sent."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/net_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/net_attributes.py
index a22bf1e0098..a1789a06fcb 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/net_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/net_attributes.py
@@ -93,7 +93,9 @@
 """
 
 
-@deprecated(reason="The attribute net.sock.family is deprecated - Split to `network.transport` and `network.type`")  # type: ignore
+@deprecated(
+    reason="The attribute net.sock.family is deprecated - Split to `network.transport` and `network.type`"
+)  # type: ignore
 class NetSockFamilyValues(Enum):
     INET = "inet"
     """IPv4 address."""
@@ -103,7 +105,9 @@ class NetSockFamilyValues(Enum):
     """Unix domain socket path."""
 
 
-@deprecated(reason="The attribute net.transport is deprecated - Replaced by `network.transport`")  # type: ignore
+@deprecated(
+    reason="The attribute net.transport is deprecated - Replaced by `network.transport`"
+)  # type: ignore
 class NetTransportValues(Enum):
     IP_TCP = "ip_tcp"
     """ip_tcp."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/network_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/network_attributes.py
index 354356d6225..0742e6e6a5f 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/network_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/network_attributes.py
@@ -158,7 +158,9 @@ class NetworkIoDirectionValues(Enum):
     """receive."""
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTransportValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTransportValues`."
+)  # type: ignore
 class NetworkTransportValues(Enum):
     TCP = "tcp"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTransportValues.TCP`."""
@@ -172,7 +174,9 @@ class NetworkTransportValues(Enum):
     """QUIC."""
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTypeValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTypeValues`."
+)  # type: ignore
 class NetworkTypeValues(Enum):
     IPV4 = "ipv4"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.network_attributes.NetworkTypeValues.IPV4`."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/otel_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/otel_attributes.py
index 968e0609443..c58c750f06e 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/otel_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/otel_attributes.py
@@ -48,7 +48,9 @@
 """
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.otel_attributes.OtelStatusCodeValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.otel_attributes.OtelStatusCodeValues`."
+)  # type: ignore
 class OtelStatusCodeValues(Enum):
     OK = "OK"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.otel_attributes.OtelStatusCodeValues.OK`."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/other_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/other_attributes.py
index 510d7926082..2f4ae932f61 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/other_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/other_attributes.py
@@ -23,7 +23,9 @@
 """
 
 
-@deprecated(reason="The attribute state is deprecated - Replaced by `db.client.connection.state`")  # type: ignore
+@deprecated(
+    reason="The attribute state is deprecated - Replaced by `db.client.connection.state`"
+)  # type: ignore
 class StateValues(Enum):
     IDLE = "idle"
     """idle."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/process_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/process_attributes.py
index e5d7dc69d34..ca6c8b399b7 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/process_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/process_attributes.py
@@ -195,7 +195,9 @@ class ProcessContextSwitchTypeValues(Enum):
     """involuntary."""
 
 
-@deprecated(reason="The attribute process.cpu.state is deprecated - Replaced by `cpu.mode`")  # type: ignore
+@deprecated(
+    reason="The attribute process.cpu.state is deprecated - Replaced by `cpu.mode`"
+)  # type: ignore
 class ProcessCpuStateValues(Enum):
     SYSTEM = "system"
     """system."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/system_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/system_attributes.py
index b4cae158090..b224863e93b 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/system_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/system_attributes.py
@@ -88,7 +88,9 @@
 """
 
 
-@deprecated(reason="The attribute system.cpu.state is deprecated - Replaced by `cpu.mode`")  # type: ignore
+@deprecated(
+    reason="The attribute system.cpu.state is deprecated - Replaced by `cpu.mode`"
+)  # type: ignore
 class SystemCpuStateValues(Enum):
     USER = "user"
     """user."""
@@ -202,7 +204,9 @@ class SystemProcessStatusValues(Enum):
     """defunct."""
 
 
-@deprecated(reason="The attribute system.processes.status is deprecated - Replaced by `system.process.status`")  # type: ignore
+@deprecated(
+    reason="The attribute system.processes.status is deprecated - Replaced by `system.process.status`"
+)  # type: ignore
 class SystemProcessesStatusValues(Enum):
     RUNNING = "running"
     """running."""
diff --git a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/telemetry_attributes.py b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/telemetry_attributes.py
index f871f19cfd0..3ba6d9f7c8a 100644
--- a/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/telemetry_attributes.py
+++ b/opentelemetry-semantic-conventions/src/opentelemetry/semconv/_incubating/attributes/telemetry_attributes.py
@@ -45,7 +45,9 @@
 """
 
 
-@deprecated(reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.telemetry_attributes.TelemetrySdkLanguageValues`.")  # type: ignore
+@deprecated(
+    reason="Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.telemetry_attributes.TelemetrySdkLanguageValues`."
+)  # type: ignore
 class TelemetrySdkLanguageValues(Enum):
     CPP = "cpp"
     """Deprecated in favor of stable :py:const:`opentelemetry.semconv.attributes.telemetry_attributes.TelemetrySdkLanguageValues.CPP`."""
diff --git a/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py b/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py
index 201d8bf3d3d..6b6eb8fbf05 100644
--- a/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py
+++ b/propagator/opentelemetry-propagator-jaeger/src/opentelemetry/propagators/jaeger/__init__.py
@@ -44,7 +44,6 @@ def extract(
         context: typing.Optional[Context] = None,
         getter: Getter = default_getter,
     ) -> Context:
-
         if context is None:
             context = Context()
         header = getter.get(carrier, self.TRACE_ID_KEY)
diff --git a/pyproject.toml b/pyproject.toml
index 873076c802c..ab84e2d398d 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,20 +1,3 @@
-[tool.black]
-line-length = 79
-exclude = '''
-(
-  /(  # generated files
-    .tox|
-    venv|
-    venv.*|
-    .venv.*|
-    target.*|
-    .*/build/lib/.*|
-    exporter/opentelemetry-exporter-zipkin-proto-http/src/opentelemetry/exporter/zipkin/proto/http/v2/gen|
-    opentelemetry-proto/src/opentelemetry/proto/.*/.*|
-    scripts
-  )/
-)
-'''
 [tool.pytest.ini_options]
 addopts = "-rs -v"
 log_cli = true
@@ -27,3 +10,42 @@ include = [
     "opentelemetry-sdk/src",
     "opentelemetry-semantic-conventions/src",
 ]
+
+[tool.ruff]
+# https://docs.astral.sh/ruff/configuration/
+target-version = "py38"
+line-length = 79
+extend-exclude = [
+  "*_pb2*.py*",
+]
+output-format = "concise"
+
+[tool.ruff.lint]
+# https://docs.astral.sh/ruff/linter/#rule-selection
+# pylint: https://github.com/astral-sh/ruff/issues/970
+select = [
+  "I",   # isort
+  "F",   # pyflakes
+  "E",   # pycodestyle errors
+  "W",   # pycodestyle warnings
+  "PLC", # pylint convention
+  "PLE", # pylint error
+  "Q",   # flake8-quotes
+]
+
+ignore = [
+  "E501", # line-too-long
+]
+
+[tool.ruff.lint.per-file-ignores]
+"docs/**/*.*" = ["PLE"]
+
+[tool.ruff.lint.isort]
+known-third-party = [
+  "psutil",
+  "pytest",
+  "redis",
+  "redis_opentracing",
+  "opencensus",
+]
+known-first-party = ["opentelemetry", "opentelemetry_example_app"]
diff --git a/scripts/add_required_checks.py b/scripts/add_required_checks.py
index bc58883b2d3..ee7d38dbc6c 100644
--- a/scripts/add_required_checks.py
+++ b/scripts/add_required_checks.py
@@ -1,18 +1,23 @@
 # This script is to be used by maintainers by running it locally.
 
-from requests import put
+from json import dumps
 from os import environ
+
+from requests import put
 from yaml import safe_load
-from json import dumps
 
 job_names = ["EasyCLA"]
 
 # Check that the files below are all the workflow YAML files that should be
 # considered.
 for yml_file_name in [
-    "test_0", "test_1", "misc_0", "lint_0", "contrib_0", "check-links"
+    "test_0",
+    "test_1",
+    "misc_0",
+    "lint_0",
+    "contrib_0",
+    "check-links",
 ]:
-
     with open(f"../.github/workflows/{yml_file_name}.yml") as yml_file:
         job_names.extend(
             [job["name"] for job in safe_load(yml_file)["jobs"].values()]
@@ -35,9 +40,9 @@
         # and read and write permissions must be granted for administration
         # permissions and read permissions must be granted for metadata
         # permissions.
-        "Authorization": f"token {environ.get('REQUIRED_CHECKS_TOKEN')}"
+        "Authorization": f"token {environ.get('REQUIRED_CHECKS_TOKEN')}",
     },
-    data=dumps({"contexts": job_names})
+    data=dumps({"contexts": job_names}),
 )
 
 if response.status_code == 200:
diff --git a/scripts/check_for_valid_readme.py b/scripts/check_for_valid_readme.py
index c65097ea56e..d133ae3d3cb 100644
--- a/scripts/check_for_valid_readme.py
+++ b/scripts/check_for_valid_readme.py
@@ -1,4 +1,5 @@
 """Test script to check given paths for valid README.rst files."""
+
 import argparse
 import sys
 from pathlib import Path
@@ -29,7 +30,6 @@ def main():
     error = False
 
     for path in map(Path, args.paths):
-
         readme = path / "README.rst"
         try:
             if not is_valid_rst(readme):
diff --git a/scripts/eachdist.py b/scripts/eachdist.py
index 5a2b7603899..71349363047 100755
--- a/scripts/eachdist.py
+++ b/scripts/eachdist.py
@@ -7,13 +7,14 @@
 import shutil
 import subprocess
 import sys
-from toml import load
 from configparser import ConfigParser
 from inspect import cleandoc
 from itertools import chain
 from os.path import basename
 from pathlib import Path, PurePath
 
+from toml import load
+
 DEFAULT_ALLSEP = " "
 DEFAULT_ALLFMT = "{rel}"
 
@@ -508,7 +509,8 @@ def lint_args(args):
 
     runsubprocess(
         args.dry_run,
-        ("black", "--config", "pyproject.toml", ".") + (("--diff", "--check") if args.check_only else ()),
+        ("black", "--config", "pyproject.toml", ".")
+        + (("--diff", "--check") if args.check_only else ()),
         cwd=rootdir,
         check=True,
     )
@@ -519,7 +521,9 @@ def lint_args(args):
         cwd=rootdir,
         check=True,
     )
-    runsubprocess(args.dry_run, ("flake8", "--config", ".flake8", rootdir), check=True)
+    runsubprocess(
+        args.dry_run, ("flake8", "--config", ".flake8", rootdir), check=True
+    )
     execute_args(
         parse_subargs(
             args, ("exec", "pylint {}", "--all", "--mode", "lintroots")
@@ -561,10 +565,10 @@ def update_version_files(targets, version, packages):
     replace = f'__version__ = "{version}"'
 
     for target in filter_packages(targets, packages):
-
         version_file_path = target.joinpath(
-            load(target.joinpath("pyproject.toml"))
-            ["tool"]["hatch"]["version"]["path"]
+            load(target.joinpath("pyproject.toml"))["tool"]["hatch"][
+                "version"
+            ]["path"]
         )
 
         with open(version_file_path) as file:
@@ -581,8 +585,8 @@ def update_version_files(targets, version, packages):
 def update_dependencies(targets, version, packages):
     print("updating dependencies")
     # PEP 508 allowed specifier operators
-    operators = ['==', '!=', '<=', '>=', '<', '>', '===', '~=', '=']
-    operators_pattern = '|'.join(re.escape(op) for op in operators)
+    operators = ["==", "!=", "<=", ">=", "<", ">", "===", "~=", "="]
+    operators_pattern = "|".join(re.escape(op) for op in operators)
 
     for pkg in packages:
         search = rf"({basename(pkg)}[^,]*)({operators_pattern})(.*\.dev)"
@@ -664,7 +668,14 @@ def format_args(args):
     )
     runsubprocess(
         args.dry_run,
-        ("isort", "--settings-path", f"{root_dir}/.isort.cfg", "--profile", "black", "."),
+        (
+            "isort",
+            "--settings-path",
+            f"{root_dir}/.isort.cfg",
+            "--profile",
+            "black",
+            ".",
+        ),
         cwd=format_dir,
         check=True,
     )
diff --git a/scripts/public_symbols_checker.py b/scripts/public_symbols_checker.py
index 7dd9b5d309d..31f4dc1bb62 100644
--- a/scripts/public_symbols_checker.py
+++ b/scripts/public_symbols_checker.py
@@ -29,7 +29,6 @@
 
 
 def get_symbols(change_type, diff_lines_getter, prefix):
-
     if change_type == "D" or prefix == r"\-":
         file_path_symbols = removed_symbols
     else:
@@ -40,7 +39,6 @@ def get_symbols(change_type, diff_lines_getter, prefix):
         .diff(repo.head.commit)
         .iter_change_type(change_type)
     ):
-
         if diff_lines.b_blob is None:
             # This happens if a file has been removed completely.
             b_file_path = diff_lines.a_blob.path
@@ -53,7 +51,8 @@ def get_symbols(change_type, diff_lines_getter, prefix):
             or "opentelemetry" not in b_file_path
             or any(
                 # single leading underscore
-                part[0] == "_" and part[1] != "_"
+                part[0] == "_"
+                and part[1] != "_"
                 # tests directories
                 or part == "tests"
                 for part in b_file_path_obj.parts
diff --git a/scripts/semconv/generate.sh b/scripts/semconv/generate.sh
index 38df0bfd346..643bcc3c2a8 100755
--- a/scripts/semconv/generate.sh
+++ b/scripts/semconv/generate.sh
@@ -58,5 +58,4 @@ mkdir -p ${ROOT_DIR}/opentelemetry-semantic-conventions/src/opentelemetry/semcon
 generate "./" "./${INCUBATING_DIR}/" "any"
 
 cd "$ROOT_DIR"
-${ROOT_DIR}/.tox/lint/bin/black --config pyproject.toml ${ROOT_DIR}/opentelemetry-semantic-conventions/src/opentelemetry/semconv
-${ROOT_DIR}/.tox/lint/bin/isort ${ROOT_DIR}/opentelemetry-semantic-conventions/src/opentelemetry/semconv
+tox -e ruff
diff --git a/shim/opentelemetry-opencensus-shim/src/opentelemetry/shim/opencensus/_shim_tracer.py b/shim/opentelemetry-opencensus-shim/src/opentelemetry/shim/opencensus/_shim_tracer.py
index a1e30afb500..35386d4f468 100644
--- a/shim/opentelemetry-opencensus-shim/src/opentelemetry/shim/opencensus/_shim_tracer.py
+++ b/shim/opentelemetry-opencensus-shim/src/opentelemetry/shim/opencensus/_shim_tracer.py
@@ -87,7 +87,7 @@ def __init__(
         wrapped: BaseTracer,
         *,
         oc_span_context: SpanContext,
-        otel_tracer: trace.Tracer
+        otel_tracer: trace.Tracer,
     ) -> None:
         super().__init__(wrapped)
         self._self_oc_span_context = oc_span_context
diff --git a/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py b/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py
index 8fd72da9720..a06d7834722 100644
--- a/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py
+++ b/shim/opentelemetry-opentracing-shim/src/opentelemetry/shim/opentracing_shim/__init__.py
@@ -112,15 +112,17 @@
 from opentelemetry.propagate import get_global_textmap
 from opentelemetry.shim.opentracing_shim import util
 from opentelemetry.shim.opentracing_shim.version import __version__
-from opentelemetry.trace import INVALID_SPAN_CONTEXT, Link, NonRecordingSpan
-from opentelemetry.trace import SpanContext as OtelSpanContext
-from opentelemetry.trace import Tracer as OtelTracer
 from opentelemetry.trace import (
+    INVALID_SPAN_CONTEXT,
+    Link,
+    NonRecordingSpan,
     TracerProvider,
     get_current_span,
     set_span_in_context,
     use_span,
 )
+from opentelemetry.trace import SpanContext as OtelSpanContext
+from opentelemetry.trace import Tracer as OtelTracer
 from opentelemetry.util.types import Attributes
 
 ValueT = TypeVar("ValueT", int, float, bool, str)
diff --git a/tox.ini b/tox.ini
index 69d9a08b472..4479657b0ae 100644
--- a/tox.ini
+++ b/tox.ini
@@ -95,6 +95,7 @@ envlist =
     public-symbols-check
     shellcheck
     generate-workflows
+    ruff
 
 [testenv]
 deps =
@@ -171,120 +172,63 @@ commands_pre =
 
 commands =
   test-opentelemetry-api: pytest {toxinidir}/opentelemetry-api/tests {posargs}
-  lint-opentelemetry-api: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/opentelemetry-api
-  lint-opentelemetry-api: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/opentelemetry-api
-  lint-opentelemetry-api: flake8 --config {toxinidir}/.flake8 {toxinidir}/opentelemetry-api
   lint-opentelemetry-api: pylint {toxinidir}/opentelemetry-api
 
   test-opentelemetry-sdk: pytest {toxinidir}/opentelemetry-sdk/tests {posargs}
-  lint-opentelemetry-sdk: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/opentelemetry-sdk
-  lint-opentelemetry-sdk: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/opentelemetry-sdk
-  lint-opentelemetry-sdk: flake8 --config {toxinidir}/.flake8 {toxinidir}/opentelemetry-sdk
   lint-opentelemetry-sdk: pylint {toxinidir}/opentelemetry-sdk
   benchmark-opentelemetry-sdk: pytest {toxinidir}/opentelemetry-sdk/benchmarks --benchmark-json={toxinidir}/opentelemetry-sdk/sdk-benchmark.json {posargs}
 
   test-opentelemetry-proto-protobuf5: pytest {toxinidir}/opentelemetry-proto/tests {posargs}
-  lint-opentelemetry-proto-protobuf5: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/opentelemetry-proto
-  lint-opentelemetry-proto-protobuf5: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/opentelemetry-proto
-  lint-opentelemetry-proto-protobuf5: flake8 --config {toxinidir}/.flake8 {toxinidir}/opentelemetry-proto
   lint-opentelemetry-proto-protobuf5: pylint {toxinidir}/opentelemetry-proto
 
   test-opentelemetry-semantic-conventions: pytest {toxinidir}/opentelemetry-semantic-conventions/tests {posargs}
-  lint-opentelemetry-semantic-conventions: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/opentelemetry-semantic-conventions
-  lint-opentelemetry-semantic-conventions: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/opentelemetry-semantic-conventions
-  lint-opentelemetry-semantic-conventions: flake8 --config {toxinidir}/.flake8 {toxinidir}/opentelemetry-semantic-conventions
   lint-opentelemetry-semantic-conventions: pylint {toxinidir}/opentelemetry-semantic-conventions
 
   test-opentelemetry-getting-started: pytest {toxinidir}/docs/getting_started/tests {posargs}
-  lint-opentelemetry-getting-started: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/docs/getting_started
-  lint-opentelemetry-getting-started: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/docs/getting_started
-  lint-opentelemetry-getting-started: flake8 --config {toxinidir}/.flake8 {toxinidir}/docs/getting_started
   lint-opentelemetry-getting-started: pylint {toxinidir}/docs/getting_started
 
   test-opentelemetry-opentracing-shim: pytest {toxinidir}/shim/opentelemetry-opentracing-shim/tests {posargs}
-  lint-opentelemetry-opentracing-shim: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/shim/opentelemetry-opentracing-shim
-  lint-opentelemetry-opentracing-shim: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/shim/opentelemetry-opentracing-shim
-  lint-opentelemetry-opentracing-shim: flake8 --config {toxinidir}/.flake8 {toxinidir}/shim/opentelemetry-opentracing-shim
   lint-opentelemetry-opentracing-shim: sh -c "cd shim && pylint --rcfile ../.pylintrc {toxinidir}/shim/opentelemetry-opentracing-shim"
 
   test-opentelemetry-opencensus-shim: pytest {toxinidir}/shim/opentelemetry-opencensus-shim/tests {posargs}
-  lint-opentelemetry-opencensus-shim: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/shim/opentelemetry-opencensus-shim
-  lint-opentelemetry-opencensus-shim: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/shim/opentelemetry-opencensus-shim
-  lint-opentelemetry-opencensus-shim: flake8 --config {toxinidir}/.flake8 {toxinidir}/shim/opentelemetry-opencensus-shim
   lint-opentelemetry-opencensus-shim: sh -c "cd shim && pylint --rcfile ../.pylintrc {toxinidir}/shim/opentelemetry-opencensus-shim"
 
   test-opentelemetry-exporter-opencensus: pytest {toxinidir}/exporter/opentelemetry-exporter-opencensus/tests {posargs}
-  lint-opentelemetry-exporter-opencensus: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-opencensus
-  lint-opentelemetry-exporter-opencensus: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-opencensus
-  lint-opentelemetry-exporter-opencensus: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-opencensus
   lint-opentelemetry-exporter-opencensus: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-opencensus"
 
   test-opentelemetry-exporter-otlp-proto-common: pytest {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common/tests {posargs}
-  lint-opentelemetry-exporter-otlp-proto-common: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common
-  lint-opentelemetry-exporter-otlp-proto-common: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common
-  lint-opentelemetry-exporter-otlp-proto-common: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common
   lint-opentelemetry-exporter-otlp-proto-common: sh -c "cd exporter && pylint --prefer-stubs yes --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-common"
 
   test-opentelemetry-exporter-otlp-combined: pytest {toxinidir}/exporter/opentelemetry-exporter-otlp/tests {posargs}
-  lint-opentelemetry-exporter-otlp-combined: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-otlp
-  lint-opentelemetry-exporter-otlp-combined: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-otlp
-  lint-opentelemetry-exporter-otlp-combined: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-otlp
   lint-opentelemetry-exporter-otlp-combined: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-otlp"
 
   test-opentelemetry-exporter-otlp-proto-grpc: pytest {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/tests {posargs}
-  lint-opentelemetry-exporter-otlp-proto-grpc: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc
-  lint-opentelemetry-exporter-otlp-proto-grpc: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc
-  lint-opentelemetry-exporter-otlp-proto-grpc: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc
   lint-opentelemetry-exporter-otlp-proto-grpc: sh -c "cd exporter && pylint --prefer-stubs yes --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc"
   benchmark-opentelemetry-exporter-otlp-proto-grpc: pytest {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-grpc/benchmarks --benchmark-json=exporter-otlp-proto-grpc-benchmark.json {posargs}
 
   test-opentelemetry-exporter-otlp-proto-http: pytest {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http/tests {posargs}
-  lint-opentelemetry-exporter-otlp-proto-http: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http
-  lint-opentelemetry-exporter-otlp-proto-http: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http
-  lint-opentelemetry-exporter-otlp-proto-http: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http
   lint-opentelemetry-exporter-otlp-proto-http: sh -c "cd exporter && pylint --prefer-stubs yes --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-otlp-proto-http"
 
   test-opentelemetry-exporter-prometheus: pytest {toxinidir}/exporter/opentelemetry-exporter-prometheus/tests {posargs}
-  lint-opentelemetry-exporter-prometheus: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-prometheus
-  lint-opentelemetry-exporter-prometheus: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-prometheus
-  lint-opentelemetry-exporter-prometheus: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-prometheus
   lint-opentelemetry-exporter-prometheus: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-prometheus"
 
   test-opentelemetry-exporter-zipkin-combined: pytest {toxinidir}/exporter/opentelemetry-exporter-zipkin/tests {posargs}
-  lint-opentelemetry-exporter-zipkin-combined: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-zipkin
-  lint-opentelemetry-exporter-zipkin-combined: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-zipkin
-  lint-opentelemetry-exporter-zipkin-combined: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-zipkin
   lint-opentelemetry-exporter-zipkin-combined: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-zipkin"
 
   test-opentelemetry-exporter-zipkin-proto-http: pytest {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http/tests {posargs}
-  lint-opentelemetry-exporter-zipkin-proto-http: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http
-  lint-opentelemetry-exporter-zipkin-proto-http: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http
-  lint-opentelemetry-exporter-zipkin-proto-http: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http
   lint-opentelemetry-exporter-zipkin-proto-http: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-zipkin-proto-http"
 
   test-opentelemetry-exporter-zipkin-json: pytest {toxinidir}/exporter/opentelemetry-exporter-zipkin-json/tests {posargs}
-  lint-opentelemetry-exporter-zipkin-json: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/exporter/opentelemetry-exporter-zipkin-json
-  lint-opentelemetry-exporter-zipkin-json: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/exporter/opentelemetry-exporter-zipkin-json
-  lint-opentelemetry-exporter-zipkin-json: flake8 --config {toxinidir}/.flake8 {toxinidir}/exporter/opentelemetry-exporter-zipkin-json
   lint-opentelemetry-exporter-zipkin-json: sh -c "cd exporter && pylint --rcfile ../.pylintrc {toxinidir}/exporter/opentelemetry-exporter-zipkin-json"
 
   test-opentelemetry-propagator-b3: pytest {toxinidir}/propagator/opentelemetry-propagator-b3/tests {posargs}
-  lint-opentelemetry-propagator-b3: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/propagator/opentelemetry-propagator-b3
-  lint-opentelemetry-propagator-b3: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/propagator/opentelemetry-propagator-b3
-  lint-opentelemetry-propagator-b3: flake8 --config {toxinidir}/.flake8 {toxinidir}/propagator/opentelemetry-propagator-b3
   lint-opentelemetry-propagator-b3: sh -c "cd propagator && pylint --rcfile ../.pylintrc {toxinidir}/propagator/opentelemetry-propagator-b3"
   benchmark-opentelemetry-propagator-b3: pytest {toxinidir}/propagator/opentelemetry-propagator-b3/benchmarks --benchmark-json=propagator-b3-benchmark.json {posargs}
 
   test-opentelemetry-propagator-jaeger: pytest {toxinidir}/propagator/opentelemetry-propagator-jaeger/tests {posargs}
-  lint-opentelemetry-propagator-jaeger: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/propagator/opentelemetry-propagator-jaeger
-  lint-opentelemetry-propagator-jaeger: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/propagator/opentelemetry-propagator-jaeger
-  lint-opentelemetry-propagator-jaeger: flake8 --config {toxinidir}/.flake8 {toxinidir}/propagator/opentelemetry-propagator-jaeger
   lint-opentelemetry-propagator-jaeger: sh -c "cd propagator && pylint --rcfile ../.pylintrc {toxinidir}/propagator/opentelemetry-propagator-jaeger"
 
   test-opentelemetry-test-utils: pytest {toxinidir}/tests/opentelemetry-test-utils/tests {posargs}
-  lint-opentelemetry-test-utils: black --diff --check --config {toxinidir}/pyproject.toml {toxinidir}/tests/opentelemetry-test-utils
-  lint-opentelemetry-test-utils: isort --diff --check-only --settings-path {toxinidir}/.isort.cfg {toxinidir}/tests/opentelemetry-test-utils
-  lint-opentelemetry-test-utils: flake8 --config {toxinidir}/.flake8 {toxinidir}/tests/opentelemetry-test-utils
   lint-opentelemetry-test-utils: sh -c "cd tests && pylint --rcfile ../.pylintrc {toxinidir}/tests/opentelemetry-test-utils"
 
   coverage: {toxinidir}/scripts/coverage.sh
@@ -301,17 +245,6 @@ commands =
 ; implicit Any due to unfollowed import would result).
   mypyinstalled: mypy --install-types --non-interactive --namespace-packages opentelemetry-api/tests/mypysmoke.py --strict
 
-[testenv:lint]
-basepython: python3
-recreate = True
-deps =
-  -r dev-requirements.txt
-
-commands =
-  black --config {toxinidir}/pyproject.toml {toxinidir} --diff --check
-  isort --settings-path {toxinidir}/.isort.cfg {toxinidir} --diff --check-only
-  flake8 --config {toxinidir}/.flake8 {toxinidir}
-
 [testenv:spellcheck]
 basepython: python3
 recreate = True
@@ -435,3 +368,11 @@ commands_pre =
 commands =
   pyright --version
   pyright
+
+[testenv:ruff]
+basepython: python3
+deps =
+  -c {toxinidir}/dev-requirements.txt
+  pre-commit
+commands =
+  pre-commit run --color=always --all-files {posargs}


Test patch:
diff --git a/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_metrics_encoder.py b/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_metrics_encoder.py
index ef0ae98b501..44092bdc18a 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_metrics_encoder.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-common/tests/test_metrics_encoder.py
@@ -33,19 +33,20 @@
 from opentelemetry.proto.resource.v1.resource_pb2 import (
     Resource as OTLPResource,
 )
-from opentelemetry.sdk.metrics.export import AggregationTemporality, Buckets
-from opentelemetry.sdk.metrics.export import (
-    ExponentialHistogram as ExponentialHistogramType,
-)
-from opentelemetry.sdk.metrics.export import ExponentialHistogramDataPoint
-from opentelemetry.sdk.metrics.export import Histogram as HistogramType
 from opentelemetry.sdk.metrics.export import (
+    AggregationTemporality,
+    Buckets,
+    ExponentialHistogramDataPoint,
     HistogramDataPoint,
     Metric,
     MetricsData,
     ResourceMetrics,
     ScopeMetrics,
 )
+from opentelemetry.sdk.metrics.export import (
+    ExponentialHistogram as ExponentialHistogramType,
+)
+from opentelemetry.sdk.metrics.export import Histogram as HistogramType
 from opentelemetry.sdk.resources import Resource
 from opentelemetry.sdk.util.instrumentation import (
     InstrumentationScope as SDKInstrumentationScope,
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py
index 5840b7360f2..a31679fb0d5 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/logs/test_otlp_logs_exporter.py
@@ -43,11 +43,10 @@
     LogsServiceServicer,
     add_LogsServiceServicer_to_server,
 )
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue
+from opentelemetry.proto.common.v1.common_pb2 import AnyValue, KeyValue
 from opentelemetry.proto.common.v1.common_pb2 import (
     InstrumentationScope as PB2InstrumentationScope,
 )
-from opentelemetry.proto.common.v1.common_pb2 import KeyValue
 from opentelemetry.proto.logs.v1.logs_pb2 import LogRecord as PB2LogRecord
 from opentelemetry.proto.logs.v1.logs_pb2 import ResourceLogs, ScopeLogs
 from opentelemetry.proto.resource.v1.resource_pb2 import (
@@ -395,7 +394,6 @@ def test_otlp_headers_from_env(self):
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [0.01]})
 
         add_LogsServiceServicer_to_server(
@@ -411,7 +409,6 @@ def test_unavailable(self, mock_sleep, mock_expo):
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable_delay(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [1]})
 
         add_LogsServiceServicer_to_server(
@@ -476,7 +473,6 @@ def test_exported_log_without_span_id(self):
             self.fail("No log records found")
 
     def test_translate_log_data(self):
-
         expected = ExportLogsServiceRequest(
             resource_logs=[
                 ResourceLogs(
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py
index d1b7ce9df59..1d2bae2486d 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_metrics_exporter.py
@@ -148,7 +148,6 @@ class TestOTLPMetricExporter(TestCase):
     # pylint: disable=too-many-public-methods
 
     def setUp(self):
-
         self.exporter = OTLPMetricExporter()
 
         self.server = server(ThreadPoolExecutor(max_workers=10))
@@ -487,7 +486,6 @@ def test_otlp_exporter_otlp_compression_unspecified(
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [0.01]})
 
         add_MetricsServiceServicer_to_server(
@@ -504,7 +502,6 @@ def test_unavailable(self, mock_sleep, mock_expo):
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable_delay(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [1]})
 
         add_MetricsServiceServicer_to_server(
@@ -522,7 +519,6 @@ def test_unavailable_delay(self, mock_sleep, mock_expo):
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.logger.error")
     def test_unknown_logs(self, mock_logger_error, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [1]})
 
         add_MetricsServiceServicer_to_server(
@@ -892,7 +888,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "CUMULATIVE"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             for (
@@ -905,7 +900,6 @@ def test_aggregation_temporality(self):
         with patch.dict(
             environ, {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "ABC"}
         ):
-
             with self.assertLogs(level=WARNING):
                 otlp_metric_exporter = OTLPMetricExporter()
 
@@ -920,7 +914,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             self.assertEqual(
@@ -954,7 +947,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "LOWMEMORY"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             self.assertEqual(
@@ -985,7 +977,6 @@ def test_aggregation_temporality(self):
             )
 
     def test_exponential_explicit_bucket_histogram(self):
-
         self.assertIsInstance(
             # pylint: disable=protected-access
             OTLPMetricExporter()._preferred_aggregation[Histogram],
@@ -1036,7 +1027,6 @@ def test_exponential_explicit_bucket_histogram(self):
             )
 
     def test_preferred_aggregation_override(self):
-
         histogram_aggregation = ExplicitBucketHistogramAggregation(
             boundaries=[0.05, 0.1, 0.5, 1, 5, 10],
         )
diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py
index 7facce1f70f..fe0b94ac787 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/tests/test_otlp_trace_exporter.py
@@ -46,17 +46,23 @@
     TraceServiceServicer,
     add_TraceServiceServicer_to_server,
 )
-from opentelemetry.proto.common.v1.common_pb2 import AnyValue, ArrayValue
+from opentelemetry.proto.common.v1.common_pb2 import (
+    AnyValue,
+    ArrayValue,
+    KeyValue,
+)
 from opentelemetry.proto.common.v1.common_pb2 import (
     InstrumentationScope as PB2InstrumentationScope,
 )
-from opentelemetry.proto.common.v1.common_pb2 import KeyValue
 from opentelemetry.proto.resource.v1.resource_pb2 import (
     Resource as OTLPResource,
 )
-from opentelemetry.proto.trace.v1.trace_pb2 import ResourceSpans, ScopeSpans
+from opentelemetry.proto.trace.v1.trace_pb2 import (
+    ResourceSpans,
+    ScopeSpans,
+    Status,
+)
 from opentelemetry.proto.trace.v1.trace_pb2 import Span as OTLPSpan
-from opentelemetry.proto.trace.v1.trace_pb2 import Status
 from opentelemetry.sdk.environment_variables import (
     OTEL_EXPORTER_OTLP_COMPRESSION,
     OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE,
@@ -528,7 +534,6 @@ def test_otlp_headers(self, mock_ssl_channel, mock_secure):
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [0.01]})
 
         add_TraceServiceServicer_to_server(
@@ -543,7 +548,6 @@ def test_unavailable(self, mock_sleep, mock_expo):
     )
     @patch("opentelemetry.exporter.otlp.proto.grpc.exporter.sleep")
     def test_unavailable_delay(self, mock_sleep, mock_expo):
-
         mock_expo.configure_mock(**{"return_value": [1]})
 
         add_TraceServiceServicer_to_server(
@@ -571,7 +575,6 @@ def test_failure(self):
         )
 
     def test_translate_spans(self):
-
         expected = ExportTraceServiceRequest(
             resource_spans=[
                 ResourceSpans(
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/metrics/test_otlp_metrics_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/metrics/test_otlp_metrics_exporter.py
index ac039d4ff81..dc0b1d985f1 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/metrics/test_otlp_metrics_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/metrics/test_otlp_metrics_exporter.py
@@ -86,7 +86,6 @@
 # pylint: disable=protected-access
 class TestOTLPMetricExporter(TestCase):
     def setUp(self):
-
         self.metrics = {
             "sum_int": MetricsData(
                 resource_metrics=[
@@ -113,7 +112,6 @@ def setUp(self):
         }
 
     def test_constructor_default(self):
-
         exporter = OTLPMetricExporter()
 
         self.assertEqual(
@@ -218,7 +216,6 @@ def test_exporter_constructor_take_priority(self):
         },
     )
     def test_exporter_env(self):
-
         exporter = OTLPMetricExporter()
 
         self.assertEqual(exporter._certificate_file, OS_ENV_CERTIFICATE)
@@ -237,7 +234,6 @@ def test_exporter_env(self):
         {OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT},
     )
     def test_exporter_env_endpoint_without_slash(self):
-
         exporter = OTLPMetricExporter()
 
         self.assertEqual(
@@ -250,7 +246,6 @@ def test_exporter_env_endpoint_without_slash(self):
         {OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT + "/"},
     )
     def test_exporter_env_endpoint_with_slash(self):
-
         exporter = OTLPMetricExporter()
 
         self.assertEqual(
@@ -265,7 +260,6 @@ def test_exporter_env_endpoint_with_slash(self):
         },
     )
     def test_headers_parse_from_env(self):
-
         with self.assertLogs(level="WARNING") as cm:
             _ = OTLPMetricExporter()
 
@@ -307,7 +301,6 @@ def test_failure(self, mock_post):
 
     @patch.object(Session, "post")
     def test_serialization(self, mock_post):
-
         resp = Response()
         resp.status_code = 200
         mock_post.return_value = resp
@@ -350,7 +343,6 @@ def test_exponential_backoff(self, mock_sleep):
         )
 
     def test_aggregation_temporality(self):
-
         otlp_metric_exporter = OTLPMetricExporter()
 
         for (
@@ -362,7 +354,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "CUMULATIVE"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             for (
@@ -375,7 +366,6 @@ def test_aggregation_temporality(self):
         with patch.dict(
             environ, {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "ABC"}
         ):
-
             with self.assertLogs(level=WARNING):
                 otlp_metric_exporter = OTLPMetricExporter()
 
@@ -390,7 +380,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "DELTA"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             self.assertEqual(
@@ -424,7 +413,6 @@ def test_aggregation_temporality(self):
             environ,
             {OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE: "LOWMEMORY"},
         ):
-
             otlp_metric_exporter = OTLPMetricExporter()
 
             self.assertEqual(
@@ -455,7 +443,6 @@ def test_aggregation_temporality(self):
             )
 
     def test_exponential_explicit_bucket_histogram(self):
-
         self.assertIsInstance(
             OTLPMetricExporter()._preferred_aggregation[Histogram],
             ExplicitBucketHistogramAggregation,
@@ -513,7 +500,6 @@ def test_2xx_status_code(self, mock_otlp_metric_exporter):
         )
 
     def test_preferred_aggregation_override(self):
-
         histogram_aggregation = ExplicitBucketHistogramAggregation(
             boundaries=[0.05, 0.1, 0.5, 1, 5, 10],
         )
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py
index f5606794620..66b0f890d76 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_log_exporter.py
@@ -68,7 +68,6 @@
 
 class TestOTLPHTTPLogExporter(unittest.TestCase):
     def test_constructor_default(self):
-
         exporter = OTLPLogExporter()
 
         self.assertEqual(
@@ -181,7 +180,6 @@ def test_exporter_constructor_take_priority(self):
         },
     )
     def test_exporter_env(self):
-
         exporter = OTLPLogExporter()
 
         self.assertEqual(
diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py
index 9d57c62bae8..8d8ff6037aa 100644
--- a/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py
+++ b/exporter/opentelemetry-exporter-otlp-proto-http/tests/test_proto_span_exporter.py
@@ -57,7 +57,6 @@
 # pylint: disable=protected-access
 class TestOTLPSpanExporter(unittest.TestCase):
     def test_constructor_default(self):
-
         exporter = OTLPSpanExporter()
 
         self.assertEqual(
@@ -171,7 +170,6 @@ def test_exporter_constructor_take_priority(self):
         },
     )
     def test_exporter_env(self):
-
         exporter = OTLPSpanExporter()
 
         self.assertEqual(exporter._certificate_file, OS_ENV_CERTIFICATE)
@@ -190,7 +188,6 @@ def test_exporter_env(self):
         {OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT},
     )
     def test_exporter_env_endpoint_without_slash(self):
-
         exporter = OTLPSpanExporter()
 
         self.assertEqual(
@@ -203,7 +200,6 @@ def test_exporter_env_endpoint_without_slash(self):
         {OTEL_EXPORTER_OTLP_ENDPOINT: OS_ENV_ENDPOINT + "/"},
     )
     def test_exporter_env_endpoint_with_slash(self):
-
         exporter = OTLPSpanExporter()
 
         self.assertEqual(
@@ -218,7 +214,6 @@ def test_exporter_env_endpoint_with_slash(self):
         },
     )
     def test_headers_parse_from_env(self):
-
         with self.assertLogs(level="WARNING") as cm:
             _ = OTLPSpanExporter()
 
diff --git a/exporter/opentelemetry-exporter-prometheus/tests/test_prometheus_exporter.py b/exporter/opentelemetry-exporter-prometheus/tests/test_prometheus_exporter.py
index ed11bb9ab7b..52a18963715 100644
--- a/exporter/opentelemetry-exporter-prometheus/tests/test_prometheus_exporter.py
+++ b/exporter/opentelemetry-exporter-prometheus/tests/test_prometheus_exporter.py
@@ -321,7 +321,6 @@ def test_list_labels(self):
             self.assertEqual(prometheus_metric.samples[0].labels["os"], "Unix")
 
     def test_check_value(self):
-
         collector = _CustomCollector()
 
         self.assertEqual(collector._check_value(1), "1")
@@ -335,7 +334,6 @@ def test_check_value(self):
         self.assertEqual(collector._check_value(None), "null")
 
     def test_multiple_collection_calls(self):
-
         metric_reader = PrometheusMetricReader()
         provider = MeterProvider(metric_readers=[metric_reader])
         meter = provider.get_meter("getting-started", "0.1.2")
diff --git a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/test_v1_json.py b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/test_v1_json.py
index 778ed74e8d7..7ff4e9b276e 100644
--- a/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/test_v1_json.py
+++ b/exporter/opentelemetry-exporter-zipkin-json/tests/encoder/test_v1_json.py
@@ -41,7 +41,6 @@ def get_encoder(*args, **kwargs) -> JsonV1Encoder:
         return JsonV1Encoder(*args, **kwargs)
 
     def test_encode(self):
-
         local_endpoint = {"serviceName": TEST_SERVICE_NAME}
 
         otel_spans = self.get_exhaustive_otel_span_list()
diff --git a/opentelemetry-api/tests/events/test_event_logger_provider.py b/opentelemetry-api/tests/events/test_event_logger_provider.py
index 35a8ea0c44e..4c8bb54c8de 100644
--- a/opentelemetry-api/tests/events/test_event_logger_provider.py
+++ b/opentelemetry-api/tests/events/test_event_logger_provider.py
@@ -35,7 +35,6 @@ def test_get_event_logger_provider(self):
                 "OTEL_PYTHON_EVENT_LOGGER_PROVIDER": "test_event_logger_provider"
             },
         ):
-
             with patch("opentelemetry._events._load_provider", Mock()):
                 with patch(
                     "opentelemetry._events.cast",
diff --git a/opentelemetry-api/tests/logs/test_logger_provider.py b/opentelemetry-api/tests/logs/test_logger_provider.py
index 71f403c695f..2bd4041b66a 100644
--- a/opentelemetry-api/tests/logs/test_logger_provider.py
+++ b/opentelemetry-api/tests/logs/test_logger_provider.py
@@ -53,7 +53,6 @@ def test_get_logger_provider(self):
             "os.environ",
             {_OTEL_PYTHON_LOGGER_PROVIDER: "test_logger_provider"},
         ):
-
             with patch("opentelemetry._logs._internal._load_provider", Mock()):
                 with patch(
                     "opentelemetry._logs._internal.cast",
diff --git a/opentelemetry-api/tests/metrics/test_instruments.py b/opentelemetry-api/tests/metrics/test_instruments.py
index 840fbf6e132..982cb6b6112 100644
--- a/opentelemetry-api/tests/metrics/test_instruments.py
+++ b/opentelemetry-api/tests/metrics/test_instruments.py
@@ -677,7 +677,6 @@ def test_name_check(self):
         )
 
     def test_unit_check(self):
-
         instrument = ChildInstrument("name")
 
         self.assertEqual(
@@ -711,7 +710,6 @@ def test_unit_check(self):
         )
 
     def test_description_check(self):
-
         instrument = ChildInstrument("name")
 
         self.assertEqual(
diff --git a/opentelemetry-api/tests/metrics/test_meter.py b/opentelemetry-api/tests/metrics/test_meter.py
index 984690bdbbf..4fb9e047b60 100644
--- a/opentelemetry-api/tests/metrics/test_meter.py
+++ b/opentelemetry-api/tests/metrics/test_meter.py
@@ -63,7 +63,6 @@ def create_observable_up_down_counter(
 class TestMeter(TestCase):
     # pylint: disable=no-member
     def test_repeated_instrument_names(self):
-
         try:
             test_meter = NoOpMeter("name")
 
diff --git a/opentelemetry-api/tests/metrics/test_meter_provider.py b/opentelemetry-api/tests/metrics/test_meter_provider.py
index 8caec848f65..a570d47624f 100644
--- a/opentelemetry-api/tests/metrics/test_meter_provider.py
+++ b/opentelemetry-api/tests/metrics/test_meter_provider.py
@@ -98,7 +98,6 @@ def test_get_meter_provider(reset_meter_provider):
     with patch.dict(
         "os.environ", {OTEL_PYTHON_METER_PROVIDER: "test_meter_provider"}
     ):
-
         with patch("opentelemetry.metrics._internal._load_provider", Mock()):
             with patch(
                 "opentelemetry.metrics._internal.cast",
diff --git a/opentelemetry-api/tests/propagators/test_propagators.py b/opentelemetry-api/tests/propagators/test_propagators.py
index 29065b8cb3e..f0554ad2812 100644
--- a/opentelemetry-api/tests/propagators/test_propagators.py
+++ b/opentelemetry-api/tests/propagators/test_propagators.py
@@ -32,7 +32,6 @@ class TestPropagators(TestCase):
     @patch("opentelemetry.propagators.composite.CompositePropagator")
     def test_default_composite_propagators(self, mock_compositehttppropagator):
         def test_propagators(propagators):
-
             propagators = {propagator.__class__ for propagator in propagators}
 
             self.assertEqual(len(propagators), 2)
@@ -56,7 +55,6 @@ def test_propagators(propagators):
     def test_non_default_propagators(
         self, mock_entry_points, mock_compositehttppropagator
     ):
-
         mock_entry_points.configure_mock(
             **{
                 "side_effect": [
@@ -107,7 +105,6 @@ def test_propagators(propagators):
         environ, {OTEL_PROPAGATORS: "tracecontext , unknown , baggage"}
     )
     def test_composite_propagators_error(self):
-
         with self.assertRaises(ValueError) as cm:
             # pylint: disable=import-outside-toplevel
             import opentelemetry.propagate
diff --git a/opentelemetry-api/tests/propagators/test_w3cbaggagepropagator.py b/opentelemetry-api/tests/propagators/test_w3cbaggagepropagator.py
index 2200fc6f384..46db45f4d34 100644
--- a/opentelemetry-api/tests/propagators/test_w3cbaggagepropagator.py
+++ b/opentelemetry-api/tests/propagators/test_w3cbaggagepropagator.py
@@ -130,7 +130,6 @@ def test_extract_unquote_plus(self):
         )
 
     def test_header_max_entries_skip_invalid_entry(self):
-
         with self.assertLogs(level=WARNING) as warning:
             self.assertEqual(
                 self._extract(
@@ -227,7 +226,6 @@ def test_inject_non_string_values(self):
     @patch("opentelemetry.baggage.propagation.get_all")
     @patch("opentelemetry.baggage.propagation._format_baggage")
     def test_fields(self, mock_format_baggage, mock_baggage):
-
         mock_setter = Mock()
 
         self.propagator.inject({}, setter=mock_setter)
@@ -250,7 +248,6 @@ def test__format_baggage(self):
 
     @patch("opentelemetry.baggage._BAGGAGE_KEY", new="abc")
     def test_inject_extract(self):
-
         carrier = {}
 
         context = set_baggage(
diff --git a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py
index 9db07add257..4ad9e89069d 100644
--- a/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py
+++ b/opentelemetry-api/tests/trace/propagation/test_tracecontexthttptextformat.py
@@ -245,7 +245,6 @@ def test_tracestate_keys(self):
     @patch("opentelemetry.trace.INVALID_SPAN_CONTEXT")
     @patch("opentelemetry.trace.get_current_span")
     def test_fields(self, mock_get_current_span, mock_invalid_span_context):
-
         mock_get_current_span.configure_mock(
             return_value=Mock(
                 **{
diff --git a/opentelemetry-api/tests/trace/test_globals.py b/opentelemetry-api/tests/trace/test_globals.py
index 6860f98e9e4..f5475cb8eba 100644
--- a/opentelemetry-api/tests/trace/test_globals.py
+++ b/opentelemetry-api/tests/trace/test_globals.py
@@ -111,7 +111,6 @@ def test_use_span(self):
         self.assertEqual(trace.get_current_span(), trace.INVALID_SPAN)
 
     def test_use_span_end_on_exit(self):
-
         test_span = SpanTest(trace.INVALID_SPAN_CONTEXT)
 
         with trace.use_span(test_span):
diff --git a/opentelemetry-api/tests/trace/test_status.py b/opentelemetry-api/tests/trace/test_status.py
index 6388ae98049..d7ea944e646 100644
--- a/opentelemetry-api/tests/trace/test_status.py
+++ b/opentelemetry-api/tests/trace/test_status.py
@@ -30,7 +30,10 @@ def test_constructor(self):
 
     def test_invalid_description(self):
         with self.assertLogs(level=WARNING) as warning:
-            status = Status(status_code=StatusCode.ERROR, description={"test": "val"})  # type: ignore
+            status = Status(
+                status_code=StatusCode.ERROR,
+                description={"test": "val"},  # type: ignore
+            )
             self.assertIs(status.status_code, StatusCode.ERROR)
             self.assertEqual(status.description, None)
             self.assertIn(
diff --git a/opentelemetry-api/tests/util/test__importlib_metadata.py b/opentelemetry-api/tests/util/test__importlib_metadata.py
index dce949c47d8..78551536fe7 100644
--- a/opentelemetry-api/tests/util/test__importlib_metadata.py
+++ b/opentelemetry-api/tests/util/test__importlib_metadata.py
@@ -15,16 +15,18 @@
 from unittest import TestCase
 
 from opentelemetry.metrics import MeterProvider
-from opentelemetry.util._importlib_metadata import EntryPoint, EntryPoints
+from opentelemetry.util._importlib_metadata import (
+    EntryPoint,
+    EntryPoints,
+    version,
+)
 from opentelemetry.util._importlib_metadata import (
     entry_points as importlib_metadata_entry_points,
 )
-from opentelemetry.util._importlib_metadata import version
 
 
 class TestEntryPoints(TestCase):
     def test_entry_points(self):
-
         self.assertIsInstance(
             next(
                 iter(
diff --git a/opentelemetry-api/tests/util/test__providers.py b/opentelemetry-api/tests/util/test__providers.py
index 940303f1375..8b2e46b7ec5 100644
--- a/opentelemetry-api/tests/util/test__providers.py
+++ b/opentelemetry-api/tests/util/test__providers.py
@@ -29,7 +29,6 @@ class Test_Providers(TestCase):  # pylint: disable=invalid-name
     )
     @patch("opentelemetry.util._importlib_metadata.entry_points")
     def test__providers(self, mock_entry_points):
-
         reload(_providers)
 
         mock_entry_points.configure_mock(
diff --git a/opentelemetry-proto/tests/test_proto.py b/opentelemetry-proto/tests/test_proto.py
index 9670be46276..5c041162437 100644
--- a/opentelemetry-proto/tests/test_proto.py
+++ b/opentelemetry-proto/tests/test_proto.py
@@ -19,6 +19,5 @@
 
 class TestInstrumentor(TestCase):
     def test_proto(self):
-
         if find_spec("opentelemetry.proto") is None:
             self.fail("opentelemetry-proto not installed")
diff --git a/opentelemetry-sdk/tests/error_handler/test_error_handler.py b/opentelemetry-sdk/tests/error_handler/test_error_handler.py
index 9dc1b67256c..b753c1c5970 100644
--- a/opentelemetry-sdk/tests/error_handler/test_error_handler.py
+++ b/opentelemetry-sdk/tests/error_handler/test_error_handler.py
@@ -26,7 +26,6 @@
 class TestErrorHandler(TestCase):
     @patch("opentelemetry.sdk.error_handler.entry_points")
     def test_default_error_handler(self, mock_entry_points):
-
         with self.assertLogs(logger, ERROR):
             with GlobalErrorHandler():
                 # pylint: disable=broad-exception-raised
@@ -104,7 +103,6 @@ def _handle(self, error: Exception):
     # pylint: disable=no-self-use
     @patch("opentelemetry.sdk.error_handler.entry_points")
     def test_plugin_error_handler_context_manager(self, mock_entry_points):
-
         mock_error_handler_instance = Mock()
 
         class MockErrorHandlerClass(IndexError):
diff --git a/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py b/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py
index 920c6679044..3583148b41a 100644
--- a/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py
+++ b/opentelemetry-sdk/tests/logs/test_logger_provider_cache.py
@@ -24,7 +24,6 @@ def create_logger(handler, name):
 
 
 class TestLoggerProviderCache(unittest.TestCase):
-
     def test_get_logger_single_handler(self):
         handler, logger_provider = set_up_logging_handler(level=logging.DEBUG)
         # pylint: disable=protected-access
diff --git a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponent_mapping.py b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponent_mapping.py
index e3fd6ae4448..5a7a43aa954 100644
--- a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponent_mapping.py
+++ b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_exponent_mapping.py
@@ -49,7 +49,6 @@ def right_boundary(scale: int, index: int) -> float:
 
 class TestExponentMapping(TestCase):
     def test_singleton(self):
-
         self.assertIs(ExponentMapping(-3), ExponentMapping(-3))
         self.assertIsNot(ExponentMapping(-3), ExponentMapping(-5))
 
@@ -63,19 +62,16 @@ def test_singleton(self):
         "exponent_mapping.ExponentMapping._init"
     )
     def test_init_called_once(self, mock_init):  # pylint: disable=no-self-use
-
         ExponentMapping(-3)
         ExponentMapping(-3)
 
         mock_init.assert_called_once()
 
     def test_exponent_mapping_0(self):
-
         with self.assertNotRaises(Exception):
             ExponentMapping(0)
 
     def test_exponent_mapping_zero(self):
-
         exponent_mapping = ExponentMapping(0)
 
         # This is the equivalent to 1.1 in hexadecimal
@@ -135,7 +131,6 @@ def test_exponent_mapping_zero(self):
         )
 
     def test_exponent_mapping_min_scale(self):
-
         exponent_mapping = ExponentMapping(ExponentMapping._min_scale)
         self.assertEqual(exponent_mapping.map_to_index(1.000001), 0)
         self.assertEqual(exponent_mapping.map_to_index(1), -1)
@@ -309,7 +304,6 @@ def test_exponent_mapping_neg_four(self):
         self.assertEqual(exponent_mapping.map_to_index(2**-975), -61)
 
     def test_exponent_index_max(self):
-
         for scale in range(
             ExponentMapping._min_scale, ExponentMapping._max_scale
         ):
diff --git a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_logarithm_mapping.py b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_logarithm_mapping.py
index 43820d677b0..d8f9c4ae327 100644
--- a/opentelemetry-sdk/tests/metrics/exponential_histogram/test_logarithm_mapping.py
+++ b/opentelemetry-sdk/tests/metrics/exponential_histogram/test_logarithm_mapping.py
@@ -34,7 +34,6 @@
 
 
 def left_boundary(scale: int, index: int) -> float:
-
     # This is implemented in this way to avoid using a third-party bigfloat
     # package. The Go implementation uses a bigfloat package that is part of
     # their standard library. The assumption here is that the smallest float
@@ -70,7 +69,6 @@ def assertInEpsilon(self, first, second, epsilon):
         "logarithm_mapping.LogarithmMapping._init"
     )
     def test_init_called_once(self, mock_init):  # pylint: disable=no-self-use
-
         LogarithmMapping(3)
         LogarithmMapping(3)
 
@@ -81,7 +79,6 @@ def test_invalid_scale(self):
             LogarithmMapping(-1)
 
     def test_logarithm_mapping_scale_one(self):
-
         # The exponentiation factor for this logarithm exponent histogram
         # mapping is square_root(2).
         # Scale 1 means 1 division between every power of two, having
@@ -133,12 +130,10 @@ def test_logarithm_mapping_scale_one(self):
         )
 
     def test_logarithm_boundary(self):
-
         for scale in [1, 2, 3, 4, 10, 15]:
             logarithm_exponent_histogram_mapping = LogarithmMapping(scale)
 
             for index in [-100, -10, -1, 0, 1, 10, 100]:
-
                 lower_boundary = (
                     logarithm_exponent_histogram_mapping.get_lower_boundary(
                         index
@@ -159,7 +154,6 @@ def test_logarithm_boundary(self):
                 )
 
     def test_logarithm_index_max(self):
-
         for scale in range(
             LogarithmMapping._min_scale, LogarithmMapping._max_scale + 1
         ):
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_console_exporter.py b/opentelemetry-sdk/tests/metrics/integration_test/test_console_exporter.py
index 7e77a878d87..ca934b14ccf 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_console_exporter.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_console_exporter.py
@@ -38,7 +38,6 @@ def tearDown(self):
         reset_metrics_globals()
 
     def test_console_exporter(self):
-
         output = StringIO()
         exporter = ConsoleMetricExporter(out=output)
         reader = PeriodicExportingMetricReader(
@@ -79,7 +78,6 @@ def test_console_exporter(self):
         self.assertEqual(metrics["value"], 1)
 
     def test_console_exporter_no_export(self):
-
         output = StringIO()
         exporter = ConsoleMetricExporter(out=output)
         reader = PeriodicExportingMetricReader(
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_explicit_bucket_histogram_aggregation.py b/opentelemetry-sdk/tests/metrics/integration_test/test_explicit_bucket_histogram_aggregation.py
index fee13525a32..05ccd1469c9 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_explicit_bucket_histogram_aggregation.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_explicit_bucket_histogram_aggregation.py
@@ -27,7 +27,6 @@
 
 
 class TestExplicitBucketHistogramAggregation(TestCase):
-
     test_values = [1, 6, 11, 26, 51, 76, 101, 251, 501, 751]
 
     @mark.skipif(
@@ -39,7 +38,6 @@ class TestExplicitBucketHistogramAggregation(TestCase):
         ),
     )
     def test_synchronous_delta_temporality(self):
-
         aggregation = ExplicitBucketHistogramAggregation()
 
         reader = InMemoryMetricReader(
@@ -55,7 +53,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -122,7 +119,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -171,7 +167,6 @@ def test_synchronous_delta_temporality(self):
         ),
     )
     def test_synchronous_cumulative_temporality(self):
-
         aggregation = ExplicitBucketHistogramAggregation()
 
         reader = InMemoryMetricReader(
@@ -189,7 +184,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -198,7 +192,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for test_value in self.test_values:
-
             histogram.record(test_value)
             results.append(reader.get_metrics_data())
 
@@ -212,7 +205,6 @@ def test_synchronous_cumulative_temporality(self):
         )
 
         for index, metrics_data in enumerate(results):
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -246,7 +238,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         provider.shutdown()
@@ -261,7 +252,6 @@ def test_synchronous_cumulative_temporality(self):
         )
 
         for metrics_data in results:
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_exponential_bucket_histogram.py b/opentelemetry-sdk/tests/metrics/integration_test/test_exponential_bucket_histogram.py
index a6750eecf54..fa44cc6ce50 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_exponential_bucket_histogram.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_exponential_bucket_histogram.py
@@ -29,7 +29,6 @@
 
 
 class TestExponentialBucketHistogramAggregation(TestCase):
-
     test_values = [2, 4, 1, 1, 8, 0.5, 0.1, 0.045]
 
     @mark.skipif(
@@ -67,7 +66,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -132,7 +130,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -184,7 +181,6 @@ def test_synchronous_delta_temporality(self):
         ),
     )
     def test_synchronous_cumulative_temporality(self):
-
         aggregation = ExponentialBucketHistogramAggregation()
 
         reader = InMemoryMetricReader(
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_histogram_export.py b/opentelemetry-sdk/tests/metrics/integration_test/test_histogram_export.py
index 6095781cb21..303ad187f91 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_histogram_export.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_histogram_export.py
@@ -25,7 +25,6 @@
 
 class TestHistogramExport(TestCase):
     def test_histogram_counter_collection(self):
-
         in_memory_metric_reader = InMemoryMetricReader()
 
         provider = MeterProvider(
@@ -94,7 +93,6 @@ def test_histogram_counter_collection(self):
         )
 
     def test_histogram_with_exemplars(self):
-
         in_memory_metric_reader = InMemoryMetricReader()
 
         provider = MeterProvider(
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_sum_aggregation.py b/opentelemetry-sdk/tests/metrics/integration_test/test_sum_aggregation.py
index 0d56ca92bc5..b876ac99064 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_sum_aggregation.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_sum_aggregation.py
@@ -41,7 +41,6 @@ class TestSumAggregation(TestCase):
         ),
     )
     def test_asynchronous_delta_temporality(self):
-
         eight_multiple_generator = count(start=8, step=8)
 
         counter = 0
@@ -127,7 +126,6 @@ def observable_counter_callback(callback_options):
         )
 
         for metrics_data in results[1:]:
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -166,7 +164,6 @@ def observable_counter_callback(callback_options):
         ),
     )
     def test_asynchronous_cumulative_temporality(self):
-
         eight_multiple_generator = count(start=8, step=8)
 
         counter = 0
@@ -228,7 +225,6 @@ def observable_counter_callback(callback_options):
         )
 
         for index, metrics_data in enumerate(results):
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -263,7 +259,6 @@ def observable_counter_callback(callback_options):
         ),
     )
     def test_synchronous_delta_temporality(self):
-
         aggregation = SumAggregation()
 
         reader = InMemoryMetricReader(
@@ -279,7 +274,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -325,7 +319,6 @@ def test_synchronous_delta_temporality(self):
         )
 
         for metrics_data in results[1:]:
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -345,7 +338,6 @@ def test_synchronous_delta_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -394,7 +386,6 @@ def test_synchronous_delta_temporality(self):
         ),
     )
     def test_synchronous_cumulative_temporality(self):
-
         aggregation = SumAggregation()
 
         reader = InMemoryMetricReader(
@@ -410,7 +401,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         for metrics_data in results:
@@ -419,7 +409,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for _ in range(10):
-
             counter.add(8)
             results.append(reader.get_metrics_data())
 
@@ -433,7 +422,6 @@ def test_synchronous_cumulative_temporality(self):
         )
 
         for index, metrics_data in enumerate(results):
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -449,7 +437,6 @@ def test_synchronous_cumulative_temporality(self):
         results = []
 
         for _ in range(10):
-
             results.append(reader.get_metrics_data())
 
         provider.shutdown()
@@ -464,7 +451,6 @@ def test_synchronous_cumulative_temporality(self):
         )
 
         for metrics_data in results:
-
             metric_data = (
                 metrics_data.resource_metrics[0]
                 .scope_metrics[0]
@@ -478,7 +464,6 @@ def test_synchronous_cumulative_temporality(self):
             self.assertEqual(metric_data.value, 80)
 
     def test_sum_aggregation_with_exemplars(self):
-
         in_memory_metric_reader = InMemoryMetricReader()
 
         provider = MeterProvider(
diff --git a/opentelemetry-sdk/tests/metrics/integration_test/test_time_align.py b/opentelemetry-sdk/tests/metrics/integration_test/test_time_align.py
index 32f439af85f..b04056f4a1a 100644
--- a/opentelemetry-sdk/tests/metrics/integration_test/test_time_align.py
+++ b/opentelemetry-sdk/tests/metrics/integration_test/test_time_align.py
@@ -26,7 +26,6 @@
 
 
 class TestTimeAlign(TestCase):
-
     # This delay is needed for these tests to pass when they are run in
     # Windows.
     delay = 0.001
diff --git a/opentelemetry-sdk/tests/metrics/test_aggregation.py b/opentelemetry-sdk/tests/metrics/test_aggregation.py
index 3eeb63e26c3..4a625908afb 100644
--- a/opentelemetry-sdk/tests/metrics/test_aggregation.py
+++ b/opentelemetry-sdk/tests/metrics/test_aggregation.py
@@ -657,7 +657,6 @@ def test_observable_gauge(self):
 
 
 class TestExemplarsFromAggregations(TestCase):
-
     def test_collection_simple_fixed_size_reservoir(self):
         synchronous_sum_aggregation = _SumAggregation(
             Mock(),
@@ -683,7 +682,6 @@ def test_collection_simple_fixed_size_reservoir(self):
     def test_collection_simple_fixed_size_reservoir_with_default_reservoir(
         self,
     ):
-
         synchronous_sum_aggregation = _SumAggregation(
             Mock(),
             True,
diff --git a/opentelemetry-sdk/tests/metrics/test_exemplarreservoir.py b/opentelemetry-sdk/tests/metrics/test_exemplarreservoir.py
index 2c205a6ee0c..bdc25d1f6e7 100644
--- a/opentelemetry-sdk/tests/metrics/test_exemplarreservoir.py
+++ b/opentelemetry-sdk/tests/metrics/test_exemplarreservoir.py
@@ -17,7 +17,6 @@
 
 
 class TestSimpleFixedSizeExemplarReservoir(TestCase):
-
     TRACE_ID = int("d4cda95b652f4a1592b449d5929fda1b", 16)
     SPAN_ID = int("6e0c63257de34c92", 16)
 
@@ -83,7 +82,6 @@ def test_reset_after_collection(self):
 
 
 class TestAlignedHistogramBucketExemplarReservoir(TestCase):
-
     TRACE_ID = int("d4cda95b652f4a1592b449d5929fda1b", 16)
     SPAN_ID = int("6e0c63257de34c92", 16)
 
diff --git a/opentelemetry-sdk/tests/metrics/test_in_memory_metric_reader.py b/opentelemetry-sdk/tests/metrics/test_in_memory_metric_reader.py
index 40a0f3a3042..bd70d18d201 100644
--- a/opentelemetry-sdk/tests/metrics/test_in_memory_metric_reader.py
+++ b/opentelemetry-sdk/tests/metrics/test_in_memory_metric_reader.py
@@ -111,7 +111,6 @@ def test_integration(self):
         )
 
     def test_cumulative_multiple_collect(self):
-
         reader = InMemoryMetricReader(
             preferred_temporality={Counter: AggregationTemporality.CUMULATIVE}
         )
diff --git a/opentelemetry-sdk/tests/metrics/test_measurement_consumer.py b/opentelemetry-sdk/tests/metrics/test_measurement_consumer.py
index bedffaaeff0..fe58ec4acac 100644
--- a/opentelemetry-sdk/tests/metrics/test_measurement_consumer.py
+++ b/opentelemetry-sdk/tests/metrics/test_measurement_consumer.py
@@ -33,7 +33,6 @@
 )
 class TestSynchronousMeasurementConsumer(TestCase):
     def test_parent(self, _):
-
         self.assertIsInstance(
             SynchronousMeasurementConsumer(MagicMock()), MeasurementConsumer
         )
diff --git a/opentelemetry-sdk/tests/metrics/test_metric_reader.py b/opentelemetry-sdk/tests/metrics/test_metric_reader.py
index 5a09112bd0e..2f7aad25c6e 100644
--- a/opentelemetry-sdk/tests/metrics/test_metric_reader.py
+++ b/opentelemetry-sdk/tests/metrics/test_metric_reader.py
@@ -76,7 +76,6 @@ def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None:
 
 class TestMetricReader(TestCase):
     def test_configure_temporality(self):
-
         dummy_metric_reader = DummyMetricReader(
             preferred_temporality={
                 Histogram: AggregationTemporality.DELTA,
@@ -150,7 +149,6 @@ def test_configure_aggregation(self):
 
     # pylint: disable=no-self-use
     def test_force_flush(self):
-
         with patch.object(DummyMetricReader, "collect") as mock_collect:
             DummyMetricReader().force_flush(timeout_millis=10)
             mock_collect.assert_called_with(timeout_millis=10)
diff --git a/opentelemetry-sdk/tests/metrics/test_metric_reader_storage.py b/opentelemetry-sdk/tests/metrics/test_metric_reader_storage.py
index 1785c8ec24f..7c9484b9177 100644
--- a/opentelemetry-sdk/tests/metrics/test_metric_reader_storage.py
+++ b/opentelemetry-sdk/tests/metrics/test_metric_reader_storage.py
@@ -322,7 +322,6 @@ def test_default_view_enabled(self, MockViewInstrumentMatch: Mock):
         self.assertEqual(len(MockViewInstrumentMatch.call_args_list), 1)
 
     def test_drop_aggregation(self):
-
         counter = _Counter("name", Mock(), Mock())
         metric_reader_storage = MetricReaderStorage(
             SdkConfiguration(
@@ -349,7 +348,6 @@ def test_drop_aggregation(self):
         self.assertIsNone(metric_reader_storage.collect())
 
     def test_same_collection_start(self):
-
         counter = _Counter("name", Mock(), Mock())
         up_down_counter = _UpDownCounter("name", Mock(), Mock())
 
@@ -393,7 +391,6 @@ def test_same_collection_start(self):
         )
 
     def test_conflicting_view_configuration(self):
-
         observable_counter = _ObservableCounter(
             "observable_counter",
             Mock(),
@@ -554,9 +551,7 @@ def test_view_instrument_match_conflict_1(self):
             log.records[0].message,
         )
 
-        for (
-            view_instrument_matches
-        ) in (
+        for view_instrument_matches in (
             metric_reader_storage._instrument_view_instrument_matches.values()
         ):
             for view_instrument_match in view_instrument_matches:
diff --git a/opentelemetry-sdk/tests/metrics/test_metrics.py b/opentelemetry-sdk/tests/metrics/test_metrics.py
index f899b30808a..400087774c5 100644
--- a/opentelemetry-sdk/tests/metrics/test_metrics.py
+++ b/opentelemetry-sdk/tests/metrics/test_metrics.py
@@ -66,7 +66,6 @@ def shutdown(self, timeout_millis: float = 30_000, **kwargs) -> None:
 
 class TestMeterProvider(ConcurrencyTestBase, TestCase):
     def tearDown(self):
-
         MeterProvider._all_metric_readers = set()
 
     @patch.object(Resource, "create")
@@ -247,7 +246,6 @@ def test_get_meter_comparison_with_attributes(self):
         )
 
     def test_shutdown(self):
-
         mock_metric_reader_0 = MagicMock(
             **{
                 "shutdown.side_effect": ZeroDivisionError(),
@@ -355,7 +353,6 @@ def test_creates_sync_measurement_consumer(
     def test_register_asynchronous_instrument(
         self, mock_sync_measurement_consumer
     ):
-
         meter_provider = MeterProvider()
 
         # pylint: disable=no-member
@@ -564,7 +561,6 @@ def force_flush(self, timeout_millis: float = 10_000) -> bool:
 
 class TestDuplicateInstrumentAggregateData(TestCase):
     def test_duplicate_instrument_aggregate_data(self):
-
         exporter = InMemoryMetricExporter()
         reader = PeriodicExportingMetricReader(
             exporter, export_interval_millis=500
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 962b4fdd643..3cbc3c9fe60 100644
--- a/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py
+++ b/opentelemetry-sdk/tests/metrics/test_periodic_exporting_metric_reader.py
@@ -137,7 +137,6 @@ def test_defaults(self):
     def _create_periodic_reader(
         self, metrics, exporter, collect_wait=0, interval=60000, timeout=30000
     ):
-
         pmr = PeriodicExportingMetricReader(
             exporter,
             export_interval_millis=interval,
diff --git a/opentelemetry-sdk/tests/metrics/test_point.py b/opentelemetry-sdk/tests/metrics/test_point.py
index e773f3187f5..c5a4def85de 100644
--- a/opentelemetry-sdk/tests/metrics/test_point.py
+++ b/opentelemetry-sdk/tests/metrics/test_point.py
@@ -36,7 +36,6 @@
 class TestToJson(TestCase):
     @classmethod
     def setUpClass(cls):
-
         cls.attributes_0 = {
             "a": "b",
             "b": True,
@@ -215,7 +214,6 @@ def setUpClass(cls):
         cls.metrics_data_0_str = f'{{"resource_metrics": [{cls.resource_metrics_0_str}, {cls.resource_metrics_1_str}]}}'
 
     def test_number_data_point(self):
-
         self.assertEqual(
             self.number_data_point_0.to_json(indent=None),
             self.number_data_point_0_str,
@@ -226,7 +224,6 @@ def test_number_data_point(self):
         )
 
     def test_histogram_data_point(self):
-
         self.assertEqual(
             self.histogram_data_point_0.to_json(indent=None),
             self.histogram_data_point_0_str,
@@ -237,34 +234,28 @@ def test_histogram_data_point(self):
         )
 
     def test_exp_histogram_data_point(self):
-
         self.assertEqual(
             self.exp_histogram_data_point_0.to_json(indent=None),
             self.exp_histogram_data_point_0_str,
         )
 
     def test_sum(self):
-
         self.assertEqual(self.sum_0.to_json(indent=None), self.sum_0_str)
 
     def test_gauge(self):
-
         self.assertEqual(self.gauge_0.to_json(indent=None), self.gauge_0_str)
 
     def test_histogram(self):
-
         self.assertEqual(
             self.histogram_0.to_json(indent=None), self.histogram_0_str
         )
 
     def test_exp_histogram(self):
-
         self.assertEqual(
             self.exp_histogram_0.to_json(indent=None), self.exp_histogram_0_str
         )
 
     def test_metric(self):
-
         self.assertEqual(self.metric_0.to_json(indent=None), self.metric_0_str)
 
         self.assertEqual(self.metric_1.to_json(indent=None), self.metric_1_str)
@@ -272,7 +263,6 @@ def test_metric(self):
         self.assertEqual(self.metric_2.to_json(indent=None), self.metric_2_str)
 
     def test_scope_metrics(self):
-
         self.assertEqual(
             self.scope_metrics_0.to_json(indent=None), self.scope_metrics_0_str
         )
@@ -281,7 +271,6 @@ def test_scope_metrics(self):
         )
 
     def test_resource_metrics(self):
-
         self.assertEqual(
             self.resource_metrics_0.to_json(indent=None),
             self.resource_metrics_0_str,
@@ -292,7 +281,6 @@ def test_resource_metrics(self):
         )
 
     def test_metrics_data(self):
-
         self.assertEqual(
             self.metrics_data_0.to_json(indent=None), self.metrics_data_0_str
         )
diff --git a/opentelemetry-sdk/tests/metrics/test_view.py b/opentelemetry-sdk/tests/metrics/test_view.py
index 96d433677cf..ee5df52a7b9 100644
--- a/opentelemetry-sdk/tests/metrics/test_view.py
+++ b/opentelemetry-sdk/tests/metrics/test_view.py
@@ -22,16 +22,13 @@
 
 class TestView(TestCase):
     def test_required_instrument_criteria(self):
-
         with self.assertRaises(Exception):
             View()
 
     def test_instrument_type(self):
-
         self.assertTrue(View(instrument_type=Mock)._match(Mock()))
 
     def test_instrument_name(self):
-
         mock_instrument = Mock()
         mock_instrument.configure_mock(**{"name": "instrument_name"})
 
@@ -40,7 +37,6 @@ def test_instrument_name(self):
         )
 
     def test_instrument_unit(self):
-
         mock_instrument = Mock()
         mock_instrument.configure_mock(**{"unit": "instrument_unit"})
 
@@ -49,7 +45,6 @@ def test_instrument_unit(self):
         )
 
     def test_meter_name(self):
-
         self.assertTrue(
             View(meter_name="meter_name")._match(
                 Mock(**{"instrumentation_scope.name": "meter_name"})
@@ -57,7 +52,6 @@ def test_meter_name(self):
         )
 
     def test_meter_version(self):
-
         self.assertTrue(
             View(meter_version="meter_version")._match(
                 Mock(**{"instrumentation_scope.version": "meter_version"})
@@ -65,7 +59,6 @@ def test_meter_version(self):
         )
 
     def test_meter_schema_url(self):
-
         self.assertTrue(
             View(meter_schema_url="meter_schema_url")._match(
                 Mock(
@@ -91,7 +84,6 @@ def test_meter_schema_url(self):
         )
 
     def test_additive_criteria(self):
-
         view = View(
             meter_name="meter_name",
             meter_version="meter_version",
@@ -122,6 +114,5 @@ def test_additive_criteria(self):
         )
 
     def test_view_name(self):
-
         with self.assertRaises(Exception):
             View(name="name", instrument_name="instrument_name*")
diff --git a/opentelemetry-sdk/tests/test_configurator.py b/opentelemetry-sdk/tests/test_configurator.py
index 403b1eff005..5b04a6f3b98 100644
--- a/opentelemetry-sdk/tests/test_configurator.py
+++ b/opentelemetry-sdk/tests/test_configurator.py
@@ -985,7 +985,6 @@ class TestImportConfigComponents(TestCase):
     def test__import_config_components_missing_entry_point(
         self, mock_entry_points
     ):
-
         with raises(RuntimeError) as error:
             _import_config_components(["a", "b", "c"], "name")
         self.assertEqual(
@@ -999,7 +998,6 @@ def test__import_config_components_missing_entry_point(
     def test__import_config_components_missing_component(
         self, mock_entry_points
     ):
-
         with raises(RuntimeError) as error:
             _import_config_components(["a", "b", "c"], "name")
         self.assertEqual(
diff --git a/opentelemetry-sdk/tests/trace/export/test_export.py b/opentelemetry-sdk/tests/trace/export/test_export.py
index 7a29ef3c42d..aa94a514cad 100644
--- a/opentelemetry-sdk/tests/trace/export/test_export.py
+++ b/opentelemetry-sdk/tests/trace/export/test_export.py
@@ -179,7 +179,6 @@ class TestBatchSpanProcessor(ConcurrencyTestBase):
         },
     )
     def test_args_env_var(self):
-
         batch_span_processor = export.BatchSpanProcessor(
             MySpanExporter(destination=[])
         )
@@ -190,7 +189,6 @@ def test_args_env_var(self):
         self.assertEqual(batch_span_processor.export_timeout_millis, 4)
 
     def test_args_env_var_defaults(self):
-
         batch_span_processor = export.BatchSpanProcessor(
             MySpanExporter(destination=[])
         )
@@ -210,7 +208,6 @@ def test_args_env_var_defaults(self):
         },
     )
     def test_args_env_var_value_error(self):
-
         logger.disabled = True
         batch_span_processor = export.BatchSpanProcessor(
             MySpanExporter(destination=[])
diff --git a/opentelemetry-sdk/tests/trace/test_sampling.py b/opentelemetry-sdk/tests/trace/test_sampling.py
index e976b0f551e..09057ee1c15 100644
--- a/opentelemetry-sdk/tests/trace/test_sampling.py
+++ b/opentelemetry-sdk/tests/trace/test_sampling.py
@@ -251,7 +251,6 @@ def test_probability_sampler_one(self):
         )
 
     def test_probability_sampler_limits(self):
-
         # Sample one of every 2^64 (= 5e-20) traces. This is the lowest
         # possible meaningful sampling rate, only traces with trace ID 0x0
         # should get sampled.
diff --git a/opentelemetry-sdk/tests/trace/test_trace.py b/opentelemetry-sdk/tests/trace/test_trace.py
index 779093f736f..790d7fd2a07 100644
--- a/opentelemetry-sdk/tests/trace/test_trace.py
+++ b/opentelemetry-sdk/tests/trace/test_trace.py
@@ -940,7 +940,6 @@ def test_links(self):
             trace_api.Link(other_context2, {"name": "neighbor"}),
         )
         with self.tracer.start_as_current_span("root", links=links) as root:
-
             self.assertEqual(len(root.links), 2)
             self.assertEqual(
                 root.links[0].context.trace_id, other_context1.trace_id
@@ -1092,7 +1091,6 @@ def test_span_override_start_and_end_time(self):
         self.assertEqual(end_time, span.end_time)
 
     def test_span_set_status(self):
-
         span1 = self.tracer.start_span("span1")
         span1.set_status(Status(status_code=StatusCode.ERROR))
         self.assertEqual(span1.status.status_code, StatusCode.ERROR)
diff --git a/opentelemetry-semantic-conventions/tests/test_semconv.py b/opentelemetry-semantic-conventions/tests/test_semconv.py
index a7362a8af77..18fe3f045cb 100644
--- a/opentelemetry-semantic-conventions/tests/test_semconv.py
+++ b/opentelemetry-semantic-conventions/tests/test_semconv.py
@@ -19,6 +19,5 @@
 
 class TestSemanticConventions(TestCase):
     def test_semantic_conventions(self):
-
         if find_spec("opentelemetry.semconv") is None:
             self.fail("opentelemetry-semantic-conventions not installed")
diff --git a/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py b/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py
index a4c51b90c13..6625712e33e 100644
--- a/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py
+++ b/propagator/opentelemetry-propagator-b3/tests/test_b3_format.py
@@ -29,7 +29,6 @@
 
 
 def get_child_parent_new_carrier(old_carrier, propagator):
-
     ctx = propagator.extract(old_carrier)
     parent_span_context = trace_api.get_current_span(ctx).get_span_context()
 
diff --git a/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py b/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py
index a836cdf4033..d9e31a660ea 100644
--- a/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py
+++ b/propagator/opentelemetry-propagator-jaeger/tests/test_jaeger_propagator.py
@@ -29,7 +29,6 @@
 
 
 def get_context_new_carrier(old_carrier, carrier_baggage=None):
-
     ctx = FORMAT.extract(old_carrier)
     if carrier_baggage:
         for key, value in carrier_baggage.items():
@@ -64,10 +63,8 @@ def setUpClass(cls):
         cls.trace_id = generator.generate_trace_id()
         cls.span_id = generator.generate_span_id()
         cls.parent_span_id = generator.generate_span_id()
-        cls.serialized_uber_trace_id = (
-            jaeger._format_uber_trace_id(  # pylint: disable=protected-access
-                cls.trace_id, cls.span_id, cls.parent_span_id, 11
-            )
+        cls.serialized_uber_trace_id = jaeger._format_uber_trace_id(  # pylint: disable=protected-access
+            cls.trace_id, cls.span_id, cls.parent_span_id, 11
         )
 
     def test_extract_valid_span(self):
@@ -117,10 +114,8 @@ def test_debug_flag_set(self):
         self.assertEqual(FORMAT.DEBUG_FLAG, debug_flag_value)
 
     def test_sample_debug_flags_unset(self):
-        uber_trace_id = (
-            jaeger._format_uber_trace_id(  # pylint: disable=protected-access
-                self.trace_id, self.span_id, self.parent_span_id, 0
-            )
+        uber_trace_id = jaeger._format_uber_trace_id(  # pylint: disable=protected-access
+            self.trace_id, self.span_id, self.parent_span_id, 0
         )
         old_carrier = {FORMAT.TRACE_ID_KEY: uber_trace_id}
         _, new_carrier = get_context_new_carrier(old_carrier)
diff --git a/shim/opentelemetry-opentracing-shim/tests/test_shim.py b/shim/opentelemetry-opentracing-shim/tests/test_shim.py
index ac5fbeea4e6..796a4e064b1 100644
--- a/shim/opentelemetry-opentracing-shim/tests/test_shim.py
+++ b/shim/opentelemetry-opentracing-shim/tests/test_shim.py
@@ -609,7 +609,6 @@ def test_extract_binary(self):
             self.shim.extract(opentracing.Format.BINARY, bytearray())
 
     def test_baggage(self):
-
         span_context_shim = SpanContextShim(
             trace.SpanContext(1234, 5678, is_remote=False)
         )
@@ -651,13 +650,11 @@ def test_mixed_mode(self):
         span_shim = self.shim.start_span("TestSpan16")
 
         with self.shim.scope_manager.activate(span_shim, finish_on_close=True):
-
             with (
                 TracerProvider()
                 .get_tracer(__name__)
                 .start_as_current_span("abc")
             ) as opentelemetry_span:
-
                 self.assertIs(
                     span_shim.unwrap().context,
                     opentelemetry_span.parent,
@@ -666,9 +663,7 @@ def test_mixed_mode(self):
         with (
             TracerProvider().get_tracer(__name__).start_as_current_span("abc")
         ) as opentelemetry_span:
-
             with self.shim.start_active_span("TestSpan17") as scope:
-
                 self.assertIs(
                     scope.span.unwrap().parent,
                     opentelemetry_span.context,
diff --git a/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_asyncio.py b/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_asyncio.py
index 0419ab44a22..7ffad630d23 100644
--- a/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_asyncio.py
+++ b/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_asyncio.py
@@ -54,7 +54,6 @@ def test_main(self):
     async def task(self, span):
         # Create a new Span for this task
         with self.tracer.start_active_span("task"):
-
             with self.tracer.scope_manager.activate(span, True):
                 # Simulate work strictly related to the initial Span
                 pass
diff --git a/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_threads.py b/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_threads.py
index 4e76c87a03e..fbd0eac308a 100644
--- a/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_threads.py
+++ b/shim/opentelemetry-opentracing-shim/tests/testbed/test_active_span_replacement/test_threads.py
@@ -50,7 +50,6 @@ def test_main(self):
     def task(self, span):
         # Create a new Span for this task
         with self.tracer.start_active_span("task"):
-
             with self.tracer.scope_manager.activate(span, True):
                 # Simulate work strictly related to the initial Span
                 pass
diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/__init__.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/__init__.py
index 068ed12e86c..84188864bfe 100644
--- a/tests/opentelemetry-test-utils/src/opentelemetry/test/__init__.py
+++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/__init__.py
@@ -28,7 +28,6 @@ def __enter__(self):
 
         def __exit__(self, type_, value, tb):  # pylint: disable=invalid-name
             if value is not None and type_ in self._exception_types:
-
                 self._test_case.fail(
                     "Unexpected exception was raised:\n{}".format(
                         "\n".join(format_tb(tb))
@@ -43,13 +42,10 @@ def __call__(self, exception, *exceptions):
             return self
 
     def __init__(self, *args, **kwargs):
-
         super().__init__(*args, **kwargs)
         # pylint: disable=invalid-name
         self.assertNotRaises = self._AssertNotRaises(self)
 
 
-class TestCase(
-    _AssertNotRaisesMixin, TestCase
-):  # pylint: disable=function-redefined
+class TestCase(_AssertNotRaisesMixin, TestCase):  # pylint: disable=function-redefined
     pass
diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py
index fb85840634f..c373658222b 100644
--- a/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py
+++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/globals_test.py
@@ -51,7 +51,9 @@ def reset_event_globals() -> None:
     """WARNING: only use this for tests."""
     events_api._EVENT_LOGGER_PROVIDER_SET_ONCE = Once()  # type: ignore[attr-defined]
     events_api._EVENT_LOGGER_PROVIDER = None  # type: ignore[attr-defined]
-    events_api._PROXY_EVENT_LOGGER_PROVIDER = events_api.ProxyEventLoggerProvider()  # type: ignore[attr-defined]
+    events_api._PROXY_EVENT_LOGGER_PROVIDER = (
+        events_api.ProxyEventLoggerProvider()
+    )  # type: ignore[attr-defined]
 
 
 class TraceGlobalsTest(unittest.TestCase):
diff --git a/tests/opentelemetry-test-utils/src/opentelemetry/test/wsgitestutil.py b/tests/opentelemetry-test-utils/src/opentelemetry/test/wsgitestutil.py
index 28a4c2698e6..908b1d41847 100644
--- a/tests/opentelemetry-test-utils/src/opentelemetry/test/wsgitestutil.py
+++ b/tests/opentelemetry-test-utils/src/opentelemetry/test/wsgitestutil.py
@@ -39,9 +39,7 @@ def start_response(self, status, response_headers, exc_info=None):
         self.exc_info = exc_info
         return self.write
 
-    def assertTraceResponseHeaderMatchesSpan(
-        self, headers, span
-    ):  # pylint: disable=invalid-name
+    def assertTraceResponseHeaderMatchesSpan(self, headers, span):  # pylint: disable=invalid-name
         self.assertIn("traceresponse", headers)
         self.assertEqual(
             headers["access-control-expose-headers"],
diff --git a/tests/opentelemetry-test-utils/tests/test_utils.py b/tests/opentelemetry-test-utils/tests/test_utils.py
index 180fe55e6fa..dbf06880eca 100644
--- a/tests/opentelemetry-test-utils/tests/test_utils.py
+++ b/tests/opentelemetry-test-utils/tests/test_utils.py
@@ -17,55 +17,42 @@
 
 class TestAssertNotRaises(TestCase):
     def test_no_exception(self):
-
         try:
-
             with self.assertNotRaises(Exception):
                 pass
 
         except Exception as error:  # pylint: disable=broad-exception-caught
-
             self.fail(  # pylint: disable=no-member
                 f"Unexpected exception {error} was raised"
             )
 
     def test_no_specified_exception_single(self):
-
         try:
-
             with self.assertNotRaises(KeyError):
                 1 / 0  # pylint: disable=pointless-statement
 
         except Exception as error:  # pylint: disable=broad-exception-caught
-
             self.fail(  # pylint: disable=no-member
                 f"Unexpected exception {error} was raised"
             )
 
     def test_no_specified_exception_multiple(self):
-
         try:
-
             with self.assertNotRaises(KeyError, IndexError):
                 1 / 0  # pylint: disable=pointless-statement
 
         except Exception as error:  # pylint: disable=broad-exception-caught
-
             self.fail(  # pylint: disable=no-member
                 f"Unexpected exception {error} was raised"
             )
 
     def test_exception(self):
-
         with self.assertRaises(AssertionError):
-
             with self.assertNotRaises(ZeroDivisionError):
                 1 / 0  # pylint: disable=pointless-statement
 
     def test_missing_exception(self):
-
         with self.assertRaises(AssertionError) as error:
-
             with self.assertNotRaises(ZeroDivisionError):
 
                 def raise_zero_division_error():