Name | better-python-doppler JSON |
Version |
1.0.0
JSON |
| download |
home_page | None |
Summary | A simplified and up to date Python SDK for Doppler. Because their current one has stale docs and doesn't provide much IDE support. |
upload_time | 2025-07-28 19:29:56 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.12 |
license | None |
keywords |
doppler
skd
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
# Better Python Doppler
Better Python Doppler is a lightweight SDK around the [Doppler API](https://docs.doppler.com/reference). It wraps common API endpoints in simple Python classes and includes typed models for working with secrets.
## Installation
This project currently requires Python 3.12 or newer. Once published to PyPI it can be installed with `pip`:
```bash
pip install better-python-doppler
```
For local development clone the repository and install the dependencies:
```bash
pip install -e .
```
## Quick Start
The example below mirrors `examples/example_secrets.py` and demonstrates basic usage of the SDK. It assumes the environment variables `SERVICE_TOKEN`, `PROJECT_NAME`, `CONFIG_NAME` and `SECRET_NAME` are available.
```python
from better_python_doppler import Doppler
# Create the SDK instance
sdk = Doppler(service_token=os.getenv("SERVICE_TOKEN"))
# List secret names
names = sdk.Secrets.list_names(
project_name=os.getenv("PROJECT_NAME"),
config_name=os.getenv("CONFIG_NAME")
)
# Fetch all secrets
secrets = sdk.Secrets.list(
project_name=os.getenv("PROJECT_NAME"),
config_name=os.getenv("CONFIG_NAME")
)
# Retrieve a specific secret value
secret_value = sdk.Secrets.get(
os.getenv("PROJECT_NAME"),
os.getenv("CONFIG_NAME"),
os.getenv("SECRET_NAME")
)
print(secret_value.value.raw)
```
## Functionality
The SDK focuses on secrets management via the `Doppler.Secrets` interface defined in `secret.py`. Supported operations include:
- `list` – return detailed information for all secrets in a config.
- `list_names` – fetch only the secret names.
- `get` – retrieve a single secret as a `SecretModel`.
- `update` – update one or more secret values.
- `download` – download secrets in various formats (json, env, yaml, etc.).
- `delete` – delete a secret.
- `update_note` – modify the note on an existing secret.
Under the hood these call lightweight API wrappers located in `src/better_python_doppler/apis`. The project also exposes minimal data models in `src/better_python_doppler/models` such as `SecretModel` and `SecretValue` for convenient type checking.
Authentication is performed with a Doppler service token. You can pass the token directly when creating `Doppler` or load it from an environment variable using the `service_token_environ_name` parameter.
## License
This project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "better-python-doppler",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.12",
"maintainer_email": null,
"keywords": "Doppler, SKD",
"author": null,
"author_email": "Derek Banker <dbb2002@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/a8/64/57701ada70f18b1bb88546fc6aa31cceaf58dab99d1df812c3c09ed5ff58/better_python_doppler-1.0.0.tar.gz",
"platform": null,
"description": "# Better Python Doppler\n\nBetter Python Doppler is a lightweight SDK around the [Doppler API](https://docs.doppler.com/reference). It wraps common API endpoints in simple Python classes and includes typed models for working with secrets.\n\n## Installation\n\nThis project currently requires Python 3.12 or newer. Once published to PyPI it can be installed with `pip`:\n\n```bash\npip install better-python-doppler\n```\n\nFor local development clone the repository and install the dependencies:\n\n```bash\npip install -e .\n```\n\n## Quick Start\n\nThe example below mirrors `examples/example_secrets.py` and demonstrates basic usage of the SDK. It assumes the environment variables `SERVICE_TOKEN`, `PROJECT_NAME`, `CONFIG_NAME` and `SECRET_NAME` are available.\n\n```python\nfrom better_python_doppler import Doppler\n\n# Create the SDK instance\nsdk = Doppler(service_token=os.getenv(\"SERVICE_TOKEN\"))\n\n# List secret names\nnames = sdk.Secrets.list_names(\n project_name=os.getenv(\"PROJECT_NAME\"),\n config_name=os.getenv(\"CONFIG_NAME\")\n)\n\n# Fetch all secrets\nsecrets = sdk.Secrets.list(\n project_name=os.getenv(\"PROJECT_NAME\"),\n config_name=os.getenv(\"CONFIG_NAME\")\n)\n\n# Retrieve a specific secret value\nsecret_value = sdk.Secrets.get(\n os.getenv(\"PROJECT_NAME\"),\n os.getenv(\"CONFIG_NAME\"),\n os.getenv(\"SECRET_NAME\")\n)\nprint(secret_value.value.raw)\n```\n\n## Functionality\n\nThe SDK focuses on secrets management via the `Doppler.Secrets` interface defined in `secret.py`. Supported operations include:\n\n- `list` \u2013 return detailed information for all secrets in a config.\n- `list_names` \u2013 fetch only the secret names.\n- `get` \u2013 retrieve a single secret as a `SecretModel`.\n- `update` \u2013 update one or more secret values.\n- `download` \u2013 download secrets in various formats (json, env, yaml, etc.).\n- `delete` \u2013 delete a secret.\n- `update_note` \u2013 modify the note on an existing secret.\n\nUnder the hood these call lightweight API wrappers located in `src/better_python_doppler/apis`. The project also exposes minimal data models in `src/better_python_doppler/models` such as `SecretModel` and `SecretValue` for convenient type checking.\n\nAuthentication is performed with a Doppler service token. You can pass the token directly when creating `Doppler` or load it from an environment variable using the `service_token_environ_name` parameter.\n\n## License\n\nThis project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for details.\n",
"bugtrack_url": null,
"license": null,
"summary": "A simplified and up to date Python SDK for Doppler. Because their current one has stale docs and doesn't provide much IDE support.",
"version": "1.0.0",
"project_urls": null,
"split_keywords": [
"doppler",
" skd"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "ee793ae382de5679d11f9c8fd5b0831d526a5f0b910f773d80c7625e486e77e4",
"md5": "961a1d3e70e9e912a7adde03964691f2",
"sha256": "874a20c7fa933d5d7e56f00c32f7673f8c281e2a56b71da8ad5d3660a3936920"
},
"downloads": -1,
"filename": "better_python_doppler-1.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "961a1d3e70e9e912a7adde03964691f2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 15378,
"upload_time": "2025-07-28T19:29:55",
"upload_time_iso_8601": "2025-07-28T19:29:55.656800Z",
"url": "https://files.pythonhosted.org/packages/ee/79/3ae382de5679d11f9c8fd5b0831d526a5f0b910f773d80c7625e486e77e4/better_python_doppler-1.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a86457701ada70f18b1bb88546fc6aa31cceaf58dab99d1df812c3c09ed5ff58",
"md5": "6d9a860e22babe7ac3ac2296343b41e9",
"sha256": "c2c3bbbf4d8e0b0479956aa5864d931b1275ce786621992c00136782741847ee"
},
"downloads": -1,
"filename": "better_python_doppler-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "6d9a860e22babe7ac3ac2296343b41e9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 11752,
"upload_time": "2025-07-28T19:29:56",
"upload_time_iso_8601": "2025-07-28T19:29:56.445547Z",
"url": "https://files.pythonhosted.org/packages/a8/64/57701ada70f18b1bb88546fc6aa31cceaf58dab99d1df812c3c09ed5ff58/better_python_doppler-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-28 19:29:56",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "better-python-doppler"
}