consul-options - Define and use your project settings without pain
How often do you wonder where to store the project settings? When your project is small it is not a big problem. But if your big project consists of dozens of microservices then there is a problem of centralized configuration management. The Сonsul have a key/value storage that is ideal for this.
With consul-options you can define and use options in your code by a simple and elegant way. Just take a look at the example:
class DB(ConsulKV):
pass
class Users(DB):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
dbname = 'users'
class Orders(DB):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
dbname = 'orders'
Now you can access option values in a clear way:
from consul_options import options
print options.db.users.host
print options.db.orders.dbname
consul-options automagically creates folders and keys with default values defined above in Consul and later read them from there. So if anyone will change the value of db/orders/host key to something different in Consul then you will get that value.
How project options stored in Consul
When you declare a new class based on ConsulKV default bahavior is creation a folder in Consul key/value storage with name of your class in lowercase. Each class attribute you define will have mapping to key folder/key. If you don’t agree with generated folder name you are free to choose any other with reserved class attribute __key__ as shown below:
class WorkerOptions(ConsulKV):
__key__ = 'worker'
host = '127.0.0.1'
port = 80
After that you can access to the option with “worker” in path:
from consul_options import options
print options.worker.host
print options.worker.port
To create hierarchical key structure you can take advantage of usual class hierarchy:
from consul_options import ConsulKV, options
class WorkerOptions(ConsulKV):
__key__ = 'worker'
host = '127.0.0.1'
port = 80
class DB(WorkerOptions):
host = '127.0.0.1'
port = 5432
user = 'postgres'
password = 'postgres'
print options.worker.db.host # 'host'
print options.worker.db.port # 5432
It is also possible to create keys at root level with class attribute __root__:
class RootOptions(ConsulKV):
__root__ = True
host = '127.0.0.1'
port = 80
print options.host
print options.port
Compatibility
consul-options is compatible with both Python 2 and Python 3.
Installation
Use pip to install:
$ pip install consul-options
License
consul-options is developed and distributed under the Apache 2.0 license.
Metadata
Release files for consul-options 1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| consul-options-1.2.tar.gz | 4.2 kB | Without provenance | Details for consul-options-1.2.tar.gz |
Release files / consul-options-1.2.tar.gz
| Download URL | consul-options-1.2.tar.gz |
|---|---|
| Size | 4.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
87b4f4d1aa8a4f03151bd0a853a4dabe2cb85237672d29abfa898ac4049b03dd
|
|
BLAKE2b-256 checksum How to use checksums |
0c3eac99fad520ad36eaff98ef9acc863078027c909a39c201e8c36894605f3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for consul-options 1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.