Provides decorator for creating components
Project description
Classic Components
Этот пакет предоставляет функциональность компонентов. Является частью проекта "Classic".
Главное, что предоставляет пакет - это декоратор component для обертывания классов. Класс, обернутый таким декоратором, называется далее компонентом, и обладает рядом свойств:
- автоматически сгенерированный конструктор на базе аннотаций.
- добавляет "дополнительные аннотации" к аннотациям класса (подробности далее)
- добавляет автоматическую регистрацию инстансов в указанных реестрах
Простой пример:
from classic.components import component
@component
class SomeService:
prop: int
def action(self):
print(self.prop)
service = SomeService(prop=1)
service.action() # prints 1
Генерацию конструктора можно отключить:
from classic.components import component
@component(init=False)
class SomeService:
prop: int
def action(self):
print(self.prop)
service = SomeService(prop=1) # TypeError: SomeService() takes no arguments
Реестры
Также пакет предоставляет интерфейс для создания реестров и базовую реализацию реестра со слабыми ссылками. Это нужно не столько для кода приложений, сколько для других библиотек в платформе.
from classic.components import component, Registry, WeakSetRegistry
@component(init=False)
class SomeService:
registry: Registry
def action(self):
print(self.prop)
registry = WeakSetRegistry()
service = SomeService(registry=registry)
print(registry.storage)
# {<weakref at 0x109390fe0; to 'SomeService' at 0x10933ec50>}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
classic-components-1.2.0.tar.gz
(10.2 kB
view details)
File details
Details for the file classic-components-1.2.0.tar.gz
.
File metadata
- Download URL: classic-components-1.2.0.tar.gz
- Upload date:
- Size: 10.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5bd69fd593cdd273022d1cd657b41d2a6f3183bdcf4a8ee08f1a124d387a76c6 |
|
MD5 | 58bff3f3ab6a56ffe1e7164adb5e9a45 |
|
BLAKE2b-256 | 62efa1c7c33871c50f49743c538206a79c23c2d421da73c71ca5901be43b715c |