Name | better-python-doppler JSON |
Version |
0.1.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-25 21:32:34 |
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/ce/94/9aa465f58346a06e4306c5ca677ca8b9807a759b39a6f7724a5a1a248e4b/better_python_doppler-0.1.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": "0.1.0",
"project_urls": null,
"split_keywords": [
"doppler",
" skd"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5307634ff45cbda247a2ea40661dc700218bbd23d020fb6af3830b5a384867b6",
"md5": "cbc8ee03db0178635ef9cd2207f84ade",
"sha256": "9825d6efb0a6249febb1214fa7d9405943c3146e47bf2da38c4fcbf4f16a47cd"
},
"downloads": -1,
"filename": "better_python_doppler-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cbc8ee03db0178635ef9cd2207f84ade",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.12",
"size": 15185,
"upload_time": "2025-07-25T21:32:33",
"upload_time_iso_8601": "2025-07-25T21:32:33.769776Z",
"url": "https://files.pythonhosted.org/packages/53/07/634ff45cbda247a2ea40661dc700218bbd23d020fb6af3830b5a384867b6/better_python_doppler-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ce949aa465f58346a06e4306c5ca677ca8b9807a759b39a6f7724a5a1a248e4b",
"md5": "6189fb7723b8ebb427399fc28c3a60f9",
"sha256": "9daf71ee5daeca5bf11f260c19352c873a9374f467a9ec4d0d1ac2da6c50d340"
},
"downloads": -1,
"filename": "better_python_doppler-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "6189fb7723b8ebb427399fc28c3a60f9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.12",
"size": 11588,
"upload_time": "2025-07-25T21:32:34",
"upload_time_iso_8601": "2025-07-25T21:32:34.949329Z",
"url": "https://files.pythonhosted.org/packages/ce/94/9aa465f58346a06e4306c5ca677ca8b9807a759b39a6f7724a5a1a248e4b/better_python_doppler-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-25 21:32:34",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "better-python-doppler"
}