Skip to main content

License: MIT

Python Rules Engine

ZEN Engine is a cross-platform, Open-Source Business Rules Engine (BRE). It is written in Rust and provides native bindings for NodeJS, Python and Go. ZEN Engine allows to load and execute JSON Decision Model (JDM) from JSON files.

Open-Source Rules Engine

An open-source React editor is available on our JDM Editor repo.

Usage

ZEN Engine is built as embeddable BRE for your Rust, NodeJS, Python or Go applications. It parses JDM from JSON content. It is up to you to obtain the JSON content, e.g. from file system, database or service call.

Installation

pip install zen-engine

Usage

To execute a simple decision you can use the code below.

import zen

# Example filesystem content, it is up to you how you obtain content
with open("./jdm_graph.json", "r") as f:
  content = f.read()

engine = zen.ZenEngine()

decision = engine.create_decision(content)
result = decision.evaluate({"input": 15})

Loaders

For more advanced use cases where you want to load multiple decisions and utilise graphs you can build loaders.

import zen

def loader(key):
    with open("./jdm_directory/" + key, "r") as f:
        return f.read()

engine = zen.ZenEngine({"loader": loader})
result = engine.evaluate("jdm_graph1.json", {"input": 5})

When engine.evaluate is invoked it will call loader and pass a key expecting a content of the JDM decision graph. In the case above we will assume file jdm_directory/jdm_graph1.json exists.

Similar to this example you can also utilise loader to load from different places, for example from REST API, from S3, Database, etc.

Supported Platforms

List of platforms where Zen Engine is natively available:

For a complete Business Rules Management Systems (BRMS) solution:

JSON Decision Model (JDM)

GoRules JDM (JSON Decision Model) is a modeling framework designed to streamline the representation and implementation of decision models.

Understanding GoRules JDM

At its core, GoRules JDM revolves around the concept of decision models as interconnected graphs stored in JSON format. These graphs capture the intricate relationships between various decision points, conditions, and outcomes in a GoRules Zen-Engine.

Graphs are made by linking nodes with edges, which act like pathways for moving information from one node to another, usually from the left to the right.

The Input node serves as an entry for all data relevant to the context, while the Output nodes produce the result of decision-making process. The progression of data follows a path from the Input Node to the Output Node, traversing all interconnected nodes in between. As the data flows through this network, it undergoes evaluation at each node, and connections determine where the data is passed along the graph.

To see JDM Graph in action you can use Free Online Editor with built in Simulator.

There are 5 main node types in addition to a graph Input Node (Request) and Output Node (Response):

  • Decision Table Node
  • Switch Node
  • Function Node
  • Expression Node
  • Decision Node

Decision Table Node

Overview

Tables provide a structured representation of decision-making processes, allowing developers and business users to express complex rules in a clear and concise manner.

Decision Table

Structure

At the core of the Decision Table is its schema, defining the structure with inputs and outputs. Inputs encompass business-friendly expressions using the ZEN Expression Language, accommodating a range of conditions such as equality, numeric comparisons, boolean values, date time functions, array functions and more. The schema's outputs dictate the form of results generated by the Decision Table. Inputs and outputs are expressed through a user-friendly interface, often resembling a spreadsheet. This facilitates easy modification and addition of rules, enabling business users to contribute to decision logic without delving into intricate code.

Evaluation Process

Decision Tables are evaluated row by row, from top to bottom, adhering to a specified hit policy. Single row is evaluated via Inputs columns, from left to right. Each input column represents AND operator. If cell is empty that column is evaluated truthfully, independently of the value.

If a single cell within a row fails (due to error, or otherwise), the row is skipped.

HitPolicy

The hit policy determines the outcome calculation based on matching rules.

The result of the evaluation is:

  • an object if the hit policy of the decision table is first and a rule matched. The structure is defined by the output fields. Qualified field names with a dot (.) inside lead to nested objects.
  • null/undefined if no rule matched in first hit policy
  • an array of objects if the hit policy of the decision table is collect (one array item for each matching rule) or empty array if no rules match

Inputs

In the assessment of rules or rows, input columns embody the AND operator. The values typically consist of (qualified) names, such as customer.country or customer.age.

There are two types of evaluation of inputs, Unary and Expression.

Unary Evaluation

Unary evaluation is usually used when we would like to compare single fields from incoming context separately, for example customer.country and cart.total . It is activated when a column has field defined in its schema.

Example

For the input:

{
  "customer": {
    "country": "US"
  },
  "cart": {
    "total": 1500
  }
}
Decision Table Unary Test

This evaluation translates to

IF customer.country == 'US' AND cart.total > 1000 THEN {"fees": {"percent": 2}}
ELSE IF customer.country == 'US' THEN {"fees": {"flat": 30}}
ELSE IF customer.country == 'CA' OR customer.country == 'MX' THEN {"fees": {"flat": 50}}
ELSE {"fees": {"flat": 150}}

List shows basic example of the unary tests in the Input Fields:

Input entry Input Expression
"A" the field equals "A"
"A", "B" the field is either "A" or "B"
36 the numeric value equals 36
< 36 a value less than 36
> 36 a value greater than 36
[20..39] a value between 20 and 39 (inclusive)
20,39 a value either 20 or 39
<20, >39 a value either less than 20 or greater than 39
true the boolean value true
false the boolean value false
any value, even null/undefined
null the value null or undefined

Note: For the full list please visit ZEN Expression Language.

Expression Evaluation

Expression evaluation is used when we would like to create more complex evaluation logic inside single cell. It allows us to compare multiple fields from the incoming context inside same cell.

It can be used by providing an empty Selector (field) inside column configuration.

Example

For the input:

{
  "transaction": {
    "country": "US",
    "createdAt": "2023-11-20T19:00:25Z",
    "amount": 10000
  }
}
Decision Table Expression
IF time(transaction.createdAt) > time("17:00:00") AND transaction.amount > 1000 THEN {"status": "reject"}
ELSE {"status": "approve"}

Note: For the full list please visit ZEN Expression Language.

Outputs

Output columns serve as the blueprint for the data that the decision table will generate when the conditions are met during evaluation.

When a row in the decision table satisfies its specified conditions, the output columns determine the nature and structure of the information that will be returned. Each output column represents a distinct field, and the collective set of these fields forms the output or result associated with the validated row. This mechanism allows decision tables to precisely define and control the data output.

Example

Decision Table Output

And the result would be:

{
  "flatProperty": "A",
  "output": {
    "nested": {
      "property": "B"
    },
    "property": 36
  }
}

Switch Node (NEW)

The Switch node in GoRules JDM introduces a dynamic branching mechanism to decision models, enabling the graph to diverge based on conditions.

Conditions are written in a Zen Expression Language.

By incorporating the Switch node, decision models become more flexible and context-aware. This capability is particularly valuable in scenarios where diverse decision logic is required based on varying inputs. The Switch node efficiently manages branching within the graph, enhancing the overall complexity and realism of decision models in GoRules JDM, making it a pivotal component for crafting intelligent and adaptive systems.

The Switch node preserves the incoming data without modification; it forwards the entire context to the output branch(es).

Switch / Branching

HitPolicy

There are two HitPolicy options for the switch node, first and collect.

In the context of a first hit policy, the graph branches to the initial matching condition, analogous to the behavior observed in a table. Conversely, under a collect hit policy, the graph extends to all branches where conditions hold true, allowing branching to multiple paths.

Note: If there are multiple edges from the same condition, there is no guaranteed order of execution.

Available from:

  • Python 0.16.0
  • NodeJS 0.13.0
  • Rust 0.16.0
  • Go 0.1.0

Functions Node

Function nodes are JavaScript snippets that allow for quick and easy parsing, re-mapping or otherwise modifying the data using JavaScript. Inputs of the node are provided as function's arguments. Functions are executed on top of QuickJS Engine that is bundled into the ZEN Engine.

Function timeout is set to a 50ms.

const handler = (input, {dayjs, Big}) => {
    return {
        ...input,
        someField: 'hello'
    };
};

There are two built in libraries:

  • dayjs - for Date Manipulation
  • big.js - for arbitrary-precision decimal arithmetic.

Expression Node

The Expression node serves as a tool for transforming input objects into alternative objects using the Zen Expression Language. When specifying the output properties, each property requires a separate row. These rows are defined by two fields:

  • Key - qualified name of the output property
  • Value - value expressed through the Zen Expression Language

Note: Any errors within the Expression node will bring the graph to a halt.

Decision Table

Decision Node

The "Decision" node is designed to extend the capabilities of decision models. Its function is to invoke and reuse other decision models during execution.

By incorporating the "Decision" node, developers can modularize decision logic, promoting reusability and maintainability in complex systems.

Support matrix

Arch Rust NodeJS Python Go
linux-x64-gnu ✔️ ✔️ ✔️ ✔️
linux-arm64-gnu ✔️ ✔️ ✔️ ✔️
darwin-x64 ✔️ ✔️ ✔️ ✔️
darwin-arm64 ✔️ ✔️ ✔️ ✔️
win32-x64-msvc ✔️ ✔️ ✔️ ✔️

We do not support linux-musl currently.

Contribution

JDM standard is growing and we need to keep tight control over its development and roadmap as there are number of companies that are using GoRules Zen-Engine and GoRules BRMS. For this reason we can't accept any code contributions at this moment, apart from help with documentation and additional tests.

Metadata

Release files for zen-engine 0.27.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.27.0
File Size Uploaded
zen_engine-0.27.0.tar.gz 160.6 kB Details

Built distributions (wheels)

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

Total release size: 98.6 MB

Release files / zen_engine-0.27.0.tar.gz

Download URL zen_engine-0.27.0.tar.gz
Size 160.6 kB
Tags Source
SHA-256 checksum
How to use checksums
879e0c1fcefd93f2c00a7f69d59f14ed2551e84bf14dcaa15ab40d93138f8272
BLAKE2b-256 checksum
How to use checksums
19ffe6f05cb6b1d5f8c18398253aa1a645d3d75f4ef877a0533ccf469a390946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

Download URL zen_engine-0.27.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags Linux glibc 2.28+ x86-64 PyPy 3.9 PyPy 3.9 7.3
SHA-256 checksum
How to use checksums
6296dec7f21291f319ac2f55b36079114dce9246271e1fe7565be4bc57d46aed
BLAKE2b-256 checksum
How to use checksums
429bc0fe61c94bb332891104b92a4d5ba3b2f527bb39385c807574625148685d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

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

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

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

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

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

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

Download URL zen_engine-0.27.0-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags Linux glibc 2.28+ ARM64 PyPy 3.7 PyPy 3.7 7.3
SHA-256 checksum
How to use checksums
5d46addb31e28012639fd94fe5e4bd8b53cf6ce172f15ae5c12f045caf582d31
BLAKE2b-256 checksum
How to use checksums
841c51350639e994497039edebda55a547e2d4a397cb71e078ca9b6555d265b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

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

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

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

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

Download URL zen_engine-0.27.0-cp312-cp312-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8651b05e411039be30903002827c37d7e043cacd9b26117f1335dea8dc9761aa
BLAKE2b-256 checksum
How to use checksums
317ae603ffcd7e12d1133f433725f7b89f5c1339125220073d8dd413b7a59b08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
59de93f14d2797bb54c7012b446b5159e32bc9b8130b6e476111d29c786f3a51
BLAKE2b-256 checksum
How to use checksums
15790bb773a77cfa6b4cbbe3fc211b742f259fc7f10c55c24cad4e442cec66b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp311-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
755e8b82b0a3d5c91c19cfe8055e6818be4e6aa317bbb9e1345fdf0bd894068a
BLAKE2b-256 checksum
How to use checksums
59803a650eca938986074110b0eaf85bdd9d7cfdcbd6b7d98918b4fe87b3144a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
89aa1b24fbd0d312ba465bee24a792761d222d7b07ed31fa113f458da88a60a2
BLAKE2b-256 checksum
How to use checksums
4eb68cde57a6b1ab7b74ab600aaa294f94246bb32d378005a8dd50e9e5ff9bd0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp311-cp311-manylinux_2_28_aarch64.whl
Size 2.9 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5799f882087fb9d8370787ffae48e9431b4dcdebcb595bdbee2cbb91a4686edd
BLAKE2b-256 checksum
How to use checksums
b0377331b274ec9dbabf56fa63839024fe324ee3164aef73b8f52a4e4fb8e38b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp311-cp311-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a20f426587bbac679c95616959f358f9b640304afb911621f53353cd25d3ecba
BLAKE2b-256 checksum
How to use checksums
6b99bd89102f56da72c5d119e0f57f60a8eec70a19cef9fa48cbf72c2794a4a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c5753da3757dc5e2c715d822b17a57266c0049a61c036c3328574f5e83f1c516
BLAKE2b-256 checksum
How to use checksums
54852bc66ca2c0c20998255bb030909745f071d2f8193df91c2269f0366dcae8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp310-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b9fa4816c45364a6fb5912fa73f77bd8cac560738896838391e5b07d588637f4
BLAKE2b-256 checksum
How to use checksums
6327be90d95e389340ed367d49be1b48257e7066a4c55e9c9b7433a4ce554c68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a8fbd8e1c527f95b0caadc8389bdfd3e276ab140f74ed1884a0bd980abaf91df
BLAKE2b-256 checksum
How to use checksums
0f1a07366666a711bc8adfc4dc952ecbd5a8ddbc7faec9593b9121c197d5ca33
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

Download URL zen_engine-0.27.0-cp310-cp310-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2093ebbc43473047403d7742f62a07535181264a57f7b974a6176850b1d8729d
BLAKE2b-256 checksum
How to use checksums
8ee8914c61552809d2e5311b67c16b4652e3d671d5630b78b4070a6b58e11aef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9551c77957020f68e127d73795b98d9f098646515047368e171a0a06ba086922
BLAKE2b-256 checksum
How to use checksums
a4e3ed001f6917965c5fd8cf762eea90d62037a981dd267a2d77c68ee89290c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp39-none-win_amd64.whl
Size 3.1 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
2bc932ff9d7ef8bce3e417f0ced21ff9f9f8aa93a085065ac544fdf8b13c7db2
BLAKE2b-256 checksum
How to use checksums
66dbb84dc74439f62f4128d9f31c294cdd13e00f3aae9e7b42b12f6794ab59de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

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

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

Download URL zen_engine-0.27.0-cp39-cp39-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
867e61bd234aae268b5653a899f00d8c6b34766e9148e8fb9372e08492308556
BLAKE2b-256 checksum
How to use checksums
7133ae19dcad64fd31d78362d182564e3e5d33c8203ea9cddda19c73bfe92e92
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

Download URL zen_engine-0.27.0-cp39-cp39-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
00a682780d216f82513da7f6325fc96235baa5d6244fec4294e0d3cf3ce26671
BLAKE2b-256 checksum
How to use checksums
60fe5bb39624a6556aa4ee87710f3dd845a3b05bd283c4a9d9ef6ea8c8dbcc27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

Download URL zen_engine-0.27.0-cp38-cp38-manylinux_2_28_x86_64.whl
Size 3.1 MB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
81b90ee3c9960d85b9b60ae71c444f1f4e22551130628b9c60f6d4d08d57344d
BLAKE2b-256 checksum
How to use checksums
9b145b9b06e27b11ae5ec08b2db00d48c2870de5801b5236da6e883ac5df0780
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.7.1

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

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

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

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

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

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

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

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

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

34 release files

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