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)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|