def render_schema_base()

in src/aaz_dev/cli/controller/az_operation_generator.py [0:0]


def render_schema_base(schema, cls_map, schema_kwargs=None):
    if schema_kwargs is None:
        schema_kwargs = {}
    
    flags = schema_kwargs.get('flags', {})
    # read_only is not inherited by class schema, so we need to set it here
    if schema.read_only:
        flags['read_only'] = True

    if isinstance(schema, CMDClsSchemaBase):
        cls_name = schema.type[1:]
        schema = cls_map[cls_name].schema
    else:
        cls_name = getattr(schema, 'cls', None)
    cls_builder_name = parse_cls_builder_name(cls_name) if cls_name else None
   
    if schema.nullable:
        schema_kwargs['nullable'] = True
    if isinstance(schema, CMDAnyTypeSchemaBase):
        schema_type = "AAZAnyType"
    elif isinstance(schema, CMDStringSchemaBase):
        schema_type = "AAZStrType"
    elif isinstance(schema, CMDIntegerSchemaBase):
        schema_type = "AAZIntType"
    elif isinstance(schema, CMDBooleanSchemaBase):
        schema_type = "AAZBoolType"
    elif isinstance(schema, CMDFloatSchemaBase):
        schema_type = "AAZFloatType"
    elif isinstance(schema, CMDIdentityObjectSchemaBase):
        schema_type = "AAZIdentityObjectType"
    elif isinstance(schema, CMDObjectSchemaBase):
        if schema.props or schema.discriminators:
            schema_type = "AAZObjectType"
            if schema.additional_props:
                # treat it as AAZFreeFormDictType
                schema_type = "AAZFreeFormDictType"
        elif schema.additional_props:
            # TODO: remove it after aaz repo updated without any_type property
            if schema.additional_props.any_type is True:
                schema_type = "AAZFreeFormDictType"
            else:
                assert schema.additional_props.item is not None
                schema_type = "AAZDictType"
        else:
            # empty object
            schema_type = "AAZObjectType"
    elif isinstance(schema, CMDArraySchemaBase):
        schema_type = "AAZListType"
    else:
        raise NotImplementedError()

    if flags:
        schema_kwargs['flags'] = flags

    return schema_type, schema_kwargs, cls_builder_name