X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=deferred_operand.py;h=df762376c1b16374440c2a5ea7cda8d568bd5e58;hb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;hp=22bcb83297fa19aa24ab3d860d81a39c22c63dac;hpb=36fea7f15ed17150691b5b3ead75450e575229ef;p=python_utils.git diff --git a/deferred_operand.py b/deferred_operand.py index 22bcb83..df76237 100644 --- a/deferred_operand.py +++ b/deferred_operand.py @@ -1,5 +1,13 @@ #!/usr/bin/env python3 +# © Copyright 2021-2022, Scott Gasch + +"""This is a helper class that tries to define every __dunder__ method +so as to defer that evaluation of an object as long as possible. It +is used by smart_future.py as a base class. + +""" + from abc import ABC, abstractmethod from typing import Any, Generic, TypeVar @@ -15,7 +23,7 @@ class DeferredOperand(ABC, Generic[T]): """ @abstractmethod - def _resolve(self) -> T: + def _resolve(self, timeout=None) -> T: pass @staticmethod @@ -91,9 +99,7 @@ class DeferredOperand(ABC, Generic[T]): return DeferredOperand.resolve(self) is DeferredOperand.resolve(other) def is_not(self, other): - return DeferredOperand.resolve(self) is not DeferredOperand.resolve( - other - ) + return DeferredOperand.resolve(self) is not DeferredOperand.resolve(other) def __abs__(self): return abs(DeferredOperand.resolve(self)) @@ -151,8 +157,6 @@ class DeferredOperand(ABC, Generic[T]): def __getattr__(self, method_name): def method(*args, **kwargs): - return getattr(DeferredOperand.resolve(self), method_name)( - *args, **kwargs - ) + return getattr(DeferredOperand.resolve(self), method_name)(*args, **kwargs) return method