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.21.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.21.0
File Size Uploaded
zen_engine-0.21.0.tar.gz 123.0 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zen-engine 0.21.0
File
zen_engine-0.21.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.21.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.21.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.21.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl PyPy 3.8 PyPy 3.8 7.3 Linux glibc 2.28+ x86-64 Details
zen_engine-0.21.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl PyPy 3.8 PyPy 3.8 7.3 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl PyPy 3.7 PyPy 3.7 7.3 Linux glibc 2.28+ x86-64 Details
zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl PyPy 3.7 PyPy 3.7 7.3 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp312-none-win_amd64.whl CPython 3.12 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
zen_engine-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
zen_engine-0.21.0-cp311-none-win_amd64.whl CPython 3.11 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
zen_engine-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
zen_engine-0.21.0-cp310-none-win_amd64.whl CPython 3.10 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
zen_engine-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details
zen_engine-0.21.0-cp39-none-win_amd64.whl CPython 3.9 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp39-cp39-manylinux_2_28_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
zen_engine-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.12+ x86-64 Details
zen_engine-0.21.0-cp38-none-win_amd64.whl CPython 3.8 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp38-cp38-manylinux_2_28_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ ARM64 Details
zen_engine-0.21.0-cp37-none-win_amd64.whl CPython 3.7 none Windows x86-64 Details
zen_engine-0.21.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.21.0-cp37-cp37m-manylinux_2_28_aarch64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ ARM64 Details

Total release size: 51.5 MB

Release files / zen_engine-0.21.0.tar.gz

Download URL zen_engine-0.21.0.tar.gz
Size 123.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c2de2306f345a0dc6eecab9a111ea8dd8ca9fd106b99c7b7acaf296632d415e8
BLAKE2b-256 checksum
How to use checksums
022f02f4e9c3340347ff26fef0148486ea9c6b9ecfea94a2f1b3271102c89dbd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
6a4236086c6bdd0c5534d1b00c56468ae9cafc0630be6cd3b7367b4169d37884
BLAKE2b-256 checksum
How to use checksums
29e151a5ced5f0af1f843eda76db004b63ccb1c312773c9b42988bbc5120f565
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
d8b22b162ed6141c44d01532ce5355801ff0e16fdf4751882d9ed839f165f471
BLAKE2b-256 checksum
How to use checksums
206a85eab6c9555088e5314acecf8c7ac58ca3b3e199607bde1bf06c93592818
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
7b6b3ca83e242fd2be880470bdb45895d3668b8ce5477055dd0703e065778958
BLAKE2b-256 checksum
How to use checksums
885ca91418dcf4ed9942350e0f803abd31b4329b5a89890ca2e5e03f8bd0c150
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.21.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
05f7aa634e2a31c4acfa443e9718a20d140f06800adee2cfba1009960150a1e7
BLAKE2b-256 checksum
How to use checksums
fb4d0812d696456fc3a2d491ea6819b760b06efb5f0b733d9efb99426403a4cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.21.0-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
b51095c0bae7a8c973faeea0d039bdbb7495b455d5a6c1a7697426cdf0918e60
BLAKE2b-256 checksum
How to use checksums
5d8aa79c5b65a26bf0fa5b1bced3fcdc59bac5df052bfe5ad78b3848e77b1bc7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl

Download URL zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
d51b87a0c85ca819c73aca0cd05172845985cd3d548d795245eca3461bee8658
BLAKE2b-256 checksum
How to use checksums
06dc73a51d459f163d7f456e2902a1b2967fa47b75990ba2b51be959c040bdce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl

Download URL zen_engine-0.21.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
c59268989141774cd78266dd118e49468eb4478d571ed2e673d1dae2f095f971
BLAKE2b-256 checksum
How to use checksums
47eae137a258fd0135a9c36876e512f28fc215bb3238e3142d2585f827740046
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp312-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp312-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b1b0b261d176dfa42d65a8182edb63fef4ddab7a55ab3a4dccfd2139affc6fa2
BLAKE2b-256 checksum
How to use checksums
a53441ccf05e19696b0edf64e212ca9a4db95c90eafbf82826cfd102032909bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2725f9ee9baaf7a59a7cbd5fe581ffcaedd74b0eeef75bf21aece5693055c208
BLAKE2b-256 checksum
How to use checksums
b9445265bf3d77850e510e96dbd610c406d8480d71801987154a9c179eefa463
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2349b33983606703c9c118da858a8c733808df9a1602d3dacaddd9728cc79331
BLAKE2b-256 checksum
How to use checksums
e7c86875c88ef65068c082bc2e442e097cd483bad72358c9896e790c468246e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6ac7fe64c7302bdd7662e322bd25d47d50d9179a62c91437c77126ccd9e2996b
BLAKE2b-256 checksum
How to use checksums
1825b993e6141b8494c6bc323ea67a130b0936293079596e63fd9cfc15bbd843
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5126184d2e16d91ec69f64e162e806d5da34fe1088c24dabe6b946c35603c503
BLAKE2b-256 checksum
How to use checksums
5985677a64cff2e07362ac5a2014d3a8213174f18ccd35f2533d2990652242e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp311-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp311-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9af3d2981165e926e5314e6d4abed000e0714c3bc7f26c388221d4420aa9a2ac
BLAKE2b-256 checksum
How to use checksums
3501ef36a28a1f6c7d50d009e04e619e7efa4d2b006293f383db5ca948888dc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
3989b747ae3c1d5476d14a76eac4b611a9ea79aef81e61952b6264715c730b1b
BLAKE2b-256 checksum
How to use checksums
66be3bb07ecf3b10815e9d3aec808ff34eaae5f0ad58c6c7c42ce8a64eb3b603
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
316347dc49cc9fc0bd121f4b2050e78a79a387f6d43a93ff7ca2966a3631a809
BLAKE2b-256 checksum
How to use checksums
e3f81f979f2f3339fa83b2df9cccbb1415417c2a26478d06f632a98a40763250
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
68bf1ab368540a98f7af5b8764eff813ab23f8f1528d3462b312c7389592c042
BLAKE2b-256 checksum
How to use checksums
85f142d796548c45908f3a5719d2a272aab4d2126afbfda1e2354e26a3daf3fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
1f68b241020cd18013a4617b208c9c7f0d6862b5c6fe98f0db7620f20ec36152
BLAKE2b-256 checksum
How to use checksums
0f83c3926f89845d9234f7f0a3c777f20fc4841177fa6571b634132f810a5dde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp310-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp310-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
849560abbe9a7615f3a14e2b5c9195c7ceb430974a3c18b28ddae94bbb89dd53
BLAKE2b-256 checksum
How to use checksums
e5f23733c104016c2ba0cd2a204d95a592037ea44246fc43857466b50be6c02c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6fd5e197031a18f1e0c51904091e83a03948615f888e21758d9cf5b3e9e67b27
BLAKE2b-256 checksum
How to use checksums
afdecd39c33475a2f6cdea21e69dbf05c66cae7ca03f144aff33e40e430cb646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp310-cp310-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
df80592c077589d1605a68834b91b77574123a5097fe5e4841b9c029aec4a9ad
BLAKE2b-256 checksum
How to use checksums
b241ae2026c1998bcba2e29d60975cccd08e9d7874062ff5a44dcabdb64156c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL zen_engine-0.21.0-cp310-cp310-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
277416a3fa85a788c6d79963afecd9b5db5e41bbaca8a6f57de2c78c44643694
BLAKE2b-256 checksum
How to use checksums
1ef467e388e6ed5ebb9d64146189326677acfa05dfddf4e5f35b042358a3a8ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl

Download URL zen_engine-0.21.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
aaea13ada156775641a05f6c52089f9cff46375edd87740599caf5cd6ee789a3
BLAKE2b-256 checksum
How to use checksums
47c9e77f52052b6b7bc12c19b10fbd46e8287e3b86cff8068f77a5aeb7e1f2ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp39-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp39-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
6d9ee6a7b388cefa4a72d6102747cbc73ebdf06ecd69ba6dead62cda717f036c
BLAKE2b-256 checksum
How to use checksums
2671acb07b518acab5f73c98a1f886a462ad52dee37422f1195f2d239f1aba84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp39-cp39-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
328b1e31d2b0b572435fdc7b0c6e2ad612a20a39850e3d3feb0a2b878010ff7e
BLAKE2b-256 checksum
How to use checksums
5ef19d212b15afd52f7e9ffb93579524814ec8040836862386243bbc7222147b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp39-cp39-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
38c3c25dbf2b8827208a8e4af88da565274bad14d4a502e987c77f6f9b1ccfd6
BLAKE2b-256 checksum
How to use checksums
a009324e0770f3b4173224709e38da190cefd244690b2fb9c35a9e5473084691
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL zen_engine-0.21.0-cp39-cp39-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ad95b5d3d0f4d655dd90bb6d02ee538ae8b6c39c360c512e034833b09d16ffbf
BLAKE2b-256 checksum
How to use checksums
0ceeeba5c4f58d892de81ce2c07bb1247d56f078878e4a0d9c21d75b190b30d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl

Download URL zen_engine-0.21.0-cp39-cp39-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
50fc9a3300032f64cab16ffdc3a3017f26257272293fbeab9f7dc9e5caf92a7a
BLAKE2b-256 checksum
How to use checksums
abe53d869ce841193d46b24a4c1d59222a810e50599136763d4990e79ef70ac8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp38-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp38-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
8232f9c36bc6e100e30cae5ac352b48795c0f0750050f98025b6a3ac833259e6
BLAKE2b-256 checksum
How to use checksums
edd76847ef24b5db856e93a7f06e2d72493755df211e6e03f381ee07dda1598d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp38-cp38-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
992211f9ab8b697a229134b0fcfc433541a036e82b45874e8cd29d1d9f3cef31
BLAKE2b-256 checksum
How to use checksums
585f44c6ca1337604253ecc4ea6c0480b1760414868cfbe0b2aa122ae596daa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp38-cp38-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
a912135f926402c64804b5a01f777252f1462ee78425fb63feff336218c37d14
BLAKE2b-256 checksum
How to use checksums
d65cea8867aa6519a829eef1a773c5ab166aa3308f3deae00e1f99c87600ddc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

Release files / zen_engine-0.21.0-cp37-none-win_amd64.whl

Download URL zen_engine-0.21.0-cp37-none-win_amd64.whl
Size 1.5 MB
Tags CPython 3.7 Windows x86-64
SHA-256 checksum
How to use checksums
223f367dd93af08e5022725e1c0c17f8de433f48b7b8aa4042885e469aadc5d8
BLAKE2b-256 checksum
How to use checksums
d4cc9de1448fcdd7e6ef14772066ce2002400d1427cf762544076b9f70b822d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Size 1.7 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
4e26b8d759a24afeb21b550b25d2b3348e7ef7e019e3c9129a52cfde189430e6
BLAKE2b-256 checksum
How to use checksums
0781c9abf4f6d801d87fc5e66e83e07f606435a7f83ded2ba839739bc0eedd72
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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

Download URL zen_engine-0.21.0-cp37-cp37m-manylinux_2_28_aarch64.whl
Size 1.5 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c7c05eab90c52614d541ba040f78397098c2c9d9aae37e0485f7d070d4142af8
BLAKE2b-256 checksum
How to use checksums
6c1a5ee20c61823c598b61b942e76cb7a7cdf212221c3518387ca3f2cc3caac7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.5.1

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.21.0 This release

34 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