Skip to content
Closed
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion logfire/_internal/cli/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import logfire

STANDARD_LIBRARY_PACKAGES = {'urllib', 'sqlite3'}
# Packages that are always present because they're dependencies of OpenTelemetry itself
OTEL_DEPENDENCY_PACKAGES = {'requests'}

# Map of instrumentation packages to the packages they instrument
OTEL_INSTRUMENTATION_MAP = {
Expand Down Expand Up @@ -235,9 +237,21 @@ def instrumented_packages_text(
def get_recommendation_texts(recommendations: set[tuple[str, str]]) -> tuple[Text, Text]:
"""Return (recommended_packages_text, install_all_text) as Text objects."""
sorted_recommendations = sorted(recommendations)
has_auto_packages = False
recommended_text = Text()
auto_packages = STANDARD_LIBRARY_PACKAGES | OTEL_DEPENDENCY_PACKAGES
for pkg_name, instrumented_pkg in sorted_recommendations:
recommended_text.append(f'☐ {instrumented_pkg} (need to install {pkg_name})\n', style='grey50')
if instrumented_pkg in auto_packages:
has_auto_packages = True
recommended_text.append(f'☐ {instrumented_pkg}* (need to install {pkg_name})\n', style='grey50')
else:
recommended_text.append(f'☐ {instrumented_pkg} (need to install {pkg_name})\n', style='grey50')
if has_auto_packages:
recommended_text.append('\n')
recommended_text.append(
'* Always detected (stdlib or OpenTelemetry dependency) — ignore if not used in your code.\n',
style='dim italic',
)
recommended_text.append('\n')

install_text = Text()
Expand Down
Loading