Skip to main content

Simple, super-flexible options. Does magic upon request.

Project description

PyPI Package latest release PyPI Package monthly downloads Supported versions Supported implementations Wheel packaging support Test line coverage Test branch coverage

options helps represent option and configuration data in a clean, high-function way. Changes can “overlay” defaults or earlier settings.

For most functions and classes, options is flexibility overkill. Not everyone wants to be a world-class gymnast, yogi, or contortionist. For most, Python’s regular function arguments, *args, **kwargs, and inheritance patterns are elegant and sufficient. options is for the top 1% that need:

  • extremely functional classes, functions, and methods,

  • with many different features and options,

  • the settings for which might be adjusted or overriden at any time,

  • yet that need “reasonable” or “intelligent” defaults, and

  • that yearn for a simple, unobtrusive API.

In those cases, Python’s built-in, inheritance-based model stops being the simple approach. Non-trivial argument-management code and complexity begins to pervade. This is where options’s layered, delegation-based approach begins to shine. Almost regardless of how varied the options it wrangles, or how much flexibility is required, code complexity remains very flat.

http://content.screencast.com/users/jonathaneunice/folders/Jing/media/02e27ff4-402d-4450-b3ee-2c7be26eb05b/00000014.png

Python has very flexible arguments for functions and methods, and good connection of values from classes to subclasses to methods. It doesn’t, however, connect those very well to configuration files, module defaults, method parameters, and other uses. options, in contrast, seamlessly connects all of these varied layers and cases.

For more backstory, see this StackOverflow.com discussion of how to combat “configuration sprawl”. options full documentation can be found at Read the Docs. For examples of options in use, see say and show.

Notes

  • Version 1.4.* is the last to support Python versions < 3.6. Time to upgrade and move to the modern age!

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

options-1.4.10.tar.gz (200.5 kB view details)

Uploaded Source

Built Distribution

options-1.4.10-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

File details

Details for the file options-1.4.10.tar.gz.

File metadata

  • Download URL: options-1.4.10.tar.gz
  • Upload date:
  • Size: 200.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.29.1 CPython/3.7.2

File hashes

Hashes for options-1.4.10.tar.gz
Algorithm Hash digest
SHA256 8bfdf4f11613181880fdb8bfc7fce3717c961d495b42ab605baf1b7c94e821aa
MD5 ca1e48fd866323c1cd4175ba12e6c129
BLAKE2b-256 e22ab8f4dd8db4bfd5029564b9ba8c33dca053307a490d0f56b54c071283dc10

See more details on using hashes here.

File details

Details for the file options-1.4.10-py3-none-any.whl.

File metadata

  • Download URL: options-1.4.10-py3-none-any.whl
  • Upload date:
  • Size: 15.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.29.1 CPython/3.7.2

File hashes

Hashes for options-1.4.10-py3-none-any.whl
Algorithm Hash digest
SHA256 9625e2fdde840e45a385739fae2504f432a58002e3857fa63b1bada66c317bc6
MD5 368b4a191e5e5ab3c1ec1ece424b9a51
BLAKE2b-256 934b9b6336e41dc5b971aa7db120e625ca4f3c43400e3073aac67cf25f61079a

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