NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1680 most downloaded on PyPI
Safe, minimalistic evaluator of python expression using ast module
Last release 1 months ago
21 Aug 2026
Release timing varies
gaps range from 1 weeks to 10 months
Some releases are documented
notes for 19 of 45 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
45 releases · first in 2012
Use ndarray.reshape instead of assigning to ndarray.shape to avoid NumPy deprecation.
node is not definedThis fixes some usage problem and is also meant to address the securirty advisories GHSA-89v8-rhwq-hf77 and GHSA-9w56-46f6-3qhx
This fixes some usage problem and is also meant to address the securirty advisories GHSA-89v8-rhwq-hf77
and GHSA-9w56-46f6-3qhx
Changes:
Fix unpacking of nested tuples in comprehensions (#149 from yistarostin)
Fix error with lambda functions, so that calls from top level should clear previous errors and exceptions should clear the callstack before re-raising (#150)
Add try/except for import of ctypes, so that this module is not required from asteval to run (#152)
Update PyPI stats link in README
Remove the "exiting exceptions", 'SystemExit' and 'GeneratorExit' from the symbol table to remove the possibily of such an exception in asteval from exiting the calling application. (#153)
Make exception handling of BaseExceptions that are not also Exceptions (most notably, KeyboardInterrupt, which is not removed from the symbol table) more explicit, converting these to RuntimeError. (#153)
Add 'ctypes', 'dump, and 'tofile' as unsafe attributes of numpyndarrays, so that these cannot be acccessed. (#153)
One column per quarter.
fix bug ( #146 ) so that return from a Procedure does not interrupt the calling code block
Fixes and improvements:
return from a Procedure does not interrupt the calling code blocklambda expressionsreturn in while , for , and with blocks in functions properly signal an immediate exit of the function. (fixes #141 )
return in while, for, and with blocks in functions properly signal an immediate exit of the function. (fixes #141)pyproject.toml from the endless churn from PyPA, to move the location and formatting for the LICENSE, to continue compliance with the endless churn from PyPA.drop testing and support for Python3.8, add Python 3.13, change document to reflect this.
numpy.linalg, as documentedSpecial thanks to @SteakEnthusiast for the security-related fixes
more work on handling errors, including fixing #133 and adding more comprehensive tests for #129 and #132
fix error handling that might result in null exception
bugfix:
bug fixes, a few feature enhancements:
bug fixes, a few feature enhancements:
_signature() method, now use in reprfix NameError handling in expression code
bug fixes:
security fixes, based on audit by Andrew Effenhauser, Ayman Hammad, and Daniel Crowley, IBM X-Force Security Research division
security fixes, based on audit by Andrew Effenhauser, Ayman Hammad, and Daniel Crowley, IBM X-Force Security Research division
more complete support for Numpy 2, and removal of many Numpy symbols that have been long deprecated.
Asteval 1.0.0
Asteval has been fairly mature for a while, with major improvements since version 0.9.29 over the past year or so making it feel like it has reached a point where the features and API are stable enough to call version 1.0.0.
Changes compared to 0.9.33:
fixes for multiple list comprehensions (addressing #126)
Fixes:
add deprecations message for numpy functions to be removed in numpy 2.0
cleanup numpy imports to avoid deprecated functions, add financial functions from numpy_financial module, if installed.
numpy imports to avoid deprecated functions, add financial functions from numpy_financial module, if installed.Interpreter, but still support 'usersyms' argument. Will deprecate and remove eventually.Group object that can be accessed from Python either with dict syntax (ie aeval.symtable['x']) or with object attribute access (aeval.symtable.x). In addition, symbols can be found by looking first in the top-level symbol table and then in sub-Groups named in symtable._searchgroups, allowing for a more hierarchical, nested symbol table. This should be considered experimental and is off by default. The make_symbol_table() function gains a nested=False argument to control whether to use this option.add config argument to Interpreter to more fully control which nodes are supported
config argument to Interpreter to more fully control which nodes are supportedimport and importfrom -- off by defaultNothing published for this version
add support for multiple list comprehensions
index_tricks attributesNothing published for this version
Nothing published for this version
fixes import errors for Py3.6 and 3.7, setting version with importlib_metadata.version if available.
fixes import errors for Py3.6 and 3.7, setting version with importlib_metadata.version if available.
also fixes CI testing with github actions so that the proper version of Python is actually used in the test!
Nothing published for this version
treat all __dunder__ attributes of all objects as inherently unsafe.
treat all __dunder__ attributes of all objects as inherently unsafe.
Nothing published for this version
another important but small fix for Python 3.9
another important but small fix for Python 3.9
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →