Merge pull request #311 from hartym/backport/kasei-exclusive-locks
Backport of MR from Kasei : exclusive locks
This commit is contained in:
7
Makefile
7
Makefile
@ -1,7 +1,8 @@
|
|||||||
# Generated by Medikit 0.6.3 on 2018-08-11.
|
# Generated by Medikit 0.7.1 on 2019-05-16.
|
||||||
# All changes will be overriden.
|
# All changes will be overriden.
|
||||||
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
||||||
|
|
||||||
|
|
||||||
PACKAGE ?= bonobo
|
PACKAGE ?= bonobo
|
||||||
PYTHON ?= $(shell which python || echo python)
|
PYTHON ?= $(shell which python || echo python)
|
||||||
PYTHON_BASENAME ?= $(shell basename $(PYTHON))
|
PYTHON_BASENAME ?= $(shell basename $(PYTHON))
|
||||||
@ -29,7 +30,7 @@ SPHINX_BUILDDIR ?= $(SPHINX_SOURCEDIR)/_build
|
|||||||
SPHINX_AUTOBUILD ?= $(PYTHON_DIRNAME)/sphinx-autobuild
|
SPHINX_AUTOBUILD ?= $(PYTHON_DIRNAME)/sphinx-autobuild
|
||||||
MEDIKIT ?= $(PYTHON) -m medikit
|
MEDIKIT ?= $(PYTHON) -m medikit
|
||||||
MEDIKIT_UPDATE_OPTIONS ?=
|
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)
|
.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.
|
help: ## Shows available commands.
|
||||||
@echo "Available commands:"
|
@echo "Available commands:"
|
||||||
@echo
|
@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
|
@echo
|
||||||
|
|||||||
@ -45,7 +45,7 @@ python.add_requirements(
|
|||||||
'graphviz >=0.8,<0.9',
|
'graphviz >=0.8,<0.9',
|
||||||
'jinja2 ~=2.9',
|
'jinja2 ~=2.9',
|
||||||
'mondrian ~=0.7',
|
'mondrian ~=0.7',
|
||||||
'packaging ~=17.0',
|
'packaging ~=19.0',
|
||||||
'psutil ~=5.4',
|
'psutil ~=5.4',
|
||||||
'python-slugify ~=1.2.0',
|
'python-slugify ~=1.2.0',
|
||||||
'requests ~=2.0',
|
'requests ~=2.0',
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -2,6 +2,7 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
import mondrian
|
import mondrian
|
||||||
|
|
||||||
from bonobo import settings
|
from bonobo import settings
|
||||||
from bonobo.commands.base import BaseCommand, BaseGraphCommand
|
from bonobo.commands.base import BaseCommand, BaseGraphCommand
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@ configurable transformations, either class-based or function-based.
|
|||||||
from bonobo.config.configurables import Configurable
|
from bonobo.config.configurables import Configurable
|
||||||
from bonobo.config.functools import transformation_factory
|
from bonobo.config.functools import transformation_factory
|
||||||
from bonobo.config.options import Method, Option
|
from bonobo.config.options import Method, Option
|
||||||
from bonobo.config.processors import ContextProcessor, use_context, use_context_processor, use_raw_input, use_no_input
|
from bonobo.config.processors import ContextProcessor, use_context, use_context_processor, use_no_input, use_raw_input
|
||||||
from bonobo.config.services import Container, Exclusive, Service, use, create_container
|
from bonobo.config.services import Container, Exclusive, Service, create_container, use
|
||||||
from bonobo.util import deprecated_alias
|
from bonobo.util import deprecated_alias
|
||||||
|
|
||||||
requires = deprecated_alias('requires', use)
|
requires = deprecated_alias('requires', use)
|
||||||
|
|||||||
@ -146,12 +146,14 @@ class Exclusive(ContextDecorator):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
_locks = {}
|
_locks = {}
|
||||||
|
_locks_creation_lock = threading.Lock()
|
||||||
|
|
||||||
def __init__(self, wrapped):
|
def __init__(self, wrapped):
|
||||||
self._wrapped = wrapped
|
self._wrapped = wrapped
|
||||||
|
|
||||||
def get_lock(self):
|
def get_lock(self):
|
||||||
_id = id(self._wrapped)
|
_id = id(self._wrapped)
|
||||||
|
with Exclusive._locks_creation_lock:
|
||||||
if not _id in Exclusive._locks:
|
if not _id in Exclusive._locks:
|
||||||
Exclusive._locks[_id] = threading.RLock()
|
Exclusive._locks[_id] = threading.RLock()
|
||||||
return Exclusive._locks[_id]
|
return Exclusive._locks[_id]
|
||||||
|
|||||||
@ -6,7 +6,7 @@ This module contains all tools for Bonobo and Django to interract nicely.
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from .utils import create_or_update
|
|
||||||
from .commands import ETLCommand
|
from .commands import ETLCommand
|
||||||
|
from .utils import create_or_update
|
||||||
|
|
||||||
__all__ = ['ETLCommand', 'create_or_update']
|
__all__ = ['ETLCommand', 'create_or_update']
|
||||||
|
|||||||
@ -2,13 +2,13 @@ from logging import getLogger
|
|||||||
from types import GeneratorType
|
from types import GeneratorType
|
||||||
|
|
||||||
from colorama import Back, Fore, Style
|
from colorama import Back, Fore, Style
|
||||||
from django.core.management import BaseCommand
|
|
||||||
from django.core.management.base import OutputWrapper
|
|
||||||
from mondrian import term
|
from mondrian import term
|
||||||
|
|
||||||
import bonobo
|
import bonobo
|
||||||
from bonobo.plugins.console import ConsoleOutputPlugin
|
from bonobo.plugins.console import ConsoleOutputPlugin
|
||||||
from bonobo.util.term import CLEAR_EOL
|
from bonobo.util.term import CLEAR_EOL
|
||||||
|
from django.core.management import BaseCommand
|
||||||
|
from django.core.management.base import OutputWrapper
|
||||||
|
|
||||||
from .utils import create_or_update
|
from .utils import create_or_update
|
||||||
|
|
||||||
|
|||||||
@ -1,14 +1,15 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
# https://developers.google.com/api-client-library/python/guide/aaa_oauth
|
|
||||||
# pip install google-api-python-client (1.6.4)
|
|
||||||
|
|
||||||
import httplib2
|
import httplib2
|
||||||
from apiclient import discovery
|
from apiclient import discovery
|
||||||
from oauth2client import client, tools
|
from oauth2client import client, tools
|
||||||
from oauth2client.file import Storage
|
from oauth2client.file import Storage
|
||||||
from oauth2client.tools import argparser
|
from oauth2client.tools import argparser
|
||||||
|
|
||||||
|
# https://developers.google.com/api-client-library/python/guide/aaa_oauth
|
||||||
|
# pip install google-api-python-client (1.6.4)
|
||||||
|
|
||||||
|
|
||||||
HOME_DIR = os.path.expanduser('~')
|
HOME_DIR = os.path.expanduser('~')
|
||||||
GOOGLE_SECRETS = os.path.join(HOME_DIR, '.cache/secrets/client_secrets.json')
|
GOOGLE_SECRETS = os.path.join(HOME_DIR, '.cache/secrets/client_secrets.json')
|
||||||
|
|
||||||
|
|||||||
@ -3,8 +3,8 @@ from urllib.parse import urlencode
|
|||||||
import requests # todo: make this a service so we can substitute it ?
|
import requests # todo: make this a service so we can substitute it ?
|
||||||
|
|
||||||
from bonobo.config import Option
|
from bonobo.config import Option
|
||||||
from bonobo.config.processors import ContextProcessor
|
|
||||||
from bonobo.config.configurables import Configurable
|
from bonobo.config.configurables import Configurable
|
||||||
|
from bonobo.config.processors import ContextProcessor
|
||||||
from bonobo.util.objects import ValueHolder
|
from bonobo.util.objects import ValueHolder
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,17 +6,9 @@ and inspect transformations, graphs, and nodes.
|
|||||||
from bonobo.util.collections import cast, ensure_tuple, sortedlist, tuplize
|
from bonobo.util.collections import cast, ensure_tuple, sortedlist, tuplize
|
||||||
from bonobo.util.compat import deprecated, deprecated_alias
|
from bonobo.util.compat import deprecated, deprecated_alias
|
||||||
from bonobo.util.inspect import (
|
from bonobo.util.inspect import (
|
||||||
inspect_node,
|
inspect_node, isconfigurable, isconfigurabletype, iscontextprocessor, isdict, ismethod, isoption, istuple, istype
|
||||||
isconfigurable,
|
|
||||||
isconfigurabletype,
|
|
||||||
iscontextprocessor,
|
|
||||||
isdict,
|
|
||||||
ismethod,
|
|
||||||
isoption,
|
|
||||||
istuple,
|
|
||||||
istype,
|
|
||||||
)
|
)
|
||||||
from bonobo.util.objects import get_name, get_attribute_or_create, ValueHolder
|
from bonobo.util.objects import ValueHolder, get_attribute_or_create, get_name
|
||||||
|
|
||||||
# Bonobo's util API
|
# Bonobo's util API
|
||||||
__all__ = [
|
__all__ = [
|
||||||
|
|||||||
@ -18,9 +18,9 @@ class ApiHelper:
|
|||||||
assert (
|
assert (
|
||||||
len(parameters) > 0 and parameters[0] == 'graph'
|
len(parameters) > 0 and parameters[0] == 'graph'
|
||||||
), 'First parameter of a graph api function must be "graph".'
|
), 'First parameter of a graph api function must be "graph".'
|
||||||
assert required_parameters.intersection(parameters) == required_parameters, (
|
assert (
|
||||||
'Graph api functions must define the following parameters: ' + ', '.join(sorted(required_parameters))
|
required_parameters.intersection(parameters) == required_parameters
|
||||||
)
|
), 'Graph api functions must define the following parameters: ' + ', '.join(sorted(required_parameters))
|
||||||
|
|
||||||
self.__all__.append(get_name(x))
|
self.__all__.append(get_name(x))
|
||||||
return x
|
return x
|
||||||
|
|||||||
@ -1,41 +1,40 @@
|
|||||||
-e .[dev]
|
-e .[dev]
|
||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
alabaster==0.7.11
|
alabaster==0.7.12
|
||||||
arrow==0.12.1
|
arrow==0.13.1
|
||||||
atomicwrites==1.1.5
|
atomicwrites==1.3.0
|
||||||
attrs==18.1.0
|
attrs==19.1.0
|
||||||
babel==2.6.0
|
babel==2.6.0
|
||||||
binaryornot==0.4.4
|
binaryornot==0.4.4
|
||||||
certifi==2018.4.16
|
certifi==2019.3.9
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
click==6.7
|
click==7.0
|
||||||
cookiecutter==1.5.1
|
cookiecutter==1.5.1
|
||||||
coverage==4.5.1
|
coverage==4.5.3
|
||||||
docutils==0.14
|
docutils==0.14
|
||||||
future==0.16.0
|
future==0.17.1
|
||||||
idna==2.7
|
idna==2.8
|
||||||
imagesize==1.0.0
|
imagesize==1.1.0
|
||||||
jinja2-time==0.2.0
|
jinja2-time==0.2.0
|
||||||
jinja2==2.10
|
jinja2==2.10.1
|
||||||
markupsafe==1.0
|
markupsafe==1.1.1
|
||||||
more-itertools==4.3.0
|
more-itertools==7.0.0
|
||||||
packaging==17.1
|
packaging==19.0
|
||||||
pathlib2==2.3.2
|
pluggy==0.11.0
|
||||||
pluggy==0.7.1
|
poyo==0.4.2
|
||||||
poyo==0.4.1
|
py==1.8.0
|
||||||
py==1.5.4
|
pygments==2.4.0
|
||||||
pygments==2.2.0
|
pyparsing==2.4.0
|
||||||
pyparsing==2.2.0
|
pytest-cov==2.7.1
|
||||||
pytest-cov==2.5.1
|
pytest-timeout==1.3.3
|
||||||
pytest-timeout==1.3.1
|
pytest==3.10.1
|
||||||
pytest==3.7.1
|
python-dateutil==2.8.0
|
||||||
python-dateutil==2.7.3
|
pytz==2019.1
|
||||||
pytz==2018.5
|
requests==2.21.0
|
||||||
requests==2.19.1
|
six==1.12.0
|
||||||
six==1.11.0
|
|
||||||
snowballstemmer==1.2.1
|
snowballstemmer==1.2.1
|
||||||
sphinx-sitemap==0.2
|
sphinx-sitemap==0.2
|
||||||
sphinx==1.7.6
|
sphinx==1.8.5
|
||||||
sphinxcontrib-websupport==1.1.0
|
sphinxcontrib-websupport==1.1.0
|
||||||
urllib3==1.23
|
urllib3==1.24.3
|
||||||
whichcraft==0.4.1
|
whichcraft==0.5.2
|
||||||
|
|||||||
@ -2,29 +2,29 @@
|
|||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
appdirs==1.4.3
|
appdirs==1.4.3
|
||||||
bonobo-docker==0.6.0
|
bonobo-docker==0.6.0
|
||||||
certifi==2018.4.16
|
cached-property==1.5.1
|
||||||
|
certifi==2019.3.9
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
colorama==0.3.9
|
colorama==0.3.9
|
||||||
docker-pycreds==0.3.0
|
docker-pycreds==0.4.0
|
||||||
docker==2.7.0
|
docker==2.7.0
|
||||||
fs==2.0.27
|
fs==2.4.5
|
||||||
graphviz==0.8.4
|
graphviz==0.8.4
|
||||||
idna==2.7
|
idna==2.8
|
||||||
jinja2==2.10
|
jinja2==2.10.1
|
||||||
markupsafe==1.0
|
markupsafe==1.1.1
|
||||||
mondrian==0.8.0
|
mondrian==0.8.0
|
||||||
packaging==17.1
|
packaging==17.1
|
||||||
pbr==4.2.0
|
pbr==5.2.0
|
||||||
psutil==5.4.6
|
psutil==5.6.2
|
||||||
pyparsing==2.2.0
|
pyparsing==2.4.0
|
||||||
python-slugify==1.2.5
|
python-slugify==1.2.6
|
||||||
pytz==2018.5
|
pytz==2019.1
|
||||||
requests==2.19.1
|
requests==2.21.0
|
||||||
semantic-version==2.6.0
|
semantic-version==2.6.0
|
||||||
six==1.11.0
|
six==1.12.0
|
||||||
stevedore==1.29.0
|
stevedore==1.30.1
|
||||||
typing==3.6.4
|
unidecode==1.0.23
|
||||||
unidecode==1.0.22
|
urllib3==1.24.3
|
||||||
urllib3==1.23
|
websocket-client==0.56.0
|
||||||
websocket-client==0.48.0
|
|
||||||
whistle==1.0.1
|
whistle==1.0.1
|
||||||
|
|||||||
@ -1,44 +1,45 @@
|
|||||||
-e .[jupyter]
|
-e .[jupyter]
|
||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
appnope==0.1.0
|
appnope==0.1.0
|
||||||
|
attrs==19.1.0
|
||||||
backcall==0.1.0
|
backcall==0.1.0
|
||||||
bleach==2.1.3
|
bleach==3.1.0
|
||||||
decorator==4.3.0
|
decorator==4.4.0
|
||||||
entrypoints==0.2.3
|
defusedxml==0.6.0
|
||||||
html5lib==1.0.1
|
entrypoints==0.3
|
||||||
ipykernel==4.8.2
|
ipykernel==5.1.1
|
||||||
ipython-genutils==0.2.0
|
ipython-genutils==0.2.0
|
||||||
ipython==6.5.0
|
ipython==7.5.0
|
||||||
ipywidgets==6.0.1
|
ipywidgets==6.0.1
|
||||||
jedi==0.12.1
|
jedi==0.13.3
|
||||||
jinja2==2.10
|
jinja2==2.10.1
|
||||||
jsonschema==2.6.0
|
jsonschema==3.0.1
|
||||||
jupyter-client==5.2.3
|
jupyter-client==5.2.4
|
||||||
jupyter-console==5.2.0
|
jupyter-console==6.0.0
|
||||||
jupyter-core==4.4.0
|
jupyter-core==4.4.0
|
||||||
jupyter==1.0.0
|
jupyter==1.0.0
|
||||||
markupsafe==1.0
|
markupsafe==1.1.1
|
||||||
mistune==0.8.3
|
mistune==0.8.4
|
||||||
nbconvert==5.3.1
|
nbconvert==5.5.0
|
||||||
nbformat==4.4.0
|
nbformat==4.4.0
|
||||||
notebook==5.6.0
|
notebook==5.7.8
|
||||||
pandocfilters==1.4.2
|
pandocfilters==1.4.2
|
||||||
parso==0.3.1
|
parso==0.4.0
|
||||||
pexpect==4.6.0
|
pexpect==4.7.0
|
||||||
pickleshare==0.7.4
|
pickleshare==0.7.5
|
||||||
prometheus-client==0.3.1
|
prometheus-client==0.6.0
|
||||||
prompt-toolkit==1.0.15
|
prompt-toolkit==2.0.9
|
||||||
ptyprocess==0.6.0
|
ptyprocess==0.6.0
|
||||||
pygments==2.2.0
|
pygments==2.4.0
|
||||||
python-dateutil==2.7.3
|
pyrsistent==0.15.2
|
||||||
pyzmq==17.1.2
|
python-dateutil==2.8.0
|
||||||
qtconsole==4.3.1
|
pyzmq==18.0.1
|
||||||
|
qtconsole==4.4.4
|
||||||
send2trash==1.5.0
|
send2trash==1.5.0
|
||||||
simplegeneric==0.8.1
|
six==1.12.0
|
||||||
six==1.11.0
|
terminado==0.8.2
|
||||||
terminado==0.8.1
|
testpath==0.4.2
|
||||||
testpath==0.3.1
|
tornado==6.0.2
|
||||||
tornado==5.1
|
|
||||||
traitlets==4.3.2
|
traitlets==4.3.2
|
||||||
wcwidth==0.1.7
|
wcwidth==0.1.7
|
||||||
webencodings==0.5.1
|
webencodings==0.5.1
|
||||||
|
|||||||
@ -2,26 +2,26 @@
|
|||||||
-r requirements.txt
|
-r requirements.txt
|
||||||
appdirs==1.4.3
|
appdirs==1.4.3
|
||||||
bonobo-sqlalchemy==0.6.0
|
bonobo-sqlalchemy==0.6.0
|
||||||
certifi==2018.4.16
|
cached-property==1.5.1
|
||||||
|
certifi==2019.3.9
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
colorama==0.3.9
|
colorama==0.3.9
|
||||||
fs==2.0.27
|
fs==2.4.5
|
||||||
graphviz==0.8.4
|
graphviz==0.8.4
|
||||||
idna==2.7
|
idna==2.8
|
||||||
jinja2==2.10
|
jinja2==2.10.1
|
||||||
markupsafe==1.0
|
markupsafe==1.1.1
|
||||||
mondrian==0.8.0
|
mondrian==0.8.0
|
||||||
packaging==17.1
|
packaging==17.1
|
||||||
pbr==4.2.0
|
pbr==5.2.0
|
||||||
psutil==5.4.6
|
psutil==5.6.2
|
||||||
pyparsing==2.2.0
|
pyparsing==2.4.0
|
||||||
python-slugify==1.2.5
|
python-slugify==1.2.6
|
||||||
pytz==2018.5
|
pytz==2019.1
|
||||||
requests==2.19.1
|
requests==2.21.0
|
||||||
six==1.11.0
|
six==1.12.0
|
||||||
sqlalchemy==1.2.10
|
sqlalchemy==1.3.3
|
||||||
stevedore==1.29.0
|
stevedore==1.30.1
|
||||||
typing==3.6.4
|
unidecode==1.0.23
|
||||||
unidecode==1.0.22
|
urllib3==1.24.3
|
||||||
urllib3==1.23
|
|
||||||
whistle==1.0.1
|
whistle==1.0.1
|
||||||
|
|||||||
@ -1,24 +1,23 @@
|
|||||||
-e .
|
-e .
|
||||||
appdirs==1.4.3
|
appdirs==1.4.3
|
||||||
certifi==2018.4.16
|
certifi==2019.3.9
|
||||||
chardet==3.0.4
|
chardet==3.0.4
|
||||||
colorama==0.3.9
|
colorama==0.3.9
|
||||||
fs==2.0.27
|
fs==2.4.5
|
||||||
graphviz==0.8.4
|
graphviz==0.8.4
|
||||||
idna==2.7
|
idna==2.8
|
||||||
jinja2==2.10
|
jinja2==2.10.1
|
||||||
markupsafe==1.0
|
markupsafe==1.1.1
|
||||||
mondrian==0.8.0
|
mondrian==0.8.0
|
||||||
packaging==17.1
|
packaging==19.0
|
||||||
pbr==4.2.0
|
pbr==5.2.0
|
||||||
psutil==5.4.6
|
psutil==5.6.2
|
||||||
pyparsing==2.2.0
|
pyparsing==2.4.0
|
||||||
python-slugify==1.2.5
|
python-slugify==1.2.6
|
||||||
pytz==2018.5
|
pytz==2019.1
|
||||||
requests==2.19.1
|
requests==2.21.0
|
||||||
six==1.11.0
|
six==1.12.0
|
||||||
stevedore==1.29.0
|
stevedore==1.30.1
|
||||||
typing==3.6.4
|
unidecode==1.0.23
|
||||||
unidecode==1.0.22
|
urllib3==1.24.3
|
||||||
urllib3==1.23
|
|
||||||
whistle==1.0.1
|
whistle==1.0.1
|
||||||
|
|||||||
54
setup.py
54
setup.py
@ -1,11 +1,12 @@
|
|||||||
# Generated by Medikit 0.6.3 on 2018-08-11.
|
# Generated by Medikit 0.7.1 on 2019-05-16.
|
||||||
# All changes will be overriden.
|
# All changes will be overriden.
|
||||||
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
||||||
|
|
||||||
from setuptools import setup, find_packages
|
|
||||||
from codecs import open
|
from codecs import open
|
||||||
from os import path
|
from os import path
|
||||||
|
|
||||||
|
from setuptools import find_packages, setup
|
||||||
|
|
||||||
here = path.abspath(path.dirname(__file__))
|
here = path.abspath(path.dirname(__file__))
|
||||||
|
|
||||||
# Py3 compatibility hacks, borrowed from IPython.
|
# Py3 compatibility hacks, borrowed from IPython.
|
||||||
@ -44,14 +45,17 @@ else:
|
|||||||
setup(
|
setup(
|
||||||
author='Romain Dorgueil',
|
author='Romain Dorgueil',
|
||||||
author_email='romain@dorgueil.net',
|
author_email='romain@dorgueil.net',
|
||||||
data_files=[('share/jupyter/nbextensions/bonobo-jupyter', [
|
data_files=[
|
||||||
|
(
|
||||||
|
'share/jupyter/nbextensions/bonobo-jupyter',
|
||||||
|
[
|
||||||
'bonobo/contrib/jupyter/static/extension.js',
|
'bonobo/contrib/jupyter/static/extension.js',
|
||||||
'bonobo/contrib/jupyter/static/index.js',
|
'bonobo/contrib/jupyter/static/index.js',
|
||||||
'bonobo/contrib/jupyter/static/index.js.map'
|
'bonobo/contrib/jupyter/static/index.js.map',
|
||||||
])],
|
],
|
||||||
description=(
|
)
|
||||||
'Bonobo, a simple, modern and atomic extract-transform-load toolkit for '
|
],
|
||||||
'python 3.5+.'),
|
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',
|
||||||
name='bonobo',
|
name='bonobo',
|
||||||
version=version,
|
version=version,
|
||||||
@ -60,21 +64,30 @@ setup(
|
|||||||
packages=find_packages(exclude=['ez_setup', 'example', 'test']),
|
packages=find_packages(exclude=['ez_setup', 'example', 'test']),
|
||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
install_requires=[
|
install_requires=[
|
||||||
'fs (~= 2.0)', 'graphviz (>= 0.8, < 0.9)', 'jinja2 (~= 2.9)',
|
'fs (~= 2.0)',
|
||||||
'mondrian (~= 0.7)', 'packaging (~= 17.0)', 'psutil (~= 5.4)',
|
'graphviz (>= 0.8, < 0.9)',
|
||||||
'python-slugify (~= 1.2.0)', 'requests (~= 2.0)',
|
'jinja2 (~= 2.9)',
|
||||||
'stevedore (~= 1.27)', 'whistle (~= 1.0)'
|
'mondrian (~= 0.7)',
|
||||||
|
'packaging (~= 19.0)',
|
||||||
|
'psutil (~= 5.4)',
|
||||||
|
'python-slugify (~= 1.2.0)',
|
||||||
|
'requests (~= 2.0)',
|
||||||
|
'stevedore (~= 1.27)',
|
||||||
|
'whistle (~= 1.0)',
|
||||||
],
|
],
|
||||||
extras_require={
|
extras_require={
|
||||||
'dev': [
|
'dev': [
|
||||||
'cookiecutter (>= 1.5, < 1.6)', 'coverage (~= 4.4)',
|
'cookiecutter (>= 1.5, < 1.6)',
|
||||||
'pytest (~= 3.4)', 'pytest-cov (~= 2.5)',
|
'coverage (~= 4.4)',
|
||||||
'pytest-timeout (>= 1, < 2)', 'sphinx (~= 1.7)',
|
'pytest (~= 3.4)',
|
||||||
'sphinx-sitemap (>= 0.2, < 0.3)'
|
'pytest-cov (~= 2.5)',
|
||||||
|
'pytest-timeout (>= 1, < 2)',
|
||||||
|
'sphinx (~= 1.7)',
|
||||||
|
'sphinx-sitemap (>= 0.2, < 0.3)',
|
||||||
],
|
],
|
||||||
'docker': ['bonobo-docker (~= 0.6.0a1)'],
|
'docker': ['bonobo-docker (~= 0.6.0a1)'],
|
||||||
'jupyter': ['ipywidgets (~= 6.0)', 'jupyter (~= 1.0)'],
|
'jupyter': ['ipywidgets (~= 6.0)', 'jupyter (~= 1.0)'],
|
||||||
'sqlalchemy': ['bonobo-sqlalchemy (~= 0.6.0a1)']
|
'sqlalchemy': ['bonobo-sqlalchemy (~= 0.6.0a1)'],
|
||||||
},
|
},
|
||||||
entry_points={
|
entry_points={
|
||||||
'bonobo.commands': [
|
'bonobo.commands': [
|
||||||
@ -84,11 +97,10 @@ setup(
|
|||||||
'init = bonobo.commands.init:InitCommand',
|
'init = bonobo.commands.init:InitCommand',
|
||||||
'inspect = bonobo.commands.inspect:InspectCommand',
|
'inspect = bonobo.commands.inspect:InspectCommand',
|
||||||
'run = bonobo.commands.run:RunCommand',
|
'run = bonobo.commands.run:RunCommand',
|
||||||
'version = bonobo.commands.version:VersionCommand'
|
'version = bonobo.commands.version:VersionCommand',
|
||||||
],
|
],
|
||||||
'console_scripts': ['bonobo = bonobo.commands:entrypoint']
|
'console_scripts': ['bonobo = bonobo.commands:entrypoint'],
|
||||||
},
|
},
|
||||||
url='https://www.bonobo-project.org/',
|
url='https://www.bonobo-project.org/',
|
||||||
download_url='https://github.com/python-bonobo/bonobo/tarball/{version}'.
|
download_url='https://github.com/python-bonobo/bonobo/tarball/{version}'.format(version=version),
|
||||||
format(version=version),
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user