diff --git a/py/plugins/firebase/README.md b/py/plugins/firebase/README.md index 285f89dfda..c371a66497 100644 --- a/py/plugins/firebase/README.md +++ b/py/plugins/firebase/README.md @@ -2,3 +2,17 @@ This Genkit plugin provides a set of tools and utilities for working with Firebase. + +## Install + +Firestore integrations (no telemetry): + +```bash +pip install genkit-plugin-firebase +``` + +Telemetry export to Google Cloud Observability (Cloud Trace + Cloud Monitoring): + +```bash +pip install "genkit-plugin-firebase[telemetry]" +``` diff --git a/py/plugins/firebase/pyproject.toml b/py/plugins/firebase/pyproject.toml index 04721020a5..7cb07e8747 100644 --- a/py/plugins/firebase/pyproject.toml +++ b/py/plugins/firebase/pyproject.toml @@ -58,6 +58,10 @@ readme = "README.md" requires-python = ">=3.10" version = "0.5.0" +[project.optional-dependencies] +# Telemetry export uses the Google Cloud telemetry exporters (Cloud Trace/Monitoring). +telemetry = ["genkit-plugin-google-cloud"] + [project.urls] "Bug Tracker" = "https://github.com/firebase/genkit/issues" "Documentation" = "https://firebase.google.com/docs/genkit" diff --git a/py/plugins/firebase/src/genkit/plugins/firebase/__init__.py b/py/plugins/firebase/src/genkit/plugins/firebase/__init__.py index 96c673b7b7..fd121a12d1 100644 --- a/py/plugins/firebase/src/genkit/plugins/firebase/__init__.py +++ b/py/plugins/firebase/src/genkit/plugins/firebase/__init__.py @@ -175,8 +175,6 @@ - Genkit documentation: https://genkit.dev/ """ -from genkit.plugins.google_cloud.telemetry.tracing import add_gcp_telemetry - from .firestore import define_firestore_vector_store @@ -195,6 +193,15 @@ def add_firebase_telemetry() -> None: Exports traces to Cloud Trace and metrics to Cloud Monitoring. In development (GENKIT_ENV=dev), telemetry is disabled by default. """ + try: + # Imported lazily so Firestore-only users don't need telemetry deps. + from genkit.plugins.google_cloud.telemetry.tracing import add_gcp_telemetry + except ImportError as e: # pragma: no cover + raise ImportError( + 'Firebase telemetry requires the Google Cloud telemetry exporter. ' + 'Install it with: pip install "genkit-plugin-firebase[telemetry]"' + ) from e + add_gcp_telemetry(force_export=False) diff --git a/py/plugins/firebase/src/genkit/plugins/firebase/tests/telemetry_test.py b/py/plugins/firebase/src/genkit/plugins/firebase/tests/telemetry_test.py index 93fa147163..e03a08914f 100644 --- a/py/plugins/firebase/src/genkit/plugins/firebase/tests/telemetry_test.py +++ b/py/plugins/firebase/src/genkit/plugins/firebase/tests/telemetry_test.py @@ -57,7 +57,7 @@ def _create_model_span( return mock_span -@patch('genkit.plugins.firebase.add_gcp_telemetry') +@patch('genkit.plugins.google_cloud.telemetry.tracing.add_gcp_telemetry') def test_firebase_telemetry_delegates_to_gcp(mock_add_gcp_telemetry: MagicMock) -> None: """Test that Firebase telemetry delegates to GCP telemetry.""" add_firebase_telemetry() diff --git a/py/plugins/firebase/tests/firebase_plugin_test.py b/py/plugins/firebase/tests/firebase_plugin_test.py index f3bcf561d9..031c7d76ee 100644 --- a/py/plugins/firebase/tests/firebase_plugin_test.py +++ b/py/plugins/firebase/tests/firebase_plugin_test.py @@ -30,7 +30,7 @@ def test_package_name() -> None: assert package_name() == 'genkit.plugins.firebase' -@patch('genkit.plugins.firebase.add_gcp_telemetry') +@patch('genkit.plugins.google_cloud.telemetry.tracing.add_gcp_telemetry') def test_add_firebase_telemetry_calls_gcp_telemetry(mock_add_gcp: MagicMock) -> None: """Test add_firebase_telemetry delegates to GCP telemetry.""" add_firebase_telemetry()