"""1Password CLI Python Wrapper with Pydantic Settings Integration.

This package provides a Python wrapper around the 1Password CLI that enables
automatic secret injection from 1Password vaults. It integrates seamlessly with
Pydantic Settings for configuration management with secrets.

Features:
    - Automatic detection and injection of op:// secret references
    - Full Pydantic Settings integration with pre-validation secret injection
    - Type-safe with full type hints and py.typed marker
    - Preserves non-string types in dictionaries (int, float, bool, None, lists)
    - CLI health checks with clear error messages
    - Timeout protection to prevent hanging on CLI calls

Basic Usage:
    >>> from scottzach1.onepassword_cli import inject_string_1password
    >>> secret = inject_string_1password("op://vault/item/password")
    >>> print(secret)  # Prints the actual password value

Pydantic Settings Usage:
    >>> from scottzach1.onepassword_cli import OnePasswordSettings
    >>> class AppSettings(OnePasswordSettings):
    ...     database_url: str = "op://vault/database/url"
    ...     api_key: str = "op://vault/api/key"
    ...     port: int = 8080
    >>> settings = AppSettings()
    >>> print(settings.database_url)  # Actual secret value
    >>> print(settings.port)  # 8080 (preserved)
"""

__version__ = "1.0.0"

from scottzach1.onepassword_cli.exceptions import (
    OnePasswordCLIError,
    OnePasswordException,
    OnePasswordNotAuthenticatedError,
    OnePasswordNotInstalledError,
    SecretInjectionError,
)
from scottzach1.onepassword_cli.injector import (
    inject_dictionary_1password,
    inject_string_1password,
)
from scottzach1.onepassword_cli.settings import OnePasswordSettings

__all__ = (
    "__version__",
    "inject_string_1password",
    "inject_dictionary_1password",
    "OnePasswordSettings",
    "OnePasswordException",
    "OnePasswordCLIError",
    "OnePasswordNotInstalledError",
    "OnePasswordNotAuthenticatedError",
    "SecretInjectionError",
)
