Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-opentelemetry-instrumentation 
for openSUSE:Factory checked in at 2025-06-03 17:51:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-opentelemetry-instrumentation (Old)
 and      
/work/SRC/openSUSE:Factory/.python-opentelemetry-instrumentation.new.16005 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-opentelemetry-instrumentation"

Tue Jun  3 17:51:28 2025 rev:4 rq:1281748 version:0.54b1

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-opentelemetry-instrumentation/python-opentelemetry-instrumentation.changes
        2025-02-26 17:19:30.557689055 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-opentelemetry-instrumentation.new.16005/python-opentelemetry-instrumentation.changes
     2025-06-03 17:51:52.025443943 +0200
@@ -1,0 +2,10 @@
+Mon Jun  2 06:13:57 UTC 2025 - Steve Kowalik <steven.kowa...@suse.com>
+
+- Update to 0.54b1:
+  * Make auto instrumentation use the same dependency resolver as manual
+    instrumentation does
+  * make it simpler to initialize auto-instrumentation programmatically
+- Update URL.
+- Run the testsuite again.
+
+-------------------------------------------------------------------

Old:
----
  opentelemetry_instrumentation-0.51b0.tar.gz

New:
----
  opentelemetry_instrumentation-0.54b1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-opentelemetry-instrumentation.spec ++++++
--- /var/tmp/diff_new_pack.Onl3Mw/_old  2025-06-03 17:51:52.573466671 +0200
+++ /var/tmp/diff_new_pack.Onl3Mw/_new  2025-06-03 17:51:52.573466671 +0200
@@ -18,19 +18,20 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-opentelemetry-instrumentation
-Version:        0.51b0
+Version:        0.54b1
 Release:        0
 Summary:        Instrumentation Tools & Auto Instrumentation for OpenTelemetry 
Python
 License:        Apache-2.0
-URL:            
https://github.com/open-telemetry/opentelemetry-python/tree/main/opentelemetry-instrumentation
+URL:            
https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/opentelemetry-instrumentation
 Source:         
https://files.pythonhosted.org/packages/source/o/opentelemetry-instrumentation/opentelemetry_instrumentation-%{version}.tar.gz
-BuildRequires:  %{python_module packaging >= 18.0}
+BuildRequires:  %{python_module hatchling}
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module wheel}
 BuildRequires:  python-rpm-macros
 # SECTION test requirements
 BuildRequires:  %{python_module opentelemetry-api >= 1.4}
-BuildRequires:  %{python_module hatchling}
+BuildRequires:  %{python_module opentelemetry-semantic-conventions = 
%{version}}
+BuildRequires:  %{python_module opentelemetry-test-utils = %{version}}
+BuildRequires:  %{python_module packaging >= 18.0}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module wrapt >= 1.0.0}
 # /SECTION
@@ -38,6 +39,8 @@
 Requires(post): update-alternatives
 Requires(postun): update-alternatives
 Requires:       python-opentelemetry-api >= 1.4
+Requires:       python-opentelemetry-semantic-conventions = %{version}
+Requires:       python-packaging >= 18.0
 Requires:       python-wrapt >= 1.0.0
 BuildArch:      noarch
 %python_subpackages
@@ -57,9 +60,8 @@
 %python_clone -a %{buildroot}%{_bindir}/opentelemetry-bootstrap
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
-# Tests disabled because they're not shipped with the sources
-#%%check
-#%%pytest
+%check
+%pytest
 
 %post
 %python_install_alternative opentelemetry-instrument opentelemetry-bootstrap

++++++ opentelemetry_instrumentation-0.51b0.tar.gz -> 
opentelemetry_instrumentation-0.54b1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentelemetry_instrumentation-0.51b0/PKG-INFO 
new/opentelemetry_instrumentation-0.54b1/PKG-INFO
--- old/opentelemetry_instrumentation-0.51b0/PKG-INFO   2020-02-02 
01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation-0.54b1/PKG-INFO   2020-02-02 
01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: opentelemetry-instrumentation
-Version: 0.51b0
+Version: 0.54b1
 Summary: Instrumentation Tools & Auto Instrumentation for OpenTelemetry Python
 Project-URL: Homepage, 
https://github.com/open-telemetry/opentelemetry-python-contrib/tree/main/opentelemetry-instrumentation
 Project-URL: Repository, 
https://github.com/open-telemetry/opentelemetry-python-contrib
@@ -20,7 +20,7 @@
 Classifier: Programming Language :: Python :: 3.13
 Requires-Python: >=3.8
 Requires-Dist: opentelemetry-api~=1.4
-Requires-Dist: opentelemetry-semantic-conventions==0.51b0
+Requires-Dist: opentelemetry-semantic-conventions==0.54b1
 Requires-Dist: packaging>=18.0
 Requires-Dist: wrapt<2.0.0,>=1.0.0
 Description-Content-Type: text/x-rst
@@ -157,6 +157,19 @@
 The above command will configure the global trace provider to use the Random 
IDs Generator, and then
 pass ``--port=3000`` to ``flask run``.
 
+Programmatic Auto-instrumentation
+---------------------------------
+
+::
+
+    from opentelemetry.instrumentation import auto_instrumentation
+    auto_instrumentation.initialize()
+
+
+If you are in an environment where you cannot use opentelemetry-instrument to 
inject auto-instrumentation you can do so programmatically with
+the code above. Please note that some instrumentations may require the 
``initialize()`` method to be called before the library they
+instrument is imported.
+
 References
 ----------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentelemetry_instrumentation-0.51b0/README.rst 
new/opentelemetry_instrumentation-0.54b1/README.rst
--- old/opentelemetry_instrumentation-0.51b0/README.rst 2020-02-02 
01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation-0.54b1/README.rst 2020-02-02 
01:00:00.000000000 +0100
@@ -130,6 +130,19 @@
 The above command will configure the global trace provider to use the Random 
IDs Generator, and then
 pass ``--port=3000`` to ``flask run``.
 
+Programmatic Auto-instrumentation
+---------------------------------
+
+::
+
+    from opentelemetry.instrumentation import auto_instrumentation
+    auto_instrumentation.initialize()
+
+
+If you are in an environment where you cannot use opentelemetry-instrument to 
inject auto-instrumentation you can do so programmatically with
+the code above. Please note that some instrumentations may require the 
``initialize()`` method to be called before the library they
+instrument is imported.
+
 References
 ----------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/opentelemetry_instrumentation-0.51b0/pyproject.toml 
new/opentelemetry_instrumentation-0.54b1/pyproject.toml
--- old/opentelemetry_instrumentation-0.51b0/pyproject.toml     2020-02-02 
01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation-0.54b1/pyproject.toml     2020-02-02 
01:00:00.000000000 +0100
@@ -27,7 +27,7 @@
 ]
 dependencies = [
   "opentelemetry-api ~= 1.4",
-  "opentelemetry-semantic-conventions == 0.51b0",
+  "opentelemetry-semantic-conventions == 0.54b1",
   "wrapt >= 1.0.0, < 2.0.0",
   "packaging >= 18.0",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/_semconv.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/_semconv.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/_semconv.py
      2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/_semconv.py
      2020-02-02 01:00:00.000000000 +0100
@@ -47,6 +47,43 @@
 from opentelemetry.semconv.trace import SpanAttributes
 from opentelemetry.trace.status import Status, StatusCode
 
+# Values defined in milliseconds
+HTTP_DURATION_HISTOGRAM_BUCKETS_OLD = (
+    0.0,
+    5.0,
+    10.0,
+    25.0,
+    50.0,
+    75.0,
+    100.0,
+    250.0,
+    500.0,
+    750.0,
+    1000.0,
+    2500.0,
+    5000.0,
+    7500.0,
+    10000.0,
+)
+
+# Values defined in seconds
+HTTP_DURATION_HISTOGRAM_BUCKETS_NEW = (
+    0.005,
+    0.01,
+    0.025,
+    0.05,
+    0.075,
+    0.1,
+    0.25,
+    0.5,
+    0.75,
+    1,
+    2.5,
+    5,
+    7.5,
+    10,
+)
+
 # These lists represent attributes for metrics that are currently supported
 
 _client_duration_attrs_old = [
@@ -354,7 +391,8 @@
     if _report_old(sem_conv_opt_in_mode):
         set_string_attribute(result, SpanAttributes.HTTP_HOST, host)
     if _report_new(sem_conv_opt_in_mode):
-        set_string_attribute(result, CLIENT_ADDRESS, host)
+        if not result.get(SERVER_ADDRESS):
+            set_string_attribute(result, SERVER_ADDRESS, host)
 
 
 # net.peer.ip -> net.sock.peer.addr
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py
 2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/__init__.py
 2020-02-02 01:00:00.000000000 +0100
@@ -19,6 +19,12 @@
 from re import sub
 from shutil import which
 
+from opentelemetry.instrumentation.auto_instrumentation._load import (
+    _load_configurators,
+    _load_distro,
+    _load_instrumentors,
+)
+from opentelemetry.instrumentation.utils import _python_path_without_directory
 from opentelemetry.instrumentation.version import __version__
 from opentelemetry.util._importlib_metadata import entry_points
 
@@ -110,3 +116,20 @@
 
     executable = which(args.command)
     execl(executable, executable, *args.command_args)
+
+
+def initialize():
+    """Setup auto-instrumentation, called by the sitecustomize module"""
+    # prevents auto-instrumentation of subprocesses if code execs another 
python process
+    if "PYTHONPATH" in environ:
+        environ["PYTHONPATH"] = _python_path_without_directory(
+            environ["PYTHONPATH"], dirname(abspath(__file__)), pathsep
+        )
+
+    try:
+        distro = _load_distro()
+        distro.configure()
+        _load_configurators()
+        _load_instrumentors(distro)
+    except Exception:  # pylint: disable=broad-except
+        _logger.exception("Failed to auto initialize OpenTelemetry")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/_load.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/_load.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/_load.py
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/_load.py
    2020-02-02 01:00:00.000000000 +0100
@@ -12,13 +12,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from functools import cached_property
 from logging import getLogger
 from os import environ
 
-from opentelemetry.instrumentation.dependencies import (
-    get_dist_dependency_conflicts,
-)
+from opentelemetry.instrumentation.dependencies import DependencyConflictError
 from opentelemetry.instrumentation.distro import BaseDistro, DefaultDistro
 from opentelemetry.instrumentation.environment_variables import (
     OTEL_PYTHON_CONFIGURATOR,
@@ -26,36 +23,11 @@
     OTEL_PYTHON_DISTRO,
 )
 from opentelemetry.instrumentation.version import __version__
-from opentelemetry.util._importlib_metadata import (
-    EntryPoint,
-    distributions,
-    entry_points,
-)
+from opentelemetry.util._importlib_metadata import entry_points
 
 _logger = getLogger(__name__)
 
 
-class _EntryPointDistFinder:
-    @cached_property
-    def _mapping(self):
-        return {
-            self._key_for(ep): dist
-            for dist in distributions()
-            for ep in dist.entry_points
-        }
-
-    def dist_for(self, entry_point: EntryPoint):
-        dist = getattr(entry_point, "dist", None)
-        if dist:
-            return dist
-
-        return self._mapping.get(self._key_for(entry_point))
-
-    @staticmethod
-    def _key_for(entry_point: EntryPoint):
-        return f"{entry_point.group}:{entry_point.name}:{entry_point.value}"
-
-
 def _load_distro() -> BaseDistro:
     distro_name = environ.get(OTEL_PYTHON_DISTRO, None)
     for entry_point in entry_points(group="opentelemetry_distro"):
@@ -83,7 +55,6 @@
 
 def _load_instrumentors(distro):
     package_to_exclude = environ.get(OTEL_PYTHON_DISABLED_INSTRUMENTATIONS, [])
-    entry_point_finder = _EntryPointDistFinder()
     if isinstance(package_to_exclude, str):
         package_to_exclude = package_to_exclude.split(",")
         # to handle users entering "requests , flask" or "requests, flask" 
with spaces
@@ -100,19 +71,25 @@
             continue
 
         try:
-            entry_point_dist = entry_point_finder.dist_for(entry_point)
-            conflict = get_dist_dependency_conflicts(entry_point_dist)
-            if conflict:
-                _logger.debug(
-                    "Skipping instrumentation %s: %s",
-                    entry_point.name,
-                    conflict,
-                )
-                continue
-
-            # tell instrumentation to not run dep checks again as we already 
did it above
-            distro.load_instrumentor(entry_point, skip_dep_check=True)
+            distro.load_instrumentor(
+                entry_point, raise_exception_on_conflict=True
+            )
             _logger.debug("Instrumented %s", entry_point.name)
+        except DependencyConflictError as exc:
+            _logger.debug(
+                "Skipping instrumentation %s: %s",
+                entry_point.name,
+                exc.conflict,
+            )
+            continue
+        except ModuleNotFoundError as exc:
+            # ModuleNotFoundError is raised when the library is not installed
+            # and the instrumentation is not required to be loaded.
+            # See 
https://github.com/open-telemetry/opentelemetry-python-contrib/issues/3421
+            _logger.debug(
+                "Skipping instrumentation %s: %s", entry_point.name, exc.msg
+            )
+            continue
         except ImportError:
             # in scenarios using the kubernetes operator to do 
autoinstrumentation some
             # instrumentors (usually requiring binary extensions) may fail to 
load
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/auto_instrumentation/sitecustomize.py
    2020-02-02 01:00:00.000000000 +0100
@@ -12,33 +12,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-from logging import getLogger
-from os import environ
-from os.path import abspath, dirname, pathsep
-
-from opentelemetry.instrumentation.auto_instrumentation._load import (
-    _load_configurators,
-    _load_distro,
-    _load_instrumentors,
-)
-from opentelemetry.instrumentation.utils import _python_path_without_directory
-
-logger = getLogger(__name__)
-
-
-def initialize():
-    # prevents auto-instrumentation of subprocesses if code execs another 
python process
-    environ["PYTHONPATH"] = _python_path_without_directory(
-        environ["PYTHONPATH"], dirname(abspath(__file__)), pathsep
-    )
-
-    try:
-        distro = _load_distro()
-        distro.configure()
-        _load_configurators()
-        _load_instrumentors(distro)
-    except Exception:  # pylint: disable=broad-except
-        logger.exception("Failed to auto initialize opentelemetry")
-
+from opentelemetry.instrumentation.auto_instrumentation import initialize
 
 initialize()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/bootstrap_gen.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/bootstrap_gen.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/bootstrap_gen.py
 2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/bootstrap_gen.py
 2020-02-02 01:00:00.000000000 +0100
@@ -18,203 +18,207 @@
 libraries = [
     {
         "library": "openai >= 1.26.0",
-        "instrumentation": 
"opentelemetry-instrumentation-openai-v2==2.2b0.dev",
+        "instrumentation": "opentelemetry-instrumentation-openai-v2",
     },
     {
         "library": "google-cloud-aiplatform >= 1.64",
-        "instrumentation": "opentelemetry-instrumentation-vertexai==2.1b0.dev",
+        "instrumentation": "opentelemetry-instrumentation-vertexai>=2.0b0",
     },
     {
         "library": "aio_pika >= 7.2.0, < 10.0.0",
-        "instrumentation": "opentelemetry-instrumentation-aio-pika==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-aio-pika==0.54b1",
     },
     {
         "library": "aiohttp ~= 3.0",
-        "instrumentation": 
"opentelemetry-instrumentation-aiohttp-client==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-aiohttp-client==0.54b1",
     },
     {
         "library": "aiohttp ~= 3.0",
-        "instrumentation": 
"opentelemetry-instrumentation-aiohttp-server==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-aiohttp-server==0.54b1",
     },
     {
         "library": "aiokafka >= 0.8, < 1.0",
-        "instrumentation": "opentelemetry-instrumentation-aiokafka==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-aiokafka==0.54b1",
     },
     {
         "library": "aiopg >= 0.13.0, < 2.0.0",
-        "instrumentation": "opentelemetry-instrumentation-aiopg==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-aiopg==0.54b1",
     },
     {
         "library": "asgiref ~= 3.0",
-        "instrumentation": "opentelemetry-instrumentation-asgi==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-asgi==0.54b1",
+    },
+    {
+        "library": "asyncclick ~= 8.0",
+        "instrumentation": "opentelemetry-instrumentation-asyncclick==0.54b1",
     },
     {
         "library": "asyncpg >= 0.12.0",
-        "instrumentation": "opentelemetry-instrumentation-asyncpg==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-asyncpg==0.54b1",
     },
     {
         "library": "boto~=2.0",
-        "instrumentation": "opentelemetry-instrumentation-boto==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-boto==0.54b1",
     },
     {
         "library": "boto3 ~= 1.0",
-        "instrumentation": "opentelemetry-instrumentation-boto3sqs==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-boto3sqs==0.54b1",
     },
     {
         "library": "botocore ~= 1.0",
-        "instrumentation": "opentelemetry-instrumentation-botocore==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-botocore==0.54b1",
     },
     {
         "library": "cassandra-driver ~= 3.25",
-        "instrumentation": "opentelemetry-instrumentation-cassandra==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-cassandra==0.54b1",
     },
     {
         "library": "scylla-driver ~= 3.25",
-        "instrumentation": "opentelemetry-instrumentation-cassandra==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-cassandra==0.54b1",
     },
     {
         "library": "celery >= 4.0, < 6.0",
-        "instrumentation": "opentelemetry-instrumentation-celery==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-celery==0.54b1",
     },
     {
         "library": "click >= 8.1.3, < 9.0.0",
-        "instrumentation": "opentelemetry-instrumentation-click==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-click==0.54b1",
     },
     {
         "library": "confluent-kafka >= 1.8.2, <= 2.7.0",
-        "instrumentation": 
"opentelemetry-instrumentation-confluent-kafka==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-confluent-kafka==0.54b1",
     },
     {
         "library": "django >= 1.10",
-        "instrumentation": "opentelemetry-instrumentation-django==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-django==0.54b1",
     },
     {
         "library": "elasticsearch >= 6.0",
-        "instrumentation": 
"opentelemetry-instrumentation-elasticsearch==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-elasticsearch==0.54b1",
     },
     {
         "library": "falcon >= 1.4.1, < 5.0.0",
-        "instrumentation": "opentelemetry-instrumentation-falcon==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-falcon==0.54b1",
     },
     {
         "library": "fastapi ~= 0.58",
-        "instrumentation": "opentelemetry-instrumentation-fastapi==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-fastapi==0.54b1",
     },
     {
         "library": "flask >= 1.0",
-        "instrumentation": "opentelemetry-instrumentation-flask==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-flask==0.54b1",
     },
     {
         "library": "grpcio >= 1.42.0",
-        "instrumentation": "opentelemetry-instrumentation-grpc==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-grpc==0.54b1",
     },
     {
         "library": "httpx >= 0.18.0",
-        "instrumentation": "opentelemetry-instrumentation-httpx==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-httpx==0.54b1",
     },
     {
         "library": "jinja2 >= 2.7, < 4.0",
-        "instrumentation": "opentelemetry-instrumentation-jinja2==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-jinja2==0.54b1",
     },
     {
         "library": "kafka-python >= 2.0, < 3.0",
-        "instrumentation": 
"opentelemetry-instrumentation-kafka-python==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-kafka-python==0.54b1",
     },
     {
         "library": "kafka-python-ng >= 2.0, < 3.0",
-        "instrumentation": 
"opentelemetry-instrumentation-kafka-python==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-kafka-python==0.54b1",
     },
     {
         "library": "mysql-connector-python >= 8.0, < 10.0",
-        "instrumentation": "opentelemetry-instrumentation-mysql==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-mysql==0.54b1",
     },
     {
         "library": "mysqlclient < 3",
-        "instrumentation": "opentelemetry-instrumentation-mysqlclient==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-mysqlclient==0.54b1",
     },
     {
         "library": "pika >= 0.12.0",
-        "instrumentation": "opentelemetry-instrumentation-pika==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pika==0.54b1",
     },
     {
         "library": "psycopg >= 3.1.0",
-        "instrumentation": "opentelemetry-instrumentation-psycopg==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-psycopg==0.54b1",
     },
     {
         "library": "psycopg2 >= 2.7.3.1",
-        "instrumentation": "opentelemetry-instrumentation-psycopg2==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-psycopg2==0.54b1",
     },
     {
         "library": "psycopg2-binary >= 2.7.3.1",
-        "instrumentation": "opentelemetry-instrumentation-psycopg2==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-psycopg2==0.54b1",
     },
     {
         "library": "pymemcache >= 1.3.5, < 5",
-        "instrumentation": "opentelemetry-instrumentation-pymemcache==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pymemcache==0.54b1",
     },
     {
         "library": "pymongo >= 3.1, < 5.0",
-        "instrumentation": "opentelemetry-instrumentation-pymongo==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pymongo==0.54b1",
     },
     {
         "library": "pymssql >= 2.1.5, < 3",
-        "instrumentation": "opentelemetry-instrumentation-pymssql==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pymssql==0.54b1",
     },
     {
         "library": "PyMySQL < 2",
-        "instrumentation": "opentelemetry-instrumentation-pymysql==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pymysql==0.54b1",
     },
     {
         "library": "pyramid >= 1.7",
-        "instrumentation": "opentelemetry-instrumentation-pyramid==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-pyramid==0.54b1",
     },
     {
         "library": "redis >= 2.6",
-        "instrumentation": "opentelemetry-instrumentation-redis==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-redis==0.54b1",
     },
     {
         "library": "remoulade >= 0.50",
-        "instrumentation": "opentelemetry-instrumentation-remoulade==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-remoulade==0.54b1",
     },
     {
         "library": "requests ~= 2.0",
-        "instrumentation": "opentelemetry-instrumentation-requests==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-requests==0.54b1",
     },
     {
         "library": "sqlalchemy >= 1.0.0, < 2.1.0",
-        "instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-sqlalchemy==0.54b1",
     },
     {
-        "library": "starlette ~= 0.13.0",
-        "instrumentation": "opentelemetry-instrumentation-starlette==0.51b0",
+        "library": "starlette >= 0.13, <0.15",
+        "instrumentation": "opentelemetry-instrumentation-starlette==0.54b1",
     },
     {
         "library": "psutil >= 5",
-        "instrumentation": 
"opentelemetry-instrumentation-system-metrics==0.51b0",
+        "instrumentation": 
"opentelemetry-instrumentation-system-metrics==0.54b1",
     },
     {
         "library": "tornado >= 5.1.1",
-        "instrumentation": "opentelemetry-instrumentation-tornado==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-tornado==0.54b1",
     },
     {
         "library": "tortoise-orm >= 0.17.0",
-        "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.54b1",
     },
     {
         "library": "pydantic >= 1.10.2",
-        "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-tortoiseorm==0.54b1",
     },
     {
         "library": "urllib3 >= 1.0.0, < 3.0.0",
-        "instrumentation": "opentelemetry-instrumentation-urllib3==0.51b0",
+        "instrumentation": "opentelemetry-instrumentation-urllib3==0.54b1",
     },
 ]
 default_instrumentations = [
-    "opentelemetry-instrumentation-asyncio==0.51b0",
-    "opentelemetry-instrumentation-dbapi==0.51b0",
-    "opentelemetry-instrumentation-logging==0.51b0",
-    "opentelemetry-instrumentation-sqlite3==0.51b0",
-    "opentelemetry-instrumentation-threading==0.51b0",
-    "opentelemetry-instrumentation-urllib==0.51b0",
-    "opentelemetry-instrumentation-wsgi==0.51b0",
+    "opentelemetry-instrumentation-asyncio==0.54b1",
+    "opentelemetry-instrumentation-dbapi==0.54b1",
+    "opentelemetry-instrumentation-logging==0.54b1",
+    "opentelemetry-instrumentation-sqlite3==0.54b1",
+    "opentelemetry-instrumentation-threading==0.54b1",
+    "opentelemetry-instrumentation-urllib==0.54b1",
+    "opentelemetry-instrumentation-wsgi==0.54b1",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/dependencies.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/dependencies.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/dependencies.py
  2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/dependencies.py
  2020-02-02 01:00:00.000000000 +0100
@@ -20,7 +20,6 @@
 from packaging.requirements import InvalidRequirement, Requirement
 
 from opentelemetry.util._importlib_metadata import (
-    Distribution,
     PackageNotFoundError,
     version,
 )
@@ -40,23 +39,14 @@
         return f'DependencyConflict: requested: "{self.required}" but found: 
"{self.found}"'
 
 
-def get_dist_dependency_conflicts(
-    dist: Distribution,
-) -> DependencyConflict | None:
-    instrumentation_deps = []
-    extra = "extra"
-    instruments = "instruments"
-    instruments_marker = {extra: instruments}
-    if dist.requires:
-        for dep in dist.requires:
-            if extra not in dep or instruments not in dep:
-                continue
-
-            req = Requirement(dep)
-            if req.marker.evaluate(instruments_marker):
-                instrumentation_deps.append(req)
+class DependencyConflictError(Exception):
+    conflict: DependencyConflict
 
-    return get_dependency_conflicts(instrumentation_deps)
+    def __init__(self, conflict: DependencyConflict):
+        self.conflict = conflict
+
+    def __str__(self):
+        return str(self.conflict)
 
 
 def get_dependency_conflicts(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/instrumentor.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/instrumentor.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/instrumentor.py
  2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/instrumentor.py
  2020-02-02 01:00:00.000000000 +0100
@@ -28,6 +28,7 @@
 )
 from opentelemetry.instrumentation.dependencies import (
     DependencyConflict,
+    DependencyConflictError,
     get_dependency_conflicts,
 )
 
@@ -104,9 +105,17 @@
 
         # check if instrumentor has any missing or conflicting dependencies
         skip_dep_check = kwargs.pop("skip_dep_check", False)
+        raise_exception_on_conflict = kwargs.pop(
+            "raise_exception_on_conflict", False
+        )
         if not skip_dep_check:
             conflict = self._check_dependency_conflicts()
             if conflict:
+                # auto-instrumentation path: don't log conflict as error, 
instead
+                # let _load_instrumentors handle the exception
+                if raise_exception_on_conflict:
+                    raise DependencyConflictError(conflict)
+                # manual instrumentation path: log the conflict as error
                 _LOG.error(conflict)
                 return None
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/sqlcommenter_utils.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/sqlcommenter_utils.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/sqlcommenter_utils.py
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/sqlcommenter_utils.py
    2020-02-02 01:00:00.000000000 +0100
@@ -23,7 +23,7 @@
     meta.update(**_add_framework_tags())
     comment = _generate_sql_comment(**meta)
     sql = sql.rstrip()
-    if sql[-1] == ";":
+    if sql.endswith(";"):
         sql = sql[:-1] + comment + ";"
     else:
         sql = sql + comment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/version.py
 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/version.py
--- 
old/opentelemetry_instrumentation-0.51b0/src/opentelemetry/instrumentation/version.py
       2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/src/opentelemetry/instrumentation/version.py
       2020-02-02 01:00:00.000000000 +0100
@@ -12,4 +12,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-__version__ = "0.51b0"
+__version__ = "0.54b1"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_initialize.py
 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_initialize.py
--- 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_initialize.py
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_initialize.py
      2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,61 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# type: ignore
+
+from os import environ
+from os.path import abspath, dirname, pathsep
+from unittest import TestCase
+from unittest.mock import patch
+
+from opentelemetry.instrumentation import auto_instrumentation
+
+# TODO: convert to assertNoLogs instead of mocking logger when 3.10 is baseline
+
+
+class TestInitialize(TestCase):
+    auto_instrumentation_path = dirname(abspath(auto_instrumentation.__file__))
+
+    @patch.dict("os.environ", {}, clear=True)
+    @patch("opentelemetry.instrumentation.auto_instrumentation._logger")
+    def test_handles_pythonpath_not_set(self, logger_mock):
+        auto_instrumentation.initialize()
+        self.assertNotIn("PYTHONPATH", environ)
+        logger_mock.exception.assert_not_called()
+
+    @patch.dict("os.environ", {"PYTHONPATH": "."})
+    @patch("opentelemetry.instrumentation.auto_instrumentation._logger")
+    def test_handles_pythonpath_set(self, logger_mock):
+        auto_instrumentation.initialize()
+        self.assertEqual(environ["PYTHONPATH"], ".")
+        logger_mock.exception.assert_not_called()
+
+    @patch.dict(
+        "os.environ",
+        {"PYTHONPATH": auto_instrumentation_path + pathsep + "foo"},
+    )
+    @patch("opentelemetry.instrumentation.auto_instrumentation._logger")
+    def test_clears_auto_instrumentation_path(self, logger_mock):
+        auto_instrumentation.initialize()
+        self.assertEqual(environ["PYTHONPATH"], "foo")
+        logger_mock.exception.assert_not_called()
+
+    @patch("opentelemetry.instrumentation.auto_instrumentation._logger")
+    @patch("opentelemetry.instrumentation.auto_instrumentation._load_distro")
+    def test_handles_exceptions(self, load_distro_mock, logger_mock):
+        # pylint:disable=no-self-use
+        load_distro_mock.side_effect = ValueError
+        auto_instrumentation.initialize()
+        logger_mock.exception.assert_called_once_with(
+            "Failed to auto initialize OpenTelemetry"
+        )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_load.py
 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_load.py
--- 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_load.py
    2020-02-02 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_load.py
    2020-02-02 01:00:00.000000000 +0100
@@ -17,13 +17,16 @@
 from unittest.mock import Mock, call, patch
 
 from opentelemetry.instrumentation.auto_instrumentation import _load
+from opentelemetry.instrumentation.dependencies import (
+    DependencyConflict,
+    DependencyConflictError,
+)
 from opentelemetry.instrumentation.environment_variables import (
     OTEL_PYTHON_CONFIGURATOR,
     OTEL_PYTHON_DISABLED_INSTRUMENTATIONS,
     OTEL_PYTHON_DISTRO,
 )
 from opentelemetry.instrumentation.version import __version__
-from opentelemetry.util._importlib_metadata import EntryPoint, entry_points
 
 
 class TestLoad(TestCase):
@@ -200,17 +203,20 @@
         # Confirm method raises exception if it fails to load a distro.
         self.assertRaises(Exception, _load._load_distro)
 
+    @staticmethod
+    def _instrumentation_failed_to_load_call(entry_point, dependency_conflict):
+        return call(
+            "Skipping instrumentation %s: %s", entry_point, dependency_conflict
+        )
+
     @patch.dict(
         "os.environ",
         {OTEL_PYTHON_DISABLED_INSTRUMENTATIONS: " instr1 , instr3 "},
     )
     @patch(
-        
"opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts"
-    )
-    @patch(
         "opentelemetry.instrumentation.auto_instrumentation._load.entry_points"
     )
-    def test_load_instrumentors(self, iter_mock, dep_mock):
+    def test_load_instrumentors(self, iter_mock):
         # Mock opentelemetry_pre_instrument entry points
         # pylint: disable=too-many-locals
         pre_ep_mock1 = Mock()
@@ -255,8 +261,6 @@
             (ep_mock1, ep_mock2, ep_mock3, ep_mock4),
             (post_ep_mock1, post_ep_mock2),
         ]
-        # No dependency conflict
-        dep_mock.return_value = None
         _load._load_instrumentors(distro_mock)
         # All opentelemetry_pre_instrument entry points should be loaded
         pre_mock1.assert_called_once()
@@ -265,8 +269,8 @@
         # Only non-disabled instrumentations should be loaded
         distro_mock.load_instrumentor.assert_has_calls(
             [
-                call(ep_mock2, skip_dep_check=True),
-                call(ep_mock4, skip_dep_check=True),
+                call(ep_mock2, raise_exception_on_conflict=True),
+                call(ep_mock4, raise_exception_on_conflict=True),
             ]
         )
         self.assertEqual(distro_mock.load_instrumentor.call_count, 2)
@@ -278,13 +282,11 @@
         "os.environ",
         {OTEL_PYTHON_DISABLED_INSTRUMENTATIONS: " instr1 , instr3 "},
     )
-    @patch(
-        
"opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts"
-    )
+    @patch("opentelemetry.instrumentation.auto_instrumentation._load._logger")
     @patch(
         "opentelemetry.instrumentation.auto_instrumentation._load.entry_points"
     )
-    def test_load_instrumentors_dep_conflict(self, iter_mock, dep_mock):  # 
pylint: disable=no-self-use
+    def test_load_instrumentors_dep_conflict(self, iter_mock, mock_logger):  # 
pylint: disable=no-self-use
         ep_mock1 = Mock()
         ep_mock1.name = "instr1"
 
@@ -297,27 +299,39 @@
         ep_mock4 = Mock()
         ep_mock4.name = "instr4"
 
+        dependency_conflict = DependencyConflict("1.2.3", None)
+
         distro_mock = Mock()
+        distro_mock.load_instrumentor.side_effect = [
+            None,
+            DependencyConflictError(dependency_conflict),
+        ]
 
-        iter_mock.return_value = (ep_mock1, ep_mock2, ep_mock3, ep_mock4)
         # If a dependency conflict is raised, that instrumentation should not 
be loaded, but others still should.
-        dep_mock.side_effect = [None, "DependencyConflict"]
+        # In this case, ep_mock4 will fail to load and ep_mock2 will succeed. 
(ep_mock1 and ep_mock3 are disabled)
+        iter_mock.return_value = (ep_mock1, ep_mock2, ep_mock3, ep_mock4)
         _load._load_instrumentors(distro_mock)
         distro_mock.load_instrumentor.assert_has_calls(
             [
-                call(ep_mock2, skip_dep_check=True),
+                call(ep_mock2, raise_exception_on_conflict=True),
+                call(ep_mock4, raise_exception_on_conflict=True),
+            ]
+        )
+        assert distro_mock.load_instrumentor.call_count == 2
+        mock_logger.debug.assert_has_calls(
+            [
+                self._instrumentation_failed_to_load_call(
+                    ep_mock4.name, dependency_conflict
+                )
             ]
         )
-        distro_mock.load_instrumentor.assert_called_once()
 
-    @patch(
-        
"opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts"
-    )
+    @patch("opentelemetry.instrumentation.auto_instrumentation._load._logger")
     @patch(
         "opentelemetry.instrumentation.auto_instrumentation._load.entry_points"
     )
     def test_load_instrumentors_import_error_does_not_stop_everything(
-        self, iter_mock, dep_mock
+        self, iter_mock, mock_logger
     ):
         ep_mock1 = Mock(name="instr1")
         ep_mock2 = Mock(name="instr2")
@@ -331,25 +345,27 @@
             (ep_mock1, ep_mock2),
             (),
         ]
-        dep_mock.return_value = None
 
         _load._load_instrumentors(distro_mock)
 
         distro_mock.load_instrumentor.assert_has_calls(
             [
-                call(ep_mock1, skip_dep_check=True),
-                call(ep_mock2, skip_dep_check=True),
+                call(ep_mock1, raise_exception_on_conflict=True),
+                call(ep_mock2, raise_exception_on_conflict=True),
             ]
         )
         self.assertEqual(distro_mock.load_instrumentor.call_count, 2)
+        mock_logger.exception.assert_any_call(
+            "Importing of %s failed, skipping it",
+            ep_mock1.name,
+        )
+
+        mock_logger.debug.assert_any_call("Instrumented %s", ep_mock2.name)
 
-    @patch(
-        
"opentelemetry.instrumentation.auto_instrumentation._load.get_dist_dependency_conflicts"
-    )
     @patch(
         "opentelemetry.instrumentation.auto_instrumentation._load.entry_points"
     )
-    def test_load_instrumentors_raises_exception(self, iter_mock, dep_mock):
+    def test_load_instrumentors_raises_exception(self, iter_mock):
         ep_mock1 = Mock(name="instr1")
         ep_mock2 = Mock(name="instr2")
 
@@ -362,48 +378,59 @@
             (ep_mock1, ep_mock2),
             (),
         ]
-        dep_mock.return_value = None
 
         with self.assertRaises(ValueError):
             _load._load_instrumentors(distro_mock)
 
         distro_mock.load_instrumentor.assert_has_calls(
             [
-                call(ep_mock1, skip_dep_check=True),
+                call(ep_mock1, raise_exception_on_conflict=True),
             ]
         )
         self.assertEqual(distro_mock.load_instrumentor.call_count, 1)
 
+    @patch("opentelemetry.instrumentation.auto_instrumentation._load._logger")
+    @patch(
+        "opentelemetry.instrumentation.auto_instrumentation._load.entry_points"
+    )
+    def test_load_instrumentors_module_not_found_error(
+        self, iter_mock, mock_logger
+    ):
+        ep_mock1 = Mock()
+        ep_mock1.name = "instr1"
+
+        ep_mock2 = Mock()
+        ep_mock2.name = "instr2"
+
+        distro_mock = Mock()
+
+        distro_mock.load_instrumentor.side_effect = [
+            ModuleNotFoundError("No module named 'fake_module'"),
+            None,
+        ]
+
+        iter_mock.side_effect = [(), (ep_mock1, ep_mock2), ()]
+
+        _load._load_instrumentors(distro_mock)
+
+        distro_mock.load_instrumentor.assert_has_calls(
+            [
+                call(ep_mock1, raise_exception_on_conflict=True),
+                call(ep_mock2, raise_exception_on_conflict=True),
+            ]
+        )
+        self.assertEqual(distro_mock.load_instrumentor.call_count, 2)
+
+        mock_logger.debug.assert_any_call(
+            "Skipping instrumentation %s: %s",
+            "instr1",
+            "No module named 'fake_module'",
+        )
+
+        mock_logger.debug.assert_any_call("Instrumented %s", ep_mock2.name)
+
     def test_load_instrumentors_no_entry_point_mocks(self):
         distro_mock = Mock()
         _load._load_instrumentors(distro_mock)
         # this has no specific assert because it is run for every 
instrumentation
         self.assertTrue(distro_mock)
-
-    def test_entry_point_dist_finder(self):
-        entry_point_finder = _load._EntryPointDistFinder()
-        self.assertTrue(entry_point_finder._mapping)
-        entry_point = list(
-            entry_points(group="opentelemetry_environment_variables")
-        )[0]
-        self.assertTrue(entry_point)
-        self.assertTrue(entry_point.dist)
-
-        # this will not hit cache
-        entry_point_dist = entry_point_finder.dist_for(entry_point)
-        self.assertTrue(entry_point_dist)
-        # dist are not comparable so we are sure we are not hitting the cache
-        self.assertEqual(entry_point.dist, entry_point_dist)
-
-        # this will hit cache
-        entry_point_without_dist = EntryPoint(
-            name=entry_point.name,
-            group=entry_point.group,
-            value=entry_point.value,
-        )
-        self.assertIsNone(entry_point_without_dist.dist)
-        new_entry_point_dist = entry_point_finder.dist_for(
-            entry_point_without_dist
-        )
-        # dist are not comparable, being truthy is enough
-        self.assertTrue(new_entry_point_dist)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_sitecustomize.py
 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_sitecustomize.py
--- 
old/opentelemetry_instrumentation-0.51b0/tests/auto_instrumentation/test_sitecustomize.py
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/opentelemetry_instrumentation-0.54b1/tests/auto_instrumentation/test_sitecustomize.py
   2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,28 @@
+# Copyright The OpenTelemetry Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# type: ignore
+
+from unittest import TestCase
+from unittest.mock import patch
+
+
+class TestSiteCustomize(TestCase):
+    # pylint:disable=import-outside-toplevel,unused-import,no-self-use
+    @patch("opentelemetry.instrumentation.auto_instrumentation.initialize")
+    def test_sitecustomize_side_effects(self, initialize_mock):
+        initialize_mock.assert_not_called()
+
+        import 
opentelemetry.instrumentation.auto_instrumentation.sitecustomize  # NOQA
+
+        initialize_mock.assert_called_once()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/tests/test_dependencies.py 
new/opentelemetry_instrumentation-0.54b1/tests/test_dependencies.py
--- old/opentelemetry_instrumentation-0.51b0/tests/test_dependencies.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation-0.54b1/tests/test_dependencies.py 
2020-02-02 01:00:00.000000000 +0100
@@ -20,10 +20,8 @@
 from opentelemetry.instrumentation.dependencies import (
     DependencyConflict,
     get_dependency_conflicts,
-    get_dist_dependency_conflicts,
 )
 from opentelemetry.test.test_base import TestBase
-from opentelemetry.util._importlib_metadata import Distribution
 
 
 class TestDependencyConflicts(TestBase):
@@ -64,41 +62,3 @@
             str(conflict),
             f'DependencyConflict: requested: "pytest == 5000" but found: 
"pytest {pytest.__version__}"',
         )
-
-    def test_get_dist_dependency_conflicts(self):
-        class MockDistribution(Distribution):
-            def locate_file(self, path):
-                pass
-
-            def read_text(self, filename):
-                pass
-
-            @property
-            def requires(self):
-                return ['test-pkg ~= 1.0; extra == "instruments"']
-
-        dist = MockDistribution()
-
-        conflict = get_dist_dependency_conflicts(dist)
-        self.assertTrue(conflict is not None)
-        self.assertTrue(isinstance(conflict, DependencyConflict))
-        self.assertEqual(
-            str(conflict),
-            'DependencyConflict: requested: "test-pkg~=1.0; extra == 
"instruments"" but found: "None"',
-        )
-
-    def test_get_dist_dependency_conflicts_requires_none(self):
-        class MockDistribution(Distribution):
-            def locate_file(self, path):
-                pass
-
-            def read_text(self, filename):
-                pass
-
-            @property
-            def requires(self):
-                return None
-
-        dist = MockDistribution()
-        conflict = get_dist_dependency_conflicts(dist)
-        self.assertTrue(conflict is None)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/opentelemetry_instrumentation-0.51b0/tests/test_instrumentor.py 
new/opentelemetry_instrumentation-0.54b1/tests/test_instrumentor.py
--- old/opentelemetry_instrumentation-0.51b0/tests/test_instrumentor.py 
2020-02-02 01:00:00.000000000 +0100
+++ new/opentelemetry_instrumentation-0.54b1/tests/test_instrumentor.py 
2020-02-02 01:00:00.000000000 +0100
@@ -15,7 +15,12 @@
 
 from logging import WARNING
 from unittest import TestCase
+from unittest.mock import patch
 
+from opentelemetry.instrumentation.dependencies import (
+    DependencyConflict,
+    DependencyConflictError,
+)
 from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
 
 
@@ -48,3 +53,38 @@
 
     def test_singleton(self):
         self.assertIs(self.Instrumentor(), self.Instrumentor())
+
+    @patch("opentelemetry.instrumentation.instrumentor._LOG")
+    @patch(
+        
"opentelemetry.instrumentation.instrumentor.BaseInstrumentor._check_dependency_conflicts"
+    )
+    def test_instrument_missing_dependency_raise(
+        self, mock__check_dependency_conflicts, mock_logger
+    ):
+        instrumentor = self.Instrumentor()
+
+        mock__check_dependency_conflicts.return_value = DependencyConflict(
+            "missing", "missing"
+        )
+
+        self.assertRaises(
+            DependencyConflictError,
+            instrumentor.instrument,
+            raise_exception_on_conflict=True,
+        )
+        mock_logger.error.assert_not_called()
+
+    @patch("opentelemetry.instrumentation.instrumentor._LOG")
+    @patch(
+        
"opentelemetry.instrumentation.instrumentor.BaseInstrumentor._check_dependency_conflicts"
+    )
+    def test_instrument_missing_dependency_log_error(
+        self, mock__check_dependency_conflicts, mock_logger
+    ):
+        instrumentor = self.Instrumentor()
+        conflict = DependencyConflict("missing", "missing")
+        mock__check_dependency_conflicts.return_value = conflict
+        self.assertIsNone(
+            instrumentor.instrument(raise_exception_on_conflict=False)
+        )
+        mock_logger.error.assert_any_call(conflict)

Reply via email to