Skip to main content

Imperium

Imperium is a python package that allows you to easily evaluate python expressions

Installation

pip install imperium

Usage

from imperium import Expression

obj = {
    'name': 'iPhone',
    'model': '11 Pro',
    'price': 1299.90,
    'state': 'new'
}

expr = Expression()
if expr.evaluate('$subject.state == "new"', obj): # "$subject" is a reserved key
    # Your logic

To access the data in the given subject, use the "$subject" key as shown above.

Check if the subject has an attribute

from imperium import Expression

obj = {
    'name': 'iPhone',
    'model': '11 Pro',
    'price': 1299.90,
    'state': 'new'
}

someother_obj = {
    'name': 'John Doe'
}

expr = Expression()
res = expr.evaluate('exists("$subject.price", $subject)', subject=obj, source=someother_obj) # REMINDER: "$subject" key let's you access the object that you passed to the evaluate method (obj in this case)
print(res) # Output: True

Testing regular expressions

from imperium.evaluator import Expression

obj = {
    'name': 'iPhone',
    'model': '11 Pro',
    'price': 1299.90,
    'state': 'new'
}

buyer = {
    'fullname': 'John Doe'
}

# Passing the name attribute of the subject
# REMINDER: "$subject" let's you access the object/subject passed to the evaluate method (obj in this case)
# and "$source" let's you access the optional source object passed to the evaluate method 

# INFO: "matches" function let's you evaluate a regular expression against a value, note that the supported flag are "i" and "m"
# if you use something else than these two flags, the evaluation will procede by ignoring the flag since it didn't recognize it.

expression = "exists('$subject.name', $subject) && matches('IPHONE', $subject['name'], 'i')"

expr = Expression()
res = expr.evaluate(expression, subject=obj, source=buyer)
print(res) # Output: True

Imperium has built-in functions to simplify certain actions/verifications.

Function Argument(s) Description
exists() key (Ex: $subject.price), $subject Checks if the given attribute/key exists in the given subject.
matches() regex, value, flag (i or m) Tests a regular expression
date() datestring, format datestring and format are both optional, provide them to the function if you want to convert a date string to date object.
If these two arguments are left emtpy, the function returns date object with current date and time.
date_modify() date, operation (+ | -), valuetype (days | months | years), value: int This function can add and subtract days, months and years from a date object.

Release files for imperium-legacy 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for imperium-legacy 0.0.5
File Interpreter ABI Platform
imperium_legacy-0.0.5-py3-none-any.whl Python 3 none any Details

Release files / imperium_legacy-0.0.5-py3-none-any.whl

Download URL imperium_legacy-0.0.5-py3-none-any.whl
Size 4.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b03ec8115ae2aa978dfcad09ae5b27f7c9e804a273cc1c9ce387e5e3dbfdcbe3
BLAKE2b-256 checksum
How to use checksums
8eced757e858811f8e031187251822a7c66d1a14ca78f1b0e8e5af3a698554d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.9

Release history Release notifications | RSS feed

This release

0.0.5 This release

1 release file

0.0.4

1 release file

0.0.3

1 release file

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