This project brings (at least partially) the ability of providing properties files like Spring Framework but now in whatever Python context.
Project description
Application-Profiles
This project brings (at least partially) the ability of providing properties files like Spring Framework but now in whatever Python context.
How to use it
pip install application-profiles
Import
from application_profiles import ApplicationProfiles
...
profiles = ApplicationProfiles()
...
a_prop :ApplicationProfiles = profiles.properties['a_prop']
Select the desired profile(s) by using Environment Variable
One profile
export APP_PROFILES=dev
List of profile
export APP_PROFILES=dev,red,south
Select the desired profile(s) by constructor argument
One profile
profiles = ApplicationProfiles(profiles="dev")
List of profile
profiles = ApplicationProfiles(profiles="dev,red,south")
How it work?
'profiles' Python module
Before moving on, there are several requirements to accomplish, the first one is having in the root of your project a module called profiles
, where your properties files will be placed.
Like this
profiles/
__init__.py
application.yaml
application-dev.yaml
...
Properties Files
Inside the profiles
module, you must place all the properties files to be included in your project. There is a convention required to name them, like in Spring, the prefix of all the files must be application
followed by the name of the desired profile, like for example dev
, test
etc., joined by a hyphen -
, here you go a list of common examples
application-dev.yaml
application-prod.yaml
application-int.yaml
Important
The default profile is application.yaml
(without a profile name), this file is optional but it is consedered the "default" profile.
Load Precedence
This is something crucial for the library, there is a precedence in how the files are loaded. The profiles files are loaded in the following order:
1.- default
profile.
2.- All the profiles in the provided order by the profile
constructor argument.
3.- All the profiles in the provided order by the APP_PROFILES
environment variable.
Properties are merged in that order, then they are consumables through the ApplicationProfiles
object.
How the properties are merged?
This point is extremely important, because there are a couple of restrictions in how this library works
-
Lists : if there is a variable in more than one profile that contains a list, it is replaced entirely with the corresponding value.
-
Dictionaries: all dictionaries are scanned in deep replacing coincidences for native raw data types like numbers, strings, booleans. It includes nested dictionaries.
Run it in local
This project uses Poetry
, in case you don't have it just run make install-poetry
Create a local env & Install dependencies*
make install
Run the Tests Suite
make test
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
File details
Details for the file application_profiles-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: application_profiles-0.2.0-py3-none-any.whl
- Upload date:
- Size: 5.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.10.13 Linux/6.2.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | df36ed2a6cbcb5e677c2c38ac53530fba0c93ac3d2467ad324b5aeae93e61efc |
|
MD5 | f0e2c2103c59b8678584f58bc9df8e3d |
|
BLAKE2b-256 | 51ec83911b61a57bb0f1715dc66aca6145ea8bff32932012a6b404b6a35594c3 |