Metadata-Version: 2.4
Name: envv
Version: 1.0.0
Summary: Official EnvVault Python SDK — centralized secrets management
Author: EnvVault Team
License: MIT
Project-URL: Homepage, https://git.netsphere360.com/envvault/envvault-sdk
Project-URL: Repository, https://git.netsphere360.com/envvault/envvault-sdk
Keywords: envvault,secrets,management,sdk,vault
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Security
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.28.0

# envvault (Python SDK)

Official Python SDK for [EnvVault](https://git.netsphere360.com/envvault) — centralized secrets management.

## Installation

```bash
pip install envvault
```

**Requires Python >= 3.10.**

## Quick Start

```python
from envvault import EnvVaultClient

client = EnvVaultClient(
    api_url="https://api.envvault.example.com",
    token="your-token",
)

# Or rely on env vars: ENVVAULT_API_URL, ENVVAULT_TOKEN
# Or config file: ~/.envv/config.json

value = client.get_secret("DATABASE_URL")
secrets = client.list_secrets()
client.set_secret("API_KEY", "sk-...")
client.delete_secret("OLD_KEY")
```

## Configuration Priority

| Priority | Source |
|----------|--------|
| 1 (highest) | Constructor args (`api_url`, `token`) |
| 2 | Environment variables (`ENVVAULT_API_URL`, `ENVVAULT_TOKEN`) |
| 3 (lowest) | Config file (`~/.envv/config.json`) |

## Error Handling

```python
from envvault import EnvVaultClient, AuthenticationError, NotFoundError

client = EnvVaultClient(api_url="...", token="...")

try:
    value = client.get_secret("MY_KEY")
except AuthenticationError:
    print("Invalid token")
except NotFoundError:
    print("Secret not found")
```

## License

[MIT](../../LICENSE)
