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 ✔️ ✔️ ✔️ ✔️
linux-arm64-gnu ✔️ ✔️ ✔️ ✔️
darwin-x64 ✔️ ✔️ ✔️ ✔️
darwin-arm64 ✔️ ✔️ ✔️ ✔️
win32-x64-msvc ✔️ ✔️ ✔️ ✔️

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.29.3

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.29.3
File Size Uploaded
zen_engine-0.29.3.tar.gz 169.1 kB Details

Built distributions (wheels)

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

Total release size: 99.8 MB

Release files / zen_engine-0.29.3.tar.gz

Download URL zen_engine-0.29.3.tar.gz
Size 169.1 kB
Tags Source
SHA-256 checksum
How to use checksums
3d57be7be3aa9a8fc8b8aacff8e0e30db8a05bed1221e2c2308b440db2c0d625
BLAKE2b-256 checksum
How to use checksums
66d45aa378692e87ccb51ade0b0816403674486277cd707e440e0c40f64b4c95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
266491e0d1a679366c38713dc5d97d7209df14439c4fc1586ef5451812e0ead3
BLAKE2b-256 checksum
How to use checksums
f63a24cf220ba6a07ddc348f7e67066b0a71c9ec4243311ceb95da74bd6eed5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
97f42eb1d0f4f663f45518dcfb1deb6a17d222c53aa336a8fd81ecdbf17892f1
BLAKE2b-256 checksum
How to use checksums
46f6d078f46dc10d4fc1b19dce05311e2d5ef6d5dd4787f74d01eb1d6bc4cf0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
efc37ad7c5117fcb01016f02ae12790895ee2bbbc594760c7d6b7c6c3f1e4b35
BLAKE2b-256 checksum
How to use checksums
42292b0eb66872d9f1e6de6c7d56a7f36df7d96585fb18d7919de6b19394fd05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
8565b073baee905ee4e81e008920b18b24d7f4495bb1b3b5fe68284b919275b0
BLAKE2b-256 checksum
How to use checksums
7168f92e2c70d24625476f9723f6ac212c5323050548018f0b76bb9549787e75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.8 PyPy 3.8 7.3
SHA-256 checksum
How to use checksums
dfc171643146ca488e18485506fbb7d24681b97d82b88207ff49e57977d02539
BLAKE2b-256 checksum
How to use checksums
3ef41677b6124b0018c59c4ce6496a140ed1e4f63b5ef39f262b0a213b5c13b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
de4a50591992197b78f3e8b6d9e217beac2a1af66133f8017dfe38a4413d7492
BLAKE2b-256 checksum
How to use checksums
950c17e58bc74dc7ce597ea1d8b2fd504b2f515dde004d74bf354a5b795ec5df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
27c60682c191c96bc07cb64167bc7b19da222329dceaee964d3930180159bf2b
BLAKE2b-256 checksum
How to use checksums
64cd84b1e348f29aac1cbf1197fd244704250af6658a9a72d4252237bd6ed7cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp312-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6826a2267702428884a7812052a57ba99a6fb029e4b6d790f81e44e499829c8e
BLAKE2b-256 checksum
How to use checksums
d0037e7b33bfba2d0595bc0f7451e8f2c0ecf4de6d0b74b11c601a041ce39d60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp312-cp312-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
1998c697b24f11afa2ec539a0326f86f94ff5fe460d5cf2523775f7d4a645fe7
BLAKE2b-256 checksum
How to use checksums
257bcbd56dec3933db33873d55129782d8ebc40344e588d1fec59d378a57f69a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp312-cp312-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c25fe7fc6826237eea11ab3854005827a90ad9505694dc7c4f6a0d8a7f40b589
BLAKE2b-256 checksum
How to use checksums
c5b22a19b644328182901535450b071073146957818efb0250c9a0b74cc2a0ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp312-cp312-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3ddf80dd9ba74a5f7dbd546bf9280cdfa71c789cefc560389c1c9e752c99d0bc
BLAKE2b-256 checksum
How to use checksums
ca9d179788e9daf1aca10af094a9540d823c3d1aa2c1e142ed5b9387c07a4748
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp312-cp312-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
021adcf848f7f28fb0e0bbdcfbdd5fd599711245c28057c15fd5043f9bf5406b
BLAKE2b-256 checksum
How to use checksums
5658663d0ac7db263f2aefc97630acfee27a5822ed1c6b71073678f853388d5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp311-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8de23ffb1a0882a05a9dffc13cffa1d691b33d56d56e41b32aceff305b2efe45
BLAKE2b-256 checksum
How to use checksums
555dcee5019bbdbaa1ccb444a712807c41afb26e758d57b16a6c446710cb1ed4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp311-cp311-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
905388a61704448a74d7d435e426edcf72073c7840fcb7113c453c702beb3282
BLAKE2b-256 checksum
How to use checksums
478138a4724d26efadaf39cf93721b4640ac2a18f45aad440e8bd163b3ea800e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp311-cp311-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
65272f4b012bc8c9b976c6d9aa158f244c4dcca08e112b7207f8923d1276e031
BLAKE2b-256 checksum
How to use checksums
93a04aa3af5b71c429b4793221a1ec6264e7e0a61ce11ef75c8c480fff19bbd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp311-cp311-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
dc32d098df2500e39e494d66171ec0a335a147e1cbd6cf96d934768cb446a68f
BLAKE2b-256 checksum
How to use checksums
a6e94cbfa15eca7886b89b08b7db6b3bad442493f4ef69dc72f074080cb58db4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp311-cp311-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
05dab1f9e5b921b945007602453b3fbb19f90941c5ae134181175c6ff01197c8
BLAKE2b-256 checksum
How to use checksums
93cda3d35e08b50310c562a896d62fab9c0560806e631ed6fb14e82b12702bc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp310-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
61cdd1c5fcfe502892b6550238b9a62d7118f06f248171d2b9fff9adde5a28cd
BLAKE2b-256 checksum
How to use checksums
05461a02af585829cff7cece6f90cadec148f2bbf664308861754bcbe998e8df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp310-cp310-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
21996d379015d28f868ca11ab9285c907f0aee48994dda9fe287620d248e0183
BLAKE2b-256 checksum
How to use checksums
720ea2d1ed012b6cbe5c5b2b61630a220aad00f1d85ffc4bd8b3a336a0f6f933
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

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

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

Download URL zen_engine-0.29.3-cp310-cp310-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c0a4dbb5741b9d725c6caa119b42bfa3c99daa368c4cd506101d4527a92eea62
BLAKE2b-256 checksum
How to use checksums
87d6b5eca98631c8d910395ab911ff81ef195c3310ac030bb2397111e6beb63b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp310-cp310-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
225e20fd86cd676eab9a592f4b5b7a0acab5f5ad9b8eb8d9eaebe7e535bb0ef2
BLAKE2b-256 checksum
How to use checksums
3403c1e52d872ff82681193e1af3ba40bc823b00023ae39222adcf62c27f7cba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp39-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
9d18c9e5bf57156c2eb00565c2cf6fa32a7bd25b5e586b7c4ccdf259f5cc13bb
BLAKE2b-256 checksum
How to use checksums
6232c7a55f1f1d81943dfb2fb736b25a797b04f408780b801356efe93938bfa6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp39-cp39-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6dbd6a0b7c289545d746ba9541a4b1d2368c99f8f9fc633edcbe6adfc054ee54
BLAKE2b-256 checksum
How to use checksums
6df884a60086cf0c4b03be6ee67fd1faf40add51d49406df7385b8b9e836fbab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp39-cp39-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
54cd402c537399eb3974a28e76ea3fbfd0854d75f7e160fe61e2d429e2934c68
BLAKE2b-256 checksum
How to use checksums
aac029b147a4cc0187fc0d724b04788e3ec5c91474cf3f13100835fa2919987a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp39-cp39-macosx_11_0_arm64.whl
Size 2.8 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6b518aa67619b2c1f91506f497bee239bb6a4f8ae202dce85ced3fe2ba8738cf
BLAKE2b-256 checksum
How to use checksums
8345faebefdb236a5aa5e0ac360f8c88a0f3a622fd144ff337018c8e6e3df23b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp39-cp39-macosx_10_12_x86_64.whl
Size 3.0 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
649a59d0efafeafb27b946640b2f9d1dfb06006d0876d84e0c5ce9b56754636d
BLAKE2b-256 checksum
How to use checksums
541fed553bcd23dbe84490bdfe72d4eb89062841bb5f952be06733671a246fdc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp38-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
3b5dac68ea1b8ea3808b9b7982c7d6c55f7d1d7f7421c320158ce5ce567d9cb3
BLAKE2b-256 checksum
How to use checksums
a0a96558cd1df0b13ed03aceb47664cf47b0fdb8ba15e8c4ed3e99e70ef9e06f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp38-cp38-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bb4571dea5bb35499470b9e387359f0d967a5bcb653ac245e4d2cc509bf38195
BLAKE2b-256 checksum
How to use checksums
0d26b12ad7d919097e0dfdcc4efec7584719162f9756dd4f0b70709bc4245c41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

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

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

Download URL zen_engine-0.29.3-cp37-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.7 Windows x86-64
SHA-256 checksum
How to use checksums
dab8f73019b977b4b78dd5e5a4e56f51b8eab66bd8790c1e3e7d072f1de97ce5
BLAKE2b-256 checksum
How to use checksums
6cec96eeb1c03a0e7a669a488cd8de852dd7f573ad53688b5148e181db7e45ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp37-cp37m-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9f58bde3d263fa5efdae710a87c806fb354c5b16b17380af95b6da0b115efa7b
BLAKE2b-256 checksum
How to use checksums
07d91654e0325bd2f0133e69787f09b11051041b40680a113c6d17d73e6ad0d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

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

Download URL zen_engine-0.29.3-cp37-cp37m-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
abfd1cb6f5dfc9be786564077c4185db9da412b1c9d112f4ecf95bc5881d74a4
BLAKE2b-256 checksum
How to use checksums
d8b4c9714ab3898085a6d285b5ed71d9ed01736b4d72479805d1f7a47452ae58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.4

Release history Release notifications | RSS feed

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.29.3 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