Skip to content

Fastbase

Bases: FastbaseDependency

Source code in fastbase/main.py
class Fastbase(FastbaseDependency):
    _instance = None
    _lock = threading.Lock()
    async_session: AsyncSession
    User: Type[USER]

    def __new__(cls):
        """
        Singleton pattern
        !!! note
            - [https://stackabuse.com/creating-a-singleton-in-python/](https://stackabuse.com/creating-a-singleton-in-python/)
            - [https://chat.openai.com/c/1305cb84-5417-4bbb-86b7-401346f846c9](https://chat.openai.com/c/1305cb84-5417-4bbb-86b7-401346f846c9)
            - [https://bard.google.com/chat/e2fcdd7109d1a5c0](https://bard.google.com/chat/e2fcdd7109d1a5c0)
        """
        with cls._lock:
            if not cls._instance:
                cls._instance = super().__new__(cls)
        return cls._instance

    # TESTME: Untested
    def initialize(self, *, async_session: AsyncSession, user_model: Type[USER]):
        """Use instead of __init__ since it uses the singleton pattern."""
        self.async_session = async_session
        self.User = user_model

Attributes

User: Type[USER] instance-attribute

async_session: AsyncSession instance-attribute

Functions

__new__()

Singleton pattern

Source code in fastbase/main.py
def __new__(cls):
    """
    Singleton pattern
    !!! note
        - [https://stackabuse.com/creating-a-singleton-in-python/](https://stackabuse.com/creating-a-singleton-in-python/)
        - [https://chat.openai.com/c/1305cb84-5417-4bbb-86b7-401346f846c9](https://chat.openai.com/c/1305cb84-5417-4bbb-86b7-401346f846c9)
        - [https://bard.google.com/chat/e2fcdd7109d1a5c0](https://bard.google.com/chat/e2fcdd7109d1a5c0)
    """
    with cls._lock:
        if not cls._instance:
            cls._instance = super().__new__(cls)
    return cls._instance

initialize(*, async_session, user_model)

Use instead of init since it uses the singleton pattern.

Source code in fastbase/main.py
def initialize(self, *, async_session: AsyncSession, user_model: Type[USER]):
    """Use instead of __init__ since it uses the singleton pattern."""
    self.async_session = async_session
    self.User = user_model