tombulled / roster

Python object registers. Keep track of your classes, functions and data.

Home Page:https://pypi.org/project/roster/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

roster

Python object registers. Keep track of your classes, functions and data.

Installation

roster can be installed from PyPI

pip install roster

Usage:

Record

Default Record

from roster import Record

numbers: Record[int] = Record()

numbers(1)
numbers(2)
numbers(3)
>>> numbers
[1, 2, 3]

Generate each item

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']

Register

Default Register

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'>}

Generate each key

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>}

Generate each value

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'}

Generate each entry

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'}

About

Python object registers. Keep track of your classes, functions and data.

https://pypi.org/project/roster/

License:MIT License


Languages

Language:Python 100.0%