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()
__version__ = "0.10.1"
__version__ = "0.10.2"
__all__ = [
"Integer",
"BigInteger",

View File

@ -267,9 +267,13 @@ class NewBaseModel(pydantic.BaseModel, ModelTableProxy, metaclass=ModelMetaclass
if item == "pk":
return object.__getattribute__(self, "__dict__").get(self.Meta.pkname, None)
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")():
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:
value = object.__getattribute__(self, item)
return value() if callable(value) else value

View File

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