# Path: oshino/util.py
# def dynamic_import(path):
#     module, builder = path.rsplit(".", 1)
#     return getattr(__import__(module, fromlist=[builder]), builder)


import os
import yaml
import logging
import riemann_client.transport
from functools import partial
from riemann_client.transport import BlankTransport, TLSTransport, TCPTransport
from jinja2 import Template
from .util import dynamic_import
            return RiemannConfig(self._data["riemann"])
        else:
            return RiemannConfig.default()

    @property
    def interval(self):
        return self._data["interval"]

    @property
    def agents(self):
        return [AgentConfig(a) for a in self._data.get("agents", [])]

    @property
    def augments(self):
        return [AugmentConfig(a) for a in self._data.get("augments", [])]

    @property
    def sentry_dsn(self):
        return self._data.get("sentry-dsn", None)

    @property
    def executors_count(self):
        return self._data.get("executors-count", 10)

    @property
    def executor_class(self):
        raw = self._data.get(
                "executor",
                "concurrent.futures.ThreadPoolExecutor"
        )

# Path: oshino/util.py
# def dynamic_import(path):
#     module, builder = path.rsplit(".", 1)
#     return getattr(__import__(module, fromlist=[builder]), builder)


# Path: oshino/config.py
import os
import yaml
import logging
import riemann_client.transport
from functools import partial
from riemann_client.transport import BlankTransport, TLSTransport, TCPTransport
from jinja2 import Template
from .util import dynamic_import

            return RiemannConfig(self._data["riemann"])
        else:
            return RiemannConfig.default()

    @property
    def interval(self):
        return self._data["interval"]

    @property
    def agents(self):
        return [AgentConfig(a) for a in self._data.get("agents", [])]

    @property
    def augments(self):
        return [AugmentConfig(a) for a in self._data.get("augments", [])]

    @property
    def sentry_dsn(self):
        return self._data.get("sentry-dsn", None)

    @property
    def executors_count(self):
        return self._data.get("executors-count", 10)

    @property
    def executor_class(self):
        raw = self._data.get(
                "executor",
                "concurrent.futures.ThreadPoolExecutor"
        )

        return dynamic_import(raw)