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.48.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.48.0
File Size Uploaded
zen_engine-0.48.0.tar.gz 200.8 kB Details

Built distributions (wheels)

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

Total release size: 129.6 MB

Release files / zen_engine-0.48.0.tar.gz

Download URL zen_engine-0.48.0.tar.gz
Size 200.8 kB
Tags Source
SHA-256 checksum
How to use checksums
09754317f3bb8112560aceae779cf4e4fd2091e8df045a8e33d47e958425e53d
BLAKE2b-256 checksum
How to use checksums
d7591e39020329e235da538fd8cfc45165ca826f0cdda61ebb9bbc6d554c8af3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
149c18bfc7271d6e2d3088c2a112121b0746c50c56fbab4fc22067f445aa9262
BLAKE2b-256 checksum
How to use checksums
56b5d5e4c3d9568641d179b1caa8e5fdbcc1a6ae91431fbe4e393467686f4db2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
f9a29dbf3c672df6a246c16b946dd419bb706c82d4e5405576b5a95598617dce
BLAKE2b-256 checksum
How to use checksums
92c3c7cb7ae703d7d0937d678fd67607af5ca60a0891731ba15ac25049a7c5ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
cec5a9ed30f9f1495c9d22c1081a19df8e30fab7fd878c056be4dc24d411a36c
BLAKE2b-256 checksum
How to use checksums
07849104770b5ec2539d2871bbcdc48e3bf24352aed5ff5b153a3930a18d1318
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
631bd40cd957572f66c0498b18214f54ee6a0cf8c1a083e905fdca79d0800742
BLAKE2b-256 checksum
How to use checksums
a0eddd9b953343ea2b112d7c10aa7ca7ab7370bd51e7dd5bc439e4b551f34575
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
ad293600065745fba835450ff77eaef52cda40ba792c24bd0697c353bdbff311
BLAKE2b-256 checksum
How to use checksums
21e2e9d47f3d8e9d784e52e27ee819aaf8551232e0c1d69978454ab65eb659e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
637dc92c26697cdc8de73a8bc661cd9e17945dcc546db7712ff947069290b42d
BLAKE2b-256 checksum
How to use checksums
89be623491c95714524b82f7a357675e4639838484028857ead868cee9fb6e7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

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

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

Download URL zen_engine-0.48.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
487f986c3763a882e28760f197efbb401f64f0f42dd7a013c65d77a6f04ed580
BLAKE2b-256 checksum
How to use checksums
7feb1a53cca3fefc3bda37606cf31c6d5c9853995532a11ed40c60e07fc8c20d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp313-cp313-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
7206b26dc90ce3826cde682ef628546f19a03f1840106bee4292c35b4b70fd38
BLAKE2b-256 checksum
How to use checksums
b4a5cf5b2e878ea931917a440ed74d671497a21c47e9a6a20a28e6d8ce5df661
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
f3e2f61474cf77d51663a899f9e41b434fc02734db70debc768c91ee821da726
BLAKE2b-256 checksum
How to use checksums
32df3de8dfee2febfe415cc1d54b1ff2f7a65f92a4e28a86ae34a39828892a43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
fd3c94d1761a8fbf3dba3bee1b45e6aa5b1b8ba78462ad32006061ee34e239a9
BLAKE2b-256 checksum
How to use checksums
e1e3fb935fab25821744e853410dd3ddf8e7c1c95ee431126192e81bb033b36f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

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

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

Download URL zen_engine-0.48.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
861637a7ccaa7bc7dfdc0ba2c6326df955d063f59f902fc9155311d71e21830d
BLAKE2b-256 checksum
How to use checksums
4a47aa3b6ec4a22f4c7625a1d2ade1bd67f649fce33ab3228a7f6915575aa829
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp312-cp312-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
b389062509244c666b95a69c89115cc7498f7f76770be043c5f6853df2689c3f
BLAKE2b-256 checksum
How to use checksums
071ed1e8450823cb6a864b455e7a936e5436ce021ab542fed4e29060aa7c4994
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
1ddae68882a34e5c0a8ae0177685310761a231c1f3e2c15ab6d61d037b355399
BLAKE2b-256 checksum
How to use checksums
979953c9c57da979766c23ffa91a7a3a030877b3a1ef4b2163ef1c2f43f4041d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
044c9fbd71c1c8fcaddc7ba6f85e9f7f15dfa81f9e51240a090e3b253a4336d7
BLAKE2b-256 checksum
How to use checksums
2403ff87d2c787bc88ded63462afd904e6aba4caff66fca1ca8dee697ad272ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp311-cp311-win_amd64.whl
Size 4.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
728eed21339f1696a2cdc79a23a7de5d3ccc95d6c1373892d17cf116680f7d31
BLAKE2b-256 checksum
How to use checksums
8877280a9363618b9fba89df6c6388497b402bd313c1f95766aa92e0c1a43959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d8b18c7ed88fc2fc161c90b8699182b1e4e12f7a8e941e0561b2e32e594def37
BLAKE2b-256 checksum
How to use checksums
7f53615a2b1e0a4744300c7678c13353b7d5863dc7d0f01a012b73ea435f4a03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
1511f55602de3bf2c6c1de47b81a13f4c87ebe634901c2156152a94c7bacf32a
BLAKE2b-256 checksum
How to use checksums
67a624785af76d06eaf6d963886549120ad4b17e456fc92ab7830ed0a10b7423
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
32113d081050298324be807a7469229f54e5259843a3f79c89bc25962bee5cc7
BLAKE2b-256 checksum
How to use checksums
4ce51486c04f045f60c435114f4bad70615f12c220bc10f192d4be4ade9adf84
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.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
5798de747086cdaa9d99334dbf86593892be6dc5e4414bd3a7cccc65da4b21ca
BLAKE2b-256 checksum
How to use checksums
754be8c352a93dff88757c3b3b8487f200b38d2618033ce894878bed4c4b9db8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp310-cp310-win_amd64.whl
Size 4.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a4eb756f4c92d17b63fdff5f3748c1e4465f89805e04a3bc5d1ce7898304ee5c
BLAKE2b-256 checksum
How to use checksums
9c252c91bf9ae07a9d0c9c0bfa412116aefbefe3d22b4ba19939bf182dd7fda8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c5319a362d9cab1d60678fcc4ab11b2dc1417a0129d7987f29475cc4fc403ddc
BLAKE2b-256 checksum
How to use checksums
f413eb42379b7aee9bea795efcc903453c5ce4337708e233934db73a1c3334de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp310-cp310-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
523bede55e5921f2accb6fb7608504ebf5ddf280863ccabc650595747c4be09a
BLAKE2b-256 checksum
How to use checksums
58cc044d5fe81a1b08cc7fbdafbee2a9ddf99b527e2b73b111cd13743d651e6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp39-cp39-win_amd64.whl
Size 4.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
7eaddafce8d9bebbb457a04aacf0a56f456728ac4c7f185961b592ede7cf99df
BLAKE2b-256 checksum
How to use checksums
93dffc9906be20de5ac40856c7238f084997235307fc4d0f8f125d8e02dec24c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp39-cp39-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
31f0e528629ae7ca11992a2988b3f1f5eb5c09302e7d9a5debb44ca8ce33aa9b
BLAKE2b-256 checksum
How to use checksums
dbaaa5ada544bafc1c6471f33a92e32d9fb2351116818fc4ffd0dab76767a1a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp39-cp39-manylinux_2_28_aarch64.whl
Size 4.1 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
f4d700cc8a7c1887bf3677954d7ce96633d9bce9d4e59636be769db0ea3a94fc
BLAKE2b-256 checksum
How to use checksums
983d7914bb1fd0ccba1a3df5d5f2a5c7d4a59ac1a51599e1a6309abfa842ffa5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

Download URL zen_engine-0.48.0-cp38-cp38-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c49417757bf2a4939d45ce99f75079ff1dcaa0bca75c10f2a4c3c5374d2f6770
BLAKE2b-256 checksum
How to use checksums
e0d06faff6da8f99cd5839b9b27d196e59942c49f5903cab66342a67925926e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

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

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

Download URL zen_engine-0.48.0-cp37-cp37m-manylinux_2_28_x86_64.whl
Size 4.4 MB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
40cd79bbb498f798bee7aa8a8bb063fb09db2462c463df45b0fc3a9c08dd3440
BLAKE2b-256 checksum
How to use checksums
72749823989724b9ee8fa49a0d11c6a24c5dce32f7aba88a6f0c9dbf1a8c2d74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.8.7

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

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

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

32 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