Skip to content

feat(rebrand): rename Galileo* classes to SplunkAO* (HYBIM-716) [DO NOT MERGE]#598

Draft
adityamehra wants to merge 1 commit into
rungalileo:feat/rename-env-vars-splunk-aofrom
adityamehra:feat/rename-classes-splunk-ao
Draft

feat(rebrand): rename Galileo* classes to SplunkAO* (HYBIM-716) [DO NOT MERGE]#598
adityamehra wants to merge 1 commit into
rungalileo:feat/rename-env-vars-splunk-aofrom
adityamehra:feat/rename-classes-splunk-ao

Conversation

@adityamehra

@adityamehra adityamehra commented Jun 4, 2026

Copy link
Copy Markdown

User description

⚠️ DO NOT MERGE

This PR is opened for early review only and is stacked on #597 (env var rename).
Merge #597 first, then this one.

Repository migration notice: Once Splunk AO is formally open-sourced, this code will be
re-homed to signalfx/splunk-ao-python.


Summary

Mechanical hard cut-over: renames 23 Python classes from Galileo* to SplunkAO*
as part of the Splunk Agent Observability rebrand.

Jira ticket: HYBIM-716
Stacked on: #597 — rename GALILEO_* env vars to SPLUNK_AO_*

Class renames

Old New
GalileoPythonConfig SplunkAOConfig
GalileoDecorator SplunkAODecorator
GalileoLogger SplunkAOLogger
GalileoLoggerSingleton SplunkAOLoggerSingleton
GalileoMetric SplunkAOMetric
GalileoMetrics SplunkAOMetrics
_GalileoScorersProxyMeta _SplunkAOScorersProxyMeta
_GalileoScorersProxy _SplunkAOScorersProxy
GalileoLoggerException SplunkAOLoggerException
GalileoAPIError SplunkAOAPIError
GalileoFutureError SplunkAOFutureError
GalileoOTLPExporter SplunkAOOTLPExporter
GalileoSpanProcessor SplunkAOSpanProcessor
GalileoBaseHandler SplunkAOBaseHandler
GalileoAsyncBaseHandler SplunkAOAsyncBaseHandler
_GalileoControlEventSink _SplunkAOControlEventSink
GalileoAgentControlBridge SplunkAOAgentControlBridge
GalileoCallback SplunkAOCallback
GalileoAsyncCallback SplunkAOAsyncCallback
GalileoMiddleware SplunkAOMiddleware
GalileoTracingProcessor SplunkAOTracingProcessor
GalileoCustomSpan SplunkAOCustomSpan
OpenAIGalileo OpenAISplunkAO

Not renamed: GalileoScorers (out of scope per ticket).

Key decisions

  • Hard cut-over — old names removed entirely, no deprecated aliases
  • 94 files updated — 59 src files + 35 test files
  • galileo-core unaffected — core is an upstream dependency; it doesn't import from this SDK

Test plan

  • poetry run pytest — 2015 passed, 5 skipped
  • langchain-agent example — SplunkAOCallback in use, exit 0
  • strands-agents example — exit 0
  • E2E tests — pre-existing server-side failures only, unrelated to this change

Made with Cursor


Generated description

Below is a concise technical summary of the changes proposed in this PR:
Complete Rebrand to Splunk Agent Observability APIs by renaming every Galileo-branded primitive to Splunk AO equivalents, rewiring configuration/exception flows, and aligning metrics, instrumentation helpers, and tests so the public SDK, tracing exporters, middleware, and agent-control plumbing uniformly expose the new SplunkAO* surface.

TopicDetails
Telemetry runtime rebrand Rename and rewire the runtime telemetry primitives (logger, decorator, middleware, handlers, agent-control integration, exporters, and OTEL utilities) so every decorator/trace path now instantiates, configures, and exposes SplunkAO-branded classes instead of their Galileo predecessors, preserving behavior while aligning docs/UX with Splunk AO.
Modified files (60)
  • src/galileo/__future__/__init__.py
  • src/galileo/__future__/__init__.py
  • src/galileo/__future__/metric.py
  • src/galileo/__future__/metric.py
  • src/galileo/__future__/shared/exceptions.py
  • src/galileo/__future__/shared/exceptions.py
  • src/galileo/decorator.py
  • src/galileo/decorator.py
  • src/galileo/handlers/agent_control/__init__.py
  • src/galileo/handlers/agent_control/__init__.py
  • src/galileo/handlers/agent_control/bridge.py
  • src/galileo/handlers/agent_control/bridge.py
  • src/galileo/handlers/base_async_handler.py
  • src/galileo/handlers/base_async_handler.py
  • src/galileo/handlers/base_handler.py
  • src/galileo/handlers/base_handler.py
  • src/galileo/handlers/langchain/__init__.py
  • src/galileo/handlers/langchain/__init__.py
  • src/galileo/handlers/langchain/async_handler.py
  • src/galileo/handlers/langchain/async_handler.py
  • src/galileo/handlers/langchain/handler.py
  • src/galileo/handlers/langchain/handler.py
  • src/galileo/handlers/langchain/middleware.py
  • src/galileo/handlers/langchain/middleware.py
  • src/galileo/handlers/openai_agents/__init__.py
  • src/galileo/handlers/openai_agents/__init__.py
  • src/galileo/handlers/openai_agents/handler.py
  • src/galileo/handlers/openai_agents/handler.py
  • src/galileo/logger/logger.py
  • src/galileo/logger/logger.py
  • src/galileo/middleware/tracing.py
  • src/galileo/middleware/tracing.py
  • src/galileo/otel.py
  • src/galileo/otel.py
  • tests/test_async_base_handler.py
  • tests/test_async_base_handler.py
  • tests/test_base_handler.py
  • tests/test_base_handler.py
  • tests/test_langchain.py
  • tests/test_langchain.py
  • tests/test_langchain_async.py
  • tests/test_langchain_async.py
  • tests/test_langchain_middleware.py
  • tests/test_langchain_middleware.py
  • tests/test_logger_batch.py
  • tests/test_logger_batch.py
  • tests/test_logger_distributed.py
  • tests/test_logger_distributed.py
  • tests/test_logger_timestamps.py
  • tests/test_logger_timestamps.py
  • tests/test_middleware_tracing.py
  • tests/test_middleware_tracing.py
  • tests/test_openai.py
  • tests/test_openai.py
  • tests/test_openai_agents.py
  • tests/test_openai_agents.py
  • tests/test_openai_agents_utils.py
  • tests/test_openai_agents_utils.py
  • tests/test_otel.py
  • tests/test_otel.py
Latest Contributors(0)
UserCommitDate
Domain services & metrics rebrand Update every API client/service module (projects, log streams, prompts, integrations, providers, datasets, metrics, protect, traces, search, jobs, runs, stages, experiment handling, etc.) plus the top-level exports to reference SplunkAOConfig and SplunkAOMetrics/SplunkAOMetric so authorization, metric configuration, and dataset/resource helpers are consistent with the new branding across SDK surfaces.
Modified files (72)
  • src/galileo/datasets.py
  • src/galileo/datasets.py
  • src/galileo/experiment.py
  • src/galileo/experiment.py
  • src/galileo/experiment_tags.py
  • src/galileo/experiment_tags.py
  • src/galileo/experiments.py
  • src/galileo/experiments.py
  • src/galileo/export.py
  • src/galileo/export.py
  • src/galileo/integration.py
  • src/galileo/integration.py
  • src/galileo/job_progress.py
  • src/galileo/job_progress.py
  • src/galileo/jobs.py
  • src/galileo/jobs.py
  • src/galileo/log_stream.py
  • src/galileo/log_stream.py
  • src/galileo/log_streams.py
  • src/galileo/log_streams.py
  • src/galileo/metric.py
  • src/galileo/metric.py
  • src/galileo/metrics.py
  • src/galileo/metrics.py
  • src/galileo/openai/extractors.py
  • src/galileo/openai/extractors.py
  • src/galileo/openai/response_generator.py
  • src/galileo/openai/response_generator.py
  • src/galileo/project.py
  • src/galileo/project.py
  • src/galileo/projects.py
  • src/galileo/projects.py
  • src/galileo/prompt.py
  • src/galileo/prompt.py
  • src/galileo/prompts.py
  • src/galileo/prompts.py
  • src/galileo/protect.py
  • src/galileo/protect.py
  • src/galileo/provider.py
  • src/galileo/provider.py
  • src/galileo/runs.py
  • src/galileo/runs.py
  • src/galileo/scorers.py
  • src/galileo/scorers.py
  • src/galileo/search.py
  • src/galileo/search.py
  • src/galileo/stages.py
  • src/galileo/stages.py
  • src/galileo/traces.py
  • src/galileo/traces.py
  • src/galileo/types.py
  • src/galileo/types.py
  • src/galileo/utils/datasets.py
  • src/galileo/utils/datasets.py
  • tests/test_experiment.py
  • tests/test_experiment.py
  • tests/test_experiments.py
  • tests/test_experiments.py
  • tests/test_log_stream.py
  • tests/test_log_stream.py
  • tests/test_log_streams_metrics.py
  • tests/test_log_streams_metrics.py
  • tests/test_log_streams_pagination.py
  • tests/test_log_streams_pagination.py
  • tests/test_metric.py
  • tests/test_metric.py
  • tests/test_metric_types.py
  • tests/test_metric_types.py
  • tests/test_project.py
  • tests/test_project.py
  • tests/test_prompt.py
  • tests/test_prompt.py
Latest Contributors(0)
UserCommitDate
Testing and public API exports alignment Adjust the tracing/middleware/test tooling (tracing helpers, singleton resets, agent control fixtures, OTEL exporters, future imports, openai helpers, response generators, log stream utils) to build around Splunk AO naming, ensuring unit tests still cover url/exception logic and the highest-level API (galileo import) exposes SplunkAO equivalents.
Modified files (46)
  • tests/conftest.py
  • tests/conftest.py
  • tests/test_agent_control_bridge.py
  • tests/test_agent_control_bridge.py
  • tests/test_async_base_handler.py
  • tests/test_async_base_handler.py
  • tests/test_base_handler.py
  • tests/test_base_handler.py
  • tests/test_config.py
  • tests/test_config.py
  • tests/test_configuration.py
  • tests/test_configuration.py
  • tests/test_langchain.py
  • tests/test_langchain.py
  • tests/test_langchain_async.py
  • tests/test_langchain_async.py
  • tests/test_langchain_middleware.py
  • tests/test_langchain_middleware.py
  • tests/test_log_stream.py
  • tests/test_log_stream.py
  • tests/test_log_streams_metrics.py
  • tests/test_log_streams_metrics.py
  • tests/test_log_streams_pagination.py
  • tests/test_log_streams_pagination.py
  • tests/test_metric.py
  • tests/test_metric.py
  • tests/test_metric_types.py
  • tests/test_metric_types.py
  • tests/test_middleware_tracing.py
  • tests/test_middleware_tracing.py
  • tests/test_openai.py
  • tests/test_openai.py
  • tests/test_openai_agents.py
  • tests/test_openai_agents.py
  • tests/test_openai_agents_utils.py
  • tests/test_openai_agents_utils.py
  • tests/test_otel.py
  • tests/test_otel.py
  • tests/test_project.py
  • tests/test_project.py
  • tests/test_prompt.py
  • tests/test_prompt.py
  • tests/test_public_imports.py
  • tests/test_public_imports.py
  • tests/testutils/setup.py
  • tests/testutils/setup.py
Latest Contributors(0)
UserCommitDate
Other Other files
Modified files (26)
  • src/galileo/handlers/crewai/handler.py
  • src/galileo/handlers/crewai/handler.py
  • src/galileo/logger/__init__.py
  • src/galileo/logger/__init__.py
  • src/galileo/openai/__init__.py
  • src/galileo/openai/__init__.py
  • src/galileo/shared/exceptions.py
  • src/galileo/shared/exceptions.py
  • src/galileo/tracing.py
  • src/galileo/tracing.py
  • src/galileo/utils/metrics.py
  • src/galileo/utils/metrics.py
  • src/galileo/utils/openai_agents.py
  • src/galileo/utils/openai_agents.py
  • tests/schemas/test_metrics.py
  • tests/schemas/test_metrics.py
  • tests/test_backward_compat_future.py
  • tests/test_backward_compat_future.py
  • tests/test_crewai_handler.py
  • tests/test_crewai_handler.py
  • tests/test_deprecations.py
  • tests/test_deprecations.py
  • tests/test_integration.py
  • tests/test_integration.py
  • tests/test_traces_client_headers.py
  • tests/test_traces_client_headers.py
Latest Contributors(0)
UserCommitDate
Config, singleton, and helper rebrand Swap the core configuration and singleton plumbing to SplunkAOConfig and SplunkAOLoggerSingleton, updating exception classes, environment helpers, decorator context resolution, agent-control helpers, and rich instrumentation utilities so every flow consistently resolves the Splunk AO env vars, API guard messages, and rebranded logging singleton.
Modified files (28)
  • src/galileo/__init__.py
  • src/galileo/__init__.py
  • src/galileo/agent_control.py
  • src/galileo/agent_control.py
  • src/galileo/config.py
  • src/galileo/config.py
  • src/galileo/configuration.py
  • src/galileo/configuration.py
  • src/galileo/exceptions.py
  • src/galileo/exceptions.py
  • src/galileo/handlers/langchain/__init__.py
  • src/galileo/handlers/langchain/__init__.py
  • src/galileo/log_streams.py
  • src/galileo/log_streams.py
  • src/galileo/utils/env_helpers.py
  • src/galileo/utils/env_helpers.py
  • src/galileo/utils/singleton.py
  • src/galileo/utils/singleton.py
  • tests/conftest.py
  • tests/conftest.py
  • tests/test_agent_control.py
  • tests/test_agent_control.py
  • tests/test_config.py
  • tests/test_config.py
  • tests/test_configuration.py
  • tests/test_configuration.py
  • tests/test_openai.py
  • tests/test_openai.py
Latest Contributors(0)
UserCommitDate
Metric schema/API surface updates Rebrand shared enums, metrics, and serializer helpers (BuiltInMetrics, SplunkAOMetrics, GalileoScorers proxy, MetricSpec, schema updates) plus the new SplunkAOMetric type so metric configuration functions, examples, and tests refer to SplunkAO values and logging classes, ensuring the public API surface matches docs.
Modified files (16)
  • src/galileo/__future__/metric.py
  • src/galileo/__future__/metric.py
  • src/galileo/metric.py
  • src/galileo/metric.py
  • src/galileo/metrics.py
  • src/galileo/metrics.py
  • src/galileo/schema/metrics.py
  • src/galileo/schema/metrics.py
  • src/galileo/types.py
  • src/galileo/types.py
  • tests/test_log_streams_metrics.py
  • tests/test_log_streams_metrics.py
  • tests/test_metric.py
  • tests/test_metric.py
  • tests/test_metric_types.py
  • tests/test_metric_types.py
Latest Contributors(0)
UserCommitDate
Review this PR on Baz | Customize your next review

Mechanical hard cut-over renaming 23 classes from the Galileo* prefix to
SplunkAO* as part of the Splunk Agent Observability rebrand.

Class renames:
- GalileoPythonConfig -> SplunkAOConfig
- GalileoDecorator    -> SplunkAODecorator
- GalileoLogger       -> SplunkAOLogger
- GalileoLoggerSingleton -> SplunkAOLoggerSingleton
- GalileoMetric       -> SplunkAOMetric
- GalileoMetrics      -> SplunkAOMetrics
- _GalileoScorersProxyMeta -> _SplunkAOScorersProxyMeta
- _GalileoScorersProxy     -> _SplunkAOScorersProxy
- GalileoLoggerException   -> SplunkAOLoggerException
- GalileoAPIError          -> SplunkAOAPIError
- GalileoFutureError       -> SplunkAOFutureError
- GalileoOTLPExporter      -> SplunkAOOTLPExporter
- GalileoSpanProcessor     -> SplunkAOSpanProcessor
- GalileoBaseHandler       -> SplunkAOBaseHandler
- GalileoAsyncBaseHandler  -> SplunkAOAsyncBaseHandler
- _GalileoControlEventSink -> _SplunkAOControlEventSink
- GalileoAgentControlBridge -> SplunkAOAgentControlBridge
- GalileoCallback          -> SplunkAOCallback
- GalileoAsyncCallback     -> SplunkAOAsyncCallback
- GalileoMiddleware        -> SplunkAOMiddleware
- GalileoTracingProcessor  -> SplunkAOTracingProcessor
- GalileoCustomSpan        -> SplunkAOCustomSpan
- OpenAIGalileo            -> OpenAISplunkAO

Scope: 59 src files + 35 test files updated.
Not renamed: GalileoScorers (out of scope per ticket).
Tests: 2015 passed, 5 skipped.

Co-authored-by: Cursor <cursoragent@cursor.com>
Comment thread src/galileo/exceptions.py
Comment on lines +22 to +26
class SplunkAOLoggerException(Exception):
"""Exception raised by SplunkAOLogger."""


class GalileoAPIError(Exception):
class SplunkAOAPIError(Exception):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming the public base exceptions drops GalileoAPIError/GalileoLoggerException from galileo.__init__, so existing imports and try/except handlers stop matching immediately — can we keep the old names as aliases until callers migrate?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
src/galileo/exceptions.py around lines 22-26 where SplunkAOLoggerException and
SplunkAOAPIError are introduced (and where the legacy
GalileoLoggerException/GalileoAPIError are removed), re-add backward-compatible aliases
named GalileoLoggerException and GalileoAPIError that point to the new Splunk* classes.
Implement these aliases with a DeprecationWarning on import (or first use) so existing
try/except GalileoAPIError and from galileo import GalileoLoggerException continue to
work while callers migrate. Ensure all subclasses still inherit from SplunkAOAPIError,
but that the legacy names are exported from this module (and remain available via
galileo/__init__.py if applicable).

Comment thread src/galileo/metric.py
Comment on lines +1164 to 1165
class SplunkAOMetric(Metric):
"""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GalileoMetric was renamed to SplunkAOMetric, but galileo no longer exports a legacy alias so existing imports fail — should we keep GalileoMetric = SplunkAOMetric until consumers migrate?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
src/galileo/metric.py around lines 1164-1188 where `class SplunkAOMetric(Metric):` is
defined (the previous `GalileoMetric` class appears removed), add a backwards-compatible
alias `GalileoMetric = SplunkAOMetric` so any existing `GalileoMetric` imports keep
working. Then ensure the package-level exports still include `GalileoMetric` by updating
galileo/__init__.py (or the relevant export mechanism) to re-export that alias. Verify
that both import styles `from galileo import GalileoMetric` and `from galileo.metric
import GalileoMetric` succeed and point to the same class as `SplunkAOMetric`.

Comment thread src/galileo/__init__.py
Comment on lines +20 to 24
from galileo.handlers.agent_control import SplunkAOAgentControlBridge, setup_agent_control_bridge
from galileo.integration import Integration
from galileo.log_stream import LogStream
from galileo.logger import GalileoLogger
from galileo.logger import SplunkAOLogger
from galileo.logger.control import ControlAppliesTo, ControlCheckStage, ControlResult, ControlSpan

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The root package now only re-exports SplunkAO*, so legacy imports like GalileoLogger / GalileoDecorator / GalileoAgentControlBridge break; should we keep a compatibility alias or migrate the README/clients together?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
src/galileo/__init__.py around lines 20-24 (and the re-export block around lines
99-112), the package root now only exports SplunkAO* symbols, which breaks legacy
imports like GalileoLogger/GalileoDecorator/GalileoAgentControlBridge. Add
backward-compatible aliases in this __init__.py so GalileoLogger maps to SplunkAOLogger,
GalileoDecorator maps to SplunkAODecorator, and GalileoAgentControlBridge maps to
SplunkAOAgentControlBridge (and similarly for any other Galileo* classes now removed),
and ensure those names are included in __all__ if present. Then update README references
(README.md lines ~138/382/396) either to the new SplunkAO* names or (preferably if
supporting old consumers) to mention both old and new names clearly.



class GalileoMetrics(str, Enum):
class SplunkAOMetrics(str, Enum):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

GalileoMetrics was renamed to SplunkAOMetrics, but can we keep a GalileoMetrics = SplunkAOMetrics alias during the transition so existing imports and MetricSpec callers don't hit ImportError?

Severity

Want Baz to fix this for you? Activate Fixer

Other fix methods

Fix in Cursor

Prompt for AI Agents
Before applying, verify this suggestion against the current code. In
src/galileo/schema/metrics.py around line 16 (the enum rename from `GalileoMetrics` to
`SplunkAOMetrics`), add a backward-compatibility alias so imports of `GalileoMetrics`
continue to work during the transition. Specifically, define `GalileoMetrics` as an
alias of `SplunkAOMetrics` (and, if feasible, emit a DeprecationWarning when
accessed/used), mirroring the existing deprecated-proxy pattern used for
`GalileoScorers` below. Also verify the `MetricSpec`/metric parsing logic in this file
accepts the legacy enum type by converting/coercing `GalileoMetrics` values to the
underlying `ScorerName`/`SplunkAOMetrics` representation so existing consumers don’t
hit ImportError or type-rejection.

@adityamehra adityamehra marked this pull request as draft June 10, 2026 22:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant