Skip to main content

Python client for AgileConfig with WebSocket updates and environment fallback

Project description

agileconfig-python

CI Publish PyPI version Python versions

Python client for AgileConfig. The client loads configuration over HTTP, listens for reload notifications over WebSocket, and falls back to os.environ when the server is unavailable.

Installation

python -m pip install agileconfig-python

Usage

from agileconfig_python import AgileConfigLoader

loader = AgileConfigLoader(
	url="wss://config.example.com/ws",
	app_id="my-app",
	secret="your-secret",
	env="DEV",
)

database_host = str(loader.get_var("host", prefix="database"))
loader.stop()

The initial HTTP request populates the cache. When AgileConfig publishes a reload event, the cache is refreshed. If the server cannot be reached within the configured timeout, get_var_value reads the variable name from the process environment and ignores its prefix.

Singleton behavior and safety notes

AgileConfigLoader is a process-wide singleton. Creating it multiple times in the same Python process returns the same instance and does not reinitialize it.

Important implications:

  • Do not assume a second AgileConfigLoader(...) call with different credentials or URL will switch connections. The first initialization wins for the process lifetime.
  • Avoid creating loaders in many modules with different parameters. Prefer one startup location and reuse that instance.
  • Calling loader.stop() stops the shared background listener for the singleton. Other parts of your app using the same loader will stop receiving updates.
  • In tests, call stop() during teardown to avoid background-thread leakage across test cases.
  • If your process forks workers, create the loader inside each worker process after fork, not in the parent before fork.

API

  • AgileConfigLoader(url, app_id, secret, env) creates the singleton loader and starts its listener.
  • loader.get_var_value(var_name, prefix="") returns the current value, or an environment fallback.
  • loader.get_var(var_name, prefix="") returns a lazy string-like proxy that reads the latest value when converted with str().
  • loader.stop() closes the WebSocket and stops the listener thread.

Development

python -m pip install --upgrade pip build
python -m pip install -e .
python -m unittest discover -s unit_tests -v
python -m build

The live integration tests embedded in the source require an AgileConfig server and are not run by the offline unit-test command.

Release checklist

  1. Update version in pyproject.toml.
  2. Run the unit tests and python -m build.
  3. Inspect both artifacts with python -m twine check dist/*.
  4. Upload to TestPyPI and install the uploaded version in a clean environment.
  5. Create a Git tag matching the version, for example v0.1.0.
  6. Publish to PyPI with a trusted publisher or twine upload dist/*.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agileconfig_python-0.1.4.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agileconfig_python-0.1.4-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file agileconfig_python-0.1.4.tar.gz.

File metadata

  • Download URL: agileconfig_python-0.1.4.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for agileconfig_python-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a8ffd83d8b35a1b0f99da0ea56d9f342ab0a544b96ce748637d68876a1382a3e
MD5 8ebdc39382cdb6bd98dc7277e73e9cfc
BLAKE2b-256 d6dd611fe312c0878bb89f2c62b63c1792c48f9dc36214c145a1c1c22b5999b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for agileconfig_python-0.1.4.tar.gz:

Publisher: publish.yml on IshootLaser/agileconfig-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agileconfig_python-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for agileconfig_python-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a9aed5c68da198d75b8e6975dadad4ee5ddbb13a459fdd4e239268e00a1a1131
MD5 4c3aaf3f8e5291d750edca2632bcc32c
BLAKE2b-256 253034aa12c1543e56f6209d06045a98e92ca89813ad138fe894624dc08470c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for agileconfig_python-0.1.4-py3-none-any.whl:

Publisher: publish.yml on IshootLaser/agileconfig-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page