Determine if a package should be instrumented based on current state. Handles special cases for agentic libraries and providers.
(package_name: str)
| 236 | |
| 237 | |
| 238 | def _should_instrument_package(package_name: str) -> bool: |
| 239 | """ |
| 240 | Determine if a package should be instrumented based on current state. |
| 241 | Handles special cases for agentic libraries and providers. |
| 242 | """ |
| 243 | global _has_agentic_library |
| 244 | |
| 245 | # If already instrumented by AgentOps (using our refined check), skip. |
| 246 | if _is_package_instrumented(package_name): |
| 247 | logger.debug(f"_should_instrument_package: '{package_name}' already instrumented by AgentOps. Skipping.") |
| 248 | return False |
| 249 | |
| 250 | is_target_agentic = package_name in AGENTIC_LIBRARIES |
| 251 | is_target_provider = package_name in PROVIDERS |
| 252 | |
| 253 | if not is_target_agentic and not is_target_provider: |
| 254 | logger.debug( |
| 255 | f"_should_instrument_package: '{package_name}' is not a targeted provider or agentic library. Skipping." |
| 256 | ) |
| 257 | return False |
| 258 | |
| 259 | if _has_agentic_library: |
| 260 | # An agentic library is already active. |
| 261 | if is_target_agentic: |
| 262 | logger.debug( |
| 263 | f"AgentOps: An agentic library is active. Skipping instrumentation for subsequent agentic library '{package_name}'." |
| 264 | ) |
| 265 | return False |
| 266 | if is_target_provider: |
| 267 | logger.debug( |
| 268 | f"AgentOps: An agentic library is active. Skipping instrumentation for provider '{package_name}'." |
| 269 | ) |
| 270 | return False |
| 271 | else: |
| 272 | # No agentic library is active yet. |
| 273 | if is_target_agentic: |
| 274 | logger.debug( |
| 275 | f"AgentOps: '{package_name}' is the first-targeted agentic library. Will uninstrument providers if any are/become active." |
| 276 | ) |
| 277 | _uninstrument_providers() |
| 278 | return True |
| 279 | if is_target_provider: |
| 280 | logger.debug( |
| 281 | f"_should_instrument_package: '{package_name}' is a provider, no agentic library active. Allowing." |
| 282 | ) |
| 283 | return True |
| 284 | |
| 285 | logger.debug( |
| 286 | f"_should_instrument_package: Defaulting to False for '{package_name}' (state: _has_agentic_library={_has_agentic_library})" |
| 287 | ) |
| 288 | return False |
| 289 | |
| 290 | |
| 291 | def _perform_instrumentation(package_name: str): |
no test coverage detected
searching dependent graphs…