Skip to main content

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."

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.post4.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

python_options-1.0.0.post4-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: python-options-1.0.0.post4.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.post4.tar.gz
Algorithm Hash digest
SHA256 3df5b04764e460eedff901d784ba09b35bb449c46a24c8e5c8ab918b63ef1ad4
MD5 7a7553c27a607c5fc51d8a698f8645ea
BLAKE2b-256 e51b3b153db871728e817a996a013838047ad529e03b0a46f4594fa81f211348

See more details on using hashes here.

File details

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

File metadata

  • Download URL: python_options-1.0.0.post4-py3-none-any.whl
  • Upload date:
  • Size: 6.3 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.post4-py3-none-any.whl
Algorithm Hash digest
SHA256 c0d567527a09c487765558b6bb037d1b809df29c3d93ee7b937af4f271daa8a8
MD5 08c9a1ae90ed7b0b9e9057062c284daa
BLAKE2b-256 4178a46aa8be44e8822e036ba1884dda72a499099d150fc645392a5288d2ad53

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.0.post4 This release

2 files

1.0.0.post3

2 files

1.0.0.post2

2 files

1.0.0.post1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page