Skip to main content

License: MIT

Python Rules Engine

ZEN Engine is a cross-platform, Open-Source Business Rules Engine (BRE). It is written in Rust and provides native bindings for NodeJS, Python and Go. ZEN Engine allows to load and execute JSON Decision Model (JDM) from JSON files.

Open-Source Rules Engine

An open-source React editor is available on our JDM Editor repo.

Usage

ZEN Engine is built as embeddable BRE for your Rust, NodeJS, Python or Go applications. It parses JDM from JSON content. It is up to you to obtain the JSON content, e.g. from file system, database or service call.

Installation

pip install zen-engine

Usage

To execute a simple decision you can use the code below.

import zen

# Example filesystem content, it is up to you how you obtain content
with open("./jdm_graph.json", "r") as f:
  content = f.read()

engine = zen.ZenEngine()

decision = engine.create_decision(content)
result = decision.evaluate({"input": 15})

Loaders

For more advanced use cases where you want to load multiple decisions and utilise graphs you can build loaders.

import zen

def loader(key):
    with open("./jdm_directory/" + key, "r") as f:
        return f.read()

engine = zen.ZenEngine({"loader": loader})
result = engine.evaluate("jdm_graph1.json", {"input": 5})

When engine.evaluate is invoked it will call loader and pass a key expecting a content of the JDM decision graph. In the case above we will assume file jdm_directory/jdm_graph1.json exists.

Similar to this example you can also utilise loader to load from different places, for example from REST API, from S3, Database, etc.

Supported Platforms

List of platforms where Zen Engine is natively available:

For a complete Business Rules Management Systems (BRMS) solution:

JSON Decision Model (JDM)

GoRules JDM (JSON Decision Model) is a modeling framework designed to streamline the representation and implementation of decision models.

Understanding GoRules JDM

At its core, GoRules JDM revolves around the concept of decision models as interconnected graphs stored in JSON format. These graphs capture the intricate relationships between various decision points, conditions, and outcomes in a GoRules Zen-Engine.

Graphs are made by linking nodes with edges, which act like pathways for moving information from one node to another, usually from the left to the right.

The Input node serves as an entry for all data relevant to the context, while the Output nodes produce the result of decision-making process. The progression of data follows a path from the Input Node to the Output Node, traversing all interconnected nodes in between. As the data flows through this network, it undergoes evaluation at each node, and connections determine where the data is passed along the graph.

To see JDM Graph in action you can use Free Online Editor with built in Simulator.

There are 5 main node types in addition to a graph Input Node (Request) and Output Node (Response):

  • Decision Table Node
  • Switch Node
  • Function Node
  • Expression Node
  • Decision Node

Decision Table Node

Overview

Tables provide a structured representation of decision-making processes, allowing developers and business users to express complex rules in a clear and concise manner.

Decision Table

Structure

At the core of the Decision Table is its schema, defining the structure with inputs and outputs. Inputs encompass business-friendly expressions using the ZEN Expression Language, accommodating a range of conditions such as equality, numeric comparisons, boolean values, date time functions, array functions and more. The schema's outputs dictate the form of results generated by the Decision Table. Inputs and outputs are expressed through a user-friendly interface, often resembling a spreadsheet. This facilitates easy modification and addition of rules, enabling business users to contribute to decision logic without delving into intricate code.

Evaluation Process

Decision Tables are evaluated row by row, from top to bottom, adhering to a specified hit policy. Single row is evaluated via Inputs columns, from left to right. Each input column represents AND operator. If cell is empty that column is evaluated truthfully, independently of the value.

If a single cell within a row fails (due to error, or otherwise), the row is skipped.

HitPolicy

The hit policy determines the outcome calculation based on matching rules.

The result of the evaluation is:

  • an object if the hit policy of the decision table is first and a rule matched. The structure is defined by the output fields. Qualified field names with a dot (.) inside lead to nested objects.
  • null/undefined if no rule matched in first hit policy
  • an array of objects if the hit policy of the decision table is collect (one array item for each matching rule) or empty array if no rules match

Inputs

In the assessment of rules or rows, input columns embody the AND operator. The values typically consist of (qualified) names, such as customer.country or customer.age.

There are two types of evaluation of inputs, Unary and Expression.

Unary Evaluation

Unary evaluation is usually used when we would like to compare single fields from incoming context separately, for example customer.country and cart.total . It is activated when a column has field defined in its schema.

Example

For the input:

{
  "customer": {
    "country": "US"
  },
  "cart": {
    "total": 1500
  }
}
Decision Table Unary Test

This evaluation translates to

IF customer.country == 'US' AND cart.total > 1000 THEN {"fees": {"percent": 2}}
ELSE IF customer.country == 'US' THEN {"fees": {"flat": 30}}
ELSE IF customer.country == 'CA' OR customer.country == 'MX' THEN {"fees": {"flat": 50}}
ELSE {"fees": {"flat": 150}}

List shows basic example of the unary tests in the Input Fields:

Input entry Input Expression
"A" the field equals "A"
"A", "B" the field is either "A" or "B"
36 the numeric value equals 36
< 36 a value less than 36
> 36 a value greater than 36
[20..39] a value between 20 and 39 (inclusive)
20,39 a value either 20 or 39
<20, >39 a value either less than 20 or greater than 39
true the boolean value true
false the boolean value false
any value, even null/undefined
null the value null or undefined

Note: For the full list please visit ZEN Expression Language.

Expression Evaluation

Expression evaluation is used when we would like to create more complex evaluation logic inside single cell. It allows us to compare multiple fields from the incoming context inside same cell.

It can be used by providing an empty Selector (field) inside column configuration.

Example

For the input:

{
  "transaction": {
    "country": "US",
    "createdAt": "2023-11-20T19:00:25Z",
    "amount": 10000
  }
}
Decision Table Expression
IF time(transaction.createdAt) > time("17:00:00") AND transaction.amount > 1000 THEN {"status": "reject"}
ELSE {"status": "approve"}

Note: For the full list please visit ZEN Expression Language.

Outputs

Output columns serve as the blueprint for the data that the decision table will generate when the conditions are met during evaluation.

When a row in the decision table satisfies its specified conditions, the output columns determine the nature and structure of the information that will be returned. Each output column represents a distinct field, and the collective set of these fields forms the output or result associated with the validated row. This mechanism allows decision tables to precisely define and control the data output.

Example

Decision Table Output

And the result would be:

{
  "flatProperty": "A",
  "output": {
    "nested": {
      "property": "B"
    },
    "property": 36
  }
}

Switch Node (NEW)

The Switch node in GoRules JDM introduces a dynamic branching mechanism to decision models, enabling the graph to diverge based on conditions.

Conditions are written in a Zen Expression Language.

By incorporating the Switch node, decision models become more flexible and context-aware. This capability is particularly valuable in scenarios where diverse decision logic is required based on varying inputs. The Switch node efficiently manages branching within the graph, enhancing the overall complexity and realism of decision models in GoRules JDM, making it a pivotal component for crafting intelligent and adaptive systems.

The Switch node preserves the incoming data without modification; it forwards the entire context to the output branch(es).

Switch / Branching

HitPolicy

There are two HitPolicy options for the switch node, first and collect.

In the context of a first hit policy, the graph branches to the initial matching condition, analogous to the behavior observed in a table. Conversely, under a collect hit policy, the graph extends to all branches where conditions hold true, allowing branching to multiple paths.

Note: If there are multiple edges from the same condition, there is no guaranteed order of execution.

Available from:

  • Python 0.16.0
  • NodeJS 0.13.0
  • Rust 0.16.0
  • Go 0.1.0

Functions Node

Function nodes are JavaScript snippets that allow for quick and easy parsing, re-mapping or otherwise modifying the data using JavaScript. Inputs of the node are provided as function's arguments. Functions are executed on top of QuickJS Engine that is bundled into the ZEN Engine.

Function timeout is set to a 50ms.

const handler = (input, {dayjs, Big}) => {
    return {
        ...input,
        someField: 'hello'
    };
};

There are two built in libraries:

  • dayjs - for Date Manipulation
  • big.js - for arbitrary-precision decimal arithmetic.

Expression Node

The Expression node serves as a tool for transforming input objects into alternative objects using the Zen Expression Language. When specifying the output properties, each property requires a separate row. These rows are defined by two fields:

  • Key - qualified name of the output property
  • Value - value expressed through the Zen Expression Language

Note: Any errors within the Expression node will bring the graph to a halt.

Decision Table

Decision Node

The "Decision" node is designed to extend the capabilities of decision models. Its function is to invoke and reuse other decision models during execution.

By incorporating the "Decision" node, developers can modularize decision logic, promoting reusability and maintainability in complex systems.

Support matrix

Arch Rust NodeJS Python Go
linux-x64-gnu :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
linux-arm64-gnu :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
darwin-x64 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
darwin-arm64 :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
win32-x64-msvc :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:

We do not support linux-musl currently.

Contribution

JDM standard is growing and we need to keep tight control over its development and roadmap as there are number of companies that are using GoRules Zen-Engine and GoRules BRMS. For this reason we can't accept any code contributions at this moment, apart from help with documentation and additional tests.

Metadata

Release files for zen-engine 0.47.0

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

Source distribution (sdist)

Source distribution for zen-engine 0.47.0
File Size Uploaded
zen_engine-0.47.0.tar.gz 197.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zen-engine 0.47.0
File
zen_engine-0.47.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl PyPy 3.9 PyPy 3.9 7.3 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl PyPy 3.9 PyPy 3.9 7.3 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp313-cp313t-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
zen_engine-0.47.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
zen_engine-0.47.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
zen_engine-0.47.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
zen_engine-0.47.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
zen_engine-0.47.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
zen_engine-0.47.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
zen_engine-0.47.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
zen_engine-0.47.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
zen_engine-0.47.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
zen_engine-0.47.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
zen_engine-0.47.0-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp39-cp39-manylinux_2_28_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
zen_engine-0.47.0-cp38-cp38-manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp38-cp38-manylinux_2_28_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ ARM64 Details
zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64 Details
zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_aarch64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ ARM64 Details

Total release size: 133.4 MB

Release files / zen_engine-0.47.0.tar.gz

Download URL zen_engine-0.47.0.tar.gz
Size 197.4 kB
Tags Source
SHA-256 checksum
How to use checksums
cf38d5dc6a1b97cd62c9a65820f38df88a8eb79deb49601745b8ded622265581
BLAKE2b-256 checksum
How to use checksums
29293f277ff680f06072b5888e9f5071c783d6fc75960b3d9d715c7ef0afec20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
f5c33576ea05135a8434a3209d818f2f6647c5e6172600d173c0a11893d28e62
BLAKE2b-256 checksum
How to use checksums
365a43cbac9fe775941ee6d443d608896bdeff7ef6d1d4db0728d9b23dfb5986
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
1799cb2e3771b26101f33f36a0a5a055db3e9fca9695e276343681bcfb05d159
BLAKE2b-256 checksum
How to use checksums
886abaeb1a17711f326d30a137d6fb1927e56f5d0d3454cca830e52597728691
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
3d3c4c8efdb3b1b0898078644436ffb13c1ed75d86539604083831c1e3d43e2f
BLAKE2b-256 checksum
How to use checksums
47227e2c444fe7b86a3a35fa03eb61358268345e013e3344fc5384da44e84781
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
6b7d12ab3a63aca0ff934e5c392f6c830063bb9e4c58ccef3f3ae5c36f20a6ae
BLAKE2b-256 checksum
How to use checksums
4edc74462634773effd7e44ebd8f5a3046dce2faafcb7486377452d6d34d84a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
82110c3f6d15467bcb5cddc6921359e8fdb73f25a504000604ce9d336bebd0d3
BLAKE2b-256 checksum
How to use checksums
1f59f11338c1e5053432d3f26d44173a0a3a2ac1b028bde7460ced3850589825
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313t-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6d07b4f02cf6fc17e8ff5f38f365655f46faa2e22f44d0e9524f10111f5964fb
BLAKE2b-256 checksum
How to use checksums
1d21dadc91529827dfef87607ad02cb66b6754214715199fbc0c91085cf24262
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313-win_amd64.whl

Download URL zen_engine-0.47.0-cp313-cp313-win_amd64.whl
Size 4.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
9bcdc56fde18b24bb5cda1d349f25d6ca894ab0058bcb674f1ca0d62deae043a
BLAKE2b-256 checksum
How to use checksums
1cb408a7ae24c3615f85cbd55f3b588c642a2f3dc6c5ecb856f831aa2a7465fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
33916037758c6e95588ebb89c89e272fd12e9324e57ca5d7c3886d247ac9b30d
BLAKE2b-256 checksum
How to use checksums
8d969ec07437789cf9739e48f94ebabbbcccceb28738253ee02df6a0d0ea3b24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
4e720334f0a9d31ebd66e4862830d83471cc1ae0dbe6d4d3551cf0f7d5d50961
BLAKE2b-256 checksum
How to use checksums
f5917dc6d832d8501e2606d75b795a99cd007d1b3f77ee68c0d5e89a340de774
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL zen_engine-0.47.0-cp313-cp313-macosx_11_0_arm64.whl
Size 3.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1fc3c114eef08040c4d7a7da1b049bac3aa9a83ce8aca7dd1a9cfa15dbf7d2f8
BLAKE2b-256 checksum
How to use checksums
bdfffa6e7383fd4127e4431647f2f56a56419e5ddecc0e05c03ea3cc7994a8f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL zen_engine-0.47.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 4.1 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
302bbce65c194276a92c67e34723f05e775a5f7b56894b205478b1ffa8155faf
BLAKE2b-256 checksum
How to use checksums
beabfe44adf11feb0b6d43565512bcb36c4ed6ab427679196bc8a08764ad13ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp312-cp312-win_amd64.whl

Download URL zen_engine-0.47.0-cp312-cp312-win_amd64.whl
Size 4.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
2c3b664c07f77701ca1e3fd58963e964e77b1c0dcdefa1859677c161c297e41b
BLAKE2b-256 checksum
How to use checksums
af2f9cf4dfcbb249fdb6cd21aa56b883e16547729acf6c882955e4c27f0fceb1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a6b57e88018004260fc5320875a0730513cd8109d11b695afbfd2399588431e3
BLAKE2b-256 checksum
How to use checksums
d8b067dac8e6c6242433d5cc41d1d55cc6e7bdf06142a7e72107bb4fd294e75c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
01d34df96ab25edb4e5d906cc797b4a3add3583b2b02135acf32f930f4660774
BLAKE2b-256 checksum
How to use checksums
431de91a3e2dee7253345814d726744dc99b2718d34bd65cba590ed72deb07aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL zen_engine-0.47.0-cp312-cp312-macosx_11_0_arm64.whl
Size 3.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8fe26c24c8f80d474c436d8b1ccb10c149a1478581eae14e39aae4060b42209f
BLAKE2b-256 checksum
How to use checksums
2f36d3ea994337cd4deb50421542148ac654c30b9eef4130b87fd6b73bb8c4f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL zen_engine-0.47.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 4.1 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
64c4c7860477b809b3632eccb48d6e2a7142388b650dc0c1af0459fc54c4de41
BLAKE2b-256 checksum
How to use checksums
583b97f4735f748419adbe76c7df037177c206d08740882b85da3f9e4f9d1f0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp311-cp311-win_amd64.whl

Download URL zen_engine-0.47.0-cp311-cp311-win_amd64.whl
Size 4.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
df8ea9195cdae89832dc5248752aaf44543310302b365bab5dbeb25752ff8e13
BLAKE2b-256 checksum
How to use checksums
bc1cfc3daec57483795b55a6d26906387596c80e2fc2af66350184ca784e12c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1e109bab1c39e48be4f40fc07d09e0ab924a8f77daeaaab0cc690d28f0838b88
BLAKE2b-256 checksum
How to use checksums
e78f398758b268d05d03a91e990427dce0eb3167f781da4da14fcc98570c00f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e7e7740a82212ea3349e8b5f3bb91551be569d9545ace849ce93592bf63be7e5
BLAKE2b-256 checksum
How to use checksums
308e59c9f89294afe52086f3c3e3cc918e82b67a61df8ea79468d783d461d199
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL zen_engine-0.47.0-cp311-cp311-macosx_11_0_arm64.whl
Size 3.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8aacbc241c8b55cd33b235f01ddfc82afd54dffbb62153edf09d8a3cd68ff876
BLAKE2b-256 checksum
How to use checksums
3600a5505164263e5e08d6ccb47ecbcb088db4386f311db4518d7fcbe75863cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL zen_engine-0.47.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 4.1 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e7df50012f2fd2824dbd0628593b72ce86ecb52d9d37f4f98ee81c0b8061cf88
BLAKE2b-256 checksum
How to use checksums
bac89016f00a6a44ccda4d744476d56dcacc43d030c70ef1d9a059464c658263
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp310-cp310-win_amd64.whl

Download URL zen_engine-0.47.0-cp310-cp310-win_amd64.whl
Size 4.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
83da5bea3315d0d637610d4368fb75f3896ebf6f77c7ec63b104a315f7de3cbe
BLAKE2b-256 checksum
How to use checksums
47bd882fb6bf135411fa9fcb90c5415d26b23ef8a09b2f1f752b4e3d317f1f8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e3862d086dcc6d281fa0d7adfc4741adb317e630ef2f163592a422b1500dabb0
BLAKE2b-256 checksum
How to use checksums
99e4641d53dcfc2b793b985578ce5e1f5b64c98b7f6d6527a79c0f225e2b7f48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp310-cp310-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp310-cp310-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5a15f019c68db9a874534d19c7cae6737c29bfe925c77ef8bf83101d3f1c5a00
BLAKE2b-256 checksum
How to use checksums
5f5a5aa6d1382faf4787841da6549a4b375fba585a7913f57e9ba57b7355d9ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp39-cp39-win_amd64.whl

Download URL zen_engine-0.47.0-cp39-cp39-win_amd64.whl
Size 4.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
b1d1c8720e72de0aafa2ea17bc3ac96f9d47d3adf41f9d7b0c0e1a001fb22887
BLAKE2b-256 checksum
How to use checksums
6eab01762ceba890cad6e5fb3764263d081a5e65d017c222bed689aa50ed71c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp39-cp39-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cebfccffdd3133de82ce08f449e6826c703e16ab28be53ebbd19e725501eede8
BLAKE2b-256 checksum
How to use checksums
4116514561f6da00558cc07372ba8db946b8e0955e52f2c7180dc9bb09b10eb4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp39-cp39-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp39-cp39-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c76b60a0228af62b3e4ae7dde6af95ef313b26ccb39dfe31eba145fbabf55eb1
BLAKE2b-256 checksum
How to use checksums
748ef5127b0f58ce06c6e58a511e2c4f07241eca17d3869a45fced0515029cad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp38-cp38-win_amd64.whl

Download URL zen_engine-0.47.0-cp38-cp38-win_amd64.whl
Size 4.3 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
bc8e30eb307a7236ba1b7b06ceb2b745b8f338e39e6885ed823b9afb5a424182
BLAKE2b-256 checksum
How to use checksums
f9444832685728db4ba3bd929e7d383734d6e068427c0692204f0177c9f60405
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp38-cp38-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp38-cp38-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6e03225b47bdbc59aacd99c729479af2898f0a097b4d77bc7a7e9076e0f42ae6
BLAKE2b-256 checksum
How to use checksums
fe737756cd90f7339bb0e36a7f05e2a91693ed6ebbe7f84820f45017bb05c3e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp38-cp38-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp38-cp38-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
cc5e128769c7a91b933f2b49bc8267f260be776f2ead9d256ad145d7e2713e89
BLAKE2b-256 checksum
How to use checksums
96ed9a071b4b04cc93fb349fdf8ab7002489439fceb03197145e1676db642451
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Size 4.3 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2e68d178a0c4cc307264951ba3592f843be5871653e396ef8f883fce1c28bf05
BLAKE2b-256 checksum
How to use checksums
ce917a453d828eef52916b29dcb3cdd8c06907650650d9f4672f6ef5e94d59b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release files / zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.47.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c41e37e53985c40265fcb3dac4974d4a7126aca122a1df1991b9778114fffee7
BLAKE2b-256 checksum
How to use checksums
8f768bf6758f95631369860c6d2d3627210280ba839eb5f27d54161b31bebb9a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

Release history Release notifications | RSS feed

2.1.3

6 release files

2.1.2

6 release files

2.1.1

6 release files

2.1.0

6 release files

2.0.2

6 release files

2.0.1

6 release files

2.0.0

6 release files

This release

0.47.0 This release

33 release files

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