beartype: [Bug] Unreadable exceptions raised after @beartype erroneously detects uncallable objects as callable (...or something, something)

Discussed in https://github.com/beartype/beartype/discussions/338

<div type='discussions-op-text'>

Originally posted by sylvorg March 14, 2024 Hello!

Is it possible to allow partials, C-based callables, etc. when using beartype_this_package? Iโ€™m writing a function piping class:

class PipeMeta(SlotsMeta):
    # wrap = lambda cls, b: lambda a: lambda *args, **kwargs: b(a(*args, **kwargs))
    def wrap(cls: "PipeMeta", b: Callable) -> Callable:
        def wrapper(a: Callable):
            @wraps(a)
            def wrapped(*args: Unpack[Any], **kwargs: Unpack[Any]):
                return b(a(*args, **kwargs))

            return wrapped

        return wrapper


class Pipe(metaclass=PipeMeta):
    def __init__(self: "Pipe", func: Callable) -> None:
        self.func: Callable = func.func if isinstance(func, self.__class__) else func
        self.__rshift__ = self.__rlshift__ = self.__or__
        self.__rrshift__ = self.__lshift__ = self.__ror__
        self.__irshift__ = self.__ior__

    def __wrap__(self: "Pipe", b: Callable, a: Callable) -> Callable:
        return self.__class__.wrap(b)(a)

    def __call__(self: "Pipe", *args: Unpack[Any], **kwargs: Unpack[Any]) -> Any:
        return self.func(*args, **kwargs)

    def __or__(self: "Pipe", other: Callable) -> "Pipe":
        return self.__class__(self.__wrap__(other, self.func))

    def __ror__(self: "Pipe", other: Callable) -> "Pipe":
        return self.__class__(self.__wrap__(self.func, other))

    def __ior__(self: "Pipe", other: Callable) -> "Pipe":
        self.func = self.__wrap__(other, self.func)
        return self

    def __ilshift__(self: "Pipe", other: Callable) -> "Pipe":
        self.func = self.__wrap__(self.func, other)
        return self

But am getting the following error when trying to test it with a partial function:

beartype.roar._BeartypeUtilCallableException: Functools.partial(<class 'map'>, <class 'str'>) not pure-Python function.

I am assuming that users of the class already know the type hints of the final function.

Thank you kindly for the help, and sorry in advance for a general lack of knowledge regarding Pythonโ€™s internals! ๐Ÿ˜…</div>

About this issue

  • Original URL
  • State: closed
  • Created 4 months ago
  • Reactions: 1
  • Comments: 20 (10 by maintainers)

Commits related to this issue

Most upvoted comments

Sorry for the repeated pings, but, interestingly enough, removing all Unpack hints and putting Any as the output hint for def wrapped(*args, **kwargs): also triggers this when used with from pipe import Pipe; list | Pipe(lambda: range(10))!

No, waitโ€ฆ from pipe import Pipe; list | Pipe(lambda: range(10)) works as well in the repl, despite __ror__ being defined:

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/decorcore.py:214 in _beartype_object_nonfatal                                โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   211 โ”‚                                                                                          โ”‚
โ”‚   212 โ”‚   # Attempt to decorate the passed beartypeable.                                         โ”‚
โ”‚   213 โ”‚   try:                                                                                   โ”‚
โ”‚ โฑ 214 โ”‚   โ”‚   return _beartype_object_fatal(obj, conf=conf, **kwargs)                            โ”‚
โ”‚   215 โ”‚   # If doing so unexpectedly raises an exception, coerce that fatal exception            โ”‚
โ”‚   216 โ”‚   # into a non-fatal warning for nebulous safety.                                        โ”‚
โ”‚   217 โ”‚   except Exception as exception:                                                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚             conf = BeartypeConf(warning_cls_on_decorator_exception=<class                    โ”‚ โ”‚
โ”‚ โ”‚                    'beartype.roar.BeartypeClawDecorWarning'>)                                โ”‚ โ”‚
โ”‚ โ”‚    error_message = "\n    beartype.roar.BeartypeDecorWrappeeException: <class 'list'> not    โ”‚ โ”‚
โ”‚ โ”‚                    pure-Python"+10                                                           โ”‚ โ”‚
โ”‚ โ”‚           kwargs = {}                                                                        โ”‚ โ”‚
โ”‚ โ”‚              obj = <function list at 0x7fa05108d1c0>                                         โ”‚ โ”‚
โ”‚ โ”‚ warning_category = <class 'beartype.roar.BeartypeClawDecorWarning'>                          โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/decorcore.py:136 in _beartype_object_fatal                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   133 โ”‚   โ”‚   if isinstance(obj, type) else                                                      โ”‚
โ”‚   134 โ”‚   โ”‚   # Else, this object is a non-class. In this case, this non-class                   โ”‚
โ”‚   135 โ”‚   โ”‚   # decorated with type-checking.                                                    โ”‚
โ”‚ โฑ 136 โ”‚   โ”‚   beartype_nontype(obj, **kwargs)  # type: ignore[return-value]                      โ”‚
โ”‚   137 โ”‚   )                                                                                      โ”‚
โ”‚   138                                                                                            โ”‚
โ”‚   139                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ kwargs = {                                                                                   โ”‚ โ”‚
โ”‚ โ”‚          โ”‚   'conf': BeartypeConf(warning_cls_on_decorator_exception=<class                  โ”‚ โ”‚
โ”‚ โ”‚          'beartype.roar.BeartypeClawDecorWarning'>)                                          โ”‚ โ”‚
โ”‚ โ”‚          }                                                                                   โ”‚ โ”‚
โ”‚ โ”‚    obj = <function list at 0x7fa05108d1c0>                                                   โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/_decornontype.py:177 in beartype_nontype                                     โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   174 โ”‚   # decorator closure.                                                                   โ”‚
โ”‚   175 โ”‚                                                                                          โ”‚
โ”‚   176 โ”‚   # Return a new callable decorating that callable with type-checking.                   โ”‚
โ”‚ โฑ 177 โ”‚   return beartype_func(obj, **kwargs)  # type: ignore[return-value]                      โ”‚
โ”‚   178                                                                                            โ”‚
โ”‚   179 # ....................{ DECORATORS ~ func                  }....................           โ”‚
โ”‚   180 def beartype_func(                                                                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚   kwargs = {                                                                                 โ”‚ โ”‚
โ”‚ โ”‚            โ”‚   'conf': BeartypeConf(warning_cls_on_decorator_exception=<class                โ”‚ โ”‚
โ”‚ โ”‚            'beartype.roar.BeartypeClawDecorWarning'>)                                        โ”‚ โ”‚
โ”‚ โ”‚            }                                                                                 โ”‚ โ”‚
โ”‚ โ”‚      obj = <function list at 0x7fa05108d1c0>                                                 โ”‚ โ”‚
โ”‚ โ”‚ obj_type = <class 'function'>                                                                โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/_decornontype.py:239 in beartype_func                                        โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   236 โ”‚   # Else, that callable is beartypeable. Let's do this, folks.                           โ”‚
โ”‚   237 โ”‚                                                                                          โ”‚
โ”‚   238 โ”‚   # Beartype call metadata describing that callable.                                     โ”‚
โ”‚ โฑ 239 โ”‚   bear_call = make_beartype_call(func, conf, **kwargs)  # pyright: ignore[reportGenera   โ”‚
โ”‚   240 โ”‚                                                                                          โ”‚
โ”‚   241 โ”‚   # Generate the raw string of Python statements implementing this wrapper.              โ”‚
โ”‚   242 โ”‚   func_wrapper_code = generate_code(bear_call)                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚   conf = BeartypeConf(warning_cls_on_decorator_exception=<class                              โ”‚ โ”‚
โ”‚ โ”‚          'beartype.roar.BeartypeClawDecorWarning'>)                                          โ”‚ โ”‚
โ”‚ โ”‚   func = <function list at 0x7fa05108d1c0>                                                   โ”‚ โ”‚
โ”‚ โ”‚ kwargs = {}                                                                                  โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_check/checkcall.py:669 in make_beartype_call                                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   666 โ”‚                                                                                          โ”‚
โ”‚   667 โ”‚   # Previously cached callable metadata reinitialized from that callable.                โ”‚
โ”‚   668 โ”‚   bear_call = acquire_object_typed(BeartypeCall)                                         โ”‚
โ”‚ โฑ 669 โ”‚   bear_call.reinit(func, conf, **kwargs)                                                 โ”‚
โ”‚   670 โ”‚                                                                                          โ”‚
โ”‚   671 โ”‚   # Return this metadata.                                                                โ”‚
โ”‚   672 โ”‚   return bear_call                                                                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ bear_call = <beartype._check.checkcall.BeartypeCall object at 0x7fa05108d120>                โ”‚ โ”‚
โ”‚ โ”‚      conf = BeartypeConf(warning_cls_on_decorator_exception=<class                           โ”‚ โ”‚
โ”‚ โ”‚             'beartype.roar.BeartypeClawDecorWarning'>)                                       โ”‚ โ”‚
โ”‚ โ”‚      func = <function list at 0x7fa05108d1c0>                                                โ”‚ โ”‚
โ”‚ โ”‚    kwargs = {}                                                                               โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_check/checkcall.py:385 in reinit                                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   382 โ”‚   โ”‚   )                                                                                  โ”‚
โ”‚   383 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   384 โ”‚   โ”‚   # Possibly unwrapped callable code object.                                         โ”‚
โ”‚ โฑ 385 โ”‚   โ”‚   self.func_wrappee_wrappee_codeobj = get_func_codeobj(                              โ”‚
โ”‚   386 โ”‚   โ”‚   โ”‚   func=self.func_wrappee_wrappee,                                                โ”‚
โ”‚   387 โ”‚   โ”‚   โ”‚   exception_cls=BeartypeDecorWrappeeException,                                   โ”‚
โ”‚   388 โ”‚   โ”‚   )                                                                                  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ cls_stack = None                                                                             โ”‚ โ”‚
โ”‚ โ”‚      conf = BeartypeConf(warning_cls_on_decorator_exception=<class                           โ”‚ โ”‚
โ”‚ โ”‚             'beartype.roar.BeartypeClawDecorWarning'>)                                       โ”‚ โ”‚
โ”‚ โ”‚      func = <function list at 0x7fa05108d1c0>                                                โ”‚ โ”‚
โ”‚ โ”‚      self = <beartype._check.checkcall.BeartypeCall object at 0x7fa05108d120>                โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/utilfunccodeobj.py:123 in get_func_codeobj                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   120 โ”‚   โ”‚   from beartype._util.func.utilfunctest import die_unless_func_python                โ”‚
โ”‚   121 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   122 โ”‚   โ”‚   # Raise an exception.                                                              โ”‚
โ”‚ โฑ 123 โ”‚   โ”‚   die_unless_func_python(                                                            โ”‚
โ”‚   124 โ”‚   โ”‚   โ”‚   func=func,                                                                     โ”‚
โ”‚   125 โ”‚   โ”‚   โ”‚   exception_cls=exception_cls,                                                   โ”‚
โ”‚   126 โ”‚   โ”‚   โ”‚   exception_prefix=exception_prefix,                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ               โ”‚
โ”‚ โ”‚ die_unless_func_python = <function die_unless_func_python at 0x7fa05127e480>   โ”‚               โ”‚
โ”‚ โ”‚          exception_cls = <class 'beartype.roar.BeartypeDecorWrappeeException'> โ”‚               โ”‚
โ”‚ โ”‚       exception_prefix = ''                                                    โ”‚               โ”‚
โ”‚ โ”‚                   func = <class 'list'>                                        โ”‚               โ”‚
โ”‚ โ”‚           func_codeobj = None                                                  โ”‚               โ”‚
โ”‚ โ”‚              is_unwrap = False                                                 โ”‚               โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/utilfunctest.py:113 in die_unless_func_python                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   110 โ”‚   โ”‚   # Else, that callable is callable.                                                 โ”‚
โ”‚   111 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   112 โ”‚   โ”‚   # Raise a human-readable exception.                                                โ”‚
โ”‚ โฑ 113 โ”‚   โ”‚   raise exception_cls(                                                               โ”‚
โ”‚   114 โ”‚   โ”‚   โ”‚   f'{exception_prefix}{repr(func)} not pure-Python function.')                   โ”‚
โ”‚   115 โ”‚   # Else, that callable is pure-Python.                                                  โ”‚
โ”‚   116                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                     โ”‚
โ”‚ โ”‚    exception_cls = <class 'beartype.roar.BeartypeDecorWrappeeException'> โ”‚                     โ”‚
โ”‚ โ”‚ exception_prefix = ''                                                    โ”‚                     โ”‚
โ”‚ โ”‚             func = <class 'list'>                                        โ”‚                     โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                     โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
BeartypeDecorWrappeeException: <class 'list'> not pure-Python function.

During handling of the above exception, another exception occurred:

โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ Traceback (most recent call last) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ
โ”‚ in <module>:1                                                                                    โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                                              โ”‚
โ”‚ โ”‚ Pipe = <class 'pipe.pipe.Pipe'> โ”‚                                                              โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                                              โ”‚
โ”‚ in __ror__:53                                                                                    โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                         โ”‚
โ”‚ โ”‚   args = (<pipe.pipe.Pipe object at 0x7fa051b62850>, <class 'list'>) โ”‚                         โ”‚
โ”‚ โ”‚ kwargs = {}                                                          โ”‚                         โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /mnt/wsl/sylvorg/tests/pipe/pipe/pipe.py:45 in __ror__                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   42 โ”‚   โ”‚   return self.__or__(other)                                                           โ”‚
โ”‚   43 โ”‚                                                                                           โ”‚
โ”‚   44 โ”‚   def __ror__(self: "Pipe", other: Callable) -> "Pipe":                                   โ”‚
โ”‚ โฑ 45 โ”‚   โ”‚   return self.__class__(self.__wrap__(self.func, other))                              โ”‚
โ”‚   46 โ”‚                                                                                           โ”‚
โ”‚   47 โ”‚   def __rrshift__(self: "Pipe", other: Callable) -> "Pipe":                               โ”‚
โ”‚   48 โ”‚   โ”‚   return self.__ror__(other)                                                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                            โ”‚
โ”‚ โ”‚ other = <class 'list'>                            โ”‚                                            โ”‚
โ”‚ โ”‚  self = <pipe.pipe.Pipe object at 0x7fa051b62850> โ”‚                                            โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                            โ”‚
โ”‚ in __wrap__:71                                                                                   โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                      โ”‚
โ”‚ โ”‚   args = (                                              โ”‚                                      โ”‚
โ”‚ โ”‚          โ”‚   <pipe.pipe.Pipe object at 0x7fa051b62850>, โ”‚                                      โ”‚
โ”‚ โ”‚          โ”‚   <function <lambda> at 0x7fa051b6fec0>,     โ”‚                                      โ”‚
โ”‚ โ”‚          โ”‚   <class 'list'>                             โ”‚                                      โ”‚
โ”‚ โ”‚          )                                              โ”‚                                      โ”‚
โ”‚ โ”‚ kwargs = {}                                             โ”‚                                      โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                      โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /mnt/wsl/sylvorg/tests/pipe/pipe/pipe.py:30 in __wrap__                                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   27 โ”‚   โ”‚   self.func: Callable = func.func if isinstance(func, self.__class__) else func       โ”‚
โ”‚   28 โ”‚                                                                                           โ”‚
โ”‚   29 โ”‚   def __wrap__(self: "Pipe", b: Callable, a: Callable) -> Callable:                       โ”‚
โ”‚ โฑ 30 โ”‚   โ”‚   return self.__class__.wrap(b)(a)                                                    โ”‚
โ”‚   31 โ”‚                                                                                           โ”‚
โ”‚   32 โ”‚   def __call__(self: "Pipe", *args: Unpack[Any], **kwargs: Unpack[Any]) -> Any:           โ”‚
โ”‚   33 โ”‚   โ”‚   return self.func(*args, **kwargs)                                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                             โ”‚
โ”‚ โ”‚    a = <class 'list'>                            โ”‚                                             โ”‚
โ”‚ โ”‚    b = <function <lambda> at 0x7fa051b6fec0>     โ”‚                                             โ”‚
โ”‚ โ”‚ self = <pipe.pipe.Pipe object at 0x7fa051b62850> โ”‚                                             โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                             โ”‚
โ”‚ in wrapper:32                                                                                    โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                                                   โ”‚
โ”‚ โ”‚   args = (<class 'list'>,) โ”‚                                                                   โ”‚
โ”‚ โ”‚ kwargs = {}                โ”‚                                                                   โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /mnt/wsl/sylvorg/tests/pipe/pipe/pipe.py:17 in wrapper                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   14 โ”‚   def wrap(cls: "PipeMeta", b: Callable) -> Callable:                                     โ”‚
โ”‚   15 โ”‚   โ”‚   def wrapper(a: Callable):                                                           โ”‚
โ”‚   16 โ”‚   โ”‚   โ”‚   @wraps(a)                                                                       โ”‚
โ”‚ โฑ 17 โ”‚   โ”‚   โ”‚   def wrapped(*args: Unpack[Any], **kwargs: Unpack[Any]):                         โ”‚
โ”‚   18 โ”‚   โ”‚   โ”‚   โ”‚   return b(a(*args, **kwargs))                                                โ”‚
โ”‚   19 โ”‚   โ”‚   โ”‚                                                                                   โ”‚
โ”‚   20 โ”‚   โ”‚   โ”‚   return wrapped                                                                  โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                                    โ”‚
โ”‚ โ”‚ a = <class 'list'>                        โ”‚                                                    โ”‚
โ”‚ โ”‚ b = <function <lambda> at 0x7fa051b6fec0> โ”‚                                                    โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                                    โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/decorcache.py:130 in beartype_confed                                         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   127 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   128 โ”‚   โ”‚   # Decorate this object with type-checking configured by this                       โ”‚
โ”‚   129 โ”‚   โ”‚   # configuration.                                                                   โ”‚
โ”‚ โฑ 130 โ”‚   โ”‚   return beartype_object(obj, conf)                                                  โ”‚
โ”‚   131 โ”‚                                                                                          โ”‚
โ”‚   132 โ”‚   # Cache this private decorator against this configuration.                             โ”‚
โ”‚   133 โ”‚   _bear_conf_to_decor[conf] = beartype_confed                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚ conf = BeartypeConf(warning_cls_on_decorator_exception=<class                                โ”‚ โ”‚
โ”‚ โ”‚        'beartype.roar.BeartypeClawDecorWarning'>)                                            โ”‚ โ”‚
โ”‚ โ”‚  obj = <function list at 0x7fa05108d1c0>                                                     โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/decorcore.py:95 in beartype_object                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    92 โ”‚   โ”‚   # Else, this beartype configuration requests that this decorator emit              โ”‚
โ”‚    93 โ”‚   โ”‚   # fatal warnings at decoration time. In this case, defer to the                    โ”‚
โ”‚    94 โ”‚   โ”‚   # lower-level decorator doing so.                                                  โ”‚
โ”‚ โฑ  95 โ”‚   โ”‚   _beartype_object_nonfatal(obj, conf=conf, **kwargs)                                โ”‚
โ”‚    96 โ”‚   )                                                                                      โ”‚
โ”‚    97                                                                                            โ”‚
โ”‚    98 # ....................{ PRIVATE ~ decorators               }....................           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚   conf = BeartypeConf(warning_cls_on_decorator_exception=<class                              โ”‚ โ”‚
โ”‚ โ”‚          'beartype.roar.BeartypeClawDecorWarning'>)                                          โ”‚ โ”‚
โ”‚ โ”‚ kwargs = {}                                                                                  โ”‚ โ”‚
โ”‚ โ”‚    obj = <function list at 0x7fa05108d1c0>                                                   โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_decor/decorcore.py:253 in _beartype_object_nonfatal                                โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   250 โ”‚   โ”‚   #   capitalized such that the first character is uppercase.                        โ”‚
โ”‚   251 โ”‚   โ”‚   # * This indented exception message.                                               โ”‚
โ”‚   252 โ”‚   โ”‚   warning_message = uppercase_str_char_first(                                        โ”‚
โ”‚ โฑ 253 โ”‚   โ”‚   โ”‚   f'{prefix_beartypeable(obj)}{label_object_context(obj)}:'                      โ”‚
โ”‚   254 โ”‚   โ”‚   โ”‚   f'{error_message}'                                                             โ”‚
โ”‚   255 โ”‚   โ”‚   )                                                                                  โ”‚
โ”‚   256                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚             conf = BeartypeConf(warning_cls_on_decorator_exception=<class                    โ”‚ โ”‚
โ”‚ โ”‚                    'beartype.roar.BeartypeClawDecorWarning'>)                                โ”‚ โ”‚
โ”‚ โ”‚    error_message = "\n    beartype.roar.BeartypeDecorWrappeeException: <class 'list'> not    โ”‚ โ”‚
โ”‚ โ”‚                    pure-Python"+10                                                           โ”‚ โ”‚
โ”‚ โ”‚           kwargs = {}                                                                        โ”‚ โ”‚
โ”‚ โ”‚              obj = <function list at 0x7fa05108d1c0>                                         โ”‚ โ”‚
โ”‚ โ”‚ warning_category = <class 'beartype.roar.BeartypeClawDecorWarning'>                          โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/text/utiltextprefix.py:59 in prefix_beartypeable                              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    56 โ”‚   โ”‚   if isinstance(obj, type) else                                                      โ”‚
โ”‚    57 โ”‚   โ”‚   # Else, this beartypeable is a callable. In this case, a label                     โ”‚
โ”‚    58 โ”‚   โ”‚   # describing this callable.                                                        โ”‚
โ”‚ โฑ  59 โ”‚   โ”‚   f'{label_callable(func=obj, is_color=is_color)} '  # type: ignore[arg-type]        โ”‚
โ”‚    60 โ”‚   )                                                                                      โ”‚
โ”‚    61                                                                                            โ”‚
โ”‚    62 # ....................{ PREFIXERS ~ beartypeable : pith    }....................           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                                                 โ”‚
โ”‚ โ”‚ is_color = False                             โ”‚                                                 โ”‚
โ”‚ โ”‚      obj = <function list at 0x7fa05108d1c0> โ”‚                                                 โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                                                 โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/text/utiltextlabel.py:225 in label_callable                                   โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   222 โ”‚   # has a unique fully-qualified name. In this case, prefix this label with a            โ”‚
โ”‚   223 โ”‚   # substring describing the kind of that callable.                                      โ”‚
โ”‚   224 โ”‚   else:                                                                                  โ”‚
โ”‚ โฑ 225 โ”‚   โ”‚   func_label_prefix = label_beartypeable_kind(func)                                  โ”‚
โ”‚   226 โ”‚                                                                                          โ”‚
โ”‚   227 โ”‚   # If colouring that callable, do so.                                                   โ”‚
โ”‚   228 โ”‚   if is_color:                                                                           โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ         โ”‚
โ”‚ โ”‚            color_attr_name = <function color_attr_name at 0x7fa0511e3420>            โ”‚         โ”‚
โ”‚ โ”‚                       func = <function list at 0x7fa05108d1c0>                       โ”‚         โ”‚
โ”‚ โ”‚                 func_label = ' builtins.list()'                                      โ”‚         โ”‚
โ”‚ โ”‚          func_label_prefix = ''                                                      โ”‚         โ”‚
โ”‚ โ”‚          func_label_suffix = ''                                                      โ”‚         โ”‚
โ”‚ โ”‚ get_func_args_flexible_len = <function get_func_args_flexible_len at 0x7fa05127f060> โ”‚         โ”‚
โ”‚ โ”‚           get_func_codeobj = <function get_func_codeobj at 0x7fa0514407c0>           โ”‚         โ”‚
โ”‚ โ”‚                   is_color = False                                                   โ”‚         โ”‚
โ”‚ โ”‚                 is_context = None                                                    โ”‚         โ”‚
โ”‚ โ”‚             is_func_lambda = <function is_func_lambda at 0x7fa05127f2e0>             โ”‚         โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ         โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/text/utiltextlabel.py:102 in label_beartypeable_kind                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    99 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   100 โ”‚   โ”‚   # Name of the first parameter accepted by that callable if any *OR*                โ”‚
โ”‚   101 โ”‚   โ”‚   # "None" otherwise (i.e., if that callable is argumentless).                       โ”‚
โ”‚ โฑ 102 โ”‚   โ”‚   arg_first_name = get_func_arg_first_name_or_none(obj)                              โ”‚
โ”‚   103 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   104 โ”‚   โ”‚   # If this is the canonical first "self" parameter typically accepted by            โ”‚
โ”‚   105 โ”‚   โ”‚   # instance methods, assume this to be an instance method.                          โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ โ”‚
โ”‚ โ”‚                     func_prefix = ''                                                         โ”‚ โ”‚
โ”‚ โ”‚                     func_suffix = ''                                                         โ”‚ โ”‚
โ”‚ โ”‚ get_func_arg_first_name_or_none = <function get_func_arg_first_name_or_none at               โ”‚ โ”‚
โ”‚ โ”‚                                   0x7fa05127efc0>                                            โ”‚ โ”‚
โ”‚ โ”‚                   is_func_async = <function is_func_async at 0x7fa05127f600>                 โ”‚ โ”‚
โ”‚ โ”‚         is_func_async_generator = <function is_func_async_generator at 0x7fa05127f740>       โ”‚ โ”‚
โ”‚ โ”‚                    is_func_coro = <function is_func_coro at 0x7fa05127f6a0>                  โ”‚ โ”‚
โ”‚ โ”‚                  is_func_python = <function is_func_python at 0x7fa05127f380>                โ”‚ โ”‚
โ”‚ โ”‚          is_func_sync_generator = <function is_func_sync_generator at 0x7fa05127f7e0>        โ”‚ โ”‚
โ”‚ โ”‚                             obj = <function list at 0x7fa05108d1c0>                          โ”‚ โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/arg/utilfuncargget.py:71 in get_func_arg_first_name_or_none              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚    68 โ”‚   '''                                                                                    โ”‚
โ”‚    69 โ”‚                                                                                          โ”‚
โ”‚    70 โ”‚   # For metadata describing each parameter accepted by this callable...                  โ”‚
โ”‚ โฑ  71 โ”‚   for arg_meta in iter_func_args(                                                        โ”‚
โ”‚    72 โ”‚   โ”‚   func=func,                                                                         โ”‚
โ”‚    73 โ”‚   โ”‚   is_unwrap=is_unwrap,                                                               โ”‚
โ”‚    74 โ”‚   โ”‚   exception_cls=exception_cls,                                                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                       โ”‚
โ”‚ โ”‚ exception_cls = <class 'beartype.roar._BeartypeUtilCallableException'> โ”‚                       โ”‚
โ”‚ โ”‚          func = <function list at 0x7fa05108d1c0>                      โ”‚                       โ”‚
โ”‚ โ”‚     is_unwrap = True                                                   โ”‚                       โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/arg/utilfuncargiter.py:257 in iter_func_args                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   254 โ”‚                                                                                          โ”‚
โ”‚   255 โ”‚   # If passed *NO* code object, query that callable for its code object.                 โ”‚
โ”‚   256 โ”‚   if func_codeobj is None:                                                               โ”‚
โ”‚ โฑ 257 โ”‚   โ”‚   func_codeobj = get_func_codeobj(func=func, exception_cls=exception_cls)            โ”‚
โ”‚   258 โ”‚   # In any case, that code object is now defined.                                        โ”‚
โ”‚   259 โ”‚                                                                                          โ”‚
โ”‚   260 โ”‚   # Bit field of OR-ed binary flags describing this callable.                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                       โ”‚
โ”‚ โ”‚ exception_cls = <class 'beartype.roar._BeartypeUtilCallableException'> โ”‚                       โ”‚
โ”‚ โ”‚          func = <class 'list'>                                         โ”‚                       โ”‚
โ”‚ โ”‚  func_codeobj = None                                                   โ”‚                       โ”‚
โ”‚ โ”‚     is_unwrap = True                                                   โ”‚                       โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                       โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/utilfunccodeobj.py:123 in get_func_codeobj                               โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   120 โ”‚   โ”‚   from beartype._util.func.utilfunctest import die_unless_func_python                โ”‚
โ”‚   121 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   122 โ”‚   โ”‚   # Raise an exception.                                                              โ”‚
โ”‚ โฑ 123 โ”‚   โ”‚   die_unless_func_python(                                                            โ”‚
โ”‚   124 โ”‚   โ”‚   โ”‚   func=func,                                                                     โ”‚
โ”‚   125 โ”‚   โ”‚   โ”‚   exception_cls=exception_cls,                                                   โ”‚
โ”‚   126 โ”‚   โ”‚   โ”‚   exception_prefix=exception_prefix,                                             โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ              โ”‚
โ”‚ โ”‚ die_unless_func_python = <function die_unless_func_python at 0x7fa05127e480>    โ”‚              โ”‚
โ”‚ โ”‚          exception_cls = <class 'beartype.roar._BeartypeUtilCallableException'> โ”‚              โ”‚
โ”‚ โ”‚       exception_prefix = ''                                                     โ”‚              โ”‚
โ”‚ โ”‚                   func = <class 'list'>                                         โ”‚              โ”‚
โ”‚ โ”‚           func_codeobj = None                                                   โ”‚              โ”‚
โ”‚ โ”‚              is_unwrap = False                                                  โ”‚              โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ              โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ /nix/store/ny489cz6nr2kp3dsjk8sx0dkgwc4cpiv-python3.11-beartype-0.16.4/lib/python3.11/site-packa โ”‚
โ”‚ ges/beartype/_util/func/utilfunctest.py:113 in die_unless_func_python                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚   110 โ”‚   โ”‚   # Else, that callable is callable.                                                 โ”‚
โ”‚   111 โ”‚   โ”‚                                                                                      โ”‚
โ”‚   112 โ”‚   โ”‚   # Raise a human-readable exception.                                                โ”‚
โ”‚ โฑ 113 โ”‚   โ”‚   raise exception_cls(                                                               โ”‚
โ”‚   114 โ”‚   โ”‚   โ”‚   f'{exception_prefix}{repr(func)} not pure-Python function.')                   โ”‚
โ”‚   115 โ”‚   # Else, that callable is pure-Python.                                                  โ”‚
โ”‚   116                                                                                            โ”‚
โ”‚                                                                                                  โ”‚
โ”‚ โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ locals โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ                    โ”‚
โ”‚ โ”‚    exception_cls = <class 'beartype.roar._BeartypeUtilCallableException'> โ”‚                    โ”‚
โ”‚ โ”‚ exception_prefix = ''                                                     โ”‚                    โ”‚
โ”‚ โ”‚             func = <class 'list'>                                         โ”‚                    โ”‚
โ”‚ โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ                    โ”‚
โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ
_BeartypeUtilCallableException: <class 'list'> not pure-Python function.

WOAH. Thatโ€™s super-interesting. Well, horrifying from your perspective. Iโ€™m so sorry to hear that. That sounds extremely challenging โ€“ but also remarkable that youโ€™ve managed to surmount that. And let us be honest: maths is hard for everybody. Most of us arenโ€™t willing to admit it, yet itโ€™s true. Maths is rough. Weโ€™ve all been there and are now giving you a group hug that inspires confidence. ๐Ÿค—

Oh, youโ€™re much too kind; I just keep chugging along, despite how many math and math-based courses Iโ€™ve failed so far. ๐Ÿ˜…

In my case, I have a crippling social disability called Aspergerโ€™s (i.e., high-functioning autism). The easy way to describe Aspergerโ€™s is this: โ€œImagine being more comfortable around cats, insects, trees, video game consoles, and your wife than people.โ€ Wait. Did I just suggest my wife isnโ€™t a person? Pretty sure Iโ€™m gonna pay for that later.

It turns out like recognizes like; I have Aspergerโ€™s too! Iโ€™d thought you sounded a bit too similar to myself! Or at least, before I started taking medication for it, because things were getting a wee bit out of handโ€ฆ Sighโ€ฆ Ah, well. You live and you learn. ๐Ÿ˜น Itโ€™s actually where the visual memory problems come from! โ€ฆ Or not, because correlation is not causation. Guess weโ€™ll need more research!

As for the rest, is it possible that using beartype_this_package is the problem?

This is the entire traceback; in the meantime, Iโ€™ll see if I can create a tiny package using beartype_this_package and see if I can recreate a mrp / minimal reproducible package ๐Ÿ˜น:

Test session starts (platform: linux, Python 3.11.8, pytest 7.4.3, pytest-sugar 0.9.7)
cachedir: .pytest_cache
Using --randomly-seed=2409747671
rootdir: /mnt/wsl/sylvorg/sylvorg/sylveon/siluam/oreo
configfile: pyproject.toml
plugins: order-1.1.0, repeat-0.9.2, drop-dup-tests-0.3.0, sugar-0.9.7, lazy-fixture-0.6.3, randomly-3.13.0, custom-exit-code-0.3.0, ignore-1.0.0.0, xdist-3.3.1
collected 421 items / 417 deselected / 4 selected

 tests/test_pipe.py::TestPipe.test_rshift โœ“                                                                                                              25% โ–ˆโ–ˆโ–Œ

โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€• TestPipe.test_lshift โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•โ€•

obj = <function PipeMeta.wrap.<locals>.wrapper.<locals>.wrapped at 0x7f3980eb3560>
conf = BeartypeConf(warning_cls_on_decorator_exception=<class 'beartype.roar.BeartypeClawDecorWarning'>), kwargs = {}
warning_category = <class 'beartype.roar.BeartypeClawDecorWarning'>
error_message = "\n    beartype.roar.BeartypeDecorWrappeeException: Functools.partial(<class 'map'>, <class 'str'>) not pure-Python function."

    def _beartype_object_nonfatal(
        # Mandatory parameters.
        obj: BeartypeableT,
        conf: BeartypeConf,

        # Variadic keyword parameters.
        **kwargs
    ) -> BeartypeableT:
        '''
        Decorate the passed **beartypeable** (i.e., pure-Python callable or class)
        with optimal type-checking dynamically generated unique to that
        beartypeable and any otherwise uncaught exception raised by doing so safely
        coerced into a warning instead.

        Motivation
        ----------
        This decorator is principally intended to be called by our **import hook
        API** (i.e., public functions exported by the :mod:`beartype.claw`
        subpackage). Raising detailed exception tracebacks on unexpected error
        conditions is:

        * The right thing to do for callables and classes manually type-checked with
          the :func:`beartype.beartype` decorator.
        * The wrong thing to do for callables and classes automatically type-checked
          by import hooks installed by public functions exported by the
          :mod:`beartype.claw` subpackage. Why? Because doing so would render those
          import hooks fragile to the point of being practically useless on
          real-world packages and codebases by unexpectedly failing on the first
          callable or class defined *anywhere* under a package that is not
          type-checkable by :func:`beartype.beartype` (whether through our fault or
          that package's). Instead, the right thing to do is to:

          * Emit a warning for each callable or class that :func:`beartype.beartype`
            fails to generate a type-checking wrapper for.
          * Continue to the next callable or class.

        Parameters
        ----------
        obj : BeartypeableT
            **Beartypeable** (i.e., pure-Python callable or class) to be decorated.
        conf : BeartypeConf
            **Beartype configuration** (i.e., dataclass encapsulating all flags,
            options, settings, and other metadata configuring the current decoration
            of the decorated callable or class).

        All remaining keyword parameters are passed as is to the lower-level
        :func:`._beartype_object_fatal` decorator internally called by this
        higher-level decorator on the passed beartypeable.

        Returns
        ----------
        BeartypeableT
            Either:

            * If :func:`.beartype_object_fatal` raises an exception, the passed
              object unmodified as is.
            * If :func:`.beartype_object_fatal` raises no exception:

              * If the passed object is a class, this existing class embellished with
                dynamically generated type-checking.
              * If the passed object is a callable, a new callable wrapping that
                callable with dynamically generated type-checking.

        Warns
        ----------
        warning_category
            If :func:`.beartype_object_fatal` fails to generate a type-checking
            wrapper for this callable or class by raising a fatal exception, this
            decorator coerces that exception into a non-fatal warning instead.
        '''

        # Attempt to decorate the passed beartypeable.
        try:
>           return _beartype_object_fatal(obj, conf=conf, **kwargs)

/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:210:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:132: in _beartype_object_fatal
    beartype_nontype(obj, **kwargs)  # type: ignore[return-value]
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py:177: in beartype_nontype
    return beartype_func(obj, **kwargs)  # type: ignore[return-value]
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py:239: in beartype_func
    bear_call = make_beartype_call(func, conf, **kwargs)  # pyright: ignore[reportGeneralTypeIssues]
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_check/checkcall.py:669: in make_beartype_call
    bear_call.reinit(func, conf, **kwargs)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_check/checkcall.py:385: in reinit
    self.func_wrappee_wrappee_codeobj = get_func_codeobj(
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/utilfunccodeobj.py:132: in get_func_codeobj
    die_unless_func_python(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

func = functools.partial(<class 'map'>, <class 'str'>), exception_cls = <class 'beartype.roar.BeartypeDecorWrappeeException'>, exception_prefix = ''

    def die_unless_func_python(
        # Mandatory parameters.
        func: Codeobjable,

        # Optional parameters.
        exception_cls: TypeException = _BeartypeUtilCallableException,
        exception_prefix: str = '',
    ) -> None:
        '''
        Raise an exception if the passed callable is **C-based** (i.e., implemented
        in C as either a builtin bundled with the active Python interpreter *or*
        third-party C extension function).

        Equivalently, this validator raises an exception unless the passed function
        is **pure-Python** (i.e., implemented in Python as either a function or
        method).

        Parameters
        ----------
        func : Codeobjable
            Callable to be inspected.
        exception_cls : TypeException, optional
            Type of exception to be raised. Defaults to
            :class:`._BeartypeUtilCallableException`.
        exception_prefix : str, optional
            Human-readable label prefixing the representation of this object in the
            exception message. Defaults to the empty string.

        Raises
        ------
        exception_cls
             If the passed callable is C-based.

        See Also
        --------
        :func:`.is_func_python`
            Further details.
        '''

        # If that callable is *NOT* pure-Python, raise an exception.
        if not is_func_python(func):
            assert isinstance(exception_cls, type), (
                f'{repr(exception_cls)} not class.')
            assert issubclass(exception_cls, Exception), (
                f'{repr(exception_cls)} not exception subclass.')
            assert isinstance(exception_prefix, str), (
                f'{repr(exception_prefix)} not string.')

            # If that callable is uncallable, raise an appropriate exception.
            if not callable(func):
                raise exception_cls(f'{exception_prefix}{repr(func)} not callable.')
            # Else, that callable is callable.

            # Raise a human-readable exception.
>           raise exception_cls(
                f'{exception_prefix}{repr(func)} not pure-Python function.')
E           beartype.roar.BeartypeDecorWrappeeException: Functools.partial(<class 'map'>, <class 'str'>) not pure-Python function.

/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/utilfunctest.py:113: BeartypeDecorWrappeeException

During handling of the above exception, another exception occurred:

self = <test_pipe.TestPipe object at 0x7f3980edd1d0>, a = 5, b = 5, tenc = ['0', '1', '2', '3', '4', '5', ...], f1 = functools.partial(<class 'map'>, <class 'str'>)
f2 = <class 'list'>, f10 = <oreo.pipe.Pipe object at 0x7f3980ef21b0>

    def test_lshift(self, a, b, tenc, f1, f2, f10):
>       assert (Pipe(f2) << f1 << f10)(a, b=b) == tenc

tests/test_pipe.py:47:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
<@beartype(oreo.pipe.Pipe.__ror__) at 0x7f39811109a0>:53: in __ror__
    ???
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/pipe.py:40: in __ror__
    return self.__class__(self.__wrap__(self.func, other))
<@beartype(oreo.pipe.Pipe.__wrap__) at 0x7f39811107c0>:71: in __wrap__
    ???
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/pipe.py:31: in __wrap__
    return self.__class__.wrap(b)(a)
<@beartype(oreo.pipe.PipeMeta.wrap.wrapper) at 0x7f3980eb3420>:32: in wrapper
    ???
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/pipe.py:15: in wrapper
    def wrapped(*args: Unpack[Any], **kwargs: Unpack[Any]):
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcache.py:130: in beartype_confed
    return beartype_object(obj, conf)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:91: in beartype_object
    _beartype_object_nonfatal(obj, conf=conf, **kwargs)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:249: in _beartype_object_nonfatal
    f'{prefix_beartypeable(obj)}{label_object_context(obj)}:'
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextprefix.py:56: in prefix_beartypeable
    f'{label_callable(obj)} '  # type: ignore[arg-type]
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextlabel.py:214: in label_callable
    func_label_prefix = label_beartypeable_kind(func)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextlabel.py:102: in label_beartypeable_kind
    arg_first_name = get_func_arg_first_name_or_none(obj)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/arg/utilfuncargget.py:71: in get_func_arg_first_name_or_none
    for arg_meta in iter_func_args(
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/arg/utilfuncargiter.py:257: in iter_func_args
    func_codeobj = get_func_codeobj(func=func, exception_cls=exception_cls)
/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/utilfunccodeobj.py:132: in get_func_codeobj
    die_unless_func_python(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

func = functools.partial(<class 'map'>, <class 'str'>), exception_cls = <class 'beartype.roar._BeartypeUtilCallableException'>, exception_prefix = ''

    def die_unless_func_python(
        # Mandatory parameters.
        func: Codeobjable,

        # Optional parameters.
        exception_cls: TypeException = _BeartypeUtilCallableException,
        exception_prefix: str = '',
    ) -> None:
        '''
        Raise an exception if the passed callable is **C-based** (i.e., implemented
        in C as either a builtin bundled with the active Python interpreter *or*
        third-party C extension function).

        Equivalently, this validator raises an exception unless the passed function
        is **pure-Python** (i.e., implemented in Python as either a function or
        method).

        Parameters
        ----------
        func : Codeobjable
            Callable to be inspected.
        exception_cls : TypeException, optional
            Type of exception to be raised. Defaults to
            :class:`._BeartypeUtilCallableException`.
        exception_prefix : str, optional
            Human-readable label prefixing the representation of this object in the
            exception message. Defaults to the empty string.

        Raises
        ------
        exception_cls
             If the passed callable is C-based.

        See Also
        --------
        :func:`.is_func_python`
            Further details.
        '''

        # If that callable is *NOT* pure-Python, raise an exception.
        if not is_func_python(func):
            assert isinstance(exception_cls, type), (
                f'{repr(exception_cls)} not class.')
            assert issubclass(exception_cls, Exception), (
                f'{repr(exception_cls)} not exception subclass.')
            assert isinstance(exception_prefix, str), (
                f'{repr(exception_prefix)} not string.')

            # If that callable is uncallable, raise an appropriate exception.
            if not callable(func):
                raise exception_cls(f'{exception_prefix}{repr(func)} not callable.')
            # Else, that callable is callable.

            # Raise a human-readable exception.
>           raise exception_cls(
                f'{exception_prefix}{repr(func)} not pure-Python function.')
E           beartype.roar._BeartypeUtilCallableException: Functools.partial(<class 'map'>, <class 'str'>) not pure-Python function.

/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/func/utilfunctest.py:113: _BeartypeUtilCallableException

 tests/test_pipe.py::TestPipe.test_lshift โจฏ                                                                                                              50% โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
 tests/test_pipe.py::TestPipe.test_decorator โœ“                                                                                                           75% โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–Œ
 tests/test_pipe.py::TestPipe.test_pipe โœ“                                                                                                               100% โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆ
========================================================================== warnings summary ===========================================================================
../../../../../../../nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254
  /nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254: BeartypeClawDecorWarning: Method oreo.pipe.Pipe.__call__() in file "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/pipe.py" line 33:
      beartype.roar.BeartypeDecorHintNonpepException: Method oreo.pipe.Pipe.__call__() parameter "args" type hint *typing.Any either PEP-noncompliant or currently unsupported by @beartype.
    warn(warning_message, warning_category)

../../../../../../../nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254
  /nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254: BeartypeClawDecorWarning: Function oreo.pipe.pipe() in file "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/pipe.py" line 51:
      beartype.roar.BeartypeDecorHintNonpepException: Function oreo.pipe.pipe() parameter "funcs" type hint *<class 'collections.abc.Callable'> either PEP-noncompliant or currently unsupported by @beartype.
    warn(warning_message, warning_category)

../../../../../../../nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254
  /nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254: BeartypeClawDecorWarning: <class "oreo.typing.DTColl"> in file "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/typing.py" line 10:
      Traceback (most recent call last):
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 210, in _beartype_object_nonfatal
          return _beartype_object_fatal(obj, conf=conf, **kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 132, in _beartype_object_fatal
          beartype_nontype(obj, **kwargs)  # type: ignore[return-value]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 110, in beartype_nontype
          return beartype_descriptor_decorator_builtin(obj, **kwargs)  # type: ignore[return-value]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 457, in beartype_descriptor_decorator_builtin
          func_checked = beartype_nontype(descriptor.__func__,  **kwargs)  # type: ignore[union-attr]
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 74, in beartype_nontype
          assert not isinstance(obj, type), f'{repr(obj)} is class.'
      AssertionError: <class 'types.GenericAlias'> is class.

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 210, in _beartype_object_nonfatal
          return _beartype_object_fatal(obj, conf=conf, **kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 128, in _beartype_object_fatal
          beartype_type(obj, **kwargs)  # type: ignore[return-value]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decortype.py", line 266, in beartype_type
          attr_value_beartyped = beartype_object(
                                 ^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 91, in beartype_object
          _beartype_object_nonfatal(obj, conf=conf, **kwargs)
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 249, in _beartype_object_nonfatal
          f'{prefix_beartypeable(obj)}{label_object_context(obj)}:'
             ^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextprefix.py", line 56, in prefix_beartypeable
          f'{label_callable(obj)} '  # type: ignore[arg-type]
             ^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextlabel.py", line 172, in label_callable
          assert callable(func), f'{repr(func)} uncallable.'
      AssertionError: <classmethod(<class 'types.GenericAlias'>)> uncallable.

    warn(warning_message, warning_category)

../../../../../../../nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254
  /nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py:254: BeartypeClawDecorWarning: <class "oreo.typing.NTDict"> in file "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/oreo/typing.py" line 44:
      Traceback (most recent call last):
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 210, in _beartype_object_nonfatal
          return _beartype_object_fatal(obj, conf=conf, **kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 132, in _beartype_object_fatal
          beartype_nontype(obj, **kwargs)  # type: ignore[return-value]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 110, in beartype_nontype
          return beartype_descriptor_decorator_builtin(obj, **kwargs)  # type: ignore[return-value]
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 457, in beartype_descriptor_decorator_builtin
          func_checked = beartype_nontype(descriptor.__func__,  **kwargs)  # type: ignore[union-attr]
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decornontype.py", line 74, in beartype_nontype
          assert not isinstance(obj, type), f'{repr(obj)} is class.'
      AssertionError: <class 'types.GenericAlias'> is class.

      During handling of the above exception, another exception occurred:

      Traceback (most recent call last):
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 210, in _beartype_object_nonfatal
          return _beartype_object_fatal(obj, conf=conf, **kwargs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 128, in _beartype_object_fatal
          beartype_type(obj, **kwargs)  # type: ignore[return-value]
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/_decortype.py", line 266, in beartype_type
          attr_value_beartyped = beartype_object(
                                 ^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 91, in beartype_object
          _beartype_object_nonfatal(obj, conf=conf, **kwargs)
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_decor/decorcore.py", line 249, in _beartype_object_nonfatal
          f'{prefix_beartypeable(obj)}{label_object_context(obj)}:'
             ^^^^^^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextprefix.py", line 56, in prefix_beartypeable
          f'{label_callable(obj)} '  # type: ignore[arg-type]
             ^^^^^^^^^^^^^^^^^^^
        File "/nix/store/f1vsy5937q8fnb7ffccxgals4s7s5d4m-python3-3.11.8-env/lib/python3.11/site-packages/beartype/_util/text/utiltextlabel.py", line 172, in label_callable
          assert callable(func), f'{repr(func)} uncallable.'
      AssertionError: <classmethod(<class 'types.GenericAlias'>)> uncallable.

    warn(warning_message, warning_category)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
======================================================================= short test summary info =======================================================================
FAILED tests/test_pipe.py::TestPipe::test_lshift - beartype.roar._BeartypeUtilCallableException: Functools.partial(<class 'map'>, <class 'str'>) not pure-Python function.

Results (3.04s):
       3 passed
       1 failed
         - tests/test_pipe.py:46 TestPipe.test_lshift
     417 deselected

โ€ฆ In retrospect, I probably shouldโ€™ve provided this to begin withโ€ฆ

Superb request. Youโ€™re absolutely right, @sylvorg. Iโ€™m kinda surprised @beartype doesnโ€™t already support functools.partial. Thatโ€™s bad. functools.partial is literally everywhere. Itโ€™s standard and ubiquitous, so @beartype needs to support this ASAP.

Let us see what the future brings for everyone. โ€œOh, look! Itโ€™s a double rainbow!โ€ ๐ŸŒˆ ๐ŸŒˆ

Hah! Glad I could help! ๐Ÿ˜ธ

These are for rich, though I donโ€™t yet know if the second one works:

Regarding wraps, I always assumed it could take any callable, since classes could also be called, no?

And finally, thank you so, so much for sticking with me through this; I very much appreciate it, and Iโ€™ll keep your offer in mind! ๐Ÿ˜‰ I am in the currently in the very strange position of both wanting to find issues in beartype, just to have this much fun again, and not, because, well, you know. ๐Ÿ˜น

Again, thank you kindly for all the help! ๐Ÿ˜ป

Ah ha! Thanks to your tremendous gusto, @sylvorg, Iโ€™ve isolated this to a minimal reproducible example:

from beartype import beartype
from functools import wraps
from typing import Any

@beartype
@wraps(list)
def wrapped(*args: Any, **kwargs: Any):
    pass

Fascinating. I never even knew you could pass classes to the @functools.wraps() decorator. Today I learned. Interestingly, when you pass a class to the @functools.wraps(), it looks like that decorator internally wraps that class in a new function of the same name. Or something, something.

Anywaaaays. I now have much to chew on. Let us chew until the night bleeds into dawn! ๐ŸŒ„

And hereโ€™s the link to the repository with the minimal reproducible package; I was able to consistently reproduce the error!

Thank you kindly! ๐Ÿ˜ธ To be fair, my not realizing that these were python internals may prove my point. ๐Ÿ˜น What makes the situation worse is that Iโ€™m currently pursuing a Computer Science degree, have studied the algorithms and data structures and the related time complexities, but am not very good at math due a visual disability. What fun! ๐Ÿ˜ญ

*Ahem.* Moving onโ€ฆ

As it turns out, it was indeed the use of Unpack. However! The error message didnโ€™t seem to specify this, instead telling me that the callables were not pure-python functions. โ€ฆ Also, sorry, I just realized I didnโ€™t include the pipe function, which reduces the Pipe class when given a tuple of functions:

def pipe(*funcs: Unpack[Callable]) -> Pipe:
    funcs: list[Callable] = flatten(funcs)
    if funcs:
        init: Pipe = Pipe(funcs[0])
        if len(funcs) > 1:
            return reduce(
                operator.ior,
                funcs[1:],
                init,
            )
            # return reduce(
            #     lambda a, b: Pipe.wrap(b)(a),
            #     lambda a, b: lambda *args, **kwargs: b(a(*args, **kwargs)),
            #     funcs,
            # )
        return init
    return Pipe(lambda x: x)

Can you trip the error when using Unpack for all of them? Because it might be better for beartype to specify in these cases that Unpack only works with typing.TypeVarTuple and typing.TypeDict, and / or that it doesnโ€™t support it yet.

In the meantime, Iโ€™ll study up on the blog post; thanks for the pointer!

Oh โ€“ and would you mind posting your test that uses a partial function? Iโ€™m not quite sure whatโ€™s failing here. The exact code would be a huge help. Thanks so much, @sylvorg! Weโ€™ll get this squared away for you or my favorite emoji isnโ€™t a flexing bear. ๐Ÿ’ช ๐Ÿป