Merge branch 'fix-code-smells' into develop

This commit is contained in:
Romain Dorgueil
2019-05-16 15:09:26 +02:00
23 changed files with 57 additions and 93 deletions

View File

@ -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.

View File

@ -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',

View File

@ -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_():

View File

@ -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

View File

@ -2,6 +2,7 @@ import argparse
import logging
import mondrian
from bonobo import settings
from bonobo.commands.base import BaseCommand, BaseGraphCommand

View File

@ -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)

View File

@ -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"]

View File

@ -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)
self.stdout, self.stderr = _stdout_backup, _stderr_backup
try:
return self.run(*args, **options)
finally:
self.stdout, self.stderr = _stdout_backup, _stderr_backup

View File

@ -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")

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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)

View File

@ -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

View File

@ -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__ = [

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)",