Skip to content

Commit

Permalink
Replace functools.cached_property with property + functools.cache
Browse files Browse the repository at this point in the history
TIL `@functools.cached_property` allows writing to the attribute.
Allowing writes was intended in no methods in this framework.
Expected behavior always was to have lazy-loaded methods that return
cached data per class instance, which is achieved with

```py
@Property
@functools.cache
```
  • Loading branch information
sergiitk committed Feb 22, 2024
1 parent b74465c commit a6e148d
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 8 deletions.
3 changes: 2 additions & 1 deletion framework/helpers/grpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ class PrettyStatsPerMethod:
# }
result: Dict[str, int]

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def rpcs_completed(self):
"""Returns the total count of competed RPCs across all statuses."""
return sum(self.result.values())
Expand Down
21 changes: 14 additions & 7 deletions framework/infrastructure/k8s.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,46 +295,53 @@ def __init__(self, api: KubernetesApiManager, name: str):
def name(self):
return self._name

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_gke_mesh(self) -> dynamic_res.Resource:
return self._get_dynamic_api("net.gke.io/v1alpha1", "TDMesh")

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_grpc_route(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"gateway.networking.k8s.io/v1alpha2",
"GRPCRoute",
)

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_http_route(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"gateway.networking.k8s.io/v1beta1",
"HTTPRoute",
)

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_session_affinity_filter(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"networking.gke.io/v1",
"GCPSessionAffinityFilter",
)

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_session_affinity_policy(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"networking.gke.io/v1",
"GCPSessionAffinityPolicy",
)

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def pod_monitoring(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"monitoring.googleapis.com/v1",
"PodMonitoring",
)

@functools.cached_property # pylint: disable=no-member
@property
@functools.cache # pylint: disable=no-member
def api_backend_policy(self) -> dynamic_res.Resource:
return self._get_dynamic_api(
"networking.gke.io/v1",
Expand Down

0 comments on commit a6e148d

Please sign in to comment.