Skip to content

Commit

Permalink
hooks: add hook for opentelemetry
Browse files Browse the repository at this point in the history
Add hook for `opentelemetry` that collects all entry-points with
`opentelemetry_` prefix.
  • Loading branch information
rokm committed Apr 17, 2024
1 parent 20e08ca commit 30edbb1
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 0 deletions.
2 changes: 2 additions & 0 deletions news/725.new.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Add hook for ``opentelemetry`` that collects all entry-points with
``opentelemetry_`` prefix.
1 change: 1 addition & 0 deletions requirements-test-libraries.txt
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ pygwalker==0.4.7
eth-hash==0.7.0
pypylon==3.0.1
python-pptx==0.6.23
opentelemetry-sdk==1.24.0

# ------------------- Platform (OS) specifics

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# ------------------------------------------------------------------
# Copyright (c) 2024 PyInstaller Development Team.
#
# This file is distributed under the terms of the GNU General Public
# License (version 2.0 or later).
#
# The full license is available in LICENSE.GPL.txt, distributed with
# this software.
#
# SPDX-License-Identifier: GPL-2.0-or-later
# ------------------------------------------------------------------

from PyInstaller.utils.hooks import collect_entry_point, logger
from _pyinstaller_hooks_contrib.compat import importlib_metadata

# Determine all `opentelementry_` entry-point groups...
try:
entry_point_groups = {
entry_point.group
for entry_point in importlib_metadata.entry_points()
if entry_point.group.startswith('opentelemetry_')
}
except Exception:
logger.warning("hook-opentelemetry: failed to query opentelemetry_ entry points!", exc_info=True)
entry_point_groups = set()


# ... and collect them
datas = set()
hiddenimports = set()

for entry_point_group in entry_point_groups:
ep_datas, ep_hiddenimports = collect_entry_point(entry_point_group)
datas.update(ep_datas)
hiddenimports.update(ep_hiddenimports)

datas = list(datas)
hiddenimports = list(hiddenimports)
22 changes: 22 additions & 0 deletions src/_pyinstaller_hooks_contrib/tests/test_libraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -1957,3 +1957,25 @@ def test_pptx(pyi_builder):
import pptx
pptx.Presentation()
""")


@importorskip('opentelemetry.sdk')
def test_opentelemetry(pyi_builder):
# Basic tracer example, taken from
# https://github.com/open-telemetry/opentelemetry-python/blob/main/docs/examples/basic_tracer/basic_trace.py
pyi_builder.test_source("""
from opentelemetry import trace
from opentelemetry.sdk.trace import TracerProvider
from opentelemetry.sdk.trace.export import (
BatchSpanProcessor,
ConsoleSpanExporter,
)
trace.set_tracer_provider(TracerProvider())
trace.get_tracer_provider().add_span_processor(
BatchSpanProcessor(ConsoleSpanExporter())
)
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("foo"):
print("Hello world!")
""")

0 comments on commit 30edbb1

Please sign in to comment.