{"id":22306570,"url":"https://github.com/saviornt/pydantic-settings","last_synced_at":"2025-03-26T23:13:44.156Z","repository":{"id":264581975,"uuid":"893725997","full_name":"saviornt/Pydantic-Settings","owner":"saviornt","description":"A dynamic Python library for managing environment variables, configurations, and secrets using Pydantic. Supports async workflows, encrypted .env files, and optional integrations with AWS, Azure, and Google Cloud.","archived":false,"fork":false,"pushed_at":"2024-11-28T12:11:07.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T23:13:40.670Z","etag":null,"topics":["async-python","aws","azure","configuration-management","dotenv","encryption","environment-variables","google-cloud","pydantic","python-3","python-library","secrets-management"],"latest_commit_sha":null,"homepage":"https://www.github.com/saviornt/Pydantic-Settings","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saviornt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-25T05:14:37.000Z","updated_at":"2024-11-28T12:11:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"85983e1f-9216-4bd1-a1b8-891a0388a842","html_url":"https://github.com/saviornt/Pydantic-Settings","commit_stats":null,"previous_names":["saviornt/pydantic-settings"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saviornt%2FPydantic-Settings","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saviornt%2FPydantic-Settings/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saviornt%2FPydantic-Settings/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saviornt%2FPydantic-Settings/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saviornt","download_url":"https://codeload.github.com/saviornt/Pydantic-Settings/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245749907,"owners_count":20666086,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async-python","aws","azure","configuration-management","dotenv","encryption","environment-variables","google-cloud","pydantic","python-3","python-library","secrets-management"],"created_at":"2024-12-03T19:52:09.444Z","updated_at":"2025-03-26T23:13:44.137Z","avatar_url":"https://github.com/saviornt.png","language":"Python","readme":"# PydanticSettings\n\n**PydanticSettings** is a powerful Python library designed to streamline the management of environment variables, configurations, and secrets in Python projects. It integrates Pydantic's robust validation capabilities, supports encrypted `.env` files, and offers optional integration with AWS, Azure, and Google secrets managers.\n\n## Features\n\n- **Environment Management**:\n  - Load and validate `.env` files with Pydantic's strong typing.\n  - Support for nested variables (e.g., `DATABASE__USER`).\n  - Dynamically merge settings from `.env`, YAML, JSON, and secrets managers.\n\n- **Secrets Management**:\n  - Integration with AWS Secrets Manager, Azure Key Vault, and Google Cloud Secret Manager.\n  - Encrypted `.env` fallback for local secrets management.\n\n- **Environment Profiles**:\n  - Easily switch between `Development`, `Production`, and `Testing` profiles.\n\n- **Utilities**:\n  - Export settings to JSON or YAML.\n  - Command-line interface (CLI) for validation and encryption.\n  - Encrypt an existing `.env` file securely for production use.\n\n- **Async Testing Utilities**:\n  - Mock environment variables, secrets, and profiles.\n  - Validate settings asynchronously.\n\n## Installation\n\n### Core Library\n\n**Install the library from GitHub:**\n\n```bash\npip install git+https://github.com/saviornt/Pydantic-Settings.git\n```\n\n### Optional Integrations\n\n**AWS Secrets Manager:**\n\n```bash\npip install git+https://github.com/\u003cusername\u003e/\u003crepository\u003e.git#egg=PydanticSettings[aws]\n```\n\n**Azure Key Vault:**\n\n``` bash\npip install git+https://github.com/\u003cusername\u003e/\u003crepository\u003e.git#egg=PydanticSettings[azure]\n```\n\n**Google Cloud Secret Manager:**\n\n``` bash\npip install git+https://github.com/\u003cusername\u003e/\u003crepository\u003e.git#egg=PydanticSettings[google]\n```\n\n**Install with all integrations:**\n\n```bash\npip install git+https://github.com/\u003cusername\u003e/\u003crepository\u003e.git#egg=PydanticSettings[aws,azure,google]\n```\n\n## Quick Start\n\n### Loading Settings\n\n```python\nimport asyncio\nfrom PydanticSettings import pydantic_settings\n\nasync def main():\n    settings = await pydantic_settings.load_env()\n    print(settings.app_name)\n\nasyncio.run(main())\n```\n\n### Encrypting a .env File\n\n```python\nfrom PydanticSettings import pydantic_settings\n\n# Encrypt an existing .env file\npydantic_settings.encrypt_env_file(\".env\")\n```\n\n### Validating Settings (Async)\n\n```python\nimport asyncio\nfrom PydanticSettings import unit_testing, EnvironmentSettings\n\nasync def test_example():\n    # Mock environment variables\n    async with unit_testing.mock_env_vars({\"APP_NAME\": \"TestApp\"}):\n        assert os.getenv(\"APP_NAME\") == \"TestApp\"\n\n    # Validate settings\n    mock_env = {\"APP_NAME\": \"ValidApp\", \"DEBUG\": \"false\", \"PORT\": \"8080\"}\n    assert await unit_testing.validate_settings(EnvironmentSettings, mock_env)\n\nasyncio.run(test_example())\n```\n\n## CLI Usage\n\n### Validate a .env File\n\n```bash\npydantic_settings validate-env .env\n```\n\n### Encrypt a .env File\n\n```bash\npydantic_settings encrypt-env .env\n```\n\n### Decrypt an .env.encrypted File\n\n```bash\npydantic_settings decrypt-env .env.encrypted\n```\n\n## Advanced Features\n\n### Switching Profiles\n\n```python\nfrom PydanticSettings import pydantic_settings\n\npydantic_settings.set_environment(\"Production\")\n```\n\n### Using Secrets Managers\n\n- AWS Secrets Manager: `Set SECRETS_MANAGER=secretsmanager` in your `.env` file.\n- Azure Key Vault: Set `SECRETS_MANAGER=keyvault` and provide `AZURE_VAULT_URL`.\n- Google Cloud Secret Manager: Set `SECRETS_MANAGER=google_secret_manager` and provide `GOOGLE_PROJECT_ID`.\n\n### Export Settings to YAML or JSON\n\n```python\nCopy code\nfrom PydanticSettings import export_settings\n\nsettings_dict = {\"app_name\": \"MyApp\", \"debug\": True}\nprint(export_settings(settings_dict, format=\"yaml\"))\n```\n\n## Contribution\n\nWe welcome contributions! Please fork the repository and submit a pull request with detailed changes.\n\n## License\n\nThis library is licensed under the MIT License. See the LICENSE file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaviornt%2Fpydantic-settings","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaviornt%2Fpydantic-settings","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaviornt%2Fpydantic-settings/lists"}