Skip to content

Instantly share code, notes, and snippets.

@richard-hajek
Created May 8, 2025 18:47
Show Gist options
  • Select an option

  • Save richard-hajek/92b8e7c7bbcfc4cd626b52b31a2d8fcd to your computer and use it in GitHub Desktop.

Select an option

Save richard-hajek/92b8e7c7bbcfc4cd626b52b31a2d8fcd to your computer and use it in GitHub Desktop.
class Optional:
def __init__(self, inner):
self.inner = inner
self.err = None
def map(self, func):
if self.err is not None:
return self
try:
self.inner = func(self.inner)
except Exception as e:
self.err = e
self.inner = None
return self
def optional_result(self):
if self.err:
raise self.err
return self.inner
def __getattr__(self, item):
def wrapper_func(*args, **kwargs):
self.inner = getattr(self.inner, item)(*args, **kwargs)
return self
return wrapper_func
target_hours_so_far = (
Optional(sheets.values())
.get(spreadsheetId=TIMESHEET_RAW_ID, range="R3:S")
.execute()
.get("values", [])
.map(lambda x: filter(lambda i: i[0] == localized_year, x))
.map(lambda x: next(x))
.map(lambda x: x[1])
.map(lambda x: dt.timedelta(hours=int(float(x))))
.optional_result()
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment