You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SK-2954: Split skyflow-python into common/v2/v3 build variants, add flowdb (v3) insert support
Restructures the repo into three build variants sharing a bundled common/
module (SK-2938 Option C): v2 (today's SDK, behavior-preserving) and a new
v3 built on the flowservice/flowdb API, insert-only this round.
common/
- Shared credential resolution, vault-URL resolution, and bearer-token
fetch/cache/expiry logic (VaultController, BaseVaultClient), enums,
errors, service_account, and generic validators.
- VaultController declares insert/get/update/delete/query/detokenize as
abstract methods (Java-interface-style); v2 and v3 each provide their
own concrete/stub implementations.
v2
- Relocated from the repo root via git mv; public API unchanged (same
class names, signatures, import paths). Vault is now a backward-compatible
alias for the internal PdbVaultController class.
- Fixed a latent bug where v2's own Env enum failed cross-class comparisons
against common's Env; both now share one definition.
v3 (skyflow-flowvault, starting at 1.0.0)
- New InsertRequest/InsertRecord/Upsert/InsertResponse types, FlowVaultController,
and VaultClient targeting the flowservice REST API.
- Insert validation ported from Java's v3 Validations.java: table/upsert
must live in exactly one place (request-level or per-record, matching
in both), 10k record cap, empty key/value checks.
- InsertResponse mirrors Java's v3 shape (summary/success/errors) as plain
dicts, each result tagged with its index in the original record list
(stable across batch boundaries).
- Structured per-record error parsing from the backend's actual error
body, plus x-request-id propagation onto error entries.
- Batching via INSERT_BATCH_SIZE (default 50, max 1000), sequential,
isolate-and-continue on a failing batch.
- Vault URL resolution uses v3's own skyvault.skyflowapis.* domain
(confirmed against a live vault to differ from v2's vault.skyflowapis.*).
CI/CD
- shared-tests.yml and shared-build-and-deploy.yml now take a `variant`
input and scope every step to v2/ or v3/ via working-directory.
- main.yml, ci.yml, beta-release.yml, internal-release.yml, and
release.yml matrix over both variants. v3 releases are distinguished
from v2's via a flowvault- tag/branch prefix (flowvault-1.0.0,
flowvault-release/*) so a release trigger is never ambiguous between
the two independently-versioned packages; v2's existing bare-semver
tags are untouched.
- Fixed ruff.toml/.codespellrc still excluding a pre-split "skyflow/generated"
path that no longer existed after the relocation.
- Fixed a bump_version.sh sed collision with a comment that happened to
contain the literal text "__version__ = ...".
- Added a common/ test job to main.yml/ci.yml.
Tests: common 36, v3 62, v2 426 (2 pre-existing unrelated fixture
failures), tests/contract passing for both variants.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
0 commit comments