[python-snuggs] 01/06: Imported Upstream version 1.4.0
Bas Couwenberg
sebastic at debian.org
Wed Jul 13 11:18:48 UTC 2016
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch master
in repository python-snuggs.
commit f8c30a1da9a96c292b02f653bae9b27ff4e58c84
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Wed Jul 13 12:46:04 2016 +0200
Imported Upstream version 1.4.0
---
CHANGES.txt | 5 +++++
setup.py | 18 +++++++++---------
snuggs/__init__.py | 14 +++++++-------
test_snuggs.py | 22 +++++++++++++++++++---
4 files changed, 40 insertions(+), 19 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 8cd9018..d962261 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,11 @@
Changes
=======
+1.4.0 (2016-07-12)
+------------------
+- New feature: mathematical operators like + and * can take multiple arguments
+ as in Hy and other Lisps (#7).
+
1.3.1 (2015-04-03)
------------------
- Revert to operator functions in op_map (#4).
diff --git a/setup.py b/setup.py
index dbb588a..21e75fd 100644
--- a/setup.py
+++ b/setup.py
@@ -6,9 +6,15 @@ from setuptools import setup, find_packages
with codecs_open('README.rst', encoding='utf-8') as f:
long_description = f.read()
+with open('snuggs/__init__.py') as f:
+ for line in f:
+ if line.startswith('__version__'):
+ version = line.split('=')[1]
+ version = version.strip().strip('"')
+ break
setup(name='snuggs',
- version='1.3.1',
+ version=version,
description=u"Snuggs are s-expressions for Numpy",
long_description=long_description,
classifiers=[],
@@ -20,11 +26,5 @@ setup(name='snuggs',
packages=find_packages(exclude=['ez_setup', 'examples', 'tests']),
include_package_data=True,
zip_safe=False,
- install_requires=[
- 'click',
- 'numpy',
- 'pyparsing'
- ],
- extras_require={
- 'test': ['pytest'],
- })
+ install_requires=['click', 'numpy', 'pyparsing'],
+ extras_require={'test': ['pytest']})
diff --git a/snuggs/__init__.py b/snuggs/__init__.py
index e91cf98..86ff1aa 100644
--- a/snuggs/__init__.py
+++ b/snuggs/__init__.py
@@ -17,7 +17,7 @@ import numpy
__all__ = ['eval']
-__version__ = "1.3.1"
+__version__ = "1.4.0"
# Python 2-3 compatibility
string_types = (str,) if sys.version_info[0] >= 3 else (basestring,)
@@ -69,18 +69,18 @@ class ExpressionError(SyntaxError):
lineno = 1
op_map = {
- '*': operator.mul,
- '+': operator.add,
- '/': operator.truediv,
- '-': operator.sub,
+ '*': lambda *args: functools.reduce(lambda x, y: operator.mul(x, y), args),
+ '+': lambda *args: functools.reduce(lambda x, y: operator.add(x, y), args),
+ '/': lambda *args: functools.reduce(lambda x, y: operator.truediv(x, y), args),
+ '-': lambda *args: functools.reduce(lambda x, y: operator.sub(x, y), args),
+ '&': lambda *args: functools.reduce(lambda x, y: operator.and_(x, y), args),
+ '|': lambda *args: functools.reduce(lambda x, y: operator.or_(x, y), args),
'<': operator.lt,
'<=': operator.le,
'==': operator.eq,
'!=': operator.ne,
'>=': operator.ge,
'>': operator.gt,
- '&': operator.and_,
- '|': operator.or_,
}
def asarray(*args):
diff --git a/test_snuggs.py b/test_snuggs.py
index ca5d074..bb148fa 100644
--- a/test_snuggs.py
+++ b/test_snuggs.py
@@ -18,6 +18,10 @@ def test_int_expr():
assert snuggs.eval('(+ 1 2)') == 3
+def test_int_mult_expr():
+ assert snuggs.eval('(+ 1 2 3)') == 6
+
+
def test_real_expr():
assert round(snuggs.eval('(* 0.1 0.2)'), 3) == 0.02
@@ -130,6 +134,12 @@ def test_map_asarray():
assert list(result) == [2, 4, 6]
+def test_multi_operator_array(ones):
+ result = snuggs.eval(
+ '(+ ones (/ ones 1 0.5) (* ones 1 3))', ones=ones)
+ assert list(result.flatten()) == [6.0] * 4
+
+
def test_nil():
assert snuggs.eval('(== nil nil)')
assert not snuggs.eval('(== 1 nil)')
@@ -151,7 +161,9 @@ def test_missing_closing_paren():
result = snuggs.eval("(+ 1 2")
assert excinfo.value.lineno == 1
assert excinfo.value.offset == 7
- assert str(excinfo.value) == 'Expected ")"'
+ exception_options = ['expected a function or operator',
+ 'Expected {Forward: ... | Forward: ...}']
+ assert str(excinfo.value) in exception_options
def test_missing_func():
@@ -167,7 +179,9 @@ def test_missing_func2():
result = snuggs.eval("(# 1 2)")
assert excinfo.value.lineno == 1
assert excinfo.value.offset == 2
- assert str(excinfo.value) == "expected a function or operator"
+ exception_options = ['expected a function or operator',
+ 'Expected {Forward: ... | Forward: ...}']
+ assert str(excinfo.value) in exception_options
def test_undefined_var():
@@ -183,7 +197,9 @@ def test_bogus_higher_order_func():
result = snuggs.eval("((bogus * 2) 2)")
assert excinfo.value.lineno == 1
assert excinfo.value.offset == 3
- assert str(excinfo.value) == "expected a function or operator"
+ exception_options = ['expected a function or operator',
+ 'Expected {Forward: ... | Forward: ...}']
+ assert str(excinfo.value) in exception_options
def test_type_error():
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/python-snuggs.git
More information about the Pkg-grass-devel
mailing list