From 5013708c85f4dca864d57631356cd05611ba9e47 Mon Sep 17 00:00:00 2001 From: Romain Dorgueil Date: Sun, 28 May 2017 12:04:49 +0200 Subject: [PATCH 1/3] [misc] updating dependencies. --- Makefile | 8 ++-- Projectfile | 97 ++++++++++++++++------------------------ requirements-dev.txt | 25 +++++------ requirements-jupyter.txt | 5 +-- requirements.txt | 9 ++-- setup.py | 41 +++++++++-------- 6 files changed, 80 insertions(+), 105 deletions(-) diff --git a/Makefile b/Makefile index 6db0f7c..75e5700 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # This file has been auto-generated. # All changes will be lost, see Projectfile. # -# Updated at 2017-05-03 18:02:59.359160 +# Updated at 2017-05-28 12:03:49.427061 PACKAGE ?= bonobo PYTHON ?= $(shell which python) @@ -20,8 +20,9 @@ SPHINX_SOURCEDIR ?= docs SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build YAPF ?= $(PYTHON_DIRNAME)/yapf YAPF_OPTIONS ?= -rip +VERSION ?= $(shell git describe 2>/dev/null || echo dev) -.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev lint test +.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev test # Installs the local project dependencies. install: @@ -39,9 +40,6 @@ install-dev: clean: rm -rf build dist *.egg-info -lint: install-dev - $(PYTHON_DIRNAME)/pylint --py3k $(PACKAGE) -f html > pylint.html - test: install-dev $(PYTEST) $(PYTEST_OPTIONS) tests diff --git a/Projectfile b/Projectfile index 47844ee..a04e297 100644 --- a/Projectfile +++ b/Projectfile @@ -1,73 +1,52 @@ # bonobo (see github.com/python-edgy/project) -name = 'bonobo' -description = 'Bonobo, a simple, modern and atomic extract-transform-load toolkit for python 3.5+.' -license = 'Apache License, Version 2.0' +from edgy.project import require -url = 'https://www.bonobo-project.org/' -download_url = 'https://github.com/python-bonobo/bonobo/tarball/{version}' +pytest = require('pytest') +python = require('python') +sphinx = require('sphinx') +yapf = require('yapf') -author = 'Romain Dorgueil' -author_email = 'romain@dorgueil.net' +python.setup( + name='bonobo', + description='Bonobo, a simple, modern and atomic extract-transform-load toolkit for python 3.5+.', + license='Apache License, Version 2.0', + url='https://www.bonobo-project.org/', + download_url='https://github.com/python-bonobo/bonobo/tarball/{version}', + author='Romain Dorgueil', + author_email='romain@dorgueil.net', + data_files=[ + ('share/jupyter/nbextensions/bonobo-jupyter', [ + 'bonobo/ext/jupyter/static/extension.js', + 'bonobo/ext/jupyter/static/index.js', + 'bonobo/ext/jupyter/static/index.js.map', + ]), + ], -enable_features = { - 'make', - 'sphinx', - 'pytest', - 'git', - 'pylint', - 'python', - 'yapf', -} + entry_points={ + 'console_scripts': [ + 'bonobo = bonobo.commands:entrypoint', + ], + 'bonobo.commands': [ + 'init = bonobo.commands.init:register', + 'run = bonobo.commands.run:register', + 'version = bonobo.commands.version:register', + ], + } -# stricts deendencies in requirements.txt -install_requires = [ +) + +python.add_requirements( 'colorama >=0.3,<1.0', 'fs >=2.0,<3.0', 'psutil >=5.2,<6.0', 'requests >=2.0,<3.0', 'stevedore >=1.21,<2.0', -] - -extras_require = { - 'jupyter': [ - 'jupyter >=1.0,<1.1', - 'ipywidgets >=6.0.0.beta5' - ], - 'dev': [ - 'coverage >=4,<5', - 'pylint >=1,<2', - 'pytest >=3,<4', - 'pytest-cov >=2,<3', + dev=[ 'pytest-timeout >=1,<2', - 'sphinx', - 'sphinx_rtd_theme', - 'yapf', ], -} - -data_files = [ - ('share/jupyter/nbextensions/bonobo-jupyter', [ - 'bonobo/ext/jupyter/static/extension.js', - 'bonobo/ext/jupyter/static/index.js', - 'bonobo/ext/jupyter/static/index.js.map', - ]), -] - -entry_points = { - 'console_scripts': [ - 'bonobo = bonobo.commands:entrypoint', - ], - 'bonobo.commands': [ - 'init = bonobo.commands.init:register', - 'run = bonobo.commands.run:register', - 'version = bonobo.commands.version:register', - ], - 'edgy.project.features': [ - 'bonobo = bonobo.ext.edgy.project.feature:BonoboFeature' + jupyter=[ + 'jupyter >=1.0,<1.1', + 'ipywidgets >=6.0.0.beta5', ] -} - -@listen('edgy.project.feature.make.on_generate', priority=10) -def on_make_generate_docker_targets(event): - event.makefile['SPHINX_SOURCEDIR'] = 'docs' +) diff --git a/requirements-dev.txt b/requirements-dev.txt index 1cdb4ad..18f7807 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -1,27 +1,24 @@ -e .[dev] - alabaster==0.7.10 -astroid==1.5.2 babel==2.4.0 -coverage==4.3.4 +certifi==2017.4.17 +chardet==3.0.3 +coverage==4.4.1 docutils==0.13.1 +idna==2.5 imagesize==0.7.1 -isort==4.2.5 jinja2==2.9.6 -lazy-object-proxy==1.2.2 markupsafe==1.0 -mccabe==0.6.1 py==1.4.33 pygments==2.2.0 -pylint==1.7.1 -pytest-cov==2.4.0 +pytest-cov==2.5.1 pytest-timeout==1.2.0 -pytest==3.0.7 +pytest==3.1.0 pytz==2017.2 -requests==2.13.0 +requests==2.16.5 six==1.10.0 snowballstemmer==1.2.1 -sphinx-rtd-theme==0.2.4 -sphinx==1.5.5 -wrapt==1.10.10 -yapf==0.16.1 +sphinx==1.6.1 +sphinxcontrib-websupport==1.0.1 +typing==3.6.1 +urllib3==1.21.1 diff --git a/requirements-jupyter.txt b/requirements-jupyter.txt index 1cf03f6..1e98481 100644 --- a/requirements-jupyter.txt +++ b/requirements-jupyter.txt @@ -1,5 +1,4 @@ -e .[jupyter] - appnope==0.1.0 bleach==2.0.0 decorator==4.0.11 @@ -18,7 +17,7 @@ jupyter-core==4.3.0 jupyter==1.0.0 markupsafe==1.0 mistune==0.7.4 -nbconvert==5.1.1 +nbconvert==5.2.1 nbformat==4.3.0 notebook==5.0.0 pandocfilters==1.4.1 @@ -33,7 +32,7 @@ qtconsole==4.3.0 simplegeneric==0.8.1 six==1.10.0 terminado==0.6 -testpath==0.3 +testpath==0.3.1 tornado==4.5.1 traitlets==4.3.2 wcwidth==0.1.7 diff --git a/requirements.txt b/requirements.txt index b11cfa3..e9bdffb 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,15 @@ -e . - appdirs==1.4.3 +certifi==2017.4.17 +chardet==3.0.3 colorama==0.3.9 enum34==1.1.6 fs==2.0.3 -pbr==3.0.0 +idna==2.5 +pbr==3.0.1 psutil==5.2.2 pytz==2017.2 -requests==2.13.0 +requests==2.16.5 six==1.10.0 stevedore==1.21.0 +urllib3==1.21.1 diff --git a/setup.py b/setup.py index 844240a..62064d1 100644 --- a/setup.py +++ b/setup.py @@ -18,13 +18,19 @@ except NameError: # Get the long description from the README file -with open(path.join(here, 'README.rst'), encoding='utf-8') as f: - long_description = f.read() +try: + with open(path.join(here, 'README.rst'), encoding='utf-8') as f: + long_description = f.read() +except: + long_description = '' # Get the classifiers from the classifiers file tolines = lambda c: list(filter(None, map(lambda s: s.strip(), c.split('\n')))) -with open(path.join(here, 'classifiers.txt'), encoding='utf-8') as f: - classifiers = tolines(f.read()) +try: + with open(path.join(here, 'classifiers.txt'), encoding='utf-8') as f: + classifiers = tolines(f.read()) +except: + classifiers = [] version_ns = {} try: @@ -35,41 +41,34 @@ else: version = version_ns.get('__version__', 'dev') setup( - name='bonobo', + author='Romain Dorgueil', + author_email='romain@dorgueil.net', description=('Bonobo, a simple, modern and atomic extract-transform-load toolkit for ' 'python 3.5+.'), license='Apache License, Version 2.0', - install_requires=[ - 'colorama >=0.3,<1.0', 'fs >=2.0,<3.0', 'psutil >=5.2,<6.0', 'requests >=2.0,<3.0', 'stevedore >=1.21,<2.0' - ], + name='bonobo', version=version, long_description=long_description, classifiers=classifiers, packages=find_packages(exclude=['ez_setup', 'example', 'test']), include_package_data=True, - data_files=[ - ( - 'share/jupyter/nbextensions/bonobo-jupyter', [ - 'bonobo/ext/jupyter/static/extension.js', 'bonobo/ext/jupyter/static/index.js', - 'bonobo/ext/jupyter/static/index.js.map' - ] - ) + install_requires=[ + 'colorama (>= 0.3, < 1.0)', 'fs (>= 2.0, < 3.0)', 'psutil (>= 5.2, < 6.0)', 'requests (>= 2.0, < 3.0)', + 'stevedore (>= 1.21, < 2.0)' ], extras_require={ 'dev': [ - 'coverage >=4,<5', 'pylint >=1,<2', 'pytest >=3,<4', 'pytest-cov >=2,<3', 'pytest-timeout >=1,<2', 'sphinx', - 'sphinx_rtd_theme', 'yapf' + 'coverage (>= 4.4, < 5.0)', 'pytest (>= 3.1, < 4.0)', 'pytest-cov (>= 2.5, < 3.0)', + 'pytest-timeout (>= 1, < 2)', 'sphinx (>= 1.6, < 2.0)' ], - 'jupyter': ['jupyter >=1.0,<1.1', 'ipywidgets >=6.0.0.beta5'] + 'jupyter': ['ipywidgets (>= 6.0.0.beta5)', 'jupyter (>= 1.0, < 1.1)'] }, entry_points={ 'bonobo.commands': [ 'init = bonobo.commands.init:register', 'run = bonobo.commands.run:register', 'version = bonobo.commands.version:register' ], - 'console_scripts': ['bonobo = bonobo.commands:entrypoint'], - 'edgy.project.features': ['bonobo = ' - 'bonobo.ext.edgy.project.feature:BonoboFeature'] + 'console_scripts': ['bonobo = bonobo.commands:entrypoint'] }, url='https://www.bonobo-project.org/', download_url='https://github.com/python-bonobo/bonobo/tarball/{version}'.format(version=version), From 44bc3f909d0270852ad72dd6bc211b8dfc2626d5 Mon Sep 17 00:00:00 2001 From: Romain Dorgueil Date: Sun, 28 May 2017 12:08:41 +0200 Subject: [PATCH 2/3] [misc] updating dependency management. --- Makefile | 3 ++- Projectfile | 15 ++++++++------- setup.py | 4 +++- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 75e5700..a1d49da 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # This file has been auto-generated. # All changes will be lost, see Projectfile. # -# Updated at 2017-05-28 12:03:49.427061 +# Updated at 2017-05-28 12:24:17.298429 PACKAGE ?= bonobo PYTHON ?= $(shell which python) @@ -48,3 +48,4 @@ $(SPHINX_SOURCEDIR): install-dev format: install-dev $(YAPF) $(YAPF_OPTIONS) . + $(YAPF) $(YAPF_OPTIONS) Projectfile diff --git a/Projectfile b/Projectfile index a04e297..90f8c65 100644 --- a/Projectfile +++ b/Projectfile @@ -16,13 +16,14 @@ python.setup( author='Romain Dorgueil', author_email='romain@dorgueil.net', data_files=[ - ('share/jupyter/nbextensions/bonobo-jupyter', [ - 'bonobo/ext/jupyter/static/extension.js', - 'bonobo/ext/jupyter/static/index.js', - 'bonobo/ext/jupyter/static/index.js.map', - ]), + ( + 'share/jupyter/nbextensions/bonobo-jupyter', [ + 'bonobo/ext/jupyter/static/extension.js', + 'bonobo/ext/jupyter/static/index.js', + 'bonobo/ext/jupyter/static/index.js.map', + ] + ), ], - entry_points={ 'console_scripts': [ 'bonobo = bonobo.commands:entrypoint', @@ -32,8 +33,8 @@ python.setup( 'run = bonobo.commands.run:register', 'version = bonobo.commands.version:register', ], + 'edgy.project.features': ['bonobo = bonobo.ext.edgy.project.feature:BonoboFeature'] } - ) python.add_requirements( diff --git a/setup.py b/setup.py index 62064d1..3b39127 100644 --- a/setup.py +++ b/setup.py @@ -68,7 +68,9 @@ setup( 'init = bonobo.commands.init:register', 'run = bonobo.commands.run:register', 'version = bonobo.commands.version:register' ], - 'console_scripts': ['bonobo = bonobo.commands:entrypoint'] + 'console_scripts': ['bonobo = bonobo.commands:entrypoint'], + 'edgy.project.features': ['bonobo = ' + 'bonobo.ext.edgy.project.feature:BonoboFeature'] }, url='https://www.bonobo-project.org/', download_url='https://github.com/python-bonobo/bonobo/tarball/{version}'.format(version=version), From d8232abfc2000ab10cc4d15d87a50a7ead4c41a2 Mon Sep 17 00:00:00 2001 From: Romain Dorgueil Date: Sun, 28 May 2017 13:03:13 +0200 Subject: [PATCH 3/3] release: 0.3.1 --- bonobo/_version.py | 2 +- docs/changelog.rst | 59 +++++++++++++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/bonobo/_version.py b/bonobo/_version.py index 0404d81..e1424ed 100644 --- a/bonobo/_version.py +++ b/bonobo/_version.py @@ -1 +1 @@ -__version__ = '0.3.0' +__version__ = '0.3.1' diff --git a/docs/changelog.rst b/docs/changelog.rst index 061e02c..c386ff7 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,29 +1,63 @@ Changelog ========= +v.0.3.1 - 28 may 2017 +::::::::::::::::::::: + +Weekly maintenance release. + +* Updated project management model to edgy.project 0.3 format. +* Updated frozen version numbers in requirements. + + * certifi==2017.4.17 + * chardet==3.0.3 + * coverage==4.4.1 + * idna==2.5 + * nbconvert==5.2.1 + * pbr==3.0.1 + * pytest-cov==2.5.1 + * pytest==3.1.0 + * requests==2.16.5 + * sphinx==1.6.1 + * sphinxcontrib-websupport==1.0.1 + * testpath==0.3.1 + * typing==3.6.1 + * urllib3==1.21.1 + + Note: this does not change anything when used as a dependency if you freeze your requirements, as the setup.py + requirement specifiers did not change. + v.0.3.0 - 22 may 2017 ::::::::::::::::::::: Features -------- -* ContextProcessors can now be implemented by getting the "yield" value (v = yield x), shortening the teardown-only context processors by one line. +* ContextProcessors can now be implemented by getting the "yield" value (v = yield x), shortening the teardown-only + context processors by one line. * File related writers (file, csv, json ...) now returns NOT_MODIFIED, making it easier to chain something after. * More consistent console output, nodes are now sorted in a topological order before display. -* Graph.add_chain(...) now takes _input and _output parameters the same way, accepting indexes, instances or names (subject to change). -* Graph.add_chain(...) now allows to "name" a chain, using _name keyword argument, to easily reference its output later (subject to change). -* New settings module (bonobo.settings) read environment for some global configuration stuff (DEBUG and PROFILE, for now). -* New Method subclass of Option allows to use Configurable objects as decorator (see bonobo.nodes.filter.Filter for a simple example). +* Graph.add_chain(...) now takes _input and _output parameters the same way, accepting indexes, instances or names + (subject to change). +* Graph.add_chain(...) now allows to "name" a chain, using _name keyword argument, to easily reference its output later + (subject to change). +* New settings module (bonobo.settings) read environment for some global configuration stuff (DEBUG and PROFILE, for + now). +* New Method subclass of Option allows to use Configurable objects as decorator (see bonobo.nodes.filter.Filter for a + simple example). * New Filter transformation in standard library. Internal features ----------------- -* Better ContextProcessor implementation, avoiding to use a decorator on the parent class. Now works with Configurable instances like Option, Service and Method. -* ContextCurrifier replaces the logic that was in NodeExecutionContext, that setup and teardown the context stack. Maybe the name is not ideal. +* Better ContextProcessor implementation, avoiding to use a decorator on the parent class. Now works with Configurable + instances like Option, Service and Method. +* ContextCurrifier replaces the logic that was in NodeExecutionContext, that setup and teardown the context stack. Maybe + the name is not ideal. * All builtin transformations are of course updated to use the improved API, and should be 100% backward compatible. * The "core" package has been dismantled, and its rare remaining members are now in "structs" and "util" packages. -* Standard transformation library has been moved under the bonobo.nodes package. It does not change anything if you used bonobo.* (which you should). +* Standard transformation library has been moved under the bonobo.nodes package. It does not change anything if you used + bonobo.* (which you should). * ValueHolder is now more restrictive, not allowing to use .value anymore. Miscellaneous @@ -40,7 +74,8 @@ v.0.2.4 - 2 may 2017 v.0.2.3 - 1 may 2017 ::::::::::::::::::::: -* Positional options now supported, backward compatible. All FileHandler subclasses supports their path argument as positional. +* Positional options now supported, backward compatible. All FileHandler subclasses supports their path argument as + positional. * Better transformation lifecycle management (still work needed here). * Windows continuous integration now works. * Refactoring the "API" a lot to have a much cleaner first glance at it. @@ -74,10 +109,12 @@ Initial release * Migration from rdc.etl. * New cool name (ok, that's debatable). -* Only supports python 3.5+, aggressively (which means, we can use async, and we remove all things from python 2/six compat) +* Only supports python 3.5+, aggressively (which means, we can use async, and we remove all things from python 2/six + compat) * Removes all thing deprecated and/or not really convincing from rdc.etl. * We want transforms to be simple callables, so refactoring of the harness mess. -* We want to use plain python data structures, so hashes are removed. If you use python 3.6, you may even get sorted dicts. +* We want to use plain python data structures, so hashes are removed. If you use python 3.6, you may even get sorted + dicts. * Input/output MUX DEMUX removed, maybe no need for that in the real world. May come back, but not in 1.0 * Change dependency policy. We need to include only the very basic requirements (and very required). Everything related to transforms that we may not use (bs, sqla, ...) should be optional dependencies.