From c87fbc13fb5f912f05c94c83604bab65aa438f36 Mon Sep 17 00:00:00 2001 From: James Kebinger Date: Fri, 7 Feb 2025 15:03:52 -0600 Subject: [PATCH 1/2] Remove reference to google._upb._message.RepeatedScalarContainer --- prefab_cloud_python/config_resolver.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/prefab_cloud_python/config_resolver.py b/prefab_cloud_python/config_resolver.py index 16ca786..6a7cb2b 100644 --- a/prefab_cloud_python/config_resolver.py +++ b/prefab_cloud_python/config_resolver.py @@ -13,7 +13,6 @@ RegexMatchOperators, ) import prefab_pb2 as Prefab -import google logger = InternalLogger(__name__) @@ -176,11 +175,7 @@ def negate(negate, value): @staticmethod def _ensure_list(value): - return ( - value - if isinstance(value, (list, google._upb._message.RepeatedScalarContainer)) - else [value] - ) + return value if isinstance(value, list) else [value] def one_of(self, criterion, value, properties): criterion_value_or_values = ConfigValueUnwrapper.deepest_value( From e84bf4ccc234fc013f03708b90e3d980a56dd0d3 Mon Sep 17 00:00:00 2001 From: James Kebinger Date: Fri, 7 Feb 2025 15:11:44 -0600 Subject: [PATCH 2/2] Check for sequence while excluding str, bytes too --- prefab_cloud_python/config_resolver.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/prefab_cloud_python/config_resolver.py b/prefab_cloud_python/config_resolver.py index 6a7cb2b..4253c97 100644 --- a/prefab_cloud_python/config_resolver.py +++ b/prefab_cloud_python/config_resolver.py @@ -1,5 +1,6 @@ from __future__ import annotations import functools +from collections.abc import Sequence from .read_write_lock import ReadWriteLock from .config_value_unwrapper import ConfigValueUnwrapper @@ -175,7 +176,11 @@ def negate(negate, value): @staticmethod def _ensure_list(value): - return value if isinstance(value, list) else [value] + if isinstance(value, list): + return value + if isinstance(value, Sequence) and not isinstance(value, (str, bytes)): + return list(value) # Convert other sequences to lists + return [value] # Wrap everything else in a list def one_of(self, criterion, value, properties): criterion_value_or_values = ConfigValueUnwrapper.deepest_value(