Epic 1 Story 1: Scaffold the publishable SDK foundation - #24
Conversation
…s (RED) Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
…ementation (GREEN) Scaffold-only Python SDK foundation (Story 1.1). Frozen decisions honored: distribution convert-python-sdk, import package convert_sdk (src/ layout), hatchling backend, requires-python >=3.9, version single-sourced at src/convert_sdk/version.py = 0.1.0, public boundary Core/Context/__version__ (placeholders), empty runtime deps, py.typed shipped. Author Convert.com <[email protected]>; uv.lock gitignored (library). Removed .DS_Store and tests/__pycache__/*.pyc accidentally tracked in the RED commit. 9 tests pass; wheel convert_python_sdk-0.1.0-py3-none-any.whl + sdist build valid and ship convert_sdk + py.typed. Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
There was a problem hiding this comment.
Code Review
This pull request establishes the foundation scaffold for the Convert Experiences FullStack SDK for Python, setting up the project configuration, public import boundaries with placeholder classes, and initial packaging and API tests. Feedback on the changes includes addressing a missing py.typed file that causes test failures, resolving a compatibility issue where tomllib is used on Python versions below 3.11 by falling back to tomli (and adding it as a dev dependency), and adding a missing LICENSE file to the repository.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| def test_py_typed_marker_present(): | ||
| """PEP 561 marker must exist so type information ships with the package.""" | ||
| marker = PROJECT_ROOT / "src" / "convert_sdk" / "py.typed" | ||
| assert marker.is_file(), "src/convert_sdk/py.typed marker is missing" |
There was a problem hiding this comment.
| Python floor is 3.9. | ||
| """ | ||
|
|
||
| import tomllib |
There was a problem hiding this comment.
The module tomllib was introduced in Python 3.11. Since this package declares support for Python >=3.9 (in pyproject.toml), running the test suite on Python 3.9 or 3.10 will raise a ModuleNotFoundError.
To support Python 3.9 and 3.10, please use tomli as a fallback when tomllib is not available.
| import tomllib | |
| try: | |
| import tomllib | |
| except ImportError: | |
| import tomli as tomllib |
| dev = [ | ||
| "pytest>=8,<9", | ||
| ] |
There was a problem hiding this comment.
| dynamic = ["version"] | ||
| description = "Convert Experiences FullStack SDK for Python — server-side A/B testing, feature flags, and personalizations." | ||
| readme = "README.md" | ||
| license = "Apache-2.0" |
|
Superseded — all commits already in main (bc76b64). Closing without merge as part of post-sprint cleanup. |
Summary
2026-04-06-convert-python-sdk, workflowwf-15a9ad)uv init --liblayout with hatchling build backend,src/layout,py.typedshippedconvert-python-sdk, import packageconvert_sdkCore,Context,__version__(placeholders only)0.1.0single-sourced atsrc/convert_sdk/version.py(hatchdynamicversion)requires-python >=3.9.gitignoreincludesuv.lock(library guidance),dist/, cachesVerification
uv run pytest→ 9 passed (public boundary, version single-sourcing,__all__non-drift,py.typed, canonical naming, empty runtime deps, python floor)uv build→ valid wheelconvert_python_sdk-0.1.0-py3-none-any.whl+ sdist with correct metadataSpec references
1-1-scaffold-the-publishable-sdk-foundation.mdqs-01-canonical-naming.md,qs-09-dependency-bounds-verification.md🤖 Generated with Claude Code