code: def __new__(mcs, name, bases, namespace, /, **kwargs):
      cls = super().__new__(mcs, name, bases, namespace, **kwargs)
  
      # We don't try and check that our AbstractVars and AbstractClassVars are
      # consistently annotated across `cls` and each element of `bases`. Python just
      # doesn't really provide any way of checking that two hints are compatible.
      # (Subscripted generics make this complicated!)
  
      abstract_vars = set()
      abstract_class_vars = set()
      for kls in reversed(cls.__mro__):
          ann = kls.__dict__.get("__annotations__", {})
          for name, annotation in ann.items():
              is_abstract, is_class = _process_annotation(annotation)
              if is_abstract:
                  if is_class:
                      if name in kls.__dict__:
                          raise TypeError(
                              f"Abstract class attribute {name} cannot have value"
                          )
                      abstract_vars.discard(name)
                      abstract_class_vars.add(name)
                  else:
                      if name in kls.__dict__:
                          raise TypeError(
                              f"Abstract attribute {name} cannot have value"
                          )
                      # If it's already an abstract class var, then superfluous to
                      # also consider it an abstract var.
                      if name not in abstract_class_vars:
                          abstract_vars.add(name)
              else:
                  abstract_vars.discard(
                      name
                  )  # not conditional on `is_class`
                  if is_class:
                      abstract_class_vars.discard(name)
          for name in kls.__dict__.keys():
              abstract_vars.discard(name)
              abstract_class_vars.discard(name)
      cls.__abstractvars__ = frozenset(abstract_vars)  # pyright: ignore
      cls.__abstractclassvars__ = frozenset(
          abstract_class_vars
      )  # pyright: ignore
      return cls
  
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 2 for calling the ABCMeta obj's underlying member method code with example usage: obj.__new__() and returns: cls