Skip to main content

Clipping values in a human-readable way.

Project description

clip_values

Clipping values in a human-readable way

Clipping numerical values to make sure they are within a lower and upper bound is a very common task.

For example, if you are dealing with RGB colours, you want each channel to be between 0 and 255, if you are dealing with shop sales, you need them to be between 0 and 1, or if you are writing a cool game, you want your character to stay inside the screen.

Now, if you have to do all this clipping, which alternative to clipping do you prefer?

Using clip_values.clip

clip offers human-readable syntax to your clipping operations:

from clip_values import clip
colour_channel = clip(colour_channel).between_(0).and_(255)
discount = clip(discount).between_(0).and_(1)
player_x_pos = clip(player_x_pos).between_(0).and_(SCREEN_WIDTH)

The clip alternative is the simplest and easiest to read! Compare it with two other common alternatives:

Using an if: ... elif: ... block is also easy to read, but takes up 4x more lines of code:

if colour_channel < 0:
    colour_channel = 0
elif colour_channel > 255:
    colour_channel = 255

if discount < 0:
    discount = 0
elif discount > 1:
    discount = 1

if player_x_pos < 0:
    player_x_pos = 0
elif player_x_pos > SCREEN_WIDTH:
    player_x_pos = SCREEN_WIDTH

Chaining min with max (or the other way around) is shorter, but this is much harder to read and you have to spend a couple of minutes figuring out the interaction between the two consecutive calls to min/max:

colour_channel = min(255, max(0, colour_channel))
discount = max(0, min(1, discount))
player_x_pos = min(SCREEN_WIDTH, max(0, player_x_pos))

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

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

Source Distribution

clip_values-1.0.tar.gz (3.1 kB view details)

Uploaded Source

Built Distribution

clip_values-1.0-py3-none-any.whl (3.1 kB view details)

Uploaded Python 3

File details

Details for the file clip_values-1.0.tar.gz.

File metadata

  • Download URL: clip_values-1.0.tar.gz
  • Upload date:
  • Size: 3.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.2

File hashes

Hashes for clip_values-1.0.tar.gz
Algorithm Hash digest
SHA256 f210ffac019b8bfe3a01656dc00106d75086f546b6a3697f4627fe73f690db88
MD5 043fdb0204c807e6c2461af62a862be6
BLAKE2b-256 daf25aa8463b297edf7eeeaadb27ca0e0881b37882506f36860570461223a214

See more details on using hashes here.

File details

Details for the file clip_values-1.0-py3-none-any.whl.

File metadata

  • Download URL: clip_values-1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.2

File hashes

Hashes for clip_values-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2626f2f84bf3ff7d99515ba8f740ec0fe7208e071f790ef290581e2f6fb413cc
MD5 57b98dc03c851e3913d5ae052600738f
BLAKE2b-256 1e7b48b72bff4e34db87140721933323a0bfd120d69fc833f7c089539a18e99d

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