{"id":23549,"library":"distconfig3","title":"distconfig3","description":"A library for managing configuration using Zookeeper, Etcd, or Consul as backends. Version 1.0.1 is a fork of the original distconfig with Python 2.7 and six/ujson dependencies removed. Release cadence is low; no new commits since 2021.","status":"active","version":"1.0.1","language":"python","source_language":"en","source_url":"https://github.com/alexferl/distconfig","tags":["configuration","etcd","consul","zookeeper","distributed"],"install":[{"cmd":"pip install distconfig3","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Required for etcd backend","package":"python-etcd","optional":true},{"reason":"Required for Consul backend","package":"python-consul","optional":true},{"reason":"Required for Zookeeper backend","package":"kazoo","optional":true}],"imports":[{"note":"Standard import for the main class","symbol":"DistConfig3","correct":"from distconfig3 import DistConfig3"}],"quickstart":{"code":"import os\nfrom distconfig3 import DistConfig3\ndc = DistConfig3(\n    backend='etcd',\n    host=os.environ.get('ETCD_HOST', 'localhost'),\n    port=os.environ.get('ETCD_PORT', 2379),\n    base_path='/myapp'\n)\n# Assuming the key 'database.url' exists in /myapp\nprint(dc.get('database.url'))","lang":"python","description":"Quickstart: create a DistConfig3 instance with an etcd backend, then get a configuration value."},"warnings":[{"fix":"Consider migrating to a more active configuration library if needed.","message":"The original distconfig library is unmaintained; distconfig3 is a fork that removes Python 2.7 support. No further updates expected.","severity":"deprecated","affected_versions":"all"},{"fix":"Use backend='etcd' (or 'consul', 'zookeeper') in DistConfig3 constructor.","message":"Backend classes (e.g., EtcdBackend) are not directly exposed; must use the backend name string.","severity":"gotcha","affected_versions":"1.x"},{"fix":"Always set a non-empty base_path to avoid collisions.","message":"Keys in the backend are expected to be under a base_path; if base_path is empty, keys may conflict.","severity":"gotcha","affected_versions":"1.x"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"pip install python-etcd","cause":"Missing optional dependency for etcd backend.","error":"ImportError: No module named 'etcd'"},{"fix":"Upgrade to distconfig3>=1.0.1.","cause":"Using Python 3.10+ where collections.Mapping is removed; version 1.0.1 fixed this by using collections.abc.","error":"AttributeError: module 'collections' has no attribute 'Mapping'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}