Skip to content

Download Script Fix + PVmap Changes in Mongolia Imports (Mongolia_Education, Mongolia_Health, Mongolia_Employment, Mongolia_Demographics - #2128

Open
kartik-s21 wants to merge 37 commits into
datacommonsorg:masterfrom
kartik-s21:mongolia-import-fix
Open

Download Script Fix + PVmap Changes in Mongolia Imports (Mongolia_Education, Mongolia_Health, Mongolia_Employment, Mongolia_Demographics#2128
kartik-s21 wants to merge 37 commits into
datacommonsorg:masterfrom
kartik-s21:mongolia-import-fix

gemini suggested changes done

f4ad95d
Select commit
Loading
Failed to load commit list.
Google Cloud Build / data-pull-request-py (datcom-ci) failed Aug 4, 2026 in 2m 25s

Summary

Build Information

Trigger data-pull-request-py
Build a482dee8-2d25-409d-bc0a-293e8463f624
Start 2026-08-03T20:47:21-07:00
Duration 2m23.67s
Status FAILURE

Steps

Step Status Duration
python_install SUCCESS 1m33.634s
python_test FAILURE 16.917s
python_format_check CANCELLED 18.815s

Details

starting build "a482dee8-2d25-409d-bc0a-293e8463f624"

FETCHSOURCE
From https://github.com/datacommonsorg/data
 * branch            f4ad95dd761de7e0b8a5579cd6171b741cf5ca3b -> FETCH_HEAD
Updating files:  18% (956/5145)
Updating files:  19% (978/5145)
Updating files:  20% (1029/5145)
Updating files:  21% (1081/5145)
Updating files:  22% (1132/5145)
Updating files:  23% (1184/5145)
Updating files:  24% (1235/5145)
Updating files:  25% (1287/5145)
Updating files:  26% (1338/5145)
Updating files:  27% (1390/5145)
Updating files:  28% (1441/5145)
Updating files:  29% (1493/5145)
Updating files:  30% (1544/5145)
Updating files:  31% (1595/5145)
Updating files:  32% (1647/5145)
Updating files:  33% (1698/5145)
Updating files:  34% (1750/5145)
Updating files:  35% (1801/5145)
Updating files:  36% (1853/5145)
Updating files:  37% (1904/5145)
Updating files:  38% (1956/5145)
Updating files:  39% (2007/5145)
Updating files:  40% (2058/5145)
Updating files:  41% (2110/5145)
Updating files:  42% (2161/5145)
Updating files:  42% (2187/5145)
Updating files:  43% (2213/5145)
Updating files:  44% (2264/5145)
Updating files:  45% (2316/5145)
Updating files:  46% (2367/5145)
Updating files:  47% (2419/5145)
Updating files:  48% (2470/5145)
Updating files:  49% (2522/5145)
Updating files:  50% (2573/5145)
Updating files:  51% (2624/5145)
Updating files:  52% (2676/5145)
Updating files:  53% (2727/5145)
Updating files:  54% (2779/5145)
Updating files:  55% (2830/5145)
Updating files:  56% (2882/5145)
Updating files:  57% (2933/5145)
Updating files:  58% (2985/5145)
Updating files:  59% (3036/5145)
Updating files:  60% (3087/5145)
Updating files:  61% (3139/5145)
Updating files:  62% (3190/5145)
Updating files:  63% (3242/5145)
Updating files:  64% (3293/5145)
Updating files:  65% (3345/5145)
Updating files:  66% (3396/5145)
Updating files:  67% (3448/5145)
Updating files:  68% (3499/5145)
Updating files:  69% (3551/5145)
Updating files:  70% (3602/5145)
Updating files:  71% (3653/5145)
Updating files:  72% (3705/5145)
Updating files:  73% (3756/5145)
Updating files:  74% (3808/5145)
Updating files:  75% (3859/5145)
Updating files:  76% (3911/5145)
Updating files:  77% (3962/5145)
Updating files:  78% (4014/5145)
Updating files:  79% (4065/5145)
Updating files:  80% (4116/5145)
Updating files:  81% (4168/5145)
Updating files:  82% (4219/5145)
Updating files:  83% (4271/5145)
Updating files:  84% (4322/5145)
Updating files:  85% (4374/5145)
Updating files:  86% (4425/5145)
Updating files:  87% (4477/5145)
Updating files:  88% (4528/5145)
Updating files:  89% (4580/5145)
Updating files:  90% (4631/5145)
Updating files:  91% (4682/5145)
Updating files:  92% (4734/5145)
Updating files:  93% (4785/5145)
Updating files:  94% (4837/5145)
Updating files:  95% (4888/5145)
Updating files:  96% (4940/5145)
Updating files:  97% (4991/5145)
Updating files:  98% (5043/5145)
Updating files:  99% (5094/5145)
Updating files: 100% (5145/5145)
Updating files: 100% (5145/5145), done.
HEAD is now at f4ad95d gemini suggested changes done
GitCommit:
f4ad95dd761de7e0b8a5579cd6171b741cf5ca3b
BUILD
Starting Step #0 - "python_install"
Step #0 - "python_install": Pulling image: python:3.12.8
Step #0 - "python_install": 3.12.8: Pulling from library/python
Step #0 - "python_install": a492eee5e559: Pulling fs layer
Step #0 - "python_install": 32b550be6cb6: Pulling fs layer
Step #0 - "python_install": 35af2a7690f2: Pulling fs layer
Step #0 - "python_install": 7576b00d9bb1: Pulling fs layer
Step #0 - "python_install": a57a7d4db735: Pulling fs layer
Step #0 - "python_install": a113cc029c60: Pulling fs layer
Step #0 - "python_install": dc93fee02728: Pulling fs layer
Step #0 - "python_install": dc93fee02728: Waiting
Step #0 - "python_install": a113cc029c60: Verifying Checksum
Step #0 - "python_install": a113cc029c60: Download complete
Step #0 - "python_install": 32b550be6cb6: Verifying Checksum
Step #0 - "python_install": 32b550be6cb6: Download complete
Step #0 - "python_install": a57a7d4db735: Verifying Checksum
Step #0 - "python_install": a57a7d4db735: Download complete
Step #0 - "python_install": a492eee5e559: Verifying Checksum
Step #0 - "python_install": a492eee5e559: Download complete
Step #0 - "python_install": dc93fee02728: Verifying Checksum
Step #0 - "python_install": dc93fee02728: Download complete
Step #0 - "python_install": 35af2a7690f2: Verifying Checksum
Step #0 - "python_install": 35af2a7690f2: Download complete
Step #0 - "python_install": 7576b00d9bb1: Verifying Checksum
Step #0 - "python_install": 7576b00d9bb1: Download complete
Step #0 - "python_install": a492eee5e559: Pull complete
Step #0 - "python_install": 32b550be6cb6: Pull complete
Step #0 - "python_install": 35af2a7690f2: Pull complete
Step #0 - "python_install": 7576b00d9bb1: Pull complete
Step #0 - "python_install": a57a7d4db735: Pull complete
Step #0 - "python_install": a113cc029c60: Pull complete
Step #0 - "python_install": dc93fee02728: Pull complete
Step #0 - "python_install": Digest: sha256:e74938514dc67ad3eade8798aa929f5dd569e463758c83243636d4e1b54aa559
Step #0 - "python_install": Status: Downloaded newer image for python:3.12.8
Step #0 - "python_install": docker.io/library/python:3.12.8
Step #0 - "python_install": ### Installing Python requirements
Step #0 - "python_install": Installing Python requirements
Step #0 - "python_install": Installing uv
Step #0 - "python_install": 
Step #0 - "python_install": [notice] A new release of pip is available: 24.3.1 -> 26.2
Step #0 - "python_install": [notice] To update, run: pip install --upgrade pip
Step #0 - "python_install": Using uv for package installation
Finished Step #0 - "python_install"
Starting Step #1 - "python_test"
Starting Step #2 - "python_format_check"
Step #1 - "python_test": Already have image (with digest): python:3.12.8
Step #2 - "python_format_check": Already have image (with digest): python:3.12.8
Step #2 - "python_format_check": ### Testing lint
Step #1 - "python_test": ### Running all tests
Step #2 - "python_format_check": Installing Python requirements
Step #1 - "python_test": Installing Python requirements
Step #1 - "python_test": Using uv for package installation
Step #2 - "python_format_check": Using uv for package installation
Step #1 - "python_test": #### Testing Python code in util/
Step #2 - "python_format_check": #### Testing Python lint
Step #1 - "python_test": test_aggregate_dict (aggregation_util_test.AggregationUtilTest.test_aggregate_dict) ... ok
Step #1 - "python_test": test_aggregate_value (aggregation_util_test.AggregationUtilTest.test_aggregate_value) ... ok
Step #1 - "python_test": test_config_map_with_override (config_map_test.TestConfigMap.test_config_map_with_override) ... ok
Step #1 - "python_test": test_load_config_file (config_map_test.TestConfigMap.test_load_config_file)
Step #1 - "python_test": Test loading of config dictionary from a file. ... ok
Step #1 - "python_test": test_set_config (config_map_test.TestConfigMap.test_set_config) ... ok
Step #1 - "python_test": test_update_config (config_map_test.TestConfigMap.test_update_config) ... ok
Step #1 - "python_test": test_add_counter_decrement (counters_test.TestCounters.test_add_counter_decrement) ... ok
Step #1 - "python_test": test_add_counter_default_increment (counters_test.TestCounters.test_add_counter_default_increment) ... ok
Step #1 - "python_test": test_add_counter_increment (counters_test.TestCounters.test_add_counter_increment) ... ok
Step #1 - "python_test": test_add_counters (counters_test.TestCounters.test_add_counters) ... ok
Step #1 - "python_test": test_counter_dict_is_shared (counters_test.TestCounters.test_counter_dict_is_shared)
Step #1 - "python_test": Verify counter dict is shared across counters. ... ok
Step #1 - "python_test": test_debug_counters_are_correctly_updated (counters_test.TestCounters.test_debug_counters_are_correctly_updated)
Step #1 - "python_test": Verify counters with debug string suffixes. ... ok
Step #1 - "python_test": test_debug_counters_are_not_created_when_debug_is_false (counters_test.TestCounters.test_debug_counters_are_not_created_when_debug_is_false) ... ok
Step #1 - "python_test": test_get_counters_string (counters_test.TestCounters.test_get_counters_string) ... ok
Step #1 - "python_test": test_get_non_existent_counter (counters_test.TestCounters.test_get_non_existent_counter) ... ok
Step #1 - "python_test": test_max_counter (counters_test.TestCounters.test_max_counter) ... ok
Step #1 - "python_test": test_min_counter (counters_test.TestCounters.test_min_counter) ... ok
Step #1 - "python_test": test_prefix (counters_test.TestCounters.test_prefix) ... ok
Step #1 - "python_test": test_processing_rate (counters_test.TestCounters.test_processing_rate) ... ok
Step #1 - "python_test": test_set_counter_overwrites_value (counters_test.TestCounters.test_set_counter_overwrites_value)
Step #1 - "python_test": Verify set_counter overrides current value. ... ok
Step #1 - "python_test": test_show_counters_produces_correct_output (counters_test.TestCounters.test_show_counters_produces_correct_output) ... ok
Step #1 - "python_test": test_convert_v1_to_v2_coordinate_request (dc_api_wrapper_test.TestDCAPIWrapper.test_convert_v1_to_v2_coordinate_request)
Step #1 - "python_test": Test coordinate request conversion from v1 to v2. ... ok
Step #1 - "python_test": test_convert_v2_to_v1_coordinate_response (dc_api_wrapper_test.TestDCAPIWrapper.test_convert_v2_to_v1_coordinate_response)
Step #1 - "python_test": Test coordinate response conversion from v2 to v1. ... ok
Step #1 - "python_test": test_dc_api_batched_wrapper (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_batched_wrapper)
Step #1 - "python_test": Test DC API wrapper for batched calls. ... ok
Step #1 - "python_test": test_dc_api_get_node_property (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_get_node_property)
Step #1 - "python_test": Test API wrapper to get a single property for a node. ... ok
Step #1 - "python_test": test_dc_api_get_node_property_multi_v2 (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_get_node_property_multi_v2)
Step #1 - "python_test": Test API wrapper to get multiple properties for a node. ... ok
Step #1 - "python_test": test_dc_api_is_defined_dcid (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_is_defined_dcid)
Step #1 - "python_test": Test API wrapper for defined DCIDs. ... ok
Step #1 - "python_test": test_dc_api_resolve_latlng (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_resolve_latlng)
Step #1 - "python_test": Test API wrapper for latlng resolution. ... FAIL
Step #1 - "python_test": test_dc_api_resolve_latlng_v1_compat_shape (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_resolve_latlng_v1_compat_shape)
Step #1 - "python_test": Test latlng resolution supports v1 compatibility response shape. ... ok
Step #1 - "python_test": test_dc_api_resolve_placeid (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_resolve_placeid)
Step #1 - "python_test": Test API wrapper to resolve entity using a placeid. ... ok
Step #1 - "python_test": test_dc_api_wrapper (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper)
Step #1 - "python_test": Test the wrapper for DC API. ... ok
Step #1 - "python_test": test_dc_api_wrapper_attempts_no_extra_retries (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_attempts_no_extra_retries)
Step #1 - "python_test": Test wrapper doesn't retry beyond the max attempts. ... ok
Step #1 - "python_test": test_dc_api_wrapper_does_not_retry_http_400 (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_does_not_retry_http_400)
Step #1 - "python_test": Test wrapper does not retry non-transient HTTP errors. ... ERROR:absl:Got status: 400, not retrying.
Step #1 - "python_test": ok
Step #1 - "python_test": test_dc_api_wrapper_keyerror_returns_none_without_retry (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_keyerror_returns_none_without_retry)
Step #1 - "python_test": Test wrapper returns None and does not retry for KeyError. ... ERROR:absl:Got exception for api: <Mock id='140121371785744'>, 'missing-dcid'
Step #1 - "python_test": ok
Step #1 - "python_test": test_dc_api_wrapper_non_positive_retries_defaults_to_one_attempt (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_non_positive_retries_defaults_to_one_attempt)
Step #1 - "python_test": Test non-positive retries are treated as one attempt. ... ok
Step #1 - "python_test": test_dc_api_wrapper_non_retryable_exception_has_note (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_non_retryable_exception_has_note)
Step #1 - "python_test": Test non-retryable exceptions bubble once with added context note. ... ok
Step #1 - "python_test": test_dc_api_wrapper_retries_http_429 (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_retries_http_429)
Step #1 - "python_test": Test wrapper retries HTTP 429 and succeeds. ... ok
Step #1 - "python_test": test_dc_api_wrapper_retries_http_503_until_exhausted (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_retries_http_503_until_exhausted)
Step #1 - "python_test": Test wrapper retries HTTP 503 until max attempts are exhausted. ... ok
Step #1 - "python_test": test_dc_api_wrapper_stops_after_success (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_wrapper_stops_after_success)
Step #1 - "python_test": Test wrapper stops retrying after a successful response. ... ok
Step #1 - "python_test": test_dc_get_node_property_values (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_get_node_property_values)
Step #1 - "python_test": Test API wrapper to get all property:values for a node. ... ok
Step #1 - "python_test": test_non_v2_config_rejected (dc_api_wrapper_test.TestDCAPIWrapper.test_non_v2_config_rejected)
Step #1 - "python_test": Test wrapper rejects non-V2 dc_api_version values. ... ok
Step #1 - "python_test": test_download_and_unzip_file (download_util_script_test.DownloadFileTest.test_download_and_unzip_file) ... ok
Step #1 - "python_test": test_download_failure (download_util_script_test.DownloadFileTest.test_download_failure) ... WARNING:absl:Direct HEAD request failed for 'http://example.com/error' (cannot get Last-Modified): 404 Client Error: Not Found for url: http://example.com/error
Step #1 - "python_test": ERROR:absl:Processing failed: File system error for 'http://example.com/error'. Error: 404 Client Error: Not Found for url: http://example.com/error
Step #1 - "python_test": ok
Step #1 - "python_test": test_download_file_without_extension (download_util_script_test.DownloadFileTest.test_download_file_without_extension) ... ok
Step #1 - "python_test": test_download_invalid_url (download_util_script_test.DownloadFileTest.test_download_invalid_url) ... ERROR:absl:Invalid URL format or missing scheme for 'invalid_url'. Please ensure URL starts with 'http://' or 'https://'.
Step #1 - "python_test": ok
Step #1 - "python_test": test_download_txt_file (download_util_script_test.DownloadFileTest.test_download_txt_file) ... ok
Step #1 - "python_test": test_download_file (download_util_test.TestCounters.test_download_file) ... ok
Step #1 - "python_test": test_prefilled_url (download_util_test.TestCounters.test_prefilled_url) ... ok
Step #1 - "python_test": test_request_url (download_util_test.TestCounters.test_request_url) ... ok
Step #1 - "python_test": test_fetch_all_provenances_api_failure (extract_source_dataset_provenance_test.TestExtractSourceDatasetProvenance.test_fetch_all_provenances_api_failure)
Step #1 - "python_test": Tests correct handling of exceptions thrown by the API wrapper. ... ERROR:absl:Error fetching provenances: API failure
Step #1 - "python_test": ok
Step #1 - "python_test": test_fetch_all_provenances_empty (extract_source_dataset_provenance_test.TestExtractSourceDatasetProvenance.test_fetch_all_provenances_empty)
Step #1 - "python_test": Tests execution flow when no provenances are returned. ... WARNING:absl:No provenances found.
Step #1 - "python_test": ok
Step #1 - "python_test": test_fetch_all_provenances_success (extract_source_dataset_provenance_test.TestExtractSourceDatasetProvenance.test_fetch_all_provenances_success)
Step #1 - "python_test": Tests successful fetches and hierarchy resolver end-to-end. ... ok
Step #1 - "python_test": test_get_node_dcid (extract_source_dataset_provenance_test.TestExtractSourceDatasetProvenance.test_get_node_dcid)
Step #1 - "python_test": Tests extracting DCID values from node property structures. ... ok
Step #1 - "python_test": test_get_node_property (extract_source_dataset_provenance_test.TestExtractSourceDatasetProvenance.test_get_node_property)
Step #1 - "python_test": Tests extracting string values from node property structures. ... ok
Step #1 - "python_test": test_read_write (file_util_test.FileIOTest.test_read_write) ... ok
Step #1 - "python_test": test_file_get_estimate_num_rows (file_util_test.FileUtilsTest.test_file_get_estimate_num_rows) ... ok
Step #1 - "python_test": test_file_get_matching (file_util_test.FileUtilsTest.test_file_get_matching) ... ok
Step #1 - "python_test": test_file_load_csv_dict (file_util_test.FileUtilsTest.test_file_load_csv_dict) ... ok
Step #1 - "python_test": test_file_type (file_util_test.FileUtilsTest.test_file_type) ... ok
Step #1 - "python_test": test_file_write_load_py_dict (file_util_test.FileUtilsTest.test_file_write_load_py_dict) ... ok
Step #1 - "python_test": test_aa2 (latlng2place_mapsapi_test.Latlng2PlaceMapsAPITest.test_aa2) ... ok
Step #1 - "python_test": test_country (latlng2place_mapsapi_test.Latlng2PlaceMapsAPITest.test_country) ... ok
Step #1 - "python_test": test_main (latlng_recon_geojson_test.LatlngReconGeojsonTest.test_main) ... ok
Step #1 - "python_test": test_basic (latlng_recon_service_test.LatlngReconServiceTest.test_basic) ... FAIL
Step #1 - "python_test": test_filter (latlng_recon_service_test.LatlngReconServiceTest.test_filter) ... ok
Step #1 - "python_test": test_dict_list_to_mcf_str (mcf_dict_util_test.TestMCFDict.test_dict_list_to_mcf_str) ... ok
Step #1 - "python_test": test_drop_nodes (mcf_dict_util_test.TestMCFDict.test_drop_nodes) ... ok
Step #1 - "python_test": test_get_dcid_node (mcf_dict_util_test.TestMCFDict.test_get_dcid_node) ... ok
Step #1 - "python_test": test_mcf_dict_rename_namespace (mcf_dict_util_test.TestMCFDict.test_mcf_dict_rename_namespace) ... ok
Step #1 - "python_test": test_mcf_dict_rename_prop (mcf_dict_util_test.TestMCFDict.test_mcf_dict_rename_prop) ... ok
Step #1 - "python_test": test_mcf_dict_rename_prop_value (mcf_dict_util_test.TestMCFDict.test_mcf_dict_rename_prop_value) ... ok
Step #1 - "python_test": test_mcf_to_dict_list (mcf_dict_util_test.TestMCFDict.test_mcf_to_dict_list) ... ok
Step #1 - "python_test": test_node_list_check_existence_dc (mcf_dict_util_test.TestMCFDict.test_node_list_check_existence_dc) ... ok
Step #1 - "python_test": test_node_list_check_existence_node_list (mcf_dict_util_test.TestMCFDict.test_node_list_check_existence_node_list) ... ok
Step #1 - "python_test": test_example_usage (mcf_template_filler_test.MCFTemplateFillerTest.test_example_usage) ... ok
Step #1 - "python_test": test_pop_and_2_obs_with_all_pv (mcf_template_filler_test.MCFTemplateFillerTest.test_pop_and_2_obs_with_all_pv)
Step #1 - "python_test": Use separate templates for Pop Obs, and use Obs template repeatedly. ... ok
Step #1 - "python_test": test_pop_with_missing_req_pv (mcf_template_filler_test.MCFTemplateFillerTest.test_pop_with_missing_req_pv) ... ok
Step #1 - "python_test": test_require_node_name (mcf_template_filler_test.MCFTemplateFillerTest.test_require_node_name) ... ok
Step #1 - "python_test": test_unified_pop_obs_with_missing_optional_pv (mcf_template_filler_test.MCFTemplateFillerTest.test_unified_pop_obs_with_missing_optional_pv) ... ok
Step #1 - "python_test": test_place_id_resolution_by_name (state_division_to_dcid_test.PlaceMapTest.test_place_id_resolution_by_name) ... ok
Step #1 - "python_test": test_boolean_naming (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_boolean_naming) ... ok
Step #1 - "python_test": test_double_underscore (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_double_underscore) ... ok
Step #1 - "python_test": test_ignore_props (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_ignore_props) ... ok
Step #1 - "python_test": test_legacy_mapping (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_legacy_mapping) ... ok
Step #1 - "python_test": test_measured_property (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_measured_property) ... ok
Step #1 - "python_test": test_measurement_constraint_removal (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_measurement_constraint_removal) ... ok
Step #1 - "python_test": test_measurement_denominator (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_measurement_denominator) ... ok
Step #1 - "python_test": test_measurement_qualifier (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_measurement_qualifier) ... ok
Step #1 - "python_test": test_naics_name_generation (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_naics_name_generation) ... ok
Step #1 - "python_test": test_namespace_removal (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_namespace_removal) ... ok
Step #1 - "python_test": test_prepend_append_replace (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_prepend_append_replace) ... ok
Step #1 - "python_test": test_quantity_name_generation (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_quantity_name_generation) ... ok
Step #1 - "python_test": test_quantity_range_name_generation (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_quantity_range_name_generation) ... ok
Step #1 - "python_test": test_soc_map (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_soc_map) ... ok
Step #1 - "python_test": test_soc_name_generation (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_soc_name_generation) ... ok
Step #1 - "python_test": test_sorted_constraints (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_sorted_constraints) ... ok
Step #1 - "python_test": test_stat_type (statvar_dcid_generator_test.TestStatVarDcidGenerator.test_stat_type) ... ok
Step #1 - "python_test": test_timer_start (timer_test.TimerTest.test_timer_start) ... ok
Step #1 - "python_test": test_timer_stop (timer_test.TimerTest.test_timer_stop) ... ok
Step #1 - "python_test": test_timer_time (timer_test.TimerTest.test_timer_time) ... ok
Step #1 - "python_test": test_xml_with_different_data_types (xml_to_json_test.XMLToJsonConverterTest.test_xml_with_different_data_types) ... ok
Step #1 - "python_test": 
Step #1 - "python_test": ======================================================================
Step #1 - "python_test": FAIL: test_dc_api_resolve_latlng (dc_api_wrapper_test.TestDCAPIWrapper.test_dc_api_resolve_latlng)
Step #1 - "python_test": Test API wrapper for latlng resolution.
Step #1 - "python_test": ----------------------------------------------------------------------
Step #1 - "python_test": Traceback (most recent call last):
Step #1 - "python_test":   File "/workspace/util/dc_api_wrapper_test.py", line 270, in test_dc_api_resolve_latlng
Step #1 - "python_test":     self.assertEqual(response, expected_response)
Step #1 - "python_test": AssertionError: {} != {'37.42-122.08': {'latitude': 37.42, 'long[108 chars]'}]}}
Step #1 - "python_test": - {}
Step #1 - "python_test": + {'37.42-122.08': {'latitude': 37.42,
Step #1 - "python_test": +                   'longitude': -122.08,
Step #1 - "python_test": +                   'placeDcids': ['geoId/0649670'],
Step #1 - "python_test": +                   'places': [{'dcid': 'geoId/0649670',
Step #1 - "python_test": +                               'dominantType': 'City'}]}}
Step #1 - "python_test": 
Step #1 - "python_test": ======================================================================
Step #1 - "python_test": FAIL: test_basic (latlng_recon_service_test.LatlngReconServiceTest.test_basic)
Step #1 - "python_test": ----------------------------------------------------------------------
Step #1 - "python_test": Traceback (most recent call last):
Step #1 - "python_test":   File "/workspace/util/latlng_recon_service_test.py", line 44, in test_basic
Step #1 - "python_test":     self.assert_list_contains(idmap_out['cascal_mtv'], [
Step #1 - "python_test":   File "/workspace/util/latlng_recon_service_test.py", line 32, in assert_list_contains
Step #1 - "python_test":     self.assertFalse(
Step #1 - "python_test": AssertionError: {'geoId/0649670', 'geoId/060855096001', 'ipcc_50/37.25_-122.25_USA', 'geoId/sch0626280', 'geoId/06085509600', 'zip/94041', 'geoId/0618', 'geoId/0608592830'} is not false : The following items were expected but not found: ['geoId/06085509600', 'geoId/060855096001', 'geoId/0608592830', 'geoId/0618', 'geoId/0649670', 'geoId/sch0626280', 'ipcc_50/37.25_-122.25_USA', 'zip/94041']
Step #1 - "python_test": 
Step #1 - "python_test": ----------------------------------------------------------------------
Step #1 - "python_test": Ran 101 tests in 4.506s
Step #1 - "python_test": 
Step #1 - "python_test": FAILED (failures=2)
Finished Step #1 - "python_test"
ERROR
ERROR: build step 1 "python:3.12.8" failed: step exited with non-zero status: 1

Build Log: https://console.cloud.google.com/cloud-build/builds/a482dee8-2d25-409d-bc0a-293e8463f624?project=879489846695