<s> def _get_classes ( * args ) : <EOL> result = [ ] <EOL> for arg in args : <EOL> if callable ( arg ) : <EOL> arg = arg ( ) <EOL> result . append ( arg ) <EOL> return result <EOL> def _factory ( name , module , classes ) : <EOL> return type ( <EOL> name , <EOL> tuple ( classes ) , <EOL> { <EOL> '<STR_LIT>' : module , <EOL> } <EOL> ) <EOL> def _model_factory ( name , module , classes ) : <EOL> return type ( <EOL> name , <EOL> tuple ( classes ) , <EOL> { <EOL> '<STR_LIT>' : module , <EOL> '<STR_LIT:Meta>' : type ( <EOL> '<STR_LIT:Meta>' , <EOL> tuple ( cls . Meta for cls in classes ) + ( object , ) , <EOL> { <EOL> '<STR_LIT>' : True <EOL> } <EOL> ) <EOL> } <EOL> ) <EOL> def inherit_model ( * args ) : <EOL> def injector ( value ) : <EOL> classes = _get_classes ( * args ) <EOL> classes . insert ( <NUM_LIT:0> , value ) <EOL> return _model_factory ( value . __name__ , value . __module__ , classes ) <EOL> return injector <EOL> def mixin_model ( * args ) : <EOL> def injector ( value ) : <EOL> classes = _get_classes ( * args ) <EOL> classes . append ( value ) <EOL> return _model_factory ( value . __name__ , value . __module__ , classes ) <EOL> return injector <EOL> def inherit_class ( * args ) : <EOL> def injector ( value ) : <EOL> classes = _get_classes ( * args ) <EOL> classes . insert ( <NUM_LIT:0> , value ) <EOL> return _factory ( value . __name__ , value . __module__ , classes ) <EOL> return injector <EOL> def mixin_class ( * args ) : <EOL> def injector ( value ) : <EOL> classes = _get_classes ( * args ) <EOL> classes . append ( value ) <EOL> return _factory ( value . __name__ , value . __module__ , classes ) <EOL> return injector </s>
