Skip to content

danielrjackson/default-value

Default Value

Provides Default that allows differentiating a provided value from a default.

Installation

pip install default-value

Usage

Aliases

This module uses dataclasses.NoDefault as a sentinel value for when no default is provided. It re-exports it as default_value.NoDefault for convenience.

from default_value import Opt, Req, Default, NoDefault

# The following aliases are provided by `default_value`
type Opt[T] = T | Default[T] | NoDefault
type Req[T] = T | Default[T]

# If you want to allow multiple types, such as `None`, then just include them in the union.

def foo(param: Opt[str | None] = Default(None)) -> None:
    print(f"`param` is {param}")
    # This will print "`param` is Default(None)" if no value is provided.
    # If the caller passes `None`, it will print "`param` is None".
    # This allows for easy differentiation between "no value provided" and
    # "value explicitly set to None".
    ...

Classes

No Default

from default_value import Opt, NoDefault

Optional Type

from default_value import Opt, Default

# type Opt[T] = T | Default[T] | NoDefault

def foo(value: Opt[str] = Default) -> None:
    if value is Default:
        print("Value is default")
    elif value is None:
        print("Value is None")
    else:
        print(f"Value is set to {value}")

Usage

Optional Type

from unset import Opt, Unset

# type Opt[T] = T | Unset | None

def foo(value: Opt[str] = Unset) -> None:
    if value is Unset:
        print("Value is unset")
    elif value is None:
        print("Value is None")
    else:
        print(f"Value is set to {value}")

Maybe Unset

from unset import MaybeUnset, Unset

# type Maybe[T] = T | Unset

# type MaybeUnset[T] = T | Unset

def foo(value: MaybeUnset[str] = Unset) -> None:
    if value is Unset:
        print("Value is unset")
    else:
        print(f"Value is set to {value}")

Explicit Types

from unset import Unset, UnsetType

def foo(value: str | UnsetType | None = Unset) -> None:
    if value is Unset:
        print("Value is unset")
    elif value is None:
        print("Value is None")
    else:
        print(f"Value is set to {value}")

Documentation Links

About

Provides the ability to differentiate between `None` and a value that wasn't provided.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors