Skip to main content

update values into class attrs from OsEnvironment or Ini/Json File

Project description

Ver/TestedPython Ver/Os
repo/Created Commit/Last Tests/GitHubWorkflowStatus Tests/GitHubWorkflowStatus
repo/Size Commit/Count/t Commit/Count/y Commit/Count/m

private_values (current v0.6.1/Ver/Pypi Latest)

DESCRIPTION_SHORT

update values into class attrs from OsEnvironment or Ini/Json File

DESCRIPTION_LONG

Designed to use private data like username/pwd kept secure in OsEnvironment or Ini/Json-File for your several home projects at ones.
And not open it in public.

**CAUTION:**  
in requirements for other projects use fixed version! because it might be refactored so you would get exception soon.

Features

  1. load values to instance attrs from:
    • Environment
    • IniFile
    • JsonFile
    • CsvFile
    • direct text instead of file
    • direct dict instead of file
  2. attr access:
    • via any lettercase
    • by instance attr
    • like dict key on instance
  3. work with dict:
    • apply
    • update
    • preupdate
  4. update_dict as cumulative result - useful in case of settings result

License

See the LICENSE file for license rights and limitations (MIT).

Release history

See the HISTORY.md file for release history.

Installation

pip install private-values

Import

from private_values import *

USAGE EXAMPLES

See tests, sourcecode and docstrings for other examples.


1. example1.py

# ===================================================================
# by instance attr
# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *

class Cls:
    data = PrivateAuthJson(_section="AUTH")
    def connect(self):
        name = self.data.NAME
        name = self.data.NamE     # case insensitive

# like dict key on instance
# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *

class Cls:
    data = PrivateAuthJson(_section="AUTH")
    def connect(self):
        name = self.data["NAME"]
        name = self.data["NamE"]   # case insensitive

# ===================================================================
### use annotations for your param names (best practice!)
# when instantiating if it will not get loaded these exact params from your private sources - RAISE!  
# but you could not use it and however keep access to all existed params in used section!
# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *
class MyPrivateJson(PrivateJson):
    NAME: str
    PWD: str

name = MyPrivateJson().NAME


# ===================================================================
# in example above you could simply use existed classes
from private_values import *
name = PrivateAuthJson().NAME


# ===================================================================
### 1. Env

from private_values import *

class Cls:
   user = PrivateEnv["NAME"]
   user = PrivateEnv.NAME


# ===================================================================
### 2. IniFile
# Use different sections
from private_values import *
class Cls:
   user = PrivateIni(_section="CustomSection").NAME


# ===================================================================
# Change full settings
from private_values import *

class CustomIniValues(PrivateIni):
   DIRPATH = "new/path/"
   DIRPATH = pathlib.Path("new/path/")
   FILENAME = "my.ini"
   SECTION = "CustomSection"

class Cls:
   user = CustomIniValues.NAME

# ===================================================================
# Without creating new class
from private_values import *
class Cls:
   pv1 = PrivateIni(_filename="otherFilename").pv1


# ===================================================================
### 3. JsonFile
# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *

class MyPrivateJson(PrivateJson):
    SECTION = "AUTH"
    NAME: str
    PWD: str

class Cls:
    data = MyPrivateJson()
    def connect(self):
        name = self.data.NAME

# ===================================================================
# use already created templates (PrivateAuthJson/PrivateTgBotAddressJson) for standard attributes
# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *

class Cls:
    data = PrivateAuthJson(_section="AUTH")
    def connect(self):
        name = self.data.NAME

# ===================================================================
### 4. Auto  
# you can use universal class  
# it will trying get all your annotated params from one source of Json/Ini/Env (in exact order)  
# in this case you cant use FileName and must use annotations!

# {"AUTH": {"NAME": "MyName", "PWD": "MyPwd"}}

from private_values import *

class MyPrivate(PrivateAuto):
    SECTION = "AUTH"
    NAME: str
    PWD: str

name = MyPrivate().NAME
# ===================================================================

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 Distribution

private_values-0.6.1.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

private_values-0.6.1-py3-none-any.whl (10.7 kB view details)

Uploaded Python 3

File details

Details for the file private_values-0.6.1.tar.gz.

File metadata

  • Download URL: private_values-0.6.1.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for private_values-0.6.1.tar.gz
Algorithm Hash digest
SHA256 966a1d28daba586a2c47fc6a054b7faeced17dc6b291155baf7800d1afdef2e5
MD5 effe9cfeca9b3fc56b9bc1b7d8bb5880
BLAKE2b-256 9b0ad0d7b176a2152f8881da0c6d7059ab619a4e304f9d239a068fc90f67248d

See more details on using hashes here.

File details

Details for the file private_values-0.6.1-py3-none-any.whl.

File metadata

File hashes

Hashes for private_values-0.6.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9f78f79fb55cd2aab5b598c199c984305c41b0b47037f8faa8899081ac283884
MD5 4f73ba4443195fe83de8183c9fc766b0
BLAKE2b-256 282a4daaecdb3ef45710b1c0be067876c8b7ccfc13d969e9b8433e411ed799ba

See more details on using hashes here.

Supported by

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