Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-options-1.0.0.post3.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

python_options-1.0.0.post3-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file python-options-1.0.0.post3.tar.gz.

File metadata

  • Download URL: python-options-1.0.0.post3.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for python-options-1.0.0.post3.tar.gz
Algorithm Hash digest
SHA256 2177841092e5c346c3c50f0e1e1c80b892dbb398ffd1d6f218e9f517f8d91f87
MD5 56821c7541abb868fbae03f84638ebe4
BLAKE2b-256 467e02fa3d671a43501ed2d9f069709cf113518c076ea5eb73fed5a84af840ce

See more details on using hashes here.

File details

Details for the file python_options-1.0.0.post3-py3-none-any.whl.

File metadata

  • Download URL: python_options-1.0.0.post3-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.5

File hashes

Hashes for python_options-1.0.0.post3-py3-none-any.whl
Algorithm Hash digest
SHA256 a50c3ebf52d5539619325a76f2a0c10f3275231ddaf022d870b02006f976299a
MD5 e6b1b0aa25c749254d4c6b1a526528a9
BLAKE2b-256 a46212fab3d7fb739f1a39ba7bfb84b61b42c6c5699ed84e1f303c6e9ac5abf4

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