code: def __call__(cls, *args, **kwargs):
      __tracebackhide__ = True
      if len(cls.__abstractclassvars__) > 0:  # pyright: ignore
          abstract_class_vars = set(
              cls.__abstractclassvars__
          )  # pyright: ignore
          raise TypeError(
              f"Can't instantiate abstract class {cls.__name__} with abstract class "
              f"attributes {abstract_class_vars}"
          )
      self = super().__call__(*args, **kwargs)
      if len(cls.__abstractvars__) > 0:  # pyright: ignore
          abstract_class_vars = set(
              cls.__abstractvars__
          )  # pyright: ignore
          raise TypeError(
              f"Can't instantiate abstract class {cls.__name__} with abstract "
              f"attributes {abstract_class_vars}"
          )
      return self
  
file_path: equinox/equinox/_better_abstract.py
imports: import abc
  import dataclasses
  from typing import Annotated, ClassVar, Generic, get_args, get_origin, TYPE_CHECKING, TypeVar
  from typing_extensions import dataclass_transform, TypeAlias
label_desc: Use image node_id 3 for calling the ABCMeta obj's underlying member method code with example usage: obj.__call__(cls) and returns: self