コード例 #1
0
async def test_isinstance_invalid():
    async def get_async():
        return {}

    provider = providers.Dependency(instance_of=float)
    provider.override(providers.Callable(get_async))

    assert provider.is_async_mode_undefined() is True

    with raises(errors.Error):
        await provider()

    assert provider.is_async_mode_enabled() is True
コード例 #2
0
async def test_async_mode_enabling_on_overriding():
    dependency = object()

    async def _get_dependency_async():
        return dependency

    provider = providers.Provider()
    provider.override(providers.Callable(_get_dependency_async))
    assert provider.is_async_mode_undefined() is True

    await provider()

    assert provider.is_async_mode_enabled() is True
コード例 #3
0
class Injector(containers.DeclarativeContainer):
    """
    Inyector de dependencias de la aplicacion
    """

    env = providers.Configuration()
    # components
    bioportalApi = providers.Singleton(BioPortalApi, settings=env.bioportal)
    mongoDb = providers.Singleton(
        MongoDb,
        host=env.mongo.host,
        database=env.mongo.database,
        port=env.mongo.port,
        auth=env.mongo.auth,
    )
    nanopubTest = providers.Callable(negator, env.settings.production)
    nanopubClient = providers.Singleton(NanopubClient,
                                        use_test_server=nanopubTest)
    # respos
    protocolsRepository = providers.Singleton(ProtocolsRepository)
    workflows_repository = providers.Singleton(WorkflowsRepository)
    nanopubsRepository = providers.Singleton(
        NanopublicationRepository, workflows_repository=workflows_repository)
    # services
    bioportalService = providers.Factory(BioPortalService,
                                         bioportal_api=bioportalApi)
    protocolsService = providers.Factory(
        ProtocolsService,
        protocols_repo=protocolsRepository,
        settings=env.settings,
    )
    statsService = providers.Factory(StatsService,
                                     nanopubs_repo=nanopubsRepository,
                                     settings=env.settings)
    workflows_service = providers.Factory(
        WorkflowsService,
        workflows_repository=workflows_repository,
        nanopubs_repository=nanopubsRepository,
        settings=env.settings,
        nanopub_client=nanopubClient,
    )
    nanopubsService = providers.Factory(
        NanoPubServices,
        bioportal_api=bioportalApi,
        nanopubs_repo=nanopubsRepository,
        protocols_repo=protocolsRepository,
        nanopubremote=nanopubClient,
        workflows_service=workflows_service,
        settings=env.settings,
    )
コード例 #4
0
    def test_traverse_provides(self):
        provider1 = providers.Callable(list)
        provider2 = providers.Object('bar')
        provider3 = providers.Object('baz')

        provider = providers.Singleton(provider1, provider2)
        provider.override(provider3)

        all_providers = list(provider.traverse())

        self.assertEqual(len(all_providers), 3)
        self.assertIn(provider1, all_providers)
        self.assertIn(provider2, all_providers)
        self.assertIn(provider3, all_providers)
コード例 #5
0
ファイル: example.py プロジェクト: imfht/flaskapps
class Container(containers.DeclarativeContainer):

    config = providers.Configuration()

    password_hasher = providers.Callable(
        passlib.hash.sha256_crypt.hash,
        salt_size=config.salt_size,
        rounds=config.rounds,
    )

    user_service = providers.Factory(
        UserService,
        password_hasher=password_hasher.provider,
    )
コード例 #6
0
class Managers(containers.DeclarativeContainer):
    config = providers.Configuration()
    data_models = providers.DependenciesContainer()

    interaction_event_manager = providers.Singleton(
        InteractionEventManager, event_types=config.interaction.event_types)

    observation_manager = providers.Singleton(ObservationManager)

    entity_model_manager = providers.Singleton(EntityModelManager)
    entity_fsm_manager = providers.Singleton(EntityFsmManager)
    being_model_manager = providers.Singleton(BeingModelManager)
    entity_component_manager = providers.Singleton(
        EntityComponentManager,
        entity_model_manager=entity_model_manager,
        entity_fsm_manager=entity_fsm_manager,
        being_model_manager=being_model_manager)

    turn_manager = providers.Singleton(
        TurnManager, entity_model_manager=entity_model_manager)

    action_manager = providers.Singleton(ActionManager)

    simulation_manager = providers.Singleton(
        SimulationStateManager,
        grid_model=data_models.grid_model_objective,
        entity_component_manager=entity_component_manager,
        action_manager=action_manager,
        observation_manager=observation_manager,
        grid_factory=data_models.grid_model_subjective.provider)
    """ Status effect trigger section """
    def stub_get_resolver():
        raise Exception("This stub needs to be overwritten.")

    get_trigger_resolver = providers.Callable(stub_get_resolver)

    status_effect_trigger_resolver = providers.Singleton(
        StatusEffectTriggerResolver, resolvers_for_type=get_trigger_resolver)

    status_effect_manager = providers.Singleton(
        StatusEffectManager,
        simulation_manager=simulation_manager,
        trigger_resolver=status_effect_trigger_resolver)

    tick_manager = providers.Singleton(
        TickManager,
        status_effect_manager=status_effect_manager,
        tick_value=config.tick_manager.tick_value,
        tick_rate=config.tick_manager.tick_rate)
コード例 #7
0
class IocContainer(containers.DeclarativeContainer):
    try:
        if len(sys.argv) < 3:
            raise Exception(
                'O arquivo para carregamento deve ser especificado')

        file_route = sys.argv[2]
    except:
        file_route = 'routes-file.csv'

    graphs = providers.Singleton(netx.Graph)
    store = providers.Singleton(Store, graphs=graphs, file_routes=file_route)
    service = providers.Factory(Service, store=store)
    console = providers.Factory(Console, service=service)
    console_main = providers.Callable(console().main)
コード例 #8
0
    def test_deepcopy_overridden(self):
        provider = providers.Callable(_example)
        object_provider = providers.Object(object())

        provider.override(object_provider)

        provider_copy = providers.deepcopy(provider)
        object_provider_copy = provider_copy.overridden[0]

        self.assertIsNot(provider, provider_copy)
        self.assertIs(provider.provides, provider_copy.provides)
        self.assertIsInstance(provider, providers.Callable)

        self.assertIsNot(object_provider, object_provider_copy)
        self.assertIsInstance(object_provider_copy, providers.Object)
コード例 #9
0
def test_deepcopy_overridden():
    provider = providers.Callable(example)
    object_provider = providers.Object(object())

    provider.override(object_provider)

    provider_copy = providers.deepcopy(provider)
    object_provider_copy = provider_copy.overridden[0]

    assert provider is not provider_copy
    assert provider.provides is provider_copy.provides
    assert isinstance(provider, providers.Callable)

    assert object_provider is not object_provider_copy
    assert isinstance(object_provider_copy, providers.Object)
コード例 #10
0
class Container(containers.DeclarativeContainer):

    thread_local_object = providers.ThreadLocalSingleton(object)

    queue_provider = providers.ThreadSafeSingleton(queue.Queue)

    put_in_queue = providers.Callable(
        put_in_queue,
        example_object=thread_local_object,
        queue_object=queue_provider,
    )

    thread_factory = providers.Factory(
        threading.Thread,
        target=put_in_queue.provider,
    )
コード例 #11
0
class DataModels(containers.DeclarativeContainer):
    config = providers.Configuration()
    repositories = providers.DependenciesContainer()

    #uuid = providers.Factory(uuid1)
    uuid = providers.Callable(get_id)

    grid_model_objective = providers.Singleton(
        DatabaseBackedGridModel,
        chunk_radius=config.grid.chunk_radius,
        procedural=config.grid.procedural,
        db=repositories.db)

    grid_model_subjective = providers.Factory(SubjectiveGridModel)

    being_model = providers.Factory(Being, entity_id=uuid)
コード例 #12
0
class IocContainer(containers.DeclarativeContainer):
    """Application IoC container."""

    config = providers.Configuration('config')
    logger = providers.Singleton(logging.Logger, name='example')

    # Gateways

    database_client = providers.Singleton(sqlite3.connect, config.database.dsn)

    s3_client = providers.Singleton(
        boto3.client,
        's3',
        aws_access_key_id=config.aws.access_key_id,
        aws_secret_access_key=config.aws.secret_access_key,
    )

    # Services

    users_service = providers.Factory(
        services.UsersService,
        db=database_client,
        logger=logger,
    )

    auth_service = providers.Factory(
        services.AuthService,
        token_ttl=config.auth.token_ttl,
        db=database_client,
        logger=logger,
    )

    photos_service = providers.Factory(
        services.PhotosService,
        db=database_client,
        s3=s3_client,
        logger=logger,
    )

    # Misc

    main = providers.Callable(
        main.main,
        users_service=users_service,
        auth_service=auth_service,
        photos_service=photos_service,
    )
コード例 #13
0
class ActionResolvers(containers.DeclarativeContainer):
    config = providers.Configuration()
    managers = providers.DependenciesContainer()
    rolls = providers.DependenciesContainer()

    logger = providers.Singleton(
        DirectNotify
    )

    get_resolver = providers.Callable(stub_get_resolver)

    generic_action_resolver = providers.Singleton(
        GenericActionResolver,
        resolvers_for_type=get_resolver,
        simulation_manager=managers.simulation_manager
    )

    movement_resolver = providers.Singleton(
        MovementResolver,
        simulation_manager=managers.simulation_manager,
        logger=logger
    )

    melee_attack_resolver = providers.Singleton(
        MeleeAttackResolver,
        simulation_manager=managers.simulation_manager,
        logger=logger
    )

    harvest_resolver = providers.Singleton(
        HarvestResolver,
        simulation_manager=managers.simulation_manager,
        logger=logger
    )

    eat_resolver = providers.Singleton(
        EatResolver,
        simulation_manager=managers.simulation_manager,
        logger=logger
    )

    observation_resolver = providers.Singleton(
        ObservationResolver,
        simulation_manager=managers.simulation_manager,
        roll_versus_factory=rolls.roll_versus.provider,
        logger=logger
    )
コード例 #14
0
    def test_factory(self):
        dependency = object()

        async def _get_dependency_async():
            return dependency

        def _get_dependency_sync():
            return dependency

        provider = providers.Factory(_get_dependency_async)
        dependency1 = self._run(provider())

        provider.override(providers.Callable(_get_dependency_sync))
        dependency2 = self._run(provider())

        self.assertIs(dependency1, dependency)
        self.assertIs(dependency2, dependency)
コード例 #15
0
async def test_factory():
    dependency = object()

    async def _get_dependency_async():
        return dependency

    def _get_dependency_sync():
        return dependency

    provider = providers.Factory(_get_dependency_async)
    dependency1 = await provider()

    provider.override(providers.Callable(_get_dependency_sync))
    dependency2 = await provider()

    assert dependency1 is dependency
    assert dependency2 is dependency
コード例 #16
0
class NetworkSensorNode(containers.DeclarativeContainer):

    broadcaster = providers.Singleton(
        Broadcaster,
        sense_id=Core.config.client.id,
        tcp_port=Core.config.client.tcp_port,
        sense_type=Core.config.client.type,
        broadcast_port=Core.config.client.broadcast_port,
        logger=Core.logger)

    data_source = providers.Singleton(RandomDataSource)

    session_manager = providers.Singleton(SessionManager,
                                          broadcaster=broadcaster,
                                          data_source=data_source)

    run_network_sensor = providers.Callable(main,
                                            session_manager=session_manager)
コード例 #17
0
    def test_isinstance(self):
        dependency = 1.0

        async def get_async():
            return dependency

        provider = providers.Dependency(instance_of=float)
        provider.override(providers.Callable(get_async))

        self.assertTrue(provider.is_async_mode_undefined())

        dependency1 = self._run(provider())

        self.assertTrue(provider.is_async_mode_enabled())

        dependency2 = self._run(provider())

        self.assertEqual(dependency1, dependency)
        self.assertEqual(dependency2, dependency)
コード例 #18
0
async def test_isinstance():
    dependency = 1.0

    async def get_async():
        return dependency

    provider = providers.Dependency(instance_of=float)
    provider.override(providers.Callable(get_async))

    assert provider.is_async_mode_undefined() is True

    dependency1 = await provider()

    assert provider.is_async_mode_enabled() is True

    dependency2 = await provider()

    assert dependency1 == dependency
    assert dependency2 == dependency
コード例 #19
0
class InterpreterStateMachineIocContainer(containers.DeclarativeContainer):
    def bootstrap_container(config, logger, common_ioc, state_machine_ioc):
        context_filter = common_ioc.context_filter_provider()
        logger.logger.addFilter(context_filter)
        InterpreterStateMachineIocContainer.instance = InterpreterStateMachineIocContainer(
            config=config,
            common_ioc=common_ioc,
            state_machine_ioc=state_machine_ioc)

        IocUtil.identify_singletons_to_be_skipped_during_deepcopy(
            InterpreterStateMachineIocContainer.instance)

        logger.info("container configuration complete")
        return InterpreterStateMachineIocContainer.instance

    common_ioc = providers.DependenciesContainer()
    state_machine_ioc = providers.DependenciesContainer()

    # Configuration
    config = providers.Configuration('config')
    logging_provider = IocUtil.create_basic_log_adapter(
        providers,
        "bbpyp.interpreter_state_machine",
        extra={"CONTEXT_ID": None})

    # Dependencies provided by third party packages
    interpreter_actions_provider = providers.Dependency()

    # Delegates for consumer's of this package
    interpreter_state_machine_provider = providers.Singleton(
        InterpreterStateMachine,
        logger=logging_provider,
        interpreter_actions=interpreter_actions_provider,
        state_transition_builder=state_machine_ioc.
        state_transition_builder_factory,
        context_service=common_ioc.context_service_provider)

    build = providers.Callable(bootstrap_container,
                               config=config,
                               logger=logging_provider,
                               common_ioc=common_ioc,
                               state_machine_ioc=state_machine_ioc)
コード例 #20
0
class GithubNavigator(containers.DeclarativeContainer):
    """Application components container."""

    config = providers.Configuration(
        'config',
        default={
            'webapp': {
                'templates_dir': 'github_navigator/templates/',
                'host': '0.0.0.0',
                'port': 80,
                'debug': False,
            },
            'github': {
                'request_timeout': 10.0,
            },
        },
    )

    github_searcher = providers.Factory(
        searcher.GithubSearcher,
        auth_token=config.github.auth_token,
        request_timeout=config.github.request_timeout,
    )

    webapp = providers.Factory(Sanic, __name__)

    template_loader = providers.Singleton(
        FileSystemLoader,
        searchpath=config.webapp.templates_dir,
    )
    template_env = providers.Singleton(
        Environment,
        loader=template_loader,
        autoescape=select_autoescape(['html', 'xml']),
        enable_async=True,
    )

    navigator_webhandler = providers.Callable(
        webhandlers.navigator,
        template_env=template_env,
        github_searcher_factory=github_searcher.provider,
    )
コード例 #21
0
class Container(containers.DeclarativeContainer):

    config = providers.Configuration()

    configure_logging = providers.Callable(
        logging.config.fileConfig,
        fname='logging.ini',
    )

    # Gateways

    database_client = providers.Singleton(
        sqlite3.connect,
        config.database.dsn,
    )

    s3_client = providers.Singleton(
        boto3.client,
        service_name='s3',
        aws_access_key_id=config.aws.access_key_id,
        aws_secret_access_key=config.aws.secret_access_key,
    )

    # Services

    user_service = providers.Factory(
        services.UserService,
        db=database_client,
    )

    auth_service = providers.Factory(
        services.AuthService,
        db=database_client,
        token_ttl=config.auth.token_ttl.as_int(),
    )

    photo_service = providers.Factory(
        services.PhotoService,
        db=database_client,
        s3=s3_client,
    )
コード例 #22
0
ファイル: container.py プロジェクト: marco79423/mat-server
class AppContainer(containers.DeclarativeContainer):
    DomainContainer = providers.Container(DomainContainer)

    Server = providers.Factory(
        Server,
        get_config_use_case=DomainContainer.GetConfigUseCase,
        check_if_mock_response_exists_use_case=DomainContainer.CheckIfMockResponseExistsUseCase,
        check_if_proxy_server_exists_use_case=DomainContainer.CheckIfProxyServerExistsUseCase,
        get_mock_response_use_case=DomainContainer.GetMockResponseUseCase,
        get_proxy_server_response_use_case=DomainContainer.GetProxyServerResponseUseCase,
        server_serve_func=uvicorn.run,
    )

    Manager = providers.Factory(
        Manager,
        generate_default_config_use_case=DomainContainer.GenerateDefaultConfigUseCase,
        check_config_use_case=DomainContainer.CheckConfigUseCase,
        server=Server,
    )

    create_cli = providers.Callable(
        create_cli,
        Manager,
    )
def test_override_by_not_factory():
    provider = providers.AbstractFactory(object)
    with raises(errors.Error):
        provider.override(providers.Callable(object))
コード例 #24
0
async def main(container: Container):
    resource1 = await container.resource()

    container.resource.override(providers.Callable(init_resource_mock))
    resource2 = await container.resource()
    ...
コード例 #25
0
 class TestServices(containers.DeclarativeContainer):
     config = providers.Configuration('services')
     value_getter = providers.Callable(lambda _: _, config.value)
コード例 #26
0
class BentoMLContainer(containers.DeclarativeContainer):

    config = providers.Configuration(strict=True)

    api_server_workers = providers.Callable(
        lambda workers: workers or (multiprocessing.cpu_count() // 2) + 1,
        config.bento_server.workers,
    )

    bentoml_home = providers.Callable(
        lambda: expand_env_var(
            os.environ.get("BENTOML_HOME", os.path.join("~", "bentoml"))
        )
    )

    prometheus_multiproc_dir = providers.Callable(
        os.path.join, bentoml_home, "prometheus_multiproc_dir",
    )

    bento_bundle_deployment_version = providers.Callable(
        get_bentoml_deploy_version,
        providers.Callable(
            lambda default, customized: customized or default,
            __version__.split('+')[0],
            config.bento_bundle.deployment_version,
        ),
    )

    yatai_database_url = providers.Callable(
        lambda default, customized: customized or default,
        providers.Callable(
            "sqlite:///{}".format,
            providers.Callable(os.path.join, bentoml_home, "storage.db"),
        ),
        config.yatai.database.url,
    )

    yatai_file_system_directory = providers.Callable(
        lambda default, customized: customized or default,
        providers.Callable(os.path.join, bentoml_home, "repository"),
        config.yatai.repository.file_system.directory,
    )

    yatai_tls_root_ca_cert = providers.Callable(
        lambda current, deprecated: current or deprecated,
        config.yatai.remote.tls.root_ca_cert,
        config.yatai.remote.tls.client_certificate_file,
    )

    logging_file_directory = providers.Callable(
        lambda default, customized: customized or default,
        providers.Callable(os.path.join, bentoml_home, "logs",),
        config.logging.file.directory,
    )

    yatai_logging_path = providers.Callable(
        lambda default, customized: customized or default,
        providers.Callable(
            os.path.join, logging_file_directory, "yatai_web_server.log"
        ),
        config.yatai.logging.path,
    )
コード例 #27
0
def test_traverse():
    provider = providers.Callable(dict)
    all_providers = list(provider.traverse())
    assert len(all_providers) == 0
コード例 #28
0
from dependency_injector import providers
from fastapi.testclient import TestClient

from pet_store.domain import models
from pet_store.entrypoints.api import app
from pet_store.services.unit_of_work import uow_provider
from tests.e2e.utils.testing_infrastructure import (
    get_session,
    destroy_testing_db,
    create_testing_db,
    uow_factory,
)

# Changing the UnitOfWorkFactory using the dependency_injector library
uow_provider.override(providers.Callable(uow_factory))

pre_populated_pet_id = uuid.uuid4()
pet_data = {"id": str(pre_populated_pet_id), "name": "Pimienta", "age": 1}


class PetTestCase(TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        # This has to happen in Alembic
        create_testing_db()
        session = get_session()
        pet = models.Pet(**pet_data)
        session.add(pet)
        session.commit()
        session.close()
コード例 #29
0
 class A(containers.DeclarativeContainer):
     d = providers.DependenciesContainer()
     bar = providers.Callable(lambda f: f + '++', d.foo.provided)
コード例 #30
0
class TestCore(containers.DeclarativeContainer):
    config = providers.Configuration('core')
    value_getter = providers.Callable(lambda _: _, config.section.value)