Merge branch 'fix-code-smells' into develop
This commit is contained in:
2
Makefile
2
Makefile
@ -1,4 +1,4 @@
|
||||
# Generated by Medikit 0.7.1 on 2019-05-08.
|
||||
# Generated by Medikit 0.7.1 on 2019-05-16.
|
||||
# All changes will be overriden.
|
||||
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
||||
|
||||
|
||||
@ -47,7 +47,7 @@ python.add_requirements(
|
||||
'graphviz >=0.8,<0.9',
|
||||
'jinja2 ~=2.9',
|
||||
'mondrian ~=0.8',
|
||||
'packaging ~=17.0',
|
||||
'packaging ~=19.0',
|
||||
'psutil ~=5.4',
|
||||
'python-slugify ~=1.2.0',
|
||||
'requests ~=2.0',
|
||||
|
||||
@ -8,56 +8,23 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from bonobo._api import (
|
||||
CsvReader, CsvWriter, FileReader, FileWriter, Filter, FixedWindow, Format, Graph, JsonReader, JsonWriter,
|
||||
LdjsonReader, LdjsonWriter, Limit, MapFields, OrderFields, PickleReader, PickleWriter, PrettyPrinter, RateLimited,
|
||||
Rename, SetFields, Tee, UnpackItems, __all__, __doc__, count, create_reader, create_strategy, create_writer,
|
||||
get_argument_parser, get_examples_path, identity, inspect, noop, open_examples_fs, open_fs, parse_args, run
|
||||
)
|
||||
from bonobo._version import __version__
|
||||
|
||||
if sys.version_info < (3, 5):
|
||||
raise RuntimeError("Python 3.5+ is required to use Bonobo.")
|
||||
|
||||
from bonobo._api import (
|
||||
run,
|
||||
inspect,
|
||||
Graph,
|
||||
create_strategy,
|
||||
open_fs,
|
||||
CsvReader,
|
||||
CsvWriter,
|
||||
FileReader,
|
||||
FileWriter,
|
||||
Filter,
|
||||
FixedWindow,
|
||||
Format,
|
||||
JsonReader,
|
||||
JsonWriter,
|
||||
LdjsonReader,
|
||||
LdjsonWriter,
|
||||
Limit,
|
||||
MapFields,
|
||||
OrderFields,
|
||||
PickleReader,
|
||||
PickleWriter,
|
||||
PrettyPrinter,
|
||||
RateLimited,
|
||||
Rename,
|
||||
SetFields,
|
||||
Tee,
|
||||
UnpackItems,
|
||||
count,
|
||||
identity,
|
||||
noop,
|
||||
create_reader,
|
||||
create_writer,
|
||||
get_examples_path,
|
||||
open_examples_fs,
|
||||
get_argument_parser,
|
||||
parse_args,
|
||||
__all__,
|
||||
__doc__,
|
||||
)
|
||||
from bonobo._version import __version__
|
||||
|
||||
__all__ = ["__version__"] + __all__
|
||||
with (Path(__file__).parent / "bonobo.svg").open() as f:
|
||||
__logo__ = f.read()
|
||||
__doc__ = __doc__
|
||||
__version__ = __version__
|
||||
__doc__ = __doc__ # lgtm [py/redundant-assignment]
|
||||
__version__ = __version__ # lgtm [py/redundant-assignment]
|
||||
|
||||
|
||||
def _repr_html_():
|
||||
|
||||
@ -125,14 +125,13 @@ def open_fs(fs_url=None, *args, **kwargs):
|
||||
:param str default_protocol: The protocol to use if one is not supplied in the FS URL (defaults to ``"osfs"``).
|
||||
:returns: :class:`fs.base.FS` object
|
||||
"""
|
||||
import os
|
||||
from fs.opener import open_fs as _open_fs
|
||||
from os.path import expanduser
|
||||
from os import getcwd
|
||||
|
||||
if fs_url is None:
|
||||
fs_url = getcwd()
|
||||
fs_url = os.getcwd()
|
||||
|
||||
return _open_fs(expanduser(str(fs_url)), *args, **kwargs)
|
||||
return _open_fs(os.path.expanduser(str(fs_url)), *args, **kwargs)
|
||||
|
||||
|
||||
# standard transformations
|
||||
|
||||
@ -2,6 +2,7 @@ import argparse
|
||||
import logging
|
||||
|
||||
import mondrian
|
||||
|
||||
from bonobo import settings
|
||||
from bonobo.commands.base import BaseCommand, BaseGraphCommand
|
||||
|
||||
|
||||
@ -5,10 +5,10 @@ configurable transformations, either class-based or function-based.
|
||||
"""
|
||||
|
||||
from bonobo.config.configurables import Configurable
|
||||
from bonobo.config.functools import transformation_factory, partial
|
||||
from bonobo.config.functools import partial, transformation_factory
|
||||
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.services import Container, Exclusive, Service, use, create_container
|
||||
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, create_container, use
|
||||
from bonobo.util import deprecated_alias
|
||||
|
||||
requires = deprecated_alias("requires", use)
|
||||
|
||||
@ -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 .utils import create_or_update
|
||||
|
||||
__all__ = ["ETLCommand", "create_or_update"]
|
||||
|
||||
@ -2,13 +2,13 @@ from logging import getLogger
|
||||
from types import GeneratorType
|
||||
|
||||
from colorama import Back, Fore, Style
|
||||
from django.core.management import BaseCommand
|
||||
from django.core.management.base import OutputWrapper
|
||||
from mondrian import term
|
||||
|
||||
import bonobo
|
||||
from bonobo.plugins.console import ConsoleOutputPlugin
|
||||
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
|
||||
|
||||
@ -77,6 +77,7 @@ class ETLCommand(BaseCommand):
|
||||
self.stderr = OutputWrapper(ConsoleOutputPlugin._stderr, ending=CLEAR_EOL + "\n")
|
||||
self.stderr.style_func = lambda x: Fore.LIGHTRED_EX + Back.RED + "!" + Style.RESET_ALL + " " + x
|
||||
|
||||
results = self.run(*args, **options)
|
||||
|
||||
try:
|
||||
return self.run(*args, **options)
|
||||
finally:
|
||||
self.stdout, self.stderr = _stdout_backup, _stderr_backup
|
||||
|
||||
@ -1,14 +1,15 @@
|
||||
import os
|
||||
|
||||
# https://developers.google.com/api-client-library/python/guide/aaa_oauth
|
||||
# pip install google-api-python-client (1.6.4)
|
||||
|
||||
import httplib2
|
||||
from apiclient import discovery
|
||||
from oauth2client import client, tools
|
||||
from oauth2client.file import Storage
|
||||
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("~")
|
||||
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 ?
|
||||
|
||||
from bonobo.config import Option
|
||||
from bonobo.config.processors import ContextProcessor
|
||||
from bonobo.config.configurables import Configurable
|
||||
from bonobo.config.processors import ContextProcessor
|
||||
from bonobo.util.objects import ValueHolder
|
||||
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import os
|
||||
|
||||
import bonobo
|
||||
from bonobo.execution.strategies import STRATEGIES, DEFAULT_STRATEGY
|
||||
from bonobo.execution.strategies import DEFAULT_STRATEGY, STRATEGIES
|
||||
from bonobo.util.statistics import Timer
|
||||
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@ class Lifecycle:
|
||||
self.start()
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
|
||||
def __exit__(self, exc_type=None, exc_val=None, exc_tb=None): # lgtm [py/special-method-wrong-signature]
|
||||
self.stop()
|
||||
|
||||
def get_flags_as_string(self):
|
||||
|
||||
@ -259,7 +259,9 @@ class NodeExecutionContext(BaseContext, WithStatistics):
|
||||
"""
|
||||
for message in messages:
|
||||
if not isinstance(message, Token):
|
||||
message = ensure_tuple(message, cls=self._input_type, length=self._input_length)
|
||||
message = ensure_tuple(
|
||||
message, cls=self._input_type, length=self._input_length
|
||||
) # lgtm [py/call/wrong-named-argument]
|
||||
if self._input_length is None:
|
||||
self._input_length = len(message)
|
||||
self.input.put(message)
|
||||
|
||||
@ -7,9 +7,7 @@ at home if you want to give it a shot.
|
||||
|
||||
"""
|
||||
from bonobo.execution.strategies.executor import (
|
||||
ProcessPoolExecutorStrategy,
|
||||
ThreadPoolExecutorStrategy,
|
||||
AsyncThreadPoolExecutorStrategy,
|
||||
AsyncThreadPoolExecutorStrategy, ProcessPoolExecutorStrategy, ThreadPoolExecutorStrategy
|
||||
)
|
||||
from bonobo.execution.strategies.naive import NaiveStrategy
|
||||
|
||||
|
||||
@ -6,17 +6,9 @@ and inspect transformations, graphs, and nodes.
|
||||
from bonobo.util.collections import cast, ensure_tuple, sortedlist, tuplize
|
||||
from bonobo.util.compat import deprecated, deprecated_alias
|
||||
from bonobo.util.inspect import (
|
||||
inspect_node,
|
||||
isconfigurable,
|
||||
isconfigurabletype,
|
||||
iscontextprocessor,
|
||||
isdict,
|
||||
ismethod,
|
||||
isoption,
|
||||
istuple,
|
||||
istype,
|
||||
inspect_node, 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
|
||||
__all__ = [
|
||||
|
||||
@ -34,6 +34,10 @@ def _with_length_check(f):
|
||||
|
||||
|
||||
def tuple_or_const(tuple_or_mixed, *, consts=(None, False), **kwargs):
|
||||
"""
|
||||
Like ensure_tuple, but also accept as valid outputs a list of constants.
|
||||
"""
|
||||
|
||||
if tuple_or_mixed in consts:
|
||||
return tuple_or_mixed
|
||||
if isinstance(tuple_or_mixed, str):
|
||||
@ -49,10 +53,13 @@ def ensure_tuple(tuple_or_mixed, *, cls=None):
|
||||
If it's not a tuple, let's make a tuple of one item.
|
||||
Otherwise, not changed.
|
||||
|
||||
:param tuple_or_mixed:
|
||||
:return: tuple
|
||||
|
||||
:param tuple_or_mixed: material to work on.
|
||||
:param cls: type of the resulting tuple, or `tuple` if not provided.
|
||||
:param length: provided by `_with_length_check` decorator, if specified, make sure that the tuple is of this
|
||||
length (and raise a `TypeError` if not), otherwise, do nothing.
|
||||
:return: tuple (or something of type `cls`, if provided)
|
||||
"""
|
||||
|
||||
if cls is None:
|
||||
cls = tuple
|
||||
|
||||
|
||||
@ -26,7 +26,7 @@ class Timer:
|
||||
self.__start = time.time()
|
||||
return self
|
||||
|
||||
def __exit__(self, type=None, value=None, traceback=None):
|
||||
def __exit__(self, type=None, value=None, traceback=None): # lgtm [py/special-method-wrong-signature]
|
||||
# Error handling here
|
||||
self.__finish = time.time()
|
||||
|
||||
|
||||
@ -20,11 +20,10 @@ jinja2==2.10.1
|
||||
markupsafe==1.1.1
|
||||
more-itertools==7.0.0
|
||||
packaging==19.0
|
||||
pathlib2==2.3.3
|
||||
pluggy==0.11.0
|
||||
poyo==0.4.2
|
||||
py==1.8.0
|
||||
pygments==2.3.1
|
||||
pygments==2.4.0
|
||||
pyparsing==2.4.0
|
||||
pytest-cov==2.7.1
|
||||
pytest-timeout==1.3.3
|
||||
|
||||
@ -24,7 +24,6 @@ requests==2.21.0
|
||||
semantic-version==2.6.0
|
||||
six==1.12.0
|
||||
stevedore==1.30.1
|
||||
typing==3.6.6
|
||||
unidecode==1.0.23
|
||||
urllib3==1.24.3
|
||||
websocket-client==0.56.0
|
||||
|
||||
@ -7,7 +7,7 @@ bleach==3.1.0
|
||||
decorator==4.4.0
|
||||
defusedxml==0.6.0
|
||||
entrypoints==0.3
|
||||
ipykernel==5.1.0
|
||||
ipykernel==5.1.1
|
||||
ipython-genutils==0.2.0
|
||||
ipython==7.5.0
|
||||
ipywidgets==6.0.1
|
||||
@ -30,8 +30,8 @@ pickleshare==0.7.5
|
||||
prometheus-client==0.6.0
|
||||
prompt-toolkit==2.0.9
|
||||
ptyprocess==0.6.0
|
||||
pygments==2.3.1
|
||||
pyrsistent==0.15.1
|
||||
pygments==2.4.0
|
||||
pyrsistent==0.15.2
|
||||
python-dateutil==2.8.0
|
||||
pyzmq==18.0.1
|
||||
qtconsole==4.4.4
|
||||
|
||||
@ -22,7 +22,6 @@ requests==2.21.0
|
||||
six==1.12.0
|
||||
sqlalchemy==1.3.3
|
||||
stevedore==1.30.1
|
||||
typing==3.6.6
|
||||
unidecode==1.0.23
|
||||
urllib3==1.24.3
|
||||
whistle==1.0.1
|
||||
|
||||
@ -10,7 +10,7 @@ idna==2.8
|
||||
jinja2==2.10.1
|
||||
markupsafe==1.1.1
|
||||
mondrian==0.8.0
|
||||
packaging==17.1
|
||||
packaging==19.0
|
||||
pbr==5.2.0
|
||||
psutil==5.6.2
|
||||
pyparsing==2.4.0
|
||||
@ -19,7 +19,6 @@ pytz==2019.1
|
||||
requests==2.21.0
|
||||
six==1.12.0
|
||||
stevedore==1.30.1
|
||||
typing==3.6.6
|
||||
unidecode==1.0.23
|
||||
urllib3==1.24.3
|
||||
whistle==1.0.1
|
||||
|
||||
4
setup.py
4
setup.py
@ -1,4 +1,4 @@
|
||||
# Generated by Medikit 0.7.1 on 2019-05-08.
|
||||
# Generated by Medikit 0.7.1 on 2019-05-16.
|
||||
# All changes will be overriden.
|
||||
# Edit Projectfile and run “make update” (or “medikit update”) to regenerate.
|
||||
|
||||
@ -70,7 +70,7 @@ setup(
|
||||
"graphviz (>= 0.8, < 0.9)",
|
||||
"jinja2 (~= 2.9)",
|
||||
"mondrian (~= 0.8)",
|
||||
"packaging (~= 17.0)",
|
||||
"packaging (~= 19.0)",
|
||||
"psutil (~= 5.4)",
|
||||
"python-slugify (~= 1.2.0)",
|
||||
"requests (~= 2.0)",
|
||||
|
||||
Reference in New Issue
Block a user