Make python class with option base on property. Using build option for client like kafka, command option like ffmpeg.
Project description
python-options
Make python class with option base on property. Using build option for client like kafka, command option like ffmpeg.
Support: python 3.6+
Feature:
- Build options (config) easily.
- Clone option (changing not effect with other config which initial from single class)
- (Optional) Filter value on set.
- (Optional) Auto fill default value if delete old value.
Example:
from typing import Any, Type
from pyopt import Options, UnsetOption, option
def filter_type(_type: Type):
def _filter_wrapper(instance: Any):
if not isinstance(instance, _type):
raise TypeError(f"Instance must be `{_type.__name__}`")
return instance
return _filter_wrapper
class Config(Options):
server = option("url", filter_type(str), doc="URL of server host.")
if __name__ == '__main__':
conf = Config()
try:
conf.server = 1 # raise TypeError
except TypeError as e:
print(f"ERROR: {e}")
try:
print(conf.server)
except UnsetOption as e:
print(f"Unset: {e}")
conf.server = "127.0.0.1:9090"
print(conf.__repr__())
print(conf.build())
>>> config = Config()
>>> config.server = 1
TypeError: Instance must be `str`
>>> conf.server
The option `url` of Config hasn't been set.
>>> config.server = "127.0.0.1:9090"
>>> print(conf)
Config:
- server | "url" = "127.0.0.1:9090" | Doc: URL of server host.
>>> print(conf.build())
{'url': '127.0.0.1:9090'}
Info
Author = "Tin Dang"
Copyright = "Copyright (C) 2020 DPS"
Version = "1.0"
Doc = "Options base on property which help build dict name=value with value filter."
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
Built Distribution
Close
Hashes for python-options-1.0.0.post4.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3df5b04764e460eedff901d784ba09b35bb449c46a24c8e5c8ab918b63ef1ad4 |
|
MD5 | 7a7553c27a607c5fc51d8a698f8645ea |
|
BLAKE2b-256 | e51b3b153db871728e817a996a013838047ad529e03b0a46f4594fa81f211348 |
Close
Hashes for python_options-1.0.0.post4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0d567527a09c487765558b6bb037d1b809df29c3d93ee7b937af4f271daa8a8 |
|
MD5 | 08c9a1ae90ed7b0b9e9057062c284daa |
|
BLAKE2b-256 | 4178a46aa8be44e8822e036ba1884dda72a499099d150fc645392a5288d2ad53 |