Turn any REST API into a standalone pyspark connector script — no runtime, just generated code.
Welcome to Polymo
Polymo turns a REST API into a standalone Lakeflow Declarative Pipelines script. Fill out the Builder UI form, preview real responses, and export — zero polymo runtime dependency, no config to load, nothing to import from polymo at all. The script only needs requests, the standard library, and pyspark.
The builder generates standalone scripts
For example, pointing the builder at https://jsonplaceholder.typicode.com/posts generates the following (elided below for brevity — the real file also includes retry/backoff and response-normalization helpers):
"""posts — generated by the polymo builder.
Standalone Lakeflow Declarative Pipelines source. polymo is NOT needed
at runtime; edit this file freely.
"""
BASE_URL: str = "https://jsonplaceholder.typicode.com"
PATH: str = "/posts"
PARAMS: dict[str, Any] = {"_limit": 20}
# … fetch/retry helpers elided …
# … inline Data Source (RestSource/_Reader) elided; the batch @dp.table
# below ingests through it, same as Lakeflow requires for the streaming
# variant …
spark.dataSource.register(RestSource)
@dp.table(name="posts")
def posts():
return spark.read.format("posts_source").load()
See docs/superpowers/specs/2026-08-28-codegen-pivot-design.md for the full design behind this pivot.
How does it work?
Open the Builder UI, describe your API (base URL, path, pagination, auth, schema — all optional except the URL and path), and preview it against the real API. When you're happy, switch to the Generated Code tab and download the script. Every field you fill in is baked into that script as a plain Python constant or a small block of generated code — there is nothing left to configure at runtime, and no polymo import anywhere in the output.
Ready to run it on Databricks? Switch to the Deploy tab instead: pick a
CLI profile → catalog → schema, click Bootstrap to write a full
Databricks Asset Bundle project (same generated code, laid out under
src/), then Deploy and Run to drive databricks bundle deploy/run
without leaving the Builder. Requires the
Databricks CLI and a
~/.databrickscfg profile — see
Deploy to Databricks for the full
walkthrough, including how auth secrets can reference a Databricks secret
scope instead of a placeholder.
See the Connector options reference for what every Builder field generates, and the Builder UI walkthrough for a guided tour of the form.
Migrating from polymo 0.x?
The YAML runtime (spark.read.format("polymo"), PolymoConfig,
polymo smoke) is gone in 1.0. See
docs/migration-1.0.md for what changed, and pin
polymo<1.0 (0.11.0 is the last release with the old runtime) if you're not
ready to move yet.
How to start?
pip install polymo
This installs everything you need, Builder UI included — FastAPI, Uvicorn, PySpark, PyArrow, and requests all come along, so there's nothing extra to opt into.
Note that polymo is never a dependency of the scripts it generates —
nothing you export needs polymo installed to run.
Launch the builder UI
polymo
Or without installing it first:
uvx polymo
(Optional) Run the Builder in Docker
docker compose up --build builder
- The service listens on port
8000; open http://localhost:8000 once Uvicorn reports it is running.
Where to Next
Read the docs here
Other material:
- Step by step example: medium blogpost (written for the 0.x YAML runtime — see the migration guide for what changed)
Contributing
It's still early days, but Polymo already supports a lot of features! Is there something missing? Raise an issue or contribute!
Contributions and early feedback welcome!
If Polymo helped, a ⭐ makes my day
Metadata
Release files for polymo 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| polymo-1.6.0.tar.gz | 209.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| polymo-1.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 432.7 kB
Release files / polymo-1.6.0.tar.gz
| Download URL | polymo-1.6.0.tar.gz |
|---|---|
| Size | 209.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5f31a73ae20d9a859a4f48c10b8b15bbcc74ff2cf9b86de14e9772b332ae21ca
|
|
BLAKE2b-256 checksum How to use checksums |
bedd5f2a5636754c7f53fd1a2edfd3a7124b72f73c8f984bbc374869b7eb748f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.
Transparency logRelease files / polymo-1.6.0-py3-none-any.whl
| Download URL | polymo-1.6.0-py3-none-any.whl |
|---|---|
| Size | 222.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
01655a9dcb697294f1b91f6792be6f5d949e0afe105d9d04d852296915681f1a
|
|
BLAKE2b-256 checksum How to use checksums |
d04437af9fec4afb31b1894965312cbb3bb2fbde39109c4d24ccf6650e48ce6d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.
Transparency log