Python object registers. Keep track of your classes, functions and data.
roster
can be installed from PyPI
pip install roster
from roster import Record
numbers: Record[int] = Record()
numbers(1)
numbers(2)
numbers(3)
>>> numbers
[1, 2, 3]
from roster import Record
characters: Record[str] = Record()
@characters.item
def character(char: str, /) -> str:
return char.upper()
character('a')
character('b')
character('c')
>>> characters
['A', 'B', 'C']
from roster import Register
services: Register[str, type] = Register()
@services('youtube')
class YouTube: pass
@services('spotify')
class Spotify: pass
>>> services
{'youtube': <class '__main__.YouTube'>, 'spotify': <class '__main__.Spotify'>}
from roster import Register
from typing import Callable
functions: Register[str, Callable] = Register()
@functions.key
def function(name: str, /) -> str:
return name.upper()
@function('foo')
def foo(): pass
@function('bar')
def bar(): pass
>>> functions
{'FOO': <function foo at 0x7f9c4f065790>, 'BAR': <function bar at 0x7f9c4f065820>}
from roster import Register
from typing import Callable
functions: Register[str, Callable] = Register()
@functions.value
def function(name: str, /) -> str:
return name.upper()
@function('foo')
def foo(): pass
@function('bar')
def bar(): pass
>>> functions
{<function foo at 0x7f26443aa790>: 'FOO', <function bar at 0x7f26443aa820>: 'BAR'}
from roster import Register
from typing import Tuple
identifiers: Register[str, str] = Register()
@identifiers.entry
def identifier(code: str, /) -> Tuple[str, str]:
return (code[0], code.upper())
identifier('foo')
identifier('bar')
>>> identifiers
{'f': 'FOO', 'b': 'BAR'}