(window_dict)
return cls
Creates a new class for that window and registers it at this module.
Creates a new class for that window and registers it at this module.
Creates a new class for that window and registers it at this module .
def _make_window(window_dict):
    """
    Creates a new class for that window and registers it at this module.
    """
    cls_name = '%sWindow' % camel_case(str(window_dict['name']))
    bases = (Window,)
    attrs = {
        '__module__': sys.modules[__name__],
        'name': str(window_dict['name']),
        'inv_type': str(window_dict['id']),
        'inv_data': window_dict,
    }

    # creates function-local index and size variables
    def make_slot_method(index, size=1):
        if size == 1:
            return lambda self: self.slots[index]
        else:
            return lambda self: self.slots[index:(index + size)]

    for slots in window_dict.get('slots', []):
        index = slots['index']
        size = slots.get('size', 1)
        attr_name = snake_case(str(slots['name']))
        attr_name += '_slot' if size == 1 else '_slots'
        slots_method = make_slot_method(index, size)
        slots_method.__name__ = attr_name
        attrs[attr_name] = property(slots_method)

    for i, prop_name in enumerate(window_dict.get('properties', [])):
        def make_prop_method(i):
            return lambda self: self.properties[i]
        prop_method = make_prop_method(i)
        prop_name = snake_case(str(prop_name))
        prop_method.__name__ = prop_name
        attrs[prop_name] = property(prop_method)

    cls = type(cls_name, bases, attrs)
    assert not hasattr(sys.modules[__name__], cls_name), \
        'Window "%s" already registered at %s' % (cls_name, __name__)
    setattr(sys.modules[__name__], cls_name, cls)
    return cls
def _make_window ( window_dict ) : cls_name = '%sWindow' % camel_case ( str ( window_dict [ 'name' ] ) ) bases = ( Window , ) attrs = { '__module__' : sys . modules [ __name__ ] , 'name' : str ( window_dict [ 'name' ] ) , 'inv_type' : str ( window_dict [ 'id' ] ) , 'inv_data' : window_dict , } # creates function-local index and size variables def make_slot_method ( index , size = 1 ) : if size == 1 : return lambda self : self . slots [ index ] else : return lambda self : self . slots [ index : ( index + size ) ] for slots in window_dict . get ( 'slots' , [ ] ) : index = slots [ 'index' ] size = slots . get ( 'size' , 1 ) attr_name = snake_case ( str ( slots [ 'name' ] ) ) attr_name += '_slot' if size == 1 else '_slots' slots_method = make_slot_method ( index , size ) slots_method . __name__ = attr_name attrs [ attr_name ] = property ( slots_method ) for i , prop_name in enumerate ( window_dict . get ( 'properties' , [ ] ) ) : def make_prop_method ( i ) : return lambda self : self . properties [ i ] prop_method = make_prop_method ( i ) prop_name = snake_case ( str ( prop_name ) ) prop_method . __name__ = prop_name attrs [ prop_name ] = property ( prop_method ) cls = type ( cls_name , bases , attrs ) assert not hasattr ( sys . modules [ __name__ ] , cls_name ) , 'Window "%s" already registered at %s' % ( cls_name , __name__ ) setattr ( sys . modules [ __name__ ] , cls_name , cls ) return cls