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.41.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.41.0
File Size Uploaded
zen_engine-0.41.0.tar.gz 180.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for zen-engine 0.41.0
File
zen_engine-0.41.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.41.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.41.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.41.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.41.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.41.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.41.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
zen_engine-0.41.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
zen_engine-0.41.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
zen_engine-0.41.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
zen_engine-0.41.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
zen_engine-0.41.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
zen_engine-0.41.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp310-cp310-manylinux_2_28_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp39-cp39-manylinux_2_28_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.0-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
zen_engine-0.41.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.41.0-cp38-cp38-manylinux_2_28_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ ARM64 Details
zen_engine-0.41.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.41.0-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.41.0.tar.gz

Download URL zen_engine-0.41.0.tar.gz
Size 180.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3eb1f1a1270f5e6454fe1d0f38799e5a48e1ac917951ac8609bf468e71fc308e
BLAKE2b-256 checksum
How to use checksums
2f56dbe12120e022bdac9e5af4cf24fea61d3aaaacd712e9c22ad687e4806ff7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
0a0797434f3be82911640d935d0fd610217ba2e21d801d8731562d70fe6450db
BLAKE2b-256 checksum
How to use checksums
ae01cca05ef684749df896e49c6c442a826c2dc61f66e4323db9ebe45ac0e3eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
d85b93f0a359c583d0f6251ac1d4ebe0b60c1dc12d114caf6382a36349ef4be7
BLAKE2b-256 checksum
How to use checksums
4c7a762c0fc6f85bc023e3709997ff41badb8f92cbe5e80ce0ee849d99b91f25
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
220e644b449427a01060a3d784a46c6a8dbeb6d5b74743d33a55033a101892a0
BLAKE2b-256 checksum
How to use checksums
995a2e23a9735a8141874c02cf962743c9d50450ef885ca99bdee011ecbf355a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
a5ab94603eb6437ae446056390b677200c48d5c95aacb4e33882609038e6b33b
BLAKE2b-256 checksum
How to use checksums
fa785a9b63782ede24c2489a241f740a50c9ec0e125bddbffaaf3b977c693e62
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
c382ea517b53bbd098e4c332398a0594172e2003dd92af4361bcc314b8e26f50
BLAKE2b-256 checksum
How to use checksums
b8f67b00ae98151ae3ca86fc62bf3f79f97b728c431347aefc7634a2fcba260e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
b6224336364b2f54dfec7f1e3285b7ad5dbb83709373d4100a4ee6168ca1e351
BLAKE2b-256 checksum
How to use checksums
3dc4b37627b26c416741c9f40b158638d74fa4aa69a0dece24673b4975604d09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

Download URL zen_engine-0.41.0-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
c2092825bf21ba9a741b558cd59b460787fcaa15ceb39036efd82f83b0312019
BLAKE2b-256 checksum
How to use checksums
bd693bb506016a7492892a756b887b10c879e805ab3b1a6e85885a4c26750be2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
4b0e186933d8db70ee4ca96d6c6cc202cafaa5cb30abfbc2cf3ac304abfa7cac
BLAKE2b-256 checksum
How to use checksums
f64dc68e844b695475bff669127ea324ee541c4d991a75e42fd08c2152be7971
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
e9c3a115c8062071d65f8589ffbd402a05f96dc137524dae8591084e0d91387e
BLAKE2b-256 checksum
How to use checksums
79b7691a6cacf141347fc2741be9becbb588211ce5c1ed577a9629f50aac63b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 3.8 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
f56e25998af6628fec773b2f84b9b119a1dc9bc4b35db9fd7efa557cf045c582
BLAKE2b-256 checksum
How to use checksums
2c13f0cca8667ae1f084b39f1098146f95e1f40ef5197960bfaa2d8c801cbffe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

Download URL zen_engine-0.41.0-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
9ff56d6ffdb176bc2df23daf9bc8f6ed8301b8cf85eb400433af5f412f8c8102
BLAKE2b-256 checksum
How to use checksums
cd4343dc200f00f2969fb8f7ab378eea8449a355f3e5ecff987c375156b63e0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
4d463237e877622742834120c8a495ae7217dbbf688184fca39acae3e03d6a3b
BLAKE2b-256 checksum
How to use checksums
fb0e79a2705dccb2930b7295b09a3e481803122c0ed6a06965d9e94e27041d0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
4c65ba80b4d2cd45a1e4991e933e514dce4a80654f781dafc7ef8f23879e8dcf
BLAKE2b-256 checksum
How to use checksums
d5173f743804207d998eab177dbf2d01561a245d1860a32a53c8f425bf7d95ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

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

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

Download URL zen_engine-0.41.0-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
9dca394598c55d8ad54bda85acb12ef88590560549e308157b8bdcc0fcb7d3fb
BLAKE2b-256 checksum
How to use checksums
926d9b2d7a4ecd5f2fb3456a9aee343d5a416528fff3d9c296d0ee5bd6aadab5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
c8775ac8da1937bffcec01804564cf030a7a6c73376aabb1be1a4c8771bec375
BLAKE2b-256 checksum
How to use checksums
784b0fabec16d1e177cff8d8fcc0b8990149bd4b40a6f1850a81c30bad94d08d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
33e2295ecb147a4c9396d6bfb40f1c66477a877d41d8bdab4e8e15a88b8ed473
BLAKE2b-256 checksum
How to use checksums
7153b3c79c78081c97c4f3d12d5dbd5136c5b05a29543b1819e9fcb81d88181f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
a899c5b131c98ed38260732986d27905cb7a640d6a8e41c8243998f36c5add1e
BLAKE2b-256 checksum
How to use checksums
31ce95ebc4b28623d14be37b870ce579a4adc49c5e8b5ca58176a6381fa3a380
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

Download URL zen_engine-0.41.0-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
91387a4b6110ffcee5bd885956904fc3da11b797d79d7c38798f36b7685381ec
BLAKE2b-256 checksum
How to use checksums
a001405149fa8df577cd2d6cf94e3813ad2950530f617c93752531158bc079ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
e1732e24b21d5e46c7546b830c62226e7f1826956a41c2d0ed5f62d66cab3865
BLAKE2b-256 checksum
How to use checksums
8117e466713621654580efad53c7de0b133f3ba7676e69c1f794d610ddc993dc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

Download URL zen_engine-0.41.0-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
1e0cfac535503e1f6c8b8604e959593a966ef43014fba1d7553a4d841a4a205b
BLAKE2b-256 checksum
How to use checksums
0f228b1a900fabb1e779e0f5a7f8487930f12bf80423df837cb434d6cbbcecf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
7bd1b24a47444d4acc8b90c43d274dd0bb3ba228c84508c73ba5c007dd5f5ed9
BLAKE2b-256 checksum
How to use checksums
bd6aadd09c795ac94303c706afe9c1ebc7b311133e405eca1f178924e37cadee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

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

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

Download URL zen_engine-0.41.0-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
6e213d318ff49ca8feca69fda0f29d1ce77b55d5b69f77fa8e52e8b1c21034de
BLAKE2b-256 checksum
How to use checksums
1ac87d2787a7eb168310c068b156813ed4dace729b23c4126ef3cccd6775cbb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
457d0db9cf5b56c41d337d2d30622964f3f31cf964686a7c04d1b344055261f3
BLAKE2b-256 checksum
How to use checksums
5ab3e7606793afcd1962bedd6e6d4406eee97e20bd9cd35377ddc3e6614ed680
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
613fd60c0becc15a463625b23f6f5a5b60e8ddc9ce284e49cbc91288c8d862f5
BLAKE2b-256 checksum
How to use checksums
7e24aad443492928429264c9228bdcee92c29374c99d488bef5f5cb8b5fd1067
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.3

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

Download URL zen_engine-0.41.0-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
6e6e4d0ffde906100322637c47cf8b99f02b08e7ba7ae06f8905ce15306ef35e
BLAKE2b-256 checksum
How to use checksums
ac53d030428b0b23d061d3ac910b884e83dd02d2ae461c9c79b6da9df7602d77
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.3

6 release files

2.1.2

6 release files

2.1.1

6 release files

2.1.0

6 release files

2.0.2

6 release files

2.0.1

6 release files

2.0.0

6 release files

This release

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