Changing branch model to use master instead of 0.3. Version named branches will stay for maintenance, while master will be the bleeding edge (still with passing test suite).
This commit is contained in:
38
Makefile
38
Makefile
@ -1,58 +1,52 @@
|
|||||||
# This file has been auto-generated.
|
# This file has been auto-generated.
|
||||||
# All changes will be lost, see Projectfile.
|
# All changes will be lost, see Projectfile.
|
||||||
#
|
#
|
||||||
# Updated at 2017-05-01 08:35:15.162008
|
# Updated at 2017-05-02 20:38:38.468986
|
||||||
|
|
||||||
|
PACKAGE ?= bonobo
|
||||||
PYTHON ?= $(shell which python)
|
PYTHON ?= $(shell which python)
|
||||||
PYTHON_BASENAME ?= $(shell basename $(PYTHON))
|
PYTHON_BASENAME ?= $(shell basename $(PYTHON))
|
||||||
|
PYTHON_DIRNAME ?= $(shell dirname $(PYTHON))
|
||||||
PYTHON_REQUIREMENTS_FILE ?= requirements.txt
|
PYTHON_REQUIREMENTS_FILE ?= requirements.txt
|
||||||
PYTHON_REQUIREMENTS_DEV_FILE ?= requirements-dev.txt
|
PYTHON_REQUIREMENTS_DEV_FILE ?= requirements-dev.txt
|
||||||
QUICK ?=
|
QUICK ?=
|
||||||
VIRTUAL_ENV ?= .virtualenv-$(PYTHON_BASENAME)
|
PIP ?= $(PYTHON_DIRNAME)/pip
|
||||||
PIP ?= $(VIRTUAL_ENV)/bin/pip
|
|
||||||
PIP_INSTALL_OPTIONS ?=
|
PIP_INSTALL_OPTIONS ?=
|
||||||
PYTEST ?= $(VIRTUAL_ENV)/bin/pytest
|
PYTEST ?= $(PYTHON_DIRNAME)/pytest
|
||||||
PYTEST_OPTIONS ?= --capture=no --cov=bonobo --cov-report html
|
PYTEST_OPTIONS ?= --capture=no --cov=$(PACKAGE) --cov-report html
|
||||||
SPHINX_OPTS ?=
|
SPHINX_BUILD ?= $(PYTHON_DIRNAME)/sphinx-build
|
||||||
SPHINX_BUILD ?= $(VIRTUAL_ENV)/bin/sphinx-build
|
SPHINX_OPTIONS ?=
|
||||||
SPHINX_SOURCEDIR ?= docs
|
SPHINX_SOURCEDIR ?= docs
|
||||||
SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build
|
SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build
|
||||||
YAPF ?= $(VIRTUAL_ENV)/bin/yapf
|
YAPF ?= $(PYTHON_DIRNAME)/yapf
|
||||||
YAPF_OPTIONS ?= -rip
|
YAPF_OPTIONS ?= -rip
|
||||||
|
|
||||||
.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev lint test
|
.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev lint test
|
||||||
|
|
||||||
# Installs the local project dependencies.
|
# Installs the local project dependencies.
|
||||||
install: $(VIRTUAL_ENV)
|
install:
|
||||||
if [ -z "$(QUICK)" ]; then \
|
if [ -z "$(QUICK)" ]; then \
|
||||||
$(PIP) install -U pip wheel $(PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_FILE) ; \
|
$(PIP) install -U pip wheel $(PYTHON_PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_FILE) ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Installs the local project dependencies, including development-only libraries.
|
# Installs the local project dependencies, including development-only libraries.
|
||||||
install-dev: $(VIRTUAL_ENV)
|
install-dev:
|
||||||
if [ -z "$(QUICK)" ]; then \
|
if [ -z "$(QUICK)" ]; then \
|
||||||
$(PIP) install -U pip wheel $(PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_DEV_FILE) ; \
|
$(PIP) install -U pip wheel $(PYTHON_PIP_INSTALL_OPTIONS) -r $(PYTHON_REQUIREMENTS_DEV_FILE) ; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Cleans up the local mess.
|
# Cleans up the local mess.
|
||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf build dist *.egg-info
|
||||||
rm -rf dist
|
|
||||||
|
|
||||||
# Setup the local virtualenv, or use the one provided by the current environment.
|
|
||||||
$(VIRTUAL_ENV):
|
|
||||||
virtualenv -p $(PYTHON) $(VIRTUAL_ENV)
|
|
||||||
$(PIP) install -U pip wheel
|
|
||||||
ln -fs $(VIRTUAL_ENV)/bin/activate activate-$(PYTHON_BASENAME)
|
|
||||||
|
|
||||||
lint: install-dev
|
lint: install-dev
|
||||||
$(VIRTUAL_ENV)/bin/pylint --py3k bonobo -f html > pylint.html
|
$(PYTHON_DIRNAME)/pylint --py3k $(PACKAGE) -f html > pylint.html
|
||||||
|
|
||||||
test: install-dev
|
test: install-dev
|
||||||
$(PYTEST) $(PYTEST_OPTIONS) tests
|
$(PYTEST) $(PYTEST_OPTIONS) tests
|
||||||
|
|
||||||
$(SPHINX_SOURCEDIR): install-dev
|
$(SPHINX_SOURCEDIR): install-dev
|
||||||
$(SPHINX_BUILD) -b html -D latex_paper_size=a4 $(SPHINX_OPTS) $(SPHINX_SOURCEDIR) $(SPHINX_BUILDDIR)/html
|
$(SPHINX_BUILD) -b html -D latex_paper_size=a4 $(SPHINX_OPTIONS) $(SPHINX_SOURCEDIR) $(SPHINX_BUILDDIR)/html
|
||||||
|
|
||||||
format: install-dev
|
format: install-dev
|
||||||
$(YAPF) $(YAPF_OPTIONS) .
|
$(YAPF) $(YAPF_OPTIONS) .
|
||||||
|
|||||||
37
README.rst
37
README.rst
@ -1,16 +1,12 @@
|
|||||||
|
==========
|
||||||
🐵 bonobo
|
🐵 bonobo
|
||||||
=========
|
==========
|
||||||
|
|
||||||
Data-processing. By monkeys. For humans.
|
Data-processing for humans.
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/v/bonobo.svg
|
.. image:: https://img.shields.io/pypi/v/bonobo.svg
|
||||||
:target: https://pypi.python.org/pypi/bonobo
|
:target: https://pypi.python.org/pypi/bonobo
|
||||||
:alt: PyPI
|
:alt: PyPI
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/wheel/bonobo.svg
|
|
||||||
:target: https://pypi.python.org/pypi/bonobo
|
|
||||||
:alt: Wheel
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/pyversions/bonobo.svg
|
.. image:: https://img.shields.io/pypi/pyversions/bonobo.svg
|
||||||
:target: https://pypi.python.org/pypi/bonobo
|
:target: https://pypi.python.org/pypi/bonobo
|
||||||
:alt: Versions
|
:alt: Versions
|
||||||
@ -27,29 +23,30 @@ Data-processing. By monkeys. For humans.
|
|||||||
:target: https://ci.appveyor.com/project/hartym/bonobo?branch=0.3
|
:target: https://ci.appveyor.com/project/hartym/bonobo?branch=0.3
|
||||||
:alt: Continuous Integration (Windows)
|
:alt: Continuous Integration (Windows)
|
||||||
|
|
||||||
|
|
||||||
.. image:: https://landscape.io/github/python-bonobo/bonobo/0.3/landscape.svg?style=flat
|
.. image:: https://landscape.io/github/python-bonobo/bonobo/0.3/landscape.svg?style=flat
|
||||||
:target: https://landscape.io/github/python-bonobo/bonobo/0.3
|
:target: https://landscape.io/github/python-bonobo/bonobo/0.3
|
||||||
:alt: Code Health from landscape
|
:alt: Code Health from landscape
|
||||||
|
|
||||||
|
.. image:: https://codeclimate.com/github/python-bonobo/bonobo/badges/gpa.svg
|
||||||
|
:target: https://codeclimate.com/github/python-bonobo/bonobo
|
||||||
|
:alt: Code Climate
|
||||||
|
|
||||||
.. image:: https://img.shields.io/coveralls/python-bonobo/bonobo/0.3.svg
|
.. image:: https://img.shields.io/coveralls/python-bonobo/bonobo/0.3.svg
|
||||||
:target: https://coveralls.io/github/python-bonobo/bonobo?branch=0.3
|
:target: https://coveralls.io/github/python-bonobo/bonobo?branch=0.3
|
||||||
:alt: Coverage
|
:alt: Coverage
|
||||||
|
|
||||||
Bonobo is a data-processing library for python 3.5+ that emphasises writing
|
Bonobo is an extract-transform-load framework for python 3.5+ (see comparisons with other data tools).
|
||||||
simple, atomic, plain old python functions and chaining them using a basic
|
|
||||||
acyclic graph. The nodes will need a bit of plumbery to be runnable in
|
|
||||||
different means (iteratively, in threads, in processes, on different machines
|
|
||||||
...) but that should be as transparent as possible.
|
|
||||||
|
|
||||||
The only thing asked of the developer is to write "pure" functions to
|
Bonobo uses plain old python objects (functions, generators and iterators), allows to link them in a directed graph and
|
||||||
process data (create a new dict, don't change in place, etc.), and everything
|
execute them using a parallelized strategy, without having to worry about the underlying complexity.
|
||||||
should be fine from this point.
|
|
||||||
|
|
||||||
It's a young rewrite of an old python2.7 tool that ran millions of
|
Developpers can focus on writing simple and atomic operations, that are by-design easy to unit-test, while the
|
||||||
transformations per day for years on production, so as though it may not yet
|
framework focus on applying them concurrently to rows of data.
|
||||||
be complete or fully stable (please, allow us to reach 1.0), the underlying
|
|
||||||
concepts work.
|
One thing to note: write pure transformations and you'll be safe.
|
||||||
|
|
||||||
|
Bonobo is a young rewrite of an old python2.7 tool that ran millions of transformations per day for years on production,
|
||||||
|
so as though it may not yet be complete or fully stable (please, allow us to reach 1.0), the basics are there.
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
__version__ = '0.2.2'
|
__version__ = '0.3.0a1'
|
||||||
|
|||||||
42
setup.py
42
setup.py
@ -11,14 +11,10 @@ tolines = lambda c: list(filter(None, map(lambda s: s.strip(), c.split('\n'))))
|
|||||||
|
|
||||||
def read(filename, flt=None):
|
def read(filename, flt=None):
|
||||||
try:
|
try:
|
||||||
with open(filename, 'rt') as f:
|
with open(filename) as f:
|
||||||
content = f.read().strip()
|
content = f.read().strip()
|
||||||
return flt(content) if callable(flt) else content
|
return flt(content) if callable(flt) else content
|
||||||
except EnvironmentError:
|
except EnvironmentError:
|
||||||
# File not found? Let's say it's empty.
|
|
||||||
return ''
|
|
||||||
except UnicodeError:
|
|
||||||
# Problem decoding the file? Let's not stop on this (but it's a temp fix).
|
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
@ -42,40 +38,44 @@ else:
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='bonobo',
|
name='bonobo',
|
||||||
description='Bonobo',
|
description=
|
||||||
|
('Bonobo, a simple, modern and atomic extract-transform-load toolkit for '
|
||||||
|
'python 3.5+.'),
|
||||||
license='Apache License, Version 2.0',
|
license='Apache License, Version 2.0',
|
||||||
install_requires=[
|
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'
|
'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'
|
||||||
],
|
],
|
||||||
version=version,
|
version=version,
|
||||||
long_description=read('README.rst'),
|
long_description=read('README.rst'),
|
||||||
classifiers=read('classifiers.txt', tolines),
|
classifiers=read('classifiers.txt', tolines),
|
||||||
packages=find_packages(exclude=['ez_setup', 'example', 'test']),
|
packages=find_packages(exclude=['ez_setup', 'example', 'test']),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
data_files=[
|
data_files=[('share/jupyter/nbextensions/bonobo-jupyter', [
|
||||||
(
|
'bonobo/ext/jupyter/static/extension.js',
|
||||||
'share/jupyter/nbextensions/bonobo-jupyter', [
|
'bonobo/ext/jupyter/static/index.js',
|
||||||
'bonobo/ext/jupyter/static/extension.js', 'bonobo/ext/jupyter/static/index.js',
|
'bonobo/ext/jupyter/static/index.js.map'
|
||||||
'bonobo/ext/jupyter/static/index.js.map'
|
])],
|
||||||
]
|
|
||||||
)
|
|
||||||
],
|
|
||||||
extras_require={
|
extras_require={
|
||||||
'dev': [
|
'dev': [
|
||||||
'coverage >=4,<5', 'pylint >=1,<2', 'pytest >=3,<4', 'pytest-cov >=2,<3', 'pytest-timeout >=1,<2', 'sphinx',
|
'coverage >=4,<5', 'pylint >=1,<2', 'pytest >=3,<4',
|
||||||
|
'pytest-cov >=2,<3', 'pytest-timeout >=1,<2', 'sphinx',
|
||||||
'sphinx_rtd_theme', 'yapf'
|
'sphinx_rtd_theme', 'yapf'
|
||||||
],
|
],
|
||||||
'jupyter': ['jupyter >=1.0,<1.1', 'ipywidgets >=6.0.0.beta5']
|
'jupyter': ['jupyter >=1.0,<1.1', 'ipywidgets >=6.0.0.beta5']
|
||||||
},
|
},
|
||||||
entry_points={
|
entry_points={
|
||||||
'bonobo.commands': [
|
'bonobo.commands': [
|
||||||
'init = bonobo.commands.init:register', 'run = bonobo.commands.run:register',
|
'init = bonobo.commands.init:register',
|
||||||
|
'run = bonobo.commands.run:register',
|
||||||
'version = bonobo.commands.version:register'
|
'version = bonobo.commands.version:register'
|
||||||
],
|
],
|
||||||
'console_scripts': ['bonobo = bonobo.commands:entrypoint'],
|
'console_scripts': ['bonobo = bonobo.commands:entrypoint'],
|
||||||
'edgy.project.features': ['bonobo = '
|
'edgy.project.features':
|
||||||
'bonobo.ext.edgy.project.feature:BonoboFeature']
|
['bonobo = '
|
||||||
|
'bonobo.ext.edgy.project.feature:BonoboFeature']
|
||||||
},
|
},
|
||||||
url='https://www.bonobo-project.org/',
|
url='https://www.bonobo-project.org/',
|
||||||
download_url='https://github.com/python-bonobo/bonobo/tarball/{version}'.format(version=version),
|
download_url=
|
||||||
)
|
'https://github.com/python-bonobo/bonobo/tarball/{version}'.format(
|
||||||
|
version=version), )
|
||||||
|
|||||||
Reference in New Issue
Block a user