Example #1
0
def main(host=None,
         port=None,
         debug=False,
         no_reaper=False,
         open_browser=False,
         name=None,
         **kwargs):
    """
    Runs a local server for the D-Tale application.

    This local server is recommended when you have a pandas object stored in a CSV
    or retrievable from :class:`arctic.Arctic` data store.
    """
    log_opts = get_log_options(kwargs)
    setup_logging(log_opts.get('logfile'), log_opts.get('log_level'),
                  log_opts.get('verbose'))

    data_loader = check_loaders(kwargs)

    show(host=host,
         port=int(port or find_free_port()),
         debug=debug,
         subprocess=False,
         data_loader=data_loader,
         reaper_on=not no_reaper,
         open_browser=open_browser,
         name=name,
         **kwargs)
Example #2
0
def main(host, port=None, debug=False, no_reaper=False, **kwargs):
    """
    Runs a local server for the D-Tale application.

    This local server is recommended when you have a pandas object stored in a CSV
    or retrievable from :class:`arctic.Arctic` data store.
    """
    log_opts = get_log_options(kwargs)
    setup_logging(log_opts.get('logfile'), log_opts.get('log_level'),
                  log_opts.get('verbose'))

    # Setup arctic loader
    arctic_opts = get_loader_options('arctic', kwargs)
    if len([f for f in arctic_opts.values() if f]):

        def _arctic_loader():
            try:
                from arctic import Arctic
                from arctic.store.versioned_item import VersionedItem
            except BaseException as ex:
                logger.exception(
                    'In order to use the arctic loader you must install ahl.core!'
                )
                raise ex
            host = Arctic(arctic_opts['host'])
            lib = host.get_library(arctic_opts['library'])
            read_kwargs = {}
            start, end = map(arctic_opts.get, ['start', 'end'])
            if start and end:
                read_kwargs['chunk_range'] = pd.date_range(start, end)
            data = lib.read(arctic_opts['node'], **read_kwargs)
            if isinstance(data, VersionedItem):
                data = data.data
            return data

        data_loader = _arctic_loader

    # Setup csv loader
    csv_opts = get_loader_options('csv', kwargs)
    if len([f for f in csv_opts.values() if f]):

        def _csv_loader():
            csv_arg_parsers = {  # TODO: add additional arg parsers
                'parse_dates': lambda v: v.split(',') if v else None
            }
            kwargs = {
                k: csv_arg_parsers.get(k, lambda v: v)(v)
                for k, v in csv_opts.items() if k != 'path'
            }
            return pd.read_csv(csv_opts['path'], **kwargs)

        data_loader = _csv_loader

    show(host=host,
         port=int(port or find_free_port()),
         debug=debug,
         subprocess=False,
         data_loader=data_loader,
         reaper_on=not no_reaper,
         **kwargs)
Example #3
0
def test_find_free_port():
    from dtale.app import find_free_port

    with ExitStack() as stack:
        mock_socket = stack.enter_context(mock.patch("socket.socket", mock.Mock()))

        assert find_free_port() == 40000
        mock_socket.assert_called_once()
        mock_socket.return_value.connect_ex.assert_called_once()

    class MockSocket(object):
        def connect_ex(self, addr):
            (host, port) = addr
            if port == 40000:
                return 0
            return 1

        def close(self):
            pass

    with ExitStack() as stack:
        stack.enter_context(
            mock.patch("socket.socket", mock.Mock(return_value=MockSocket()))
        )
        assert find_free_port() == 40001

    class MockSocket2(object):
        def connect_ex(self, _addr):
            return 0

        def close(self):
            pass

    with ExitStack() as stack:
        stack.enter_context(
            mock.patch("socket.socket", mock.Mock(return_value=MockSocket2()))
        )
        with pytest.raises(IOError) as excinfo:
            find_free_port()
        assert (
            "D-Tale could not find an open port from 40000 to 49000, please increase your range by altering "
            "the environment variables DTALE_MIN_PORT & DTALE_MAX_PORT."
        ) in str(excinfo)
Example #4
0
def main(host=None,
         port=None,
         debug=None,
         no_reaper=None,
         open_browser=False,
         name=None,
         no_cell_edits=None,
         hide_shutdown=None,
         github_fork=None,
         app_root=None,
         hide_drop_rows=None,
         **kwargs):
    """
    Runs a local server for the D-Tale application.

    This local server is recommended when you have a pandas object stored in a CSV
    or retrievable from :class:`arctic.Arctic` data store.
    """
    log_opts = get_log_options(kwargs)
    setup_logging(log_opts.get("logfile"), log_opts.get("log_level"),
                  log_opts.get("verbose"))

    data_loader = check_loaders(kwargs)

    # in order to handle the hierarchy of inputs if "--no-cell-edits" is not specified
    # then we'll update it to None
    allow_cell_edits = False if no_cell_edits is not None else None
    kwargs["show_columns"] = (kwargs["show_columns"].split(",")
                              if kwargs.get("show_columns") else None)
    kwargs["hide_columns"] = (kwargs["hide_columns"].split(",")
                              if kwargs.get("hide_columns") else None)
    kwargs["sort"] = ([
        tuple(sort.split("|")) for sort in kwargs["sort"].split(",")
    ] if kwargs.get("sort") else None)
    kwargs["locked"] = kwargs["locked"].split(",") if kwargs.get(
        "locked") else None
    show(host=host,
         port=int(port or find_free_port()),
         debug=debug,
         subprocess=False,
         data_loader=data_loader,
         reaper_on=not no_reaper,
         open_browser=open_browser,
         name=name,
         allow_cell_edits=allow_cell_edits,
         hide_shutdown=hide_shutdown,
         github_fork=github_fork,
         app_root=app_root,
         hide_drop_rows=hide_drop_rows,
         **kwargs)
Example #5
0
def test_find_free_port():
    from dtale.app import find_free_port

    assert find_free_port() is not None