diff --git a/Makefile b/Makefile index 594b4de..0cb2978 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,8 @@ -# Generated by Medikit 0.6.3 on 2018-08-11. +# Generated by Medikit 0.7.1 on 2019-05-08. # All changes will be overriden. # Edit Projectfile and run “make update” (or “medikit update”) to regenerate. + PACKAGE ?= bonobo PYTHON ?= $(shell which python || echo python) PYTHON_BASENAME ?= $(shell basename $(PYTHON)) @@ -29,7 +30,7 @@ SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build SPHINX_AUTOBUILD ?= $(PYTHON_DIRNAME)/sphinx-autobuild MEDIKIT ?= $(PYTHON) -m medikit MEDIKIT_UPDATE_OPTIONS ?= -MEDIKIT_VERSION ?= 0.6.3 +MEDIKIT_VERSION ?= 0.7.1 .PHONY: $(SPHINX_SOURCEDIR) clean format help install install-dev install-docker install-jupyter install-sqlalchemy medikit quick test update update-requirements watch-$(SPHINX_SOURCEDIR) @@ -135,5 +136,5 @@ update-requirements: ## Update project artifacts using medikit, including requ help: ## Shows available commands. @echo "Available commands:" @echo - @grep -E '^[a-zA-Z_-]+:.*?##[\s]?.*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?##"}; {printf " make \033[36m%-30s\033[0m %s\n", $$1, $$2}' + @grep -E '^[a-zA-Z_-]+:.*?##[\s]?.*$$' --no-filename $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?##"}; {printf " make \033[36m%-30s\033[0m %s\n", $$1, $$2}' @echo diff --git a/bonobo/nodes/basics.py b/bonobo/nodes/basics.py index b0663c2..6dedf62 100644 --- a/bonobo/nodes/basics.py +++ b/bonobo/nodes/basics.py @@ -330,6 +330,7 @@ def MapFields(function, key=True): :param key: bool or callable :return: callable """ + @use_raw_input def _MapFields(bag): try: @@ -342,12 +343,10 @@ def MapFields(function, key=True): fields = bag._fields except AttributeError as e: raise UnrecoverableAttributeError( - 'This transformation works only on objects with named' - ' fields (namedtuple, BagType, ...).') from e + "This transformation works only on objects with named" " fields (namedtuple, BagType, ...)." + ) from e - return factory( - function(value) if key(key_) else value for key_, value in zip(fields, bag) - ) + return factory(function(value) if key(key_) else value for key_, value in zip(fields, bag)) elif key: return factory(function(value) for value in bag) else: diff --git a/requirements-dev.txt b/requirements-dev.txt index 7b03457..eb8e9c5 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,40 +1,41 @@ -e .[dev] -r requirements.txt -alabaster==0.7.11 -arrow==0.12.1 -atomicwrites==1.1.5 -attrs==18.1.0 +alabaster==0.7.12 +arrow==0.13.1 +atomicwrites==1.3.0 +attrs==19.1.0 babel==2.6.0 binaryornot==0.4.4 -certifi==2018.4.16 +certifi==2019.3.9 chardet==3.0.4 -click==6.7 +click==7.0 cookiecutter==1.5.1 -coverage==4.5.1 +coverage==4.5.3 docutils==0.14 -future==0.16.0 -idna==2.7 -imagesize==1.0.0 +future==0.17.1 +idna==2.8 +imagesize==1.1.0 jinja2-time==0.2.0 -jinja2==2.10 -markupsafe==1.0 -more-itertools==4.3.0 -packaging==17.1 -pluggy==0.7.1 -poyo==0.4.1 -py==1.5.4 -pygments==2.2.0 -pyparsing==2.2.0 -pytest-cov==2.5.1 -pytest-timeout==1.3.1 -pytest==3.7.1 -python-dateutil==2.7.3 -pytz==2018.5 -requests==2.19.1 -six==1.11.0 +jinja2==2.10.1 +markupsafe==1.1.1 +more-itertools==7.0.0 +packaging==19.0 +pathlib2==2.3.3 +pluggy==0.11.0 +poyo==0.4.2 +py==1.8.0 +pygments==2.3.1 +pyparsing==2.4.0 +pytest-cov==2.7.1 +pytest-timeout==1.3.3 +pytest==3.10.1 +python-dateutil==2.8.0 +pytz==2019.1 +requests==2.21.0 +six==1.12.0 snowballstemmer==1.2.1 sphinx-sitemap==0.2 -sphinx==1.7.6 +sphinx==1.8.5 sphinxcontrib-websupport==1.1.0 -urllib3==1.23 -whichcraft==0.4.1 +urllib3==1.24.3 +whichcraft==0.5.2 diff --git a/requirements-docker.txt b/requirements-docker.txt index b5da1e0..b29ec7f 100644 --- a/requirements-docker.txt +++ b/requirements-docker.txt @@ -2,28 +2,30 @@ -r requirements.txt appdirs==1.4.3 bonobo-docker==0.6.0 -certifi==2018.4.16 +cached-property==1.5.1 +certifi==2019.3.9 chardet==3.0.4 colorama==0.3.9 -docker-pycreds==0.3.0 +docker-pycreds==0.4.0 docker==2.7.0 -fs==2.0.27 +fs==2.4.5 graphviz==0.8.4 -idna==2.7 -jinja2==2.10 -markupsafe==1.0 +idna==2.8 +jinja2==2.10.1 +markupsafe==1.1.1 mondrian==0.8.0 packaging==17.1 -pbr==4.2.0 -psutil==5.4.6 -pyparsing==2.2.0 -python-slugify==1.2.5 -pytz==2018.5 -requests==2.19.1 +pbr==5.2.0 +psutil==5.6.2 +pyparsing==2.4.0 +python-slugify==1.2.6 +pytz==2019.1 +requests==2.21.0 semantic-version==2.6.0 -six==1.11.0 -stevedore==1.29.0 -unidecode==1.0.22 -urllib3==1.23 -websocket-client==0.48.0 +six==1.12.0 +stevedore==1.30.1 +typing==3.6.6 +unidecode==1.0.23 +urllib3==1.24.3 +websocket-client==0.56.0 whistle==1.0.1 diff --git a/requirements-jupyter.txt b/requirements-jupyter.txt index f96b3b6..59cf1bd 100644 --- a/requirements-jupyter.txt +++ b/requirements-jupyter.txt @@ -1,44 +1,45 @@ -e .[jupyter] -r requirements.txt appnope==0.1.0 +attrs==19.1.0 backcall==0.1.0 -bleach==2.1.3 -decorator==4.3.0 -entrypoints==0.2.3 -html5lib==1.0.1 -ipykernel==4.8.2 +bleach==3.1.0 +decorator==4.4.0 +defusedxml==0.6.0 +entrypoints==0.3 +ipykernel==5.1.0 ipython-genutils==0.2.0 -ipython==6.5.0 +ipython==7.5.0 ipywidgets==6.0.1 -jedi==0.12.1 -jinja2==2.10 -jsonschema==2.6.0 -jupyter-client==5.2.3 -jupyter-console==5.2.0 +jedi==0.13.3 +jinja2==2.10.1 +jsonschema==3.0.1 +jupyter-client==5.2.4 +jupyter-console==6.0.0 jupyter-core==4.4.0 jupyter==1.0.0 -markupsafe==1.0 -mistune==0.8.3 -nbconvert==5.3.1 +markupsafe==1.1.1 +mistune==0.8.4 +nbconvert==5.5.0 nbformat==4.4.0 -notebook==5.6.0 +notebook==5.7.8 pandocfilters==1.4.2 -parso==0.3.1 -pexpect==4.6.0 -pickleshare==0.7.4 -prometheus-client==0.3.1 -prompt-toolkit==1.0.15 +parso==0.4.0 +pexpect==4.7.0 +pickleshare==0.7.5 +prometheus-client==0.6.0 +prompt-toolkit==2.0.9 ptyprocess==0.6.0 -pygments==2.2.0 -python-dateutil==2.7.3 -pyzmq==17.1.2 -qtconsole==4.3.1 +pygments==2.3.1 +pyrsistent==0.15.1 +python-dateutil==2.8.0 +pyzmq==18.0.1 +qtconsole==4.4.4 send2trash==1.5.0 -simplegeneric==0.8.1 -six==1.11.0 -terminado==0.8.1 -testpath==0.3.1 -tornado==5.1 +six==1.12.0 +terminado==0.8.2 +testpath==0.4.2 +tornado==6.0.2 traitlets==4.3.2 wcwidth==0.1.7 webencodings==0.5.1 diff --git a/requirements-sqlalchemy.txt b/requirements-sqlalchemy.txt index 389f976..d297067 100644 --- a/requirements-sqlalchemy.txt +++ b/requirements-sqlalchemy.txt @@ -2,25 +2,27 @@ -r requirements.txt appdirs==1.4.3 bonobo-sqlalchemy==0.6.0 -certifi==2018.4.16 +cached-property==1.5.1 +certifi==2019.3.9 chardet==3.0.4 colorama==0.3.9 -fs==2.0.27 +fs==2.4.5 graphviz==0.8.4 -idna==2.7 -jinja2==2.10 -markupsafe==1.0 +idna==2.8 +jinja2==2.10.1 +markupsafe==1.1.1 mondrian==0.8.0 packaging==17.1 -pbr==4.2.0 -psutil==5.4.6 -pyparsing==2.2.0 -python-slugify==1.2.5 -pytz==2018.5 -requests==2.19.1 -six==1.11.0 -sqlalchemy==1.2.10 -stevedore==1.29.0 -unidecode==1.0.22 -urllib3==1.23 +pbr==5.2.0 +psutil==5.6.2 +pyparsing==2.4.0 +python-slugify==1.2.6 +pytz==2019.1 +requests==2.21.0 +six==1.12.0 +sqlalchemy==1.3.3 +stevedore==1.30.1 +typing==3.6.6 +unidecode==1.0.23 +urllib3==1.24.3 whistle==1.0.1 diff --git a/requirements.txt b/requirements.txt index 51127fd..d4c6c9f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,24 +1,25 @@ -e . appdirs==1.4.3 -cached-property==1.4.3 -certifi==2018.4.16 +cached-property==1.5.1 +certifi==2019.3.9 chardet==3.0.4 colorama==0.3.9 -fs==2.0.27 +fs==2.4.5 graphviz==0.8.4 -idna==2.7 -jinja2==2.10 -markupsafe==1.0 +idna==2.8 +jinja2==2.10.1 +markupsafe==1.1.1 mondrian==0.8.0 packaging==17.1 -pbr==4.2.0 -psutil==5.4.6 -pyparsing==2.2.0 -python-slugify==1.2.5 -pytz==2018.5 -requests==2.19.1 -six==1.11.0 -stevedore==1.29.0 -unidecode==1.0.22 -urllib3==1.23 +pbr==5.2.0 +psutil==5.6.2 +pyparsing==2.4.0 +python-slugify==1.2.6 +pytz==2019.1 +requests==2.21.0 +six==1.12.0 +stevedore==1.30.1 +typing==3.6.6 +unidecode==1.0.23 +urllib3==1.24.3 whistle==1.0.1 diff --git a/setup.py b/setup.py index 18b166a..a91d362 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -# Generated by Medikit 0.6.3 on 2018-08-11. +# Generated by Medikit 0.7.1 on 2019-05-08. # All changes will be overriden. # Edit Projectfile and run “make update” (or “medikit update”) to regenerate. diff --git a/tests/nodes/io/test_csv.py b/tests/nodes/io/test_csv.py index 7ed8476..131c88e 100644 --- a/tests/nodes/io/test_csv.py +++ b/tests/nodes/io/test_csv.py @@ -117,4 +117,4 @@ class CsvWriterTest(Csv, WriterTest, TestCase): context.write_sync(EMPTY, EMPTY, EMPTY) context.stop() - assert self.readlines() == ('', '', '') + assert self.readlines() == ("", "", "") diff --git a/tests/nodes/test_basics.py b/tests/nodes/test_basics.py index 9decb8e..7cbdcb4 100644 --- a/tests/nodes/test_basics.py +++ b/tests/nodes/test_basics.py @@ -119,23 +119,26 @@ def test_methodcaller(): MyBag = BagType("MyBag", ["a", "b", "c"]) -@pytest.mark.parametrize("input_, key, expected", [ - (MyBag(1, 2, 3), True, MyBag(1, 4, 9)), - (MyBag(1, 2, 3), False, MyBag(1, 2, 3)), - (MyBag(1, 2, 3), lambda x: x == 'c', MyBag(1, 2, 9)), - ((1, 2, 3), True, (1, 4, 9)), - ((1, 2, 3), False, (1, 2, 3)), -]) +@pytest.mark.parametrize( + "input_, key, expected", + [ + (MyBag(1, 2, 3), True, MyBag(1, 4, 9)), + (MyBag(1, 2, 3), False, MyBag(1, 2, 3)), + (MyBag(1, 2, 3), lambda x: x == "c", MyBag(1, 2, 9)), + ((1, 2, 3), True, (1, 4, 9)), + ((1, 2, 3), False, (1, 2, 3)), + ], +) def test_map_fields(input_, key, expected): - with BufferingNodeExecutionContext(bonobo.MapFields(lambda x: x**2, key)) as context: + with BufferingNodeExecutionContext(bonobo.MapFields(lambda x: x ** 2, key)) as context: context.write_sync(input_) - assert context.status == '-' + assert context.status == "-" [got] = context.get_buffer() assert expected == got def test_map_fields_error(): - with BufferingNodeExecutionContext(bonobo.MapFields(lambda x: x**2, lambda x: x == 'c')) as context: + with BufferingNodeExecutionContext(bonobo.MapFields(lambda x: x ** 2, lambda x: x == "c")) as context: context.write_sync(tuple()) - assert context.status == '!' + assert context.status == "!" assert context.defunct diff --git a/tests/util/test_collections.py b/tests/util/test_collections.py index 127752a..8492e7e 100644 --- a/tests/util/test_collections.py +++ b/tests/util/test_collections.py @@ -1,7 +1,7 @@ import pytest from bonobo.util import ensure_tuple, sortedlist -from bonobo.util.collections import cast, tuplize, tuple_or_const +from bonobo.util.collections import cast, tuple_or_const, tuplize def test_sortedlist(): @@ -15,10 +15,11 @@ def test_sortedlist(): def test_tuple_or_const(): assert tuple_or_const(()) == () - assert tuple_or_const((1, )) == (1, ) - assert tuple_or_const((1, 2, )) == (1, 2, ) - assert tuple_or_const([1, 2, ]) == (1, 2, ) - assert tuple_or_const("aaa") == ('aaa', ) + assert tuple_or_const((1,)) == (1,) + assert tuple_or_const((1, 2)) == (1, 2) + assert tuple_or_const([1, 2]) == (1, 2) + assert tuple_or_const("aaa") == ("aaa",) + def test_ensure_tuple(): assert ensure_tuple("a") == ("a",)