jgdv.mixins.annotate.subclasser

Classes

Subclasser

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_pydantic_class(
name,
cls,
*,
namespace=None,
) <Unknown>[source]
Parameters:
Return type:

type

_new_std_class(
name,
cls,
*,
namespace=None,
mro=None,
) <Unknown>[source]

Dynamically creates a new class

Parameters:
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’)

Parameters:
  • cls (type[Subclasser.annotate.T])

  • params (Any)

Return type:

type[Subclasser.annotate.T]

static decorate_name(
cls,
*vals,
params=None,
) <Unknown>[source]

Create a new name for an annotated subclass

decorate(cls, a,b,c) -> cls<+a+b+c> decorate(cls, params=’blah’) -> cls[blah]

Parameters:
Return type:

jgdv.Maybe[str]

make_generic(cls, *params) <Unknown>[source]
Parameters:
  • cls (type[Subclasser.make_generic.T])

  • params (Any)

Return type:

types.GenericAlias

make_subclass(
name,
cls,
*,
namespace=None,
mro=None,
) <Unknown>[source]

Build a dynamic subclass of cls, with name, possibly with a maniplated mro and internal namespace

Parameters:
Return type:

type[Subclasser.make_subclass.T]