Metadata-Version: 2.5
Name: param-store
Version: 0.3.0
Summary: Parameter store for secrets
Project-URL: Homepage, https://github.com/labd/python-param-store
Author-email: "Lab Digital B.V." <opensource@labdigital.nl>
License-Expression: MIT
License-File: LICENSE
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 5.2
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.11
Requires-Dist: boto3
Description-Content-Type: text/x-rst

===========
param-store
===========

.. image:: https://img.shields.io/pypi/v/param-store
    :target: https://pypi.org/project/param-store/
    :alt: PyPI

.. image:: https://github.com/labd/python-param-store/actions/workflows/python-test.yml/badge.svg
    :target: https://github.com/labd/python-param-store/actions/workflows/python-test.yml
    :alt: Python Tests

param-store works with parameter stores (e.g. EC2 Parameter Store) to resolve specific parameters.
It is designed to be pluggable so that stores can be created for e.g. Vault or Azure Key Vault.

A use-case is to store secrets in the EC2 parameter store and resolve them automatically.

Installation
============

.. code-block:: shell

   pip install param-store


Usage
=====

As a standalone package

.. code-block:: python

    from param_store import EC2ParameterStore
    from param_store import interpolate_dict

    data = {
        'key': 'my-secret-{{ parameter-1 }}'
    }

    store = EC2ParameterStore()
    result = interpolate_dict(data, store)
    assert result[key] == 'my-secret-password'


In combination with django-environ

.. code-block:: python

    from environ import Env
    from param_store import EC2ParameterStore
    from param_store.contrib import resolve_django_environ

    env = Env()
    store = EC2ParameterStore()
    resolve_django_environ(env, store)

Releasing
=========

Releases are managed with `changie <https://changie.dev>`_:

1. Add a changelog entry to your pull request with ``changie new``.
2. After merging to ``master``, a release pull request is opened (or updated)
   automatically, with the new version and the updated ``CHANGELOG.md``.
3. Merging the release pull request creates the GitHub release, which publishes
   the package to PyPI.
