From 225d19aa7df7639b51cdcf1231ad5bc65cd5cf75 Mon Sep 17 00:00:00 2001 From: dnwpark Date: Mon, 9 Feb 2026 18:23:55 -0800 Subject: [PATCH] Remove unused _flatten_class_explicit. --- typemap/type_eval/_apply_generic.py | 80 ----------------------------- 1 file changed, 80 deletions(-) diff --git a/typemap/type_eval/_apply_generic.py b/typemap/type_eval/_apply_generic.py index c8ec175..28132d4 100644 --- a/typemap/type_eval/_apply_generic.py +++ b/typemap/type_eval/_apply_generic.py @@ -405,84 +405,4 @@ def _type_repr(t: Any) -> str: return repr(t) -# TODO: Potentially most of this could be ripped out. The internals -# don't use this at all, it's only used by format_class. -def _flatten_class_explicit( - cls: type[Any], ctx: _eval_typing.EvalContext -) -> type[_eval_typing._EvalProxy]: - cls_boxed = box(cls) - mro_boxed = cls_boxed.mro - - # TODO: I think we want to create the whole mro chain... - # before we evaluate the contents? - - # FIXME: right now we flatten out all the attributes... but should we?? - # XXX: Yeah, a lot of work is put into copying everything into every - # class and it is not worth it, at all. - - new = {} - - # Run through the mro and populate everything - for boxed in reversed(mro_boxed): - # We create it early so we can add it to seen, to handle recursion - # XXX: currently we are doing this even for types with no generics... - # that simplifies the flow... - probably keep it this way until - # we stop flattening attributes into every class - name = boxed.cls.__name__ - cboxed: Any - - args = tuple(boxed.args.values()) - args_str = ", ".join(_type_repr(a) for a in args) - fullname = f"{name}[{args_str}]" if args_str else name - cboxed = type( - fullname, - (_eval_typing._EvalProxy,), - { - "__module__": boxed.cls.__module__, - "__name__": fullname, - "__origin__": boxed.cls, - "__local_args__": args, - }, - ) - new[boxed] = cboxed - - annos: dict[str, Any] = {} - dct: dict[str, Any] = {} - sources: dict[str, Any] = {} - - cboxed.__local_annotations__, cboxed.__local_defns__ = get_local_defns( - boxed - ) - for base in reversed(boxed.mro): - cbase = new[base] - annos.update(cbase.__local_annotations__) - dct.update(cbase.__local_defns__) # uh. - for k in [*cbase.__local_annotations__, *cbase.__local_defns__]: - sources[k] = cbase - - cboxed.__defn_names__ = set(dct) - cboxed.__annotations__ = annos - cboxed.__defn_sources__ = sources - cboxed.__generalized_mro__ = [new[b] for b in boxed.mro] - - for k, v in dct.items(): - setattr(cboxed, k, v) - - # Run through the mro again and evaluate everything - for cboxed in new.values(): - for k, v in cboxed.__annotations__.items(): - cboxed.__annotations__[k] = _eval_typing._eval_types(v, ctx=ctx) - - for k in cboxed.__defn_names__: - v = cboxed.__dict__[k] - setattr(cboxed, k, _eval_typing._eval_types(v, ctx=ctx)) - - return new[cls_boxed] - - -def flatten_class_explicit(obj: typing.Any): - with _eval_typing._ensure_context() as ctx: - return _flatten_class_explicit(obj, ctx) - - flatten_class = flatten_class_new_proto