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.49.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.49.0
File Size Uploaded
zen_engine-0.49.0.tar.gz 201.0 kB Details

Built distributions (wheels)

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

Release files / zen_engine-0.49.0.tar.gz

Download URL zen_engine-0.49.0.tar.gz
Size 201.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c5ef1d646f5a8d67a31bb399bddb73cc6f40e78c12cd76b0ae6ffad9513d33fe
BLAKE2b-256 checksum
How to use checksums
b4838888d8366cecae662a54aa7f0284b92a25b91858f989f91e15167780498f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
e2866970618a6e687585bdd69fc373456f491fd80d51c91f1a32bcabd9c44bb5
BLAKE2b-256 checksum
How to use checksums
9506556662edd6d04164462b0cf2108cba9fb7d0b2446a25d37a2b2a60c09596
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
099fdc00b92ca8e809aba6b16fc9ec3e18c367812995b53ea0d375d2121e9cc4
BLAKE2b-256 checksum
How to use checksums
1c3cf1a92fe217c2b03fa97db6bc97bafc3cd729cc8271a7301f9678d1cbbb83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
3f66ddc4a0341ce1182ed5a9f6e801eb127f9ede5f355bdb2c2df5db9c153ef3
BLAKE2b-256 checksum
How to use checksums
e4b6ed74aa883a7ead356d343a89dca43bfca1c7e2697f9035076f41d1a3eb2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

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

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

Download URL zen_engine-0.49.0-cp313-cp313t-manylinux_2_28_aarch64.whl
Size 4.0 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2b22669338363e52ae542fb56ce4ab076c0ced157cbb9e81f3aec0a355fe06e1
BLAKE2b-256 checksum
How to use checksums
7027135efd56aab4198f34e443ed8d1ce7b7426ca3e815c3068d11e14f83da14
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.0-cp313-cp313-win_amd64.whl
Size 4.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
22fae11733058ad5ba18f81a66ab9312c40e417855800bccfe7f9c1593d1e512
BLAKE2b-256 checksum
How to use checksums
81a6106d542037a679ac9fb2bd6792ba6381164cf166b1103e368c1dcf44c4d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
59d9e2079e44349c30a0f45e23518f1a9c6356e112a4f17cb6b36e477366ac92
BLAKE2b-256 checksum
How to use checksums
c381e65485984750f99b468379377c5ad9cd06d9c77ae1627999b63ca50973b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
0fa4b083fd7eddb7b03d27d97c2ef84cf726f427ebe5849efb275954a7818dd0
BLAKE2b-256 checksum
How to use checksums
159de348075fd1f391ee11fae3492dc07e2305f21286c158656ba2cba91eb856
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
52a051584fad3911d0606ffbfad43c78fa0eeed1ac02ea9e25a81e1c540d73a1
BLAKE2b-256 checksum
How to use checksums
7a9b978792b2e839585a0f65ec70189ed36ea68fbc1668aba94d3d1993fdef1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
da9a30fd02079b66b3f5927cd98c2574e1f6687d97317fc6d29568a43b3319a6
BLAKE2b-256 checksum
How to use checksums
321de36ea7a87250ac95cd959f38a09b8cb83fc583394120afcc94e4d470e03c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

Download URL zen_engine-0.49.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
7972efa31965ce71ea69c2d8a558c24c5e481fdf07b3ed28872340bf0a14d9bb
BLAKE2b-256 checksum
How to use checksums
b3317fb8da602fbfa9b6552f17bd81a16337ef56053806e61a6ad414c93a0702
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
929f35fa6aba38e43c7ac492a679bab30767a46f3307806ed221288d6cab71cf
BLAKE2b-256 checksum
How to use checksums
91e8590e9492db2ceef1a788157edb3695bc54b7fd25b18f7669397303328f3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
16adc3ccbbee8baf3df5f0a1909b4119485a496299ae60193ce9d38ecbc76b10
BLAKE2b-256 checksum
How to use checksums
1e526c05a3cab37b294cce3e3800417901095e51a14fb4f6b56fb0f45d99063d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

Download URL zen_engine-0.49.0-cp311-cp311-win_amd64.whl
Size 4.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
463c3527005a708a4ab5dde326245048bef797f6a2446b0ced1a6953314835c7
BLAKE2b-256 checksum
How to use checksums
0a4238b06b008cdbb2ce246fe63c16c966321d09cda9ec0064a8d87d9b764ada
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
2a0b5d7e6c79c4bbd75df98cac7b1f1b63171d56eaf77502824e5db944956886
BLAKE2b-256 checksum
How to use checksums
2ce25a1428d1b4a241334879d3c6783d8d9a696a2420fc8b70007b90977c84b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

Download URL zen_engine-0.49.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
e8786d4d660747536387f4ae730591ce87b4f4a0f8b0ef9b35e6da9979795ffe
BLAKE2b-256 checksum
How to use checksums
2f72f7e743532dfb1a8a59d7c989ba471b8a360f4726fb552bc58612f7e2ea6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
c59ab6563e4b22187bef6caaa90cb45738fffd7799e5e014a543f891d51baede
BLAKE2b-256 checksum
How to use checksums
9fa331f33b309fbe339a6108b4e74f7d7d90e1eb5bd2779aec2a492787b0f3e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

Download URL zen_engine-0.49.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
68e5841550b5433fdff46e67b3e6a544257744a8afab1948b1b5cc563c231797
BLAKE2b-256 checksum
How to use checksums
1158ff15bdf59c137414513f269d6c345723540b77c8858e3be37e7eb479646f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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

Download URL zen_engine-0.49.0-cp39-cp39-win_amd64.whl
Size 4.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
bfd3ad3aedc007d6c64da49ddfba47a23794fcea6fc5b833ec64dba91346dd45
BLAKE2b-256 checksum
How to use checksums
58f5c0940012040df5527b1f4c7733c45a5896c4458395018499d7a1e536d6cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
5edfdb56507f4dcce74b4f22044a859336cb69f2ed9de904995f8fe6517df1b3
BLAKE2b-256 checksum
How to use checksums
c002992cdc28f80ee6dcc9cc9f0c0d773aa701da9517933c44c6c6259293622f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
5e2897104cd5bad9d1884bdc32afe4ec36c96167f3ab19c4a5e0149c72bf9187
BLAKE2b-256 checksum
How to use checksums
88ae910a5db2db3ef014478d0cb8e2ce728a5b635bbbcbd35ce444d04ba4cef1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
bcc310995095268f9178a9a4bd452e1c36fd43888fa6738a085bf1a2d7a7f940
BLAKE2b-256 checksum
How to use checksums
1a1ebeead32a0bb0b7060f8634b6ae3dae52854a98cf350472b68a1813bc33a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
83c0b7d5acbfc0d1fefb7b9db7f9edc0600cef6fb2112682320cd6e7eaa87d02
BLAKE2b-256 checksum
How to use checksums
c29389e6086b3f10cb96dfd205772f970ba153142ef46c1454c92cbf6e75cb60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

Download URL zen_engine-0.49.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
87216d43978243bd5930c0325a2d53b553ff6eced96e835c704ed4f921ecc800
BLAKE2b-256 checksum
How to use checksums
939bd4b7d9da0e8b611740630c3fbd7abd150a4c37a18ce00475566e81838883
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.9.0

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

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

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