Skip to content

[BUG]: AttributeError: 'NoneType' object has no attribute 'lower' #13938

Open
@pfaion-soundhound

Description

@pfaion-soundhound

Tracer Version(s)

3.10.1

Python Version(s)

3.13.5

Pip Version(s)

N/A (using uv)

Bug Report

I'm getting the following error log when cancelling my app with ctrl-c:

Exception ignored in atexit callback <bound method TelemetryWriter.app_shutdown of TelemetryWriter(status=<ServiceStatus.RUNNING: 'running'>, started=True)>:
Traceback (most recent call last):
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 668, in app_shutdown
    self.periodic(force_flush=True, shutting_down=True)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 654, in periodic
    self._app_dependencies_loaded_event()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 414, in _app_dependencies_loaded_event
    packages = update_imported_dependencies(self._imported_dependencies, newly_imported_deps)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/data.py", line 77, in update_imported_dependencies
    dists = get_module_distribution_versions(module_name)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/packages.py", line 70, in get_module_distribution_versions
    dist_map = get_distributions()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/utils/cache.py", line 149, in _
    raise exc
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 749, in _telemetry_excepthook
    self.app_shutdown()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 668, in app_shutdown
    self.periodic(force_flush=True, shutting_down=True)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 654, in periodic
    self._app_dependencies_loaded_event()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 414, in _app_dependencies_loaded_event
    packages = update_imported_dependencies(self._imported_dependencies, newly_imported_deps)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/data.py", line 77, in update_imported_dependencies
    dists = get_module_distribution_versions(module_name)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/packages.py", line 70, in get_module_distribution_versions
    dist_map = get_distributions()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/utils/cache.py", line 149, in _
    raise exc
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 654, in periodic
    self._app_dependencies_loaded_event()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/writer.py", line 414, in _app_dependencies_loaded_event
    packages = update_imported_dependencies(self._imported_dependencies, newly_imported_deps)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/telemetry/data.py", line 77, in update_imported_dependencies
    dists = get_module_distribution_versions(module_name)
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/packages.py", line 70, in get_module_distribution_versions
    dist_map = get_distributions()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/utils/cache.py", line 149, in _
    raise exc
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/utils/cache.py", line 141, in _
    retval = f()
  File "/myproject/.venv/lib/python3.13/site-packages/ddtrace/internal/packages.py", line 38, in get_distributions
    name = metadata["name"].lower()
AttributeError: 'NoneType' object has no attribute 'lower'

I think the issue is the following section of code:

metadata = dist.metadata
name = metadata["name"].lower()

that does not handle if .metadata is None.

Looking at the source of importlib_metadata, the type annotations state that the metadata can be None:
https://github.com/python/importlib_metadata/blob/95ecf2aa573a68d4624506f801ca70992a337f41/importlib_metadata/__init__.py#L514-L515

Reproduction Code

No response

Error Logs

No response

Libraries in Use

No response

Operating System

Darwin Kernel Version 24.4.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions