Adds create_reader/create_writer, more expliciteness in root module to avoid loosing IDEs (like jetbrains) in imports.

This commit is contained in:
Romain Dorgueil
2018-05-21 12:17:02 +02:00
parent f0c4e5e78a
commit 5b303c403d
3 changed files with 43 additions and 5 deletions

View File

@ -9,9 +9,12 @@ import sys
assert (sys.version_info >= (3, 5)), 'Python 3.5+ is required to use Bonobo.'
from bonobo._api import *
from bonobo._api import __all__
from bonobo._api import __doc__
from bonobo._api import (
run, inspect, Graph, create_strategy, open_fs, CsvReader, CsvWriter, FileReader, FileWriter, Filter, FixedWindow,
Format, JsonReader, JsonWriter, LdjsonReader, LdjsonWriter, Limit, 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__

View File

@ -8,11 +8,12 @@ to another is maximal.
"""
from bonobo.execution.strategies import create_strategy
from bonobo.nodes import __all__ as _all_nodes
from bonobo.nodes import *
from bonobo.nodes import __all__ as _all_nodes
from bonobo.structs import Graph
from bonobo.util.api import ApiHelper
from bonobo.util.environ import parse_args, get_argument_parser
from bonobo.registry import create_reader, create_writer
__all__ = []
@ -155,6 +156,12 @@ api.register_group(
check=_all_nodes,
)
# registry
api.register_group(
create_reader,
create_writer,
)
def _is_interactive_console():
import sys

View File

@ -2,7 +2,7 @@ import mimetypes
import os
from bonobo import JsonReader, CsvReader, PickleReader, FileReader, FileWriter, PickleWriter, CsvWriter, JsonWriter
from bonobo.nodes import JsonReader, CsvReader, PickleReader, FileReader, FileWriter, PickleWriter, CsvWriter, JsonWriter
FILETYPE_CSV = 'text/csv'
FILETYPE_JSON = 'application/json'
@ -88,3 +88,31 @@ class Registry:
default_registry = Registry()
def create_reader(name, *args, format=None, registry=default_registry, **kwargs):
"""
Create a reader instance, guessing its factory using filename (and eventually format).
:param name:
:param args:
:param format:
:param registry:
:param kwargs:
:return: mixed
"""
return registry.get_reader_factory_for(name, format=format)(name, *args, **kwargs)
def create_writer(name, *args, format=None, registry=default_registry, **kwargs):
"""
Create a writer instance, guessing its factory using filename (and eventually format).
:param name:
:param args:
:param format:
:param registry:
:param kwargs:
:return: mixed
"""
return registry.get_writer_factory_for(name, format=format)(name, *args, **kwargs)