This release is a pre-release and may not be stable for production use.
Sanka
The Sanka Runtime: the migration
lifecycle (create → inspect → plan → apply → verify), planner, execution
engine (batching, throttling, retries, checkpoints, resume, identity ledger),
local state store, verification framework, and the sanka CLI. The installed
distribution remains sanka-migrate; sanka-migrate is retained as a CLI
compatibility alias.
The runtime is licensed AGPL-3.0-only; the connector interface and bundled first-party connectors retain Apache-2.0 source licenses inside the same distribution. Commercial licenses are available from Sanka, Inc. for embedding the runtime without AGPL obligations.
Status: alpha. Published releases are available on
PyPI. Migration-as-code specs
(sanka.runtime.spec, YAML + programmatic, with env-reference resolution and
secret-key rejection) and canonical plan hashing (sanka.runtime.hashing) are
in place, together with the engine, state store, and CLI lifecycle commands.
APIs may still change before 1.0.
Django REST Framework → FastAPI
Run the four-command compatibility migration from a Django repository root:
sanka scan
sanka plan --to fastapi
sanka apply
sanka verify
This recipe is included in source candidate v0.1.0a6; the live
PyPI project remains the publication authority.
Sanka resolves the live Django URL graph, including DRF router routes and custom actions.
Apply creates a separate FastAPI compatibility application in
.sanka/output/fastapi; it does not overwrite the Django source. The generated
route graph forwards to the current DRF handlers in-process so teams can prove
parity first and replace handlers incrementally.
Python quick start
The distribution name and import name are intentionally different:
pip install sanka-migrate
import asyncio
from sanka import Sanka
async def main() -> None:
with Sanka() as sanka:
source = sanka.connect("markdown", "./content")
target = sanka.connect("sqlite", "content.db")
migration = sanka.migrate(source, target)
plan = await migration.plan()
await migration.apply(plan_hash=plan.plan_hash)
report = await migration.verify()
assert report.ok
asyncio.run(main())
The same bundled-provider discovery is available from the CLI:
sanka connect hubspot
Advanced integrations can use the typed sanka.runtime modules directly.
Destination date transforms
The hubspot_date_ms mapping transform converts a source date to UTC-midnight
epoch milliseconds for HubSpot date properties. It accepts ISO dates and
datetimes, Unix timestamps, and Japanese year-month period labels such as
2026年04月期. A year-month period resolves to the first day of that month;
invalid months are rejected as mapping-value errors instead of being coerced.
Public research and assessment
The CLI also reads Sanka's cited, keyless research API and can submit a free migration assessment:
sanka research eol --after 2027-01 --type shutdown
sanka research tco salesforce --lang en
sanka research compare crm-migration --platforms salesforce,hubspot
sanka assess --source "SAP ECC" --destination "HubSpot"
Research output includes per-claim vendor sources and terminal attribution.
Use --json for the unwrapped API data payload. Filtered queries with no rows
exit 2; API or transport failures exit 1. The default public API base is
https://api.sanka.com/v2/migrate; set SANKA_MIGRATE_API_BASE only when
testing an explicitly trusted staging deployment.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sanka_migrate-0.1.0a6.tar.gz.
File metadata
- Download URL: sanka_migrate-0.1.0a6.tar.gz
- Upload date:
- Size: 260.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a8db124cc71eb3c98d9f153368527bbfcd4ffeae97a5dee71fd5be7cf17e006
|
|
| MD5 |
cb6248271d0b12e25972a7a5866f19eb
|
|
| BLAKE2b-256 |
94e61a2dfc33f770f79acdc6f62357bca6371da62cee8ad5f7da9f020445624d
|
Provenance
The following attestation bundles were made for sanka_migrate-0.1.0a6.tar.gz:
Publisher:
publish.yml on sankaHQ/sanka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sanka_migrate-0.1.0a6.tar.gz -
Subject digest:
4a8db124cc71eb3c98d9f153368527bbfcd4ffeae97a5dee71fd5be7cf17e006 - Sigstore transparency entry: 2582990415
- Sigstore integration time:
-
Permalink:
sankaHQ/sanka@ffc44a9d4a915ae4c03b774c6167d6e5ec6a5b67 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/sankaHQ
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ffc44a9d4a915ae4c03b774c6167d6e5ec6a5b67 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file sanka_migrate-0.1.0a6-py3-none-any.whl.
File metadata
- Download URL: sanka_migrate-0.1.0a6-py3-none-any.whl
- Upload date:
- Size: 220.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c5e4c950f0e85540ba9d0414c7663dfd3c955cd336e63208682ffac0e4d230d
|
|
| MD5 |
be059dcbf0bdfd40b4aa366c7ac02f5e
|
|
| BLAKE2b-256 |
20008f3495c61e93e2e914f7ebea0720bae849dfc422f7a8835243555f165404
|
Provenance
The following attestation bundles were made for sanka_migrate-0.1.0a6-py3-none-any.whl:
Publisher:
publish.yml on sankaHQ/sanka
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sanka_migrate-0.1.0a6-py3-none-any.whl -
Subject digest:
6c5e4c950f0e85540ba9d0414c7663dfd3c955cd336e63208682ffac0e4d230d - Sigstore transparency entry: 2582990434
- Sigstore integration time:
-
Permalink:
sankaHQ/sanka@ffc44a9d4a915ae4c03b774c6167d6e5ec6a5b67 -
Branch / Tag:
refs/tags/v0.1.0a6 - Owner: https://github.com/sankaHQ
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ffc44a9d4a915ae4c03b774c6167d6e5ec6a5b67 -
Trigger Event:
workflow_dispatch
-
Statement type: