Skip to content

Console Output

+ source /etc/profile.d/larson-group.sh
++ export GIT_EDITOR=vi
++ GIT_EDITOR=vi
++ export SVN_EDITOR=vi
++ SVN_EDITOR=vi
++ export OMP_STACKSIZE=1048579
++ OMP_STACKSIZE=1048579
++ export LMOD_ROOT=/opt/lmod/
++ LMOD_ROOT=/opt/lmod/
++ source /opt/lmod//lmod/lmod/init/bash
+++ '[' -z '' ']'
+++ case "$-" in
+++ __lmod_vx=x
+++ '[' -n x ']'
+++ set +x
Shell debugging temporarily silenced: export LMOD_SH_DBG_ON=1 for this output (/usr/local/spack/opt/spack/linux-pop22-cascadelake/gcc-12.2.0/lmod-8.7.37-bi3kyxcdrfgw3y7vv2k7c5rjxg75qzju/lmod/lmod/init/bash)
Shell debugging restarted
+++ unset __lmod_vx
+++ find /usr/local/spack/share/spack/lmod/linux-pop22-x86_64/Core -print -quit
++ export MODULEPATH=/usr/local/spack/share/spack/lmod/linux-pop22-x86_64/Core
++ MODULEPATH=/usr/local/spack/share/spack/lmod/linux-pop22-x86_64/Core
+ module load gcc netcdf-fortran
+ '[' -z '' ']'
+ case "$-" in
+ __lmod_sh_dbg=x
+ '[' -n x ']'
+ set +x
Shell debugging temporarily silenced: export LMOD_SH_DBG_ON=1 for Lmod's output
Lmod Warning:
-------------------------------------------------------------------------------
The following dependent module(s) are not currently loaded:
gcc-runtime/13.1.0-gzedt3f (required by: mpich/4.2.1, hdf5/1.14.3-42x3zrv,
netcdf-c/4.9.2, netcdf-fortran/4.5.3)
-------------------------------------------------------------------------------



Shell debugging restarted
+ unset __lmod_sh_dbg
+ return 0
+ bash clubb_python_api/run_pytests.sh -v
============================= test session starts ==============================
platform linux -- Python 3.10.13, pytest-9.0.2, pluggy-1.6.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /home/jenkins/workspace/clubb_python_test/clubb_python_api
collecting ... collected 224 items

tests/test_advance_core_subs.py::TestComputeSigmaSqdW::test_basic_call PASSED [  0%]
tests/test_advance_core_subs.py::TestComputeSigmaSqdW::test_sigma_bounded PASSED [  0%]
tests/test_advance_core_subs.py::TestComputeSigmaSqdW::test_zero_variance PASSED [  1%]
tests/test_advance_core_subs.py::TestFillHolesVertical::test_no_holes PASSED [  1%]
tests/test_advance_core_subs.py::TestFillHolesVertical::test_fills_negative PASSED [  2%]
tests/test_advance_core_subs.py::TestFillHolesWp2FromHorzTke::test_fills_wp2_and_conserves_tke PASSED [  2%]
tests/test_advance_core_subs.py::TestClipRcm::test_rcm_clipped_to_rtm PASSED [  3%]
tests/test_advance_core_subs.py::TestClipRcm::test_negative_rcm_unchanged PASSED [  3%]
tests/test_advance_core_subs.py::TestClipRcm::test_valid_rcm_unchanged PASSED [  4%]
tests/test_advance_core_subs.py::TestClipCovar::test_basic_call PASSED   [  4%]
tests/test_advance_core_subs.py::TestClipCovar::test_clips_excess_covariance PASSED [  4%]
tests/test_advance_core_subs.py::TestClipSkewness::test_clip_skewness_limits_wp3 PASSED [  5%]
tests/test_advance_core_subs.py::TestClipVariance::test_clips_to_threshold PASSED [  5%]
tests/test_advance_core_subs.py::TestClipVariance::test_above_threshold_unchanged PASSED [  6%]
tests/test_advance_core_subs.py::TestBruntVaisala::test_basic_call PASSED [  6%]
tests/test_advance_core_subs.py::TestBruntVaisala::test_stable_positive_n2 PASSED [  7%]
tests/test_advance_core_subs.py::TestCxFncRichardson::test_basic_call PASSED [  7%]
tests/test_advance_core_subs.py::TestStabilityCorrection::test_basic_call PASSED [  8%]
tests/test_advance_core_subs.py::TestStabilityCorrection::test_nonnegative PASSED [  8%]
tests/test_advance_core_subs.py::TestClipCovarsDenom::test_basic_call PASSED [  8%]
tests/test_argument_contract_audit.py::test_argument_order_checker_finds_no_issues PASSED [  9%]
tests/test_call_tree_advance_core.py::test_advance_clubb_core_returns_finite_arrays PASSED [  9%]
tests/test_call_tree_advance_core.py::test_advance_clubb_core_repeatability_for_identical_inputs PASSED [ 10%]
tests/test_call_tree_advance_windm_edsclrm.py::test_advance_windm_edsclrm_returns_finite_arrays PASSED [ 10%]
tests/test_call_tree_advance_windm_edsclrm.py::test_advance_windm_edsclrm_updates_match_return_values PASSED [ 11%]
tests/test_call_tree_advance_wp2_wp3.py::test_advance_wp2_wp3_returns_finite_arrays PASSED [ 11%]
tests/test_call_tree_advance_wp2_wp3.py::test_advance_wp2_wp3_updates_match_return_values PASSED [ 12%]
tests/test_call_tree_advance_xm_wpxp.py::test_advance_xm_wpxp_returns_finite_arrays PASSED [ 12%]
tests/test_call_tree_advance_xm_wpxp.py::test_advance_xm_wpxp_updates_match_return_values PASSED [ 12%]
tests/test_call_tree_advance_xp2_xpyp.py::test_advance_xp2_xpyp_returns_finite_arrays PASSED [ 13%]
tests/test_call_tree_advance_xp2_xpyp.py::test_advance_xp2_xpyp_updates_match_return_values PASSED [ 13%]
tests/test_call_tree_advance_xp2_xpyp.py::test_update_xp2_mc_returns_finite_arrays PASSED [ 14%]
tests/test_call_tree_advance_xp3.py::test_advance_xp3_returns_finite_arrays PASSED [ 14%]
tests/test_call_tree_advance_xp3.py::test_advance_xp3_updates_match_return_values PASSED [ 15%]
tests/test_call_tree_bicgstab_solvers.py::test_penta_bicgstab_solve_solves_diagonal_system PASSED [ 15%]
tests/test_call_tree_calc_roots.py::test_quadratic_solve_known_roots PASSED [ 16%]
tests/test_call_tree_calc_roots.py::test_cubic_solve_known_roots PASSED  [ 16%]
tests/test_call_tree_corr_varnce_module.py::test_assert_corr_symmetric_accepts_identity_and_flags_bad_matrix PASSED [ 16%]
tests/test_call_tree_diagnose_correlations_module.py::test_diagnose_correlations_preserves_identity_matrix PASSED [ 17%]
tests/test_call_tree_diagnose_correlations_module.py::test_calc_cholesky_corr_mtx_approx_handles_identity_matrix PASSED [ 17%]
tests/test_call_tree_error_code.py::test_initialize_error_headers_callable PASSED [ 18%]
tests/test_call_tree_file_functions.py::test_file_read_1d_reads_flat_rows PASSED [ 18%]
tests/test_call_tree_index_mapping.py::test_pdf_and_hydrometeor_index_maps_are_consistent PASSED [ 19%]
tests/test_call_tree_index_mapping.py::test_rx_nx_index_maps_are_consistent PASSED [ 19%]
tests/test_call_tree_index_mapping.py::test_mvr_hm_max_matches_fortran_constants PASSED [ 20%]
tests/test_call_tree_interpolation.py::test_mono_cubic_interp_linear_profile PASSED [ 20%]
tests/test_call_tree_interpolation.py::test_zlinterp_fnc_zero_outside_domain PASSED [ 20%]
tests/test_call_tree_lapack_interfaces.py::test_lapack_gtsv_and_gtsvx_solve_diagonal_system PASSED [ 21%]
tests/test_call_tree_lapack_interfaces.py::test_lapack_gbsv_and_gbsvx_solve_diagonal_band_system PASSED [ 21%]
tests/test_call_tree_lapack_interfaces.py::test_lapack_factorization_and_eigen_helpers_work_on_spd_matrix PASSED [ 22%]
tests/test_call_tree_lapack_wrap.py::test_lapack_tridiag_wrappers_solve_diagonal_system PASSED [ 22%]
tests/test_call_tree_lapack_wrap.py::test_lapack_band_wrappers_solve_diagonal_system PASSED [ 23%]
tests/test_call_tree_luhar.py::test_calc_luhar_params_matches_formula PASSED [ 23%]
tests/test_call_tree_luhar.py::test_close_luhar_pdf_matches_formula PASSED [ 24%]
tests/test_call_tree_luhar.py::test_adg1_w_closure_matches_formula PASSED [ 24%]
tests/test_call_tree_luhar.py::test_adg2_pdf_driver_column_consistency PASSED [ 25%]
tests/test_call_tree_luhar.py::test_adg1_pdf_driver_column_consistency PASSED [ 25%]
tests/test_call_tree_luhar.py::test_luhar_3d_pdf_driver_column_consistency PASSED [ 25%]
tests/test_call_tree_ly93.py::test_calc_params_ly93_matches_formula PASSED [ 26%]
tests/test_call_tree_ly93.py::test_ly93_driver_matches_formula_for_low_skewness PASSED [ 26%]
tests/test_call_tree_matrix_operations.py::test_mirror_lower_triangular_matrix_reflects_lower_triangle PASSED [ 27%]
tests/test_call_tree_matrix_operations.py::test_cholesky_factor_reconstructs_spd_matrix PASSED [ 27%]
tests/test_call_tree_matrix_solver_wrapper.py::test_band_solve_multiple_rhs_solves_diagonal_system PASSED [ 28%]
tests/test_call_tree_matrix_solver_wrapper.py::test_tridiag_solve_single_rhs_multiple_lhs_solves_diagonal_system PASSED [ 28%]
tests/test_call_tree_matrix_solver_wrapper.py::test_tridiag_solve_multiple_rhs_solves_diagonal_system PASSED [ 29%]
tests/test_call_tree_meta.py::test_call_tree_api_bindings_exist PASSED   [ 29%]
tests/test_call_tree_meta.py::test_call_tree_api_bindings_are_tested PASSED [ 29%]
tests/test_call_tree_mixing_length.py::test_zero_pdf_implicit_coefs_terms_resets_state PASSED [ 30%]
tests/test_call_tree_mixing_length.py::test_diagnose_lscale_from_tau_basic PASSED [ 30%]
tests/test_call_tree_mixing_length.py::test_calc_lscale_directly_basic PASSED [ 31%]
tests/test_call_tree_mono_flux.py::test_calc_turb_adv_range_basic_bounds PASSED [ 31%]
tests/test_call_tree_mono_flux.py::test_monotonic_turbulent_flux_limit_preserves_zero_flux_state PASSED [ 32%]
tests/test_call_tree_nc_ncn_eqns.py::test_nc_in_cloud_to_ncnm_returns_nc_in_cloud_for_clear_or_constant_case PASSED [ 32%]
tests/test_call_tree_new_hybrid_pdf.py::test_calculate_w_params_matches_formula_branches PASSED [ 33%]
tests/test_call_tree_new_hybrid_pdf.py::test_calculate_responder_params_matches_formula_branches PASSED [ 33%]
tests/test_call_tree_new_hybrid_pdf.py::test_calculate_coef_wp4_implicit_matches_formula PASSED [ 33%]
tests/test_call_tree_new_hybrid_pdf.py::test_calc_coef_wp2xp_implicit_matches_formula_branches PASSED [ 34%]
tests/test_call_tree_new_hybrid_pdf.py::test_calc_coefs_wpxp2_semiimpl_matches_formula_branches PASSED [ 34%]
tests/test_call_tree_new_pdf.py::test_calc_setter_var_params_matches_formula PASSED [ 35%]
tests/test_call_tree_new_pdf.py::test_calc_responder_params_matches_formula_branches PASSED [ 35%]
tests/test_call_tree_new_pdf.py::test_calc_limits_f_x_responder_matches_root_selection_logic PASSED [ 36%]
tests/test_call_tree_new_pdf.py::test_calc_coef_wp4_implicit_matches_formula PASSED [ 36%]
tests/test_call_tree_new_pdf.py::test_calc_coef_wpxp2_implicit_matches_formula_branches PASSED [ 37%]
tests/test_call_tree_new_pdf.py::test_calc_coefs_wp2xp_semiimpl_matches_formula_branches PASSED [ 37%]
tests/test_call_tree_new_pdf.py::test_calc_coefs_wpxpyp_semiimpl_matches_formula_branches PASSED [ 37%]
tests/test_call_tree_new_pdf.py::test_new_pdf_driver_column_consistency PASSED [ 38%]
tests/test_call_tree_new_pdf.py::test_new_hybrid_pdf_driver_column_consistency PASSED [ 38%]
tests/test_call_tree_new_tsdadg.py::test_calc_l_x_skx_fnc_sign_branching_matches_formula PASSED [ 39%]
tests/test_call_tree_new_tsdadg.py::test_calc_setter_parameters_tsdadg_matches_formula PASSED [ 39%]
tests/test_call_tree_new_tsdadg.py::test_tsdadg_pdf_driver_column_consistency PASSED [ 40%]
tests/test_call_tree_numerical_check.py::test_calculate_spurious_source_matches_formula PASSED [ 40%]
tests/test_call_tree_numerical_check.py::test_sfc_varnce_check_sets_error_for_nan PASSED [ 41%]
tests/test_call_tree_numerical_check.py::test_parameterization_check_sets_error_for_nan PASSED [ 41%]
tests/test_call_tree_numerical_check.py::test_pdf_closure_check_sets_error_for_nan PASSED [ 41%]
tests/test_call_tree_numerical_check.py::test_length_check_sets_error_for_nan PASSED [ 42%]
tests/test_call_tree_pdf_closure.py::test_calc_wp4_pdf_matches_formula PASSED [ 42%]
tests/test_call_tree_pdf_closure.py::test_calc_wp2xp_pdf_matches_formula PASSED [ 43%]
tests/test_call_tree_pdf_closure.py::test_calc_wpxp2_pdf_matches_formula PASSED [ 43%]
tests/test_call_tree_pdf_closure.py::test_calc_wpxpyp_pdf_matches_formula PASSED [ 44%]
tests/test_call_tree_pdf_closure.py::test_calc_w_up_in_cloud_zero_variance_component_split PASSED [ 44%]
tests/test_call_tree_pdf_closure_driver.py::test_pdf_closure_driver_returns_finite_arrays PASSED [ 45%]
tests/test_call_tree_pdf_closure_driver.py::test_pdf_closure_driver_is_repeatable PASSED [ 45%]
tests/test_call_tree_pdf_closure_driver.py::test_pdf_closure_driver_allows_zero_dims PASSED [ 45%]
tests/test_call_tree_pdf_closure_driver.py::test_pdf_closure_driver_can_return_pdf_udt_state PASSED [ 46%]
tests/test_call_tree_pdf_utils.py::test_smooth_corr_quotient_bounds PASSED [ 46%]
tests/test_call_tree_pdf_utils.py::test_calc_comp_corrs_binormal_basic PASSED [ 47%]
tests/test_call_tree_pdf_utils.py::test_lognormal_conversion_helpers_match_formulas PASSED [ 47%]
tests/test_call_tree_pdf_utils.py::test_corr_nn2n_family_matches_expected_formulas PASSED [ 48%]
tests/test_call_tree_pdf_utils.py::test_binormal_and_chi_eta_helpers_match_formulas PASSED [ 48%]
tests/test_call_tree_penta_lu_solvers.py::test_penta_lu_solve_single_rhs_multiple_lhs_solves_diagonal_system PASSED [ 49%]
tests/test_call_tree_penta_lu_solvers.py::test_penta_lu_solve_multiple_rhs_lhs_solves_diagonal_system PASSED [ 49%]
tests/test_call_tree_pos_definite_module.py::test_pos_definite_adj_preserves_nonnegative_state_with_zero_flux PASSED [ 50%]
tests/test_call_tree_precipitation_fraction.py::test_precip_fraction_returns_zero_when_no_hydrometeors PASSED [ 50%]
tests/test_call_tree_remap.py::test_remap_vals_to_target_identity_zt PASSED [ 50%]
tests/test_call_tree_remap.py::test_remap_vals_to_target_identity_zm PASSED [ 51%]
tests/test_call_tree_saturation.py::test_sat_mixrat_ice_returns_finite_positive_values PASSED [ 51%]
tests/test_call_tree_sfc_varnce.py::test_calc_sfc_varnce_basic_finite_outputs PASSED [ 52%]
tests/test_call_tree_skx.py::test_skx_func_matches_xp3_over_xp2_to_three_halves_when_xtol_zero PASSED [ 52%]
tests/test_call_tree_skx.py::test_lg_2005_ansatz_zero_flux_gives_zero_skewness PASSED [ 53%]
tests/test_call_tree_skx.py::test_xp3_lg_2005_ansatz_matches_two_step_reconstruction PASSED [ 53%]
tests/test_call_tree_splat.py::test_smooth_heaviside_peskin_limits_and_center PASSED [ 54%]
tests/test_call_tree_splat.py::test_lscale_width_vert_avg_constant_profile PASSED [ 54%]
tests/test_call_tree_splat.py::test_wp2_term_splat_lhs_zero_bv PASSED    [ 54%]
tests/test_call_tree_splat.py::test_wp2_term_splat_lhs_constant_bv PASSED [ 55%]
tests/test_call_tree_splat.py::test_wp3_term_splat_lhs_constant_bv PASSED [ 55%]
tests/test_call_tree_sponge.py::test_sponge_damp_xm_simple_midpoint_case PASSED [ 56%]
tests/test_call_tree_sponge.py::test_sponge_damp_xp2_respects_floor PASSED [ 56%]
tests/test_call_tree_sponge.py::test_sponge_damp_xp3_full_damping_to_zero PASSED [ 57%]
tests/test_call_tree_stats_accumulate.py::test_stats_accumulate_smoke PASSED [ 57%]
tests/test_call_tree_transport.py::test_compute_current_date_one_day_and_hour PASSED [ 58%]
tests/test_call_tree_transport.py::test_set_lscale_max_behavior PASSED   [ 58%]
tests/test_call_tree_transport.py::test_term_ma_zt_lhs_zero_w PASSED     [ 58%]
tests/test_call_tree_transport.py::test_term_ma_zm_lhs_zero_w PASSED     [ 59%]
tests/test_call_tree_transport.py::test_diffusion_zt_lhs_zero_coeffs PASSED [ 59%]
tests/test_call_tree_transport.py::test_diffusion_zm_lhs_zero_coeffs PASSED [ 60%]
tests/test_call_tree_tridiag_lu_solvers.py::test_tridiag_lu_solve_single_rhs_lhs_solves_diagonal_system PASSED [ 60%]
tests/test_call_tree_tridiag_lu_solvers.py::test_tridiag_lu_solve_single_rhs_multiple_lhs_solves_diagonal_system PASSED [ 61%]
tests/test_call_tree_tridiag_lu_solvers.py::test_tridiag_lu_solve_multiple_rhs_lhs_solves_diagonal_system PASSED [ 61%]
tests/test_call_tree_turbulent_adv_pdf.py::test_turbulent_adv_pdf_zero_inputs_return_zero_outputs PASSED [ 62%]
tests/test_call_tree_utils.py::test_julian2gregorian_date_known PASSED   [ 62%]
tests/test_call_tree_utils.py::test_gregorian2julian_day_and_leap_year_known PASSED [ 62%]
tests/test_call_tree_utils.py::test_lin_interpolate_two_points_midpoint PASSED [ 63%]
tests/test_call_tree_utils.py::test_calculate_thvm_basic PASSED          [ 63%]
tests/test_call_tree_utils.py::test_calc_ri_zm_matches_formula PASSED    [ 64%]
tests/test_call_tree_utils.py::test_vertical_avg_and_integral PASSED     [ 64%]
tests/test_call_tree_utils.py::test_zm2zt2zm_preserves_constant_field PASSED [ 65%]
tests/test_call_tree_utils.py::test_zt2zm2zt_preserves_constant_field PASSED [ 65%]
tests/test_call_tree_utils.py::test_ddzm_matches_grid_spacing_formula PASSED [ 66%]
tests/test_call_tree_utils.py::test_ddzt_matches_grid_spacing_formula PASSED [ 66%]
tests/test_call_tree_utils.py::test_pvertinterp_hits_exact_level PASSED  [ 66%]
tests/test_call_tree_utils.py::test_smooth_max_supports_scalar_array_and_array_scalar PASSED [ 67%]
tests/test_call_tree_utils.py::test_smooth_min_supports_scalar_array_and_array_scalar PASSED [ 67%]
tests/test_call_tree_utils.py::test_read_grid_heights_reads_momentum_grid_file PASSED [ 68%]
tests/test_call_tree_utils.py::test_setup_grid_heights_updates_stored_grid PASSED [ 68%]
tests/test_call_tree_utils.py::test_calc_xpwp_matches_centered_difference_formula PASSED [ 69%]
tests/test_hello_world.py::TestThlm2TInK1D::test_basic PASSED            [ 69%]
tests/test_hello_world.py::TestThlm2TInK1D::test_varying_profiles PASSED [ 70%]
tests/test_hello_world.py::TestThlm2TInK1D::test_zero_rcm PASSED         [ 70%]
tests/test_hello_world.py::TestThlm2TInK1D::test_single_element PASSED   [ 70%]
tests/test_hello_world.py::TestThlm2TInK1D::test_large_array PASSED      [ 71%]
tests/test_hello_world.py::TestThlm2TInK1D::test_constants_match PASSED  [ 71%]
tests/test_hello_world.py::TestThlm2TInK1D::test_physical_reasonableness PASSED [ 72%]
tests/test_init_pressure.py::TestInitPressure::test_pressure_decreases_with_height PASSED [ 72%]
tests/test_init_pressure.py::TestInitPressure::test_exner_decreases_with_height PASSED [ 73%]
tests/test_init_pressure.py::TestInitPressure::test_physically_reasonable_values PASSED [ 73%]
tests/test_init_pressure.py::TestInitPressure::test_output_shapes PASSED [ 74%]
tests/test_init_pressure.py::TestInitPressure::test_higher_surface_pressure PASSED [ 74%]
tests/test_init_pressure.py::TestInitPressure::test_multi_column PASSED  [ 75%]
tests/test_init_sequence.py::TestConfigFlags::test_default_flags_returns_namedtuple PASSED [ 75%]
tests/test_init_sequence.py::TestConfigFlags::test_default_integer_flags_positive PASSED [ 75%]
tests/test_init_sequence.py::TestConfigFlags::test_default_logical_flags_are_bool PASSED [ 76%]
tests/test_init_sequence.py::TestConfigFlags::test_known_defaults PASSED [ 76%]
tests/test_init_sequence.py::TestConfigFlags::test_init_config_flags_roundtrip PASSED [ 77%]
tests/test_init_sequence.py::TestConfigFlags::test_modified_flags PASSED [ 77%]
tests/test_init_sequence.py::TestErrInfo::test_init_err_info PASSED      [ 78%]
tests/test_init_sequence.py::TestSetupGrid::test_evenly_spaced_ascending PASSED [ 78%]
tests/test_init_sequence.py::TestSetupGrid::test_multi_column_grid PASSED [ 79%]
tests/test_init_sequence.py::TestClubbParams::test_default_params_shape PASSED [ 79%]
tests/test_init_sequence.py::TestClubbParams::test_default_params_finite PASSED [ 79%]
tests/test_init_sequence.py::TestClubbParams::test_multi_column_params PASSED [ 80%]
tests/test_init_sequence.py::TestCalcDerrivedParams::test_produces_finite_outputs PASSED [ 80%]
tests/test_init_sequence.py::TestPdfInit::test_init_pdf_params PASSED    [ 81%]
tests/test_init_sequence.py::TestPdfInit::test_init_pdf_params_zm PASSED [ 81%]
tests/test_init_sequence.py::TestPdfInit::test_init_pdf_implicit PASSED  [ 82%]
tests/test_init_sequence.py::TestPdfInit::test_init_pdf_implicit_with_scalars PASSED [ 82%]
tests/test_init_sequence.py::TestPdfInit::test_init_pdf_implicit_coefs_terms_alias PASSED [ 83%]
tests/test_init_sequence.py::TestFullInitSequence::test_full_init_no_errors PASSED [ 83%]
tests/test_python_port_api_coverage.py::test_full_clubb_core_cross_module_api_coverage PASSED [ 83%]
tests/test_stats.py::TestStatsConfig::test_disabled_by_default PASSED    [ 84%]
tests/test_stats.py::TestStatsConfig::test_init_enables_stats PASSED     [ 84%]
tests/test_stats.py::TestStatsConfig::test_config_fields PASSED          [ 85%]
tests/test_stats.py::TestStatsConfig::test_sampling_params PASSED        [ 85%]
tests/test_stats.py::TestStatsConfig::test_finalize_disables PASSED      [ 86%]
tests/test_stats.py::TestVarMeta::test_first_var_is_thlm PASSED          [ 86%]
tests/test_stats.py::TestVarMeta::test_zm_var PASSED                     [ 87%]
tests/test_stats.py::TestVarMeta::test_sfc_var PASSED                    [ 87%]
tests/test_stats.py::TestVarMeta::test_var_long_name PASSED              [ 87%]
tests/test_stats.py::TestVarOnStatsList::test_registered_var PASSED      [ 88%]
tests/test_stats.py::TestVarOnStatsList::test_unregistered_var PASSED    [ 88%]
tests/test_stats.py::TestDataRoundtrip::test_initial_buffer_zeros PASSED [ 89%]
tests/test_stats.py::TestDataRoundtrip::test_push_pull_roundtrip PASSED  [ 89%]
tests/test_stats.py::TestTimestepAndUpdate::test_begin_timestep_sets_l_sample PASSED [ 90%]
tests/test_stats.py::TestTimestepAndUpdate::test_update_scalar PASSED    [ 90%]
tests/test_stats.py::TestTimestepAndUpdate::test_update_1d PASSED        [ 91%]
tests/test_stats.py::TestTimestepAndUpdate::test_update_2d PASSED        [ 91%]
tests/test_stats.py::TestNetcdfMetadata::test_init_writes_param_names_and_values FAILED [ 91%]
tests/test_udt_return_contract.py::test_udt_arg_wrapper_return_manifest_matches_source PASSED [ 92%]
tests/test_udt_return_contract.py::test_noarg_udt_return_wrappers_match_source PASSED [ 92%]
tests/test_udt_return_contract.py::test_full_return_patterns_match_source PASSED [ 93%]
tests/test_udt_return_contract.py::test_source_order_manifest_matches_wrapper_slices PASSED [ 93%]
tests/test_udt_roundtrip.py::TestGrid::test_single_column_roundtrip PASSED [ 94%]
tests/test_udt_roundtrip.py::TestGrid::test_multi_column_roundtrip PASSED [ 94%]
tests/test_udt_roundtrip.py::TestGrid::test_overwrite PASSED             [ 95%]
tests/test_udt_roundtrip.py::TestSclrIdx::test_roundtrip PASSED          [ 95%]
tests/test_udt_roundtrip.py::TestSclrIdx::test_zero_values PASSED        [ 95%]
tests/test_udt_roundtrip.py::TestSclrIdx::test_overwrite PASSED          [ 96%]
tests/test_udt_roundtrip.py::TestNuVertResDep::test_roundtrip PASSED     [ 96%]
tests/test_udt_roundtrip.py::TestNuVertResDep::test_overwrite_different_size PASSED [ 97%]
tests/test_udt_roundtrip.py::TestPdfParams::test_init_pull_zeros PASSED  [ 97%]
tests/test_udt_roundtrip.py::TestPdfParams::test_roundtrip PASSED        [ 98%]
tests/test_udt_roundtrip.py::TestPdfParams::test_zm_roundtrip PASSED     [ 98%]
tests/test_udt_roundtrip.py::TestImplicitCoefs::test_init_pull_zeros_no_sclr PASSED [ 99%]
tests/test_udt_roundtrip.py::TestImplicitCoefs::test_2d_roundtrip PASSED [ 99%]
tests/test_udt_roundtrip.py::TestImplicitCoefs::test_3d_roundtrip PASSED [100%]

=================================== FAILURES ===================================
__________ TestNetcdfMetadata.test_init_writes_param_names_and_values __________

self = <test_stats.TestNetcdfMetadata object at 0x78246ddf87c0>
tmp_path = PosixPath('/tmp/pytest-of-jenkins/pytest-4/test_init_writes_param_names_a0')

    def test_init_writes_param_names_and_values(self, tmp_path):
        """Stats init should write CLUBB parameter names and values to output."""
        init_err_info(NCOL)
        err_info = ErrInfo(ngrdcol=NCOL)
        zt = np.linspace(50.0, 250.0, NZT)
        zm = np.linspace(0.0, 250.0, NZM)
        output_path = tmp_path / "stats_with_params.nc"
        clubb_params = init_clubb_params(NCOL, iunit=10, filename="")
        init_stats(
            registry_path=REGISTRY,
            output_path=str(output_path),
            ncol=NCOL,
            stats_tsamp=TSAMP,
            stats_tout=TOUT,
            dt_main=DT,
            day_in=1,
            month_in=1,
            year_in=2000,
            time_initial=0.0,
            nzt=NZT,
            zt=zt,
            nzm=NZM,
            zm=zm,
            sclr_dim=0,
            edsclr_dim=0,
            clubb_params=clubb_params,
            param_names=PARAM_NAMES,
            err_info=err_info,
        )
        finalize_stats(err_info=err_info)
    
        with Dataset(output_path) as ds:
            assert "param_name" in ds.variables
            assert "clubb_params" in ds.variables
    
            raw_names = np.ma.filled(ds.variables["param_name"][:], b" ")
            decoded_names = [b"".join(row).decode("ascii").strip() for row in raw_names]
>           assert decoded_names == PARAM_NAMES
E           AssertionError: assert ['C', 'C', 'C...'C', 'C', ...] == ['C1', 'C1b',...C2rtthl', ...]
E             
E             At index 0 diff: 'C' != 'C1'
E             
E             Full diff:
E               [
E             -     'C1',
E             ?       -
E             +     'C',
E             -     'C1b',
E             -     'C1c',
E             -     'C2rt',
E             -     'C2thl',
E             -     'C2rtthl',
E             -     'C4',
E             ?       -
E             +     'C',
E             -     'C_uu_shr',
E             -     'C_uu_buoy',
E             -     'C6rt',
E             -     'C6rtb',
E             -     'C6rtc',
E             -     'C6thl',
E             -     'C6thlb',
E             -     'C6thlc',
E             -     'C7',
E             ?       -
E             +     'C',
E             -     'C7b',
E             -     'C7c',
E             -     'C8',
E             ?       -
E             +     'C',
E             -     'C8b',
E             ?       --
E             +     'C',
E             -     'C10',
E             ?       --
E             +     'C',
E             -     'C11',
E             ?       --
E             +     'C',
E             -     'C11b',
E             -     'C11c',
E             -     'C12',
E             ?       --
E             +     'C',
E             -     'C13',
E             ?       --
E             +     'C',
E             -     'C14',
E             ?       --
E             +     'C',
E             -     'C_wp2_pr_dfsn',
E             -     'C_wp3_pr_tp',
E             -     'C_wp3_pr_turb',
E             -     'C_wp3_pr_dfsn',
E             -     'C_wp2_splat',
E             -     'C6rt_Lscale0',
E             -     'C6thl_Lscale0',
E             -     'C7_Lscale0',
E             -     'wpxp_L_thresh',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'w',
E             -     'c_K',
E             ?       --
E             +     'c',
E             -     'c_K1',
E             ?       ---
E             +     'c',
E             -     'nu1',
E             ?       --
E             +     'n',
E             -     'c_K2',
E             ?       ---
E             +     'c',
E             -     'nu2',
E             ?       --
E             +     'n',
E             -     'c_K6',
E             ?       ---
E             +     'c',
E             -     'nu6',
E             ?       --
E             +     'n',
E             -     'c_K8',
E             ?       ---
E             +     'c',
E             -     'nu8',
E             ?       --
E             +     'n',
E             -     'c_K9',
E             ?       ---
E             +     'c',
E             -     'nu9',
E             ?       --
E             +     'n',
E             -     'nu10',
E             ?       ---
E             +     'n',
E             -     'c_K_hm',
E             ?       -----
E             +     'c',
E             -     'c_K_hmb',
E             -     'K_hm_min_coef',
E             +     'c',
E             +     'K',
E             -     'nu_hm',
E             ?       ----
E             +     'n',
E             -     'slope_coef_spread_DG_means_w',
E             -     'pdf_component_stdev_factor_w',
E             -     'coef_spread_DG_means_rt',
E             -     'coef_spread_DG_means_thl',
E             -     'gamma_coef',
E             -     'gamma_coefb',
E             -     'gamma_coefc',
E             +     's',
E             +     'p',
E             +     'c',
E             +     'c',
E             +     'g',
E             +     'g',
E             +     'g',
E             -     'mu',
E             ?       -
E             +     'm',
E             -     'beta',
E             ?       ---
E             +     'b',
E             +     'l',
E             +     'o',
E             +     'z',
E             -     'lmin_coef',
E             -     'omicron',
E             -     'zeta_vrnce_rat',
E             -     'upsilon_precip_frac_rat',
E             -     'lambda0_stability_coef',
E             -     'mult_coef',
E             -     'taumin',
E             ?      -- ---
E             +     'u',
E             +     'l',
E             -     'taumax',
E             ?      --- --
E             +     'm',
E             -     'Lscale_mu_coef',
E             -     'Lscale_pert_coef',
E             -     'alpha_corr',
E             -     'Skw_denom_coef',
E             +     't',
E             +     't',
E             +     'L',
E             +     'L',
E             +     'a',
E             +     'S',
E             -     'c_K10',
E             ?       ----
E             +     'c',
E             -     'c_K10h',
E             ?       -----
E             +     'c',
E             +     't',
E             +     't',
E             +     'u',
E             +     'S',
E             -     'thlp2_rad_coef',
E             -     'thlp2_rad_cloud_frac_thresh',
E             -     'up2_sfc_coef',
E             -     'Skw_max_mag',
E             -     'C_invrs_tau_bkgnd',
E             -     'C_invrs_tau_sfc',
E             -     'C_invrs_tau_shear',
E             -     'C_invrs_tau_N2',
E             -     'C_invrs_tau_N2_wp2',
E             -     'C_invrs_tau_N2_xp2',
E             -     'C_invrs_tau_N2_wpxp',
E             -     'C_invrs_tau_N2_clear_wp3',
E             -     'C_invrs_tau_wpxp_Ri',
E             -     'C_invrs_tau_wpxp_N2_thresh',
E             -     'xp3_coef_base',
E             -     'xp3_coef_slope',
E             -     'altitude_threshold',
E             -     'rtp2_clip_coef',
E             -     'Cx_min',
E             ?       -----
E             +     'C',
E             -     'Cx_max',
E             ?       -----
E             +     'C',
E             -     'Richardson_num_min',
E             -     'Richardson_num_max',
E             -     'a3_coef_min',
E             -     'a_const',
E             -     'bv_efold',
E             -     'wpxp_Ri_exp',
E             -     'z_displace',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'C',
E             +     'x',
E             +     'x',
E             +     'a',
E             +     'r',
E             +     'C',
E             +     'C',
E             +     'R',
E             +     'R',
E             +     'a',
E             +     'a',
E             +     'b',
E             +     'w',
E             +     'z',
E               ]

tests/test_stats.py:266: AssertionError
=========================== short test summary info ============================
FAILED tests/test_stats.py::TestNetcdfMetadata::test_init_writes_param_names_and_values - AssertionError: assert ['C', 'C', 'C...'C', 'C', ...] == ['C1', 'C1b',...C2rtthl', ...]
  
  At index 0 diff: 'C' != 'C1'
  
  Full diff:
    [
  -     'C1',
  ?       -
  +     'C',
  -     'C1b',
  -     'C1c',
  -     'C2rt',
  -     'C2thl',
  -     'C2rtthl',
  -     'C4',
  ?       -
  +     'C',
  -     'C_uu_shr',
  -     'C_uu_buoy',
  -     'C6rt',
  -     'C6rtb',
  -     'C6rtc',
  -     'C6thl',
  -     'C6thlb',
  -     'C6thlc',
  -     'C7',
  ?       -
  +     'C',
  -     'C7b',
  -     'C7c',
  -     'C8',
  ?       -
  +     'C',
  -     'C8b',
  ?       --
  +     'C',
  -     'C10',
  ?       --
  +     'C',
  -     'C11',
  ?       --
  +     'C',
  -     'C11b',
  -     'C11c',
  -     'C12',
  ?       --
  +     'C',
  -     'C13',
  ?       --
  +     'C',
  -     'C14',
  ?       --
  +     'C',
  -     'C_wp2_pr_dfsn',
  -     'C_wp3_pr_tp',
  -     'C_wp3_pr_turb',
  -     'C_wp3_pr_dfsn',
  -     'C_wp2_splat',
  -     'C6rt_Lscale0',
  -     'C6thl_Lscale0',
  -     'C7_Lscale0',
  -     'wpxp_L_thresh',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'w',
  -     'c_K',
  ?       --
  +     'c',
  -     'c_K1',
  ?       ---
  +     'c',
  -     'nu1',
  ?       --
  +     'n',
  -     'c_K2',
  ?       ---
  +     'c',
  -     'nu2',
  ?       --
  +     'n',
  -     'c_K6',
  ?       ---
  +     'c',
  -     'nu6',
  ?       --
  +     'n',
  -     'c_K8',
  ?       ---
  +     'c',
  -     'nu8',
  ?       --
  +     'n',
  -     'c_K9',
  ?       ---
  +     'c',
  -     'nu9',
  ?       --
  +     'n',
  -     'nu10',
  ?       ---
  +     'n',
  -     'c_K_hm',
  ?       -----
  +     'c',
  -     'c_K_hmb',
  -     'K_hm_min_coef',
  +     'c',
  +     'K',
  -     'nu_hm',
  ?       ----
  +     'n',
  -     'slope_coef_spread_DG_means_w',
  -     'pdf_component_stdev_factor_w',
  -     'coef_spread_DG_means_rt',
  -     'coef_spread_DG_means_thl',
  -     'gamma_coef',
  -     'gamma_coefb',
  -     'gamma_coefc',
  +     's',
  +     'p',
  +     'c',
  +     'c',
  +     'g',
  +     'g',
  +     'g',
  -     'mu',
  ?       -
  +     'm',
  -     'beta',
  ?       ---
  +     'b',
  +     'l',
  +     'o',
  +     'z',
  -     'lmin_coef',
  -     'omicron',
  -     'zeta_vrnce_rat',
  -     'upsilon_precip_frac_rat',
  -     'lambda0_stability_coef',
  -     'mult_coef',
  -     'taumin',
  ?      -- ---
  +     'u',
  +     'l',
  -     'taumax',
  ?      --- --
  +     'm',
  -     'Lscale_mu_coef',
  -     'Lscale_pert_coef',
  -     'alpha_corr',
  -     'Skw_denom_coef',
  +     't',
  +     't',
  +     'L',
  +     'L',
  +     'a',
  +     'S',
  -     'c_K10',
  ?       ----
  +     'c',
  -     'c_K10h',
  ?       -----
  +     'c',
  +     't',
  +     't',
  +     'u',
  +     'S',
  -     'thlp2_rad_coef',
  -     'thlp2_rad_cloud_frac_thresh',
  -     'up2_sfc_coef',
  -     'Skw_max_mag',
  -     'C_invrs_tau_bkgnd',
  -     'C_invrs_tau_sfc',
  -     'C_invrs_tau_shear',
  -     'C_invrs_tau_N2',
  -     'C_invrs_tau_N2_wp2',
  -     'C_invrs_tau_N2_xp2',
  -     'C_invrs_tau_N2_wpxp',
  -     'C_invrs_tau_N2_clear_wp3',
  -     'C_invrs_tau_wpxp_Ri',
  -     'C_invrs_tau_wpxp_N2_thresh',
  -     'xp3_coef_base',
  -     'xp3_coef_slope',
  -     'altitude_threshold',
  -     'rtp2_clip_coef',
  -     'Cx_min',
  ?       -----
  +     'C',
  -     'Cx_max',
  ?       -----
  +     'C',
  -     'Richardson_num_min',
  -     'Richardson_num_max',
  -     'a3_coef_min',
  -     'a_const',
  -     'bv_efold',
  -     'wpxp_Ri_exp',
  -     'z_displace',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'C',
  +     'x',
  +     'x',
  +     'a',
  +     'r',
  +     'C',
  +     'C',
  +     'R',
  +     'R',
  +     'a',
  +     'a',
  +     'b',
  +     'w',
  +     'z',
    ]
======================== 1 failed, 223 passed in 7.63s =========================