Skip to content

Commit 526c0b8

Browse files
committed
refactor: rename _has_provider to _has_feature_key for better generalization
1 parent bff8b6a commit 526c0b8

2 files changed

Lines changed: 22 additions & 22 deletions

File tree

packages/google-api-core/google/api_core/_feature_gating_helpers.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def _get_env_bool(name: str) -> bool | None:
5757
return None
5858

5959

60-
def _has_provider(
60+
def _has_feature_key(
6161
*, configuration: ClientOptions | dict[str, Any] | None, feature_key: str
6262
) -> bool:
6363
"""Checks if a specific feature key is present and not None in configuration."""
@@ -104,8 +104,8 @@ def resolve_feature_flags(
104104
ValueError: If a provider is provided for an experimental feature without enabling the experimental environment variable.
105105
"""
106106

107-
# Check for programmatic feature provider
108-
has_provider = _has_provider(
107+
# Check for programmatic feature configuration
108+
has_feature = _has_feature_key(
109109
configuration=configuration, feature_key=feature_key
110110
)
111111

@@ -117,8 +117,8 @@ def resolve_feature_flags(
117117
# 1. EXPERIMENTAL Environment Variable
118118
# 2. Fail Fast if Provider present but EXPERIMENTAL Environment Variable is not enabled
119119
if "EXPERIMENTAL" in env_var:
120-
# Fail Fast if provider present but experimental environment variable is not enabled
121-
if env_var_setting is not True and has_provider:
120+
# Fail Fast if feature key present but experimental environment variable is not enabled
121+
if env_var_setting is not True and has_feature:
122122
raise FeatureGatingError(
123123
f"Experimental feature requires {env_var} to be set to 'true' to use programmatic providers."
124124
)
@@ -127,11 +127,11 @@ def resolve_feature_flags(
127127

128128
# GENERAL AVAILABILITY PATH:
129129
# Resolution Hierarchy:
130-
# 1. Programmatic Provider
130+
# 1. Programmatic Configuration (Feature Key)
131131
# 2. Environment Variable
132132

133-
# Check Programmatic Provider
134-
if has_provider:
133+
# Check Programmatic Configuration
134+
if has_feature:
135135
return True
136136

137137
# Check Environment Variable

packages/google-api-core/tests/unit/test_feature_gating_helpers.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ def test_resolve_feature_flags_ga_enabled_via_env(monkeypatch):
8484

8585

8686
@pytest.mark.parametrize("exp_env_state", [None, "false"], ids=["missing", "disabled"])
87-
def test_resolve_feature_flags_exp_blocked_with_provider_fails_fast(
87+
def test_resolve_feature_flags_exp_blocked_with_feature_key_fails_fast(
8888
monkeypatch, exp_env_state
8989
):
90-
"""Verify that passing a provider to an experimental feature raises ValueError if the experimental environment variable is disabled or missing."""
90+
"""Verify that passing a feature_key to an experimental feature raises FeatureGatingError if the experimental environment variable is disabled or missing."""
9191
# Setup: Experimental env var is set to exp_env_state (None means not set)
9292
if exp_env_state is not None:
9393
monkeypatch.setenv(
@@ -108,8 +108,8 @@ def test_resolve_feature_flags_exp_blocked_with_provider_fails_fast(
108108
)
109109

110110

111-
def test_resolve_feature_flags_exp_enabled_with_provider(monkeypatch):
112-
"""Verify that experimental feature is enabled if the experimental environment variable is enabled and a provider is provided."""
111+
def test_resolve_feature_flags_exp_enabled_with_feature_key(monkeypatch):
112+
"""Verify that experimental feature is enabled if the experimental environment variable is enabled and a feature_key is provided."""
113113
monkeypatch.setenv("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED", "true")
114114
configuration = {"tracer_provider": object()}
115115

@@ -121,8 +121,8 @@ def test_resolve_feature_flags_exp_enabled_with_provider(monkeypatch):
121121
assert result is True
122122

123123

124-
def test_resolve_feature_flags_exp_enabled_without_provider(monkeypatch):
125-
"""Verify that experimental feature is enabled if the experimental environment variable is enabled and NO provider is provided."""
124+
def test_resolve_feature_flags_exp_enabled_without_feature_key(monkeypatch):
125+
"""Verify that experimental feature is enabled if the experimental environment variable is enabled and NO feature_key is provided."""
126126
monkeypatch.setenv("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED", "true")
127127

128128
result = _feature_gating_helpers.resolve_feature_flags(
@@ -133,8 +133,8 @@ def test_resolve_feature_flags_exp_enabled_without_provider(monkeypatch):
133133
assert result is True
134134

135135

136-
def test_resolve_feature_flags_exp_disabled_without_provider(monkeypatch):
137-
"""Verify that experimental feature is disabled if the experimental environment variable is disabled and NO provider is provided."""
136+
def test_resolve_feature_flags_exp_disabled_without_feature_key(monkeypatch):
137+
"""Verify that experimental feature is disabled if the experimental environment variable is disabled and NO feature_key is provided."""
138138
monkeypatch.setenv("GOOGLE_SDK_EXPERIMENTAL_PYTHON_TRACING_ENABLED", "false")
139139

140140
result = _feature_gating_helpers.resolve_feature_flags(
@@ -145,9 +145,9 @@ def test_resolve_feature_flags_exp_disabled_without_provider(monkeypatch):
145145
assert result is False
146146

147147

148-
def test_resolve_feature_flags_ga_enabled_via_provider(monkeypatch):
149-
"""Verify that a GA feature is enabled if a provider is provided, ignoring the environment variable."""
150-
# Env var is False, but provider is present
148+
def test_resolve_feature_flags_ga_enabled_via_feature_key(monkeypatch):
149+
"""Verify that a GA feature is enabled if a feature_key is provided, ignoring the environment variable."""
150+
# Env var is False, but feature_key is present in configuration
151151
monkeypatch.setenv("GOOGLE_SDK_PYTHON_TRACING_ENABLED", "false")
152152
configuration = {"tracer_provider": object()}
153153

@@ -163,7 +163,7 @@ def test_resolve_feature_flags_ga_enabled_via_provider(monkeypatch):
163163
"env_val", [None, "false"], ids=["env_not_set", "env_explicit_false"]
164164
)
165165
def test_resolve_feature_flags_ga_fallback_to_false(monkeypatch, env_val):
166-
"""Verify that a GA feature is disabled if neither a provider is provided nor the environment variable is enabled."""
166+
"""Verify that a GA feature is disabled if neither a feature_key is provided nor the environment variable is enabled."""
167167
if env_val is not None:
168168
monkeypatch.setenv("GOOGLE_SDK_PYTHON_TRACING_ENABLED", env_val)
169169
else:
@@ -190,7 +190,7 @@ def __init__(self):
190190
ids=["dict_without_key", "object_without_key"],
191191
)
192192
def test_resolve_feature_flags_options_without_key(configuration):
193-
"""Verify behavior when configuration is present but missing the provider key."""
193+
"""Verify behavior when configuration is present but missing the feature key."""
194194
# GA Path: should fall through to env var / fallback
195195
result = _feature_gating_helpers.resolve_feature_flags(
196196
env_var="GOOGLE_SDK_PYTHON_TRACING_ENABLED",
@@ -201,7 +201,7 @@ def test_resolve_feature_flags_options_without_key(configuration):
201201

202202

203203
def test_resolve_feature_flags_rejects_dunder_keys(monkeypatch):
204-
"""Verify that dunder keys are rejected early in _has_provider."""
204+
"""Verify that dunder keys are rejected early in _has_feature_key."""
205205
# We use a dunder key that exists on all objects (__class__)
206206
# If the guardrail is missing, getattr might return it and return True
207207
configuration = {"__class__": "some_value"}

0 commit comments

Comments
 (0)