Skip to content

Commit

Permalink
update README and INSTALL
Browse files Browse the repository at this point in the history
  • Loading branch information
newville committed Oct 28, 2017
1 parent 6f74eb2 commit b8dca0c
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 27 deletions.
12 changes: 8 additions & 4 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,15 @@ Installation instructions for asteval
========================================

To install the asteval module, use::
python setup.py install

python setup.py nstall
or
pip install asteval

This assumes that Python 2.7 or higher is installed.
In addition, numpy is highly recommended.
Asteval require Python 2.7 or Python 3.4 or higher.
If installed, many functions and constants from numpy
will be used by default.

Matt Newville <newville@cars.uchicago.edu>
Last Update: 10-April-2016
Last Update: 28-Oct-2017

53 changes: 30 additions & 23 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,46 +4,53 @@ ASTEVAL
.. image:: https://travis-ci.org/newville/asteval.png
:target: https://travis-ci.org/newville/asteval

.. image:: https://zenodo.org/badge/4185/newville/asteval.svg
:target: https://zenodo.org/badge/latestdoi/4185/newville/asteval

.. image:: https://codecov.io/gh/newville/asteval/branch/master/graph/badge.svg
:target: https://codecov.io/gh/newville/asteval

.. image:: https://zenodo.org/badge/4185/newville/asteval.svg
:target: https://zenodo.org/badge/latestdoi/4185/newville/asteval


Links
-----

* Documentation: http://newville.github.com/asteval
* PyPI: http://pypi.python.org/pypi/asteval
* Code: http://github.com/newville/asteval
* Issues: http://github.com/newville/asteval/issues
* PyPI installation: http://pypi.python.org/pypi/asteval
* Development Code: http://github.com/newville/asteval
* Issue Tracker: http://github.com/newville/asteval/issues

What is it?
-----------

ASTEVAL is a safe(ish) evaluator of Python expressions and statements,
using Python's ast module. The idea is to provide a simple, safe, and
robust miniature mathematical language that can handle user-input. The
emphasis here is on mathematical expressions, and so numpy functions are
imported and used if available.

While much of Python's constructs are supported, there are important
absences and differences, and this is by no means an attempt to reproduce
Python with its own ast module. Important differences and absences are:
emphasis here is on mathematical expressions, and so many functions from
``numpy`` are imported and used if available.

Many Python lanquage constructs are supported by default, These include
slicing, subscripting, list comprehension, conditionals (if-elif-else
blocks and if expressions), flow control (for loops, while loops, and
try-except-finally blocks). All data are python objects, and built-in data
structures (dictionaries, tuple, lists, numpy arrays, strings) are fully
supported by default.

Many of the standard builtin python functions are available, as are all
mathemetical functions from the math module. If the numpy module is
installed, many of its functions will also be available. Users can define
and run their own functions within the confines of the limitations of
asteval.

There are several absences and differences with Python, and asteval is by
no means an attempt to reproduce Python with its own ast module. Some of
the most important differences and absences are:

1. Variable and function symbol names are held in a simple symbol
table (a single dictionary), giving a flat namespace.
2. creating classes is not supported.
3. importing modules is not supported.
4. function decorators, yield, lambda, and exec are not supported.

Many built-in python syntactical components (if-then-else, while loops, for
loops, try-except blocks, list comprehension, slicing, subscripting), and
built-in data structures (dictionaries, tuple, lists, numpy arrays,
strings) are fully supported. In addition, many built-in functions are
supported, including the standard builtin python functions, and all
mathemetical functions from the math module. As mentioned above, if numpy
is available, many of its functions will also be available. Users can
define their own functions, but given the restrictions of not being able to
define classes or import modules, the language is decidedly limited.
4. function decorators, yield, lambda, exec, and eval are not supported.
5. files can only be opened in read-only mode.

In addition, accessing many internal methods and classes of objects is
forbidden in order to strengthen asteval against malicious user code.

0 comments on commit b8dca0c

Please sign in to comment.