Skip to content

Bringing it back to working with UV

895221a
Select commit
Loading
Failed to load commit list.
Draft

[Demo] #5747

Bringing it back to working with UV
895221a
Select commit
Loading
Failed to load commit list.
Google Cloud Build / website-pull-request-py (datcom-ci) failed Dec 10, 2025 in 7m 54s

Summary

Build Information

Trigger website-pull-request-py
Build 926ea7b2-352d-4969-9b83-d06f6b85dac0
Start 2025-12-10T14:20:09-08:00
Duration 7m51.369s
Status FAILURE

Steps

Step Status Duration
download_nl_files SUCCESS 4m39.1s
flask_test FAILURE 2m49.387s

Details

starting build "926ea7b2-352d-4969-9b83-d06f6b85dac0"

FETCHSOURCE
From https://github.com/datacommonsorg/website
 * branch            895221a467226970695e8733322c48e96baad118 -> FETCH_HEAD
Updating files:  89% (2180/2446)
Updating files:  90% (2202/2446)
Updating files:  91% (2226/2446)
Updating files:  92% (2251/2446)
Updating files:  93% (2275/2446)
Updating files:  94% (2300/2446)
Updating files:  95% (2324/2446)
Updating files:  96% (2349/2446)
Updating files:  97% (2373/2446)
Updating files:  98% (2398/2446)
Updating files:  99% (2422/2446)
Updating files: 100% (2446/2446)
Updating files: 100% (2446/2446), done.
HEAD is now at 895221a Bringing it back to working with UV
GitCommit:
895221a467226970695e8733322c48e96baad118
BUILD
Starting Step #0 - "download_nl_files"
Step #0 - "download_nl_files": Pulling image: python:3.11.3
Step #0 - "download_nl_files": 3.11.3: Pulling from library/python
Step #0 - "download_nl_files": bd73737482dd: Pulling fs layer
Step #0 - "download_nl_files": 6710592d62aa: Pulling fs layer
Step #0 - "download_nl_files": 75256935197e: Pulling fs layer
Step #0 - "download_nl_files": c1e5026c6457: Pulling fs layer
Step #0 - "download_nl_files": f0016544b8b9: Pulling fs layer
Step #0 - "download_nl_files": 1d58eee51ff2: Pulling fs layer
Step #0 - "download_nl_files": 93dc7b704cd1: Pulling fs layer
Step #0 - "download_nl_files": caefdefa531e: Pulling fs layer
Step #0 - "download_nl_files": 93dc7b704cd1: Waiting
Step #0 - "download_nl_files": caefdefa531e: Waiting
Step #0 - "download_nl_files": f0016544b8b9: Verifying Checksum
Step #0 - "download_nl_files": f0016544b8b9: Download complete
Step #0 - "download_nl_files": 6710592d62aa: Download complete
Step #0 - "download_nl_files": 1d58eee51ff2: Verifying Checksum
Step #0 - "download_nl_files": 1d58eee51ff2: Download complete
Step #0 - "download_nl_files": bd73737482dd: Verifying Checksum
Step #0 - "download_nl_files": bd73737482dd: Download complete
Step #0 - "download_nl_files": 75256935197e: Verifying Checksum
Step #0 - "download_nl_files": 75256935197e: Download complete
Step #0 - "download_nl_files": 93dc7b704cd1: Verifying Checksum
Step #0 - "download_nl_files": 93dc7b704cd1: Download complete
Step #0 - "download_nl_files": caefdefa531e: Verifying Checksum
Step #0 - "download_nl_files": caefdefa531e: Download complete
Step #0 - "download_nl_files": bd73737482dd: Pull complete
Step #0 - "download_nl_files": 6710592d62aa: Pull complete
Step #0 - "download_nl_files": c1e5026c6457: Verifying Checksum
Step #0 - "download_nl_files": c1e5026c6457: Download complete
Step #0 - "download_nl_files": 75256935197e: Pull complete
Step #0 - "download_nl_files": c1e5026c6457: Pull complete
Step #0 - "download_nl_files": f0016544b8b9: Pull complete
Step #0 - "download_nl_files": 1d58eee51ff2: Pull complete
Step #0 - "download_nl_files": 93dc7b704cd1: Pull complete
Step #0 - "download_nl_files": caefdefa531e: Pull complete
Step #0 - "download_nl_files": Digest: sha256:3a619e3c96fd4c5fc5e1998fd4dcb1f1403eb90c4c6409c70d7e80b9468df7df
Step #0 - "download_nl_files": Status: Downloaded newer image for python:3.11.3
Step #0 - "download_nl_files": docker.io/library/python:3.11.3
Step #0 - "download_nl_files": Requirement already satisfied: pip in ./.venv/lib/python3.11/site-packages (22.3.1)
Step #0 - "download_nl_files": Collecting pip
Step #0 - "download_nl_files":   Downloading pip-25.3-py3-none-any.whl (1.8 MB)
Step #0 - "download_nl_files":      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 36.4 MB/s eta 0:00:00
Step #0 - "download_nl_files": Installing collected packages: pip
Step #0 - "download_nl_files":   Attempting uninstall: pip
Step #0 - "download_nl_files":     Found existing installation: pip 22.3.1
Step #0 - "download_nl_files":     Uninstalling pip-22.3.1:
Step #0 - "download_nl_files":       Successfully uninstalled pip-22.3.1
Step #0 - "download_nl_files": Successfully installed pip-25.3
Step #0 - "download_nl_files": I1210 22:24:47.544364 140649175603008 gcs.py:50] Download datcom-nl-models/ft_final_v20230717230459.all-MiniLM-L6-v2 to /tmp/datcom-nl-models/ft_final_v20230717230459.all-MiniLM-L6-v2
Step #0 - "download_nl_files": I1210 22:24:49.107700 140649175603008 gcs.py:50] Download datcom-nl-models/embeddings_medium_2024_05_09_18_01_32.ft_final_v20230717230459.all-MiniLM-L6-v2.csv to /tmp/datcom-nl-models/embeddings_medium_2024_05_09_18_01_32.ft_final_v20230717230459.all-MiniLM-L6-v2.csv
Step #0 - "download_nl_files": I1210 22:24:50.338922 140649175603008 gcs.py:50] Download datcom-nl-models/sdg_ft_2024_06_24_23_45_46/embeddings.csv to /tmp/datcom-nl-models/sdg_ft_2024_06_24_23_45_46/embeddings.csv
Step #0 - "download_nl_files": I1210 22:24:50.656347 140649175603008 gcs.py:50] Download datcom-nl-models/undata_ft_2024_06_24_23_47_04/embeddings.csv to /tmp/datcom-nl-models/undata_ft_2024_06_24_23_47_04/embeddings.csv
Step #0 - "download_nl_files": I1210 22:24:50.975189 140649175603008 gcs.py:50] Download datcom-nl-models/undata_ilo_ft_2024_10_14_13_45_50/embeddings.csv to /tmp/datcom-nl-models/undata_ilo_ft_2024_10_14_13_45_50/embeddings.csv
Step #0 - "download_nl_files": I1210 22:24:51.080623 140649175603008 gcs.py:50] Download datcom-nl-models/bio_ft_2024_11_08_19_00_38/embeddings.csv to /tmp/datcom-nl-models/bio_ft_2024_11_08_19_00_38/embeddings.csv
Step #0 - "download_nl_files": I1210 22:24:51.246994 140649175603008 gcs.py:50] Download datcom-nl-models/base_uae_mem_2025_11_03_07_10_42/embeddings.csv to /tmp/datcom-nl-models/base_uae_mem_2025_11_03_07_10_42/embeddings.csv
Step #0 - "download_nl_files": I1210 22:24:52.198789 140649175603008 gcs.py:50] Download datcom-nl-models/base_mistral_mem_2024_07_01_10_23_43/embeddings.csv to /tmp/datcom-nl-models/base_mistral_mem_2024_07_01_10_23_43/embeddings.csv
Finished Step #0 - "download_nl_files"
Starting Step #1 - "flask_test"
Step #1 - "flask_test": Already have image (with digest): python:3.11.3
Step #1 - "flask_test": ### Running server tests
Step #1 - "flask_test": [NOTICE]  server/.venv does not exist. Setting up website python virtual environment...
Step #1 - "flask_test": installing server/requirements.txt
Step #1 - "flask_test":   DEPRECATION: langdetect is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
Step #1 - "flask_test":   DEPRECATION: data-gemma is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
Step #1 - "flask_test":   DEPRECATION: flask_testing is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
Step #1 - "flask_test": 
Step #1 - "flask_test": [notice] A new release of pip available: 22.3.1 -> 25.3
Step #1 - "flask_test": [notice] To update, run: pip install --upgrade pip
Step #1 - "flask_test": 
Step #1 - "flask_test": [notice] A new release of pip available: 22.3.1 -> 25.3
Step #1 - "flask_test": [notice] To update, run: pip install --upgrade pip
Step #1 - "flask_test": ============================= test session starts ==============================
Step #1 - "flask_test": platform linux -- Python 3.11.3, pytest-9.0.2, pluggy-1.6.0
Step #1 - "flask_test": rootdir: /workspace
Step #1 - "flask_test": configfile: pytest.ini
Step #1 - "flask_test": plugins: rerunfailures-10.2, flakefinder-1.1.0, xdist-3.2.1, anyio-4.12.0
Step #1 - "flask_test": gw0 I / gw1 I
Step #1 - "flask_test": 
[gw0] Python 3.11.3 (main, May 23 2023, 13:25:46) [GCC 10.2.1 20210110]
Step #1 - "flask_test": 
[gw1] Python 3.11.3 (main, May 23 2023, 13:25:46) [GCC 10.2.1 20210110]
Step #1 - "flask_test": gw0 [636] / gw1 [636]
Step #1 - "flask_test": 
Step #1 - "flask_test": scheduling tests via LoadScheduling
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_1 
Step #1 - "flask_test": server/tests/chart_config_test.py::TestChart::test_aggregate_field 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_1 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_2 
Step #1 - "flask_test": [gw0] PASSED server/tests/chart_config_test.py::TestChart::test_aggregate_field 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_2 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_3 
Step #1 - "flask_test": server/tests/chart_config_test.py::TestChart::test_related_chart_scale 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_3 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_4 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_detector_test.py::TestBuildClassifications::test_main_4 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_00 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_00 
Step #1 - "flask_test": [gw0] PASSED server/tests/chart_config_test.py::TestChart::test_related_chart_scale 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_01 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_01 
Step #1 - "flask_test": server/tests/chart_config_test.py::TestChart::test_unique_chart 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_02 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_02 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_03 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_03 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_04 
Step #1 - "flask_test": [gw0] PASSED server/tests/chart_config_test.py::TestChart::test_unique_chart 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_04 
Step #1 - "flask_test": server/tests/i18n_test.py::TestHlParamSelection::test_default_hl 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_05 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_05 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_06 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_06 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_07 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_07 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_08 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_08 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_09 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_09 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_10 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_10 
Step #1 - "flask_test": server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_11 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/llm_fallback_test.py::TestLLMFallback::test_main_11 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_doublequotes 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_doublequotes 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_list 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_list 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_versus 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestGetPartsViaDelimiters::test_get_parts_via_delimiters_versus 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_0_number_of_poor_hispanic_women_with_phd 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_0_number_of_poor_hispanic_women_with_phd 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_1_compare_obesity_vs_poverty 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_1_compare_obesity_vs_poverty 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_2_show_me_the_impact_of_climate_change_on_drought 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_2_show_me_the_impact_of_climate_change_on_drought 
Step #1 - "flask_test": server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_3_Compare_Male_population_with_Female_Population_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/detection/query_util_test.py::TestPrepareMultivarQuerysets::test_prepare_multivar_querysets_3_Compare_Male_population_with_Female_Population_ 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_comparison 
Step #1 - "flask_test": [gw0] PASSED server/tests/i18n_test.py::TestHlParamSelection::test_default_hl 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_comparison 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_contained_in 
Step #1 - "flask_test": server/tests/i18n_test.py::TestHlParamSelection::test_fallback_hl 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_contained_in 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_correlation 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_correlation 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_counters_simple 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_counters_simple 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_event 
Step #1 - "flask_test": [gw0] PASSED server/tests/i18n_test.py::TestHlParamSelection::test_fallback_hl 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_event 
Step #1 - "flask_test": server/tests/i18n_test.py::TestHlParamSelection::test_no_hl 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_multisv_correlation 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_multisv_correlation 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_place_only 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_place_only 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_ranking_across_places 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_ranking_across_places 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_ranking_across_svs 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_ranking_across_svs 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple 
Step #1 - "flask_test": [gw0] PASSED server/tests/i18n_test.py::TestHlParamSelection::test_no_hl 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_barchart_downgrade 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_barchart_downgrade 
Step #1 - "flask_test": server/tests/i18n_test.py::TestHlParamSelection::test_simple_hl 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_overview 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_overview 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_sv_extension 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_sv_extension 
Step #1 - "flask_test": [gw0] PASSED server/tests/i18n_test.py::TestHlParamSelection::test_simple_hl 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_topic 
Step #1 - "flask_test": server/tests/lib/config_test.py::TestConfig::test_format_title_0_test 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_simple_with_topic 
Step #1 - "flask_test": server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_time_delta 
Step #1 - "flask_test": [gw1] SKIPPED server/tests/lib/nl/fulfiller_test.py::TestDataSpecNext::test_time_delta 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_0_What_is_the_deadliest_tropical_storm_in_history_ 
Step #1 - "flask_test": [gw0] PASSED server/tests/lib/config_test.py::TestConfig::test_format_title_0_test 
Step #1 - "flask_test": server/tests/lib/config_test.py::TestConfig::test_format_title_1_local 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_0_What_is_the_deadliest_tropical_storm_in_history_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_1_What_is_the_most_powerful_tropical_storm_on_record_ 
Step #1 - "flask_test": [gw0] PASSED server/tests/lib/config_test.py::TestConfig::test_format_title_1_local 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_1_What_is_the_most_powerful_tropical_storm_on_record_ 
Step #1 - "flask_test": server/tests/lib/config_test.py::TestConfig::test_format_title_2_production 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_2_What_is_the_most_active_hurricane_season_on_record_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_2_What_is_the_most_active_hurricane_season_on_record_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_3_What_were_the_costliest_hurricanes_in_history_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_3_What_were_the_costliest_hurricanes_in_history_ 
Step #1 - "flask_test": [gw0] PASSED server/tests/lib/config_test.py::TestConfig::test_format_title_2_production 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_4_What_was_the_most_destructive_cyclone 
Step #1 - "flask_test": server/tests/lib/config_test.py::TestConfig::test_format_title_3_webdriver 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_4_What_was_the_most_destructive_cyclone 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_5_Typhoons_in_Asia 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_cyclone_5_Typhoons_in_Asia 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_drought_0_What_are_the_chances_of_a_drought_in_the_next_10_years_ 
Step #1 - "flask_test": [gw0] PASSED server/tests/lib/config_test.py::TestConfig::test_format_title_3_webdriver 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_drought_0_What_are_the_chances_of_a_drought_in_the_next_10_years_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_drought_1_Tell_me_about_droughts_in_Africa 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_drought_1_Tell_me_about_droughts_in_Africa 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_0_When_was_the_last_earthquake_in_CA_above_6_on_the_richter_scale_ 
Step #1 - "flask_test": server/tests/lib/feature_flag_test.py::TestFeatureFlags::test_feature_flag_disabled_when_not_in_config 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_0_When_was_the_last_earthquake_in_CA_above_6_on_the_richter_scale_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_1_What_was_the_magnitude_of_the_largest_earthquake_in_California_in_the_last_10_years_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_1_What_was_the_magnitude_of_the_largest_earthquake_in_California_in_the_last_10_years_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_2_What_is_the_probability_of_an_earthquake_in_California_in_the_next_year_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_earthquake_2_What_is_the_probability_of_an_earthquake_in_California_in_the_next_year_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_cold_0_Which_places_were_affected_the_most_by_extreme_cold_last_year_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_cold_0_Which_places_were_affected_the_most_by_extreme_cold_last_year_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_cold_1_cities_that_were_extremely_cold_in_the_past_decade 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_cold_1_cities_that_were_extremely_cold_in_the_past_decade 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_heat_0_Which_places_were_affected_the_most_by_extreme_heat_last_year_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_heat_0_Which_places_were_affected_the_most_by_extreme_heat_last_year_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_heat_1_cities_that_were_extremely_hot_in_the_last_year 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_extreme_heat_1_cities_that_were_extremely_hot_in_the_last_year 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_0_Which_were_the_biggest_fires_in_California_of_the_last_decade_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_0_Which_were_the_biggest_fires_in_California_of_the_last_decade_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_1_Tell_me_about_wildfires_in_Africa 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_1_Tell_me_about_wildfires_in_Africa 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_2_Wildland_Fires_in_CA 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_fire_2_Wildland_Fires_in_CA 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_flood_0_What_is_the_probability_of_a_flood_in_my_city_in_the_next_5_years_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_flood_0_What_is_the_probability_of_a_flood_in_my_city_in_the_next_5_years_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_flood_1_Where_were_the_largest_floods_by_area 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_flood_1_Where_were_the_largest_floods_by_area 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_0_What_is_the_wet_bulb_temperature_in_Death_Valley_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_0_What_is_the_wet_bulb_temperature_in_Death_Valley_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_1_Which_cities_have_highest_wet_bulb_temperatures_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_1_Which_cities_have_highest_wet_bulb_temperatures_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_2_Places_with_high_wetbulb_temperatures 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_2_Places_with_high_wetbulb_temperatures 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_3_Wetbulb_readings_for_Maine 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_detect_wet_bulb_3_Wetbulb_readings_for_Maine 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_0_Number_of_poor_women_in_Mountain_View 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_0_Number_of_poor_women_in_Mountain_View 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_1_Hearing_impaired_in_CA 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_1_Hearing_impaired_in_CA 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_2_What_is_the_median_age_of_residents_in_Chicago_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_2_What_is_the_median_age_of_residents_in_Chicago_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_3_What_is_the_average_annual_greenhouse_gas_emissions_in_Mexico_City_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_3_What_is_the_average_annual_greenhouse_gas_emissions_in_Mexico_City_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_4_infant_deaths_in_the_united_states 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_4_infant_deaths_in_the_united_states 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_5_What_is_the_population_of_hispanic_people_in_Texas_ 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_5_What_is_the_population_of_hispanic_people_in_Texas_ 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_6_Give_me_the_average_number_of_days_with_snowfall_in_Minneapolis 
Step #1 - "flask_test": [gw1] PASSED server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_6_Give_me_the_average_number_of_days_with_snowfall_in_Minneapolis 
Step #1 - "flask_test": server/tests/lib/nl/heuristics_test.py::TestHeuristicEventClassifier::test_no_false_positives_7_How_many_people_in_Seattle 
...
[Logs truncated due to log size limitations. For full logs, see https://console.cloud.google.com/cloud-build/builds/926ea7b2-352d-4969-9b83-d06f6b85dac0?project=879489846695.]
...
tests/routes/place/utils_test.py::TestUtils::test_fetch_peer_places_within_states 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/related_places_test.py::TestRelatedPlaces::test_related_places_california 
Step #1 - "flask_test": server/tests/routes/place/related_places_test.py::TestRelatedPlaces::test_related_places_california_es 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_fetch_peer_places_within_states 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_fetch_places 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/related_places_test.py::TestRelatedPlaces::test_related_places_california_es 
Step #1 - "flask_test": server/tests/routes/place/related_places_test.py::TestRelatedPlaces::test_related_places_requires_dcid 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_fetch_places 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_fetch_places_fr 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/related_places_test.py::TestRelatedPlaces::test_related_places_requires_dcid 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_fetch_places_fr 
Step #1 - "flask_test": server/tests/routes/place/summary_test.py::TestPlaceSummary::test_earth_summary 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_by_category 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_by_category 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_all_data 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/summary_test.py::TestPlaceSummary::test_earth_summary 
Step #1 - "flask_test": server/tests/routes/place/summary_test.py::TestPlaceSummary::test_place_summary_90210 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/summary_test.py::TestPlaceSummary::test_place_summary_90210 
Step #1 - "flask_test": server/tests/routes/place/summary_test.py::TestPlaceSummary::test_usa_summary 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_all_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_children_have_no_data 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/summary_test.py::TestPlaceSummary::test_usa_summary 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_basic_categories 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_basic_categories 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_children_have_no_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_chart_config_to_overview_charts 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_has_no_denominator_data 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_chart_config_to_overview_charts 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_check_geo_data_exists_false 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_check_geo_data_exists_false 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_check_geo_data_exists_true 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_has_no_denominator_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_peers_have_no_data 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_check_geo_data_exists_true 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_empty_response 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_empty_response 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_extract_places 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_extract_places 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_peers_have_no_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_fetch_child_place_dcids 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_place_has_no_data 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_fetch_child_place_dcids 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_fetch_nearby_places 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_fetch_nearby_places 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_zip 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_filter_chart_config_for_data_existence_place_has_no_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_type_to_highlight 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_zip 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_multiple_places_for_stat_var 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_type_to_highlight 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_multiple_places_for_stat_var 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_overview_filter_no_overview_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_types_california 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_overview_filter_no_overview_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_overview_filter_with_data 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_types_california 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_types_france 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_overview_filter_with_data 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_place_type_to_highlight 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_child_place_types_france 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_place_type_to_highlight 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_read_chart_configs 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_ordered_by_place_type_to_highlight_eu_place 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_read_chart_configs 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_safe_api_error_handling 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_ordered_by_place_type_to_highlight_eu_place 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_ordered_by_place_type_to_highlight_usa_place 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_safe_api_error_handling 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_select_string_with_locale 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_ordered_by_place_type_to_highlight_usa_place 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_parent_places 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_select_string_with_locale 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_single_category 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_parent_places 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_parent_places_filters_invalid 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_single_category 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_translate_chart_config_place_titles 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_parent_places_filters_invalid 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_ile_de_france 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_translate_chart_config_place_titles 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_ile_de_france 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_mtv 
Step #1 - "flask_test": server/tests/routes/place_list_test.py::TestRoute::test_index 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place/utils_test.py::TestUtils::test_get_place_override_mtv 
Step #1 - "flask_test": server/tests/routes/place_test.py::TestPlacePage::test_place 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place_list_test.py::TestRoute::test_index 
Step #1 - "flask_test": server/tests/routes/place_list_test.py::TestRoute::test_no_child 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place_list_test.py::TestRoute::test_no_child 
Step #1 - "flask_test": server/tests/routes/place_list_test.py::TestRoute::test_node 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place_list_test.py::TestRoute::test_node 
Step #1 - "flask_test": server/tests/routes/place_test.py::TestPlaceLandingPage::test_place_landing 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place_test.py::TestPlaceLandingPage::test_place_landing 
Step #1 - "flask_test": server/tests/routes/place_test.py::TestPlacePage::test_get_canonical_links 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/place_test.py::TestPlacePage::test_get_canonical_links 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_gni 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place_test.py::TestPlacePage::test_place 
Step #1 - "flask_test": server/tests/routes/place_test.py::TestRedirectToPlacePage::test_redirect_to_place_page 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/place_test.py::TestRedirectToPlacePage::test_redirect_to_place_page 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_browser 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_gni 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_scatter 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_browser 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_browser_with_args 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_browser_with_args 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_colab 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_colab 
Step #1 - "flask_test": server/tests/routes/redirects_test.py::TestRedirects::test_documentation 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_documentation 
Step #1 - "flask_test": server/tests/routes/shared_api/autocomplete/helpers_test.py::TestHelpers::test_get_custom_place_suggestions 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/shared_api/autocomplete/helpers_test.py::TestHelpers::test_get_custom_place_suggestions 
Step #1 - "flask_test": server/tests/routes/shared_api/autocomplete/stat_vars_test.py::TestStatVars::test_analyze_query_concepts 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/redirects_test.py::TestRedirects::test_scatter 
Step #1 - "flask_test": server/tests/routes/search_test.py::TestSearchPages::test_search 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/shared_api/autocomplete/stat_vars_test.py::TestStatVars::test_analyze_query_concepts 
Step #1 - "flask_test": server/tests/routes/special_announcement_test.py::TestSpecialAnnouncementPages::test_special_announcement 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/special_announcement_test.py::TestSpecialAnnouncementPages::test_special_announcement 
Step #1 - "flask_test": server/tests/routes/special_announcement_test.py::TestSpecialAnnouncementPages::test_special_announcement_faq 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/search_test.py::TestSearchPages::test_search 
Step #1 - "flask_test": server/tests/routes/search_test.py::TestSearchPages::test_search_dc 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/search_test.py::TestSearchPages::test_search_dc 
Step #1 - "flask_test": server/tests/routes/search_test.py::TestSearchPages::test_search_dc_query 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/special_announcement_test.py::TestSpecialAnnouncementPages::test_special_announcement_faq 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/search_test.py::TestSearchPages::test_search_dc_query 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_about 
Step #1 - "flask_test": server/tests/routes/search_test.py::TestSearchPages::test_search_query 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/search_test.py::TestSearchPages::test_search_query 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_homepage_i18n 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/static_test.py::TestStaticPages::test_about 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_disclaimers 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/static_test.py::TestStaticPages::test_homepage_i18n 
Step #1 - "flask_test": server/tests/routes/tools_test.py::TestStaticPage::test_download 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/static_test.py::TestStaticPages::test_disclaimers 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_faq 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/tools_test.py::TestStaticPage::test_download 
Step #1 - "flask_test": server/tests/routes/tools_test.py::TestStaticPage::test_map 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/static_test.py::TestStaticPages::test_faq 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_feedback 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/tools_test.py::TestStaticPage::test_map 
Step #1 - "flask_test": server/tests/routes/tools_test.py::TestStaticPage::test_scatter 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/tools_test.py::TestStaticPage::test_scatter 
Step #1 - "flask_test": server/tests/routes/tools_test.py::TestStaticPage::test_stat_var 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/static_test.py::TestStaticPages::test_feedback 
Step #1 - "flask_test": server/tests/routes/static_test.py::TestStaticPages::test_homepage 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/tools_test.py::TestStaticPage::test_stat_var 
Step #1 - "flask_test": server/tests/routes/tools_test.py::TestStaticPage::test_timeline 
Step #1 - "flask_test": [gw0] PASSED server/tests/routes/static_test.py::TestStaticPages::test_homepage 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_merge_paged_responses_with_no_max_pages 
Step #1 - "flask_test": [gw1] PASSED server/tests/routes/tools_test.py::TestStaticPage::test_timeline 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_empty_response_returns_empty 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_merge_paged_responses_with_no_max_pages 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_empty_response_returns_empty 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_merging_property_responses 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_no_data_in_response 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_no_data_in_response 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_termination_condition_max_pages_fetched 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_merging_property_responses 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_termination_condition_max_pages_fetched 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_termination_condition_no_next_token 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVars::test_with_skip_topics 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsV2NodePaginated::test_termination_condition_no_next_token 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVars::test_without_skip_topics 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVars::test_with_skip_topics 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_false_values 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVars::test_without_skip_topics 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_no_header 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_false_values 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_true_header 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_no_header 
Step #1 - "flask_test": server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVarsInParallel::test_basic 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsCacheSkip::test_should_skip_cache_with_true_header 
Step #1 - "flask_test": server/tests/services/discovery_test.py::TestServiceDiscovery::test_configure_endpoints_from_ingress_1 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/discovery_test.py::TestServiceDiscovery::test_configure_endpoints_from_ingress_1 
Step #1 - "flask_test": server/tests/services/discovery_test.py::TestServiceDiscovery::test_default_config 
Step #1 - "flask_test": [gw1] PASSED server/tests/services/discovery_test.py::TestServiceDiscovery::test_default_config 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/datacommons_test.py::TestServiceDataCommonsNLSearchVarsInParallel::test_basic 
Step #1 - "flask_test": server/tests/services/discovery_test.py::TestServiceDiscovery::test_configure_endpoints_from_ingress_2 
Step #1 - "flask_test": [gw0] PASSED server/tests/services/discovery_test.py::TestServiceDiscovery::test_configure_endpoints_from_ingress_2 
Step #1 - "flask_test": 
Step #1 - "flask_test": =================================== FAILURES ===================================
Step #1 - "flask_test": ______________ TestFeatureFlagsTest.test_load_feature_flag_files _______________
Step #1 - "flask_test": [gw1] linux -- Python 3.11.3 /workspace/server/.venv/bin/python3
Step #1 - "flask_test": 
Step #1 - "flask_test": self = <workspace.server.tests.lib.util_test.TestFeatureFlagsTest testMethod=test_load_feature_flag_files>
Step #1 - "flask_test": 
Step #1 - "flask_test":     def test_load_feature_flag_files(self):
Step #1 - "flask_test":       """Test that all environments have the same number of feature flags, and
Step #1 - "flask_test":       that there are no duplicate feature flags.
Step #1 - "flask_test":       """
Step #1 - "flask_test":       directory = "server/config/feature_flag_configs/"
Step #1 - "flask_test":       filenames = os.listdir(directory)
Step #1 - "flask_test":       self.assertEqual(len(filenames), self.FEATURE_FLAG_ENVIRONMENT_COUNT)
Step #1 - "flask_test":       feature_flag_counts = []
Step #1 - "flask_test":       production_features = set()
Step #1 - "flask_test":       non_production_features = set()
Step #1 - "flask_test":     
Step #1 - "flask_test":       for filename in filenames:
Step #1 - "flask_test":         filepath = directory + filename
Step #1 - "flask_test":         with open(filepath, 'r', encoding='utf-8') as f:
Step #1 - "flask_test":           data = json.load(f)
Step #1 - "flask_test":     
Step #1 - "flask_test":         features = [
Step #1 - "flask_test":             item.get("name") for item in data if isinstance(item, dict) and
Step #1 - "flask_test":             "name" in item and not item.get("deprecated", False)
Step #1 - "flask_test":         ]
Step #1 - "flask_test":         duplicate_features = [f for f in features if features.count(f) > 1]
Step #1 - "flask_test":     
Step #1 - "flask_test":         feature_flag_count = len(features)
Step #1 - "flask_test":         feature_flag_counts.append(feature_flag_count)
Step #1 - "flask_test":         self.assertEqual(len(duplicate_features), 0)
Step #1 - "flask_test":         if filename == "production.json":
Step #1 - "flask_test":           production_features = set(features)
Step #1 - "flask_test":         else:
Step #1 - "flask_test":           non_production_features.update(features)
Step #1 - "flask_test":     
Step #1 - "flask_test":       # Assert that we have counts for all environments
Step #1 - "flask_test":       self.assertEqual(len(feature_flag_counts),
Step #1 - "flask_test":                        self.FEATURE_FLAG_ENVIRONMENT_COUNT)
Step #1 - "flask_test":     
Step #1 - "flask_test":       # Assert all environments except production have the same number of feature flags
Step #1 - "flask_test":       non_production_counts = [
Step #1 - "flask_test":           count for filename, count in zip(filenames, feature_flag_counts)
Step #1 - "flask_test":           if filename != "production.json"
Step #1 - "flask_test":       ]
Step #1 - "flask_test": >     self.assertTrue(
Step #1 - "flask_test":           all(count == non_production_counts[0]
Step #1 - "flask_test":               for count in non_production_counts))
Step #1 - "flask_test": E     AssertionError: False is not true
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/lib/util_test.py:1821: AssertionError
Step #1 - "flask_test": =============================== warnings summary ===============================
Step #1 - "flask_test": server/.venv/lib/python3.11/site-packages/flask_babel/__init__.py:183
Step #1 - "flask_test": server/.venv/lib/python3.11/site-packages/flask_babel/__init__.py:183
Step #1 - "flask_test":   /workspace/server/.venv/lib/python3.11/site-packages/flask_babel/__init__.py:183: DeprecationWarning: 'locked_cached_property' is deprecated and will be removed in Flask 2.4. Use a lock inside the decorated function if locking is needed.
Step #1 - "flask_test":     @locked_cached_property
Step #1 - "flask_test": 
Step #1 - "flask_test": shared/lib/constants.py:33
Step #1 - "flask_test": shared/lib/constants.py:33
Step #1 - "flask_test": shared/lib/constants.py:33
Step #1 - "flask_test": shared/lib/constants.py:33
Step #1 - "flask_test":   /workspace/shared/lib/constants.py:33: DeprecationWarning: invalid escape sequence '\s'
Step #1 - "flask_test":     f'(?<!{rate_word}\srate)(?<!{rate_word}\srates)'
Step #1 - "flask_test": 
Step #1 - "flask_test": shared/lib/constants.py:251
Step #1 - "flask_test": shared/lib/constants.py:251
Step #1 - "flask_test":   /workspace/shared/lib/constants.py:251: DeprecationWarning: invalid escape sequence '\W'
Step #1 - "flask_test":     "WetBulb": ["wet(\W?)bulb",],
Step #1 - "flask_test": 
Step #1 - "flask_test": server/routes/oembed/oembed.py:45
Step #1 - "flask_test":   /workspace/server/routes/oembed/oembed.py:45: DeprecationWarning: invalid escape sequence '\.'
Step #1 - "flask_test":     url_regex = "https?://*\.datacommons\.org/chart*"
Step #1 - "flask_test": 
Step #1 - "flask_test": server/routes/oembed/oembed.py:47
Step #1 - "flask_test":   /workspace/server/routes/oembed/oembed.py:47: DeprecationWarning: invalid escape sequence '\.'
Step #1 - "flask_test":     url_regex = "http://(127\.0\.0\.1|localhost):8080/chart*"
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/lib/nl/quantity_parser_test.py:72
Step #1 - "flask_test": server/tests/lib/nl/quantity_parser_test.py:72
Step #1 - "flask_test":   /workspace/server/tests/lib/nl/quantity_parser_test.py:72: DeprecationWarning: invalid escape sequence '\s'
Step #1 - "flask_test":     ('in cities with poverty rate under 10% \show me asthma prevalence',
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/i18n_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/api/autocomplete_test.py: 2 warnings
Step #1 - "flask_test": server/tests/routes/api/browser_test.py: 5 warnings
Step #1 - "flask_test": server/tests/routes/api/choropleth_test.py: 5 warnings
Step #1 - "flask_test": server/tests/routes/api/csv_test.py: 18 warnings
Step #1 - "flask_test": server/tests/routes/api/detection_test.py: 13 warnings
Step #1 - "flask_test": server/tests/routes/api/disaster_test.py: 17 warnings
Step #1 - "flask_test": server/tests/routes/api/explore_follow_up_questions_test.py: 5 warnings
Step #1 - "flask_test": server/tests/routes/api/explore_overview_test.py: 5 warnings
Step #1 - "flask_test": server/tests/routes/api/facets_test.py: 3 warnings
Step #1 - "flask_test": server/tests/routes/api/place_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/api/point_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/api/series_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/api/stats_test.py: 9 warnings
Step #1 - "flask_test": server/tests/lib/feature_flag_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/api/varable_group_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/api/variable_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/browser_test.py: 2 warnings
Step #1 - "flask_test": server/tests/routes/dev_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/factcheck_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/import_wizard_test.py: 2 warnings
Step #1 - "flask_test": server/tests/routes/nl/search_indicators_test.py: 13 warnings
Step #1 - "flask_test": server/tests/routes/place/overview_table_test.py: 2 warnings
Step #1 - "flask_test": server/tests/routes/place/place_charts_test.py: 1 warning
Step #1 - "flask_test": server/tests/routes/place/related_places_test.py: 3 warnings
Step #1 - "flask_test": server/tests/routes/place_list_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/place_test.py: 16 warnings
Step #1 - "flask_test": server/tests/routes/redirects_test.py: 6 warnings
Step #1 - "flask_test": server/tests/routes/special_announcement_test.py: 2 warnings
Step #1 - "flask_test": server/tests/routes/search_test.py: 4 warnings
Step #1 - "flask_test": server/tests/routes/static_test.py: 6 warnings
Step #1 - "flask_test": server/tests/routes/tools_test.py: 5 warnings
Step #1 - "flask_test":   /workspace/server/.venv/lib/python3.11/site-packages/flask/testing.py:118: DeprecationWarning: The '__version__' attribute is deprecated and will be removed in Werkzeug 3.1. Use feature detection or 'importlib.metadata.version("werkzeug")' instead.
Step #1 - "flask_test":     "HTTP_USER_AGENT": f"werkzeug/{werkzeug.__version__}",
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py: 38 warnings
Step #1 - "flask_test": server/tests/routes/place/related_places_test.py: 3 warnings
Step #1 - "flask_test": server/tests/routes/place/summary_test.py: 3 warnings
Step #1 - "flask_test":   /workspace/server/.venv/lib/python3.11/site-packages/flask_caching/__init__.py:119: UserWarning: Flask-Caching: CACHE_TYPE is set to null, caching is effectively disabled.
Step #1 - "flask_test":     warnings.warn(
Step #1 - "flask_test": 
Step #1 - "flask_test": server/tests/routes/place/utils_test.py: 38 warnings
Step #1 - "flask_test": server/tests/routes/place/related_places_test.py: 3 warnings
Step #1 - "flask_test": server/tests/routes/place/summary_test.py: 3 warnings
Step #1 - "flask_test":   /workspace/server/.venv/lib/python3.11/site-packages/flask_caching/__init__.py:158: DeprecationWarning: Using the initialization functions in flask_caching.backend is deprecated.  Use the a full path to backend classes directly.
Step #1 - "flask_test":     warnings.warn(
Step #1 - "flask_test": 
Step #1 - "flask_test": -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
Step #1 - "flask_test": =========================== short test summary info ============================
Step #1 - "flask_test": FAILED server/tests/lib/util_test.py::TestFeatureFlagsTest::test_load_feature_flag_files
Step #1 - "flask_test": =========== 1 failed, 619 passed, 16 skipped, 269 warnings in 40.15s ===========
Finished Step #1 - "flask_test"
ERROR
ERROR: build step 1 "python:3.11.3" failed: step exited with non-zero status: 1

Build Log: https://console.cloud.google.com/cloud-build/builds/926ea7b2-352d-4969-9b83-d06f6b85dac0?project=879489846695