diff --git a/mimesis/providers/generic.py b/mimesis/providers/generic.py index 6b51d1300..9abff3f6a 100644 --- a/mimesis/providers/generic.py +++ b/mimesis/providers/generic.py @@ -1,54 +1,35 @@ """Provides all at one.""" +import importlib import inspect import typing as t from mimesis.locales import Locale -from mimesis.providers.address import Address from mimesis.providers.base import BaseDataProvider, BaseProvider -from mimesis.providers.binaryfile import BinaryFile -from mimesis.providers.choice import Choice -from mimesis.providers.code import Code -from mimesis.providers.cryptographic import Cryptographic -from mimesis.providers.date import Datetime -from mimesis.providers.development import Development -from mimesis.providers.file import File -from mimesis.providers.finance import Finance -from mimesis.providers.food import Food -from mimesis.providers.hardware import Hardware -from mimesis.providers.internet import Internet -from mimesis.providers.numeric import Numeric -from mimesis.providers.path import Path -from mimesis.providers.payment import Payment -from mimesis.providers.person import Person -from mimesis.providers.science import Science -from mimesis.providers.text import Text -from mimesis.providers.transport import Transport from mimesis.types import MissingSeed, Seed __all__ = ["Generic"] -DEFAULT_PROVIDERS = ( - Address, - BinaryFile, - Finance, - Choice, - Code, - Choice, - Datetime, - Development, - File, - Food, - Hardware, - Internet, - Numeric, - Path, - Payment, - Person, - Science, - Text, - Transport, - Cryptographic, +DEFAULT_PROVIDERS: tuple[str, ...] = ( + "Address", + "BinaryFile", + "Finance", + "Choice", + "Code", + "Datetime", + "Development", + "File", + "Food", + "Hardware", + "Internet", + "Numeric", + "Path", + "Payment", + "Person", + "Science", + "Text", + "Transport", + "Cryptographic", ) @@ -65,6 +46,8 @@ def __init__( self.locale = locale for provider in DEFAULT_PROVIDERS: + module = importlib.import_module("mimesis.providers") + provider = getattr(module, provider) name = getattr(provider.Meta, "name") # type: ignore # Check if a provider is locale-dependent. diff --git a/mimesis/providers/generic.pyi b/mimesis/providers/generic.pyi new file mode 100644 index 000000000..4666e43b6 --- /dev/null +++ b/mimesis/providers/generic.pyi @@ -0,0 +1,44 @@ +import typing as t + +from mimesis import providers +from mimesis.locales import Locale +from mimesis.providers.base import BaseProvider +from mimesis.types import Seed + +__all__ = ["Generic"] + +class Generic(BaseProvider): + locale: Locale + # Locale-dependent providers + person: providers.Person + text: providers.Text + address: providers.Address + finance: providers.Finance + datetime: providers.Datetime + food: providers.Food + + # Locale-independent providers + cryptography: providers.Cryptographic + binaryfile: providers.BinaryFile + file: providers.File + code: providers.Code + path: providers.Path + choice: providers.Choice + numeric: providers.Numeric + payment: providers.Payment + hardware: providers.Hardware + development: providers.Development + internet: providers.Internet + science: providers.Science + transport: providers.Transport + + def __init__(self, locale: Locale = ..., seed: Seed = ...) -> None: ... + + class Meta: + name: t.Final[str] + def __getattr__(self, attrname: str) -> t.Any: ... + def __dir__(self) -> list[str]: ... + def reseed(self, seed: Seed = ...) -> None: ... + def add_provider(self, cls: t.Type[BaseProvider], **kwargs: t.Any) -> None: ... + def add_providers(self, *providers: t.Type[BaseProvider]) -> None: ... + def __iadd__(self, other: t.Type[BaseProvider]) -> Generic: ...