Skip to content

Epic 1 Story 1: Scaffold the publishable SDK foundation - #24

Closed
usmanabbas7 wants to merge 2 commits into
sprint/2026-04-06-convert-python-sdkfrom
epic-1/story-1-scaffold-the-publishable-sdk-foundation
Closed

Epic 1 Story 1: Scaffold the publishable SDK foundation#24
usmanabbas7 wants to merge 2 commits into
sprint/2026-04-06-convert-python-sdkfrom
epic-1/story-1-scaffold-the-publishable-sdk-foundation

Conversation

@usmanabbas7

Copy link
Copy Markdown
Collaborator

Summary

  • Scaffolds the publishable Python SDK foundation per Story 1.1 (sprint 2026-04-06-convert-python-sdk, workflow wf-15a9ad)
  • uv init --lib layout with hatchling build backend, src/ layout, py.typed shipped
  • Distribution name convert-python-sdk, import package convert_sdk
  • Public boundary: Core, Context, __version__ (placeholders only)
  • Version 0.1.0 single-sourced at src/convert_sdk/version.py (hatch dynamic version)
  • Empty runtime dependencies (qs-09), requires-python >=3.9
  • .gitignore includes uv.lock (library guidance), dist/, caches

Verification

  • 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 wheel convert_python_sdk-0.1.0-py3-none-any.whl + sdist with correct metadata
  • Code review (convert-code-reviewer): clean on round 1, zero findings

Spec references

  • Story: 1-1-scaffold-the-publishable-sdk-foundation.md
  • Quick specs: qs-01-canonical-naming.md, qs-09-dependency-bounds-verification.md

🤖 Generated with Claude Code

usmanabbas7 and others added 2 commits June 5, 2026 19:49
…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]>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Comment thread tests/test_packaging.py
Comment on lines +21 to +24
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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

The test test_py_typed_marker_present asserts that src/convert_sdk/py.typed exists, but the py.typed file is missing from this pull request. This will cause the test suite to fail. Please add an empty py.typed file to src/convert_sdk/ to ensure PEP 561 compatibility and make the test pass.

Comment thread tests/test_packaging.py
Python floor is 3.9.
"""

import tomllib

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

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.

Suggested change
import tomllib
try:
import tomllib
except ImportError:
import tomli as tomllib

Comment thread pyproject.toml
Comment on lines +41 to +43
dev = [
"pytest>=8,<9",
]

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

To support the fallback import of tomli on Python versions older than 3.11 in the test suite, please add tomli as a development dependency for Python < 3.11.

Suggested change
dev = [
"pytest>=8,<9",
]
dev = [
"pytest>=8,<9",
"tomli; python_version < '3.11'",
]

Comment thread pyproject.toml
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"

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The license is specified as Apache-2.0, but there is no LICENSE file in the repository. It is highly recommended to add a LICENSE file (containing the Apache 2.0 license text) to the root of the repository so that it is packaged and distributed correctly.

@abbaseya

Copy link
Copy Markdown
Collaborator

Superseded — all commits already in main (bc76b64). Closing without merge as part of post-sprint cleanup.

@abbaseya abbaseya closed this Jun 18, 2026
@abbaseya
abbaseya deleted the epic-1/story-1-scaffold-the-publishable-sdk-foundation branch June 18, 2026 16:32
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.

2 participants