Python bindings for the DataMorph transformation engine
Project description
DataMorph
DataMorph is a transformation language and runtime for teams that need to work across more than one document format.
It is designed for integration work where JSON is only part of the story. Typical use cases include:
- XML to JSON
- CSV to XML
- YAML to JSON
- text or binary payloads with headers, attributes, and runtime variables
- the same mapping reused in Java, Apache Camel, Apache NiFi, and the browser Playground
DataMorph is also designed for portability at the runtime level. Because the core is implemented in Rust, the same engine can be packaged more naturally as native libraries, services, CLIs, or thin language bindings than a JVM-first transformation engine. That makes it easier to carry the same transformation engine across platforms and integration stacks over time.
DataMorph is free to use with no expiration. The commercial model is paid support, onboarding, implementation help, and integration services, not runtime licensing.
Who Should Evaluate It
DataMorph is worth evaluating if your team wants:
- one mapping language across Java, Camel, NiFi, and browser tooling
- multi-format transformation instead of JSON-only mapping
- a runtime that can see
payload,headers,attributes, andvars - portable mapping bundles that can be imported and exported between environments
- a runtime core that is portable beyond one host platform or one JVM-only packaging model
If someone wants the closest like-for-like comparison, start with DataSonnet. It is the only close language-level comparison. Tools like Jolt and JSONata are narrower adjacent tools, not direct peers.
What An External Team Can Test
An evaluator does not need access to this repository.
There are four practical entry points:
- Playground
- browser-based evaluation of the language and format handling
- Java SDK
- embeddable host API for Java applications
- Apache Camel
- route integration through Camel components
- Apache NiFi
- processor, controller service, custom UI, and NAR packaging
Supported Runtime Formats
Implemented in the current Java SDK and plugin-facing runtime:
- JSON
- XML
- CSV
- YAML
- plain text
- NDJSON
- URL-encoded
- multipart
- DM and DML
- binary as
application/octet-stream - Excel (
.xlsxread/write,.xlsread-only) asapplication/xlsx
Recognized but not implemented today:
- Avro
- Protobuf
- Flatfile
External Evaluation Paths
1. Java SDK
Use Maven Central:
<dependency>
<groupId>io.github.arminmajerie</groupId>
<artifactId>data-morph-java-sdk</artifactId>
<version>1.21.1</version>
</dependency>
If 1.21.1 has not finished propagating through Maven Central yet, use the latest visible version or request the evaluation package directly from the maintainer.
See Java SDK README.
2. Apache Camel
Use the Camel modules from Maven Central once they are published:
io.github.arminmajerie:datamorph-camel-component:1.21.1io.github.arminmajerie:datamorph-camel-dataformat:1.21.1io.github.arminmajerie:datamorph-camel-language:1.21.1io.github.arminmajerie:datamorph-camel-spring-boot-starter:1.21.1
If the 1.21.1 artifacts are not visible in Central yet, request a prebuilt evaluation package while publication completes.
See Camel Quickstart.
3. Apache NiFi
The main NiFi runtime artifact is:
io.github.arminmajerie:datamorph-nifi-nar:1.21.1
The NAR can be published through Maven Central or handed over directly as a file for evaluation.
See NiFi Quickstart.
4. Playground
The public Playground is the fastest way to understand the language:
Why Teams Look At DataMorph
- One language reused across SDK, Camel, NiFi, and browser tooling
- Multi-format input and output instead of a JSON-only model
- Runtime scope supports
payload,headers,attributes, andvars - Portable mapping bundles make import and export part of the product story
- The Java SDK is embeddable instead of being tied to one vendor runtime
- The core runtime is Rust-based, which makes cross-platform packaging and thin host bindings easier over time
- The language is free to use, so evaluation is not blocked by license negotiation
Closest Comparison
The closest real comparison is DataSonnet.
Why:
- both are transformation-first languages rather than only JSON patch tools
- both can be embedded into integration runtimes
- both are relevant in Camel discussions
Where DataMorph is trying to differentiate:
- a more expressive transformation language
- stronger date and time handling
- richer mapping ergonomics
- one consistent model across XML, CSV, JSON, YAML, text, and runtime metadata
- a runtime core that is easier to carry across platforms and integration stacks over time
- one stack spanning Java SDK, Camel, NiFi, and portable bundles
Camel already has official DataSonnet support through camel-datasonnet, but NiFi does not appear to ship a built-in official DataSonnet processor in the current NiFi component docs. That makes the NiFi story one of the clearest practical differences today.
Honest Status
What is already strong:
- Java SDK exists and is publishable through Maven Central
- Camel integration is implemented and tested
- NiFi processor, controller service, custom UI, and NAR are implemented
- NiFi runtime deployment was smoke-tested in a real NiFi 2.8.0 instance
- Portable mapping bundles work across SDK, Camel, and NiFi
What still needs polish:
- public release flow for the Camel modules
- polished public release flow for the NiFi NAR
- real macOS JNI binaries for the Java SDK
- more examples and onboarding material for new teams
So the core product exists. The main remaining work is packaging, release flow, and adoption polish.
How To Position DataMorph
Do not pitch DataMorph as “the only thing on the market.”
The honest pitch is:
- the closest apples-to-apples comparison is DataSonnet
- DataMorph is interesting because it combines multi-format transforms, an embeddable Java SDK, Camel integration, NiFi integration, and portable bundles in one stack
- the Rust core makes the runtime easier to repackage across native libraries, CLIs, services, and thin bindings over time
- DataSonnet is the real language-level comparison
- JSON-focused tools like Jolt and JSONata solve narrower problems and should not be treated as equivalent alternatives
See Product Comparison.
Recommended Short Pitch
“DataMorph is a free-to-use transformation language for teams that need more than JSON-to-JSON mapping. It is strongest when the same mapping needs to run in Java, Camel, NiFi, and browser tooling while handling formats like XML, JSON, CSV, YAML, and text.”
Maintainer Links
These are useful if you are working on the project itself:
Project details
Release history Release notifications | RSS feed
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 datamorph_python-1.22.2.tar.gz.
File metadata
- Download URL: datamorph_python-1.22.2.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9955f65aa6b3a615f93e0fbf050c487ef9cad06b8eb1365681490e13d4598395
|
|
| MD5 |
0a00a592efb9eedb65c7f3b3e6839680
|
|
| BLAKE2b-256 |
f0ba3c4efb0327e760cc6b5a4d053ada7a6d9cbab8c9ab938887f8dcf2b300fd
|
File details
Details for the file datamorph_python-1.22.2-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: datamorph_python-1.22.2-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 3.4 MB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: maturin/1.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1d42ba36402b44e34b1710556e2e829e30ea9bd8d8ad96d7a9585537417f9da
|
|
| MD5 |
b45af3e3bce1d33939a9c595e2710f18
|
|
| BLAKE2b-256 |
a9b244d02579d7a9799e6c382590e2184f46599155f366986011df32b849af0a
|