Skip to content

Instantly share code, notes, and snippets.

@arkanister
Created August 19, 2020 19:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arkanister/f7c4617689ec37e7154764bd1299fef7 to your computer and use it in GitHub Desktop.
Save arkanister/f7c4617689ec37e7154764bd1299fef7 to your computer and use it in GitHub Desktop.
Pure Python coalesce alternative.
class Unset:
"""
This class represent an unset instance.
"""
unset = Unset()
def first_or_default(sequence, condition=unset, default=None):
"""
Returns the first or default value that matches with a condition.
"""
sequence = iter(sequence) if condition is unset else filter(condition, sequence)
try:
return next(sequence)
except StopIteration:
return default
def coalesce(*sequence, default=None):
"""
Returns the first valid element in sequence.
"""
return first_or_default(sequence, None, default=default)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment