%global srcname opentelemetry
%global _description %{summary}.
Name: python-%{srcname}
Version: 0.8.0
Release: 3%{?dist}
Summary: The OpenTelemetry Python client
License: ASL 2.0
URL: https://github.com/open-telemetry/%{srcname}-python/
Source0: %{url}/archive/v%{version}/%{srcname}-%{version}.tar.gz
# Fix Python requirement versions
Patch0: %{name}-0.8.0-requirements.patch
BuildRequires: python3-devel
BuildRequires: %{py3_dist setuptools}
# Required for tests
BuildRequires: %{py3_dist aiohttp}
BuildRequires: %{py3_dist asgiref}
BuildRequires: %{py3_dist django}
BuildRequires: %{py3_dist flask}
BuildRequires: %{py3_dist grpcio}
BuildRequires: %{py3_dist httpretty}
BuildRequires: %{py3_dist jinja2}
BuildRequires: %{py3_dist mysql-connector-python}
BuildRequires: %{py3_dist opencensus-proto}
BuildRequires: %{py3_dist prometheus-client}
BuildRequires: %{py3_dist protobuf}
BuildRequires: %{py3_dist psycopg2}
BuildRequires: %{py3_dist pymongo}
BuildRequires: %{py3_dist pymysql}
BuildRequires: %{py3_dist pytest}
BuildRequires: %{py3_dist redis}
BuildRequires: %{py3_dist requests}
BuildRequires: %{py3_dist sqlalchemy}
BuildRequires: %{py3_dist thrift}
BuildRequires: %{py3_dist wrapt}
# Required for documentation
BuildRequires: fontpackages-devel
BuildRequires: %{py3_dist sphinx}
BuildRequires: %{py3_dist sphinx-autodoc-typehints}
BuildRequires: %{py3_dist sphinx-rtd-theme}
BuildArch: noarch
%description
%{_description}
%package -n python3-%{srcname}-api
Summary: OpenTelemetry Python API
%{?python_provide:%python_provide python3-%{srcname}-api}
%description -n python3-%{srcname}-api
%{_description}
%package -n python3-%{srcname}-auto-instrumentation
Summary: OpenTelemetry Auto Instrumentation
%{?python_provide:%python_provide python3-%{srcname}-auto-instrumentation}
%description -n python3-%{srcname}-auto-instrumentation
%{summary}.
%package -n python3-%{srcname}-sdk
Summary: OpenTelemetry Python SDK
%{?python_provide:%python_provide python3-%{srcname}-sdk}
%description -n python3-%{srcname}-sdk
%{summary}.
%package -n python3-%{srcname}-ext-aiohttp-client
Summary: OpenTelemetry aiohttp client Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-aiohttp-client}
%description -n python3-%{srcname}-ext-aiohttp-client
This library allows tracing HTTP requests made by the aiohttp client library.
%package -n python3-%{srcname}-ext-asgi
Summary: OpenTelemetry ASGI Middleware
%{?python_provide:%python_provide python3-%{srcname}-ext-asgi}
%description -n python3-%{srcname}-ext-asgi
This library provides a ASGI middleware that can be used on any ASGI framework
(such as Django, Starlette, FastAPI or Quart) to track requests timing through
OpenTelemetry.
# %%package -n python3-%%{srcname}-ext-datadog
# Summary: OpenTelemetry Datadog Exporter
# %%{?python_provide:%%python_provide python3-%%{srcname}-ext-datadog}
# %%description -n python3-%%{srcname}-ext-datadog
# This library allows to export tracing data to Datadog. OpenTelemetry span event
# and links are not supported.
%package -n python3-%{srcname}-ext-dbapi
Summary: OpenTelemetry Database API integration
%{?python_provide:%python_provide python3-%{srcname}-ext-dbapi}
%description -n python3-%{srcname}-ext-dbapi
%{summary}.
%package -n python3-%{srcname}-ext-django
Summary: OpenTelemetry Django Tracing
%{?python_provide:%python_provide python3-%{srcname}-ext-django}
%description -n python3-%{srcname}-ext-django
This library allows tracing requests for Django applications.
%package -n python3-%{srcname}-ext-flask
Summary: OpenTelemetry Flask Tracing
%{?python_provide:%python_provide python3-%{srcname}-ext-flask}
%description -n python3-%{srcname}-ext-flask
This library builds on the OpenTelemetry WSGI middleware to track web requests
in Flask applications.
%package -n python3-%{srcname}-ext-grpc
Summary: OpenTelemetry gRPC Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-grpc}
%description -n python3-%{srcname}-ext-grpc
Client and server interceptors for gRPC Python.
%package -n python3-%{srcname}-ext-jaeger
Summary: OpenTelemetry Jaeger Exporter
%{?python_provide:%python_provide python3-%{srcname}-ext-jaeger}
%description -n python3-%{srcname}-ext-jaeger
his library allows to export tracing data to Jaeger.
%package -n python3-%{srcname}-ext-jinja2
Summary: OpenTelemetry jinja2 integration
%{?python_provide:%python_provide python3-%{srcname}-ext-jinja2}
%description -n python3-%{srcname}-ext-jinja2
%{summary}.
%package -n python3-%{srcname}-ext-mysql
Summary: OpenTelemetry MySQL Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-mysql}
%description -n python3-%{srcname}-ext-mysql
Integration with MySQL that supports the mysql-connector library and is
specified to trace_integration using MySQL.
%package -n python3-%{srcname}-ext-opencensusexporter
Summary: OpenCensus Exporter
%{?python_provide:%python_provide python3-%{srcname}-ext-opencensusexporter}
%description -n python3-%{srcname}-ext-opencensusexporter
This library allows to export traces and metrics using OpenCensus.
# %%package -n python3-%%{srcname}-ext-opentracing-shim
# Summary: OpenTracing Shim for OpenTelemetry
# %%{?python_provide:%%python_provide python3-%%{srcname}-ext-opentracing-shim}
# %%description -n python3-%%{srcname}-ext-opentracing-shim
# %%{summary}.
%package -n python3-%{srcname}-ext-prometheus
Summary: OpenTelemetry Prometheus Exporter
%{?python_provide:%python_provide python3-%{srcname}-ext-prometheus}
%description -n python3-%{srcname}-ext-prometheus
This library allows to export metrics data to Prometheus.
%package -n python3-%{srcname}-ext-psycopg2
Summary: OpenTelemetry Psycopg Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-psycopg2}
%description -n python3-%{srcname}-ext-psycopg2
%{summary}.
%package -n python3-%{srcname}-ext-pymongo
Summary: OpenTelemetry pymongo Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-pymongo}
%description -n python3-%{srcname}-ext-pymongo
%{summary}.
%package -n python3-%{srcname}-ext-pymysql
Summary: OpenTelemetry PyMySQL integration
%{?python_provide:%python_provide python3-%{srcname}-ext-pymysql}
%description -n python3-%{srcname}-ext-pymysql
%{summary}.
%package -n python3-%{srcname}-ext-redis
Summary: OpenTelemetry Redis Instrumentation
%{?python_provide:%python_provide python3-%{srcname}-ext-redis}
%description -n python3-%{srcname}-ext-redis
This library allows tracing requests made by the Redis library.
%package -n python3-%{srcname}-ext-requests
Summary: OpenTelemetry requests Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-requests}
%description -n python3-%{srcname}-ext-requests
This library allows tracing HTTP requests made by the requests library.
%package -n python3-%{srcname}-ext-sqlalchemy
Summary: OpenTelemetry SQLAlchemy Tracing
%{?python_provide:%python_provide python3-%{srcname}-ext-sqlalchemy}
%description -n python3-%{srcname}-ext-sqlalchemy
This library allows tracing requests made by the SQLAlchemy library.
%package -n python3-%{srcname}-ext-sqlite3
Summary: OpenTelemetry SQLite3 Integration
%{?python_provide:%python_provide python3-%{srcname}-ext-sqlite3}
%description -n python3-%{srcname}-ext-sqlite3
%{summary}.
%package -n python3-%{srcname}-ext-wsgi
Summary: OpenTelemetry WSGI Middleware
%{?python_provide:%python_provide python3-%{srcname}-ext-wsgi}
%description -n python3-%{srcname}-ext-wsgi
This library provides a WSGI middleware that can be used on any WSGI framework
(such as Django/Flask) to track requests timing through OpenTelemetry.
%package -n python3-%{srcname}-ext-zipkin
Summary: OpenTelemetry Zipkin Exporter
%{?python_provide:%python_provide python3-%{srcname}-ext-zipkin}
%description -n python3-%{srcname}-ext-zipkin
This library allows to export tracing data to Zipkin.
%package doc
Summary: Documentation for %{name}
Requires: google-roboto-slab-fonts
Requires: lato-fonts
Requires: fontawesome-fonts
Requires: fontawesome-fonts-web
%description doc
This package provides documentation for %{name}.
%prep
%autosetup -p0 -n %{srcname}-python-%{version}
# Remove bundled egg-info
for i in $(find . -name "setup.py"); do
rm -rf ${i%/*}/src/*.egg-info
done
# Delete extensions which can't be installed because of missing dependencies in
# Fedora
rm -r ext/opentelemetry-ext-{datadog,opentracing-shim}/
# Remove shebang
pushd opentelemetry-auto-instrumentation/src/opentelemetry/auto_instrumentation/
for i in auto_instrumentation.py bootstrap.py; do
sed -e '1{\@^#!/usr/bin/env python@d}' $i >$i.new && \
touch -r $i $i.new && \
mv $i.new $i
done
popd
%build
for i in $(find . -name "setup.py" -not -path "./tests/*" -not -path "./docs/*"); do
pushd ${i%/*}
%py3_build
popd
done
# Build documentation
%make_build -C docs/ html
rm docs/_build/html/.??*
%install
for i in $(find . -name "setup.py" -not -path "./tests/*" -not -path "./docs/*"); do
pushd ${i%/*}
%py3_install
popd
done
# Drop bundled web fonts in HTML documentation
pushd ./docs/_build/html/_static/fonts/
rm fontawesome-webfont.*
ln -s %{_fontbasedir}/fontawesome/fontawesome-webfont.* .
pushd Lato/
rm *.ttf
for i in Bold BoldItalic Italic Regular; do
ln -s %{_fontbasedir}/lato/Lato-$i.ttf lato-${i,,}.ttf
done
popd
pushd RobotoSlab/
rm *.ttf
for i in Bold Regular; do
ln -s %{_fontbasedir}/google-roboto-slab/RobotoSlab-$i.ttf roboto-slab-v7-${i,,}.ttf
done
popd
popd
%check
export PYTHONPATH=$RPM_BUILD_ROOT/%{python3_sitelib}/:tests/util/src/
for i in $(find . -name "setup.py" -not -path "./tests/*" -not -path "./docs/*"); do
d=${i%/*}
pytest-%{python3_version} ${i%/*} \
--deselect=opentelemetry-sdk/tests/trace/test_trace.py::TestTracer::test_shutdown
done
%files -n python3-%{srcname}-api
%doc opentelemetry-api/{CHANGELOG.md,README.rst}
%license opentelemetry-api/LICENSE
%{python3_sitelib}/%{srcname}/
%exclude %{python3_sitelib}/%{srcname}/auto_instrumentation/
%exclude %{python3_sitelib}/%{srcname}/sdk/
%exclude %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}_api-*.egg-info/
%files -n python3-%{srcname}-auto-instrumentation
%doc opentelemetry-auto-instrumentation/{CHANGELOG.md,README.rst}
%license LICENSE
%{_bindir}/%{srcname}-auto-instrumentation
%{_bindir}/%{srcname}-bootstrap
%{python3_sitelib}/%{srcname}/auto_instrumentation/
%{python3_sitelib}/%{srcname}_auto_instrumentation-*.egg-info/
%files -n python3-%{srcname}-sdk
%doc opentelemetry-sdk/{CHANGELOG.md,README.rst}
%license opentelemetry-sdk/LICENSE
%{python3_sitelib}/%{srcname}/sdk/
%{python3_sitelib}/%{srcname}_sdk-*.egg-info/
%files -n python3-%{srcname}-ext-aiohttp-client
%doc ext/opentelemetry-ext-aiohttp-client/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-aiohttp-client/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/aiohttp_client/
%{python3_sitelib}/%{srcname}_ext_aiohttp_client-*.egg-info/
%files -n python3-%{srcname}-ext-asgi
%doc ext/opentelemetry-ext-asgi/{CHANGELOG.md,README.rst}
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/asgi/
%{python3_sitelib}/%{srcname}_ext_asgi-*.egg-info/
# %%files -n python3-%%{srcname}-ext-datadog
# %%doc ext/opentelemetry-ext-datadog/{CHANGELOG.md,README.rst}
# %%dir %%{python3_sitelib}/%%{srcname}/ext/
# %%{python3_sitelib}/%%{srcname}/ext/datadog/
# %%{python3_sitelib}/%%{srcname}_ext_datadog-*.egg-info/
%files -n python3-%{srcname}-ext-dbapi
%doc ext/opentelemetry-ext-dbapi/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-dbapi/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/dbapi/
%{python3_sitelib}/%{srcname}_ext_dbapi-*.egg-info/
%files -n python3-%{srcname}-ext-django
%doc ext/opentelemetry-ext-django/{CHANGELOG.md,README.rst}
%license LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/django/
%{python3_sitelib}/%{srcname}_ext_django-*.egg-info/
%files -n python3-%{srcname}-ext-flask
%doc ext/opentelemetry-ext-flask/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-flask/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/flask/
%{python3_sitelib}/%{srcname}_ext_flask-*.egg-info/
%files -n python3-%{srcname}-ext-grpc
%doc ext/opentelemetry-ext-grpc/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-grpc/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/grpc/
%{python3_sitelib}/%{srcname}_ext_grpc-*.egg-info/
%files -n python3-%{srcname}-ext-jaeger
%doc ext/opentelemetry-ext-jaeger/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-jaeger/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/jaeger/
%{python3_sitelib}/%{srcname}_ext_jaeger-*.egg-info/
%files -n python3-%{srcname}-ext-jinja2
%doc ext/opentelemetry-ext-jinja2/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-jinja2/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/jinja2/
%{python3_sitelib}/%{srcname}_ext_jinja2-*.egg-info/
%files -n python3-%{srcname}-ext-mysql
%doc ext/opentelemetry-ext-mysql/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-mysql/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/mysql/
%{python3_sitelib}/%{srcname}_ext_mysql-*.egg-info/
# %%files -n python3-%%{srcname}-ext-opentracing-shim
# %%doc ext/opentelemetry-ext-opentracing-shim/{CHANGELOG.md,README.rst}
# %%license ext/opentelemetry-ext-opentracing-shim/LICENSE
# %%dir %%{python3_sitelib}/%%{srcname}/ext/
# %%{python3_sitelib}/%%{srcname}/ext/opentracing_shim/
# %%{python3_sitelib}/%%{srcname}_opentracing_shim-*.egg-info/
%files -n python3-%{srcname}-ext-opencensusexporter
%doc ext/opentelemetry-ext-opencensusexporter/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-opencensusexporter/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/opencensusexporter/
%{python3_sitelib}/%{srcname}_ext_opencensusexporter-*.egg-info/
%files -n python3-%{srcname}-ext-prometheus
%doc ext/opentelemetry-ext-prometheus/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-prometheus/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/prometheus/
%{python3_sitelib}/%{srcname}_ext_prometheus-*.egg-info/
%files -n python3-%{srcname}-ext-psycopg2
%doc ext/opentelemetry-ext-psycopg2/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-psycopg2/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/psycopg2/
%{python3_sitelib}/%{srcname}_ext_psycopg2-*.egg-info/
%files -n python3-%{srcname}-ext-pymongo
%doc ext/opentelemetry-ext-pymongo/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-pymongo/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/pymongo/
%{python3_sitelib}/%{srcname}_ext_pymongo-*.egg-info/
%files -n python3-%{srcname}-ext-pymysql
%doc ext/opentelemetry-ext-pymysql/{CHANGELOG.md,README.rst}
%license LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/pymysql/
%{python3_sitelib}/%{srcname}_ext_pymysql-*.egg-info/
%files -n python3-%{srcname}-ext-redis
%doc ext/opentelemetry-ext-redis/{CHANGELOG.md,README.rst}
%license LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/redis/
%{python3_sitelib}/%{srcname}_ext_redis-*.egg-info/
%files -n python3-%{srcname}-ext-requests
%doc ext/opentelemetry-ext-requests/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-requests/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/requests/
%{python3_sitelib}/%{srcname}_ext_requests-*.egg-info/
%files -n python3-%{srcname}-ext-sqlalchemy
%doc ext/opentelemetry-ext-sqlalchemy/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-sqlalchemy/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/sqlalchemy/
%{python3_sitelib}/%{srcname}_ext_sqlalchemy-*.egg-info/
%files -n python3-%{srcname}-ext-sqlite3
%doc ext/opentelemetry-ext-sqlite3/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-sqlite3/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/sqlite3/
%{python3_sitelib}/%{srcname}_ext_sqlite3-*.egg-info/
%files -n python3-%{srcname}-ext-wsgi
%doc ext/opentelemetry-ext-wsgi/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-wsgi/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/wsgi/
%{python3_sitelib}/%{srcname}_ext_wsgi-*.egg-info/
%files -n python3-%{srcname}-ext-zipkin
%doc ext/opentelemetry-ext-zipkin/{CHANGELOG.md,README.rst}
%license ext/opentelemetry-ext-zipkin/LICENSE
%dir %{python3_sitelib}/%{srcname}/ext/
%{python3_sitelib}/%{srcname}/ext/zipkin/
%{python3_sitelib}/%{srcname}_ext_zipkin-*.egg-info/
%files doc
%doc docs/_build/html/
%license LICENSE
%changelog
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.8.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Wed Jul 22 2020 Mohamed El Morabity <melmorabity@fedoraproject.org> - 0.8.0-2
- Update requirements patch to drop version condition on PyMySQL (RHBZ #1858698)
* Thu Jun 18 2020 Mohamed El Morabity <melmorabity@fedoraproject.org> - 0.8.0-1
- Update to 0.8.0
* Sun May 24 2020 Mohamed El Morabity <melmorabity@fedoraproject.org> - 0.7.1-1
- Initial RPM release