1+ ======================================================== 
12Python Decouple: Strict separation of settings from code
23======================================================== 
34
@@ -22,8 +23,6 @@ for separating settings from code.
2223    :target:  https://pypi.python.org/pypi/python-decouple/ 
2324    :alt:  Latest PyPI version 
2425
25- 
26- 
2726.. contents :: Summary 
2827
2928
@@ -42,6 +41,7 @@ The first 2 are *project settings* and the last 3 are *instance settings*.
4241
4342You should be able to change *instance settings * without redeploying your app.
4443
44+ 
4545Why not just use environment variables?
4646--------------------------------------- 
4747
@@ -61,6 +61,7 @@ Since it's a non-empty string, it will be evaluated as True.
6161
6262*Decouple * provides a solution that doesn't look like a workaround: ``config('DEBUG', cast=bool) ``.
6363
64+ 
6465Usage
6566===== 
6667
@@ -88,8 +89,10 @@ Then use it on your ``settings.py``.
8889     EMAIL_HOST  =  config(' EMAIL_HOST'  , default = ' localhost'  ) 
8990     EMAIL_PORT  =  config(' EMAIL_PORT'  , default = 25 , cast = int ) 
9091
92+ 
9193 Encodings
9294--------- 
95+ 
9396Decouple's default encoding is `UTF-8 `.
9497
9598But you can specify your preferred encoding.
@@ -112,11 +115,13 @@ If you wish to fall back to your system's default encoding use:
112115    config.encoding =  locale.getpreferredencoding(False ) 
113116    SECRET_KEY  =  config(' SECRET_KEY'  ) 
114117
118+ 
115119 Where is the settings data stored?
116- -----------------------------------  
120+ ---------------------------------- 
117121
118122*Decouple * supports both *.ini * and *.env * files.
119123
124+ 
120125Ini file
121126~~~~~~~~ 
122127
@@ -134,6 +139,7 @@ Simply create a ``settings.ini`` next to your configuration module in the form:
134139
135140 *Note *: Since ``ConfigParser `` supports *string interpolation *, to represent the character ``% `` you need to escape it as ``%% ``.
136141
142+ 
137143Env file
138144~~~~~~~~ 
139145
@@ -148,6 +154,7 @@ Simply create a ``.env`` text file in your repository's root directory in the fo
148154    PERCENTILE=90% 
149155    #COMMENTED=42 
150156
157+ 
151158 Example: How do I use it with Django?
152159------------------------------------- 
153160
@@ -191,6 +198,7 @@ and `dj-database-url <https://pypi.python.org/pypi/dj-database-url/>`_.
191198
192199    #  ... 
193200
201+ 
194202 Attention with *undefined * parameters
195203~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
196204
@@ -201,6 +209,7 @@ If ``SECRET_KEY`` is not present in the ``.env``, *decouple* will raise an ``Und
201209
202210This *fail fast * policy helps you avoid chasing misbehaviours when you eventually forget a parameter.
203211
212+ 
204213Overriding config files with environment variables
205214~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
206215
@@ -297,6 +306,7 @@ Let's see some examples for the above mentioned cases:
297306
298307 As you can see, ``cast `` is very flexible. But the last example got a bit complex.
299308
309+ 
300310Built in Csv Helper
301311~~~~~~~~~~~~~~~~~~~ 
302312
@@ -340,6 +350,7 @@ By default *Csv* returns a ``list``, but you can get a ``tuple`` or whatever you
340350    >> >  config(' SECURE_PROXY_SSL_HEADER'  , cast = Csv(post_process = tuple )) 
341351    (' HTTP_X_FORWARDED_PROTO'  , ' https'  ) 
342352
353+ 
343354 Built in Choices helper
344355~~~~~~~~~~~~~~~~~~~~~~~ 
345356
@@ -383,56 +394,71 @@ You can also use a Django-like choices tuple:
383394    >> >  config(' CONNECTION_TYPE'  , cast = Choices(choices = CONNECTION_OPTIONS )) 
384395    ' bluetooth'  
385396
397+ 
386398 Frequently Asked Questions
387399========================== 
388400
401+ 
3894021) How to specify the `.env ` path?
390403---------------------------------- 
391404
392- ```python 
393- import os 
394- from decouple import Config, RepositoryEnv 
395- config = Config(RepositoryEnv("path/to/.env")) 
396- ` ``
405+ .. code-block :: python 
406+ 
407+     import  os 
408+     from  decouple import  Config, RepositoryEnv 
409+      
410+      
411+     config =  Config(RepositoryEnv(" path/to/.env"  )) 
412+ 
397413
398414 2) How to use python-decouple with Jupyter?
399415------------------------------------------- 
400416
401- ```python 
402- import os 
403- from decouple import Config, RepositoryEnv 
404- config = Config(RepositoryEnv("path/to/.env")) 
405- ` ``
417+ .. code-block :: python 
418+ 
419+     import  os 
420+     from  decouple import  Config, RepositoryEnv 
421+      
422+      
423+     config =  Config(RepositoryEnv(" path/to/.env"  )) 
424+ 
406425
407426 3) How to specify a file with another name instead of `.env `?
408427---------------------------------------------------------------- 
409428
410- ```python 
411- import os 
412- from decouple import Config, RepositoryEnv 
413- config = Config(RepositoryEnv("path/to/somefile-like-env")) 
414- ` ``
429+ .. code-block :: python 
430+ 
431+     import  os 
432+     from  decouple import  Config, RepositoryEnv 
433+      
434+      
435+     config =  Config(RepositoryEnv(" path/to/somefile-like-env"  )) 
436+ 
415437
416438 4) How to define the path to my env file on a env var?
417439-------------------------------------------------------- 
418440
419- ```python 
420- import os 
421- from decouple import Config, RepositoryEnv 
441+ .. code-block :: python 
442+ 
443+     import  os 
444+     from  decouple import  Config, RepositoryEnv 
445+      
446+      
447+     DOTENV_FILE  =  os.environ.get(" DOTENV_FILE"  , " .env"  ) #  only place using os.environ 
448+     config =  Config(RepositoryEnv(DOTENV_FILE )) 
422449
423- DOTENV_FILE = os.environ.get("DOTENV_FILE", ".env") # only place using os.environ 
424- config = Config(RepositoryEnv(DOTENV_FILE)) 
425- ` ``
426450
427451 5) How can I have multiple *env * files working together?
428452-------------------------------------------------------- 
429453
430- ```python 
431- from collections import ChainMap 
432- from decouple import Config, RepositoryEnv 
454+ .. code-block :: python 
455+ 
456+     from  collections import  ChainMap 
457+     from  decouple import  Config, RepositoryEnv 
458+      
459+      
460+     config =  Config(ChainMap(RepositoryEnv(" .private.env"  ), RepositoryEnv(" .env"  ))) 
433461
434- config = Config(ChainMap(RepositoryEnv(".private.env"), RepositoryEnv(".env"))) 
435- ` ``
436462
437463 Contribute
438464========== 
0 commit comments