optimize __getattribute__ access

This commit is contained in:
collerek
2021-03-26 10:24:56 +01:00
parent 91c7725293
commit db7ac905b2
3 changed files with 15 additions and 3 deletions

View File

@ -75,7 +75,7 @@ class UndefinedType: # pragma no cover
Undefined = UndefinedType() Undefined = UndefinedType()
__version__ = "0.10.1" __version__ = "0.10.2"
__all__ = [ __all__ = [
"Integer", "Integer",
"BigInteger", "BigInteger",

View File

@ -267,9 +267,13 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass
if item == "pk": if item == "pk":
return object.__getattribute__(self, "__dict__").get(self.Meta.pkname, None) return object.__getattribute__(self, "__dict__").get(self.Meta.pkname, None)
if item in object.__getattribute__(self, "extract_related_names")(): if item in object.__getattribute__(self, "extract_related_names")():
return self._extract_related_model_instead_of_field(item) return object.__getattribute__(
self, "_extract_related_model_instead_of_field"
)(item)
if item in object.__getattribute__(self, "extract_through_names")(): if item in object.__getattribute__(self, "extract_through_names")():
return self._extract_related_model_instead_of_field(item) return object.__getattribute__(
self, "_extract_related_model_instead_of_field"
)(item)
if item in object.__getattribute__(self, "Meta").property_fields: if item in object.__getattribute__(self, "Meta").property_fields:
value = object.__getattribute__(self, item) value = object.__getattribute__(self, item)
return value() if callable(value) else value return value() if callable(value) else value

View File

@ -14,6 +14,7 @@ quick_access_set = {
"__json_encoder__", "__json_encoder__",
"__post_root_validators__", "__post_root_validators__",
"__pre_root_validators__", "__pre_root_validators__",
"__private_attributes__",
"__same__", "__same__",
"_calculate_keys", "_calculate_keys",
"_choices_fields", "_choices_fields",
@ -26,8 +27,10 @@ quick_access_set = {
"_extract_related_model_instead_of_field", "_extract_related_model_instead_of_field",
"_get_related_not_excluded_fields", "_get_related_not_excluded_fields",
"_get_value", "_get_value",
"_init_private_attributes",
"_is_conversion_to_json_needed", "_is_conversion_to_json_needed",
"_iter", "_iter",
"_iterate_related_models",
"_orm", "_orm",
"_orm_id", "_orm_id",
"_orm_saved", "_orm_saved",
@ -40,8 +43,10 @@ quick_access_set = {
"delete", "delete",
"dict", "dict",
"extract_related_names", "extract_related_names",
"extract_related_fields",
"extract_through_names", "extract_through_names",
"update_from_dict", "update_from_dict",
"get_child",
"get_column_alias", "get_column_alias",
"get_column_name_from_alias", "get_column_name_from_alias",
"get_filtered_names_to_extract", "get_filtered_names_to_extract",
@ -52,9 +57,11 @@ quick_access_set = {
"json", "json",
"keys", "keys",
"load", "load",
"load_all",
"pk_column", "pk_column",
"pk_type", "pk_type",
"populate_default_values", "populate_default_values",
"prepare_model_to_save",
"remove", "remove",
"resolve_relation_field", "resolve_relation_field",
"resolve_relation_name", "resolve_relation_name",
@ -62,6 +69,7 @@ quick_access_set = {
"save_related", "save_related",
"saved", "saved",
"set_save_status", "set_save_status",
"signals",
"translate_aliases_to_columns", "translate_aliases_to_columns",
"translate_columns_to_aliases", "translate_columns_to_aliases",
"update", "update",