diff --git a/Makefile b/Makefile index 221b012..fdab6c6 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,5 @@ -# This file has been auto-generated. -# All changes will be lost, see Projectfile. -# -# Updated at 2017-10-05 18:56:33.985014 +# This file has been auto-generated by Medikit. All changes will be lost. +# Updated on 2017-10-21. PACKAGE ?= bonobo PYTHON ?= $(shell which python) @@ -22,7 +20,7 @@ YAPF ?= $(PYTHON) -m yapf YAPF_OPTIONS ?= -rip VERSION ?= $(shell git describe 2>/dev/null || echo dev) -.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test +.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test update update-requirements # Installs the local project dependencies. install: @@ -40,6 +38,16 @@ install-dev: clean: rm -rf build dist *.egg-info +# Update project artifacts using medikit, after installing it eventually. +update: + python -c 'import medikit; print(medikit.__version__)' || pip install medikit; + $(PYTHON) -m medikit update + +# Remove requirements files and update project artifacts using medikit, after installing it eventually. +update-requirements: + rm -rf requirements*.txt + $(MAKE) update + test: install-dev $(PYTEST) $(PYTEST_OPTIONS) tests diff --git a/Projectfile b/Projectfile index 0973c1f..c812fc1 100644 --- a/Projectfile +++ b/Projectfile @@ -1,6 +1,6 @@ -# bonobo (see github.com/python-edgy/project) +# bonobo's description for medikit -from edgy.project import require +from medikit import require pytest = require('pytest') python = require('python') diff --git a/bonobo/_version.py b/bonobo/_version.py index 2b8877c..93b60a1 100644 --- a/bonobo/_version.py +++ b/bonobo/_version.py @@ -1 +1 @@ -__version__ = '0.5.0' +__version__ = '0.5.1' diff --git a/bonobo/commands/run.py b/bonobo/commands/run.py index a37282c..0a11577 100644 --- a/bonobo/commands/run.py +++ b/bonobo/commands/run.py @@ -3,7 +3,10 @@ import os import bonobo from bonobo.constants import DEFAULT_SERVICES_ATTR, DEFAULT_SERVICES_FILENAME -DEFAULT_GRAPH_FILENAMES = ('__main__.py', 'main.py', ) +DEFAULT_GRAPH_FILENAMES = ( + '__main__.py', + 'main.py', +) DEFAULT_GRAPH_ATTR = 'get_graph' diff --git a/bonobo/config/configurables.py b/bonobo/config/configurables.py index 1b0201f..85ecdde 100644 --- a/bonobo/config/configurables.py +++ b/bonobo/config/configurables.py @@ -50,7 +50,10 @@ class ConfigurableMeta(type): return (processor for _, processor in cls.__processors) def __repr__(self): - return ' '.join((' ', ' '.join('{}{}{}: {}'.format(Style.BRIGHT, k, Style.RESET_ALL, v) - for k, v in append), CLEAR_EOL + ' `-> ', ' '.join('{}{}{}: {}'.format(Style.BRIGHT, k, Style.RESET_ALL, v) for k, v in append), + CLEAR_EOL ) ), file=sys.stderr diff --git a/bonobo/nodes/io/csv.py b/bonobo/nodes/io/csv.py index c504c16..220830f 100644 --- a/bonobo/nodes/io/csv.py +++ b/bonobo/nodes/io/csv.py @@ -62,7 +62,10 @@ class CsvReader(FileReader, CsvHandler): for row in reader: if len(row) != field_count: - raise ValueError('Got a line with %d fields, expecting %d.' % (len(row), field_count, )) + raise ValueError('Got a line with %d fields, expecting %d.' % ( + len(row), + field_count, + )) yield dict(zip(_headers, row)) diff --git a/bonobo/nodes/io/pickle.py b/bonobo/nodes/io/pickle.py index 216c21b..3bb95d6 100644 --- a/bonobo/nodes/io/pickle.py +++ b/bonobo/nodes/io/pickle.py @@ -53,7 +53,10 @@ class PickleReader(FileReader, PickleHandler): for i in iterator: if len(i) != item_count: - raise ValueError('Received an object with %d items, expecting %d.' % (len(i), item_count, )) + raise ValueError('Received an object with %d items, expecting %d.' % ( + len(i), + item_count, + )) yield dict(zip(i)) if is_dict else dict(zip(pickle_headers.value, i)) diff --git a/bonobo/structs/bags.py b/bonobo/structs/bags.py index 31bc870..20db9fa 100644 --- a/bonobo/structs/bags.py +++ b/bonobo/structs/bags.py @@ -45,7 +45,10 @@ class Bag: def args(self): if self._parent is None: return self._args - return (*self._parent.args, *self._args, ) + return ( + *self._parent.args, + *self._args, + ) @property def kwargs(self): @@ -122,11 +125,12 @@ class Bag: def __repr__(self): return '<{} ({})>'.format( - type(self).__name__, ', '. - join(itertools.chain( - map(repr, self.args), - ('{}={}'.format(k, repr(v)) for k, v in self.kwargs.items()), - )) + type(self).__name__, ', '.join( + itertools.chain( + map(repr, self.args), + ('{}={}'.format(k, repr(v)) for k, v in self.kwargs.items()), + ) + ) ) diff --git a/bonobo/util/iterators.py b/bonobo/util/iterators.py index 04c81a5..ee45614 100644 --- a/bonobo/util/iterators.py +++ b/bonobo/util/iterators.py @@ -38,6 +38,11 @@ def tuplize(generator): def iter_if_not_sequence(mixed): - if isinstance(mixed, (dict, list, str, bytes, )): + if isinstance(mixed, ( + dict, + list, + str, + bytes, + )): raise TypeError(type(mixed).__name__) return iter(mixed) diff --git a/docs/conf.py b/docs/conf.py index 52fb506..afbbe83 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -76,6 +76,7 @@ html_theme_options = { 'github_user': 'python-bonobo', 'github_repo': 'bonobo', 'github_button': 'true', + 'github_banner': 'true', 'show_powered_by': 'false', 'show_related': 'true', } diff --git a/docs/tutorial/index.rst b/docs/tutorial/index.rst index 3296afb..4ba99c2 100644 --- a/docs/tutorial/index.rst +++ b/docs/tutorial/index.rst @@ -5,7 +5,7 @@ What is Bonobo? ::::::::::::::: Bonobo is an ETL (Extract-Transform-Load) framework for python 3.5. The goal is to define data-transformations, with -python code in charge of handling similar shaped independant lines of data. +python code in charge of handling similar shaped independent lines of data. Bonobo *is not* a statistical or data-science tool. If you're looking for a data-analysis tool in python, use Pandas. @@ -21,13 +21,13 @@ Tutorial Good documentation is not easy to write. We do our best to make it better and better. - Although all content here should be accurate, you may feel a lack of completeness, for which we plaid guilty and + Although all content here should be accurate, you may feel a lack of completeness, for which we plead guilty and apologize. If you're stuck, please come and ask on our `slack channel `_, we'll figure something out. - If you're not stuck but had trouble understanding something, please consider contributing to the docs (via github + If you're not stuck but had trouble understanding something, please consider contributing to the docs (via GitHub pull requests). .. toctree:: diff --git a/requirements-docker.txt b/requirements-docker.txt index 976b56d..9e68208 100644 --- a/requirements-docker.txt +++ b/requirements-docker.txt @@ -1,16 +1,16 @@ -e .[docker] appdirs==1.4.3 -bonobo-docker==0.2.11 +bonobo-docker==0.2.12 certifi==2017.7.27.1 chardet==3.0.4 colorama==0.3.9 docker-pycreds==0.2.1 docker==2.3.0 -fs==2.0.11 +fs==2.0.12 idna==2.6 packaging==16.8 pbr==3.1.1 -psutil==5.3.1 +psutil==5.4.0 pyparsing==2.2.0 pytz==2017.2 requests==2.18.4 diff --git a/requirements-jupyter.txt b/requirements-jupyter.txt index e1b0ba7..2ad75ab 100644 --- a/requirements-jupyter.txt +++ b/requirements-jupyter.txt @@ -19,7 +19,7 @@ markupsafe==1.0 mistune==0.7.4 nbconvert==5.3.1 nbformat==4.4.0 -notebook==5.1.0 +notebook==5.2.0 pandocfilters==1.4.2 parso==0.1.0 pexpect==4.2.1 diff --git a/requirements.txt b/requirements.txt index d6439df..13d5113 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,11 +3,11 @@ appdirs==1.4.3 certifi==2017.7.27.1 chardet==3.0.4 colorama==0.3.9 -fs==2.0.11 +fs==2.0.12 idna==2.6 packaging==16.8 pbr==3.1.1 -psutil==5.3.1 +psutil==5.4.0 pyparsing==2.2.0 pytz==2017.2 requests==2.18.4 diff --git a/setup.py b/setup.py index be97d0c..7b513dc 100644 --- a/setup.py +++ b/setup.py @@ -1,4 +1,4 @@ -# This file is autogenerated by edgy.project code generator. +# This file is autogenerated by medikit code generator. # All changes will be overwritten. from setuptools import setup, find_packages diff --git a/tests/config/test_methods.py b/tests/config/test_methods.py index 9471a79..b0154fb 100644 --- a/tests/config/test_methods.py +++ b/tests/config/test_methods.py @@ -50,7 +50,10 @@ def test_define_with_decorator(): calls = [] def my_handler(*args, **kwargs): - calls.append((args, kwargs, )) + calls.append(( + args, + kwargs, + )) Concrete = MethodBasedConfigurable(my_handler) @@ -74,7 +77,10 @@ def test_late_binding_method_decoration(): @MethodBasedConfigurable(foo='foo') def Concrete(*args, **kwargs): - calls.append((args, kwargs, )) + calls.append(( + args, + kwargs, + )) assert callable(Concrete.handler) t = Concrete(bar='baz') @@ -89,7 +95,10 @@ def test_define_with_argument(): calls = [] def concrete_handler(*args, **kwargs): - calls.append((args, kwargs, )) + calls.append(( + args, + kwargs, + )) t = MethodBasedConfigurable(concrete_handler, 'foo', bar='baz') assert callable(t.handler) @@ -103,7 +112,10 @@ def test_define_with_inheritance(): class Inheriting(MethodBasedConfigurable): def handler(self, *args, **kwargs): - calls.append((args, kwargs, )) + calls.append(( + args, + kwargs, + )) t = Inheriting('foo', bar='baz') assert callable(t.handler) @@ -120,7 +132,10 @@ def test_inheritance_then_decorate(): @Inheriting def Concrete(*args, **kwargs): - calls.append((args, kwargs, )) + calls.append(( + args, + kwargs, + )) assert callable(Concrete.handler) t = Concrete('foo', bar='baz') diff --git a/tests/config/test_methods_partial.py b/tests/config/test_methods_partial.py index 6b44a0e..e2a1a65 100644 --- a/tests/config/test_methods_partial.py +++ b/tests/config/test_methods_partial.py @@ -53,7 +53,10 @@ def test_partial(): assert len(ci.options) == 4 assert len(ci.processors) == 1 assert ci.partial - assert ci.partial[0] == (f1, f2, ) + assert ci.partial[0] == ( + f1, + f2, + ) assert not len(ci.partial[1]) c = C('foo') diff --git a/tests/config/test_services.py b/tests/config/test_services.py index b12ae78..469b0c1 100644 --- a/tests/config/test_services.py +++ b/tests/config/test_services.py @@ -28,9 +28,7 @@ SERVICES = Container( class MyServiceDependantConfigurable(Configurable): - printer = Service( - PrinterInterface, - ) + printer = Service(PrinterInterface, ) def __call__(self, printer: PrinterInterface, *args): return printer.print(*args) diff --git a/tests/io/test_csv.py b/tests/io/test_csv.py index fc189ac..1de6f89 100644 --- a/tests/io/test_csv.py +++ b/tests/io/test_csv.py @@ -18,9 +18,12 @@ def test_write_csv_ioformat_arg0(tmpdir): CsvReader(path=filename, delimiter=',', ioformat=settings.IOFORMAT_ARG0), -@pytest.mark.parametrize('add_kwargs', ({}, { - 'ioformat': settings.IOFORMAT_KWARGS, -}, )) +@pytest.mark.parametrize('add_kwargs', ( + {}, + { + 'ioformat': settings.IOFORMAT_KWARGS, + }, +)) def test_write_csv_to_file_kwargs(tmpdir, add_kwargs): fs, filename, services = csv_tester.get_services_for_writer(tmpdir) diff --git a/tests/io/test_json.py b/tests/io/test_json.py index 66c7f94..bbeb17f 100644 --- a/tests/io/test_json.py +++ b/tests/io/test_json.py @@ -19,9 +19,12 @@ def test_write_json_ioformat_arg0(tmpdir): JsonReader(filename, ioformat=settings.IOFORMAT_ARG0), -@pytest.mark.parametrize('add_kwargs', ({}, { - 'ioformat': settings.IOFORMAT_KWARGS, -}, )) +@pytest.mark.parametrize('add_kwargs', ( + {}, + { + 'ioformat': settings.IOFORMAT_KWARGS, + }, +)) def test_write_json_kwargs(tmpdir, add_kwargs): fs, filename, services = json_tester.get_services_for_writer(tmpdir) diff --git a/tests/structs/test_bags.py b/tests/structs/test_bags.py index df9cc3c..d52a6c6 100644 --- a/tests/structs/test_bags.py +++ b/tests/structs/test_bags.py @@ -5,7 +5,10 @@ from bonobo import Bag from bonobo.constants import INHERIT_INPUT from bonobo.structs import Token -args = ('foo', 'bar', ) +args = ( + 'foo', + 'bar', +) kwargs = dict(acme='corp') @@ -38,11 +41,17 @@ def test_inherit(): assert bag.kwargs == {'a': 1} assert bag.flags is () - assert bag2.args == ('a', 'b', ) + assert bag2.args == ( + 'a', + 'b', + ) assert bag2.kwargs == {'a': 1, 'b': 2} assert INHERIT_INPUT in bag2.flags - assert bag3.args == ('a', 'c', ) + assert bag3.args == ( + 'a', + 'c', + ) assert bag3.kwargs == {'a': 1, 'c': 3} assert bag3.flags is () @@ -51,12 +60,19 @@ def test_inherit(): assert bag4.flags is () bag4.set_parent(bag) - assert bag4.args == ('a', 'd', ) + assert bag4.args == ( + 'a', + 'd', + ) assert bag4.kwargs == {'a': 1, 'd': 4} assert bag4.flags is () bag4.set_parent(bag3) - assert bag4.args == ('a', 'c', 'd', ) + assert bag4.args == ( + 'a', + 'c', + 'd', + ) assert bag4.kwargs == {'a': 1, 'c': 3, 'd': 4} assert bag4.flags is () diff --git a/tests/util/test_statistics.py b/tests/util/test_statistics.py index bb787eb..9eae0c0 100644 --- a/tests/util/test_statistics.py +++ b/tests/util/test_statistics.py @@ -3,7 +3,10 @@ from bonobo.util.statistics import WithStatistics class MyThingWithStats(WithStatistics): def get_statistics(self, *args, **kwargs): - return (('foo', 42), ('bar', 69), ) + return ( + ('foo', 42), + ('bar', 69), + ) def test_with_statistics():