__version__: str try: # _version.py is auto-generated by hatch-vcs during build from git tags from cyclopts._version import __version__ # type: ignore[import-not-found] except ImportError: __version__ = "0.0.0.dev0" __all__ = [ "__version__", "App", "Argument", "ArgumentCollection", "ArgumentOrderError", "Token", "CoercionError", "CombinedShortOptionError", "CommandCollisionError", "CycloptsError", "CycloptsPanel", "Dispatcher", "DocstringError", "EditorError", "EditorNotFoundError", "EditorDidNotSaveError", "EditorDidNotChangeError", "Group", "UnknownCommandError", "MissingArgumentError", "ConsumeMultipleError", "MixedArgumentError", "RepeatArgumentError", "RequiresEqualsError", "Parameter", "ResultAction", "resolve_returncode", "UnknownOptionError", "UnusedCliTokensError", "UNSET", "ValidationError", "config", "convert", "default_name_transform", "edit", "env_var_split", "types", "validators", "run", ] from cyclopts._convert import convert from cyclopts._env_var import env_var_split from cyclopts._result_action import ResultAction, resolve_returncode from cyclopts._run import run from cyclopts.argument import Argument, ArgumentCollection from cyclopts.core import App from cyclopts.exceptions import ( ArgumentOrderError, CoercionError, CombinedShortOptionError, CommandCollisionError, ConsumeMultipleError, CycloptsError, DocstringError, MissingArgumentError, MixedArgumentError, RepeatArgumentError, RequiresEqualsError, UnknownCommandError, UnknownOptionError, UnusedCliTokensError, ValidationError, ) from cyclopts.group import Group from cyclopts.panel import CycloptsPanel from cyclopts.parameter import Parameter from cyclopts.protocols import Dispatcher from cyclopts.token import Token from cyclopts.utils import UNSET, default_name_transform # Lazy imports for opt-in features (saves ~6ms on import) # These modules are only loaded when explicitly accessed by user code _LAZY_IMPORTS = { # Submodules - opt-in features not needed for basic CLI parsing "config": "cyclopts.config", # Configuration file parsing (JSON, TOML, YAML, env) "types": "cyclopts.types", # ~3ms - special types like ResolvedExistingPath "validators": "cyclopts.validators", # ~2ms - validators like Number, Path # Editor functionality - rarely used "edit": "cyclopts._edit", # ~4ms "EditorError": "cyclopts._edit", "EditorNotFoundError": "cyclopts._edit", "EditorDidNotSaveError": "cyclopts._edit", "EditorDidNotChangeError": "cyclopts._edit", } def __getattr__(name: str): """Lazy-load opt-in features and rarely-used functionality.""" if name in _LAZY_IMPORTS: import importlib module_path = _LAZY_IMPORTS[name] if name in ("config", "types", "validators"): # These are submodules, import the module itself module = importlib.import_module(module_path) globals()[name] = module return module else: # These are attributes from modules (e.g., edit, EditorError) module = importlib.import_module(module_path) value = getattr(module, name) globals()[name] = value return value raise AttributeError(f"module {__name__!r} has no attribute {name!r}")