3030VersionInfoMock = namedtuple ("VersionInfoMock" , ["major" , "minor" ])
3131
3232
33- def _create_failure_message (expected , result , py_version , date ,
34- gapic_dep , py_eol , eol_warn , gapic_end ):
33+ def _create_failure_message (
34+ expected , result , py_version , date , gapic_dep , py_eol , eol_warn , gapic_end
35+ ):
3536 """Create a detailed failure message for a test."""
3637 return textwrap .dedent (
3738 f"""
@@ -98,38 +99,49 @@ def generate_tracked_version_test_cases():
9899
99100 for name , params in test_cases .items ():
100101 yield pytest .param (
101- version_tuple , params ["date" ], params ["expected" ],
102- gapic_dep , gapic_end , eol_warning_starts ,
103- id = f"{ py_version_str } -{ name } "
102+ version_tuple ,
103+ params ["date" ],
104+ params ["expected" ],
105+ gapic_dep ,
106+ gapic_end ,
107+ eol_warning_starts ,
108+ id = f"{ py_version_str } -{ name } " ,
104109 )
105110
106111
107112@pytest .mark .parametrize (
108113 "version_tuple, mock_date, expected_status, gapic_dep, gapic_end, eol_warning_starts" ,
109- generate_tracked_version_test_cases ()
114+ generate_tracked_version_test_cases (),
110115)
111116def test_all_tracked_versions_and_date_scenarios (
112- version_tuple , mock_date , expected_status , gapic_dep , gapic_end ,
113- eol_warning_starts
117+ version_tuple , mock_date , expected_status , gapic_dep , gapic_end , eol_warning_starts
114118):
115119 """Test all outcomes for each tracked version using parametrization."""
116- mock_py_v = VersionInfoMock (
117- major = version_tuple [0 ], minor = version_tuple [1 ]
118- )
120+ mock_py_v = VersionInfoMock (major = version_tuple [0 ], minor = version_tuple [1 ])
119121
120122 with patch ("google.api_core._python_version_support.sys.version_info" , mock_py_v ):
121- with patch ("google.api_core._python_version_support.logging.warning" ) as mock_log :
123+ with patch (
124+ "google.api_core._python_version_support.logging.warning"
125+ ) as mock_log :
122126 result = check_python_version (today = mock_date )
123127
124- if ((result != expected_status ) or
125- (result != PythonVersionStatus .PYTHON_VERSION_SUPPORTED ) and mock_log .call_count != 1 ):
128+ if (
129+ (result != expected_status )
130+ or (result != PythonVersionStatus .PYTHON_VERSION_SUPPORTED )
131+ and mock_log .call_count != 1
132+ ):
126133 py_version_str = f"{ version_tuple [0 ]} .{ version_tuple [1 ]} "
127134 version_info = PYTHON_VERSION_INFO [version_tuple ]
128135
129136 fail_msg = _create_failure_message (
130- expected_status , result , py_version_str ,
131- mock_date , gapic_dep , version_info .python_eol ,
132- eol_warning_starts , gapic_end
137+ expected_status ,
138+ result ,
139+ py_version_str ,
140+ mock_date ,
141+ gapic_dep ,
142+ version_info .python_eol ,
143+ eol_warning_starts ,
144+ gapic_end ,
133145 )
134146 pytest .fail (fail_msg , pytrace = False )
135147
@@ -138,41 +150,51 @@ def test_override_gapic_end_only():
138150 """Test behavior when only gapic_end is manually overridden."""
139151 version_tuple = (3 , 9 )
140152 original_info = PYTHON_VERSION_INFO [version_tuple ]
141- mock_py_version = VersionInfoMock (
142- major = version_tuple [0 ], minor = version_tuple [1 ]
143- )
153+ mock_py_version = VersionInfoMock (major = version_tuple [0 ], minor = version_tuple [1 ])
144154
145155 custom_gapic_end = original_info .python_eol + datetime .timedelta (days = 212 )
146156 overridden_info = original_info ._replace (gapic_end = custom_gapic_end )
147157
148- with patch ("google.api_core._python_version_support.sys.version_info" , mock_py_version ):
149- with patch .dict ('google.api_core._python_version_support.PYTHON_VERSION_INFO' , {version_tuple : overridden_info }):
158+ with patch (
159+ "google.api_core._python_version_support.sys.version_info" , mock_py_version
160+ ):
161+ with patch .dict (
162+ "google.api_core._python_version_support.PYTHON_VERSION_INFO" ,
163+ {version_tuple : overridden_info },
164+ ):
150165 result_at_boundary = check_python_version (today = custom_gapic_end )
151166 assert result_at_boundary == PythonVersionStatus .PYTHON_VERSION_EOL
152167
153168 result_after_boundary = check_python_version (
154169 today = custom_gapic_end + datetime .timedelta (days = 1 )
155170 )
156- assert result_after_boundary == PythonVersionStatus .PYTHON_VERSION_UNSUPPORTED
171+ assert (
172+ result_after_boundary == PythonVersionStatus .PYTHON_VERSION_UNSUPPORTED
173+ )
157174
158175
159176def test_override_gapic_deprecation_only ():
160177 """Test behavior when only gapic_deprecation is manually overridden."""
161178 version_tuple = (3 , 9 )
162179 original_info = PYTHON_VERSION_INFO [version_tuple ]
163- mock_py_version = VersionInfoMock (
164- major = version_tuple [0 ], minor = version_tuple [1 ]
165- )
180+ mock_py_version = VersionInfoMock (major = version_tuple [0 ], minor = version_tuple [1 ])
166181
167182 custom_gapic_dep = original_info .python_eol - datetime .timedelta (days = 120 )
168183 overridden_info = original_info ._replace (gapic_deprecation = custom_gapic_dep )
169184
170- with patch ("google.api_core._python_version_support.sys.version_info" , mock_py_version ):
171- with patch .dict ('google.api_core._python_version_support.PYTHON_VERSION_INFO' , {version_tuple : overridden_info }):
185+ with patch (
186+ "google.api_core._python_version_support.sys.version_info" , mock_py_version
187+ ):
188+ with patch .dict (
189+ "google.api_core._python_version_support.PYTHON_VERSION_INFO" ,
190+ {version_tuple : overridden_info },
191+ ):
172192 result_before_boundary = check_python_version (
173193 today = custom_gapic_dep - datetime .timedelta (days = 1 )
174194 )
175- assert result_before_boundary == PythonVersionStatus .PYTHON_VERSION_SUPPORTED
195+ assert (
196+ result_before_boundary == PythonVersionStatus .PYTHON_VERSION_SUPPORTED
197+ )
176198
177199 result_at_boundary = check_python_version (today = custom_gapic_dep )
178200 assert result_at_boundary == PythonVersionStatus .PYTHON_VERSION_DEPRECATED
@@ -182,8 +204,12 @@ def test_untracked_older_version_is_unsupported():
182204 """Test that an old, untracked version is unsupported and logs."""
183205 mock_py_version = VersionInfoMock (major = 3 , minor = 6 )
184206
185- with patch ("google.api_core._python_version_support.sys.version_info" , mock_py_version ):
186- with patch ("google.api_core._python_version_support.logging.warning" ) as mock_log :
207+ with patch (
208+ "google.api_core._python_version_support.sys.version_info" , mock_py_version
209+ ):
210+ with patch (
211+ "google.api_core._python_version_support.logging.warning"
212+ ) as mock_log :
187213 mock_date = datetime .date (2025 , 1 , 15 )
188214 result = check_python_version (today = mock_date )
189215
@@ -197,8 +223,12 @@ def test_untracked_newer_version_is_supported():
197223 """Test that a new, untracked version is supported and does not log."""
198224 mock_py_version = VersionInfoMock (major = 4 , minor = 0 )
199225
200- with patch ("google.api_core._python_version_support.sys.version_info" , mock_py_version ):
201- with patch ("google.api_core._python_version_support.logging.warning" ) as mock_log :
226+ with patch (
227+ "google.api_core._python_version_support.sys.version_info" , mock_py_version
228+ ):
229+ with patch (
230+ "google.api_core._python_version_support.logging.warning"
231+ ) as mock_log :
202232 mock_date = datetime .date (2025 , 1 , 15 )
203233 result = check_python_version (today = mock_date )
204234
0 commit comments