Aller au contenu

Référence — factory.py

Ce module gère le chargement dynamique des providers via importlib. Les classes sont mises en cache avec lru_cache pour éviter les imports répétitifs.

Enum PaymentProviderPath

Dot-paths vers les classes clients de chaque provider.

paygate_africa.factory.PaymentProviderPath

Bases: str, Enum

Registry of dot-paths pointing to each provider's implementation.

Source code in src/paygate_africa/factory.py
@unique
class PaymentProviderPath(str, Enum):
    """
    Registry of dot-paths pointing to each provider's implementation.
    """
    KKIAPAY = "paygate_africa.kkiapay.client.KkiapayProvider"
    CINETPAY = "paygate_africa.cinetpay.client.CinetPayProvider"

Enum ProviderSettingsPath

Dot-paths vers les classes settings de chaque provider.

paygate_africa.factory.ProviderSettingsPath

Bases: str, Enum

Registry of dot-paths pointing to each provider's settings.

Source code in src/paygate_africa/factory.py
@unique
class ProviderSettingsPath(str, Enum):
    """
    Registry of dot-paths pointing to each provider's settings.
    """
    KKIAPAY = "paygate_africa.kkiapay.settings.KkiapaySettings"
    CINETPAY = "paygate_africa.cinetpay.settings.CinetPaySettings"

Fonctions

paygate_africa.factory.validate_payment_provider(provider_name)

Ensures a given provider name is recognized by the library.

Source code in src/paygate_africa/factory.py
def validate_payment_provider(provider_name: str) -> str:
    """
    Ensures a given provider name is recognized by the library.
    """
    if provider_name.upper() not in PaymentProviderPath.__members__:
        raise ValueError(f"Unknown payment provider: {provider_name}")
    return provider_name.upper()

paygate_africa.factory.load_provider_class(dot_path) cached

Dynamically loads a class from its dot-path.

Source code in src/paygate_africa/factory.py
@lru_cache
def load_provider_class(dot_path: str):
    """
    Dynamically loads a class from its dot-path.
    """
    module_path, class_name = dot_path.rsplit(".", 1)
    module = importlib.import_module(module_path)
    return getattr(module, class_name)

paygate_africa.factory.select_provider(dot_path)

Factory function to instantiate a provider from its dot-path.

Source code in src/paygate_africa/factory.py
def select_provider(dot_path: str) -> PaymentProvider:
    """
    Factory function to instantiate a provider from its dot-path.
    """
    provider_class = load_provider_class(dot_path)
    return provider_class()