Started by an SCM change Obtained jenkins_tests/clubb_dash/Jenkinsfile from git https://github.com/larson-group/clubb.git [Pipeline] Start of Pipeline [Pipeline] node Running on nelson in /home/jenkins/workspace/clubb_dash [Pipeline] { [Pipeline] stage [Pipeline] { (Declarative: Checkout SCM) [Pipeline] checkout The recommended git tool is: git Wiping out workspace first. Cloning the remote Git repository Cloning repository https://github.com/larson-group/clubb.git > git init /home/jenkins/workspace/clubb_dash # timeout=10 Fetching upstream changes from https://github.com/larson-group/clubb.git > git --version # timeout=10 > git --version # 'git version 2.43.0' using GIT_ASKPASS to set credentials larsongroupsysadmin github token > git fetch --tags --force --progress -- https://github.com/larson-group/clubb.git +refs/heads/*:refs/remotes/origin/* # timeout=10 Avoid second fetch Checking out Revision 4292a70f53a6b6c4eab864fe27b8fd9af5d86909 (refs/remotes/origin/master) Commit message: "Fix arm97+l do expldiff rtm thlm+set edsclrm f early (#1386)" > git config remote.origin.url https://github.com/larson-group/clubb.git # timeout=10 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10 > git config core.sparsecheckout # timeout=10 > git checkout -f 4292a70f53a6b6c4eab864fe27b8fd9af5d86909 # timeout=10 > git rev-list --no-walk 9429ba2f18a79e7b17ef53bccc8f17af6649c3fd # timeout=10 [Pipeline] } [Pipeline] // stage [Pipeline] withEnv [Pipeline] { [Pipeline] stage [Pipeline] { (Run Dash pytests) [Pipeline] withEnv [Pipeline] { [Pipeline] sh + export PATH=/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin + PATH=/home/jenkins/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin + node --version v22.23.3 + bash tests/run_pytests.sh -dash --junitxml=/home/jenkins/workspace/clubb_dash/output/tests/pytests/dash.xml --durations=10 Installing uv 0.11.32 in /home/jenkins/workspace/clubb_dash/.clubb-python-tools/bin downloading uv 0.11.32 x86_64-unknown-linux-gnu installing to /home/jenkins/workspace/clubb_dash/.clubb-python-tools/bin uv uvx everything's installed! Creating CLUBB virtualenv: /home/jenkins/workspace/clubb_dash/.venv-python Using CPython 3.12.3 interpreter at: /usr/bin/python3.12 Creating virtual environment at: .venv-python Activate with: source .venv-python/bin/activate Installing dash requirements into /home/jenkins/workspace/clubb_dash/.venv-python Using Python 3.12.3 environment at: .venv-python Resolved 71 packages in 756ms Downloading pydantic-core (2.1MiB) Downloading scipy (33.7MiB) Downloading fonttools (5.1MiB) Downloading pygments (1.2MiB) Downloading meson (1.1MiB) Downloading cryptography (4.5MiB) Downloading netcdf4 (9.7MiB) Downloading plotly (9.5MiB) Downloading numpy (16.0MiB) Downloading matplotlib (8.4MiB) Downloading kiwisolver (1.4MiB) Downloading cftime (1.6MiB) Downloading dash (7.6MiB) Downloading pillow (6.6MiB) Downloaded kiwisolver Downloaded cftime Downloaded pydantic-core Downloaded meson Downloaded pygments Downloaded cryptography Downloaded fonttools Downloaded pillow Downloaded dash Downloaded netcdf4 Downloaded matplotlib Downloaded numpy Downloaded plotly Downloaded scipy Prepared 71 packages in 1.77s Installed 71 packages in 47ms + annotated-types==0.8.0 + anyio==4.15.1 + attrs==26.1.0 + blinker==1.9.0 + certifi==2026.7.22 + cffi==2.1.1 + cftime==1.6.6 + charset-normalizer==3.5.2 + click==8.5.0 + contourpy==1.4.0 + cryptography==50.0.2 + cycler==0.12.1 + dash==3.4.0 + dill==0.4.1 + diskcache==5.6.3 + flask==3.1.3 + fonttools==4.66.1 + h11==0.16.0 + httpcore==1.0.9 + httpx==0.28.1 + httpx-sse==0.4.3 + idna==3.20 + importlib-metadata==9.0.1 + iniconfig==2.3.1 + itsdangerous==2.2.0 + jinja2==3.1.6 + jsonschema==4.26.0 + jsonschema-specifications==2025.9.1 + kiwisolver==1.5.1 + markupsafe==3.0.4 + matplotlib==3.10.9 + mcp==1.30.0 + meson==1.12.1 + multiprocess==0.70.19 + narwhals==2.27.1 + nest-asyncio==1.6.0 + netcdf4==1.7.4 + ninja==1.13.2 + numpy==2.5.4 + packaging==26.3 + pillow==12.3.0 + plotly==6.9.0 + pluggy==1.6.0 + psutil==7.2.2 + pycparser==3.11 + pydantic==2.14.1 + pydantic-core==2.50.1 + pydantic-settings==2.15.0 + pygments==2.21.0 + pyjwt==2.15.1 + pyparsing==3.3.3 + pytest==9.1.1 + python-dateutil==2.9.0.post0 + python-dotenv==1.2.4 + python-multipart==0.0.32 + referencing==0.37.0 + requests==2.34.2 + retrying==1.4.2 + rpds-py==2026.9.1 + scipy==1.18.1 + setuptools==84.0.0 + six==1.17.0 + sse-starlette==3.5.0 + starlette==1.8.0 + tabulate==0.10.0 + typing-extensions==4.16.0 + typing-inspection==0.4.4 + urllib3==2.8.0 + uvicorn==0.54.0 + werkzeug==3.1.9 + zipp==4.1.1 Ready: /home/jenkins/workspace/clubb_dash/.venv-python/bin/python ============================= test session starts ============================== platform linux -- Python 3.12.3, pytest-9.1.1, pluggy-1.6.0 rootdir: /home/jenkins/workspace/clubb_dash plugins: dash-3.4.0, anyio-4.15.1 collected 552 items dash_app/pytests/test_activity.py ......... [ 1%] dash_app/pytests/test_agent_integration.py .............. [ 4%] dash_app/pytests/test_agent_plot_actions.py ........ [ 5%] dash_app/pytests/test_agent_services.py ................................ [ 11%] ................. [ 14%] dash_app/pytests/test_agent_tab_registry.py ...... [ 15%] dash_app/pytests/test_agent_tuning.py ............ [ 17%] dash_app/pytests/test_analysis.py ..... [ 18%] dash_app/pytests/test_app_startup.py .......... [ 20%] dash_app/pytests/test_atlas.py . [ 20%] dash_app/pytests/test_bivariate_heatmap.py .. [ 21%] dash_app/pytests/test_callbacks_runs.py ............ [ 23%] dash_app/pytests/test_compile_tab_build_status.py ................. [ 26%] dash_app/pytests/test_custom_plot.py ........ [ 27%] dash_app/pytests/test_dashboard_activity_labels.py . [ 27%] dash_app/pytests/test_dashboard_lifecycle.py ... [ 28%] dash_app/pytests/test_dashboard_manager.py ...... [ 29%] dash_app/pytests/test_equations.py ... [ 30%] dash_app/pytests/test_fill_holes_viewer.py .... [ 30%] dash_app/pytests/test_jax_device.py ..................... [ 34%] dash_app/pytests/test_mcp_endpoint.py ... [ 35%] dash_app/pytests/test_misc_tab.py ... [ 35%] dash_app/pytests/test_netcdf.py ...... [ 36%] dash_app/pytests/test_output_directory_picker.py ...... [ 37%] dash_app/pytests/test_output_discovery.py ....... [ 39%] dash_app/pytests/test_pane_resize.py ... [ 39%] dash_app/pytests/test_param_disclosures.py ........ [ 41%] dash_app/pytests/test_pdf_contour_plot.py ...................... [ 45%] dash_app/pytests/test_performance_polling.py ....... [ 46%] dash_app/pytests/test_persistence.py .... [ 47%] dash_app/pytests/test_plot_case_cache.py .......... [ 48%] dash_app/pytests/test_plot_extraction.py ............................... [ 54%] [ 54%] dash_app/pytests/test_plot_grid_updates.py ..... [ 55%] dash_app/pytests/test_plot_help.py ... [ 55%] dash_app/pytests/test_plot_tasks.py .......... [ 57%] dash_app/pytests/test_plot_transitions.py ............. [ 60%] dash_app/pytests/test_profile_tab.py .............................. [ 65%] dash_app/pytests/test_profiles.py ...... [ 66%] dash_app/pytests/test_pyplotgen_export.py ...... [ 67%] dash_app/pytests/test_pyplotgen_output_handler.py . [ 67%] dash_app/pytests/test_reports_tab.py ....... [ 69%] dash_app/pytests/test_run_broker_simplification.py ..................... [ 73%] [ 73%] dash_app/pytests/test_run_callbacks_settings.py .............. [ 75%] dash_app/pytests/test_run_runtime.py .......... [ 77%] dash_app/pytests/test_runtime.py .. [ 77%] dash_app/pytests/test_runtime_logging.py ..... [ 78%] dash_app/pytests/test_runtime_loss_batches.py . [ 78%] dash_app/pytests/test_sam_3d_reference.py . [ 78%] dash_app/pytests/test_scm_override.py ...... [ 80%] dash_app/pytests/test_selected_build.py ..................... [ 83%] dash_app/pytests/test_state_persistence.py ............. [ 86%] dash_app/pytests/test_stats_selection.py ............................... [ 91%] [ 91%] dash_app/pytests/test_taylor_window_display.py ..... [ 92%] dash_app/pytests/test_tunable_config_save.py ............... [ 95%] dash_app/pytests/test_tune_callbacks_settings.py ............. [ 97%] dash_app/pytests/test_tutorial_tab.py .. [ 98%] dash_app/pytests/test_two_gaussian_model.py ...... [ 99%] dash_app/pytests/test_workspace_selection.py .... [100%] =============================== warnings summary =============================== dash_app/pytests/test_atlas.py: 49 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_atlas.py:39: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). w_variable[0, level] = w dash_app/pytests/test_atlas.py: 49 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_atlas.py:40: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). rt_variable[0, level] = rt dash_app/pytests/test_atlas.py: 49 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_atlas.py:41: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). rc_variable[0, level] = rc dash_app/pytests/test_fill_holes_viewer.py::test_analysis_reads_direct_before_after_and_hardcoded_threshold dash_app/pytests/test_fill_holes_viewer.py::test_profile_field_scale_defaults_to_log_and_can_be_linear /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_fill_holes_viewer.py:43: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). before[:] = np.array([[[2.0e-4], [8.0e-4], [1.0e-4]], [[8.0e-4], [1.2e-3], [1.6e-3]]]) dash_app/pytests/test_fill_holes_viewer.py::test_analysis_reads_direct_before_after_and_hardcoded_threshold dash_app/pytests/test_fill_holes_viewer.py::test_profile_field_scale_defaults_to_log_and_can_be_linear /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_fill_holes_viewer.py:45: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). after[:] = np.array([[[5.0e-4], [8.0e-4], [2.0e-4]], [[8.0e-4], [1.2e-3], [1.6e-3]]]) dash_app/pytests/test_pdf_contour_plot.py: 470 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_pdf_contour_plot.py:87: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). variable[:] = np.full((time_count, height_count, 1), value) dash_app/pytests/test_plot_case_cache.py::test_hydration_keeps_saved_view_and_scans_once /home/jenkins/workspace/clubb_dash/dash_app/plot_tab/case_definitions.py:35: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead legacy_str = getattr(ast, "Str", None) dash_app/pytests/test_plot_case_cache.py: 4120 warnings /home/jenkins/workspace/clubb_dash/dash_app/plot_tab/case_definitions.py:36: DeprecationWarning: ast.Str is deprecated and will be removed in Python 3.14; use ast.Constant instead if legacy_str is not None and isinstance(node, legacy_str): dash_app/pytests/test_plot_case_cache.py::test_hydration_keeps_saved_view_and_scans_once /home/jenkins/workspace/clubb_dash/dash_app/plot_tab/case_definitions.py:39: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead legacy_num = getattr(ast, "Num", None) dash_app/pytests/test_plot_case_cache.py: 4120 warnings /home/jenkins/workspace/clubb_dash/dash_app/plot_tab/case_definitions.py:40: DeprecationWarning: ast.Num is deprecated and will be removed in Python 3.14; use ast.Constant instead if legacy_num is not None and isinstance(node, legacy_num): dash_app/pytests/test_plot_extraction.py: 30 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_plot_extraction.py:35: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). field[:] = np.transpose(cube, [('time', 'zt', 'col').index(d) for d in dims]) dash_app/pytests/test_plot_extraction.py: 30 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_plot_extraction.py:39: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). ds.createVariable('lh_nl_w', 'f8', ('col', 'subcolumn', 'zt', 'time'))[:] = subcolumns.transpose(2, 3, 1, 0) dash_app/pytests/test_plot_extraction.py: 30 warnings /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_plot_extraction.py:40: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). ds.createVariable('lwp', 'f8', ('col', 'time'))[:] = cube[:, 0, :].T dash_app/pytests/test_plot_extraction.py::test_file_change_invalidates_cached_results[stats0] dash_app/pytests/test_plot_extraction.py::test_file_change_invalidates_cached_results[stats1] dash_app/pytests/test_plot_extraction.py::test_file_change_invalidates_cached_results[stats2] /home/jenkins/workspace/clubb_dash/dash_app/pytests/test_plot_extraction.py:134: DeprecationWarning: Setting the shape on a NumPy array has been deprecated in NumPy 2.5. As an alternative, you can create a new view using np.reshape (with copy=False if needed). ds.variables['field'][:] = 42.0 -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html - generated xml file: /home/jenkins/workspace/clubb_dash/output/tests/pytests/dash.xml - ============================= slowest 10 durations ============================= 1.55s call dash_app/pytests/test_plot_tasks.py::test_browser_updates_selection_immediately_and_ignores_stale_results 1.23s call dash_app/pytests/test_agent_services.py::test_mcp_stdio_discovery_and_structured_error_round_trip 1.00s call dash_app/pytests/test_agent_plot_actions.py::test_profile_png_renderer_writes_a_real_png 0.84s call dash_app/pytests/test_plot_case_cache.py::test_background_worker_snapshot_resolves_in_main_process 0.75s call dash_app/pytests/test_plot_tasks.py::test_real_worker_inspects_missing_directory_and_serializes_no_update 0.67s call dash_app/pytests/test_agent_services.py::test_mcp_exposes_closed_world_typed_tools_and_annotations 0.42s call dash_app/pytests/test_pdf_contour_plot.py::test_pdf_compare_mode_builds_shared_axis_directory_panels 0.42s call dash_app/pytests/test_run_broker_simplification.py::test_default_new_scenario_keeps_four_reservations_and_restarts_finished_case 0.40s call dash_app/pytests/test_netcdf.py::test_shared_netcdf_consumers_import_as_dashboard_packages 0.36s call dash_app/pytests/test_stats_selection.py::test_checkbox_parents_propagate_and_cancel_preserves_selection ===================== 552 passed, 8956 warnings in 25.47s ====================== [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // stage [Pipeline] stage [Pipeline] { (Declarative: Post Actions) [Pipeline] junit Recording test results [Checks API] No suitable checks publisher found. [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // withEnv [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline Finished: SUCCESS