jgdv.mixins.annotate.subclasser
Classes
A Util class for building subclasses programmatically |
Module Contents
- class jgdv.mixins.annotate.subclasser.Subclasser[source]
A Util class for building subclasses programmatically
Subclasses can have modified mro’s, Also extended namespaces, And preserve the base class’ __slots__/__dict__ state
- _new_std_class(
- name,
- cls,
- *,
- namespace=None,
- mro=None,
Dynamically creates a new class
- Parameters:
name (str)
cls (type[Subclasser._new_std_class.T])
namespace (jgdv.Maybe[dict])
mro (jgdv.Maybe[collections.abc.Iterable])
- Return type:
type[Subclasser._new_std_class.T]
- annotate(cls, *params) <Unknown>[source]
Make a subclass of cls,
annotated to have params in getattr(cls, ‘_annotate_to’, ‘_typevar’)
- static decorate_name(
- cls,
- *vals,
- params=None,
Create a new name for an annotated subclass
decorate(cls, a,b,c) -> cls<+a+b+c> decorate(cls, params=’blah’) -> cls[blah]
- make_generic(cls, *params) <Unknown>[source]
- Parameters:
cls (type[Subclasser.make_generic.T])
params (Any)
- Return type:
- make_subclass(
- name,
- cls,
- *,
- namespace=None,
- mro=None,
Build a dynamic subclass of cls, with name, possibly with a maniplated mro and internal namespace
- Parameters:
name (str)
cls (type[Subclasser.make_subclass.T])
namespace (jgdv.Maybe[dict])
mro (jgdv.Maybe[collections.abc.Iterable])
- Return type:
type[Subclasser.make_subclass.T]