| 188 | return None |
| 189 | |
| 190 | def construct_endpoint( |
| 191 | self, |
| 192 | service_name, |
| 193 | region_name=None, |
| 194 | partition_name=None, |
| 195 | use_dualstack_endpoint=False, |
| 196 | use_fips_endpoint=False, |
| 197 | ): |
| 198 | if ( |
| 199 | service_name == 's3' |
| 200 | and use_dualstack_endpoint |
| 201 | and region_name is None |
| 202 | ): |
| 203 | region_name = 'us-east-1' |
| 204 | |
| 205 | if partition_name is not None: |
| 206 | valid_partition = None |
| 207 | for partition in self._endpoint_data['partitions']: |
| 208 | if partition['partition'] == partition_name: |
| 209 | valid_partition = partition |
| 210 | |
| 211 | if valid_partition is not None: |
| 212 | result = self._endpoint_for_partition( |
| 213 | valid_partition, |
| 214 | service_name, |
| 215 | region_name, |
| 216 | use_dualstack_endpoint, |
| 217 | use_fips_endpoint, |
| 218 | True, |
| 219 | ) |
| 220 | return result |
| 221 | return None |
| 222 | |
| 223 | # Iterate over each partition until a match is found. |
| 224 | for partition in self._endpoint_data['partitions']: |
| 225 | if use_dualstack_endpoint and ( |
| 226 | partition['partition'] |
| 227 | in self._UNSUPPORTED_DUALSTACK_PARTITIONS |
| 228 | ): |
| 229 | continue |
| 230 | result = self._endpoint_for_partition( |
| 231 | partition, |
| 232 | service_name, |
| 233 | region_name, |
| 234 | use_dualstack_endpoint, |
| 235 | use_fips_endpoint, |
| 236 | ) |
| 237 | if result: |
| 238 | return result |
| 239 | |
| 240 | def get_partition_for_region(self, region_name): |
| 241 | for partition in self._endpoint_data['partitions']: |