cpl_core.dependency_injection package

Submodules

cpl_core.dependency_injection.scope module

class cpl_core.dependency_injection.scope.Scope(service_provider: ServiceProviderABC)

Bases: ScopeABC

dispose()

Sets service_provider to None

property service_provider: ServiceProviderABC

Returns to service provider of scope

Returns:

Object of type cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

cpl_core.dependency_injection.scope_abc module

class cpl_core.dependency_injection.scope_abc.ScopeABC

Bases: ABC

ABC for the class cpl_core.dependency_injection.scope.Scope

abstract dispose()

Sets service_provider to None

abstract property service_provider

Returns to service provider of scope

Returns:

Object of type cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

cpl_core.dependency_injection.scope_builder module

class cpl_core.dependency_injection.scope_builder.ScopeBuilder(service_provider: ServiceProviderABC)

Bases: object

Class to build cpl_core.dependency_injection.scope.Scope

build() ScopeABC

Returns scope

Returns:

Object of type cpl_core.dependency_injection.scope.Scope

cpl_core.dependency_injection.service_collection module

class cpl_core.dependency_injection.service_collection.ServiceCollection(config: ConfigurationABC)

Bases: ServiceCollectionABC

Representation of the collection of services

add_db_context(db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings)

Adds database context

Parameter:
db_context: Type[cpl_core.database.context.database_context_abc.DatabaseContextABC]

Database context

add_logging()

Adds the CPL internal logger

add_pipes()

Adds the CPL internal pipes as transient

add_scoped(service_type: T, service: Callable | None = None)

Adds a service with scoped lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

add_singleton(service_type: T, service: T | None = None)

Adds a service with singleton lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

add_transient(service_type: T, service: T | None = None)

Adds a service with transient lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

build_service_provider() ServiceProviderABC

Creates instance of the service provider

Returns:

Object of type cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

cpl_core.dependency_injection.service_collection_abc module

class cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

Bases: ABC

ABC for the class cpl_core.dependency_injection.service_collection.ServiceCollection

abstract add_db_context(db_context_type: Type[DatabaseContextABC], db_settings: DatabaseSettings)

Adds database context

Parameter:
db_context: Type[cpl_core.database.context.database_context_abc.DatabaseContextABC]

Database context

add_discord()

Adds the CPL discord

abstract add_logging()

Adds the CPL internal logger

abstract add_pipes()

Adds the CPL internal pipes as transient

abstract add_scoped(service_type: T, service: T | None = None) ServiceCollectionABC

Adds a service with scoped lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

abstract add_singleton(service_type: T, service: T | None = None) ServiceCollectionABC

Adds a service with singleton lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

abstract add_transient(service_type: T, service: T | None = None) ServiceCollectionABC

Adds a service with transient lifetime

Parameter:
service_type: Type

Type of the service

service: Callable

Object of the service

Returns:

self: cpl_core.dependency_injection.service_collection_abc.ServiceCollectionABC

add_translation()

Adds the CPL translation

abstract build_service_provider() ServiceProviderABC

Creates instance of the service provider

Returns:

Object of type cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

cpl_core.dependency_injection.service_descriptor module

class cpl_core.dependency_injection.service_descriptor.ServiceDescriptor(implementation: type | object | None, lifetime: ServiceLifetimeEnum, base_type=None)

Bases: object

Descriptor of a service

Parameter:
implementation: Union[type, Optional[object]]

Object or type of service

lifetime: cpl_core.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum

Lifetime of the service

property base_type: type
property implementation: type | object | None
property lifetime: ServiceLifetimeEnum
property service_type: type

cpl_core.dependency_injection.service_lifetime_enum module

class cpl_core.dependency_injection.service_lifetime_enum.ServiceLifetimeEnum(value)

Bases: Enum

An enumeration.

scoped = 1
singleton = 0
transient = 2

cpl_core.dependency_injection.service_provider module

class cpl_core.dependency_injection.service_provider.ServiceProvider(service_descriptors: list[cpl_core.dependency_injection.service_descriptor.ServiceDescriptor], config: ConfigurationABC, db_context: DatabaseContextABC | None)

Bases: ServiceProviderABC

Provider for the services

Parameter

service_descriptors: list[cpl_core.dependency_injection.service_descriptor.ServiceDescriptor]

Descriptor of the service

config: cpl_core.configuration.configuration_abc.ConfigurationABC

CPL Configuration

db_context: Optional[cpl_core.database.context.database_context_abc.DatabaseContextABC]

Database representation

build_by_signature(sig: Signature) list[T]
build_service(service_type: type, *args, **kwargs) object

Creates instance of given type

Parameter

instance_type: type

The type of the searched instance

Returns

Object of the given type

create_scope() ScopeABC

Creates a service scope

Returns

get_service(service_type: T, *args, **kwargs) T | None

Returns instance of given type

Parameter

instance_type: cpl_core.type.T

The type of the searched instance

Returns

Object of type Optional[cpl_core.type.T]

get_services(service_type: T, *args, **kwargs) list[Optional[T]]

Returns instance of given type

Parameter

instance_type: cpl_core.type.T

The type of the searched instance

Returns

Object of type list[Optional[cpl_core.type.T]

set_scope(scope: ScopeABC)

Sets the scope of service provider

Parameter

cpl_core.dependency_injection.service_provider_abc module

class cpl_core.dependency_injection.service_provider_abc.ServiceProviderABC

Bases: ABC

ABC for the class cpl_core.dependency_injection.service_provider.ServiceProvider

abstract build_by_signature(sig: Signature) list[T]
abstract build_service(service_type: type, *args, **kwargs) object

Creates instance of given type

Parameter

instance_type: type

The type of the searched instance

Returns

Object of the given type

abstract create_scope() ScopeABC

Creates a service scope

Returns

abstract get_service(instance_type: T, *args, **kwargs) T | None

Returns instance of given type

Parameter

instance_type: cpl_core.type.T

The type of the searched instance

Returns

Object of type Optional[cpl_core.type.T]

abstract get_services(service_type: T, *args, **kwargs) list[Optional[T]]

Returns instance of given type

Parameter

instance_type: cpl_core.type.T

The type of the searched instance

Returns

Object of type list[Optional[cpl_core.type.T]

classmethod inject(f=None)

Decorator to allow injection into static and class methods

Parameter

f: Callable

Returns

function

classmethod set_global_provider(provider: ServiceProviderABC)
abstract set_scope(scope: ScopeABC)

Sets the scope of service provider

Parameter

Module contents

cpl-core CPL core

CPL core package

copyright:
  1. 2020 - 2023 sh-edraft.de

license:

MIT, see LICENSE for more details.

class cpl_core.dependency_injection.VersionInfo(major, minor, micro)

Bases: tuple

major

Alias for field number 0

micro

Alias for field number 2

minor

Alias for field number 1