Skip to main content

switchcase implements a simple Switch-Case construct in Pure Python.

Under the hood, the switch function works by simply returning a length-1 list containing a matching function. The entire implementation is 3 lines long:

from operator import eq
def switch(value, comp=eq):
    return [lambda match: comp(match, value)]

Basic Usage

>>> from switchcase import switch
>>> def func(x):
...     for case in switch(x):
...         if case(0):
...             print("x was 0")
...             break
...         if case(1):
...             print("x was 1")
...             break
...     else:
...         print("x was unmatched")
>>> func(0)
"x was 0"
>>> func(1)
"x was 1"
>>> func(2)
"x was unmatched"

Custom Comparisons

By default, switch uses operator.eq to compare the value passed to switch and the values subsequently passed to case. You can override this behavior by passing a comparator function to switch as a second argument.

>>> import re
>>> from switchcase import switch
>>> def f(x):
...     out = []
...     for case in switch(x, comp=re.match):
...         if case("foo_bar"):
...             out.append(0)
...             break
...         if case("foo_.*"):
...             out.append(1)
...         if case(".*_bar"):
...             out.append(2)
...         return out
>>> f("foo_bar")
[0]
>>> f("foo_notbar")
[1]
>>> f("notfoo_bar")
[2]
>>> f("foo____bar")
[1, 2]

Metadata

Release files for switchcase 1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for switchcase 1.0
File Size Uploaded
switchcase-1.0.tar.gz 2.2 kB Details

Release files / switchcase-1.0.tar.gz

Download URL switchcase-1.0.tar.gz
Size 2.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4170300a2e69611cff996e508fb3a2d3caff257f44f70c987dbfe3500b722e72
BLAKE2b-256 checksum
How to use checksums
010844a3d89b53d8d43266126584821bc08e0b3d0e95a2025fed3ec3bd7ab5b1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

1.0 This release

1 release file

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