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.
|
||||
# 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_BASENAME ?= $(shell basename $(PYTHON))
|
||||
PYTHON_DIRNAME ?= $(shell dirname $(PYTHON))
|
||||
PYTHON_REQUIREMENTS_FILE ?= requirements.txt
|
||||
PYTHON_REQUIREMENTS_DEV_FILE ?= requirements-dev.txt
|
||||
QUICK ?=
|
||||
VIRTUAL_ENV ?= .virtualenv-$(PYTHON_BASENAME)
|
||||
PIP ?= $(VIRTUAL_ENV)/bin/pip
|
||||
PIP ?= $(PYTHON_DIRNAME)/pip
|
||||
PIP_INSTALL_OPTIONS ?=
|
||||
PYTEST ?= $(VIRTUAL_ENV)/bin/pytest
|
||||
PYTEST_OPTIONS ?= --capture=no --cov=bonobo --cov-report html
|
||||
SPHINX_OPTS ?=
|
||||
SPHINX_BUILD ?= $(VIRTUAL_ENV)/bin/sphinx-build
|
||||
PYTEST ?= $(PYTHON_DIRNAME)/pytest
|
||||
PYTEST_OPTIONS ?= --capture=no --cov=$(PACKAGE) --cov-report html
|
||||
SPHINX_BUILD ?= $(PYTHON_DIRNAME)/sphinx-build
|
||||
SPHINX_OPTIONS ?=
|
||||
SPHINX_SOURCEDIR ?= docs
|
||||
SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build
|
||||
YAPF ?= $(VIRTUAL_ENV)/bin/yapf
|
||||
YAPF ?= $(PYTHON_DIRNAME)/yapf
|
||||
YAPF_OPTIONS ?= -rip
|
||||
|
||||
.PHONY: $(SPHINX_SOURCEDIR) clean format install install-dev lint test
|
||||
|
||||
# Installs the local project dependencies.
|
||||
install: $(VIRTUAL_ENV)
|
||||
install:
|
||||
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
|
||||
|
||||
# Installs the local project dependencies, including development-only libraries.
|
||||
install-dev: $(VIRTUAL_ENV)
|
||||
install-dev:
|
||||
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
|
||||
|
||||
# Cleans up the local mess.
|
||||
clean:
|
||||
rm -rf build
|
||||
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)
|
||||
rm -rf build dist *.egg-info
|
||||
|
||||
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
|
||||
$(PYTEST) $(PYTEST_OPTIONS) tests
|
||||
|
||||
$(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
|
||||
$(YAPF) $(YAPF_OPTIONS) .
|
||||
|
||||
37
README.rst
37
README.rst
@ -1,16 +1,12 @@
|
||||
==========
|
||||
🐵 bonobo
|
||||
=========
|
||||
==========
|
||||
|
||||
Data-processing. By monkeys. For humans.
|
||||
Data-processing for humans.
|
||||
|
||||
.. image:: https://img.shields.io/pypi/v/bonobo.svg
|
||||
:target: https://pypi.python.org/pypi/bonobo
|
||||
: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
|
||||
:target: https://pypi.python.org/pypi/bonobo
|
||||
:alt: Versions
|
||||
@ -27,29 +23,30 @@ Data-processing. By monkeys. For humans.
|
||||
:target: https://ci.appveyor.com/project/hartym/bonobo?branch=0.3
|
||||
:alt: Continuous Integration (Windows)
|
||||
|
||||
|
||||
.. image:: https://landscape.io/github/python-bonobo/bonobo/0.3/landscape.svg?style=flat
|
||||
:target: https://landscape.io/github/python-bonobo/bonobo/0.3
|
||||
: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
|
||||
:target: https://coveralls.io/github/python-bonobo/bonobo?branch=0.3
|
||||
:alt: Coverage
|
||||
|
||||
Bonobo is a data-processing library for python 3.5+ that emphasises writing
|
||||
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.
|
||||
Bonobo is an extract-transform-load framework for python 3.5+ (see comparisons with other data tools).
|
||||
|
||||
The only thing asked of the developer is to write "pure" functions to
|
||||
process data (create a new dict, don't change in place, etc.), and everything
|
||||
should be fine from this point.
|
||||
Bonobo uses plain old python objects (functions, generators and iterators), allows to link them in a directed graph and
|
||||
execute them using a parallelized strategy, without having to worry about the underlying complexity.
|
||||
|
||||
It's 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 underlying
|
||||
concepts work.
|
||||
Developpers can focus on writing simple and atomic operations, that are by-design easy to unit-test, while the
|
||||
framework focus on applying them concurrently to rows of data.
|
||||
|
||||
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):
|
||||
try:
|
||||
with open(filename, 'rt') as f:
|
||||
with open(filename) as f:
|
||||
content = f.read().strip()
|
||||
return flt(content) if callable(flt) else content
|
||||
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 ''
|
||||
|
||||
|
||||
@ -42,40 +38,44 @@ else:
|
||||
|
||||
setup(
|
||||
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',
|
||||
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,
|
||||
long_description=read('README.rst'),
|
||||
classifiers=read('classifiers.txt', tolines),
|
||||
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'
|
||||
]
|
||||
)
|
||||
],
|
||||
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'
|
||||
])],
|
||||
extras_require={
|
||||
'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'
|
||||
],
|
||||
'jupyter': ['jupyter >=1.0,<1.1', 'ipywidgets >=6.0.0.beta5']
|
||||
},
|
||||
entry_points={
|
||||
'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'
|
||||
],
|
||||
'console_scripts': ['bonobo = bonobo.commands:entrypoint'],
|
||||
'edgy.project.features': ['bonobo = '
|
||||
'bonobo.ext.edgy.project.feature:BonoboFeature']
|
||||
'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),
|
||||
)
|
||||
download_url=
|
||||
'https://github.com/python-bonobo/bonobo/tarball/{version}'.format(
|
||||
version=version), )
|
||||
|
||||
Reference in New Issue
Block a user