From bd2749cf2addf3a56413cbb3909c7c92387b6aca Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 1 Oct 2025 14:10:46 +0000 Subject: [PATCH 1/5] Add gcp auth package as optional dependency to the HTTP/GRPC OTLP Exporters --- .../opentelemetry-exporter-otlp-proto-grpc/pyproject.toml | 5 +++++ .../opentelemetry-exporter-otlp-proto-http/pyproject.toml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml b/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml index f0e4fd7ab8..99c09e0848 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml @@ -49,6 +49,11 @@ otlp_proto_grpc = "opentelemetry.exporter.otlp.proto.grpc.trace_exporter:OTLPSpa Homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/opentelemetry-exporter-otlp-proto-grpc" Repository = "https://github.com/open-telemetry/opentelemetry-python" +[project.optional-dependencies] +gcp-auth = [ + "opentelemetry-exporter-credential-provider-gcp >= 1.38.0", +] + [tool.hatch.version] path = "src/opentelemetry/exporter/otlp/proto/grpc/version/__init__.py" diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml b/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml index 330e9b68fc..1a3611995a 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml +++ b/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml @@ -48,6 +48,11 @@ otlp_proto_http = "opentelemetry.exporter.otlp.proto.http._log_exporter:OTLPLogE Homepage = "https://github.com/open-telemetry/opentelemetry-python/tree/main/exporter/opentelemetry-exporter-otlp-proto-http" Repository = "https://github.com/open-telemetry/opentelemetry-python" +[project.optional-dependencies] +gcp-auth = [ + "opentelemetry-exporter-credential-provider-gcp >= 1.38.0", +] + [tool.hatch.version] path = "src/opentelemetry/exporter/otlp/proto/http/version/__init__.py" From a815c9d6b195bf3f8f43ccc48ef735dfe57316f1 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Wed, 1 Oct 2025 14:27:37 +0000 Subject: [PATCH 2/5] Add changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90fcb56cb7..dd56a68445 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ([#4755](https://github.com/open-telemetry/opentelemetry-python/pull/4755)) - logs: extend Logger.emit to accept separated keyword arguments ([#4737](https://github.com/open-telemetry/opentelemetry-python/pull/4737)) +- Add `opentelemetry-exporter-credential-provider-gcp` as an optional dependency to `opentelemetry-exporter-otlp-proto-grpc` + and `opentelemetry-exporter-otlp-proto-http` ([#4760](https://github.com/open-telemetry/opentelemetry-python/pull/4760)). ## Version 1.37.0/0.58b0 (2025-09-11) From 0d8065eee0ff17d9fb0ab188ffc4a40e46b6c9bc Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 30 Oct 2025 17:36:09 +0000 Subject: [PATCH 3/5] Switch to 0.59 --- exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml | 2 +- exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml b/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml index 1850ea104f..ca6537edbc 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml +++ b/exporter/opentelemetry-exporter-otlp-proto-grpc/pyproject.toml @@ -51,7 +51,7 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python" [project.optional-dependencies] gcp-auth = [ - "opentelemetry-exporter-credential-provider-gcp >= 1.38.0", + "opentelemetry-exporter-credential-provider-gcp >= 0.59b0", ] [tool.hatch.version] diff --git a/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml b/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml index ffd4141fca..d201e10e97 100644 --- a/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml +++ b/exporter/opentelemetry-exporter-otlp-proto-http/pyproject.toml @@ -50,7 +50,7 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python" [project.optional-dependencies] gcp-auth = [ - "opentelemetry-exporter-credential-provider-gcp >= 1.38.0", + "opentelemetry-exporter-credential-provider-gcp >= 0.59b0", ] [tool.hatch.version] From 4a23f0801ab9f89ca714672caa09fd0ad440624b Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Thu, 30 Oct 2025 17:44:13 +0000 Subject: [PATCH 4/5] Update lock file --- uv.lock | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/uv.lock b/uv.lock index c578a5d28d..2b43c2e709 100644 --- a/uv.lock +++ b/uv.lock @@ -37,6 +37,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/39/e3/893e8757be2612e6c266d9bb58ad2e3651524b5b40cf56761e985a28b13e/asgiref-3.8.1-py3-none-any.whl", hash = "sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47", size = 23828 }, ] +[[package]] +name = "cachetools" +version = "6.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/7e/b975b5814bd36faf009faebe22c1072a1fa1168db34d285ef0ba071ad78c/cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201", size = 31325 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280 }, +] + [[package]] name = "certifi" version = "2025.1.31" @@ -120,6 +129,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, ] +[[package]] +name = "google-auth" +version = "2.42.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "pyasn1-modules" }, + { name = "rsa" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/6b/22a77135757c3a7854c9f008ffed6bf4e8851616d77faf13147e9ab5aae6/google_auth-2.42.1.tar.gz", hash = "sha256:30178b7a21aa50bffbdc1ffcb34ff770a2f65c712170ecd5446c4bef4dc2b94e", size = 295541 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/05/adeb6c495aec4f9d93f9e2fc29eeef6e14d452bba11d15bdb874ce1d5b10/google_auth-2.42.1-py2.py3-none-any.whl", hash = "sha256:eb73d71c91fc95dbd221a2eb87477c278a355e7367a35c0d84e6b0e5f9b4ad11", size = 222550 }, +] + [[package]] name = "googleapis-common-protos" version = "1.68.0" @@ -220,6 +243,20 @@ requires-dist = [ { name = "typing-extensions", specifier = ">=4.5.0" }, ] +[[package]] +name = "opentelemetry-exporter-credential-provider-gcp" +version = "0.59b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "google-auth" }, + { name = "grpcio" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/2c/e8ebd03eccaba7b1cf8aa83625f2d8a8db8842a6acdfbd73950190842957/opentelemetry_exporter_credential_provider_gcp-0.59b0.tar.gz", hash = "sha256:b951f71f7ab0f3bf97556ca3c6520bc9826e6be3a15f826a924b786b80563fa8", size = 7161 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/30/44bc046033ead9affc529036ed03a94b40553cf98044216d893c6f149321/opentelemetry_exporter_credential_provider_gcp-0.59b0-py3-none-any.whl", hash = "sha256:034d46511e82d25c75d98fc04c61f78d6d05d06e587377850f51fbf0d9bb7ab1", size = 8340 }, +] + [[package]] name = "opentelemetry-exporter-otlp" source = { editable = "exporter/opentelemetry-exporter-otlp" } @@ -257,17 +294,24 @@ dependencies = [ { name = "typing-extensions" }, ] +[package.optional-dependencies] +gcp-auth = [ + { name = "opentelemetry-exporter-credential-provider-gcp" }, +] + [package.metadata] requires-dist = [ { name = "googleapis-common-protos", specifier = "~=1.57" }, { name = "grpcio", marker = "python_full_version < '3.13'", specifier = ">=1.63.2,<2.0.0" }, { name = "grpcio", marker = "python_full_version >= '3.13'", specifier = ">=1.66.2,<2.0.0" }, { name = "opentelemetry-api", editable = "opentelemetry-api" }, + { name = "opentelemetry-exporter-credential-provider-gcp", marker = "extra == 'gcp-auth'", specifier = ">=0.59b0" }, { name = "opentelemetry-exporter-otlp-proto-common", editable = "exporter/opentelemetry-exporter-otlp-proto-common" }, { name = "opentelemetry-proto", editable = "opentelemetry-proto" }, { name = "opentelemetry-sdk", editable = "opentelemetry-sdk" }, { name = "typing-extensions", specifier = ">=4.6.0" }, ] +provides-extras = ["gcp-auth"] [[package]] name = "opentelemetry-exporter-otlp-proto-http" @@ -282,16 +326,23 @@ dependencies = [ { name = "typing-extensions" }, ] +[package.optional-dependencies] +gcp-auth = [ + { name = "opentelemetry-exporter-credential-provider-gcp" }, +] + [package.metadata] requires-dist = [ { name = "googleapis-common-protos", specifier = "~=1.52" }, { name = "opentelemetry-api", editable = "opentelemetry-api" }, + { name = "opentelemetry-exporter-credential-provider-gcp", marker = "extra == 'gcp-auth'", specifier = ">=0.59b0" }, { name = "opentelemetry-exporter-otlp-proto-common", editable = "exporter/opentelemetry-exporter-otlp-proto-common" }, { name = "opentelemetry-proto", editable = "opentelemetry-proto" }, { name = "opentelemetry-sdk", editable = "opentelemetry-sdk" }, { name = "requests", specifier = "~=2.7" }, { name = "typing-extensions", specifier = ">=4.5.0" }, ] +provides-extras = ["gcp-auth"] [[package]] name = "opentelemetry-exporter-prometheus" @@ -465,6 +516,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fd/b2/ab07b09e0f6d143dfb839693aa05765257bceaa13d03bf1a696b78323e7a/protobuf-5.29.3-py3-none-any.whl", hash = "sha256:0a18ed4a24198528f2333802eb075e59dea9d679ab7a6c5efb017a59004d849f", size = 172550 }, ] +[[package]] +name = "pyasn1" +version = "0.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135 }, +] + +[[package]] +name = "pyasn1-modules" +version = "0.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/e6/78ebbb10a8c8e4b61a59249394a4a594c1a7af95593dc933a349c8d00964/pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6", size = 307892 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/8d/d529b5d697919ba8c11ad626e835d4039be708a35b0d22de83a269a6682c/pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a", size = 181259 }, +] + [[package]] name = "requests" version = "2.32.3" @@ -480,6 +552,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] +[[package]] +name = "rsa" +version = "4.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyasn1" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696 }, +] + [[package]] name = "typing-extensions" version = "4.12.2" From a428ad10707a09ca56ba4337e62c70c400b57dc8 Mon Sep 17 00:00:00 2001 From: Dylan Russell Date: Tue, 11 Nov 2025 14:16:14 +0000 Subject: [PATCH 5/5] fix lock file --- uv.lock | 9 --------- 1 file changed, 9 deletions(-) diff --git a/uv.lock b/uv.lock index 8c1d973fb0..ebc18e1de0 100644 --- a/uv.lock +++ b/uv.lock @@ -49,15 +49,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280, upload-time = "2025-10-12T14:55:28.382Z" }, ] -[[package]] -name = "cachetools" -version = "6.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/7e/b975b5814bd36faf009faebe22c1072a1fa1168db34d285ef0ba071ad78c/cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201", size = 31325 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280 }, -] - [[package]] name = "certifi" version = "2025.1.31"