VOOZH about

URL: https://pypi.org/project/asteval/

⇱ asteval Β· PyPI


Skip to main content

asteval 1.0.9

pip install asteval

Latest release

Released:

Safe, minimalistic evaluator of python expression using ast module

Navigation

Verified details

These details have been verified by PyPI
Maintainers
πŸ‘ Avatar for newville from gravatar.com
newville

Unverified details

These details have not been verified by PyPI
Project links
Meta

Project description

πŸ‘ https://github.com/lmfit/asteval/actions/workflows/ubuntu_numpy.yml/badge.svg
πŸ‘ https://github.com/lmfit/asteval/actions/workflows/ubuntu_nonumpy.yml/badge.svg
πŸ‘ https://github.com/lmfit/asteval/actions/workflows/macos_numpy.yml/badge.svg
πŸ‘ https://github.com/lmfit/asteval/actions/workflows/windows_numpy.yml/badge.svg
πŸ‘ https://codecov.io/gh/lmfit/asteval/branch/master/graph/badge.svg
πŸ‘ https://img.shields.io/pypi/v/asteval.svg
πŸ‘ https://img.shields.io/pypi/dm/asteval.svg
πŸ‘ https://img.shields.io/badge/docs-read-brightgreen
πŸ‘ https://zenodo.org/badge/4185/newville/asteval.svg

Links

Installation

Use pip install asteval to install the asteval library.

Asteval supports Python 3.10 or higher. No modules outside of the standard library are required, though if NumPy is installed, many functions from it will be used by default.

About Asteval

Asteval is a safe(ish) evaluator of Python expressions and statements, using Python’s ast module. It provides an easy-to-use restricted Python interpreter that supports a pretty complete subset of the Python language and can handle user input more safely than Python’s eval(). Asteval emphasizes mathematical expressions so that many functions from NumPy are imported and used if available, but also provides a pretty complete subset of the Python language. It can be used as an embedded macro language within a large application or as a simple calculator for mathematical calculations.

Asteval supports many Python language constructs by default, including conditionals (if-elif-else blocks and if expressions), flow control (for loops, while loops, with blocks, and try-except-finally blocks), list comprehension, slicing, subscripting, and f-strings. All data are Python objects and the standard built-in data structures (dictionaries, tuples, lists, sets, strings, functions, and Numpy nd-arrays) are well supported, and most public attributes and methods of these objects are available. Asteval does place some limitations on β€œlooking under the hood” to get private and potentially unsafe methods.

Many of the standard built-in Python functions are available, as are the functions from the math module. Some built-in operators and functions, such as getattr, and setattr are not allowed, and some including open and ** are replaced with versions intended to make them safer for user input. If the NumPy is installed, many of its functions will also be available. Programmers can add custom functions and data of their own into each Asteval session. Users can define and run their own functions within the confines of the limitations of the Asteval language.

Asteval converts user input into Python’s own abstract syntax tree (AST) representation and determines the result by walking through that tree. This approach guarantees the parsing of input will be identical to that of Python, eliminating many lexing and parsing challenges and generating a result that is straightforward to interpret. This makes β€œcorrectness” easy to test and verify with high confidence, so that the emphasis can be placed on balancing functionality with safety.

There are several absences and differences with Python, and Asteval is by no means an attempt to reproduce Python with its own ast module. While, it does support a large subset of Python, the following features found in Python are not supported in Asteval:

  1. creating classes is not supported

  2. many internal methods and classes of Python objects, especially __dunder__ methods cannot be accessed.

  3. eval, exec, yield, async, match/case, function decorators, generators, and type annotations are not supported.

  4. f-strings are supported, but t-strings are not supported.

  5. importing modules is not supported by default, though it can be enabled.

Most of these omissions and limitations are intentional, and aimed to strengthen Asteval against dangerous user code. A few of these (say, match/case and t-strings) omissions may simply be viewed as not particularly compelling need for an embedded interpreter exposed to user input.

Even with these restrictions, Asteval provides a pretty complete and usable scripting or β€œmacro” language that can easily be embedded into a larger GUI or Web application that can handle user input without many of the risks associated with using Python’s eval().

Matt Newville <newville@cars.uchicago.edu> Last Update: 17-Dec-2025

Project details

Verified details

These details have been verified by PyPI
Maintainers
πŸ‘ Avatar for newville from gravatar.com
newville

Unverified details

These details have not been verified by PyPI
Project links
Meta

Release history Release notifications | RSS feed

Download files

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

Source Distribution

asteval-1.0.9.tar.gz (55.2 kB view details)

Uploaded Source

Built Distribution

Filter files by name, interpreter, ABI, and platform.

If you're not sure about the file name format, learn more about wheel file names.

Copy a direct link to the current filters

asteval-1.0.9-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

Details for the file asteval-1.0.9.tar.gz.

File metadata

  • Download URL: asteval-1.0.9.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for asteval-1.0.9.tar.gz
Algorithm Hash digest
SHA256 4f7323d63d9fbf89d7e1d5f8bb59b6c093970c15bb5926e6e67d0195858aa230
MD5 f08a1000889e14c88926515111f58b6d
BLAKE2b-256 b171bec6758ab41ada3b6870cb194ea16d2e76bb530562c8a8cd7d2167012bea

See more details on using hashes here.

File details

Details for the file asteval-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: asteval-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 23.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for asteval-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 60513ea5d608d27bdb0cf3785dc993a6c3adeaee45f1bded0953a09e904e461f
MD5 26b13aeec592fbc596a6d332c266ef25
BLAKE2b-256 fed7a71b12b625c44cfcb95d41397752edccc0a731903081609cffd6720f671d

See more details on using hashes here.

Supported by

πŸ‘ Image
AWS Cloud computing and Security Sponsor πŸ‘ Image
Datadog Monitoring πŸ‘ Image
Depot Continuous Integration πŸ‘ Image
Fastly CDN πŸ‘ Image
Google Download Analytics πŸ‘ Image
Pingdom Monitoring πŸ‘ Image
Sentry Error logging πŸ‘ Image
StatusPage Status page