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.46.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.46.0
File Size Uploaded
zen_engine-0.46.0.tar.gz 196.5 kB Details

Built distributions (wheels)

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

Total release size: 133.1 MB

Release files / zen_engine-0.46.0.tar.gz

Download URL zen_engine-0.46.0.tar.gz
Size 196.5 kB
Tags Source
SHA-256 checksum
How to use checksums
2a89eb8d927a2376d333a093acabbfeb6dca8a7efc96d0197d8e162ba0ffe21e
BLAKE2b-256 checksum
How to use checksums
0aa26d46991286e9b5075104a7030461b4a398438a17de2f97c8f749657e90cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Download URL zen_engine-0.46.0-cp39-cp39-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1ee1a9c5fc39c6064875002bcd472d525d47e5c85ca0366cbefbe21a1f81a959
BLAKE2b-256 checksum
How to use checksums
9feb085a9aaf9ce003c021e80dfb20d6a0af9514f49ef5814ea34e5f30b5b45f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

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

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

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

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

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

Download URL zen_engine-0.46.0-cp38-cp38-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.8 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
876be96524c309869b88ad26bb954a1842d60ccd57aba096e22aca724be98408
BLAKE2b-256 checksum
How to use checksums
2165caf5366b6d2ca289edd3ec7554fae3b448bf3b55214818cec32d64dab6b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.6

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

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

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

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

Release history Release notifications | RSS feed

2.1.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.46.0 This release

33 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page