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

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.40.1
File Size Uploaded
zen_engine-0.40.1.tar.gz 180.5 kB Details

Built distributions (wheels)

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

Total release size: 123.2 MB

Release files / zen_engine-0.40.1.tar.gz

Download URL zen_engine-0.40.1.tar.gz
Size 180.5 kB
Tags Source
SHA-256 checksum
How to use checksums
60c665aa9e16b92f5fcde35fc81fc2a129ebe23390462b2f75b77c0570318282
BLAKE2b-256 checksum
How to use checksums
6e9924399265e596a08c40d571df4f9f988e3d84d5af8524301b5b35e77eb648
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
540dfc004c65f657b1148b19d51776a7e166d88b032287adfbf8dacdc1467607
BLAKE2b-256 checksum
How to use checksums
384b688280a93cbf7edd0ca6960b9557a8110e98dd89d7d05bf00cd11a0c7c33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
e018a22cd7b68bf6523c13d9b9c856628424ff3f4cc15b7c9151c8ce419e0fb3
BLAKE2b-256 checksum
How to use checksums
86579f1dca81044498e97fc0431a61424759e16a564ccb9f245411a45d009a2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
fdf555feacc64e90d201f2487c60d7c905bfa83c89e410c8dd81627dffa45f45
BLAKE2b-256 checksum
How to use checksums
c9c284299d4f9a668b985e41361c54146756bd1db96571ce20c3ff25fbc276bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
8cea9df7aa4c5454568be197de35fecd8f5c44c7e8153ca656f651f821b2af3a
BLAKE2b-256 checksum
How to use checksums
23bc8bf980f01d2d7366bad3bff11124835117ae40447a1275bc688ba855c39a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
3a4714855ef77a91c2974b181e579590b416b80627400e9c2ac7cc50ee5b8a4d
BLAKE2b-256 checksum
How to use checksums
a6bd424f07a72d3ce4f29c75215d4093802fec036b160e89a5311e77584837f7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313t-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d61bb921d8071138715e478dc77d77b217697f471dbc5c3a9826a2246c745b8f
BLAKE2b-256 checksum
How to use checksums
03fcd16f2ad43e16418269245fd531812fde74e2eca36dd4913d438b056e8912
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313-win_amd64.whl
Size 4.0 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2279ed1170565d873c02331b41e40d6aa1b3b8bc33c92b87ff773775d3872206
BLAKE2b-256 checksum
How to use checksums
33358b630d5ad85dac0c6400bff84da204febf659f79816bc2fdcaa9036b5442
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e6533309dc6cce61f19e3b4faaa7023f767c24d4a6fd8a301ebae25524220560
BLAKE2b-256 checksum
How to use checksums
c30ad25ae481d0a4d2ed313abfdb9d35395503a9c81f93b414c421b7857b486f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5e136f682cc2842c9fe9d27d71806a08067d46064594ca31ee867d528523ae5b
BLAKE2b-256 checksum
How to use checksums
a889c3b68acd8f8a62fa3a08cf60134b4d2c82fb7d1037e74a9f5b339db50d0c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313-macosx_11_0_arm64.whl
Size 3.6 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8a815657fc7c050b318c841937c79c78424f1000bc933402ba8e4f0deb9d228b
BLAKE2b-256 checksum
How to use checksums
77002a9ad7731ba8f065d14eee00256d80e2785f1be48ceaccd73caa7abf719a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 3.9 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
689619264198acbdb4f6631b1ada47a85895eb3658f5708b119b9898e3d124ce
BLAKE2b-256 checksum
How to use checksums
82e2d3a4f5919134802358655b4294f54b3c7cef20887a7ec667243f8d271532
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp312-cp312-win_amd64.whl
Size 4.0 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
e195a368f6b2848336243bb2ba311fa35aebb30905cbd99feef0e9453593c96c
BLAKE2b-256 checksum
How to use checksums
b9281b2115c491a73e71824342dd30a94ed3228fb4b9b58f81f38ce08aa61b3d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2dc9a1a0f7756494d38107b2011a2910b61028f1e2b29ecfb8eceb0f2587f251
BLAKE2b-256 checksum
How to use checksums
9b2911d9a7a7bebeb6710614ef71c2aa595224aeaf3afd8c650632c707caa9b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp312-cp312-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9f27af672c417ac9f09a468560af9b680b8629b2a89709aa59314179b3a1d201
BLAKE2b-256 checksum
How to use checksums
37d096722d8f7ee5b438f2955eb9d18e02a739e39e22f294cbadb771f22c774d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp312-cp312-macosx_11_0_arm64.whl
Size 3.6 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b8df8713803e1c22f615d4ab1395c3aa1f12f6e3d02897bca0d48e025a588de4
BLAKE2b-256 checksum
How to use checksums
c534e020e3e12253da655c5e679b2dbb47039c4d15e59f6b2007b1e82cda0753
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 3.9 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
fafa1df5614f3ab0a014500ac71004a1e300f336d63aeff37525cfa30a5538a5
BLAKE2b-256 checksum
How to use checksums
de81aaadbc2b4a47f2d88bb1f81803181f93b81ff5d359800e06069e2f6b7363
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp311-cp311-win_amd64.whl
Size 4.0 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e6732b536b2779509940c498ab7c64a23e23a890ba4196075a6460c12c0b7b97
BLAKE2b-256 checksum
How to use checksums
be6aa306649715764de42d80f8cab5b1d50d1cf602e65f88a6933634ab50046b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2c71ec30bb894b8b5c1edd484b6016451e826d74ada88b3356a7ab9026ab30cf
BLAKE2b-256 checksum
How to use checksums
abe238733096d7b943d80440ed3ea1b1c249cdc1d7c673ab8c76ccdab283e704
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp311-cp311-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2c872a1724c25fc69160cf0d9a6440a6be026a69a407b0ab1693dc1c5e726987
BLAKE2b-256 checksum
How to use checksums
213278402642134338400d43dab84596fa629db9545cf9e9ea719a4fe3ed6330
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp311-cp311-macosx_11_0_arm64.whl
Size 3.6 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
85b0557f0dff03be0b8ac108cf8b3f9847eb6380955828584506998da9835c37
BLAKE2b-256 checksum
How to use checksums
b901e5662037951a6eb7b4cd5237c5da3a94bb3b4bb471917532a8dd302749b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 3.9 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
cff5ed5c863af7f63caa9a0e9e9b8197f4dfe59b2c4ac3a6f4b63f37ea9f2b94
BLAKE2b-256 checksum
How to use checksums
3a33ca4be1d5aa542d1e559736a484c6629c5093a6ab1e4cbba847968e33dd06
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp310-cp310-win_amd64.whl
Size 4.0 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
c5136c55abf4e23a76b35cbc9fefa3ccf5cc527ee665425e31575c5a58884d9a
BLAKE2b-256 checksum
How to use checksums
2c89b53fe16045806fe8b0d9f82934d51697d09ddfbb4777c83e80b0bf40bc37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
2943a5fc6f3c866a02d9d4d56af808559619e33ddff6c2e786cde82ee1b487d7
BLAKE2b-256 checksum
How to use checksums
cb867e7c9b21fdea2cf9b4ceaaba31d0964b01bb41b411ccf217b6a4bba24ba5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp310-cp310-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d0f2a4d5de3be567522e0ee920baa56b48eb9a4ed1ed44c111d76a031156c61a
BLAKE2b-256 checksum
How to use checksums
21e015afa3b8c12c459ca68628f1f1177ee38333a2ea11b3acf6ddada1b29fa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp39-cp39-win_amd64.whl
Size 4.0 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
7e31acb80f37cedbb5880dfcf431ec5dbe79e933677144ada942a14e72321212
BLAKE2b-256 checksum
How to use checksums
922fc1382b650706af93188d1b3671592b4df92bf42b08812ae5bb76b3a47c58
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp39-cp39-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5c54a161eb42a6413534ecdceba3e4565e3f539e630316e7f17381b347797f69
BLAKE2b-256 checksum
How to use checksums
a79dbbc60d378fb190ba67c6d0d11aa710bf58d044f42a39da231a157576843e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp39-cp39-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f8650cc0888434848b6fdba8def2b2f2c960c837b54d6955c6b87fbfc8af1865
BLAKE2b-256 checksum
How to use checksums
fd5183b45868ee0dce1d37e7a4f4dbea8bb88e296330d9496aeb68ce7ba4ec3e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp38-cp38-win_amd64.whl
Size 4.0 MB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
ee2c1e13871e58dca54f05c161ff227f59b911dceafff431b68f25437a821c9c
BLAKE2b-256 checksum
How to use checksums
c6932a16bed7638795840503b98c37efb3a8d5ebce33c3e8ba9663260d26d276
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp38-cp38-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a15a8664244127970fc6de66e3881e10fea0caa0dddea858b535b1b2d7340783
BLAKE2b-256 checksum
How to use checksums
26586fe42369cd123bf37c60d40d5d206d37c5e3f8fb8d31d21ed91e6b366c12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp38-cp38-manylinux_2_28_aarch64.whl
Size 3.7 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
44226bac91aef729eb590e31ac08f92c8914aec639641b85a904485f27afebe4
BLAKE2b-256 checksum
How to use checksums
1b77f9cad8b3d840036274d884cbea03070622ee7009db68d6d245a2f7aebf37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.40.1-cp37-cp37m-manylinux_2_28_x86_64.whl
Size 4.0 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
27d1b182dc5b5aaf656d580bb596aebdc75834b57453f6cb3b99c8ca55d6a7f9
BLAKE2b-256 checksum
How to use checksums
f9d6110262a61b461e66e78cd33e9a5e6f006a5378cbe5b2ae50a2ddf4274065
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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