Skip to main content

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

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

imperium_legacy-0.0.5-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file imperium_legacy-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: imperium_legacy-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for imperium_legacy-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b03ec8115ae2aa978dfcad09ae5b27f7c9e804a273cc1c9ce387e5e3dbfdcbe3
MD5 7189ae53cd530fdfe115d0aece4f0766
BLAKE2b-256 8eced757e858811f8e031187251822a7c66d1a14ca78f1b0e8e5af3a698554d6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page