|
19 | 19 | import subprocess
|
20 | 20 | import sys
|
21 | 21 |
|
22 |
| -import pkg_resources |
| 22 | +from importlib_metadata import PackageNotFoundError, distribution |
| 23 | +from packaging import version |
23 | 24 |
|
24 | 25 | from opentelemetry.instrumentation.bootstrap_gen import (
|
25 | 26 | default_instrumentations,
|
@@ -83,21 +84,45 @@ def _pip_check():
|
83 | 84 | raise RuntimeError(f"Dependency conflict found: {pip_check}")
|
84 | 85 |
|
85 | 86 |
|
| 87 | +# def _is_installed(req): |
| 88 | +# if req in sys.modules: |
| 89 | +# return True |
| 90 | + |
| 91 | +# try: |
| 92 | +# dist = distribution(req).version |
| 93 | +# except PackageNotFoundError: |
| 94 | +# return False |
| 95 | +# except pkg_resources.VersionConflict as exc: |
| 96 | +# logger.warning( |
| 97 | +# "instrumentation for package %s is available but version %s is installed. Skipping.", |
| 98 | +# exc.req, |
| 99 | +# exc.dist.as_requirement(), # pylint: disable=no-member |
| 100 | +# ) |
| 101 | +# return False |
| 102 | +# return True |
| 103 | + |
| 104 | + |
86 | 105 | def _is_installed(req):
|
87 | 106 | if req in sys.modules:
|
88 | 107 | return True
|
89 | 108 |
|
90 | 109 | try:
|
91 |
| - pkg_resources.get_distribution(req) |
92 |
| - except pkg_resources.DistributionNotFound: |
93 |
| - return False |
94 |
| - except pkg_resources.VersionConflict as exc: |
95 |
| - logger.warning( |
96 |
| - "instrumentation for package %s is available but version %s is installed. Skipping.", |
97 |
| - exc.req, |
98 |
| - exc.dist.as_requirement(), # pylint: disable=no-member |
99 |
| - ) |
| 110 | + dist = distribution(req) |
| 111 | + # Assuming 'req' is in format 'package==version' |
| 112 | + # Modify this as per the format of your 'req' string |
| 113 | + required_version = req.split("==")[1] if "==" in req else None |
| 114 | + if required_version and version.parse(dist.version) != version.parse( |
| 115 | + required_version |
| 116 | + ): |
| 117 | + logger.warning( |
| 118 | + "Instrumentation for package %s is available but version %s is installed. Skipping.", |
| 119 | + req, |
| 120 | + dist.version, |
| 121 | + ) |
| 122 | + return False |
| 123 | + except PackageNotFoundError: |
100 | 124 | return False
|
| 125 | + |
101 | 126 | return True
|
102 | 127 |
|
103 | 128 |
|
|
0 commit comments