Add SDC Agents community toolsets module#106
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
|
@googlebot I signed it. |
6f788a8 to
d541623
Compare
Thin re-export wrapper over the sdc-agents PyPI package, providing eight BaseToolset implementations (32 tools) for semantic data governance through the google.adk_community namespace. Includes: - Re-export module at google.adk_community.sdc_agents - Optional dependency: pip install google-adk-community[sdc-agents] - Import verification tests - Sample agent demo (CatalogToolset + IntrospectToolset)
d541623 to
e478805
Compare
- Bump sdc-agents dependency from >=4.2.0 to >=4.3.3 - Update toolset descriptions for 4.3.x improvements (catalog-first discovery, structured unmatched columns, mapping context persistence, sidecar metadata support) - Enhance demo agent to show full pipeline (5 toolsets) instead of minimal 2-toolset example
6041400 to
95fcaa3
Compare
|
@gemini-cli /review |
|
🤖 Hi @DeanChensj, I've received your request, and I'm working on it now! You can track my progress in the logs for more details. |
There was a problem hiding this comment.
Thanks for this contribution! The integration of SDC Agents as a community module looks solid.
The use of optional dependencies via pyproject.toml and the try...except in the package root correctly follows the project's pattern for community extensions.
I've left a few minor comments regarding configuration flexibility in the demo agent, but overall the implementation is clean and well-tested (for imports).
One thing to double-check: ensure that the sdc-agents package itself doesn't have any conflicting dependencies with the core google-adk package. Assuming the upstream tests pass as mentioned in the PR description, this should be fine.
Nice work on the comprehensive README and demo agent!
| try: | ||
| from . import sdc_agents | ||
| except ImportError: | ||
| pass # Optional: pip install google-adk-community[sdc-agents] |
There was a problem hiding this comment.
This try...except block correctly handles the optional dependency. However, for better discoverability and consistent error messaging, it's often helpful to include a message in the ImportError if a user tries to access sdc_agents directly but it's not installed. Currently, it just fails silently here but will fail with a standard ImportError if something else tries to use it. This is acceptable for a top-level __init__.py.
| ) | ||
|
|
||
| config = SDCAgentsConfig( | ||
| sdcstudio={ |
There was a problem hiding this comment.
Hardcoding the base_url to https://sdcstudio.com might be restrictive if users need to point to a staging or local environment. Consider allowing this to be overridden via an environment variable as well, e.g., "${SDC_BASE_URL:-https://sdcstudio.com}".
| "pytest-asyncio>=1.2.0", | ||
| ] | ||
| sdc-agents = [ | ||
| "sdc-agents>=4.3.3", |
There was a problem hiding this comment.
The sdc-agents dependency is added as an optional extra. This is the correct approach for community toolsets to keep the core package lean. Ensure that sdc-agents versions are compatible with the supported Python versions of this project (3.11+ is indicated in the README).
| from sdc_agents.toolsets.mapping import MappingToolset | ||
| from sdc_agents.toolsets.validation import ValidationToolset | ||
|
|
||
| __all__ = [ |
There was a problem hiding this comment.
The __all__ list is comprehensive and correctly matches the imports. Using __all__ is a best practice for public-facing modules to control the exported API.
| cls = getattr(mod, name, None) | ||
| assert cls is not None, f"{name} not found in sdc_agents module" | ||
|
|
||
| def test_all_list_complete(self): |
There was a problem hiding this comment.
This test ensures that all expected toolsets are present in the __all__ list and correctly exported. This is a good way to prevent accidental omissions during future updates.
Summary
Adds SDC Agents as a community integration module providing eight purpose-scoped BaseToolset implementations (32 tools) for semantic data governance within the ADK ecosystem.
What this adds
google.adk_community.sdc_agents): Thin wrapper over thesdc-agentsPyPI packagepip install google-adk-community[sdc-agents](no impact on users who don't need it)Toolsets (8 toolsets, 32 tools)
Architecture
Zero code duplication. Re-exports from the PyPI
sdc-agentspackage. No maintenance burden on ADK maintainers -- version updates happen via the PyPI dependency. All 218 upstream tests pass independently.