Skip to main content

morphql · Python client

Python client for MorphQL — a declarative DSL for structural data transformation.

Delegates execution to the MorphQL CLI or a running MorphQL server. Zero external dependencies. Python >= 3.8.

Installation

pip install morphql

Quick start

from morphql import MorphQL

# One-shot static call (CLI provider)
result = MorphQL.execute(
    "from json to json transform set name = source.firstName",
    data={"firstName": "Alice"},
)
print(result)  # {"name":"Alice"}

# From a .morphql file
result = MorphQL.execute_file("transform.morphql", data={"x": 1})

# Instance with preset defaults (server provider)
morph = MorphQL(provider="server", server_url="http://localhost:3000")
result = morph.run("from json to json transform set x = source.x", data={"x": 42})
result = morph.run_file("transform.morphql", data={"x": 42})

Providers

Provider How it works
"cli" Runs morphql CLI via subprocess (default)
"server" POST {server_url}/v1/execute via urllib

Options

Option Default Env var
provider "cli" MORPHQL_PROVIDER
runtime "node" MORPHQL_RUNTIME
cli_path "morphql" MORPHQL_CLI_PATH
node_path "node" MORPHQL_NODE_PATH
qjs_path auto-resolved MORPHQL_QJS_PATH
cache_dir $TMPDIR/morphql MORPHQL_CACHE_DIR
server_url "http://localhost:3000" MORPHQL_SERVER_URL
api_key None MORPHQL_API_KEY
timeout 30 (seconds) MORPHQL_TIMEOUT

Priority: call kwarg > instance default > env var > hardcoded default.

API

Static

MorphQL.execute(query, data=None, **options) -> str
MorphQL.execute_file(query_file, data=None, **options) -> str

Instance

morph = MorphQL(**defaults)
morph.run(query, data=None, **options) -> str
morph.run_file(query_file, data=None, **options) -> str

data accepts str (JSON), dict, list, or None.

Exceptions

Situation Exception
query missing or empty ValueError
Query file not found FileNotFoundError
CLI exits with error RuntimeError
Server HTTP error RuntimeError
Server unreachable RuntimeError

Running tests

cd packages/python
PYTHONPATH=src python -m unittest discover tests/
# or with pytest:
pip install pytest
pytest

License

MIT

Metadata

Release files for morphql 0.1.47

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for morphql 0.1.47
File Size Uploaded Provenance Actions
morphql-0.1.47.tar.gz 9.2 kB With provenance Details for morphql-0.1.47.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for morphql 0.1.47
File Interpreter ABI Platform Actions
morphql-0.1.47-py3-none-any.whl Python 3 none any Details for morphql-0.1.47-py3-none-any.whl

Total release size: 15.8 kB

Release files / morphql-0.1.47.tar.gz

Download URL morphql-0.1.47.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e6f60494d63772d6c10e281c932a845e7f99939c2a3cf7d82c882e19bd0db422
BLAKE2b-256 checksum
How to use checksums
40e75398dc6f13445ef785e3622e2d563f35a5884998523b3934c0bcf68231f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / morphql-0.1.47-py3-none-any.whl

Download URL morphql-0.1.47-py3-none-any.whl
Size 6.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a160e585fac9d75bf4f65a86695673d8956365b7b59954507c0d60f2c723d105
BLAKE2b-256 checksum
How to use checksums
62cb679afacf5f343038ee4af83be019d2c5762550bf51cc6cd232d7a235206f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Security for morphql 0.1.47

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for morphql-0.1.47.tar.gz

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 Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page