def _parse_schema(schema, method):
if method and schema.get('<STR_LIT>', False):<EOL><INDENT>return _READONLY_PROPERTY<EOL><DEDENT>if '<STR_LIT>' in schema:<EOL><INDENT>schema_ = copy.deepcopy(schema['<STR_LIT>'][<NUM_LIT:0>])<EOL>for x in schema['<STR_LIT>'][<NUM_LIT:1>:]:<EOL><INDENT>_dict_merge(schema_, x)<EOL><DEDENT>return _parse_schema(schema_, method)<EOL><DEDENT>if '<STR_LIT>' in schema:<EOL><INDENT>return _parse_schema(schema['<STR_LIT>'][<NUM_LIT:0>], method)<EOL><DEDENT>if '<STR_LIT>' in schema:<EOL><INDENT>return schema['<STR_LIT>'][<NUM_LIT:0>]<EOL><DEDENT>schema_type = schema.get('<STR_LIT:type>', '<STR_LIT:object>')<EOL>if schema_type == '<STR_LIT>':<EOL><INDENT>if '<STR_LIT>' in schema['<STR_LIT>']:<EOL><INDENT>return [<EOL>_parse_schema(x, method) for x in schema['<STR_LIT>']['<STR_LIT>']]<EOL><DEDENT>return [_parse_schema(schema['<STR_LIT>'], method)]<EOL><DEDENT>if schema_type == '<STR_LIT:object>':<EOL><INDENT>if method and all(v.get('<STR_LIT>', False)<EOL>for v in schema['<STR_LIT>'].values()):<EOL><INDENT>return _READONLY_PROPERTY<EOL><DEDENT>results = []<EOL>for name, prop in schema.get('<STR_LIT>', {}).items():<EOL><INDENT>result = _parse_schema(prop, method)<EOL>if result != _READONLY_PROPERTY:<EOL><INDENT>results.append((name, result))<EOL><DEDENT><DEDENT>return collections.OrderedDict(results)<EOL><DEDENT>if (schema_type, schema.get('<STR_LIT>')) in _TYPE_MAPPING:<EOL><INDENT>return _TYPE_MAPPING[(schema_type, schema.get('<STR_LIT>'))]<EOL><DEDENT>return _TYPE_MAPPING[(schema_type, None)]<EOL>
Convert a Schema Object to a Python object.

Args:
    schema: An ``OrderedDict`` representing the schema object.