<testResult _class='hudson.tasks.junit.TestResult'><duration>1567.8429</duration><empty>false</empty><failCount>103</failCount><passCount>879</passCount><skipCount>1</skipCount><suite><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_KK_Nrm_tendencies</className><duration>0.004</duration><failedSince>0</failedSince><name>test_auto_mean_drop_mass_constant</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_KK_Nrm_tendencies</className><duration>0.24</duration><failedSince>0</failedSince><name>test_evap_local_mean_formula_and_safe_div</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_KK_Nrm_tendencies</className><duration>0.713</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_NNL_covar_const_limits</className><duration>3.293</duration><failedSince>0</failedSince><name>test_const_x3_x1x3_x2x3_limits</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_NNL_covar_const_vs_MM</className><duration>2.701</duration><failedSince>0</failedSince><name>test_trivar_const_variants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_NNL_covar_const_vs_MM</className><duration>1.099</duration><failedSince>0</failedSince><name>test_quadrivar_const_variants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_NNL_covar_vs_MM</className><duration>4.433</duration><failedSince>0</failedSince><name>test_trivar_covar_kernel_and_Ymean_term</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_NNL_covar_vs_MM</className><duration>3.254</duration><failedSince>0</failedSince><name>test_quadrivar_covar_kernel_and_Ymean_term</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_Nc_Ncn_eqns</className><duration>3.788</duration><failedSince>0</failedSince><name>test_Ncnm_bit_to_bit_vs_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_Nc_Ncn_eqns</className><duration>11.758</duration><failedSince>0</failedSince><name>test_forward_vs_numpy_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_T_in_K</className><duration>0.001</duration><failedSince>0</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_T_in_K</className><duration>0.001</duration><failedSince>0</failedSince><name>test_exact_inverse</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_T_in_K</className><duration>0.001</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>0.942</duration><failedSince>0</failedSince><name>test_responder_params_matches_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>0.004</duration><failedSince>0</failedSince><name>test_alpha_x_clip_to_unit_interval</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>0.909</duration><failedSince>0</failedSince><name>test_responder_params_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg2_driver</className><duration>1.914</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg2_driver</className><duration>3.141</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.121</duration><failedSince>0</failedSince><name>test_smooth_min_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.129</duration><failedSince>0</failedSince><name>test_smooth_min_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.141</duration><failedSince>0</failedSince><name>test_smooth_max_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.419</duration><failedSince>0</failedSince><name>test_compute_Cx_fnc_Richardson_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.442</duration><failedSince>0</failedSince><name>test_calc_xpwp_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.15</duration><failedSince>0</failedSince><name>test_calc_xpwp_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>1.002</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.252</duration><failedSince>0</failedSince><name>test_stability_and_Ri_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.098</duration><failedSince>0</failedSince><name>test_vertical_avg_integral_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>1.574</duration><failedSince>0</failedSince><name>test_brunt_vaisala_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.219</duration><failedSince>0</failedSince><name>test_calculate_thlp2_rad_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.161</duration><failedSince>0</failedSince><name>test_Lscale_width_vert_avg_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.218</duration><failedSince>0</failedSince><name>test_wp23_term_splat_lhs_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_xp3_simplified</className><duration>0.661</duration><failedSince>0</failedSince><name>test_term_rhs_formulas</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_xp3_simplified</className><duration>0.611</duration><failedSince>0</failedSince><name>test_steady_state_vs_composition</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.448</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.551</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.476</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.093</duration><failedSince>0</failedSince><name>test_general_partial_closed_form_and_mean_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.046</duration><failedSince>0</failedSince><name>test_const_x2_partial_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.508</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.316</duration><failedSince>0</failedSince><name>test_rr_all_vary_general</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rr_x1_const_reuses_mean_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rr_x2_const_partial</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rr_both_const_all</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_Nr_all_vary_swapped</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.095</duration><failedSince>0</failedSince><name>test_const_all_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.047</duration><failedSince>0</failedSince><name>test_const_x1_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.363</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>2.57</duration><failedSince>0</failedSince><name>test_both_vary_selects_general</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.007</duration><failedSince>0</failedSince><name>test_x1_const_selects_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.006</duration><failedSince>0</failedSince><name>test_x2_const_selects_const_x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.004</duration><failedSince>0</failedSince><name>test_both_const_selects_const_all</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.005</duration><failedSince>0</failedSince><name>test_parab_cyl_overflow_forces_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.931</duration><failedSince>0</failedSince><name>test_planck_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.199</duration><failedSince>0</failedSince><name>test_newexp_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.732</duration><failedSince>0</failedSince><name>test_rayle_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.499</duration><failedSince>0</failedSince><name>test_gascon_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.761</duration><failedSince>0</failedSince><name>test_cloudg_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.397</duration><failedSince>0</failedSince><name>test_comscp_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>2.261</duration><failedSince>0</failedSince><name>test_two_rt_lw_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.325</duration><failedSince>0</failedSince><name>test_two_rt_sw_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.004</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_gases_ckd_data_parser():
        """The gases_ckd_data.h parser builds the correlated-k tables with correct shapes, fully filled
        (no missing T-coefficient slices), and the right spot-checked values."""
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd_data import tables, KG, NUMPS, NUMPIR, NUMTS, NUMTIR
&gt;       t = tables()
            ^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:367: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_gases_ckd_data_parser</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.0</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_gases_dispatch_vs_fortran_replica():
        """The `gases` 18-band dispatch (table indexing + overlap formulas + hk weights) vs a NumPy replica."""
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd import gases, pscale
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd_data import tables, KG, STANPS, STANPIR
        from clubb_jax.src.Radiation.BUGSrad.bugsrad_physconst import MOLAR_VOLUME as MV, GRAVITY as G, \
            MW_H2O as MWh, MW_O3 as MWo, MW_DRY_AIR as MWd
&gt;       T = tables()
            ^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:396: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_gases_dispatch_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.636</duration><failedSince>0</failedSince><name>test_gases_ckd_helpers_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>4.515</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_lwr():
        """LW band driver: the no-cloud invariant (all-sky == clear-sky, bit-exact), finiteness, physical
        flux ranges, and clouds adding downward LW."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_lwr import bugs_lwr
        rng = np.random.default_rng(11)
        ncol, nlm = 2, 25
        pp = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dp = pp[:, 1:] - pp[:, :-1]; ppl = 0.5 * (pp[:, :-1] + pp[:, 1:])
        tt = 220.0 + 70.0 * rng.random((ncol, nlm)); ts = 290.0 + 10.0 * rng.random(ncol)
        rmix = 1e-3 * rng.random((ncol, nlm)); o3mix = 1e-6 * rng.random((ncol, nlm))
        cw0 = np.zeros((ncol, nlm)); ci0 = np.zeros((ncol, nlm))
        fd, fu, fdcl, fucl = (np.asarray(x) for x in
&gt;                             bugs_lwr(ts, ppl, dp, tt, rmix, cw0, ci0, o3mix, pp, 330.0, 1.6, 0.28))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:533: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_bugs_lwr</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.905</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_swr():
        """SW band driver: no-cloud invariant (all-sky==clear-sky bit-exact), the TOA incident solar
        (fdsw[TOA] = amu0·slr·Σband_solar = amu0·slr·1339.946) validating the accumulation, and finiteness."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_swr import bugs_swr
        rng = np.random.default_rng(12)
        ncol, nlm = 2, 25
        pp = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dp = pp[:, 1:] - pp[:, :-1]; ppl = 0.5 * (pp[:, :-1] + pp[:, 1:])
        tt = 230.0 + 60.0 * rng.random((ncol, nlm)); ts = 290.0 * np.ones(ncol)
        rmix = 1e-3 * rng.random((ncol, nlm)); o3mix = 1e-6 * rng.random((ncol, nlm))
        amu0 = np.array([0.5, 0.8]); slr = np.ones(ncol); alb = 0.2 * np.ones(ncol)
        cw0 = np.zeros((ncol, nlm)); ci0 = np.zeros((ncol, nlm))
        out = [np.asarray(x) for x in
&gt;              bugs_swr(ts, amu0, slr, alb, alb, alb, alb, ppl, dp, tt, rmix, cw0, ci0, o3mix, pp, 330.0, 1.6, 0.28)]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:558: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_swr.py:65: in bugs_swr
    tg, hk = gases(ib, ig, dp, ttem, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_bugs_swr</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>4.584</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_rad():
        """Main orchestration: LW heating conserves (telescoping flux divergence), night columns get zero
        SW heating, the no-cloud invariant (all-sky heating == clear-sky), and physical heating rates."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_rad import bugs_rad
        from clubb_jax.src.Radiation.BUGSrad.bugsrad_physconst import GRAVITY, CP_DRY_AIR
        rng = np.random.default_rng(13)
        ncol, nlm = 2, 30
        pl2 = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dpl = pl2[:, 1:] - pl2[:, :-1]; ppl = 0.5 * (pl2[:, :-1] + pl2[:, 1:])
        tl = 220.0 + 70.0 * rng.random((ncol, nlm)); ts = 290.0 * np.ones(ncol)
        ql = 1e-3 * rng.random((ncol, nlm)); o3 = 1e-6 * rng.random((ncol, nlm))      # specific humidity, ozone
        amu0 = np.array([0.5, 0.005]); slr = np.ones(ncol); alb = 0.2 * np.ones(ncol)   # col 0 day, col 1 night
        qcwl = np.where(rng.random((ncol, nlm)) &gt; 0.6, 1e-4, 0.0)                      # cloud-water mixing ratio [kg/kg]
        qcil = np.zeros((ncol, nlm)); acld = np.where(qcwl &gt; 0, 1.0, 0.0)             # cloud ice, cloud fraction
&gt;       r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:582: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_bugs_rad</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.755</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugsrad_driver():
        """CLUBB↔BUGSrad interface: std-atmosphere loads (50 levels), determine_extended_atmos_bounds gives
        sane bounds for a gabls3-like grid (model top 5 km, radiation_top 30 km), and compute_bugsrad_radiation
        produces a strictly-increasing radiation-grid pressure, finite CLUBB-grid heating, and zero SW at night."""
        import numpy as np
        from clubb_jax.src.Input_fields.sounding import load_extended_std_atm
        from clubb_jax.src.Radiation.bugsrad_driver import (
            determine_extended_atmos_bounds, build_rad_grid_setup,
            compute_bugsrad_radiation)
        ext = load_extended_std_atm()
        assert ext['alt'].shape == (50,) and ext['alt'][0] == 1000.0 and ext['alt'][-1] == 50000.0
        nzm, dz, ncol = 51, 100.0, 2
        zm = np.arange(nzm) * dz                                  # 0..5000 m
        zm_spacing = np.full(nzm - 1, dz)
        p_zm = 1013e2 * np.exp(-zm / 8000.0)                      # Pa, hydrostatic (top ≈ 542 mb)
        rad_top = 30000.0
        bottom, top, rsize, linbuf = determine_extended_atmos_bounds(zm, zm_spacing, p_zm, rad_top, ext)
        assert rsize &gt;= 1 and linbuf &gt;= 0 and top &gt;= bottom, "degenerate extension bounds"
        assert ext['alt'][bottom - 1] &gt;= 5000.0 and ext['alt'][top - 1] &lt;= 30000.0, "bounds outside [5,30] km"
        setup = build_rad_grid_setup(zm, zm_spacing, p_zm, rad_top, ext)
        assert setup['buffer'] == linbuf + rsize
        # synthetic state on the nzt grid
        nzt = nzm - 1; rng = np.random.default_rng(7)
        zt = 0.5 * (zm[1:] + zm[:-1])
        T = np.tile(288.0 - 6.5e-3 * zt, (ncol, 1))
        p_zt = np.tile(1013e2 * np.exp(-zt / 8000.0), (ncol, 1))
        exner = (p_zt / 1.0e5) ** (287.0 / 1004.0)
        rho = np.tile(p_zm / (287.0 * (288.0 - 6.5e-3 * zm)), (ncol, 1))
        rtm = 5e-3 * np.ones((ncol, nzt)); rcm = np.zeros((ncol, nzt)); rcm[:, 5:8] = 1e-4
        cf = np.where(rcm &gt; 0, 1.0, 0.0); rim = np.zeros_like(rcm); rsm = np.zeros_like(rcm); isf = np.zeros_like(rcm)
        amu0 = np.array([0.5, 0.0]); slr = np.ones(ncol); alb = 0.23 * np.ones(ncol)
        p_zm2 = np.tile(p_zm, (ncol, 1))
&gt;       res = compute_bugsrad_radiation(setup, T, rcm, rtm, rsm, rim, cf, isf, p_zt, p_zm2, rho, exner,
                                        amu0, slr, alb, alb, alb, alb, sol_const=1321.0)

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:628: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/bugsrad_driver.py:143: in compute_bugsrad_radiation
    out = fn(playerinmb, p_rad, diff_pres, T_rad, q_rad, rcmic_rad, rcil_rad, o3_rad,
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_bugsrad_driver</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.119</duration><errorDetails>TypeError: Error interpreting argument to &lt;function advance_clubb_radiation at 0x741183fbac00&gt; as an abstract array. The problematic value is of type &lt;class 'str'&gt; and was passed to the function at path args[0]['cfg']['rad_scheme'].
This typically means that a jit-wrapped function was called with a non-array argument, and this argument was not marked as static using the static_argnums or static_argnames parameters of jax.jit.
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugsrad_radiation_dispatch():
        """End-to-end wiring: advance_clubb_radiation(rad_scheme='bugsrad') builds the grid setup, maps a gabls3-like
        CLUBB state through bugs_rad, and writes a finite K/s heating rate into state['radht'] (shape (1,nzt))."""
        import numpy as np
        from clubb_jax.src.CLUBB_core.grid_class import setup_grid
        from clubb_jax.src.Radiation.radiation_module import advance_clubb_radiation
        gr = setup_grid(ngrdcol=1, deltaz=100.0, zm_init=0.0, zm_top=5000.0)
        nzt, nzm = gr.nzt, gr.nzm
        zt = np.asarray(gr.zt)[0]
        p_zt = (1013e2 * np.exp(-zt / 8000.0))[None, :]
        exner = (p_zt / 1.0e5) ** (287.0 / 1004.67)
        thlm = np.full((1, nzt), 295.0); rtm = np.full((1, nzt), 5e-3)
        rcm = np.zeros((1, nzt)); rcm[:, 5:9] = 2e-4
        cloud_frac = np.where(rcm &gt; 0, 1.0, 0.0)
        rho_zm = (np.asarray(p_zt) / (287.0 * 290.0))
        rho_zm = np.concatenate([rho_zm, rho_zm[:, -1:]], axis=1)        # pad to nzm
        cfg = dict(rad_scheme="bugsrad", radiation_top=30000.0, sol_const=1321.0, slr=1.0,
                   alvdr=0.23, alvdf=0.23, alndr=0.23, alndf=0.23,
                   l_fix_cos_solar_zen=True, cos_solar_zen_values=[0.5])
        state = dict(cfg=cfg, gr=gr, ngrdcol=1, nzt=nzt, nzm=nzm, stats_writer=None,
                     rad_scheme="bugsrad", p_in_Pa=p_zt, exner=exner, thlm=thlm, rtm=rtm, rcm=rcm,
                     cloud_frac=cloud_frac, ice_supersat_frac=np.zeros((1, nzt)), rho_zm=rho_zm,
                     radht=np.zeros((1, nzt)))
&gt;       advance_clubb_radiation(state, time_current=43200.0)                  # local noon-ish
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: Error interpreting argument to &lt;function advance_clubb_radiation at 0x741183fbac00&gt; as an abstract array. The problematic value is of type &lt;class 'str'&gt; and was passed to the function at path args[0]['cfg']['rad_scheme'].
E       This typically means that a jit-wrapped function was called with a non-array argument, and this argument was not marked as static using the static_argnums or static_argnames parameters of jax.jit.
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:661: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_bugsrad_radiation_dispatch</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>5.849</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugs_rad_differentiable():
        """The BUGSrad radiative transfer is DIFFERENTIABLE (a stated project goal): jax.grad of a radiative
        loss (TOA outgoing LW + total SW heating) w.r.t. temperature and cloud water is finite AND nonzero
        (the radiation responds to its physical inputs). cloudg is now fully float64 (REFACTOR A3)."""
        import jax, jax.numpy as jnp
        from clubb_jax.src.Radiation.BUGSrad.bugs_rad import bugs_rad
        rng = np.random.default_rng(1); ncol, nlm = 1, 40
        pl2 = jnp.asarray(np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0)
        dpl = pl2[:, 1:] - pl2[:, :-1]; ppl = 0.5 * (pl2[:, :-1] + pl2[:, 1:])
        tl0 = jnp.asarray(220.0 + 70.0 * rng.random((ncol, nlm))); ts = jnp.asarray(290.0 * np.ones(ncol))
        ql = jnp.asarray(1e-3 * rng.random((ncol, nlm))); o3 = jnp.asarray(1e-6 * rng.random((ncol, nlm)))
        qcwl0 = jnp.asarray(np.where(rng.random((ncol, nlm)) &gt; 0.5, 1e-4, 0.0)); qcil = jnp.zeros((ncol, nlm))
        acld = jnp.asarray(np.where(np.asarray(qcwl0) &gt; 0, 1.0, 0.0))
        amu0 = jnp.asarray([0.5]); slr = jnp.ones(ncol); alb = jnp.asarray(0.2 * np.ones(ncol))
    
        def loss(tl, qcwl):
            r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
            return jnp.sum(r['fulw'][:, 0]) + jnp.sum(r['asl'])
    
&gt;       g_t, g_q = jax.grad(loss, argnums=(0, 1))(tl0, qcwl0)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:691: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:688: in loss
    r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_jax/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>4</failedSince><name>test_bugs_rad_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>0.921</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>1.108</duration><failedSince>0</failedSince><name>test_round_trip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>0.005</duration><failedSince>0</failedSince><name>test_bound</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>0.665</duration><failedSince>0</failedSince><name>test_smooth_corr_quotient_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>1.468</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>2.15</duration><failedSince>0</failedSince><name>test_both_precip_preserves_mean_and_variance</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.013</duration><failedSince>0</failedSince><name>test_rico_params_non_emergency</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.028</duration><failedSince>0</failedSince><name>test_root_sign_selection</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.014</duration><failedSince>0</failedSince><name>test_emergency_preserves_mean</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.027</duration><failedSince>0</failedSince><name>test_single_component_branches</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>2.053</duration><failedSince>0</failedSince><name>test_no_precip_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>1.851</duration><failedSince>0</failedSince><name>test_compute_mean_stdev_columns</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.303</duration><failedSince>0</failedSince><name>test_norm_transform_matches_L2N</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>3.507</duration><failedSince>0</failedSince><name>test_orchestration_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>2.521</duration><failedSince>0</failedSince><name>test_reconstruction_and_structure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>0.052</duration><failedSince>0</failedSince><name>test_adjustments_and_selection</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>3.503</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.374</duration><failedSince>0</failedSince><name>test_round_trip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.338</duration><failedSince>0</failedSince><name>test_branches_vs_numpy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.001</duration><failedSince>0</failedSince><name>test_clamp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.757</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>2.33</duration><failedSince>0</failedSince><name>test_below_freezing_closed_form_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.005</duration><failedSince>0</failedSince><name>test_above_freezing_returns_cf_liq</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.004</duration><failedSince>0</failedSince><name>test_truncation_limits</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.704</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_liquid_cloud_frac_component</className><duration>3.202</duration><failedSince>0</failedSince><name>test_closed_form_and_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_liquid_cloud_frac_component</className><duration>0.003</duration><failedSince>0</failedSince><name>test_truncation_limits</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_liquid_cloud_frac_component</className><duration>1.018</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_roots</className><duration>0.297</duration><failedSince>0</failedSince><name>test_cube_root</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_roots</className><duration>0.559</duration><failedSince>0</failedSince><name>test_quadratic</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_roots</className><duration>0.85</duration><failedSince>0</failedSince><name>test_cubic</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_roots</className><duration>1.336</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_roots</className><duration>1.144</duration><errorDetails>AssertionError: f2py cubic sorted-real mismatch 6.73e-01
assert np.float64(0.6732766293498132) &lt; 1e-08</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            fn = clubb_f2py.f2py_cubic_solve
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py cubic_solve oracle: SKIP ({type(e).__name__})")
        # Cases incl. a NEGATIVE-R cubic ([-1.5,0,1.5,-0.75]) where the Cardano args R±sqrt(D) are negative real —
        # this is the case that exposed the principal-vs-real cube-root branch bug (iter 71).
        cases = [(1.0, -6.0, 11.0, -6.0), (1.0, -4.0, 5.0, -2.0), (1.0, 0.0, 0.0, -1.0),
                 (-2.0, 0.0, 3.0, 1.5), (-1.5, 0.0, 1.5, -0.75), (1.0, 0.0, -7.0, 6.0)]
        a = np.array([x[0] for x in cases]); b = np.array([x[1] for x in cases])
        c = np.array([x[2] for x in cases]); d = np.array([x[3] for x in cases])
        f = np.asarray(fn(a, b, c, d))          # (2, n, 3): [real, imag]
        ref = f[0] + 1j * f[1]
        got = np.asarray(cubic_solve(*[jnp.asarray(v) for v in (a, b, c, d)]))
        # gfortran's complex **(1/3) branch cut orders the conjugate pair / real root differently than this port
        # for D&gt;0; both return the same correct root SET, so compare the sorted real parts (what the consumers use).
        err = np.max(np.abs(np.sort(np.real(got), axis=-1) - np.sort(np.real(ref), axis=-1)))
        # ~1e-9 near the [1,-4,5,-2] double root (1,1,2) is Cardano's intrinsic ill-conditioning, shared by both
        # implementations; the residual check below is the strict correctness guard.
&gt;       assert err &lt; 1e-8, f"f2py cubic sorted-real mismatch {err:.2e}"
E       AssertionError: f2py cubic sorted-real mismatch 6.73e-01
E       assert np.float64(0.6732766293498132) &lt; 1e-08

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_roots.py:117: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wp3_on_wp2</className><duration>0.203</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[1.00000000e-07 1.02987828e+00 1.10726481e+00 1.12355285e+00
  1.00000000e-07 1.89830554e+00 2.02300436e+00 9.89957370e-01
  1.00000000e-07 3.69004827e-01 1.55282523e-01 2.55058902e+00
  1.00000000e-07 2.93630481e+00 2.48102638e+00 2.35565436e+00
  1.00000000e-07 6.22397055e-01 2.54961191e+00 1.29754119e+00
  1.00000000e-07 3.66934968e-01 5.59090322e-01 1.49185401e+00
  1.00000000e-07 1.61961763e+00 3.20729548e-01 2.59857162e+00
  1.00000000e-07 1.31902931e+00 1.76058974e+00]
 [1.00000000e-07 1.25422069e+00 2.66090478e+00 1.36246169e+00
  1.00000000e-07 2.91147041e+00 8.28021811e-01 2.68438108e+00
  1.00000000e-07 9.36191848e-01 2.64387945e+00 1.96583695e-01
  1.00000000e-07 2.48332008e+00 2.68415505e+00 1.79365827e-01
  1.00000000e-07 2.32548333e+00 1.31060658e+00 1.60389446e-02
  1.00000000e-07 2.39932904e+00 2.92087746e+00 4.52077322e-01
  1.00000000e-07 2.52409764e+00 2.75518190e-01 8.22884278e-01
  1.00000000e-07 1.25508666e+00 1.62824751e+00]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            clubb_f2py, jgr, ng, nzm = _setup_f2py_grid()
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_wp3_on_wp2 oracle: SKIP ({type(e).__name__})")
        nzt = nzm - 1
        zm2zt = lambda a: np.asarray(clubb_f2py.f2py_zm2zt_2d(nzt, a))
        zt2zm = lambda a: np.asarray(clubb_f2py.f2py_zt2zm_2d(nzm, a))
        rng = np.random.default_rng(6)
        wm = wz = 0.0
        for _ in range(15):
            wp2 = rng.uniform(1e-4, 3.0, (ng, nzm))
            wp3 = rng.uniform(-5.0, 5.0, (ng, nzt))
            # occasionally force the clip to fire (tiny wp2 → |ratio| &gt; 1000)
            if _ % 3 == 0:
                wp2[:, ::4] = 1e-7
&gt;           jm, jz = calc_wp3_on_wp2(jnp.asarray(wp2), jnp.asarray(wp3), jgr)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[1.00000000e-07 1.02987828e+00 1.10726481e+00 1.12355285e+00
E             1.00000000e-07 1.89830554e+00 2.02300436e+00 9.89957370e-01
E             1.00000000e-07 3.69004827e-01 1.55282523e-01 2.55058902e+00
E             1.00000000e-07 2.93630481e+00 2.48102638e+00 2.35565436e+00
E             1.00000000e-07 6.22397055e-01 2.54961191e+00 1.29754119e+00
E             1.00000000e-07 3.66934968e-01 5.59090322e-01 1.49185401e+00
E             1.00000000e-07 1.61961763e+00 3.20729548e-01 2.59857162e+00
E             1.00000000e-07 1.31902931e+00 1.76058974e+00]
E            [1.00000000e-07 1.25422069e+00 2.66090478e+00 1.36246169e+00
E             1.00000000e-07 2.91147041e+00 8.28021811e-01 2.68438108e+00
E             1.00000000e-07 9.36191848e-01 2.64387945e+00 1.96583695e-01
E             1.00000000e-07 2.48332008e+00 2.68415505e+00 1.79365827e-01
E             1.00000000e-07 2.32548333e+00 1.31060658e+00 1.60389446e-02
E             1.00000000e-07 2.39932904e+00 2.92087746e+00 4.52077322e-01
E             1.00000000e-07 2.52409764e+00 2.75518190e-01 8.22884278e-01
E             1.00000000e-07 1.25508666e+00 1.62824751e+00]]. The error was:
E           TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_wp3_on_wp2.py:72: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wp4_pdf</className><duration>0.304</duration><failedSince>0</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wp4_pdf</className><duration>3.923</duration><failedSince>0</failedSince><name>test_monte_carlo_central_moment</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wp4_pdf</className><duration>0.268</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wpxpyp_pdf</className><duration>0.336</duration><failedSince>0</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wpxpyp_pdf</className><duration>2.446</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_wpxpyp_pdf</className><duration>0.303</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_xprcp_component</className><duration>0.001</duration><errorDetails>TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'</errorDetails><errorStackTrace>def test_six_covariance_formulas():
        k = _KW
&gt;       wprcp, wp2rcp, rtprcp, thlprcp, uprcp, vprcp = (float(x) for x in calc_xprcp_component(**k))
                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_xprcp_component.py:42: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_six_covariance_formulas</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_xprcp_component</className><duration>0.0</duration><errorDetails>TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'</errorDetails><errorStackTrace>def test_cthl_zero_safe():
        k = dict(_KW); k['cthl_i'] = 0.0; k['cloud_frac_i'] = 0.0   # rsatl=0 limit, masked by cloud_frac=0
&gt;       out = [float(x) for x in calc_xprcp_component(**k)]
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_xprcp_component.py:66: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_cthl_zero_safe</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_xprcp_component</className><duration>0.004</duration><errorDetails>TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_grad_finite():
        k = dict(_KW)
&gt;       g = jax.grad(lambda rc: calc_xprcp_component(**{**k, 'rc_i': rc})[2])(k['rc_i'])  # d(rtprcp)/d(rc_i)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_xprcp_component.py:73: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

rc = GradTracer(primal=5e-05, typeof(tangent)=f64[])

&gt;   g = jax.grad(lambda rc: calc_xprcp_component(**{**k, 'rc_i': rc})[2])(k['rc_i'])  # d(rtprcp)/d(rc_i)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   TypeError: calc_xprcp_component() missing 1 required positional argument: 'iiPDF_type'
E   --------------------
E   For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_calc_xprcp_component.py:73: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_xpthvp_terms</className><duration>0.783</duration><failedSince>0</failedSince><name>test_assembly_and_regrid</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_xpthvp_terms</className><duration>1.382</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_thvm</className><duration>0.002</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[283.85710608 294.97833587 298.04495073 280.86067025 284.43778254
  307.84633069 282.11261728 283.89321848]
 [308.4498536  298.65650778 291.06979371 295.34170065 299.88528858
  288.25926447 284.13904219 303.64118784]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calculate_thvm oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        for seed in (11, 22, 33):
            thlm, rtm, rcm, exner, thv_ds_zt = _inputs(seed)
            ref = np.asarray(clubb_f2py.f2py_calculate_thvm(thlm, rtm, rcm, exner, thv_ds_zt))
&gt;           got = np.asarray(calculate_thvm(thlm, rtm, rcm, exner, thv_ds_zt))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[283.85710608 294.97833587 298.04495073 280.86067025 284.43778254
E             307.84633069 282.11261728 283.89321848]
E            [308.4498536  298.65650778 291.06979371 295.34170065 299.88528858
E             288.25926447 284.13904219 303.64118784]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_calculate_thvm.py:55: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_thvm</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[304.15008771 304.23822369 295.45976683 288.5740414  281.61792107
  291.50106642 292.25419616 281.35825582]
 [281.46273132 309.97528345 299.57107335 287.03530605 293.04842657
  309.2255858  306.93032824 305.32693113]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_closed_form():
        thlm, rtm, rcm, exner, thv_ds_zt = _inputs(5)
&gt;       got = np.asarray(calculate_thvm(thlm, rtm, rcm, exner, thv_ds_zt))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[304.15008771 304.23822369 295.45976683 288.5740414  281.61792107
E         291.50106642 292.25419616 281.35825582]
E        [281.46273132 309.97528345 299.57107335 287.03530605 293.04842657
E         309.2255858  306.93032824 305.32693113]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_calculate_thvm.py:63: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_thvm</className><duration>0.071</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[298.752864   306.91641403 303.27057071 286.7562157  289.00498855
  306.20660336 280.15795914 304.63685255]
 [303.91208286 294.03804859 289.0909728  288.35276836 287.64608763
  293.35228918 295.13644777 296.60492056]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        thlm, rtm, rcm, exner, thv_ds_zt = _inputs(7)
        def loss(rcm_v):
            return jnp.sum(calculate_thvm(thlm, rtm, rcm_v, exner, thv_ds_zt) ** 2)
&gt;       g = np.asarray(jax.grad(loss)(jnp.asarray(rcm)))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_calculate_thvm.py:76: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

rcm_v = GradTracer(primal=[[1.17940255e-05 1.92402144e-04 6.92032121e-04 2.00606724e-04
  3.69536311e-04 3.73424205e-06 8.3004....09790810e-04 8.47150246e-04
  6.39717167e-04 7.41770947e-04 9.14956051e-05 5.41143821e-04]], typeof(tangent)=f64[2,8])

    def loss(rcm_v):
&gt;       return jnp.sum(calculate_thvm(thlm, rtm, rcm_v, exner, thv_ds_zt) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[298.752864   306.91641403 303.27057071 286.7562157  289.00498855
E         306.20660336 280.15795914 304.63685255]
E        [303.91208286 294.03804859 289.0909728  288.35276836 287.64608763
E         293.35228918 295.13644777 296.60492056]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_calculate_thvm.py:75: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_w_responder_params</className><duration>1.515</duration><errorDetails>AssertionError: calculate_w_params f2py mismatch 7.31e+00
assert np.float64(7.308563841211619) &lt; 1e-12</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calculate_w/responder_params oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(13)
        worst_w = worst_r = 0.0
        for _ in range(4):
            sh = (NG, NZ)
            wm = rng.uniform(-1, 1, sh); wp2 = rng.uniform(0.05, 2, sh)
            Skw = rng.uniform(-2, 2, sh)
            F_w = rng.uniform(0.05, 0.95, sh); zeta_w = rng.uniform(0.0, 3.0, sh)
    
            fw = clubb_f2py.f2py_calculate_w_params(wm, wp2, Skw, F_w, zeta_w)
            gw = calculate_w_params(wm, wp2, Skw, F_w, zeta_w)
            for fi, gi in zip(fw, gw):
                worst_w = max(worst_w, np.max(np.abs(np.asarray(gi) - np.asarray(fi))))
    
            # Responder: use the setter's mixt_frac, a nonzero covariance, and a responder variable.
            mixt_frac = np.asarray(fw[4])
            xm = rng.uniform(285, 305, sh); xp2 = rng.uniform(0.05, 1, sh)
            Skx = rng.uniform(-2, 2, sh); wpxp = rng.uniform(-0.5, 0.5, sh)
            fr = clubb_f2py.f2py_calculate_responder_params(xm, xp2, Skx, wpxp, wp2, F_w, mixt_frac)
            gr = calculate_responder_params(xm, xp2, Skx, wpxp, wp2, F_w, mixt_frac)
            for fi, gi in zip(fr, gr):
                worst_r = max(worst_r, np.max(np.abs(np.asarray(gi) - np.asarray(fi))))
&gt;       assert worst_w &lt; 1e-12, f"calculate_w_params f2py mismatch {worst_w:.2e}"
E       AssertionError: calculate_w_params f2py mismatch 7.31e+00
E       assert np.float64(7.308563841211619) &lt; 1e-12

clubb_jax/pytests/auto_llm_generated_pytests/test_calculate_w_responder_params.py:60: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_w_responder_params</className><duration>0.004</duration><failedSince>0</failedSince><name>test_responder_zero_cov_gaussian</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calculate_w_responder_params</className><duration>2.003</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calendar</className><duration>0.573</duration><failedSince>0</failedSince><name>test_jdn_anchors_and_roundtrip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calendar</className><duration>0.761</duration><failedSince>0</failedSince><name>test_compute_current_date_api_matches_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calendar</className><duration>0.526</duration><failedSince>0</failedSince><name>test_gregorian2julian_day</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calendar</className><duration>0.297</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_corr_mtx_approx</className><duration>5.603</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_corr_mtx_approx</className><duration>0.042</duration><failedSince>0</failedSince><name>test_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_corr_mtx_approx</className><duration>3.143</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_factor</className><duration>3.385</duration><failedSince>0</failedSince><name>test_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_factor</className><duration>0.859</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_factor</className><duration>1.519</duration><failedSince>0</failedSince><name>test_non_pd_fallback</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cholesky_factor</className><duration>2.134</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_covar</className><duration>0.19</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_covar</className><duration>0.39</duration><failedSince>0</failedSince><name>test_clip_covars_denom_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_covar</className><duration>0.002</duration><failedSince>0</failedSince><name>test_realizability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_covar</className><duration>0.474</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_skewness</className><duration>0.206</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[-1.09037342e+01  1.01028979e-01 -1.87254490e+01  3.02883406e-01
   5.86407281e-01  2.27365704e+00 -1.35075253e+01  5.65041352e-01
  -4.80154497e+00 -1.29496344e-02 -6.40626569e+00  2.08277752e+00
   9.16194160e-01  3.75137369e+00 -1.93030128e+01 -2.97701648e+00
  -1.84998448e+01 -4.74273551e+00 -7.58656305e-02 -8.53612174e+00
   4.55882694e+00 -5.24979872e-01  8.25667341e-03  2.69321299e-01
   7.17671160e+00  1.44870802e+00 -6.75406478e+00 -1.50397145e+01
   1.94439847e+00 -9.62630972e-01  4.50866980e+00  2.52388646e-01
  -4.96706389e+00  4.94164953e+00 -2.19590136e+00 -8.75542652e+00
  -3.37330799e+00]
 [-2.16745622e+00  6.30271798e+00  1.62730784e+00  8.52814015e+00
   4.06005116e+00 -2.15736186e+00 -3.15265138e+00  1.89074950e-02
   1.51065893e+00 -7.28524120e-01  2.16375278e+00  1.31793907e+01
  -1.80028112e+00  7.23342637e+00  7.27825508e-02  1.00696651e+00
   2.38759728e+00 -5.13366391e-01 -2.79264621e+00  4.40369482e+00
   4.67499096e+00  1.44736479e+01 -1.95571243e+00  2.22153529e+00
   1.14729853e+01 -1.70729923e+01  3.44050497e+00 -3.47531936e+00
   1.45604642e+01 -5.47048677e-01  5.44986212e+00 -1.00011428e+01
   1.41238389e+00  1.90486796e+00  7.16131038e-01  6.57402152e+00
   7.59694400e+00]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py clip_skewness oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        rng = np.random.default_rng(4)
        zt = np.asarray(jgr.zt)
        sfc_elevation = np.zeros(ng)
        skw_max = np.full(ng, _SKW_MAX)
        wp2_zt = rng.uniform(0.05, 2.0, (ng, nzt))
        # wp3 large enough at many levels to trigger the skewness clip.
        wp3 = rng.uniform(-8.0, 8.0, (ng, nzt)) * wp2_zt ** 1.5
        worst = 0.0
        for l_smth in (True, False):
            ref = np.asarray(clubb_f2py.f2py_clip_skewness(
                60.0, sfc_elevation, skw_max, np.asfortranarray(wp2_zt), l_smth, np.asfortranarray(wp3.copy())))
&gt;           got = np.asarray(clip_skewness_core(wp3, wp2_zt, zt, sfc_elevation, skw_max, l_smth))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[-1.09037342e+01  1.01028979e-01 -1.87254490e+01  3.02883406e-01
E              5.86407281e-01  2.27365704e+00 -1.35075253e+01  5.65041352e-01
E             -4.80154497e+00 -1.29496344e-02 -6.40626569e+00  2.08277752e+00
E              9.16194160e-01  3.75137369e+00 -1.93030128e+01 -2.97701648e+00
E             -1.84998448e+01 -4.74273551e+00 -7.58656305e-02 -8.53612174e+00
E              4.55882694e+00 -5.24979872e-01  8.25667341e-03  2.69321299e-01
E              7.17671160e+00  1.44870802e+00 -6.75406478e+00 -1.50397145e+01
E              1.94439847e+00 -9.62630972e-01  4.50866980e+00  2.52388646e-01
E             -4.96706389e+00  4.94164953e+00 -2.19590136e+00 -8.75542652e+00
E             -3.37330799e+00]
E            [-2.16745622e+00  6.30271798e+00  1.62730784e+00  8.52814015e+00
E              4.06005116e+00 -2.15736186e+00 -3.15265138e+00  1.89074950e-02
E              1.51065893e+00 -7.28524120e-01  2.16375278e+00  1.31793907e+01
E             -1.80028112e+00  7.23342637e+00  7.27825508e-02  1.00696651e+00
E              2.38759728e+00 -5.13366391e-01 -2.79264621e+00  4.40369482e+00
E              4.67499096e+00  1.44736479e+01 -1.95571243e+00  2.22153529e+00
E              1.14729853e+01 -1.70729923e+01  3.44050497e+00 -3.47531936e+00
E              1.45604642e+01 -5.47048677e-01  5.44986212e+00 -1.00011428e+01
E              1.41238389e+00  1.90486796e+00  7.16131038e-01  6.57402152e+00
E              7.59694400e+00]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_skewness.py:68: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_skewness</className><duration>0.003</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ -1.94911252   0.27473437  -3.45876419   0.85180364  -8.28394316
    6.69079985   8.5064924    4.89674194   8.80066671  -1.35903604
    0.31690971  11.07791434   0.23805576  -0.36552982  -0.83274419
    0.99023125  -0.46216295   2.53957869  17.49653128  -3.3559234
   10.74841935  -0.89442824  -2.03271238   3.96819695   9.7030458
   -5.73831843   1.21133062  -3.70044391  -1.10993906  -2.88643504
   -8.29687983   2.58204724  -2.90504615   7.37709286  -0.5910096
   -7.15586172   3.78341072]
 [  3.68774519 -12.17739732   5.17247798  -3.524426     2.89044913
   -0.55534366  18.31825707   1.72347778  14.36255816   0.32761269
   -0.33911837  -7.58645624   5.33973779   0.22518609   7.65726885
   10.1196649  -19.96406763  -1.07922932   0.38416512 -14.92742176
    0.20759829   3.50293677  -2.19470786   2.57844755  -5.73842907
   10.98618018   9.39537493   7.84646377  -1.28579295  -0.85993353
   -6.2092601   15.46902334  15.96274788   1.81991143   4.96885912
  -10.08636937   6.06079618]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_skewness_limit():
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzt = jgr.zm.shape[1] - 1
        zt = np.asarray(jgr.zt)
        rng = np.random.default_rng(6)
        wp2_zt = rng.uniform(0.1, 2.0, (_NG, nzt))
        wp3 = rng.uniform(-8.0, 8.0, (_NG, nzt)) * wp2_zt ** 1.5
&gt;       got = np.asarray(clip_skewness_core(wp3, wp2_zt, zt, np.zeros(_NG), np.full(_NG, _SKW_MAX), True))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ -1.94911252   0.27473437  -3.45876419   0.85180364  -8.28394316
E           6.69079985   8.5064924    4.89674194   8.80066671  -1.35903604
E           0.31690971  11.07791434   0.23805576  -0.36552982  -0.83274419
E           0.99023125  -0.46216295   2.53957869  17.49653128  -3.3559234
E          10.74841935  -0.89442824  -2.03271238   3.96819695   9.7030458
E          -5.73831843   1.21133062  -3.70044391  -1.10993906  -2.88643504
E          -8.29687983   2.58204724  -2.90504615   7.37709286  -0.5910096
E          -7.15586172   3.78341072]
E        [  3.68774519 -12.17739732   5.17247798  -3.524426     2.89044913
E          -0.55534366  18.31825707   1.72347778  14.36255816   0.32761269
E          -0.33911837  -7.58645624   5.33973779   0.22518609   7.65726885
E          10.1196649  -19.96406763  -1.07922932   0.38416512 -14.92742176
E           0.20759829   3.50293677  -2.19470786   2.57844755  -5.73842907
E          10.98618018   9.39537493   7.84646377  -1.28579295  -0.85993353
E          -6.2092601   15.46902334  15.96274788   1.81991143   4.96885912
E         -10.08636937   6.06079618]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_skewness.py:83: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_skewness_limit</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_skewness</className><duration>0.073</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[[-2.38387866 -2.01508857  3.14225741 -4.08084058  1.00100526  2.28560527
  -3.12098927 -4.44853373 -2.25030632  1.57433015  0.62265663 -3.49937737
  -0.67369209  1.69297299 -0.77215327  1.33184399  4.67435952  1.83064822
  -1.08375167 -3.1274743  -1.54039334  0.11065974  3.9120941   2.75563942
  -1.81853399  4.24216897 -0.29090115  1.93758842 -3.92792692 -3.95456442
  -2.98092552  3.84449674  1.79811461  3.49236324  1.44436269 -0.93457602
   0.16578194]], typeof(tangent)=f64[1,37]). The error was:
TypeError: unhashable type: 'LinearizeTracer'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        jgr = setup_grid(ngrdcol=1, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzt = jgr.zm.shape[1] - 1
        zt = np.asarray(jgr.zt)[:1]
        wp2_zt = np.random.default_rng(1).uniform(0.1, 2.0, (1, nzt))
        def loss(wp3):
            return jnp.sum(clip_skewness_core(wp3, wp2_zt, zt, np.zeros(1), np.full(1, _SKW_MAX), True) ** 2)
&gt;       g = np.asarray(jax.grad(loss)(jnp.asarray(np.random.default_rng(2).uniform(-5, 5, (1, nzt)))))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_skewness.py:98: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

wp3 = GradTracer(primal=[[-2.38387866 -2.01508857  3.14225741 -4.08084058  1.00100526  2.28560527
  -3.12098927 -4.44853373 ...2
  -2.98092552  3.84449674  1.79811461  3.49236324  1.44436269 -0.93457602
   0.16578194]], typeof(tangent)=f64[1,37])

    def loss(wp3):
&gt;       return jnp.sum(clip_skewness_core(wp3, wp2_zt, zt, np.zeros(1), np.full(1, _SKW_MAX), True) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[[-2.38387866 -2.01508857  3.14225741 -4.08084058  1.00100526  2.28560527
E         -3.12098927 -4.44853373 -2.25030632  1.57433015  0.62265663 -3.49937737
E         -0.67369209  1.69297299 -0.77215327  1.33184399  4.67435952  1.83064822
E         -1.08375167 -3.1274743  -1.54039334  0.11065974  3.9120941   2.75563942
E         -1.81853399  4.24216897 -0.29090115  1.93758842 -3.92792692 -3.95456442
E         -2.98092552  3.84449674  1.79811461  3.49236324  1.44436269 -0.93457602
E          0.16578194]], typeof(tangent)=f64[1,37]). The error was:
E       TypeError: unhashable type: 'LinearizeTracer'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_skewness.py:97: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_variance</className><duration>0.185</duration><errorDetails>TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py clip_variance oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        rng = np.random.default_rng(4)
        # xp2 with many sub-threshold (incl. negative) values to exercise the floor.
        xp2 = rng.uniform(-0.5, 2.0, (ng, nzm))
        threshold_lo = np.full((ng, nzm), 1e-3)
        ref = np.asarray(clubb_f2py.f2py_clip_variance(CLIP_RTP2, 60.0, threshold_lo, np.asfortranarray(xp2.copy())))
&gt;       got = np.asarray(clip_variance(xp2, threshold_lo))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_variance.py:60: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_variance</className><duration>0.0</duration><errorDetails>TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'</errorDetails><errorStackTrace>def test_floor_and_boundary():
        nzm = 9
        xp2 = np.array([[-0.1, 0.5, 1e-4, 2.0, 0.0, 1.0, -0.2, 0.3, 5.0]])
        thr = np.full((1, nzm), 1e-3)
&gt;       got = np.asarray(clip_variance(xp2, thr))
                         ^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_variance.py:70: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_floor_and_boundary</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_variance</className><duration>0.069</duration><errorDetails>TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        xp2 = jnp.asarray(np.random.default_rng(1).uniform(-0.5, 2.0, (2, 8)))
        thr = jnp.full((2, 8), 1e-3)
&gt;       g = np.asarray(jax.grad(lambda x: jnp.sum(clip_variance(x, thr) ** 2))(xp2))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_variance.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

x = GradTracer(primal=[[ 0.77955406  1.87615924 -0.13960097  1.87162362  0.27957863  0.55831612
   1.56925648  0.52299784]...8422 -0.43110222  1.38378277  0.84535828  0.32432929  1.47107176
   0.25798707  0.63374472]], typeof(tangent)=f64[2,8])

&gt;   g = np.asarray(jax.grad(lambda x: jnp.sum(clip_variance(x, thr) ** 2))(xp2))
                                              ^^^^^^^^^^^^^^^^^^^^^
E   TypeError: clip_variance() missing 6 required positional arguments: 'gr', 'solve_type', 'dt', 'threshold_lo', 'stats', and 'xp2'
E   --------------------
E   For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_variance.py:81: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_clip_variance</className><duration>0.017</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[-0.06664883  0.00070224 -0.06749149 -0.01956801 -0.01127056 -0.06010935
  -0.05533605 -0.06197961 -0.08909073 -0.05114552]
 [-0.07538208 -0.07377118 -0.08115738 -0.08022582 -0.01698958 -0.05685561
  -0.07389611 -0.03972791 -0.03836423 -0.03402048]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_clip_rcm_f2py():
        """clip_rcm (clip_explicit.F90:clip_rcm — ensure rcm &lt;= rtm, clipping to max(zero_threshold, rtm-eps)) vs the
        Fortran oracle. Previously untested. SKIPs if clubb_f2py is unbuilt. (iter 415)"""
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py clip_rcm oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(8)
        worst = 0.0
        for _ in range(20):
            ng, nzt = 2, 10
            rcm = rng.uniform(-0.1, 2e-3, (ng, nzt)); rtm = rng.uniform(0.0, 2e-3, (ng, nzt))
&gt;           cj = np.asarray(clip_rcm(jnp.asarray(rcm), jnp.asarray(rtm)))
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[-0.06664883  0.00070224 -0.06749149 -0.01956801 -0.01127056 -0.06010935
E             -0.05533605 -0.06197961 -0.08909073 -0.05114552]
E            [-0.07538208 -0.07377118 -0.08115738 -0.08022582 -0.01698958 -0.05685561
E             -0.07389611 -0.03972791 -0.03836423 -0.03402048]]. The error was:
E           TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_clip_variance.py:100: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_clip_rcm_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>17.309</duration><failedSince>0</failedSince><name>test_vs_literal_loop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>0.027</duration><failedSince>0</failedSince><name>test_random_limit_bounds_monotonic</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>0.015</duration><failedSince>0</failedSince><name>test_edge_branches</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>0.29</duration><failedSince>0</failedSince><name>test_cloudfit_vs_literal_loop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>1.179</duration><failedSince>0</failedSince><name>test_cloudfit_reconstruction_invariant</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_correlate</className><duration>1.411</duration><failedSince>0</failedSince><name>test_differentiable_core</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_drop_sed</className><duration>2.401</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_feedback_sfclyr</className><duration>2.302</duration><failedSince>0</failedSince><name>test_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_feedback_sfclyr</className><duration>0.935</duration><failedSince>0</failedSince><name>test_physical_invariants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cloud_feedback_sfclyr</className><duration>1.213</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cobra_sfclyr</className><duration>1.328</duration><failedSince>0</failedSince><name>test_cobra_assigns_co2_heat_and_moisture_scalar_fluxes</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_coefs_semiimpl</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coefs_wp2xp_semiimpl oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(4)
        worst = 0.0
        n_red = 0
        for trial in range(20):
            wp2 = rng.uniform(0.05, 2.0, (NG, NZ)); xp2 = rng.uniform(0.05, 2.0, (NG, NZ))
            sgn = np.sign(rng.uniform(-1, 1, (NG, NZ))); sgn[sgn == 0] = 1.0
            mf = rng.uniform(0.1, 0.9, (NG, NZ)); F_w = rng.uniform(0.05, 1.0, (NG, NZ)); F_x = rng.uniform(0.05, 1.0, (NG, NZ))
            cw1 = rng.uniform(0.1, 2.0, (NG, NZ)); cw2 = rng.uniform(0.1, 2.0, (NG, NZ))
            cx1 = rng.uniform(0.1, 2.0, (NG, NZ)); cx2 = rng.uniform(0.1, 2.0, (NG, NZ))
            if trial % 4 == 0:   # reduced branch (zero sigma products)
                cw1 = np.zeros((NG, NZ)); cw2 = np.zeros((NG, NZ)); n_red += 1
&gt;           fc, ft = clubb_f2py.f2py_calc_coefs_wp2xp_semiimpl(wp2, xp2, sgn, mf, F_w, F_x, cw1, cw2, cx1, cx2)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_coefs_semiimpl.py:51: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_coefs_semiimpl</className><duration>0.706</duration><errorDetails>AssertionError: calc_coefs_wpxp2_semiimpl f2py mismatch 2.32e+01
assert np.float64(23.21359948303605) &lt; 1e-11</errorDetails><errorStackTrace>def test_wpxp2_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coefs_wpxp2_semiimpl oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(5)
        worst = 0.0; n_zero = 0
        for trial in range(20):
            wp2 = rng.uniform(0.05, 2.0, (NG, NZ)); wpxp = rng.uniform(-1, 1, (NG, NZ))
            mf = rng.uniform(0.1, 0.9, (NG, NZ)); F_w = rng.uniform(0.05, 1.0, (NG, NZ))
            cx1 = rng.uniform(0.1, 2.0, (NG, NZ)); cx2 = rng.uniform(0.1, 2.0, (NG, NZ))
            if trial % 4 == 0:
                F_w = np.zeros((NG, NZ)); n_zero += 1   # F_w=0 -&gt; 0,0 branch
            fc, ft = clubb_f2py.f2py_calc_coefs_wpxp2_semiimpl(wp2, wpxp, mf, F_w, cx1, cx2)
            gc, gt = calc_coefs_wpxp2_semiimpl(wp2, wpxp, mf, F_w, cx1, cx2)
            worst = max(worst, np.max(np.abs(np.asarray(gc) - np.asarray(fc))),
                        np.max(np.abs(np.asarray(gt) - np.asarray(ft))))
&gt;       assert worst &lt; 1e-11, f"calc_coefs_wpxp2_semiimpl f2py mismatch {worst:.2e}"
E       AssertionError: calc_coefs_wpxp2_semiimpl f2py mismatch 2.32e+01
E       assert np.float64(23.21359948303605) &lt; 1e-11

clubb_jax/pytests/auto_llm_generated_pytests/test_coefs_semiimpl.py:79: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_wpxp2_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_coefs_semiimpl</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_wpxpyp_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coefs_wpxpyp_semiimpl oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(6)
        worst = 0.0; n_red = 0
        for trial in range(20):
            sh = (NG, NZ)
            wp2 = rng.uniform(0.05, 2.0, sh); xp2 = rng.uniform(0.05, 2.0, sh); yp2 = rng.uniform(0.05, 2.0, sh)
            wpxp = rng.uniform(-1, 1, sh); wpyp = rng.uniform(-1, 1, sh)
            sx = np.sign(wpxp); sx[sx == 0] = 1.0; sy = np.sign(wpyp); sy[sy == 0] = 1.0
            mf = rng.uniform(0.1, 0.9, sh); F_w = rng.uniform(0.05, 1.0, sh); F_x = rng.uniform(0.05, 1.0, sh); F_y = rng.uniform(0.05, 1.0, sh)
            cw1 = rng.uniform(0.1, 2, sh); cw2 = rng.uniform(0.1, 2, sh)
            cx1 = rng.uniform(0.1, 2, sh); cx2 = rng.uniform(0.1, 2, sh)
            cy1 = rng.uniform(0.1, 2, sh); cy2 = rng.uniform(0.1, 2, sh)
            if trial % 4 == 0:
                cx1 = np.zeros(sh); cx2 = np.zeros(sh); n_red += 1   # reduced branch
            args = (wp2, xp2, yp2, wpxp, wpyp, sx, sy, mf, F_w, F_x, F_y, cw1, cw2, cx1, cx2, cy1, cy2)
&gt;           fc, ft = clubb_f2py.f2py_calc_coefs_wpxpyp_semiimpl(*args)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_coefs_semiimpl.py:105: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_wpxpyp_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_coefs_semiimpl</className><duration>2.197</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_comp_corr_norm</className><duration>1.887</duration><failedSince>0</failedSince><name>test_structure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_comp_corr_norm</className><duration>0.04</duration><failedSince>0</failedSince><name>test_assembly_rules</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_comp_corr_norm</className><duration>0.036</duration><failedSince>0</failedSince><name>test_adg_zeros_w_corr</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_comp_corr_norm</className><duration>0.03</duration><failedSince>0</failedSince><name>test_no_w_corr_uses_prescribed</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_comp_corr_norm</className><duration>2.222</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.139</duration><failedSince>0</failedSince><name>test_x_hm</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.001</duration><failedSince>0</failedSince><name>test_hmx_hmy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.001</duration><failedSince>0</failedSince><name>test_w_hm_both_branches</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.273</duration><failedSince>0</failedSince><name>test_eta_product_and_grad</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.045</duration><failedSince>0</failedSince><name>test_w_x</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_corr_ip</className><duration>0.062</duration><failedSince>0</failedSince><name>test_chi_eta</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_precip_frac_specify</className><duration>1.261</duration><failedSince>0</failedSince><name>test_conservation_general_branch_no_clip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_precip_frac_specify</className><duration>0.007</duration><failedSince>0</failedSince><name>test_conservation_upsilon_one_branch</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_precip_frac_specify</className><duration>0.015</duration><failedSince>0</failedSince><name>test_validity_bounds_broad_sweep</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_precip_frac_specify</className><duration>1.935</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_component_precip_frac_specify</className><duration>1.754</duration><failedSince>0</failedSince><name>test_minimum_precipitation_fraction_does_not_lose_pdf_component</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_gamma_skw</className><duration>0.002</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 2.65833663  0.06796532  2.85746223 -2.51498386  0.64413499 -0.74108049
   1.81140724 -1.9528331   2.22981165]
 [ 0.2636484   2.41329048 -0.13707886 -0.41702233  1.73368031  2.904918
  -0.78164524  2.81359722  2.57415833]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py compute_gamma_skw oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(4)
        skw_zm = rng.uniform(-3, 3, (NG, NZM))
        skw_zt = rng.uniform(-3, 3, (NG, NZT))
        worst = 0.0
        configs = [(True, _params(0.32, 0.08, 1.2)),     # varying
                   (False, _params(0.32, 0.08, 1.2)),    # constant
                   (True, _params(0.25, 0.25, 1.0))]     # degenerate coefs -&gt; constant gamma_coef
        for l_gamma, params in configs:
            f_zm, f_zt = clubb_f2py.f2py_compute_gamma_skw(l_gamma, skw_zm, params, skw_zt)
&gt;           g_zm = np.asarray(compute_gamma_Skw(skw_zm, params, l_gamma))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 2.65833663  0.06796532  2.85746223 -2.51498386  0.64413499 -0.74108049
E              1.81140724 -1.9528331   2.22981165]
E            [ 0.2636484   2.41329048 -0.13707886 -0.41702233  1.73368031  2.904918
E             -0.78164524  2.81359722  2.57415833]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_gamma_skw.py:62: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_gamma_skw</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 0.  1. -2.]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_closed_form():
        gc, gb, gcf = 0.32, 0.08, 1.2
        params = _params(gc, gb, gcf)[:1]                 # single column to match skw's ngrdcol=1
        skw = np.array([[0.0, 1.0, -2.0]])
&gt;       got = np.asarray(compute_gamma_Skw(skw, params, True))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 0.  1. -2.]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_gamma_skw.py:73: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_gamma_skw</className><duration>0.061</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[[ 0.07092975  2.70278218 -2.13504232  2.69189668 -1.12901129 -0.46004131
   1.96621556 -0.54480518  0.29756213]
 [-2.83464532  1.52107865  0.22885988 -1.0216097   1.73057222 -1.18083102
  -0.27901266 -2.19574982 -0.58132208]], typeof(tangent)=f64[2,9]). The error was:
TypeError: unhashable type: 'LinearizeTracer'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        params = _params(0.32, 0.08, 1.2)
        def loss(skw):
            return jnp.sum(compute_gamma_Skw(skw, params, True) ** 2)
&gt;       g = np.asarray(jax.grad(loss)(jnp.asarray(np.random.default_rng(1).uniform(-3, 3, (NG, NZM)))))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_gamma_skw.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

skw = GradTracer(primal=[[ 0.07092975  2.70278218 -2.13504232  2.69189668 -1.12901129 -0.46004131
   1.96621556 -0.54480518 ...7865  0.22885988 -1.0216097   1.73057222 -1.18083102
  -0.27901266 -2.19574982 -0.58132208]], typeof(tangent)=f64[2,9])

    def loss(skw):
&gt;       return jnp.sum(compute_gamma_Skw(skw, params, True) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[[ 0.07092975  2.70278218 -2.13504232  2.69189668 -1.12901129 -0.46004131
E          1.96621556 -0.54480518  0.29756213]
E        [-2.83464532  1.52107865  0.22885988 -1.0216097   1.73057222 -1.18083102
E         -0.27901266 -2.19574982 -0.58132208]], typeof(tangent)=f64[2,9]). The error was:
E       TypeError: unhashable type: 'LinearizeTracer'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_gamma_skw.py:84: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_rtp2_from_chi</className><duration>0.627</duration><failedSince>0</failedSince><name>test_compute_rtp2_from_chi_vs_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_rtp2_from_chi</className><duration>1.964</duration><failedSince>0</failedSince><name>test_compute_rtp2_from_chi_grad</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_sigma_sqd_w</className><duration>0.19</duration><errorDetails>ValueError: clubb_f2py.clubb_f2py.f2py_compute_sigma_sqd_w: failed to create array from the 2nd argument `wp2` -- 0-th dimension must be fixed to 1 but got 2</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py compute_sigma_sqd_w oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        f = _fields(nzm, 5)
        order = ('gamma_Skw_fnc', 'wp2', 'thlp2', 'rtp2', 'up2', 'vp2', 'wpthlp', 'wprtp', 'upwp', 'vpwp')
        worst = 0.0
        for l_pred in (False, True):
&gt;           ref = np.asarray(clubb_f2py.f2py_compute_sigma_sqd_w(
                nzt, *[np.asfortranarray(f[k]) for k in order], l_pred))
E           ValueError: clubb_f2py.clubb_f2py.f2py_compute_sigma_sqd_w: failed to create array from the 2nd argument `wp2` -- 0-th dimension must be fixed to 1 but got 2

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_sigma_sqd_w.py:70: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_sigma_sqd_w</className><duration>0.003</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.28752864 0.36916414 0.33270571 0.16756216 0.19004989 0.36206603
  0.10157959 0.34636853 0.33912083 0.24038049 0.19090973 0.18352768
  0.17646088 0.23352289 0.25136448 0.26604921 0.39865009 0.33779858
  0.28665377 0.39668804 0.16459261 0.14806361 0.28376188 0.1131826
  0.11070408 0.25446665 0.23986181 0.37515033 0.28876788 0.25423529
  0.24906203]
 [0.17425448 0.10353821 0.15772064 0.30760964 0.16018202 0.21086089
  0.10112027 0.34901432 0.14633832 0.18027979 0.36409965 0.25293724
  0.35414507 0.29191515 0.32253128 0.12744868 0.26234315 0.25233167
  0.36140181 0.20837922 0.27945522 0.11777549 0.21628954 0.1969109
  0.14505992 0.34490143 0.21383385 0.39362437 0.27699751 0.28151688
  0.29139897]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_bounds():
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = jgr.zm.shape[1]
        f = _fields(nzm, 7)
        order = ('gamma_Skw_fnc', 'wp2', 'thlp2', 'rtp2', 'up2', 'vp2', 'wpthlp', 'wprtp', 'upwp', 'vpwp')
&gt;       s = np.asarray(compute_sigma_sqd_w(*[f[k] for k in order], True, jgr))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.28752864 0.36916414 0.33270571 0.16756216 0.19004989 0.36206603
E         0.10157959 0.34636853 0.33912083 0.24038049 0.19090973 0.18352768
E         0.17646088 0.23352289 0.25136448 0.26604921 0.39865009 0.33779858
E         0.28665377 0.39668804 0.16459261 0.14806361 0.28376188 0.1131826
E         0.11070408 0.25446665 0.23986181 0.37515033 0.28876788 0.25423529
E         0.24906203]
E        [0.17425448 0.10353821 0.15772064 0.30760964 0.16018202 0.21086089
E         0.10112027 0.34901432 0.14633832 0.18027979 0.36409965 0.25293724
E         0.35414507 0.29191515 0.32253128 0.12744868 0.26234315 0.25233167
E         0.36140181 0.20837922 0.27945522 0.11777549 0.21628954 0.1969109
E         0.14505992 0.34490143 0.21383385 0.39362437 0.27699751 0.28151688
E         0.29139897]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_sigma_sqd_w.py:83: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_bounds</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_sigma_sqd_w</className><duration>0.054</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.36107476 0.18604516 0.28094445 0.33326022 0.31482239 0.37461404
  0.35811809 0.37547129 0.10797632 0.2311744  0.2454833  0.11954626
  0.10168782 0.34918643 0.39499067 0.33538296 0.19468105 0.31160011
  0.18975432 0.32222454 0.18392417 0.33477727 0.39632222 0.39587156
  0.36485877 0.37384302 0.31246207 0.26634906 0.37697146 0.12691923
  0.21103946]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        jgr = setup_grid(ngrdcol=1, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = jgr.zm.shape[1]
        global _NG
        saved = _NG; _NG = 1
        try:
            f = _fields(nzm, 9)
            order = ('gamma_Skw_fnc', 'wp2', 'thlp2', 'rtp2', 'up2', 'vp2', 'wpthlp', 'wprtp', 'upwp', 'vpwp')
            def loss(wpthlp):
                ff = dict(f); ff['wpthlp'] = wpthlp
                return jnp.sum(compute_sigma_sqd_w(*[ff[k] for k in order], True, jgr) ** 2)
&gt;           g = np.asarray(jax.grad(loss)(jnp.asarray(f['wpthlp'])))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_sigma_sqd_w.py:101: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

wpthlp = GradTracer(primal=[[-0.0823953   0.06430779  0.26990302  0.20396877 -0.08204958  0.4383344
   0.48180162  0.35123097 -...6
   0.18814697 -0.09385239 -0.33021589  0.30629132 -0.41984701  0.24821026
  -0.19028652]], typeof(tangent)=f64[1,31])

    def loss(wpthlp):
        ff = dict(f); ff['wpthlp'] = wpthlp
&gt;       return jnp.sum(compute_sigma_sqd_w(*[ff[k] for k in order], True, jgr) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.36107476 0.18604516 0.28094445 0.33326022 0.31482239 0.37461404
E         0.35811809 0.37547129 0.10797632 0.2311744  0.2454833  0.11954626
E         0.10168782 0.34918643 0.39499067 0.33538296 0.19468105 0.31160011
E         0.18975432 0.32222454 0.18392417 0.33477727 0.39632222 0.39587156
E         0.36485877 0.37384302 0.31246207 0.26634906 0.37697146 0.12691923
E         0.21103946]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_sigma_sqd_w.py:100: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_uv_tndcy</className><duration>0.058</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [9.64799869e-05 1.16111763e-04]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_matches_f90_sign_convention():
        rng = np.random.default_rng(543)
        fcor, ug, vg, um, vm, um_f, vm_f = _inputs(rng)
&gt;       um_t, vm_t = compute_uv_tndcy(jnp.asarray(fcor), jnp.asarray(ug), jnp.asarray(vg),
                                      jnp.asarray(um), jnp.asarray(vm), jnp.asarray(um_f), jnp.asarray(vm_f))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [9.64799869e-05 1.16111763e-04]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_uv_tndcy.py:50: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_matches_f90_sign_convention</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_uv_tndcy</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [0.00011251 0.00013972]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_geostrophic_balance():
        """With wind == geostrophic wind and zero forcing, the Coriolis+geostrophic tendency must vanish exactly."""
        rng = np.random.default_rng(7)
        fcor = rng.uniform(0.5e-4, 1.5e-4, (_NG,))
        ug = rng.uniform(-10.0, 10.0, (_NG, _NZT)); vg = rng.uniform(-10.0, 10.0, (_NG, _NZT))
        zero = np.zeros((_NG, _NZT))
&gt;       um_t, vm_t = compute_uv_tndcy(jnp.asarray(fcor), jnp.asarray(ug), jnp.asarray(vg),
                                      jnp.asarray(ug), jnp.asarray(vg), jnp.asarray(zero), jnp.asarray(zero))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [0.00011251 0.00013972]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_uv_tndcy.py:68: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_geostrophic_balance</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_uv_tndcy</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [0.0001006  0.00010651]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_forcing_additive_and_grad():
        rng = np.random.default_rng(99)
        fcor, ug, vg, um, vm, um_f, vm_f = _inputs(rng)
        # Forcing enters additively: tndcy(forcing) − tndcy(0) == forcing.
&gt;       a_um, a_vm = compute_uv_tndcy(jnp.asarray(fcor), jnp.asarray(ug), jnp.asarray(vg),
                                      jnp.asarray(um), jnp.asarray(vm), jnp.asarray(um_f), jnp.asarray(vm_f))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [0.0001006  0.00010651]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_compute_uv_tndcy.py:79: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_forcing_additive_and_grad</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_compute_xp3</className><duration>0.784</duration><failedSince>0</failedSince><name>test_f2py_oracle_adg1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_config_flags_complete</className><duration>0.39</duration><failedSince>0</failedSince><name>test_config_flags_cover_all_fortran_configurable_flags</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_config_flags_complete</className><duration>0.022</duration><failedSince>0</failedSince><name>test_default_values_match_fortran</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_constants</className><duration>0.011</duration><failedSince>0</failedSince><name>test_public_constant_inventory_matches_fortran_source</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_constants</className><duration>1.737</duration><failedSince>0</failedSince><name>test_legacy_constants_aggregate_does_not_return</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_constants</className><duration>0.001</duration><failedSince>0</failedSince><name>test_constants_match_fortran_source</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.004</duration><failedSince>0</failedSince><name>test_default_table_storage</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.001</duration><failedSince>0</failedSince><name>test_set_corr_arrays_to_default</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.0</duration><failedSince>0</failedSince><name>test_kk_prescribed_correlations</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.0</duration><failedSince>0</failedSince><name>test_def_corr_idx</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.0</duration><failedSince>0</failedSince><name>test_get_corr_var_index</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_corr_varnce</className><duration>0.012</duration><failedSince>0</failedSince><name>test_kk_hm_metadata</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cos_solar_zen</className><duration>0.763</duration><failedSince>0</failedSince><name>test_bounds</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_cos_solar_zen</className><duration>8.269</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_covar_KK_mixt_frac_linearity</className><duration>2.477</duration><failedSince>0</failedSince><name>test_exact_mixt_frac_linearity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_covar_KK_mixt_frac_linearity</className><duration>0.546</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_denorm_transform_corr</className><duration>1.75</duration><failedSince>0</failedSince><name>test_structure_and_normal_pairs</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_denorm_transform_corr</className><duration>0.056</duration><failedSince>0</failedSince><name>test_transform_entries</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_denorm_transform_corr</className><duration>2.937</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnose_correlations</className><duration>0.253</duration><failedSince>0</failedSince><name>test_helpers</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnose_correlations</className><duration>6.096</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnose_correlations</className><duration>2.603</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnose_correlations</className><duration>0.001</duration><failedSince>0</failedSince><name>test_corr_array_assertion_checks</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnose_upxp</className><duration>0.196</duration><errorDetails>TypeError: diagnose_upxp() missing 3 required positional arguments: 'C6x_Skw_fnc', 'tau_C6_zm', and 'C7_Skw_fnc'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            clubb_f2py, jgr, ng, nzm = _setup_f2py_grid()
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py diagnose_upxp oracle: SKIP ({type(e).__name__})")
        nzt = nzm - 1
        ddzt = lambda a: np.asarray(clubb_f2py.f2py_ddzt_2d(nzm, a))   # zt-field → zm-field, bit-shadowed
        rng = np.random.default_rng(8)
        worst = 0.0
        for _ in range(12):
            ypwp = rng.uniform(-0.5, 0.5, (ng, nzm))
            xm   = rng.uniform(280.0, 320.0, (ng, nzt))      # e.g. thlm (zt)
            wpxp = rng.uniform(-0.5, 0.5, (ng, nzm))
            ym   = rng.uniform(-15.0, 15.0, (ng, nzt))       # e.g. um (zt)
            C6x  = rng.uniform(2.0, 6.0, (ng, nzm))
            tau  = rng.uniform(100.0, 900.0, (ng, nzm))
            C7   = rng.uniform(0.3, 0.8, (ng, nzm))
    
&gt;           j = np.asarray(diagnose_upxp(jnp.asarray(ypwp), jnp.asarray(xm), jnp.asarray(wpxp),
                                         jnp.asarray(ym), jnp.asarray(C6x), jnp.asarray(tau), jnp.asarray(C7), jgr))
E           TypeError: diagnose_upxp() missing 3 required positional arguments: 'C6x_Skw_fnc', 'tau_C6_zm', and 'C7_Skw_fnc'

clubb_jax/pytests/auto_llm_generated_pytests/test_diagnose_upxp.py:72: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diagnostic_cache</className><duration>1.269</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>2.792</duration><failedSince>0</failedSince><name>test_saturation_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>1.646</duration><failedSince>0</failedSince><name>test_solver_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>1.144</duration><failedSince>0</failedSince><name>test_penta_solver_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>0.82</duration><failedSince>0</failedSince><name>test_fill_holes_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>0.4</duration><failedSince>0</failedSince><name>test_pdf_cloud_frac_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>0.216</duration><failedSince>0</failedSince><name>test_composability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>1.875</duration><failedSince>0</failedSince><name>test_brunt_vaisala_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>11.852</duration><failedSince>0</failedSince><name>test_kk_microphysics_drivers_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>10.774</duration><failedSince>0</failedSince><name>test_kk_autoconversion_driver_array_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>2.622</duration><failedSince>0</failedSince><name>test_adg1_w_closure_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>2.532</duration><failedSince>0</failedSince><name>test_adg1_full_pdf_driver_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>11.022</duration><failedSince>0</failedSince><name>test_mixing_length_forward_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>5</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>5.62</duration><failedSince>0</failedSince><name>test_mixing_length_reverse_differentiable</name><properties></properties><skipped>true</skipped><skippedMessage>mixing_length reverse-mode gradients currently contain NaNs; forward-mode JVP remains covered</skippedMessage><status>SKIPPED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_differentiability</className><duration>12.066</duration><failedSince>0</failedSince><name>test_kk_covar_driver_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.387</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.386</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_boundary_zeros</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.599</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_conservation</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.219</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_values</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.289</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_main_diag_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.099</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.092</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_boundary_zeros</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.169</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_conservation</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.148</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_values</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.183</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_main_diag_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.164</duration><failedSince>0</failedSince><name>test_term_dp1_lhs_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.084</duration><failedSince>0</failedSince><name>test_term_dp1_lhs_boundary_zeros</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.09</duration><failedSince>0</failedSince><name>test_term_dp1_lhs_interior_values</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.138</duration><failedSince>0</failedSince><name>test_term_dp1_lhs_multi_col</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.18</duration><failedSince>0</failedSince><name>test_xp2_xpyp_lhs_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.138</duration><failedSince>0</failedSince><name>test_xp2_xpyp_lhs_boundary_conditions</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.154</duration><failedSince>0</failedSince><name>test_xp2_xpyp_lhs_interior_formula</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_diffusion</className><duration>0.448</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_driver_error_checks</className><duration>0.571</duration><failedSince>0</failedSince><name>test_driver_error_checks_follow_debug_level[-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_driver_error_checks</className><duration>0.007</duration><failedSince>0</failedSince><name>test_driver_error_checks_follow_debug_level[0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_driver_error_checks</className><duration>0.006</duration><failedSince>0</failedSince><name>test_driver_error_checks_follow_debug_level[1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_driver_error_checks</className><duration>0.006</duration><failedSince>0</failedSince><name>test_driver_error_checks_follow_debug_level[2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_error_code</className><duration>0.001</duration><failedSince>0</failedSince><name>test_negative_debug_level_disables_level_zero_checks</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>1.888</duration><failedSince>0</failedSince><name>test_at_threshold_is_identity_in_both_ad_modes[0.0-fill_holes_global]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>1.483</duration><failedSince>0</failedSince><name>test_at_threshold_is_identity_in_both_ad_modes[0.0-fill_holes_sliding_window]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.741</duration><failedSince>0</failedSince><name>test_at_threshold_is_identity_in_both_ad_modes[0.125-fill_holes_global]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.778</duration><failedSince>0</failedSince><name>test_at_threshold_is_identity_in_both_ad_modes[0.125-fill_holes_sliding_window]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.53</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[False-1-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>1.146</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[False-1-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.655</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[False--1-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.868</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[False--1-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.549</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[True-1-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.718</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[True-1-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.396</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[True--1-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.839</duration><failedSince>0</failedSince><name>test_zero_windows_preserve_mass_and_its_derivatives[True--1-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.84</duration><failedSince>0</failedSince><name>test_active_fill_derivatives_match_finite_differences[1.0-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.826</duration><failedSince>0</failedSince><name>test_active_fill_derivatives_match_finite_differences[1.0-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.39</duration><failedSince>0</failedSince><name>test_active_fill_derivatives_match_finite_differences[-1.0-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.783</duration><failedSince>0</failedSince><name>test_active_fill_derivatives_match_finite_differences[-1.0-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.232</duration><failedSince>0</failedSince><name>test_known_conservative_forward_answer[fill_holes_global]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>0.178</duration><failedSince>0</failedSince><name>test_known_conservative_forward_answer[fill_holes_sliding_window]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_autodiff</className><duration>1.429</duration><failedSince>0</failedSince><name>test_horizontal_tke_fill_inactive_division_and_active_derivatives</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_global</className><duration>0.229</duration><failedSince>0</failedSince><name>test_mass_conservation_and_no_holes</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_global</className><duration>0.515</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_mean</className><duration>0.241</duration><failedSince>0</failedSince><name>test_mean_fill_raises_dry_top_and_conserves_mass</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_mean</className><duration>0.249</duration><failedSince>0</failedSince><name>test_mean_fill_noop_when_all_above_threshold</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_mean</className><duration>0.229</duration><failedSince>0</failedSince><name>test_thlm_fill_is_noop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_mean</className><duration>0.466</duration><failedSince>0</failedSince><name>test_fill_holes_vertical_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_mean</className><duration>0.175</duration><failedSince>0</failedSince><name>test_fill_holes_wp2_from_horz_tke_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_sliding_window</className><duration>0.295</duration><failedSince>0</failedSince><name>test_conservation_and_no_holes</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_sliding_window</className><duration>0.001</duration><failedSince>0</failedSince><name>test_no_holes_is_noop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_fill_holes_sliding_window</className><duration>0.798</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.038</duration><failedSince>0</failedSince><name>test_complete_forcing_modules_keep_source_routine_inventory_and_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.012</duration><failedSince>0</failedSince><name>test_prescribe_forcings_keeps_supported_source_argument_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.012</duration><failedSince>0</failedSince><name>test_forcing_driver_keeps_explicit_call_and_result_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.004</duration><failedSince>0</failedSince><name>test_input_reader_keeps_source_routine_inventory_and_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_file_functions_keeps_source_routine_inventory_and_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.032</duration><failedSince>0</failedSince><name>test_device_physics_does_not_import_numpy_or_raw_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_forcing_port_structure</className><duration>0.073</duration><failedSince>0</failedSince><name>test_removed_duplicate_forcing_helpers_do_not_return</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gabls3_night_stability</className><duration>0.163</duration><failedSince>0</failedSince><name>test_gm1_gh1_unstable_regime</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gabls3_night_stability</className><duration>0.123</duration><failedSince>0</failedSince><name>test_fm1_fh1_formula</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gabls3_night_stability</className><duration>0.256</duration><failedSince>0</failedSince><name>test_landflx_stable_default_real_boundaries</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gabls3_night_stability</className><duration>0.001</duration><failedSince>0</failedSince><name>test_gh1_called_domain</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gabls3_night_stability</className><duration>0.187</duration><failedSince>0</failedSince><name>test_psi_h_stable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gfdl_activation</className><duration>0.001</duration><failedSince>0</failedSince><name>test_disabled_activation_interfaces_cannot_simulate[aer_act_clubb_quadrature_Gauss]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gfdl_activation</className><duration>0.0</duration><failedSince>0</failedSince><name>test_disabled_activation_interfaces_cannot_simulate[erff]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gfdl_activation</className><duration>0.0</duration><failedSince>0</failedSince><name>test_disabled_activation_interfaces_cannot_simulate[Loading]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_gfdl_activation</className><duration>0.0</duration><failedSince>0</failedSince><name>test_disabled_activation_interfaces_cannot_simulate[get_unit]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>1.565</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>1.097</duration><failedSince>0</failedSince><name>test_stretched_grid_operators</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>0.031</duration><failedSince>0</failedSince><name>test_grid_type3_construction_matches_fortran</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>0.0</duration><failedSince>0</failedSince><name>test_descending_grid_rejected</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>0.104</duration><failedSince>0</failedSince><name>test_setup_grid_is_sole_grid_constructor</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>2.126</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_grid_operators</className><duration>0.003</duration><failedSince>0</failedSince><name>test_grid_construction_matches_fortran</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydromet_pdf_parameter</className><duration>0.159</duration><failedSince>0</failedSince><name>test_hydromet_pdf_params_zero</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydromet_pdf_parameter</className><duration>0.043</duration><failedSince>0</failedSince><name>test_precip_fracs_init_and_zero</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometeor_mixed_moments</className><duration>5.027</duration><failedSince>0</failedSince><name>test_driver_vs_literal_loop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometeor_mixed_moments</className><duration>4.106</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometeor_mixed_moments</className><duration>0.013</duration><failedSince>0</failedSince><name>test_compute_mean_binormal_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometp2_zt</className><duration>0.45</duration><failedSince>0</failedSince><name>test_matches_f90_formula</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometp2_zt</className><duration>0.002</duration><failedSince>0</failedSince><name>test_safe_division_and_in_cloud_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrometp2_zt</className><duration>0.345</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrostatic</className><duration>6.125</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_hydrostatic</className><duration>4.22</duration><failedSince>0</failedSince><name>test_f2py_oracle_stretched</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>0.27</duration><failedSince>0</failedSince><name>test_thlm2T_in_K_vs_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>2.734</duration><failedSince>0</failedSince><name>test_ice_dfsn_vs_numpy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>0.344</duration><failedSince>0</failedSince><name>test_branches_and_coupling</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>0.129</duration><failedSince>0</failedSince><name>test_over_depletion_cap</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>2.841</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ice_dfsn</className><duration>2.544</duration><failedSince>0</failedSince><name>test_columns_use_their_own_grid_spacing_eager_and_jit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_index_mapping</className><duration>0.001</duration><failedSince>0</failedSince><name>test_warm_rain_only_pdf</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_index_mapping</className><duration>0.0</duration><failedSince>0</failedSince><name>test_absent_species_guard</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_index_mapping</className><duration>0.0</duration><failedSince>0</failedSince><name>test_full_species</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_index_mapping</className><duration>0.001</duration><failedSince>0</failedSince><name>test_sclr_idx_fields_mirror_fortran_type</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.0</duration><failedSince>0</failedSince><name>test_lin_interp_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>2.921</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.825</duration><failedSince>0</failedSince><name>test_monotonicity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.621</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.0</duration><failedSince>0</failedSince><name>test_linear_interp_factor</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.193</duration><failedSince>0</failedSince><name>test_zlinterp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.626</duration><failedSince>0</failedSince><name>test_zlinterp_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>34.456</duration><failedSince>0</failedSince><name>test_lin_interp_between_grids</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>7.948</duration><failedSince>0</failedSince><name>test_plinterp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_interpolation</className><duration>0.595</duration><failedSince>0</failedSince><name>test_plinterp_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_inverse_hydrostatic</className><duration>0.78</duration><failedSince>0</failedSince><name>test_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_inverse_hydrostatic</className><duration>1.251</duration><failedSince>0</failedSince><name>test_roundtrip_with_forward</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_inverse_hydrostatic</className><duration>0.658</duration><failedSince>0</failedSince><name>test_constant_thvm_analytic</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_inverse_hydrostatic</className><duration>2.881</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.006</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[False-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[False-]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[False-gpu,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[False-FUTURE,option=some value]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[True-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[True-]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[True-gpu,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_main_passes_opaque_options_to_case_launch[True-FUTURE,option=some value]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[cpu]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[gpu,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[FUTURE,option=some value]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[gpu,unknown]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[literal;$NOT_EXPANDED]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_runner_forwards_value_verbatim_without_interpreting_it[gpu\n,typo]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.087</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.071</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[tpu]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.071</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[gpu,]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.085</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[gpu,typo]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.099</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[cpu,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.085</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[gpu,xla_prealloc,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.089</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[gpu,,xla_prealloc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.075</duration><failedSince>0</failedSince><name>test_bad_options_are_rejected_by_wrapper_before_setup[gpu\n,typo]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.089</duration><failedSince>0</failedSince><name>test_wrapper_rejects_conflicting_or_duplicate_settings[options0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.086</duration><failedSince>0</failedSince><name>test_wrapper_rejects_conflicting_or_duplicate_settings[options1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.067</duration><failedSince>0</failedSince><name>test_wrapper_rejects_conflicting_or_duplicate_settings[options2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.068</duration><failedSince>0</failedSince><name>test_wrapper_rejects_preallocation_on_cpu</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_gpu_profile_resolves_to_the_host_native_backend[Darwin-metal]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_gpu_profile_resolves_to_the_host_native_backend[Linux-cuda13]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.003</duration><failedSince>0</failedSince><name>test_discovery_without_target_venv_uses_old_host_python[cpu-0.11.0-host_version0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.003</duration><failedSince>0</failedSince><name>test_discovery_without_target_venv_uses_old_host_python[cpu-0.11.0-host_version1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_discovery_without_target_venv_uses_old_host_python[metal-0.4.34-host_version0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_discovery_without_target_venv_uses_old_host_python[metal-0.4.34-host_version1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_discovery_plans_packages_for_target_but_executes_on_host</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_unsuitable_setup_python_does_not_block_discovery</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.003</duration><failedSince>0</failedSince><name>test_scm_rejects_duplicate_or_conflicting_implementations[options0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_rejects_duplicate_or_conflicting_implementations[options1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_rejects_duplicate_or_conflicting_implementations[options2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_scm_rejects_duplicate_or_conflicting_implementations[options3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.149</duration><failedSince>0</failedSince><name>test_comparison_help_does_not_prepare_environment</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[None-cpu]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[None-cuda13]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[None-metal]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[custom-runtime-cpu]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[custom-runtime-cuda13]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.002</duration><failedSince>0</failedSince><name>test_environment_setup_uses_launcher_paths_and_restarts_once[custom-runtime-metal]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jax_cli_options</className><duration>0.001</duration><failedSince>0</failedSince><name>test_environment_setup_failure_stops_before_restart</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>1.076</duration><failedSince>0</failedSince><name>test_derived_type_pytree_metadata_is_static</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.354</duration><failedSince>0</failedSince><name>test_xp2_xpyp_single_lhs_valid_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.267</duration><failedSince>0</failedSince><name>test_term_tp_rhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.085</duration><failedSince>0</failedSince><name>test_term_dp1_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.044</duration><failedSince>0</failedSince><name>test_term_dp1_rhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.081</duration><failedSince>0</failedSince><name>test_term_pr1_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.099</duration><failedSince>0</failedSince><name>test_term_pr2_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.287</duration><failedSince>0</failedSince><name>test_xp2_xpyp_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.697</duration><failedSince>0</failedSince><name>test_xp2_xpyp_solve_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.02</duration><failedSince>0</failedSince><name>test_stats_finalize_xp2_xpyp_terms_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.165</duration><failedSince>0</failedSince><name>test_xp2_xpyp_uv_rhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.161</duration><failedSince>0</failedSince><name>test_xp2_xpyp_rhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.336</duration><failedSince>0</failedSince><name>test_calc_xp2_xpyp_ta_terms_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.02</duration><failedSince>0</failedSince><name>test_pos_definite_variances_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.502</duration><failedSince>0</failedSince><name>test_solve_xp2_xpyp_with_single_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.832</duration><failedSince>0</failedSince><name>test_solve_xp2_xpyp_with_multiple_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.986</duration><failedSince>0</failedSince><name>test_advance_xp2_xpyp_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.08</duration><failedSince>0</failedSince><name>test_calc_ddzt_umvm_sqd_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.109</duration><failedSince>0</failedSince><name>test_calc_wp3_on_wp2_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.071</duration><failedSince>0</failedSince><name>test_calc_stability_correction_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.235</duration><failedSince>0</failedSince><name>test_calc_brunt_vaisala_freq_sqd_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.06</duration><failedSince>0</failedSince><name>test_calc_Ri_zm_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.095</duration><failedSince>0</failedSince><name>test_compute_Cx_fnc_Richardson_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.133</duration><failedSince>0</failedSince><name>test_Lscale_width_vert_avg_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.14</duration><failedSince>0</failedSince><name>test_wp23_term_splat_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.055</duration><failedSince>0</failedSince><name>test_smooth_min_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.061</duration><failedSince>0</failedSince><name>test_smooth_max_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.079</duration><failedSince>0</failedSince><name>test_smooth_heaviside_peskin_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.069</duration><failedSince>0</failedSince><name>test_calc_xpwp_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.123</duration><failedSince>0</failedSince><name>test_calculate_thlp2_rad_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.094</duration><failedSince>0</failedSince><name>test_clip_covar_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.096</duration><failedSince>0</failedSince><name>test_clip_skewness_core_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.066</duration><failedSince>0</failedSince><name>test_clip_rcm_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.131</duration><failedSince>0</failedSince><name>test_diffusion_zt_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.115</duration><failedSince>0</failedSince><name>test_diffusion_zm_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.153</duration><failedSince>0</failedSince><name>test_fill_holes_global_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.205</duration><failedSince>0</failedSince><name>test_fill_holes_sliding_window_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.324</duration><failedSince>0</failedSince><name>test_fill_holes_vertical_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.129</duration><failedSince>0</failedSince><name>test_fill_holes_wp2_from_horz_tke_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.221</duration><failedSince>0</failedSince><name>test_term_ma_zt_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.08</duration><failedSince>0</failedSince><name>test_term_ma_zm_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.363</duration><failedSince>0</failedSince><name>test_penta_lu_solve_single_rhs_multiple_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.417</duration><failedSince>0</failedSince><name>test_penta_lu_solve_multiple_rhs_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.517</duration><failedSince>0</failedSince><name>test_tridiag_lu_solve_single_rhs_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.169</duration><failedSince>0</failedSince><name>test_tridiag_lu_solve_single_rhs_multiple_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.186</duration><failedSince>0</failedSince><name>test_tridiag_lu_solve_multiple_rhs_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.205</duration><failedSince>0</failedSince><name>test_xpyp_term_ta_pdf_lhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.096</duration><failedSince>0</failedSince><name>test_xpyp_term_ta_pdf_lhs_godunov_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.141</duration><failedSince>0</failedSince><name>test_xpyp_term_ta_pdf_rhs_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_jit_compile</className><duration>0.082</duration><failedSince>0</failedSince><name>test_xpyp_term_ta_pdf_rhs_godunov_compiles</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>1.531</duration><failedSince>0</failedSince><name>test_bivar_general_vs_quadrature</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.287</duration><failedSince>0</failedSince><name>test_bivar_const_variants_vs_quadrature</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>4.425</duration><failedSince>0</failedSince><name>test_kk_auto_mean_composes_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.084</duration><failedSince>0</failedSince><name>test_accretion_bivar_vs_quadrature</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.075</duration><failedSince>0</failedSince><name>test_kk_accr_mean_composes_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.148</duration><failedSince>0</failedSince><name>test_trivar_general_vs_quadrature</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.879</duration><failedSince>0</failedSince><name>test_kk_evap_mean_composes_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.035</duration><failedSince>0</failedSince><name>test_bivar_LL_vs_quadrature</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_autoconversion</className><duration>0.303</duration><failedSince>0</failedSince><name>test_kk_mvr_mean_composes_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_covariance_batch</className><duration>12.178</duration><failedSince>0</failedSince><name>test_driver_matches_unbatched_integrals[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_covariance_batch</className><duration>12.648</duration><failedSince>0</failedSince><name>test_driver_matches_unbatched_integrals[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_covariance_batch</className><duration>2.158</duration><failedSince>0</failedSince><name>test_driver_has_one_special_function_call</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_covariance_batch</className><duration>23.52</duration><failedSince>0</failedSince><name>test_nested_jit_gradient_matches_unbatched_finite_difference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_local_means</className><duration>0.401</duration><failedSince>0</failedSince><name>test_formulas_and_branches</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_local_means</className><duration>0.833</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_upscaled_variances</className><duration>0.513</duration><failedSince>0</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_upscaled_variances</className><duration>0.369</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_kk_upscaled_variances</className><duration>1.075</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_lba_sfclyr</className><duration>0.714</duration><failedSince>0</failedSince><name>test_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_lba_sfclyr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_diurnal_structure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_lba_sfclyr</className><duration>0.957</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_limits_f_x_responder</className><duration>0.066</duration><failedSince>0</failedSince><name>test_sort_roots</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_limits_f_x_responder</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_limits_f_x_responder oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        for seed in (11, 22, 33):
            mf, Skx, sgn = _inputs(seed)
            mp = np.full((NG, NZ), MAX_POS); mn = np.full((NG, NZ), MAX_NEG)
&gt;           f_min, f_max = clubb_f2py.f2py_calc_limits_f_x_responder(mf, Skx, sgn, mp, mn)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_limits_f_x_responder.py:61: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_limits_f_x_responder</className><duration>2.259</duration><failedSince>0</failedSince><name>test_bounds</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_limits_f_x_responder</className><duration>3.94</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_liq_water_path</className><duration>0.141</duration><failedSince>0</failedSince><name>test_liq_water_path</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_luhar_3d_driver</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py luhar_3d_pdf_driver oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(11)
        order = ('wm', 'rtm', 'thlm', 'wp2', 'rtp2', 'thlp2', 'Skw', 'Skrt', 'Skthl', 'wprtp', 'wpthlp')
        worst = 0.0
        for _ in range(4):
            a = _inputs(rng)
&gt;           f = clubb_f2py.f2py_luhar_3d_pdf_driver(*[a[k] for k in order])
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_luhar_3d_driver.py:52: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_luhar_3d_driver</className><duration>7.256</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_luhar_params</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_luhar_params oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        n_const = 0
        for seed in (11, 22, 33):
            Skx, wpxp, xp2 = _inputs(seed)
            if seed == 33:                          # force some constant-x points
                xp2[:, :2] = 1e-8; n_const += 1
&gt;           f = clubb_f2py.f2py_calc_luhar_params(Skx, wpxp, xp2, _X_TOL_SQD)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_luhar_params.py:56: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_luhar_params</className><duration>2.019</duration><failedSince>0</failedSince><name>test_invariants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_luhar_params</className><duration>1.623</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ly93_pdf</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_params_ly93 oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        for seed in (11, 22, 33):
            xm, xp2, Skx, mf = _inputs(seed)
&gt;           f = clubb_f2py.f2py_calc_params_ly93(xm, xp2, Skx, mf)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_ly93_pdf.py:53: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ly93_pdf</className><duration>1.017</duration><failedSince>0</failedSince><name>test_moment_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ly93_pdf</className><duration>0.359</duration><failedSince>0</failedSince><name>test_mixt_frac_root</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ly93_pdf</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_driver_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py ly93_driver oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(8)
        worst = 0.0
        for _ in range(5):
            wm = rng.uniform(-1, 1, (NG, NZ)); rtm = rng.uniform(0, 0.02, (NG, NZ)); thlm = rng.uniform(285, 305, (NG, NZ))
            wp2 = rng.uniform(0.05, 2.0, (NG, NZ)); rtp2 = rng.uniform(1e-8, 1e-6, (NG, NZ)); thlp2 = rng.uniform(0.01, 1.0, (NG, NZ))
            # Skewness spanning both the 0.75 branch (|Sk|&lt;=0.84) and the iterative branch.
            Skw = rng.uniform(-3, 3, (NG, NZ)); Skrt = rng.uniform(-1, 1, (NG, NZ)); Skthl = rng.uniform(-2, 2, (NG, NZ))
&gt;           f = clubb_f2py.f2py_ly93_driver(wm, rtm, thlm, wp2, rtp2, thlp2, Skw, Skrt, Skthl)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_ly93_pdf.py:109: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_driver_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_ly93_pdf</className><duration>1.388</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_max_cubic_root</className><duration>2.843</duration><failedSince>0</failedSince><name>test_root_property_and_max</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_max_cubic_root</className><duration>0.01</duration><failedSince>0</failedSince><name>test_fallbacks</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_max_cubic_root</className><duration>4.121</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mean_adv</className><duration>0.379</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mean_vert_vel_up_down</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.2 0.2 0.2 0.2 0.2 0.2]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_interior_truncated_means_vs_mc():
        wi, sig = 0.2, 0.5            # |wi| &lt; 3σ (else branch), wm=0 so not too_weak
        var = sig ** 2
&gt;       mwd, mwu = calc_mean_w_up_down_component(_col(wi), _col(var), _col(0.0))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.2 0.2 0.2 0.2 0.2 0.2]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_mean_vert_vel_up_down.py:43: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_interior_truncated_means_vs_mc</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mean_vert_vel_up_down</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.1 0.1 0.1 0.1 0.1 0.1]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_branches_and_boundary():
        sig = 0.3; var = sig ** 2
        # too_weak: |wi|+3σ &lt;= wm -&gt; (0,0)
&gt;       mwd, mwu = calc_mean_w_up_down_component(_col(0.1), _col(var), _col(5.0))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.1 0.1 0.1 0.1 0.1 0.1]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_mean_vert_vel_up_down.py:63: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_branches_and_boundary</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mean_vert_vel_up_down</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.2 0.2 0.2 0.2 0.2 0.2]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_combine():
        # NB calc_mean_w_up_down_component returns numpy (a flux-limiter RANGE diagnostic, off the grad path) — no grad test.
        var1, var2 = 0.25, 0.16
&gt;       mwd1, mwu1 = calc_mean_w_up_down_component(_col(0.2), _col(var1), _col(0.0))
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.2 0.2 0.2 0.2 0.2 0.2]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_mean_vert_vel_up_down.py:80: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_combine</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.062</duration><failedSince>0</failedSince><name>test_namelist_cannot_override_enumerations</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>1.729</duration><failedSince>0</failedSince><name>test_failed_solve_preserves_statistics[False-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.984</duration><failedSince>0</failedSince><name>test_failed_solve_preserves_statistics[False-3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.133</duration><failedSince>0</failedSince><name>test_failed_solve_preserves_statistics[True-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.184</duration><failedSince>0</failedSince><name>test_failed_solve_preserves_statistics[True-3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>4.101</duration><failedSince>0</failedSince><name>test_failed_cloud_number_solve_skips_clipping_and_final_stats[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>1.044</duration><failedSince>0</failedSince><name>test_failed_cloud_number_solve_skips_clipping_and_final_stats[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.097</duration><failedSince>0</failedSince><name>test_fatal_host_dump_emits_fields_in_source_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>1.21</duration><failedSince>0</failedSince><name>test_pdf_fatal_skips_mixed_moments_and_statistics[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.546</duration><failedSince>0</failedSince><name>test_pdf_fatal_skips_mixed_moments_and_statistics[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>1.357</duration><failedSince>0</failedSince><name>test_failed_hydrometeor_transport_does_not_advance_cloud_number[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.95</duration><failedSince>0</failedSince><name>test_failed_hydrometeor_transport_does_not_advance_cloud_number[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>41.788</duration><failedSince>0</failedSince><name>test_morrison_debug_output_is_live_in_jit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>1.413</duration><failedSince>0</failedSince><name>test_silhs_fatal_skips_clipping_and_statistics[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_error_paths</className><duration>0.678</duration><failedSince>0</failedSince><name>test_silhs_fatal_skips_clipping_and_statistics[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.316</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[-1-prep]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.004</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[-1-tendencies]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.002</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[-1-transport]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.048</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[0-prep]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.004</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[0-tendencies]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_host_errors</className><duration>0.004</duration><failedSince>0</failedSince><name>test_fatal_column_respects_source_host_debug_guard[0-transport]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.045</duration><failedSince>0</failedSince><name>test_species_lifecycle[none-False-False-0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.038</duration><failedSince>0</failedSince><name>test_species_lifecycle[khairoutdinov_kogan-False-False-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.037</duration><failedSince>0</failedSince><name>test_species_lifecycle[morrison-False-False-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.037</duration><failedSince>0</failedSince><name>test_species_lifecycle[morrison-True-False-6]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.039</duration><failedSince>0</failedSince><name>test_species_lifecycle[morrison-True-True-8]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.041</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config0-SILHS]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.038</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config1-Unsupported]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.038</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config2-Unsupported]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.038</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config3-GFDL]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.035</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config4-sedimentation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.036</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config5-l_predict_Nc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.037</duration><failedSince>0</failedSince><name>test_disabled_dependencies_rejected[config6-l_morr_xp2_mc]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>98.252</duration><failedSince>0</failedSince><name>test_morrison_species_interface_eager_and_jit[2-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>92.53</duration><failedSince>0</failedSince><name>test_morrison_species_interface_eager_and_jit[6-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>91.112</duration><failedSince>0</failedSince><name>test_morrison_species_interface_eager_and_jit[8-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.409</duration><failedSince>0</failedSince><name>test_previous_tendencies_feed_next_core_step</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>2.972</duration><failedSince>0</failedSince><name>test_cloud_sedimentation_closed_boundaries_conserve_column[1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>3.079</duration><failedSince>0</failedSince><name>test_cloud_sedimentation_closed_boundaries_conserve_column[3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>1.029</duration><failedSince>0</failedSince><name>test_kk_adjustment_limits_depletion_and_conserves_water</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>2.027</duration><failedSince>0</failedSince><name>test_scheme_startup_returns_zero_tendencies_before_start</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>4.253</duration><failedSince>0</failedSince><name>test_hydrometeor_transport_surface_loss_and_column_independence[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>4.186</duration><failedSince>0</failedSince><name>test_hydrometeor_transport_surface_loss_and_column_independence[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.461</duration><failedSince>0</failedSince><name>test_parameter_override_does_not_reuse_previous_jit_constants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>4.684</duration><failedSince>0</failedSince><name>test_predicted_cloud_number_transport_and_clipping[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>4.564</duration><failedSince>0</failedSince><name>test_predicted_cloud_number_transport_and_clipping[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>3.627</duration><failedSince>0</failedSince><name>test_local_kk_direct_statistics_and_core_contract[1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>4.243</duration><failedSince>0</failedSince><name>test_local_kk_direct_statistics_and_core_contract[3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>2.362</duration><failedSince>0</failedSince><name>test_morrison_silhs_feedback_boundary_and_velocity_statistics[False-interactive]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>2.413</duration><failedSince>0</failedSince><name>test_morrison_silhs_feedback_boundary_and_velocity_statistics[False-non-interactive]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.851</duration><failedSince>0</failedSince><name>test_morrison_silhs_feedback_boundary_and_velocity_statistics[True-interactive]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.855</duration><failedSince>0</failedSince><name>test_morrison_silhs_feedback_boundary_and_velocity_statistics[True-non-interactive]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.112</duration><failedSince>0</failedSince><name>test_silhs_prescribed_probabilities_and_flags_reset_between_cases[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.1</duration><failedSince>0</failedSince><name>test_silhs_prescribed_probabilities_and_flags_reset_between_cases[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.06</duration><failedSince>0</failedSince><name>test_deterministic_silhs_rejects_independent_random_draws[l_lh_importance_sampling]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.063</duration><failedSince>0</failedSince><name>test_deterministic_silhs_rejects_independent_random_draws[l_random_k_lh_start]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.297</duration><failedSince>0</failedSince><name>test_initialization_appends_source_configuration_and_correlations[0.0-0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>2.586</duration><failedSince>0</failedSince><name>test_initialization_appends_source_configuration_and_correlations[0.0-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.286</duration><failedSince>0</failedSince><name>test_initialization_appends_source_configuration_and_correlations[0.25-0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_integration</className><duration>0.392</duration><failedSince>0</failedSince><name>test_initialization_appends_source_configuration_and_correlations[0.25-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.002</duration><failedSince>0</failedSince><name>test_interface_file_inventory</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.015</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[KK_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.021</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[advance_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[cloud_sed_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.002</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[coamps_microphys_driver_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[estimate_scm_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[gfdl_activation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.002</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[ice_dfsn_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[lh_microphys_driver_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[microphys_driver]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.005</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[microphys_init_cleanup]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.007</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[mixed_moment_PDF_integrals]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.011</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[morrison_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[parameters_microphys]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.004</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[pdf_hydromet_microphys_wrapper]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_source_inventory_order_and_argument_order[silhs_category_variance_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.007</duration><failedSince>0</failedSince><name>test_returned_state_order[morrison_microphys_module-morrison_microphys_driver-expected0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_returned_state_order[microphys_driver-calc_microphys_scheme_tendcies-expected1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.006</duration><failedSince>0</failedSince><name>test_returned_state_order[microphys_init_cleanup-init_microphys-expected2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_driver_critical_order_and_no_obsolete_steps</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.002</duration><failedSince>0</failedSince><name>test_runtime_interface_has_no_fortran_fallback</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.006</duration><failedSince>0</failedSince><name>test_scheme_statistics_inventory_and_order[KK_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.005</duration><failedSince>0</failedSince><name>test_scheme_statistics_inventory_and_order[morrison_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.016</duration><failedSince>0</failedSince><name>test_updated_shared_hydrometeor_interfaces[fill_holes-fill_holes_driver_api]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.009</duration><failedSince>0</failedSince><name>test_updated_shared_hydrometeor_interfaces[stats_clubb_utilities-stats_accumulate_hydromet_api]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_microphysics_port_structure</className><duration>0.012</duration><failedSince>0</failedSince><name>test_fatal_dump_uses_actual_model_time</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mirror_lower_triangular</className><duration>0.769</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mirror_lower_triangular</className><duration>0.231</duration><failedSince>0</failedSince><name>test_invariants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mirror_lower_triangular</className><duration>0.704</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>3.242</duration><failedSince>0</failedSince><name>test_univar_N_closed_form_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>3.395</duration><failedSince>0</failedSince><name>test_univar_L_closed_form_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>8.139</duration><failedSince>0</failedSince><name>test_bivar_NL_closed_form_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>0.055</duration><failedSince>0</failedSince><name>test_comp_eq_branch_selection</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>9.046</duration><failedSince>0</failedSince><name>test_xp_a_hmpb_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>2.727</duration><failedSince>0</failedSince><name>test_xphmp_covar_branches_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>2.418</duration><failedSince>0</failedSince><name>test_hmxphmyp_covar_branches_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixed_moment_pdf_integrals</className><duration>1.06</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixing_length</className><duration>0.001</duration><errorDetails>ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()</errorDetails><errorStackTrace>def test_set_Lscale_max_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py set_Lscale_max oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(1)
        worst = 0.0
        for l_impl in (0, 1):
            for _ in range(10):
                dx = rng.uniform(100.0, 5e5, 3); dy = rng.uniform(100.0, 5e5, 3)
&gt;               j = np.asarray(set_Lscale_max(l_impl, dx, dy, 3))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_mixing_length.py:59: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ngrdcol = 0
l_implemented = array([255959.63018766, 475236.80179334,  72165.39039854])
host_dx = array([474329.85862391, 155984.54286004, 211720.89184139])
host_dy = 3

    def set_Lscale_max(
        ngrdcol: int,
        l_implemented: bool,
        host_dx,
        host_dy,
    ):
        """Set the maximum allowable value of Lscale.
    
        Description:
          This subroutine sets the value of Lscale_max, which is the maximum
          allowable value of Lscale.  For standard CLUBB, it is set to a very large
          value so that Lscale will not be limited.  However, when CLUBB is running
          as part of a host model, the value of Lscale_max is dependent on the size
          of the host model's horizontal grid spacing.  The smaller the host model's
          horizontal grid spacing, the smaller the value of Lscale_max.  When Lscale
          is limited to a small value, the value of time-scale Tau is reduced, which
          in turn produces greater damping on CLUBB's turbulent parameters.  This
          is the desired effect on turbulent parameters for a host model with small
          horizontal grid spacing, for small areas usually contain much less
          variation in meteorological quantities than large areas.
    
        References:
          None
        """
        # Determine the maximum allowable value for Lscale (in meters).
&gt;       if l_implemented:
           ^^^^^^^^^^^^^
E       ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

clubb_jax/src/CLUBB_core/mixing_length.py:370: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_set_Lscale_max_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixing_length</className><duration>0.223</duration><errorDetails>TypeError: calc_Lscale_directly() missing 11 required positional arguments: 'rtpthlp_zt', 'pdf_params', 'em', 'thv_ds_zt', 'Lscale_max', 'lmin', 'clubb_params', 'saturation_formula', 'l_Lscale_plume_centered', 'stats', and 'err_info'</errorDetails><errorStackTrace>def test_calc_Lscale_directly_f2py():
        try:
            clubb_f2py, jgr, ng, nzm = _setup_f2py_grid()
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_Lscale_directly oracle: SKIP ({type(e).__name__})")
        nzt = nzm - 1
        worst_rel = 0.0
        for s in range(6):
            rng = np.random.default_rng(s)
            thlm = np.sort(rng.uniform(290.0, 330.0, (ng, nzt)), axis=1); exner = rng.uniform(0.8, 1.0, (ng, nzt))
            rtm = rng.uniform(2e-3, 1.4e-2, (ng, nzt)); thvm = thlm * (1.0 + 0.6 * rtm)
            em = rng.uniform(1e-2, 1.0, (ng, nzm)); p = np.sort(rng.uniform(6e4, 1e5, (ng, nzt)), axis=1)[:, ::-1].copy()
            thv_ds = thvm.copy(); Lmax = np.full(ng, 1e5); lmin = 20.0
            npar = max(imu, 100); cp = np.zeros((ng, npar)); cp[:, imu] = rng.uniform(0.4, 1.0, ng); mu = cp[:, imu]
&gt;           jr = calc_Lscale_directly(jnp.asarray(thvm), jnp.asarray(thlm), jnp.asarray(rtm), jnp.asarray(em),
                jnp.asarray(Lmax), jnp.asarray(p), jnp.asarray(exner), jnp.asarray(thv_ds), jnp.asarray(cp),
                lmin, SATURATION_FLATAU, False, jgr)
E           TypeError: calc_Lscale_directly() missing 11 required positional arguments: 'rtpthlp_zt', 'pdf_params', 'em', 'thv_ds_zt', 'Lscale_max', 'lmin', 'clubb_params', 'saturation_formula', 'l_Lscale_plume_centered', 'stats', and 'err_info'

clubb_jax/pytests/auto_llm_generated_pytests/test_mixing_length.py:97: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_calc_Lscale_directly_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mixing_length</className><duration>0.019</duration><errorDetails>TypeError: diagnose_Lscale_from_tau() missing 4 required positional arguments: 'l_smooth_Heaviside_tau_wpxp', 'brunt_vaisala_freq_sqd_smth', 'Ri_zm', and 'err_info'</errorDetails><errorStackTrace>def test_diagnose_Lscale_from_tau_f2py():
        """diagnose_Lscale_from_tau (the l_diag_Lscale_from_tau path — the tau-based mixing-length / dissipation-time
        diagnostics) vs the Fortran oracle. This routine is GATED OFF in every validated case (no case_setup sets
        l_diag_Lscale_from_tau), so it is otherwise UN-exercised — this is its only validation. The JAX returns the
        Fortran's 19 outputs (invrs_tau_* / tau_* / Lscale[/up/down]) plus 2 extra diagnostics appended; the first 19
        are compared by name-order. SKIPs if clubb_f2py / clubb_python are unbuilt. (iter 418)"""
        try:
            clubb_f2py, jgr, ng, nzm = _setup_f2py_grid()
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py diagnose_Lscale_from_tau oracle: SKIP ({type(e).__name__})")
        nzt = nzm - 1
        cp = np.asarray(init_clubb_params(ng, filename=_TUNABLE_PARAMS))   # realistic defaults (well-conditioned tau)
        worst = 0.0
        for s in range(4):
            rng = np.random.default_rng(s)
            upwp = rng.uniform(-0.1, 0.1, ng); vpwp = rng.uniform(-0.1, 0.1, ng)
            ddzt = rng.uniform(0.0, 1e-3, (ng, nzm)); isf = rng.uniform(0.0, 0.3, (ng, nzt))
            em = rng.uniform(1e-2, 1.0, (ng, nzm)); sqem = np.sqrt(rng.uniform(1e-2, 1.0, (ng, nzt)))
            sfce = np.zeros(ng); Lmax = np.full(ng, 1e5)
            Ri = rng.uniform(-1.0, 5.0, (ng, nzm)); bvs = rng.uniform(-1e-3, 1e-2, (ng, nzm))
&gt;           jr = diagnose_Lscale_from_tau(jnp.asarray(upwp), jnp.asarray(vpwp), jnp.asarray(ddzt), jnp.asarray(isf),
                jnp.asarray(em), jnp.asarray(sqem), 0.01, 900.0, jnp.asarray(sfce), jnp.asarray(Lmax),
                jnp.asarray(cp), jnp.asarray(Ri), jnp.asarray(bvs), False, False, jgr)
E           TypeError: diagnose_Lscale_from_tau() missing 4 required positional arguments: 'l_smooth_Heaviside_tau_wpxp', 'brunt_vaisala_freq_sqd_smth', 'Ri_zm', and 'err_info'

clubb_jax/pytests/auto_llm_generated_pytests/test_mixing_length.py:133: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_diagnose_Lscale_from_tau_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mono_flux_limiter</className><duration>2.327</duration><failedSince>0</failedSince><name>test_bit_exact</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mono_flux_limiter</className><duration>2.227</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mono_flux_limiter</className><duration>0.15</duration><failedSince>0</failedSince><name>test_full_limiter_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mono_flux_limiter</className><duration>0.563</duration><failedSince>0</failedSince><name>test_calc_turb_adv_range_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_morrison_special</className><duration>1.514</duration><failedSince>0</failedSince><name>test_derf1_vs_scipy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_morrison_special</className><duration>3.058</duration><failedSince>0</failedSince><name>test_derf1_identities</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mpace_b_lba_tndcy</className><duration>1.457</duration><failedSince>0</failedSince><name>test_mpace_b_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mpace_b_lba_tndcy</className><duration>0.138</duration><failedSince>0</failedSince><name>test_mpace_b_physical</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mpace_b_lba_tndcy</className><duration>0.125</duration><failedSince>0</failedSince><name>test_lba_tndcy_zero</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_mpace_b_lba_tndcy</className><duration>1.244</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_coef_wp4_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coef_wp4_implicit oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(3)
        worst = 0.0
        for _ in range(20):
            mf = rng.uniform(0.1, 0.9, (NG, NZ))
            F = rng.uniform(0.0, 1.0, (NG, NZ))
            c1 = rng.uniform(0.0, 2.0, (NG, NZ))
            c2 = rng.uniform(0.0, 2.0, (NG, NZ))
&gt;           ref = np.asarray(clubb_f2py.f2py_calc_coef_wp4_implicit(mf, F, c1, c2))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_new_pdf.py:51: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_coef_wp4_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>1.396</duration><failedSince>0</failedSince><name>test_mixture_fraction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_coef_wpxp2_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coef_wpxp2_implicit oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(8)
        worst = 0.0
        n_branchB = 0
        for trial in range(30):
            mf = rng.uniform(0.1, 0.9, (NG, NZ))
            F_w = rng.uniform(0.05, 1.0, (NG, NZ)); F_x = rng.uniform(0.05, 1.0, (NG, NZ))
            wp2 = rng.uniform(0.1, 2.0, (NG, NZ)); xp2 = rng.uniform(0.1, 2.0, (NG, NZ))
            wpxp = rng.uniform(-1.0, 1.0, (NG, NZ)); sgn = np.sign(wpxp); sgn[sgn == 0] = 1.0
            cw1 = rng.uniform(0.1, 2.0, (NG, NZ)); cw2 = rng.uniform(0.1, 2.0, (NG, NZ))
            cx1 = rng.uniform(0.1, 2.0, (NG, NZ)); cx2 = rng.uniform(0.1, 2.0, (NG, NZ))
            if trial % 3 == 0:   # trigger the reduced branch (zero sigma products)
                cw1 = np.zeros((NG, NZ)); cw2 = np.zeros((NG, NZ)); n_branchB += 1
&gt;           ref = np.asarray(clubb_f2py.f2py_calc_coef_wpxp2_implicit(
                wp2, xp2, wpxp, sgn, mf, F_w, F_x, cw1, cw2, cx1, cx2))
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_new_pdf.py:107: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_coef_wpxp2_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>0.604</duration><errorDetails>AssertionError: calc_coef_wp2xp_implicit f2py mismatch 4.09e+00
assert np.float64(4.086323442882921) &lt; 1e-11</errorDetails><errorStackTrace>def test_coef_wp2xp_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_coef_wp2xp_implicit oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(9)
        worst = 0.0
        n_zero = 0
        for trial in range(20):
            mf = rng.uniform(0.1, 0.9, (NG, NZ))
            F = rng.uniform(0.05, 1.0, (NG, NZ))
            wp2 = rng.uniform(0.05, 2.0, (NG, NZ))
            c1 = rng.uniform(0.0, 2.0, (NG, NZ)); c2 = rng.uniform(0.0, 2.0, (NG, NZ))
            if trial % 4 == 0:   # exercise the F_w = 0 -&gt; 0 branch
                F = np.zeros((NG, NZ)); n_zero += 1
            ref = np.asarray(clubb_f2py.f2py_calc_coef_wp2xp_implicit(wp2, mf, F, c1, c2))
            got = np.asarray(calc_coef_wp2xp_implicit(wp2, mf, F, c1, c2))
            worst = max(worst, np.max(np.abs(got - ref)))
&gt;       assert worst &lt; 1e-11, f"calc_coef_wp2xp_implicit f2py mismatch {worst:.2e}"
E       AssertionError: calc_coef_wp2xp_implicit f2py mismatch 4.09e+00
E       assert np.float64(4.086323442882921) &lt; 1e-11

clubb_jax/pytests/auto_llm_generated_pytests/test_new_pdf.py:136: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_coef_wp2xp_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>0.636</duration><failedSince>0</failedSince><name>test_new_hybrid_aliases</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_pdf</className><duration>2.317</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.531</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.851</duration><failedSince>0</failedSince><name>test_closed_form_and_swap</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>1.301</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.872</duration><failedSince>0</failedSince><name>test_setter_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.442</duration><failedSince>0</failedSince><name>test_setter_mean_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>1.512</duration><failedSince>0</failedSince><name>test_setter_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.563</duration><failedSince>0</failedSince><name>test_responder</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_driver_f2py():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py tsdadg_pdf_driver oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(13)
        worst = 0.0
        ng, nz = 2, 8
        for _ in range(4):
            wm = rng.uniform(-1, 1, (ng, nz)); rtm = rng.uniform(0, 0.02, (ng, nz)); thlm = rng.uniform(285, 305, (ng, nz))
            wp2 = rng.uniform(0.05, 2, (ng, nz)); rtp2 = rng.uniform(1e-8, 1e-6, (ng, nz)); thlp2 = rng.uniform(0.01, 1, (ng, nz))
            # Skewness with varying magnitudes so each of w/rt/thl is the setter at some points.
            Skw = rng.uniform(-3, 3, (ng, nz)); Skrt = rng.uniform(-3, 3, (ng, nz)); Skthl = rng.uniform(-3, 3, (ng, nz))
            wprtp = rng.uniform(-1, 1, (ng, nz)); wpthlp = rng.uniform(-1, 1, (ng, nz))
&gt;           f = clubb_f2py.f2py_tsdadg_pdf_driver(wm, rtm, thlm, wp2, rtp2, thlp2, Skw, Skrt, Skthl, wprtp, wpthlp)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_new_tsdadg_pdf.py:173: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_driver_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_new_tsdadg_pdf</className><duration>3.972</duration><failedSince>0</failedSince><name>test_driver_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_no_dead_functions</className><duration>6.492</duration><failedSince>0</failedSince><name>test_no_dead_functions</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_no_dead_functions</className><duration>8.432</duration><errorDetails>AssertionError: Dead (never-referenced) module-level private helpers found — remove them, or if intentional add to _ALLOW in this test:
    clubb_jax/src/CLUBB_core/tracer_numpy.py: _asarray
    clubb_jax/src/CLUBB_core/tracer_numpy.py: _safe_sqrt
assert not ['clubb_jax/src/CLUBB_core/tracer_numpy.py: _asarray', 'clubb_jax/src/CLUBB_core/tracer_numpy.py: _safe_sqrt']</errorDetails><errorStackTrace>def test_no_dead_private_helpers():
        dead = _dead_private_helpers()
&gt;       assert not dead, (
            "Dead (never-referenced) module-level private helpers found — remove them, or if intentional add to "
            "_ALLOW in this test:\n  " + "\n  ".join(sorted(dead)))
E       AssertionError: Dead (never-referenced) module-level private helpers found — remove them, or if intentional add to _ALLOW in this test:
E           clubb_jax/src/CLUBB_core/tracer_numpy.py: _asarray
E           clubb_jax/src/CLUBB_core/tracer_numpy.py: _safe_sqrt
E       assert not ['clubb_jax/src/CLUBB_core/tracer_numpy.py: _asarray', 'clubb_jax/src/CLUBB_core/tracer_numpy.py: _safe_sqrt']

clubb_jax/pytests/auto_llm_generated_pytests/test_no_dead_functions.py:117: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_no_dead_private_helpers</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_no_dead_imports</className><duration>2.29</duration><errorDetails>AssertionError: Dead (never-loaded) imports found — remove them, or if intentional (re-export / API-mirror / noqa) add to _ALLOW in this test:
    Microphys/advance_microphys_module.py: Cp
    SILHS/latin_hypercube_driver_module.py: define_importance_categories
    SILHS/silhs_api_module.py: silhs_config_flags_type
    SILHS/silhs_api_module.py: set_default_silhs_config_flags_api
    SILHS/silhs_api_module.py: initialize_silhs_config_flags_type_api
    SILHS/silhs_api_module.py: print_silhs_config_flags_api
    SILHS/silhs_api_module.py: latin_hypercube_2D_output_api
    SILHS/silhs_api_module.py: stats_accumulate_lh_api
    SILHS/silhs_api_module.py: est_kessler_microphys_api
    SILHS/silhs_api_module.py: lh_microphys_var_covar_driver_api
assert not ['Microphys/advance_microphys_module.py: Cp', 'SILHS/latin_hypercube_driver_module.py: define_importance_categories', 'SILHS/silhs_api_module.py: silhs_config_flags_type', 'SILHS/silhs_api_module.py: set_default_silhs_config_flags_api', 'SILHS/silhs_api_module.py: initialize_silhs_config_flags_type_api', 'SILHS/silhs_api_module.py: print_silhs_config_flags_api', ...]</errorDetails><errorStackTrace>def test_no_dead_imports():
        assert os.path.isdir(_SRC), f"Required JAX source directory is missing: {_SRC}"
        offenders = []
        for f in sorted(glob.glob(os.path.join(_SRC, "**", "*.py"), recursive=True)):
            base = os.path.basename(f)
            if base.startswith("__"):
                continue
            for name in _dead_imports(f):
                if (base, name) in _ALLOW:
                    continue
                offenders.append(f"{f.split('/src/')[-1]}: {name}")
&gt;       assert not offenders, (
            "Dead (never-loaded) imports found — remove them, or if intentional (re-export / API-mirror / noqa) "
            "add to _ALLOW in this test:\n  " + "\n  ".join(offenders))
E       AssertionError: Dead (never-loaded) imports found — remove them, or if intentional (re-export / API-mirror / noqa) add to _ALLOW in this test:
E           Microphys/advance_microphys_module.py: Cp
E           SILHS/latin_hypercube_driver_module.py: define_importance_categories
E           SILHS/silhs_api_module.py: silhs_config_flags_type
E           SILHS/silhs_api_module.py: set_default_silhs_config_flags_api
E           SILHS/silhs_api_module.py: initialize_silhs_config_flags_type_api
E           SILHS/silhs_api_module.py: print_silhs_config_flags_api
E           SILHS/silhs_api_module.py: latin_hypercube_2D_output_api
E           SILHS/silhs_api_module.py: stats_accumulate_lh_api
E           SILHS/silhs_api_module.py: est_kessler_microphys_api
E           SILHS/silhs_api_module.py: lh_microphys_var_covar_driver_api
E       assert not ['Microphys/advance_microphys_module.py: Cp', 'SILHS/latin_hypercube_driver_module.py: define_importance_categories', 'SILHS/silhs_api_module.py: silhs_config_flags_type', 'SILHS/silhs_api_module.py: set_default_silhs_config_flags_api', 'SILHS/silhs_api_module.py: initialize_silhs_config_flags_type_api', 'SILHS/silhs_api_module.py: print_silhs_config_flags_api', ...]

clubb_jax/pytests/auto_llm_generated_pytests/test_no_dead_imports.py:57: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_no_dead_imports</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_no_dead_imports</className><duration>1.284</duration><failedSince>0</failedSince><name>test_src_has_no_fortran_runtime_import</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_nov11</className><duration>0.215</duration><failedSince>0</failedSince><name>test_nov11_adjustment_is_jittable_and_preserves_dtype</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_numerical_check_setters</className><duration>0.001</duration><failedSince>0</failedSince><name>test_check_negative</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_numerical_check_setters</className><duration>0.0</duration><failedSince>0</failedSince><name>test_check_nan</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_numerics_autodiff</className><duration>0.715</duration><failedSince>0</failedSince><name>test_clipped_root_values_and_both_derivatives[float32]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_numerics_autodiff</className><duration>0.545</duration><failedSince>0</failedSince><name>test_clipped_root_values_and_both_derivatives[float64]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_numerics_autodiff</className><duration>0.362</duration><failedSince>0</failedSince><name>test_pdf_helpers_share_boundary_convention</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.001</duration><failedSince>0</failedSince><name>test_index_constant_self_consistency</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.001</duration><failedSince>0</failedSince><name>test_param_names_match_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.009</duration><failedSince>0</failedSince><name>test_parameter_hard_bounds_match_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.131</duration><failedSince>0</failedSince><name>test_parameter_validation_rejects_hard_bound_and_equality</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.027</duration><failedSince>0</failedSince><name>test_param_values_match_fortran</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_param_names</className><duration>0.139</duration><failedSince>0</failedSince><name>test_calc_derived_params_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_binormal_moments</className><duration>0.439</duration><failedSince>0</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_binormal_moments</className><duration>7.235</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_binormal_moments</className><duration>0.376</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>1.534</duration><errorDetails>AssertionError: base case mu_x2=1.0: rel 9.80e-08 (got 0.9937902373283141, Phi 0.9937903346742238)
assert 9.795417240540295e-08 &lt; 1e-09</errorDetails><errorStackTrace>def test_base_case_probability_mass():
        """a=b=0 → Phi(mu_x2/sigma_x2), independent of alpha/beta/the other moments."""
        for mu_x2, sigma_x2 in ((0.3, 0.5), (-0.2, 0.8), (1.0, 0.4), (0.0, 1.0)):
            got = float(trivar_NNL_MM(
                mu_x1=0.5, mu_x2=mu_x2, mu_x3_n=-0.4, sigma_x1=0.6, sigma_x2=sigma_x2, sigma_x3_n=0.5,
                rho_x1x2=0.3, rho_x1x3_n=0.2, rho_x2x3_n=-0.1, x1_mean=0.4, x2_alpha_x3_beta_mean=1.3,
                alpha_exp=1.5, beta_exp=0.5, a_exp=0, b_exp=0))
            ref = _phi(mu_x2 / sigma_x2)
            rel = abs(got - ref) / (abs(ref) + 1e-30)
&gt;           assert rel &lt; 1e-9, f"base case mu_x2={mu_x2}: rel {rel:.2e} (got {got}, Phi {ref})"
E           AssertionError: base case mu_x2=1.0: rel 9.80e-08 (got 0.9937902373283141, Phi 0.9937903346742238)
E           assert 9.795417240540295e-08 &lt; 1e-09

clubb_jax/pytests/auto_llm_generated_pytests/test_pdf_integrals_all_mm.py:48: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_base_case_probability_mass</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>38.514</duration><failedSince>0</failedSince><name>test_general_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>13.378</duration><failedSince>0</failedSince><name>test_const_x1_limit_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>11.999</duration><failedSince>0</failedSince><name>test_const_x2_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>3.542</duration><failedSince>0</failedSince><name>test_const_x1x2_limit_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>0.223</duration><failedSince>0</failedSince><name>test_quadrivar_base_and_psum</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>21.234</duration><failedSince>0</failedSince><name>test_quadrivar_general_complex_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>30.963</duration><failedSince>0</failedSince><name>test_quadrivar_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>29.112</duration><failedSince>0</failedSince><name>test_quadrivar_const_x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>6.533</duration><failedSince>0</failedSince><name>test_quadrivar_const_x1x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_integrals_all_mm</className><duration>3.076</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_moment_integrals</className><duration>0.747</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_moment_integrals</className><duration>1.644</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_moment_integrals</className><duration>0.702</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_params_init</className><duration>0.095</duration><failedSince>0</failedSince><name>test_pdf_parameter_init</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_params_init</className><duration>0.052</duration><failedSince>0</failedSince><name>test_implicit_coefs_terms_init</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_params_pack_roundtrip</className><duration>0.411</duration><failedSince>0</failedSince><name>test_pack_unpack_api_roundtrip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_params_pack_roundtrip</className><duration>0.001</duration><failedSince>0</failedSince><name>test_pdf_parameter_fields_mirror_fortran_type</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_params_pack_roundtrip</className><duration>0.001</duration><failedSince>0</failedSince><name>test_implicit_coefs_terms_fields_mirror_fortran_type</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>0.338</duration><failedSince>0</failedSince><name>test_mean_stdev_L2N_bit_to_bit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>1.21</duration><failedSince>0</failedSince><name>test_corr_NL2NN_vs_montecarlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>0.943</duration><failedSince>0</failedSince><name>test_corr_LL2NN_vs_montecarlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>0.285</duration><failedSince>0</failedSince><name>test_corr_clip_and_zero_sigma</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>1.691</duration><failedSince>0</failedSince><name>test_corr_NN2NL_NN2LL_calc_corr_chi_x_bit_to_bit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pdf_utilities</className><duration>4.481</duration><failedSince>0</failedSince><name>test_corr_chi_eta_rt_thl_roundtrip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_faithful</className><duration>6.644</duration><failedSince>0</failedSince><name>test_eager_jax_matches_fortran_replica_exactly</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_faithful</className><duration>0.207</duration><failedSince>0</failedSince><name>test_jit_jax_matches_fortran_replica_to_fma_bound</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.467</duration><failedSince>0</failedSince><name>test_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.26</duration><failedSince>0</failedSince><name>test_diagonal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.351</duration><failedSince>0</failedSince><name>test_known_5x5</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.264</duration><failedSince>0</failedSince><name>test_full_penta_vs_numpy_single_col</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.283</duration><failedSince>0</failedSince><name>test_multi_col_vs_numpy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_penta_solver</className><duration>0.243</duration><failedSince>0</failedSince><name>test_vs_fortran_single_rhs</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pos_definite</className><duration>0.122</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=2, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
         360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
         720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
        1080., 1120., 1160., 1200.],
       [   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
         360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
         720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
        1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
         380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
         740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
        1100., 1140., 1180.],
       [  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
         380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
         740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
        1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40.],
       [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40.],
       [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025],
       [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025],
       [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 1.5, -0.5]],

       [[-0.5,  1.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5]],

       [[0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_conservation():
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        field_np1, flux_np1, field_n = _make_inputs(jgr)
&gt;       field_adj, flux_lim, field_pd, flux_pd = pos_definite_adj(jgr, _DT, field_np1, flux_np1, field_n)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=2, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
E                360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
E                720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
E               1080., 1120., 1160., 1200.],
E              [   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
E                360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
E                720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
E               1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
E                380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
E                740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
E               1100., 1140., 1180.],
E              [  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
E                380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
E                740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
E               1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40.],
E              [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40.],
E              [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025],
E              [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025],
E              [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 1.5, -0.5]],
E       
E              [[-0.5,  1.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5]],
E       
E              [[0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_pos_definite.py:55: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_conservation</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pos_definite</className><duration>0.084</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=2, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
         360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
         720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
        1080., 1120., 1160., 1200.],
       [   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
         360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
         720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
        1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
         380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
         740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
        1100., 1140., 1180.],
       [  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
         380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
         740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
        1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40.],
       [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40.],
       [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025],
       [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025],
       [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 1.5, -0.5]],

       [[-0.5,  1.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5]],

       [[0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py pos_definite oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        # Set the f2py stored_grid to EXACTLY the JAX grid's heights (grid_type=2 = explicit heights).
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        field_np1, flux_np1, field_n = _make_inputs(jgr)
        f_field, f_flux, f_field_pd, f_flux_pd = clubb_f2py.f2py_pos_definite_adj(
            _DT, field_np1.copy(), flux_np1.copy(), field_n.copy())
&gt;       j_field, j_flux, j_field_pd, j_flux_pd = pos_definite_adj(jgr, _DT, field_np1, flux_np1, field_n)
                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=2, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
E                360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
E                720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
E               1080., 1120., 1160., 1200.],
E              [   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
E                360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
E                720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
E               1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
E                380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
E                740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
E               1100., 1140., 1180.],
E              [  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
E                380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
E                740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
E               1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40.],
E              [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40.],
E              [40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025],
E              [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025],
E              [0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 1.5, -0.5]],
E       
E              [[-0.5,  1.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5]],
E       
E              [[0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_pos_definite.py:91: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pos_definite</className><duration>0.077</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=1, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
         360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
         720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
        1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
         380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
         740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
        1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
        40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
        0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 0.5,  0.5],
        [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5],
        [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        jgr = setup_grid(ngrdcol=1, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = jgr.zm.shape[1]; nzt = nzm - 1
        flux = jnp.asarray(np.random.default_rng(1).standard_normal((1, nzm)) * 1e-3)
        field_n = jnp.asarray(np.abs(np.random.default_rng(2).standard_normal((1, nzt))) * 1e-2)
        def loss(field_np1):
            out, _, _, _ = pos_definite_adj(jgr, _DT, field_np1, flux, field_n)
            return jnp.sum(out ** 2)
&gt;       g = np.asarray(jax.grad(loss)(field_n))   # field_np1 = field_n (no negatives) baseline
                       ^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_pos_definite.py:110: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

field_np1 = GradTracer(primal=[[0.00189053 0.00522748 0.00413064 0.02441467 0.01799707 0.01144166
  0.00325423 0.00773807 0.002812...0.00330571 0.00410504
  0.01010758 0.00783181 0.02056703 0.01638443 0.01729411 0.01504831]], typeof(tangent)=f64[1,30])

    def loss(field_np1):
&gt;       out, _, _, _ = pos_definite_adj(jgr, _DT, field_np1, flux, field_n)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'clubb_jax.src.CLUBB_core.grid_class.Grid'&gt;, Grid(nzm=31, nzt=30, ngrdcol=1, zm=Array([[   0.,   40.,   80.,  120.,  160.,  200.,  240.,  280.,  320.,
E                360.,  400.,  440.,  480.,  520.,  560.,  600.,  640.,  680.,
E                720.,  760.,  800.,  840.,  880.,  920.,  960., 1000., 1040.,
E               1080., 1120., 1160., 1200.]], dtype=float64), zt=Array([[  20.,   60.,  100.,  140.,  180.,  220.,  260.,  300.,  340.,
E                380.,  420.,  460.,  500.,  540.,  580.,  620.,  660.,  700.,
E                740.,  780.,  820.,  860.,  900.,  940.,  980., 1020., 1060.,
E               1100., 1140., 1180.]], dtype=float64), dzm=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40.]], dtype=float64), dzt=Array([[40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40., 40.,
E               40., 40., 40., 40.]], dtype=float64), invrs_dzm=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025]], dtype=float64), invrs_dzt=Array([[0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025, 0.025,
E               0.025, 0.025, 0.025]], dtype=float64), weights_zt2zm=Array([[[-0.5,  1.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 0.5,  0.5],
E               [ 1.5, -0.5]]], dtype=float64), weights_zm2zt=Array([[[0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5],
E               [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=30, k_lb_zt=0, k_ub_zt=29, grid_dir_indx=1, grid_dir=1.0). The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_pos_definite.py:108: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_precip_fraction</className><duration>2.504</duration><failedSince>0</failedSince><name>test_precip_frac_assert_check</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_coord_forcing</className><duration>0.368</duration><failedSince>0</failedSince><name>test_pressure_coordinate_interp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_coord_forcing</className><duration>0.184</duration><failedSince>0</failedSince><name>test_height_coordinate_interp_is_independent_of_pressure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_coord_forcing</className><duration>0.99</duration><failedSince>0</failedSince><name>test_apply_temperature_forcing_converts_to_thlm</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_coord_forcing</className><duration>0.531</duration><failedSince>0</failedSince><name>test_unknown_forcing_name_is_rejected</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_sounding_z</className><duration>2.108</duration><failedSince>0</failedSince><name>test_real_cgils_sounding</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_sounding_z</className><duration>1.576</duration><failedSince>0</failedSince><name>test_temperature_branch_independent</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pressure_sounding_z</className><duration>1.431</duration><failedSince>0</failedSince><name>test_hydrostatic_roundtrip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pvertinterp</className><duration>0.178</duration><errorDetails>TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py pvertinterp oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        rng = np.random.default_rng(4)
        p_mid = np.asfortranarray(_p_profile(nzt))
        input_var = np.asfortranarray(rng.standard_normal((ng, nzt)))
        worst = 0.0
        # An interior pressure, plus targets outside both ends (exercise the clamp branches).
        for p_out in (95000.0, 88000.0, 101000.0, 80000.0):
            ref = np.asarray(clubb_f2py.f2py_pvertinterp(p_mid.copy(), float(p_out), input_var.copy()))
&gt;           got = np.asarray(pvertinterp(p_mid, p_out, input_var))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'

clubb_jax/pytests/auto_llm_generated_pytests/test_pvertinterp.py:67: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pvertinterp</className><duration>0.001</duration><errorDetails>TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'</errorDetails><errorStackTrace>def test_pressure_weighted_identity():
        nzt = 10
        p_mid = np.tile(np.linspace(100000.0, 80000.0, nzt)[::-1][None, :], (1, 1)).copy()
        # p_mid descending in k: index 0 = 100000, index nzt-1 = 80000.
        p_mid = np.linspace(100000.0, 80000.0, nzt)[None, :]
        input_var = np.random.default_rng(2).standard_normal((1, nzt))
        p_out = 91234.0
&gt;       got = float(np.asarray(pvertinterp(p_mid, p_out, input_var))[0])
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'

clubb_jax/pytests/auto_llm_generated_pytests/test_pvertinterp.py:80: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_pressure_weighted_identity</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_pvertinterp</className><duration>0.02</duration><errorDetails>TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        nzt = 12
        p_mid = jnp.asarray(np.linspace(100000.0, 80000.0, nzt)[None, :])
        def loss(v):
            return jnp.sum(pvertinterp(p_mid, 90000.0, v) ** 2)
&gt;       g = np.asarray(jax.grad(loss)(jnp.asarray(np.random.default_rng(1).standard_normal((1, nzt)))))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_pvertinterp.py:95: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

v = GradTracer(primal=[[ 0.34558419  0.82161814  0.33043708 -1.30315723  0.90535587  0.44637457
  -0.53695324  0.5811181   0.3645724   0.2941325   0.02842224  0.54671299]], typeof(tangent)=f64[1,12])

    def loss(v):
&gt;       return jnp.sum(pvertinterp(p_mid, 90000.0, v) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: pvertinterp() missing 3 required positional arguments: 'p_mid', 'p_out', and 'input_var'
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_pvertinterp.py:94: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_NNLL_covar_eq_swap</className><duration>2.472</duration><failedSince>0</failedSince><name>test_base_all_vary</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_NNLL_covar_eq_swap</className><duration>0.031</duration><failedSince>0</failedSince><name>test_c3_const_x3_NONswap</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_NNLL_covar_eq_swap</className><duration>0.031</duration><failedSince>0</failedSince><name>test_c4_const_x3_SWAPPED</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_NNLL_covar_eq_swap</className><duration>0.024</duration><failedSince>0</failedSince><name>test_c1c2c4_cst_x1x2x3_SWAPPED</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_NNLL_covar_eq_swap</className><duration>0.027</duration><failedSince>0</failedSince><name>test_all_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_quadrivar_covar_const_limits</className><duration>3.99</duration><failedSince>0</failedSince><name>test_const_x3_x3x4_and_all</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_rad_extended_atmosphere</className><duration>1.899</duration><failedSince>0</failedSince><name>test_real_cgils_extended_atmosphere</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_rad_extended_atmosphere</className><duration>0.001</duration><failedSince>0</failedSince><name>test_theta_branch_exner_conversion</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>5.166</duration><failedSince>0</failedSince><name>test_radiation_schedule_can_toggle_between_calls[lba]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>4.689</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[arm-False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.167</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[arm-False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>1.145</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[arm-True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.146</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[arm-True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.306</duration><failedSince>0</failedSince><name>test_soil_updates_use_incoming_fluxes_on_every_step[False-arm]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.143</duration><failedSince>0</failedSince><name>test_soil_updates_use_incoming_fluxes_on_every_step[True-arm]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>5.009</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[bomex-False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.786</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[bomex-False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>1.168</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[bomex-True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.164</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[bomex-True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>4.324</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[lba-False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>3.551</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[lba-False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>1.29</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[lba-True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.304</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[lba-True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>5.377</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[dycoms2_rf01-False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>24.386</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[dycoms2_rf01-False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>1.518</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[dycoms2_rf01-True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_module</className><duration>0.365</duration><failedSince>0</failedSince><name>test_radiation_schedule_preserves_outputs_and_stats[dycoms2_rf01-True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.006</duration><failedSince>0</failedSince><name>test_supported_routine_inventory_and_order_match_fortran_modules</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.0</duration><failedSince>0</failedSince><name>test_jax_only_helpers_and_boundaries_are_explicitly_documented</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.004</duration><failedSince>0</failedSince><name>test_functional_returns_follow_fortran_inout_and_out_order</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_retained_parameter_order_matches_the_supported_source_surface</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.0</duration><failedSince>0</failedSince><name>test_active_driver_uses_only_the_canonical_radiation_module</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.0</duration><failedSince>0</failedSince><name>test_compiled_radiation_modules_have_no_tracer_compatibility_path</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_radiation_port_structure</className><duration>0.0</duration><failedSince>0</failedSince><name>test_conceptual_fortran_comments_are_preserved_verbatim</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_rcm_sat_adj</className><duration>11.162</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_rcm_sat_adj</className><duration>0.12</duration><failedSince>0</failedSince><name>test_self_consistency</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_rcm_sat_adj</className><duration>0.467</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_read_surface_var_for_bc</className><duration>4.146</duration><failedSince>0</failedSince><name>test_interpolated_surface_values_match_column_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_module</className><duration>5.326</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_module</className><duration>1.28</duration><failedSince>0</failedSince><name>test_remapping_matrix_identity_and_conservation</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_module</className><duration>1.243</duration><failedSince>0</failedSince><name>test_calc_mass_analytic</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_module</className><duration>2.522</duration><failedSince>0</failedSince><name>test_matvec_and_grad</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_module</className><duration>4.164</duration><failedSince>0</failedSince><name>test_remap_vals_to_target_two_grids</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_ppm</className><duration>8.702</duration><failedSince>0</failedSince><name>test_f2py_same_grid_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_ppm</className><duration>6.514</duration><failedSince>0</failedSince><name>test_mass_conservation_refined</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_remapping_ppm</className><duration>13.219</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_responder_params</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_responder_params oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        n_zero = 0
        for seed in (11, 22, 33):
            xm, xp2, Skx, sgn, F_x, mf = _inputs(seed)
            if seed == 33:
                F_x[:, :2] = 0.0; n_zero += 1   # exercise the F_x=0 single-Gaussian branch
&gt;           f = clubb_f2py.f2py_calc_responder_params(xm, xp2, Skx, sgn, F_x, mf)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_responder_params.py:59: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_responder_params</className><duration>0.798</duration><failedSince>0</failedSince><name>test_moment_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_responder_params</className><duration>1.232</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_routine_placement</className><duration>0.253</duration><failedSince>0</failedSince><name>test_routines_live_in_their_fortran_home_file</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_routine_placement</className><duration>0.222</duration><failedSince>0</failedSince><name>test_documented_renames_are_all_live</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_cuda13_rejects_an_old_driver</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.0</duration><failedSince>0</failedSince><name>test_cuda13_accepts_a_three_component_new_driver_version</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.0</duration><failedSince>0</failedSince><name>test_cuda13_rejects_an_old_compute_capability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.0</duration><failedSince>0</failedSince><name>test_gpu_query_retries_without_compute_capability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.012</duration><failedSince>0</failedSince><name>test_gpu_report_labels_expected_device_without_claiming_backend_ready</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.0</duration><failedSince>0</failedSince><name>test_numeric_visible_device_resolves_to_its_nvidia_smi_uuid</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.002</duration><failedSince>0</failedSince><name>test_missing_environment_requires_setup_but_remains_selectable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_human_output_labels_planned_versions</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.261</duration><failedSince>0</failedSince><name>test_gpu_preflight_fails_before_creating_an_environment</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.839</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-None-False-false-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.843</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-None-False-false-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.873</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-true-False-true-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.913</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-true-False-true-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.876</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-false-True-true-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.836</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[False-false-True-true-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.89</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-None-False-false-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.811</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-None-False-false-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.817</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-true-False-true-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.816</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-true-False-true-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.926</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-false-True-true-None]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.9</duration><failedSince>0</failedSince><name>test_gpu_wrapper_resolves_physical_index_even_when_pci_order_differs[True-false-True-true-FASTEST_FIRST]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[9]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[GPU-missing]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[GPU-test]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[0,0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_selection_is_rejected[1,,0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_explicit_selection_preserves_order_and_expands_unique_prefix</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.004</duration><failedSince>0</failedSince><name>test_preflight_checks_exposed_gpus_only[0-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.003</duration><failedSince>0</failedSince><name>test_preflight_checks_exposed_gpus_only[1-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.003</duration><failedSince>0</failedSince><name>test_preflight_checks_exposed_gpus_only[1,0-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.002</duration><failedSince>0</failedSince><name>test_preflight_checks_exposed_gpus_only[-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.002</duration><failedSince>0</failedSince><name>test_fastest_first_without_selector_does_not_guess_default</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.0</duration><failedSince>0</failedSince><name>test_truncated_nvidia_row_returns_unavailable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.001</duration><failedSince>0</failedSince><name>test_metal_query_accepts_gpu_family_capability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_runtime_info</className><duration>0.002</duration><failedSince>0</failedSince><name>test_metal_runtime_uses_plugin_requirements</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_saturation</className><duration>1.285</duration><errorDetails>AssertionError: unsupported saturation_formula=2 should raise ValueError</errorDetails><errorStackTrace>def test_dispatcher_matches_leaves():
        """sat_vapor_press_liq routes bit-exactly to the leaf chosen by saturation_formula."""
        T = jnp.linspace(220.0, 310.0, 64)
        for formula, leaf in ((SATURATION_FLATAU, sat_vapor_press_liq_flatau),
                              (SATURATION_BOLTON, sat_vapor_press_liq_bolton)):
            d = float(jnp.max(jnp.abs(sat_vapor_press_liq(T, formula) - leaf(T))))
            assert d == 0.0, f"formula {formula}: dispatcher != leaf ({d})"
        # The documented not-target formulas (saturation.py: gfdl/lookup) must raise — pin the SPECIFIC
        # constants_clubb codes (gfdl=2, lookup=4), not just a generic out-of-range value, so a future change
        # that silently routes them somewhere is caught (mirrors saturation.F90's gfdl/lookup leaves being unported).
        from clubb_jax.src.CLUBB_core.model_flags import saturation_gfdl, saturation_lookup
        for bad in (saturation_gfdl, saturation_lookup, 999):
            try:
                sat_vapor_press_liq(T, bad)
            except ValueError:
                pass
            else:
&gt;               raise AssertionError(f"unsupported saturation_formula={bad} should raise ValueError")
E               AssertionError: unsupported saturation_formula=2 should raise ValueError

clubb_jax/pytests/auto_llm_generated_pytests/test_saturation.py:54: AssertionError</errorStackTrace><failedSince>4</failedSince><name>test_dispatcher_matches_leaves</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_saturation</className><duration>1.164</duration><failedSince>0</failedSince><name>test_svp_reference_values</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_saturation</className><duration>2.988</duration><failedSince>0</failedSince><name>test_sat_mixrat_liq_consistency_and_grad</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_saturation</className><duration>0.803</duration><failedSince>0</failedSince><name>test_sat_mixrat_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_saturation</className><duration>0.002</duration><failedSince>0</failedSince><name>test_saturation_formula_enum_values</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_set_sfc_value_of_flux_profiles</className><duration>0.09</duration><errorDetails>AttributeError: 'bool' object has no attribute 'k_lb_zm'</errorDetails><errorStackTrace>def test_against_transcription():
        gr = setup_grid(ngrdcol=2, deltaz=40.0, zm_init=0.0, zm_top=400.0, grid_type=1)
        ng, nzm = gr.zm.shape
        k_lb = int(gr.k_lb_zm)
        rng = np.random.default_rng(7)
        combos = [
            dict(l_host=False, l_lin=False, sclr_dim=0, edsclr_dim=0),
            dict(l_host=False, l_lin=True,  sclr_dim=2, edsclr_dim=3),
            dict(l_host=True,  l_lin=False, sclr_dim=2, edsclr_dim=3),
            dict(l_host=True,  l_lin=True,  sclr_dim=0, edsclr_dim=0),
            dict(l_host=False, l_lin=False, sclr_dim=1, edsclr_dim=0),
        ]
        worst = 0.0
        for c in combos:
            sclr_dim, edsclr_dim = c["sclr_dim"], c["edsclr_dim"]
            # random nonzero interior profiles (so interior preservation is actually exercised)
            prof = dict(
                wpthlp=rng.standard_normal((ng, nzm)), wprtp=rng.standard_normal((ng, nzm)),
                upwp=rng.standard_normal((ng, nzm)),   vpwp=rng.standard_normal((ng, nzm)),
                upwp_pert=rng.standard_normal((ng, nzm)), vpwp_pert=rng.standard_normal((ng, nzm)),
                wpsclrp=rng.standard_normal((ng, nzm, sclr_dim)),
                wpedsclrp=rng.standard_normal((ng, nzm, max(edsclr_dim, 1))),
            )
            sfc = dict(
                wpthlp=rng.standard_normal(ng), wprtp=rng.standard_normal(ng),
                upwp=rng.standard_normal(ng), vpwp=rng.standard_normal(ng),
                upwp_pert=rng.standard_normal(ng), vpwp_pert=rng.standard_normal(ng),
                wpsclrp=rng.standard_normal((ng, sclr_dim)),
                wpedsclrp=rng.standard_normal((ng, edsclr_dim)),
            )
            ref = _ref(k_lb, ng, nzm, sclr_dim, edsclr_dim, c["l_host"], c["l_lin"], sfc, prof)
&gt;           jout = set_sfc_value_of_flux_profiles(
                sclr_dim, edsclr_dim, gr, c["l_host"], c["l_lin"],
                sfc["wpthlp"], sfc["wprtp"], sfc["upwp"], sfc["vpwp"], sfc["upwp_pert"], sfc["vpwp_pert"],
                sfc["wpsclrp"], sfc["wpedsclrp"],
                prof["wpthlp"], prof["wprtp"], prof["upwp"], prof["vpwp"],
                prof["upwp_pert"], prof["vpwp_pert"], prof["wpsclrp"], prof["wpedsclrp"],
                ng, nzm)

clubb_jax/pytests/auto_llm_generated_pytests/test_set_sfc_value_of_flux_profiles.py:84: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

nzm = 0, ngrdcol = 0
sclr_dim = Grid(nzm=11, nzt=10, ngrdcol=2, zm=Array([[  0.,  40.,  80., 120., 160., 200., 240., 280., 320., 360., 400.],
       [...0.5],
        [0.5, 0.5]]], dtype=float64), k_lb_zm=0, k_ub_zm=10, k_lb_zt=0, k_ub_zt=9, grid_dir_indx=1, grid_dir=1.0)
edsclr_dim = False, gr = False
l_host_applies_sfc_fluxes = array([-0.37526684, -0.29992172])
l_linearize_pbl_winds = array([-1.37857468, -0.80684593])
wpthlp_sfc = array([ 1.65405755, -0.67123322])
wprtp_sfc = array([-1.05409379,  0.33732633])
upwp_sfc = array([ 1.4072722, -1.4540243])
vpwp_sfc = array([-0.20852185, -0.63205255])
upwp_sfc_pert = array([], shape=(2, 0), dtype=float64)
vpwp_sfc_pert = array([], shape=(2, 0), dtype=float64)
wpsclrp_sfc = array([[ 1.23015336e-03,  2.98745538e-01, -2.74137855e-01,
        -8.90591839e-01, -4.54670785e-01, -9.91646555e-01,
...-1.34421455e+00,
        -4.57615761e-01, -1.90122274e+00, -1.28953774e+00,
        -1.84173504e+00, -2.35091131e-01]])
wpedsclrp_sfc = array([[-1.26744648,  0.27126436,  0.15675109, -0.18693094, -2.51675971,
        -0.5386929 , -0.04850095,  0.11330899....0325217 ,  0.88438987,
        -0.58360043, -0.11170195,  0.11046414,  0.06378177, -1.22505583,
         0.07614023]])
wpthlp = array([[ 1.35882342, -1.54714468,  0.85938269,  0.11935403, -0.64147039,
         2.00041655,  0.76225971, -1.1992889 ....43852259, -0.67566225,
         0.20313861, -0.46330758,  0.12726841, -1.18719453, -0.5793016 ,
        -0.19619597]])
wprtp = array([[ 0.89876387,  1.14522201, -1.32352779, -0.79464237,  0.64690342,
        -1.99241978, -0.46316986, -0.09728693....42802494, -0.30368039,
         0.35258907, -0.12077045, -0.19728423, -1.11406714, -0.01152147,
        -0.44358122]])
upwp = array([[ 1.16612778,  0.6530885 , -0.02414361,  0.66838102, -0.33986955,
         1.05212636, -0.00539956,  0.58338235....1640528 ,  2.24475663,
        -0.83172318, -0.62394359,  0.20540395,  0.49301329, -0.17640607,
        -0.20593033]])
vpwp = array([[ 0.70246296,  0.51990764, -1.03367583, -0.07918132,  0.03528685,
        -1.05448462,  0.2598391 , -0.85795648....13140747,  0.3628398 ,
        -2.12856704,  0.84660852, -1.74609648,  0.7567385 , -0.84549703,
         0.77899108]])
upwp_pert = array([], shape=(2, 11, 0), dtype=float64)
vpwp_pert = array([[[ 0.13095121],
        [-1.53683494],
        [ 1.24914875],
        [ 1.44170716],
        [-0.06580491],
   ...],
        [ 0.0133246 ],
        [-0.69440353],
        [-0.32668526],
        [-0.56023105],
        [ 0.0079591 ]]])
wpsclrp = 2, wpedsclrp = 11

    def set_sfc_value_of_flux_profiles(
        nzm,
        ngrdcol,
        sclr_dim,
        edsclr_dim,
        gr,
        l_host_applies_sfc_fluxes,
        l_linearize_pbl_winds,
        wpthlp_sfc,
        wprtp_sfc,
        upwp_sfc,
        vpwp_sfc,
        upwp_sfc_pert,
        vpwp_sfc_pert,
        wpsclrp_sfc,
        wpedsclrp_sfc,
        wpthlp,
        wprtp,
        upwp,
        vpwp,
        upwp_pert,
        vpwp_pert,
        wpsclrp,
        wpedsclrp,
    ):
        """Set or clear the surface values of turbulent flux profiles depending on
        whether the host model applies surface fluxes outside CLUBB.
    
        References:
          None
        """
&gt;       k_lb = gr.k_lb_zm
               ^^^^^^^^^^
E       AttributeError: 'bool' object has no attribute 'k_lb_zm'

clubb_jax/src/CLUBB_core/advance_clubb_core_module.py:1005: AttributeError</errorStackTrace><failedSince>4</failedSince><name>test_against_transcription</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_setter_var_params</className><duration>0.001</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_setter_var_params oracle: SKIP ({type(e).__name__})")
        worst = 0.0
        for seed in (11, 22, 33):
            xm, xp2, Skx, sgn, F_x, zeta = _inputs(seed)
&gt;           f = clubb_f2py.f2py_calc_setter_var_params(xm, xp2, Skx, sgn, F_x, zeta)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_setter_var_params.py:53: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_setter_var_params</className><duration>0.967</duration><failedSince>0</failedSince><name>test_moment_reconstruction</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_setter_var_params</className><duration>2.255</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_flux</className><duration>0.257</duration><failedSince>0</failedSince><name>test_conversions_and_bulk_fluxes</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_flux</className><duration>0.11</duration><failedSince>0</failedSince><name>test_ubar_and_momentum</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_flux</className><duration>0.278</duration><failedSince>0</failedSince><name>test_ht_mostr_flux_interp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_flux</className><duration>0.304</duration><failedSince>0</failedSince><name>test_set_scalar_surface_fluxes_updates_surface_arrays_only</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_flux</className><duration>0.206</duration><failedSince>0</failedSince><name>test_shared_surface_flux_path_jits_and_stays_on_device</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sfc_varnce</className><duration>0.219</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [-0.04767757 -0.04030177]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            clubb_f2py, jgr, ng, nzm = _setup_f2py_grid()
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py calc_sfc_varnce oracle: SKIP ({type(e).__name__})")
        nzt = nzm - 1
        zm_sfc = np.asarray(jgr.zm)[:, 0]; sfce = np.zeros(ng)
        rng = np.random.default_rng(2)
        worst = 0.0
        for _ in range(20):
            upwp = rng.uniform(-0.1, 0.1, ng); vpwp = rng.uniform(-0.1, 0.1, ng)
            wpthlp = rng.uniform(-0.1, 0.1, (ng, nzm)); wprtp = rng.uniform(-1e-4, 1e-4, ng)
            splat = rng.uniform(0.0, 1e-3, (ng, nzm)); tau = rng.uniform(100.0, 1000.0, (ng, nzm))
            T0 = 300.0; up2c = np.full(ng, 2.0); ac = np.full(ng, 1.8)
            wp2 = rng.uniform(1e-2, 1, (ng, nzm)); up2 = rng.uniform(1e-2, 1, (ng, nzm)); vp2 = rng.uniform(1e-2, 1, (ng, nzm))
            thlp2 = rng.uniform(1e-3, 1, (ng, nzm)); rtp2 = rng.uniform(1e-7, 1e-5, (ng, nzm))
            rtpthlp = rng.uniform(-1e-3, 1e-3, (ng, nzm))
&gt;           jr = calc_sfc_varnce(jnp.asarray(upwp), jnp.asarray(vpwp), jnp.asarray(wpthlp), jnp.asarray(wprtp),
                jnp.asarray(splat), jnp.asarray(tau), T0, jnp.asarray(up2c), jnp.asarray(ac), jnp.asarray(wp2),
                jnp.asarray(up2), jnp.asarray(vp2), jnp.asarray(thlp2), jnp.asarray(rtp2), jnp.asarray(rtpthlp),
                jnp.asarray(zm_sfc), jnp.asarray(sfce))
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [-0.04767757 -0.04030177]. The error was:
E           TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_sfc_varnce.py:67: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.251</duration><failedSince>0</failedSince><name>test_impossible_weight_transfer_reports_fatal_status[-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.001</duration><failedSince>0</failedSince><name>test_impossible_weight_transfer_reports_fatal_status[0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.001</duration><failedSince>0</failedSince><name>test_impossible_weight_transfer_reports_fatal_status[2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.551</duration><failedSince>0</failedSince><name>test_weight_limiter_error_reaches_importance_driver</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.456</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[-0.125-mixture]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.098</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[-0.125-cloud1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.097</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[-0.125-cloud2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.093</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[1.125-mixture]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.092</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[1.125-cloud1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.11</duration><failedSince>0</failedSince><name>test_kessler_invalid_fraction_is_local_to_column[1.125-cloud2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_diagnostics</className><duration>0.467</duration><failedSince>0</failedSince><name>test_kessler_empty_sample_reports_source_stop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_driver</className><duration>1.135</duration><failedSince>0</failedSince><name>test_subtimestep_statistics_preserve_previous_window_and_count_once</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_fortran_oracle</className><duration>1.087</duration><failedSince>0</failedSince><name>test_inverse_normal_matches_source_literal_precision</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_inventory_excludes_mt95</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[est_kessler_microphys_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.002</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[generate_uniform_sample_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[latin_hypercube_arrays]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.01</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[latin_hypercube_driver_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[lh_microphys_var_covar_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[math_utilities]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[parameters_silhs]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.001</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[silhs_api_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.008</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[silhs_importance_sample_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_port_structure</className><duration>0.003</duration><failedSince>0</failedSince><name>test_silhs_source_routine_and_argument_order[transform_to_pdf_module]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>2.958</duration><failedSince>0</failedSince><name>test_stratification_reproducibility_and_sequence_reuse</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.291</duration><failedSince>0</failedSince><name>test_deterministic_strata_cycle_and_sequence_reuse[1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.293</duration><failedSince>0</failedSince><name>test_deterministic_strata_cycle_and_sequence_reuse[3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.363</duration><failedSince>0</failedSince><name>test_deterministic_overlap_pool_is_independent_of_seed</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>2.744</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-False-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>1.643</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-False-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>1.538</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-False-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.327</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-True-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.116</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-True-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.117</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions0-True-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.015</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-False-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.01</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-False-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.008</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-False-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.014</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-True-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.01</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-True-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.01</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions1-True-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.014</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-False-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.009</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-False-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.007</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-False-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.014</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-True-eight_cluster_allocation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.01</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-True-four_cluster_no_precip]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.01</duration><failedSince>0</failedSince><name>test_category_probabilities_weights_and_empty_clusters[fractions2-True-two_cluster_cp_nocp]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>1.152</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[False-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.597</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[False-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.454</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[False-3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.693</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[True-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.598</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[True-2]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.573</duration><failedSince>0</failedSince><name>test_importance_samples_membership_and_weighted_estimate[True-3]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>2.177</duration><failedSince>0</failedSince><name>test_inverse_normal_and_cholesky_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.249</duration><failedSince>0</failedSince><name>test_vertical_overlap_matches_scalar_recurrence_and_maximum_overlap</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.439</duration><failedSince>0</failedSince><name>test_microphysical_variance_sources_include_optional_dt_terms[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.194</duration><failedSince>0</failedSince><name>test_microphysical_variance_sources_include_optional_dt_terms[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.176</duration><failedSince>0</failedSince><name>test_category_rms_uses_weighted_second_moment_and_real_probability</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>2.757</duration><failedSince>0</failedSince><name>test_uniform_driver_options_and_shared_permutation_state[False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>1.05</duration><failedSince>0</failedSince><name>test_uniform_driver_options_and_shared_permutation_state[False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.539</duration><failedSince>0</failedSince><name>test_uniform_driver_options_and_shared_permutation_state[True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.066</duration><failedSince>0</failedSince><name>test_uniform_driver_options_and_shared_permutation_state[True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.001</duration><failedSince>0</failedSince><name>test_old_cloud_weighted_sample_count_check_precedes_dispatch[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.001</duration><failedSince>0</failedSince><name>test_old_cloud_weighted_sample_count_check_precedes_dispatch[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.174</duration><failedSince>0</failedSince><name>test_invalid_category_draw_is_reported_in_jit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.687</duration><failedSince>0</failedSince><name>test_random_starting_level_bounds_and_no_cloud_fallback[1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_sampling</className><duration>0.393</duration><failedSince>0</failedSince><name>test_random_starting_level_bounds_and_no_cloud_fallback[-1]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_surface_schemes</className><duration>0.806</duration><failedSince>0</failedSince><name>test_mpace_b_sfclyr</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_surface_schemes</className><duration>1.012</duration><failedSince>0</failedSince><name>test_arm_97_sfclyr</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_surface_schemes</className><duration>0.85</duration><failedSince>0</failedSince><name>test_twp_ice_equals_cloud_feedback</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_surface_schemes</className><duration>0.099</duration><failedSince>0</failedSince><name>test_arm_3year_arm_0003_equal_arm_97</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_silhs_surface_schemes</className><duration>0.935</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad</className><duration>0.644</duration><failedSince>0</failedSince><name>test_simple_rad_clean</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad</className><duration>0.248</duration><failedSince>0</failedSince><name>test_simple_rad_above_cloud</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad</className><duration>0.172</duration><failedSince>0</failedSince><name>test_simple_rad_bomex</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad_lba</className><duration>0.598</duration><failedSince>0</failedSince><name>test_table_load</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad_lba</className><duration>0.38</duration><failedSince>0</failedSince><name>test_time_interp_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad_lba</className><duration>0.555</duration><failedSince>0</failedSince><name>test_full_radht_vs_literal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_simple_rad_lba</className><duration>0.568</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_skx_func</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[1.88611221 1.02265511 1.95248741 0.16167205 1.21471166 0.75297317]
 [1.60380241 0.34905563 1.74327055 1.0878828  1.80443016 0.95430705]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py Skx_func oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(4)
        params = _params()
        worst = 0.0
        for _ in range(10):
            xp2 = rng.uniform(0.0, 2.0, (NG, NZ))
            xp3 = rng.uniform(-1.0, 1.0, (NG, NZ))
            ref = np.asarray(clubb_f2py.f2py_skx_func(xp2, xp3, _X_TOL, params))
&gt;           got = np.asarray(Skx_func(xp2, xp3, _X_TOL, params))
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[1.88611221 1.02265511 1.95248741 0.16167205 1.21471166 0.75297317]
E            [1.60380241 0.34905563 1.74327055 1.0878828  1.80443016 0.95430705]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_skx_func.py:59: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_skx_func</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.5 1. ]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_closed_form():
        params = _params()
        xp2 = np.array([[0.5, 1.0]]); xp3 = np.array([[0.2, -0.3]])
&gt;       got = np.asarray(Skx_func(xp2, xp3, _X_TOL, params))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[0.5 1. ]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_skx_func.py:68: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_closed_form</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_skx_func</className><duration>0.054</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[1.07246109 1.90588102 0.37390326 1.90243395 0.69247976 0.90432025]
 [1.67263493 0.87747836 1.14422801 0.15236232 1.53167491 1.1224723 ]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        params = _params()
        xp2 = jnp.asarray(np.random.default_rng(1).uniform(0.1, 2.0, (NG, NZ)))
        def loss(xp3):
            return jnp.sum(Skx_func(xp2, xp3, _X_TOL, params) ** 2)
&gt;       g = np.asarray(jax.grad(loss)(jnp.asarray(np.random.default_rng(2).uniform(-1, 1, (NG, NZ)))))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_skx_func.py:83: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

xp3 = GradTracer(primal=[[-0.47677573 -0.40301771  0.62845148 -0.81616812  0.20020105  0.45712105]
 [-0.62419785 -0.88970675 -0.45006126  0.31486603  0.12453133 -0.69987547]], typeof(tangent)=f64[2,6])

    def loss(xp3):
&gt;       return jnp.sum(Skx_func(xp2, xp3, _X_TOL, params) ** 2)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[1.07246109 1.90588102 0.37390326 1.90243395 0.69247976 0.90432025]
E        [1.67263493 0.87747836 1.14422801 0.15236232 1.53167491 1.1224723 ]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'
E       
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_skx_func.py:82: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_skx_func</className><duration>0.028</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[-1.43032719 -1.20905314  1.88535444 -2.44850435  0.60060316  1.37136316]
 [-1.87259356 -2.66912024 -1.35018379  0.94459809  0.37359398 -2.09962642]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_LG_2005_ansatz_f2py():
        """LG_2005_ansatz (Skx_module.F90 — the Larson-Golaz 2005 skewness ansatz: Skx from Skw/wpxp/wp2/xp2/sigma_sqd_w/
        beta) and its &lt;x'^3&gt; wrapper xp3_LG_2005_ansatz vs the f2py oracle. Both previously untested. The ansatz's clip
        carries a ~1e-11 relative FP difference; checked with a relative tolerance. (iter 422)"""
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py LG_2005_ansatz oracle: SKIP ({type(e).__name__})")
        from clubb_jax.src.CLUBB_core.Skx_module import LG_2005_ansatz, xp3_LG_2005_ansatz
        from clubb_jax.src.CLUBB_core.parameter_indices import ibeta
        params = _params(); params[:, ibeta - 1] = 2.0       # f2py xp3 extracts beta from clubb_params; JAX takes it explicitly
        beta = np.ascontiguousarray(params[:, ibeta - 1])
        rng = np.random.default_rng(2)
        w_lg = w_xp3 = 0.0
        for _ in range(30):
            Skw = rng.uniform(-3, 3, (NG, NZ)); wpxp = rng.uniform(-1, 1, (NG, NZ))
            wp2 = rng.uniform(1e-2, 2, (NG, NZ)); xp2 = rng.uniform(1e-4, 1, (NG, NZ)); ssw = rng.uniform(0, 0.6, (NG, NZ))
&gt;           jl = np.asarray(LG_2005_ansatz(jnp.asarray(Skw), jnp.asarray(wpxp), jnp.asarray(wp2), jnp.asarray(xp2),
                                           jnp.asarray(ssw), jnp.asarray(beta)[:, None], _X_TOL))
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[-1.43032719 -1.20905314  1.88535444 -2.44850435  0.60060316  1.37136316]
E            [-1.87259356 -2.66912024 -1.35018379  0.94459809  0.37359398 -2.09962642]]. The error was:
E           TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_skx_func.py:107: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_LG_2005_ansatz_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_smooth_heaviside</className><duration>0.01</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 1.59500198e+00  4.07791901e-02  1.71447734e+00 -1.50899031e+00
   3.86480995e-01 -4.44648296e-01  1.08684435e+00 -1.17169986e+00
   1.33788699e+00  1.58189043e-01  1.44797429e+00 -8.22473142e-02
  -2.50213400e-01  1.04020818e+00  1.74295080e+00 -4.68987146e-01
   1.68815833e+00  1.54449500e+00 -1.16030669e+00  3.91865821e-01]
 [ 7.37513084e-01  1.59409324e+00  5.96366701e-01 -1.31977528e+00
  -7.67664437e-03 -2.29685978e-02  8.14281655e-04  1.65089623e+00
  -5.40225361e-01 -9.94423872e-01  7.95132080e-02  5.08215326e-01
   1.58078539e+00  2.95256882e-01 -8.35799795e-01  1.54718890e+00
  -2.97889754e-02  6.32883114e-01 -8.62599223e-02 -1.01887190e+00]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_is_truncated_constants():
        """The f2py oracle == the truncated-constant closed form (1e-16); the full-pi JAX differs only by the
        documented constant-precision improvement (~1e-10)."""
        try:
            import clubb_f2py
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py smooth_heaviside oracle: SKIP ({type(e).__name__})")
        rng = np.random.default_rng(4)
        worst_trunc = 0.0
        worst_jax = 0.0
        for smth_range in (0.6, 1.0, 0.25):
            x = rng.uniform(-3 * smth_range, 3 * smth_range, (2, 20))
            ref = np.asarray(clubb_f2py.f2py_smooth_heaviside_peskin(np.asfortranarray(x), smth_range))
            worst_trunc = max(worst_trunc, np.max(np.abs(_trunc_ref(x, smth_range) - ref)))
&gt;           worst_jax = max(worst_jax, np.max(np.abs(np.asarray(smooth_heaviside_peskin(x, smth_range)) - ref)))
                                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 1.59500198e+00  4.07791901e-02  1.71447734e+00 -1.50899031e+00
E              3.86480995e-01 -4.44648296e-01  1.08684435e+00 -1.17169986e+00
E              1.33788699e+00  1.58189043e-01  1.44797429e+00 -8.22473142e-02
E             -2.50213400e-01  1.04020818e+00  1.74295080e+00 -4.68987146e-01
E              1.68815833e+00  1.54449500e+00 -1.16030669e+00  3.91865821e-01]
E            [ 7.37513084e-01  1.59409324e+00  5.96366701e-01 -1.31977528e+00
E             -7.67664437e-03 -2.29685978e-02  8.14281655e-04  1.65089623e+00
E             -5.40225361e-01 -9.94423872e-01  7.95132080e-02  5.08215326e-01
E              1.58078539e+00  2.95256882e-01 -8.35799795e-01  1.54718890e+00
E             -2.97889754e-02  6.32883114e-01 -8.62599223e-02 -1.01887190e+00]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_smooth_heaviside.py:61: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_is_truncated_constants</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_smooth_heaviside</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [-0.9   -0.855 -0.81  -0.765 -0.72  -0.675 -0.63  -0.585 -0.54  -0.495
 -0.45  -0.405 -0.36  -0.315 -0.27  -0.225 -0.18  -0.135 -0.09  -0.045
  0.     0.045  0.09   0.135  0.18   0.225  0.27   0.315  0.36   0.405
  0.45   0.495  0.54   0.585  0.63   0.675  0.72   0.765  0.81   0.855
  0.9  ]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_full_pi_closed_form_and_endpoints():
        r = 0.6
        x = np.linspace(-1.5 * r, 1.5 * r, 41)
&gt;       got = np.asarray(smooth_heaviside_peskin(x, r))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [-0.9   -0.855 -0.81  -0.765 -0.72  -0.675 -0.63  -0.585 -0.54  -0.495
E        -0.45  -0.405 -0.36  -0.315 -0.27  -0.225 -0.18  -0.135 -0.09  -0.045
E         0.     0.045  0.09   0.135  0.18   0.225  0.27   0.315  0.36   0.405
E         0.45   0.495  0.54   0.585  0.63   0.675  0.72   0.765  0.81   0.855
E         0.9  ]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_smooth_heaviside.py:72: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_full_pi_closed_form_and_endpoints</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_smooth_heaviside</className><duration>0.065</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[-0.5 -0.4 -0.3 -0.2 -0.1  0.   0.1  0.2  0.3  0.4  0.5], typeof(tangent)=f64[11]). The error was:
TypeError: unhashable type: 'LinearizeTracer'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_differentiable():
        r = 0.6
&gt;       g = np.asarray(jax.grad(lambda x: jnp.sum(smooth_heaviside_peskin(x, r) ** 2))(
            jnp.asarray(np.linspace(-0.5, 0.5, 11))))

clubb_jax/pytests/auto_llm_generated_pytests/test_smooth_heaviside.py:84: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

x = GradTracer(primal=[-0.5 -0.4 -0.3 -0.2 -0.1  0.   0.1  0.2  0.3  0.4  0.5], typeof(tangent)=f64[11])

&gt;   g = np.asarray(jax.grad(lambda x: jnp.sum(smooth_heaviside_peskin(x, r) ** 2))(
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        jnp.asarray(np.linspace(-0.5, 0.5, 11))))
E   ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jax._src.interpreters.ad.LinearizeTracer'&gt;, GradTracer(primal=[-0.5 -0.4 -0.3 -0.2 -0.1  0.   0.1  0.2  0.3  0.4  0.5], typeof(tangent)=f64[11]). The error was:
E   TypeError: unhashable type: 'LinearizeTracer'
E   
E   --------------------
E   For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_smooth_heaviside.py:84: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_soil_vegetation</className><duration>0.239</duration><failedSince>0</failedSince><name>test_soil_veg_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_soil_vegetation</className><duration>0.422</duration><failedSince>0</failedSince><name>test_soil_veg_init_and_integration</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_soil_vegetation</className><duration>0.769</duration><failedSince>0</failedSince><name>test_soil_veg_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.375</duration><failedSince>0</failedSince><name>test_solver_shape</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.208</duration><failedSince>0</failedSince><name>test_solver_diagonal</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.173</duration><failedSince>0</failedSince><name>test_solver_known_3x3</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.202</duration><failedSince>0</failedSince><name>test_solver_vs_numpy_single_col</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.284</duration><failedSince>0</failedSince><name>test_solver_vs_numpy_multi_col</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.262</duration><failedSince>0</failedSince><name>test_solver_residual</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_solver</className><duration>0.207</duration><failedSince>0</failedSince><name>test_solver_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_spec_hum_to_mixing_ratio</className><duration>0.001</duration><failedSince>0</failedSince><name>test_conversions</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>0.811</duration><failedSince>0</failedSince><name>test_clipped_frequency_has_zero_forward_and_reverse_derivatives[-0.0004-0.0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>0.357</duration><failedSince>0</failedSince><name>test_clipped_frequency_has_zero_forward_and_reverse_derivatives[-0.0004-0.25]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>0.381</duration><failedSince>0</failedSince><name>test_clipped_frequency_has_zero_forward_and_reverse_derivatives[0.0-0.0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>0.42</duration><failedSince>0</failedSince><name>test_clipped_frequency_has_zero_forward_and_reverse_derivatives[0.0-0.25]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>5.487</duration><failedSince>0</failedSince><name>test_mixed_columns_preserve_values_and_coefficient_sensitivity[0.0]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_splatting_autodiff</className><duration>0.505</duration><failedSince>0</failedSince><name>test_mixed_columns_preserve_values_and_coefficient_sensitivity[0.25]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sponge_damp_xp23</className><duration>0.182</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py sponge_damp_xp2/xp3 oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        zm = np.asarray(jgr.zm); zt = np.asarray(jgr.zt)
        rng = np.random.default_rng(4)
        xp2 = rng.uniform(0.01, 2.0, (ng, nzm)); xp3 = rng.uniform(-1, 1, (ng, nzt))
        tau_zm = np.full((ng, nzm), _TAU); tau_zt = np.full((ng, nzt), _TAU)
        xtol_col = np.full(ng, _XTOLSQ); depth_col = np.full(ng, _DEPTH)   # f2py wants rank-1 (ngrdcol)
        xtol_j = xtol_col[:, None]; depth_j = depth_col[:, None]            # JAX broadcasts (ng,1)
&gt;       f2 = np.asarray(clubb_f2py.f2py_sponge_damp_xp2(_DT, zm, xp2, xtol_col, tau_zm, depth_col))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_sponge_damp_xp23.py:67: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sponge_damp_xp23</className><duration>0.324</duration><errorDetails>ValueError: too many axes: 2 (effrank=2), expected rank=1</errorDetails><errorStackTrace>def test_sponge_damp_xm_f2py():
        """sponge_damp_xm (sponge_layer_damping.F90) — implicit nudge of the mean xm toward xm_ref in the top sponge.
        The JAX relies on tau=inf below the sponge (from initialize_tau_sponge_damp) for the no-op rather than a geometric
        gate, so build that tau profile and pass it to both sides; this also exercises initialize_tau_sponge_damp (no own
        f2py wrapper). SKIPs if clubb_f2py/clubb_python are unbuilt. (iter 439)"""
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py sponge_damp_xm oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape; nzt = nzm - 1
        clubb_api.init_err_info(ng); cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng), l_implemented=False,
                             l_ascending_grid=True, grid_type=2, deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng),
                             zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)), err_info=ErrInfo(ngrdcol=ng))
        zt = np.asarray(jgr.zt); zm = np.asarray(jgr.zm); zm_top = float(jgr.zm[0, -1])
        tau_min, tau_max, depth_frac = 120.0, 1800.0, 0.25
        tau = np.zeros((ng, nzt))
        for i in range(ng):
            tau[i], sld = initialize_tau_sponge_damp(zt[i], _DT, zm_top, tau_min, tau_max, depth_frac)
        sld = depth_frac * zm_top
        rng = np.random.default_rng(2)
        worst = 0.0; damped = False
        for _ in range(10):
            xm = rng.uniform(280.0, 320.0, (ng, nzt)); xm_ref = rng.uniform(280.0, 320.0, (ng, nzt))
            j = np.asarray(sponge_damp_xm(jnp.asarray(xm), jnp.asarray(xm_ref), zt, zm_top, jnp.asarray(tau), sld, _DT))
&gt;           f = np.asarray(clubb_f2py.f2py_sponge_damp_xm(_DT, zt, zm, xm_ref, xm, tau, np.full(ng, sld)))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: too many axes: 2 (effrank=2), expected rank=1

clubb_jax/pytests/auto_llm_generated_pytests/test_sponge_damp_xp23.py:110: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_sponge_damp_xm_f2py</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sponge_damp_xp23</className><duration>0.693</duration><failedSince>0</failedSince><name>test_below_sponge_noop</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sponge_damp_xp23</className><duration>1.194</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_spurious_source</className><duration>0.311</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_spurious_source</className><duration>0.154</duration><failedSince>0</failedSince><name>test_conservation_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_spurious_source</className><duration>0.59</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_standalone_jax</className><duration>40.615</duration><failedSince>0</failedSince><name>test_active_driver_runs_without_clubb_python[neutral]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_standalone_jax</className><duration>40.337</duration><failedSince>0</failedSince><name>test_active_driver_runs_without_clubb_python[arm]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_output_time</className><duration>0.001</duration><failedSince>0</failedSince><name>test_stats_timestamp_uses_end_of_current_model_step</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_output_time</className><duration>0.0</duration><failedSince>0</failedSince><name>test_inlined_driver_helpers_stay_absent</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_output_time</className><duration>0.0</duration><failedSince>0</failedSince><name>test_driver_uses_canonical_microphysics_interfaces</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.005</duration><failedSince>0</failedSince><name>test_registry_expansion_matches_source_families</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_registry_errors_are_not_silently_skipped[entry(1) = "profile | zt"-expected name | grid | units | long_name]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_registry_errors_are_not_silently_skipped[entry(1) = "profile | bad_grid | K | Profile"-Invalid stats grid]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_registry_errors_are_not_silently_skipped[entry(1) = "profile | zt | K | Profile-Malformed stats registry entry]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_registry_errors_are_not_silently_skipped[entry(1) = " | zt | K | Profile"-name and grid must be non-empty]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_single_quoted_registry_entry_is_supported</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_sampling_uses_open_closed_absolute_time_window</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>2.384</duration><failedSince>0</failedSince><name>test_rank_and_selector_dispatch_updates_pointwise_counts</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.134</duration><failedSince>0</failedSince><name>test_budget_sequence_and_l_count_sample</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.121</duration><failedSince>0</failedSince><name>test_jitted_banks_preserve_column_and_level_selectors</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.006</duration><failedSince>0</failedSince><name>test_jax_layout_reuses_cached_slot_maps</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.006</duration><failedSince>0</failedSince><name>test_rank_one_column_selector_is_bounds_checked</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.338</duration><failedSince>0</failedSince><name>test_direct_banks_accumulate_across_sampled_and_unsampled_steps</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.026</duration><failedSince>0</failedSince><name>test_netcdf_record_uses_end_step_time</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.011</duration><failedSince>0</failedSince><name>test_oversampling_is_reported_at_the_host_output_boundary</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.001</duration><failedSince>0</failedSince><name>test_config_metadata_data_and_source_grid_contract</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.016</duration><failedSince>0</failedSince><name>test_netcdf_metadata_matches_fortran_schema</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.002</duration><failedSince>0</failedSince><name>test_radiation_registry_entries_require_radiation_grids</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.032</duration><failedSince>0</failedSince><name>test_multiple_runtime_batches_fill_one_output_file</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>4.148</duration><failedSince>0</failedSince><name>test_output_remapping_preserves_values_on_identical_grids</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_stats_writer</className><duration>0.035</duration><failedSince>0</failedSince><name>test_silhs_sample_fields_share_the_stats_record</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sunray_sw</className><duration>0.495</duration><failedSince>0</failedSince><name>test_jit_multicol</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_sunray_sw</className><duration>0.316</duration><errorDetails>TypeError: clubb_f2py.f2py_sunray_sw() missing required argument 'zm' (pos 5)</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py sunray_sw oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape; nzt = nzm - 1
        clubb_api.init_err_info(ng); cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng), l_implemented=False,
                             l_ascending_grid=True, grid_type=2, deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng),
                             zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)), err_info=ErrInfo(ngrdcol=ng))
        # Pin the parameters_radiation constants the f2py wrapper reads (fs_values/cos_solar_zen are fixed dim(20)).
        z20 = np.zeros(20)
        clubb_f2py.f2py_set_simplified_radiation_params(0.0, 0.0, 0.0, _RADIUS, _ALVDR, _GC, _OMEGA,
                                                        False, True, True, 1, z20.copy(), z20.copy(), z20.copy())
        dzt = np.asarray(jgr.dzt); zm = np.asarray(jgr.zm); zt = np.asarray(jgr.zt)
        rng = np.random.default_rng(0)
        worst = 0.0
        for _ in range(15):
            rcm = rng.uniform(0.0, 1e-3, (ng, nzt)); rho = rng.uniform(0.5, 1.2, (ng, nzt))
            fs0 = float(rng.uniform(100.0, 400.0)); amu0 = float(rng.uniform(0.3, 0.9))
            j = np.asarray(sunray_sw(ng, nzt, rcm, rho, amu0, dzt, zm, zt, _RADIUS, _ALVDR, _GC, fs0, _OMEGA, True))
&gt;           f = np.asarray(clubb_f2py.f2py_sunray_sw(fs0, amu0, rho, rcm))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           TypeError: clubb_f2py.f2py_sunray_sw() missing required argument 'zm' (pos 5)

clubb_jax/pytests/auto_llm_generated_pytests/test_sunray_sw.py:81: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_time_select</className><duration>0.843</duration><failedSince>0</failedSince><name>test_interior_triples_match_fortran</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_time_select</className><duration>0.192</duration><failedSince>0</failedSince><name>test_interpolation_equivalent_everywhere</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_time_select</className><duration>0.057</duration><failedSince>0</failedSince><name>test_endpoints_and_out_of_range</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_transform_pdf_chi_eta_component</className><duration>0.497</duration><failedSince>0</failedSince><name>test_deterministic_coefficients</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_transform_pdf_chi_eta_component</className><duration>3.411</duration><failedSince>0</failedSince><name>test_variance_combination_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_transform_pdf_chi_eta_component</className><duration>0.803</duration><failedSince>0</failedSince><name>test_corr_quotient_and_grad</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_transform_pdf_chi_eta_component</className><duration>0.82</duration><failedSince>0</failedSince><name>test_zero_component_variances_have_finite_derivatives</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>2.162</duration><failedSince>0</failedSince><name>test_all_vary</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.011</duration><failedSince>0</failedSince><name>test_all_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.01</duration><failedSince>0</failedSince><name>test_x1x2_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.01</duration><failedSince>0</failedSince><name>test_x1x3_const_uses_swapped_x1x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.016</duration><failedSince>0</failedSince><name>test_x2x3_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.012</duration><failedSince>0</failedSince><name>test_x1_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.01</duration><failedSince>0</failedSince><name>test_x2_const</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NLL_mean_eq</className><duration>0.009</duration><failedSince>0</failedSince><name>test_x3_const_uses_swapped_x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>2.03</duration><failedSince>0</failedSince><name>test_all_vary_base</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.015</duration><failedSince>0</failedSince><name>test_c3_const_x3</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.012</duration><failedSince>0</failedSince><name>test_c2_const_x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.014</duration><failedSince>0</failedSince><name>test_c1_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.017</duration><failedSince>0</failedSince><name>test_c2c3_const_x2x3</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.016</duration><failedSince>0</failedSince><name>test_c1c3_const_x1x3</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.014</duration><failedSince>0</failedSince><name>test_c1c2_const_x1x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_trivar_NNL_covar_eq</className><duration>0.013</duration><failedSince>0</failedSince><name>test_all_const_maps_to_x2x3</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.001</duration><failedSince>0</failedSince><name>test_baseline_and_supported_radiation_schemes_pass</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.001</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg0-overrides0-microphys_scheme]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg1-overrides1-l_gfdl_activation]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg2-overrides2-rad_scheme]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg3-overrides3-l_calc_thlp2_rad]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg4-overrides4-Sponge damping]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg5-overrides5-lh_microphys_type]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg6-overrides6-l_silhs_rad]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg7-overrides7-l_restart]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg8-overrides8-l_input_fields]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg9-overrides9-l_test_grid_generalization]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_unsupported_active_driver_features_fail_loud[cfg10-overrides10-grid_adapt_in_time_method]</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.045</duration><failedSince>0</failedSince><name>test_invalid_solar_date_uses_the_source_calendar_failure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_unsupported_config_guards</className><duration>0.0</duration><failedSince>0</failedSince><name>test_supported_microphysics_and_cloud_sedimentation_pass_initial_gate</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_update_xp2_mc</className><duration>2.519</duration><failedSince>0</failedSince><name>test_transcription_and_interp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_update_xp2_mc</className><duration>0.088</duration><failedSince>0</failedSince><name>test_invariants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_update_xp2_mc</className><duration>4.351</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.001</duration><failedSince>0</failedSince><name>test_assert_corr_symmetric_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.001</duration><failedSince>0</failedSince><name>test_assert_corr_symmetric_f2py_nocrash</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.0</duration><failedSince>0</failedSince><name>test_sfc_varnce_check_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.0</duration><failedSince>0</failedSince><name>test_length_check_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.118</duration><failedSince>0</failedSince><name>test_pdf_closure_check_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rad_check_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_validation_checks</className><duration>0.001</duration><failedSince>0</failedSince><name>test_invalid_model_arrays_behavior</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_w_up_in_cloud</className><duration>1.087</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_w_up_in_cloud</className><duration>0.896</duration><failedSince>0</failedSince><name>test_invariants</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_w_up_in_cloud</className><duration>1.777</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_windm_edsclrm_lhs</className><duration>0.129</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-0.68638201  1.52409004 -0.46602778 -0.33872706 -0.39151396
   -0.01255222  1.15885653 -1.76984869]
  [ 1.21548704 -1.55817849  1.00056251  1.14582832  1.29674442
    0.99859823  0.33629566  0.54250523]]

 [[-0.79632431  0.18724632  1.6983095  -0.9961909  -0.79230888
    0.06051654 -0.09212711 -0.80942598]
  [-0.64738986 -1.10715655  0.88700408 -0.95046203  1.54918098
    0.34532349  1.14856963  0.50961795]]

 [[-1.62273185  1.52964745  0.3761664  -0.50771604  1.57947835
    0.55469002 -1.1577175   1.79986478]
  [-0.58395162  1.71350815  0.29173991  0.22391714  0.24590882
    1.01796553 -1.33532669  0.60011474]]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_lhs_matches_f90_assembly():
        gr = setup_grid(_NG, _DZ, _DZ, _DZ * (_NZT + 1))
        rng = np.random.default_rng(544)
        dt = 60.0
        lhs_diff, lhs_ma_zt, invrs_rho_ds_zt, rho_ds_zm, u_star_sqd, wind_speed, invrs_dzt = _inputs(rng, gr)
&gt;       got = np.asarray(windm_edsclrm_lhs(jnp.asarray(lhs_diff), jnp.asarray(lhs_ma_zt), dt,
                                           jnp.asarray(invrs_rho_ds_zt), jnp.asarray(rho_ds_zm),
                                           jnp.asarray(u_star_sqd), jnp.asarray(wind_speed), gr, 0, 0))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-0.68638201  1.52409004 -0.46602778 -0.33872706 -0.39151396
E          -0.01255222  1.15885653 -1.76984869]
E         [ 1.21548704 -1.55817849  1.00056251  1.14582832  1.29674442
E           0.99859823  0.33629566  0.54250523]]
E       
E        [[-0.79632431  0.18724632  1.6983095  -0.9961909  -0.79230888
E           0.06051654 -0.09212711 -0.80942598]
E         [-0.64738986 -1.10715655  0.88700408 -0.95046203  1.54918098
E           0.34532349  1.14856963  0.50961795]]
E       
E        [[-1.62273185  1.52964745  0.3761664  -0.50771604  1.57947835
E           0.55469002 -1.1577175   1.79986478]
E         [-0.58395162  1.71350815  0.29173991  0.22391714  0.24590882
E           1.01796553 -1.33532669  0.60011474]]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_lhs.py:62: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_lhs_matches_f90_assembly</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_windm_edsclrm_lhs</className><duration>0.002</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-1.48571919 -0.00288855  0.40599343 -1.88524397 -1.40829566
    1.71284409 -1.7183177  -1.4809042 ]
  [ 1.79331381  0.48753437 -0.52402751  0.04556009  0.65137181
   -0.89876474 -1.44812771  1.15215838]]

 [[ 0.68144234  0.04952925  1.26694574  0.19630108  1.92365456
   -1.18196215  0.21492145 -0.06550121]
  [-0.58690058  0.36638122 -1.05879507  1.20881074  1.46933421
   -1.48496132 -0.13170717 -0.89142043]]

 [[-1.66753201  1.58377723 -0.28020523 -1.4092348   0.69344943
   -1.19113589  1.60572431 -1.13140697]
  [-1.86770125 -1.19692418 -0.6170085  -0.12436735  1.62453736
    0.78944435 -0.64271736 -1.93249114]]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_surface_term_localized_and_cn_scaling():
        gr = setup_grid(_NG, _DZ, _DZ, _DZ * (_NZT + 1))
        rng = np.random.default_rng(11)
        dt = 60.0
        lhs_diff, lhs_ma_zt, invrs_rho_ds_zt, rho_ds_zm, u_star_sqd, wind_speed, invrs_dzt = _inputs(rng, gr)
        args = (jnp.asarray(lhs_diff), jnp.asarray(lhs_ma_zt), dt, jnp.asarray(invrs_rho_ds_zt),
                jnp.asarray(rho_ds_zm), jnp.asarray(u_star_sqd), jnp.asarray(wind_speed), gr, 0, 0)
&gt;       base = np.asarray(windm_edsclrm_lhs(*args))
                          ^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-1.48571919 -0.00288855  0.40599343 -1.88524397 -1.40829566
E           1.71284409 -1.7183177  -1.4809042 ]
E         [ 1.79331381  0.48753437 -0.52402751  0.04556009  0.65137181
E          -0.89876474 -1.44812771  1.15215838]]
E       
E        [[ 0.68144234  0.04952925  1.26694574  0.19630108  1.92365456
E          -1.18196215  0.21492145 -0.06550121]
E         [-0.58690058  0.36638122 -1.05879507  1.20881074  1.46933421
E          -1.48496132 -0.13170717 -0.89142043]]
E       
E        [[-1.66753201  1.58377723 -0.28020523 -1.4092348   0.69344943
E          -1.19113589  1.60572431 -1.13140697]
E         [-1.86770125 -1.19692418 -0.6170085  -0.12436735  1.62453736
E           0.78944435 -0.64271736 -1.93249114]]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_lhs.py:78: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_surface_term_localized_and_cn_scaling</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_windm_edsclrm_rhs</className><duration>0.068</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-1.19147169  1.26627236  0.60924776  1.90165371  1.76880206
   -1.69827121 -0.92372881 -1.84510251]
  [-1.14636946 -1.9315875   1.87317936  0.73583607 -1.52520287
   -1.8679437   1.12926853 -1.06671348]]

 [[-0.09825562 -0.5705109   1.92056741  1.32182048 -1.32470799
    0.08165562 -0.31340509 -0.70146373]
  [-1.7908162  -1.28913637 -1.6800432  -1.77181536 -0.53644832
    1.14905894 -1.8667776  -0.13233778]]

 [[ 0.14219461 -1.08009536  1.72982352 -0.97913112  0.7923364
   -1.25352379  0.53728725  1.57109789]
  [-0.81325559 -0.03744118  0.21188722 -1.27103021  1.8465853
    0.3065091   1.68759379 -0.69125656]]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_rhs_is_cn_explicit_half():
        rng = np.random.default_rng(545)
        dt = 60.0
        lhs_diff, xm, xm_tndcy = _inputs(rng)
&gt;       got = np.asarray(windm_edsclrm_rhs(jnp.asarray(lhs_diff), jnp.asarray(xm), jnp.asarray(xm_tndcy), dt))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[-1.19147169  1.26627236  0.60924776  1.90165371  1.76880206
E          -1.69827121 -0.92372881 -1.84510251]
E         [-1.14636946 -1.9315875   1.87317936  0.73583607 -1.52520287
E          -1.8679437   1.12926853 -1.06671348]]
E       
E        [[-0.09825562 -0.5705109   1.92056741  1.32182048 -1.32470799
E           0.08165562 -0.31340509 -0.70146373]
E         [-1.7908162  -1.28913637 -1.6800432  -1.77181536 -0.53644832
E           1.14905894 -1.8667776  -0.13233778]]
E       
E        [[ 0.14219461 -1.08009536  1.72982352 -0.97913112  0.7923364
E          -1.25352379  0.53728725  1.57109789]
E         [-0.81325559 -0.03744118  0.21188722 -1.27103021  1.8465853
E           0.3065091   1.68759379 -0.69125656]]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_rhs.py:63: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_rhs_is_cn_explicit_half</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_windm_edsclrm_rhs</className><duration>0.002</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[0. 0. 0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0. 0. 0.]]

 [[0. 0. 0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0. 0. 0.]]

 [[0. 0. 0. 0. 0. 0. 0. 0.]
  [0. 0. 0. 0. 0. 0. 0. 0.]]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_no_diffusion_is_pure_time_plus_tendency():
        rng = np.random.default_rng(3)
        dt = 30.0
        _, xm, xm_tndcy = _inputs(rng)
        zero = np.zeros((3, _NG, _NZT))
&gt;       got = np.asarray(windm_edsclrm_rhs(jnp.asarray(zero), jnp.asarray(xm), jnp.asarray(xm_tndcy), dt))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[0. 0. 0. 0. 0. 0. 0. 0.]
E         [0. 0. 0. 0. 0. 0. 0. 0.]]
E       
E        [[0. 0. 0. 0. 0. 0. 0. 0.]
E         [0. 0. 0. 0. 0. 0. 0. 0.]]
E       
E        [[0. 0. 0. 0. 0. 0. 0. 0.]
E         [0. 0. 0. 0. 0. 0. 0. 0.]]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_rhs.py:75: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_no_diffusion_is_pure_time_plus_tendency</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_windm_edsclrm_rhs</className><duration>0.008</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[ 0.0241227   0.26036653  0.04766384  1.88874549  0.45961257
    0.27313399 -0.85285311  0.21804581]
  [-0.1299059   0.44023203  1.72176999 -1.01645847 -0.76224665
   -0.4356814  -0.91891307 -0.5999402 ]]

 [[ 1.74491876 -0.48846314  1.09859684 -1.83773104 -0.80537762
    0.81036459 -0.19098952  1.55943156]
  [-0.25959987  0.49423918  0.34151886  0.39652698  0.62274262
    0.04512793 -1.22528099 -1.72413047]]

 [[-0.99181723 -1.61922865 -1.54748253 -0.87765667  0.37006541
   -0.62710989  1.11139693  1.86154185]
  [-0.67263996 -1.05486348  0.75132523  0.2906633   1.07822862
    0.46766295 -0.88192609  1.64442527]]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_grad_finite():
        rng = np.random.default_rng(99)
        lhs_diff, xm, xm_tndcy = _inputs(rng)
&gt;       g = jax.grad(lambda x: jnp.sum(
            windm_edsclrm_rhs(jnp.asarray(lhs_diff), x, jnp.asarray(xm_tndcy), 60.0) ** 2))(jnp.asarray(xm))

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_rhs.py:84: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

x = GradTracer(primal=[[  1.75047507   5.23945262   4.13699238   6.47505955   6.05774148
   -2.15270662 -11.08977628  -0.3...8.53077714   6.76829763   3.72878118   4.93639771
   -6.76548646 -10.19207165  -5.57322864]], typeof(tangent)=f64[2,8])

    g = jax.grad(lambda x: jnp.sum(
&gt;       windm_edsclrm_rhs(jnp.asarray(lhs_diff), x, jnp.asarray(xm_tndcy), 60.0) ** 2))(jnp.asarray(xm))
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E   ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[[ 0.0241227   0.26036653  0.04766384  1.88874549  0.45961257
E       0.27313399 -0.85285311  0.21804581]
E     [-0.1299059   0.44023203  1.72176999 -1.01645847 -0.76224665
E      -0.4356814  -0.91891307 -0.5999402 ]]
E   
E    [[ 1.74491876 -0.48846314  1.09859684 -1.83773104 -0.80537762
E       0.81036459 -0.19098952  1.55943156]
E     [-0.25959987  0.49423918  0.34151886  0.39652698  0.62274262
E       0.04512793 -1.22528099 -1.72413047]]
E   
E    [[-0.99181723 -1.61922865 -1.54748253 -0.87765667  0.37006541
E      -0.62710989  1.11139693  1.86154185]
E     [-0.67263996 -1.05486348  0.75132523  0.2906633   1.07822862
E       0.46766295 -0.88192609  1.64442527]]]. The error was:
E   TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'
E   
E   --------------------
E   For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_rhs.py:85: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_lhs_terms</className><duration>0.111</duration><errorDetails>TypeError: wp2_term_dp1_lhs() missing 3 required positional arguments: 'gr', 'C1_Skw_fnc', and 'invrs_tau1m'</errorDetails><errorStackTrace>def test_scalar_lhs_terms():
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        rng = np.random.default_rng(41)
        C1 = rng.uniform(0.5, 2.0, (_NG, nzm)); itau1 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
        C4 = rng.uniform(3.0, 6.0, _NG); itau4 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
        C8 = rng.uniform(3.0, 6.0, _NG); C8b = rng.uniform(0.1, 0.5, _NG)
        itau3 = rng.uniform(1e-3, 1e-2, (_NG, nzt)); Skw = rng.uniform(-3.0, 3.0, (_NG, nzt))
    
&gt;       jd = np.asarray(wp2_term_dp1_lhs(jnp.asarray(C1), jnp.asarray(itau1)))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wp2_term_dp1_lhs() missing 3 required positional arguments: 'gr', 'C1_Skw_fnc', and 'invrs_tau1m'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_lhs_terms.py:47: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_scalar_lhs_terms</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_lhs_terms</className><duration>0.002</duration><errorDetails>TypeError: wp2_term_ta_lhs() missing 3 required positional arguments: 'gr', 'rho_ds_zt', and 'invrs_rho_ds_zm'</errorDetails><errorStackTrace>def test_wp2_term_ta_lhs():
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        invrs_dzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(42)
        invrs_rho_ds_zm = rng.uniform(0.8, 2.0, (_NG, nzm))
        rho_ds_zt = rng.uniform(0.5, 1.2, (_NG, nzt))
&gt;       j = np.asarray(wp2_term_ta_lhs(jnp.asarray(invrs_rho_ds_zm), jnp.asarray(rho_ds_zt), gr))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wp2_term_ta_lhs() missing 3 required positional arguments: 'gr', 'rho_ds_zt', and 'invrs_rho_ds_zm'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_lhs_terms.py:68: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wp2_term_ta_lhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_lhs_terms</className><duration>0.02</duration><errorDetails>TypeError: wp3_term_tp_lhs() missing 3 required positional arguments: 'wp2', 'rho_ds_zm', and 'invrs_rho_ds_zt'</errorDetails><errorStackTrace>def test_wp3_term_tp_lhs():
        """wp3_term_tp_lhs — 2-band turbulent-production LHS (F90:4885). Band 0 = coeff of wp2[k+1], band 1 = wp2[k]."""
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        invrs_dzt = np.asarray(gr.invrs_dzt)
        rng = np.random.default_rng(43)
        coef = rng.uniform(0.5, 2.0, _NG)
        wp2 = rng.uniform(1e-3, 2.0, (_NG, nzm)); rho_zm = rng.uniform(0.5, 1.2, (_NG, nzm))
        inv_rho_zt = rng.uniform(0.8, 2.0, (_NG, nzt))
&gt;       j = np.asarray(wp3_term_tp_lhs(jnp.asarray(coef), jnp.asarray(wp2), jnp.asarray(rho_zm),
                                       jnp.asarray(inv_rho_zt), gr))
E       TypeError: wp3_term_tp_lhs() missing 3 required positional arguments: 'wp2', 'rho_ds_zm', and 'invrs_rho_ds_zt'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_lhs_terms.py:88: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wp3_term_tp_lhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_lhs_terms</className><duration>0.002</duration><errorDetails>TypeError: wp3_terms_ac_pr2_lhs() missing 3 required positional arguments: 'gr', 'C11_Skw_fnc', and 'wm_zm'</errorDetails><errorStackTrace>def test_ac_pr2_lhs():
        """wp3_terms_ac_pr2_lhs (F90:5011) and wp2_terms_ac_pr2_lhs (F90:3511) — accumulation+pr2 LHS via d(wm)/dz."""
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        idzt = np.asarray(gr.invrs_dzt); idzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(44)
        C11 = rng.uniform(0.3, 0.8, (_NG, nzt)); wm_zm = rng.uniform(-0.1, 0.1, (_NG, nzm))
        C_uu_shr = rng.uniform(0.1, 0.5, _NG); wm_zt = rng.uniform(-0.1, 0.1, (_NG, nzt))
&gt;       j3 = np.asarray(wp3_terms_ac_pr2_lhs(jnp.asarray(C11), jnp.asarray(wm_zm), gr))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wp3_terms_ac_pr2_lhs() missing 3 required positional arguments: 'gr', 'C11_Skw_fnc', and 'wm_zm'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_lhs_terms.py:108: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_ac_pr2_lhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_terms</className><duration>0.1</duration><errorDetails>TypeError: wp2_terms_bp_pr2_rhs() missing 3 required positional arguments: 'C_uu_buoy', 'thv_ds_zm', and 'wpthvp'</errorDetails><errorStackTrace>def test_wp2_bp_pr2_dp1_pr1():
        gr, nzm = _grid()
        rng = np.random.default_rng(31)
        C_uu_buoy = rng.uniform(0.1, 0.6, _NG)
        thv = rng.uniform(290.0, 320.0, (_NG, nzm)); wpthvp = rng.uniform(-0.05, 0.2, (_NG, nzm))
        C1 = rng.uniform(0.5, 2.0, (_NG, nzm)); itau1 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
        up2 = rng.uniform(1e-3, 2.0, (_NG, nzm)); vp2 = rng.uniform(1e-3, 2.0, (_NG, nzm))
        C4 = rng.uniform(3.0, 6.0, _NG); itau4 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
    
&gt;       jb = np.asarray(wp2_terms_bp_pr2_rhs(jnp.asarray(C_uu_buoy), jnp.asarray(thv), jnp.asarray(wpthvp)))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wp2_terms_bp_pr2_rhs() missing 3 required positional arguments: 'C_uu_buoy', 'thv_ds_zm', and 'wpthvp'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_terms.py:57: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wp2_bp_pr2_dp1_pr1</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_terms</className><duration>0.002</duration><errorDetails>TypeError: wp2_term_pr3_rhs() missing 3 required positional arguments: 'um', 'vpwp', and 'vm'</errorDetails><errorStackTrace>def test_wp2_pr3():
        gr, nzm = _grid()
        nzt = nzm - 1
        invrs_dzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(32)
        C_uu_shr = rng.uniform(0.1, 0.5, _NG); C_uu_buoy = rng.uniform(0.1, 0.5, _NG)
        thv = rng.uniform(290.0, 320.0, (_NG, nzm)); wpthvp = rng.uniform(-0.05, 0.2, (_NG, nzm))
        upwp = rng.uniform(-0.5, 0.5, (_NG, nzm)); vpwp = rng.uniform(-0.5, 0.5, (_NG, nzm))
        um = rng.uniform(-15.0, 15.0, (_NG, nzt)); vm = rng.uniform(-15.0, 15.0, (_NG, nzt))
&gt;       j = np.asarray(wp2_term_pr3_rhs(jnp.asarray(C_uu_shr), jnp.asarray(C_uu_buoy), jnp.asarray(thv),
                                        jnp.asarray(wpthvp), jnp.asarray(upwp), jnp.asarray(um),
                                        jnp.asarray(vpwp), jnp.asarray(vm), gr))
E       TypeError: wp2_term_pr3_rhs() missing 3 required positional arguments: 'um', 'vpwp', and 'vm'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_terms.py:79: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wp2_pr3</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_terms</className><duration>0.002</duration><errorDetails>TypeError: wp3_terms_bp1_pr2_rhs() missing 3 required positional arguments: 'C11_Skw_fnc', 'thv_ds_zt', and 'wp2thvp'</errorDetails><errorStackTrace>def test_wp3_bp1_pr2_pr1():
        gr, nzm = _grid()
        nzt = nzm - 1
        rng = np.random.default_rng(33)
        C11 = rng.uniform(0.3, 0.8, (_NG, nzt)); thv_zt = rng.uniform(290.0, 320.0, (_NG, nzt))
        wp2thvp = rng.uniform(-0.1, 0.3, (_NG, nzt))
        C8 = rng.uniform(3.0, 6.0, _NG); C8b = rng.uniform(0.1, 0.5, _NG)
        itau3 = rng.uniform(1e-3, 1e-2, (_NG, nzt)); Skw = rng.uniform(-3.0, 3.0, (_NG, nzt))
        wp3 = rng.standard_normal((_NG, nzt))
&gt;       jb = np.asarray(wp3_terms_bp1_pr2_rhs(jnp.asarray(C11), jnp.asarray(thv_zt), jnp.asarray(wp2thvp)))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wp3_terms_bp1_pr2_rhs() missing 3 required positional arguments: 'C11_Skw_fnc', 'thv_ds_zt', and 'wp2thvp'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_terms.py:104: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wp3_bp1_pr2_pr1</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_wp2_wp3_terms</className><duration>0.003</duration><errorDetails>TypeError: wp2_term_pr_dfsn_rhs() missing 3 required positional arguments: 'wpup2', 'wpvp2', and 'wp3'</errorDetails><errorStackTrace>def test_pr_dfsn_turb():
        """The pressure-diffusion / pressure-turbulence RHS builders (deferred from iter 494, F90-verified iter 503):
          wp2_term_pr_dfsn_rhs (F90:4229)  C·invrs_rho_ds_zm·invrs_dzm·Δ(rho_ds_zt·(wpup2+wpvp2+wp3)); lower BC = first interior
          wp3_term_pr_turb_rhs (F90:5452)  −C·invrs_rho_ds_zt·invrs_dzt·Δ(rho_ds_zm·wp2·em)   [TKE branch]
          wp3_term_pr_dfsn_rhs (F90:5564)  C·invrs_rho_ds_zt·invrs_dzt·Δ(rho_ds_zm·net), net=(wp2up2+wp2vp2+wp4)−wp2·(up2+vp2+wp2)
        """
        gr = _grid()[0]; nzm = gr.zm.shape[1]; nzt = nzm - 1
        idzm = np.asarray(gr.invrs_dzm); idzt = np.asarray(gr.invrs_dzt)
        rng = np.random.default_rng(34)
        # wp2_term_pr_dfsn_rhs
        Cw2 = rng.uniform(0.1, 0.5, _NG); rho_zt = rng.uniform(0.5, 1.2, (_NG, nzt)); irho_zm = rng.uniform(0.8, 2.0, (_NG, nzm))
        wpup2 = rng.standard_normal((_NG, nzt)); wpvp2 = rng.standard_normal((_NG, nzt)); wp3 = rng.standard_normal((_NG, nzt))
&gt;       j2 = np.asarray(wp2_term_pr_dfsn_rhs(jnp.asarray(Cw2), jnp.asarray(rho_zt), jnp.asarray(irho_zm),
                                             jnp.asarray(wpup2), jnp.asarray(wpvp2), jnp.asarray(wp3), gr))
E       TypeError: wp2_term_pr_dfsn_rhs() missing 3 required positional arguments: 'wpup2', 'wpvp2', and 'wp3'

clubb_jax/pytests/auto_llm_generated_pytests/test_wp2_wp3_terms.py:128: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_pr_dfsn_turb</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xm_correction_wpxp_cl</className><duration>0.06</duration><errorDetails>TypeError: xm_correction_wpxp_cl() missing 5 required positional arguments: 'dt', 'wpxp_chnge', 'invrs_dzt', 'stats', and 'xm'</errorDetails><errorStackTrace>def test_xm_correction_wpxp_cl_matches_reference():
        rng = np.random.default_rng(0)
        ng, nzt = 3, 12
        nzm = nzt + 1
        xm = rng.normal(size=(ng, nzt))
        invrs_dzt = rng.uniform(0.5, 2.0, size=(ng, nzt))
        dt = 60.0
    
        wpxp_chnge = rng.normal(size=(ng, nzm)) * 1e-3      # col 0: clipping fired
        wpxp_chnge[1] = 0.0                                  # col 1: no clipping → no-op
        wpxp_chnge[2] = 0.5 * eps                            # col 2: sub-eps → gated off (no-op)
    
&gt;       got = np.asarray(xm_correction_wpxp_cl(
            jnp.asarray(xm), jnp.asarray(wpxp_chnge), jnp.asarray(invrs_dzt), dt))
E       TypeError: xm_correction_wpxp_cl() missing 5 required positional arguments: 'dt', 'wpxp_chnge', 'invrs_dzt', 'stats', and 'xm'

clubb_jax/pytests/auto_llm_generated_pytests/test_xm_correction_wpxp_cl.py:54: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_xm_correction_wpxp_cl_matches_reference</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xm_correction_wpxp_cl</className><duration>0.079</duration><errorDetails>TypeError: xm_correction_wpxp_cl() missing 5 required positional arguments: 'dt', 'wpxp_chnge', 'invrs_dzt', 'stats', and 'xm'</errorDetails><errorStackTrace>def test_xm_correction_wpxp_cl_all_zero_is_noop():
        rng = np.random.default_rng(1)
        ng, nzt = 2, 8
        xm = rng.normal(size=(ng, nzt))
        invrs_dzt = rng.uniform(0.5, 2.0, size=(ng, nzt))
&gt;       got = np.asarray(xm_correction_wpxp_cl(
            jnp.asarray(xm), jnp.zeros((ng, nzt + 1)), jnp.asarray(invrs_dzt), 60.0))
E       TypeError: xm_correction_wpxp_cl() missing 5 required positional arguments: 'dt', 'wpxp_chnge', 'invrs_dzt', 'stats', and 'xm'

clubb_jax/pytests/auto_llm_generated_pytests/test_xm_correction_wpxp_cl.py:71: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_xm_correction_wpxp_cl_all_zero_is_noop</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xm_wpxp_terms</className><duration>0.1</duration><errorDetails>TypeError: xm_term_ta_lhs() missing 3 required positional arguments: 'gr', 'rho_ds_zm', and 'invrs_rho_ds_zt'</errorDetails><errorStackTrace>def test_xm_term_ta_lhs():
        gr, nzm, nzt = _grid()
        idzt = np.asarray(gr.invrs_dzt)
        rng = np.random.default_rng(51)
        inv_rho_zt = rng.uniform(0.8, 2.0, (_NG, nzt)); rho_zm = rng.uniform(0.5, 1.2, (_NG, nzm))
&gt;       j = np.asarray(xm_term_ta_lhs(jnp.asarray(inv_rho_zt), jnp.asarray(rho_zm), gr))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: xm_term_ta_lhs() missing 3 required positional arguments: 'gr', 'rho_ds_zm', and 'invrs_rho_ds_zt'

clubb_jax/pytests/auto_llm_generated_pytests/test_xm_wpxp_terms.py:50: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_xm_term_ta_lhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xm_wpxp_terms</className><duration>0.002</duration><errorDetails>TypeError: wpxp_term_tp_lhs() missing 2 required positional arguments: 'gr' and 'wp2'</errorDetails><errorStackTrace>def test_wpxp_term_tp_lhs():
        gr, nzm, nzt = _grid()
        idzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(52)
        wp2 = rng.uniform(1e-3, 2.0, (_NG, nzm))
&gt;       j = np.asarray(wpxp_term_tp_lhs(jnp.asarray(wp2), gr))
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wpxp_term_tp_lhs() missing 2 required positional arguments: 'gr' and 'wp2'

clubb_jax/pytests/auto_llm_generated_pytests/test_xm_wpxp_terms.py:64: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wpxp_term_tp_lhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xm_wpxp_terms</className><duration>0.002</duration><errorDetails>TypeError: wpxp_terms_ac_pr2_lhs() missing 4 required positional arguments: 'gr', 'C7_Skw_fnc', 'wm_zt', and 'invrs_dzm'</errorDetails><errorStackTrace>def test_wpxp_ac_pr1_bp():
        gr, nzm, nzt = _grid()
        idzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(53)
        C7 = rng.uniform(0.3, 0.8, (_NG, nzm)); wm_zt = rng.uniform(-0.1, 0.1, (_NG, nzt))
        C6 = rng.uniform(2.0, 5.0, (_NG, nzm)); itau6 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
        thv = rng.uniform(290.0, 320.0, (_NG, nzm)); xpthvp = rng.uniform(-0.1, 0.3, (_NG, nzm))
    
&gt;       jac = np.asarray(wpxp_terms_ac_pr2_lhs(jnp.asarray(C7), jnp.asarray(wm_zt), gr))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: wpxp_terms_ac_pr2_lhs() missing 4 required positional arguments: 'gr', 'C7_Skw_fnc', 'wm_zt', and 'invrs_dzm'

clubb_jax/pytests/auto_llm_generated_pytests/test_xm_wpxp_terms.py:81: TypeError</errorStackTrace><failedSince>4</failedSince><name>test_wpxp_ac_pr1_bp</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xp2_xpyp_terms</className><duration>0.087</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[ 0.35877341  1.51067731 -1.78633124  1.68661351 -0.04731721 -0.79997858
  -0.80295672 -1.08281652 -0.22364536  0.83388418  0.58406373  0.63828602
  -1.69480839 -1.57096212  1.55380317  0.96888537  2.183214    1.20981583
  -1.02439134  1.28527245  0.62839426  0.21482493 -0.81987332  0.00278022
  -0.1469987   0.89253511  0.12449694  1.58474591 -0.77448575  0.47110256]
 [ 0.49884238 -0.86433854 -1.18126605  1.0135795   0.51744047 -0.16250519
   0.3943674  -0.67534403  0.2383482  -0.60512669  0.18878847  0.98608946
  -0.33963025  0.84977381 -1.03419934 -0.28849077 -1.3647426  -0.10058609
   0.07865408 -0.19726266 -0.26767572  1.34019469  1.42379284 -1.215631
   1.17411449 -1.72306961 -0.73447925 -0.1734456   0.1110606  -1.04741668]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_term_tp_rhs():
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        invrs_dzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(21)
        xam = rng.standard_normal((_NG, nzt)); xbm = rng.standard_normal((_NG, nzt))
        wpxap = rng.standard_normal((_NG, nzm)); wpxbp = rng.standard_normal((_NG, nzm))
&gt;       j = np.asarray(term_tp_rhs(jnp.asarray(xam), jnp.asarray(xbm),
                                   jnp.asarray(wpxap), jnp.asarray(wpxbp), jnp.asarray(invrs_dzm)))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[ 0.35877341  1.51067731 -1.78633124  1.68661351 -0.04731721 -0.79997858
E         -0.80295672 -1.08281652 -0.22364536  0.83388418  0.58406373  0.63828602
E         -1.69480839 -1.57096212  1.55380317  0.96888537  2.183214    1.20981583
E         -1.02439134  1.28527245  0.62839426  0.21482493 -0.81987332  0.00278022
E         -0.1469987   0.89253511  0.12449694  1.58474591 -0.77448575  0.47110256]
E        [ 0.49884238 -0.86433854 -1.18126605  1.0135795   0.51744047 -0.16250519
E          0.3943674  -0.67534403  0.2383482  -0.60512669  0.18878847  0.98608946
E         -0.33963025  0.84977381 -1.03419934 -0.28849077 -1.3647426  -0.10058609
E          0.07865408 -0.19726266 -0.26767572  1.34019469  1.42379284 -1.215631
E          1.17411449 -1.72306961 -0.73447925 -0.1734456   0.1110606  -1.04741668]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_xpyp_terms.py:44: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_term_tp_rhs</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xp2_xpyp_terms</className><duration>0.029</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[4.09904075]
 [3.59788614]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_term_pr1():
        nzm = 11
        rng = np.random.default_rng(22)
        C4 = rng.uniform(3.0, 6.0, (_NG, 1)); C14 = rng.uniform(0.5, 2.0, (_NG, 1))
        xbp2 = rng.uniform(1e-3, 2.0, (_NG, nzm)); wp2 = rng.uniform(1e-3, 2.0, (_NG, nzm))
        itau4 = rng.uniform(1e-3, 1e-2, (_NG, nzm)); itau14 = rng.uniform(1e-3, 1e-2, (_NG, nzm))
&gt;       j = np.asarray(term_pr1(jnp.asarray(C4), jnp.asarray(C14), jnp.asarray(xbp2), jnp.asarray(wp2),
                                jnp.asarray(itau4), jnp.asarray(itau14), w_tol_sqd))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[4.09904075]
E        [3.59788614]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_xpyp_terms.py:60: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_term_pr1</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xp2_xpyp_terms</className><duration>0.003</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[0.37757323]
 [0.35658329]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_term_pr2():
        gr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        nzm = gr.zm.shape[1]; nzt = nzm - 1
        invrs_dzm = np.asarray(gr.invrs_dzm)
        rng = np.random.default_rng(23)
        C_uu_shr = rng.uniform(0.1, 0.5, (_NG, 1)); C_uu_buoy = rng.uniform(0.1, 0.5, (_NG, 1))
        thv = rng.uniform(290.0, 320.0, (_NG, nzm)); wpthvp = rng.uniform(-0.05, 0.2, (_NG, nzm))
        upwp = rng.uniform(-0.5, 0.5, (_NG, nzm)); vpwp = rng.uniform(-0.5, 0.5, (_NG, nzm))
        um = rng.uniform(-15.0, 15.0, (_NG, nzt)); vm = rng.uniform(-15.0, 15.0, (_NG, nzt))
&gt;       j = np.asarray(term_pr2(jnp.asarray(C_uu_shr), jnp.asarray(C_uu_buoy), jnp.asarray(thv),
                                jnp.asarray(wpthvp), jnp.asarray(upwp), jnp.asarray(vpwp),
                                jnp.asarray(um), jnp.asarray(vm), gr))
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[0.37757323]
E        [0.35658329]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_xpyp_terms.py:80: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_term_pr2</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xp2_xpyp_terms</className><duration>0.001</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[0.72751079 0.8698369  1.19200186 1.06215956 1.17200376 1.18240589
  1.76082141 0.26421788 1.51070301 1.6586978  1.45310413]
 [0.87885865 1.89161217 0.15880336 1.62558594 1.24389239 0.17813984
  0.73155888 0.81871803 0.43448612 1.32094161 0.9345577 ]]. The error was:
TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'</errorDetails><errorStackTrace>def test_term_dp1():
        """term_dp1_lhs (F90:5729) main-diagonal +(Cn/tau) [interior, BC 0]; term_dp1_rhs (F90:5809) explicit
        +(Cn/tau)·threshold [ALL levels incl. boundaries]. The DP1 dissipation terms missed by iter 492."""
        nzm = 11
        rng = np.random.default_rng(24)
        Cn = rng.uniform(0.1, 2.0, (_NG, nzm)); itau = rng.uniform(1e-3, 1e-2, (_NG, nzm)); thr = 1e-8
&gt;       jl = np.asarray(term_dp1_lhs(jnp.asarray(Cn), jnp.asarray(itau)))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'jaxlib._jax.ArrayImpl'&gt;, [[0.72751079 0.8698369  1.19200186 1.06215956 1.17200376 1.18240589
E         1.76082141 0.26421788 1.51070301 1.6586978  1.45310413]
E        [0.87885865 1.89161217 0.15880336 1.62558594 1.24389239 0.17813984
E         0.73155888 0.81871803 0.43448612 1.32094161 0.9345577 ]]. The error was:
E       TypeError: unhashable type: 'jaxlib._jax.ArrayImpl'

clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_xpyp_terms.py:104: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_term_dp1</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xpyp_term_ta_godunov</className><duration>0.192</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 0.50038187  1.5888552   1.10274276 -1.09917124 -0.79933486  1.49421378
  -1.97893878  1.28491367  1.18827772 -0.12826019 -0.78787029 -0.88629755
  -0.98052165 -0.21969478  0.01819304  0.21398941  1.98200113  1.17064768
   0.48871692  1.95584059 -1.13876521 -1.35915186  0.45015842 -1.82423197
  -1.85727888  0.05955528 -0.1351759   1.66867109  0.51690502  0.05647059]
 [-0.01250626 -1.00994031 -1.9528239  -1.23039142  0.76812848 -1.1975731
  -0.52185476 -1.98506303  1.32019092 -1.38215568 -0.92960278  1.52132862
   0.03916324  1.38860099  0.55886867  0.96708379 -1.63401758  0.16457529
   0.03108895  1.48535751 -0.55494376  0.39273627 -1.76299343 -0.4494728
  -0.70785461 -1.39920108  1.26535242 -0.48221531  1.91499154  0.35996677]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_f2py_oracle():
        try:
            import clubb_f2py
            from clubb_python import clubb_api
            from clubb_python.derived_types.err_info import ErrInfo
        except ModuleNotFoundError as e:
            if (e.name or "").split(".")[0] not in {"clubb_f2py", "clubb_python", "netCDF4"}:
                raise
            pytest.skip(f"  f2py xpyp_term_ta_*_godunov oracle: SKIP ({type(e).__name__})")
        jgr = setup_grid(ngrdcol=_NG, deltaz=_DZ, zm_init=0.0, zm_top=_ZTOP, grid_type=1)
        ng, nzm = jgr.zm.shape
        nzt = nzm - 1
        clubb_api.init_err_info(ng)
        cf = clubb_api.get_default_config_flags(); clubb_api.init_config_flags(cf)
        clubb_api.setup_grid(nzmax=nzm, ngrdcol=ng, sfc_elevation=np.zeros(ng),
                             l_implemented=False, l_ascending_grid=True, grid_type=2,
                             deltaz=np.full(ng, _DZ), zm_init=np.zeros(ng), zm_top=np.full(ng, float(jgr.zm[0, -1])),
                             momentum_heights=np.asfortranarray(np.asarray(jgr.zm)),
                             thermodynamic_heights=np.asfortranarray(np.asarray(jgr.zt)),
                             err_info=ErrInfo(ngrdcol=ng))
        # Pull the EXACT stored grid so the JAX side uses identical invrs_dzm / grid_dir.
        g = clubb_f2py.get_grid(ng, nzm, nzt)
        invrs_dzm = np.asarray(g[4]); grid_dir = float(g[13])
        shim = _GridShim(invrs_dzm=jnp.asarray(invrs_dzm))
    
        rng = np.random.default_rng(7)
        worst = 0.0
        for _ in range(3):
            coef = rng.uniform(-2, 2, (ng, nzt))                 # zt-level implicit coef (sign drives upwind split)
            irho = rng.uniform(0.5, 1.5, (ng, nzm))
            rho_zm = rng.uniform(0.5, 1.2, (ng, nzm))
            term_zm = rng.uniform(-1, 1, (ng, nzm))
            sgn = np.sign(rng.uniform(-1, 1, (ng, nzt)))         # ±1 turbulent-velocity sign
    
            f_lhs = np.asarray(clubb_f2py.f2py_xpyp_term_ta_pdf_lhs_godunov(coef, irho, rho_zm))
&gt;           j_lhs = np.asarray(xpyp_term_ta_pdf_lhs_godunov(coef, irho, rho_zm, shim, grid_dir))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E           ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[ 0.50038187  1.5888552   1.10274276 -1.09917124 -0.79933486  1.49421378
E             -1.97893878  1.28491367  1.18827772 -0.12826019 -0.78787029 -0.88629755
E             -0.98052165 -0.21969478  0.01819304  0.21398941  1.98200113  1.17064768
E              0.48871692  1.95584059 -1.13876521 -1.35915186  0.45015842 -1.82423197
E             -1.85727888  0.05955528 -0.1351759   1.66867109  0.51690502  0.05647059]
E            [-0.01250626 -1.00994031 -1.9528239  -1.23039142  0.76812848 -1.1975731
E             -0.52185476 -1.98506303  1.32019092 -1.38215568 -0.92960278  1.52132862
E              0.03916324  1.38860099  0.55886867  0.96708379 -1.63401758  0.16457529
E              0.03108895  1.48535751 -0.55494376  0.39273627 -1.76299343 -0.4494728
E             -0.70785461 -1.39920108  1.26535242 -0.48221531  1.91499154  0.35996677]]. The error was:
E           TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_xpyp_term_ta_godunov.py:73: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xpyp_term_ta_godunov</className><duration>0.052</duration><errorDetails>ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[-0.95355146 -0.80603543  1.25690296 -1.63233623  0.4004021   0.91424211
  -1.24839571 -1.77941349 -0.90012253]
 [ 0.62973206  0.24906265 -1.39975095 -0.26947684  0.67718919 -0.30886131
   0.5327376   1.86974381  0.73225929]]. The error was:
TypeError: unhashable type: 'numpy.ndarray'</errorDetails><errorStackTrace>def test_boundaries_and_grad():
        ng, nzm, nzt = 2, 10, 9
        jgr = setup_grid(ngrdcol=ng, deltaz=_DZ, zm_init=0.0, zm_top=(nzm - 1) * _DZ, grid_type=1)
        rng = np.random.default_rng(2)
        coef = rng.uniform(-2, 2, (ng, nzt)); irho = rng.uniform(0.5, 1.5, (ng, nzm))
        rho_zm = rng.uniform(0.5, 1.2, (ng, nzm)); term_zm = rng.uniform(-1, 1, (ng, nzm))
        sgn = np.sign(rng.uniform(-1, 1, (ng, nzt)))
&gt;       lhs = np.asarray(xpyp_term_ta_pdf_lhs_godunov(coef, irho, rho_zm, jgr, jgr.grid_dir))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       ValueError: Non-hashable static arguments are not supported. An error occurred while trying to hash an object of type &lt;class 'numpy.ndarray'&gt;, [[-0.95355146 -0.80603543  1.25690296 -1.63233623  0.4004021   0.91424211
E         -1.24839571 -1.77941349 -0.90012253]
E        [ 0.62973206  0.24906265 -1.39975095 -0.26947684  0.67718919 -0.30886131
E          0.5327376   1.86974381  0.73225929]]. The error was:
E       TypeError: unhashable type: 'numpy.ndarray'

clubb_jax/pytests/auto_llm_generated_pytests/test_xpyp_term_ta_godunov.py:88: ValueError</errorStackTrace><failedSince>4</failedSince><name>test_boundaries_and_grad</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xpyp_term_ta_pdf</className><duration>0.544</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_xpyp_term_ta_pdf</className><duration>0.668</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><duration>1567.8429</duration><enclosingBlockName>Declarative: Post Actions</enclosingBlockName><enclosingBlock>56</enclosingBlock><name>pytest</name><nodeId>57</nodeId><properties></properties><timestamp>2026-10-05T04:22:54.196230-05:00</timestamp></suite><suite><case><age>1</age><className>auto_llm_generated_pytests/test_close_luhar_pdf.py</className><duration>0.0</duration><errorDetails>Module process exited 139 before writing its pytest report; see the console.</errorDetails><errorStackTrace>Module process exited 139 before writing its pytest report; see the console.</errorStackTrace><failedSince>4</failedSince><name>pytest_module_process</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><duration>0.0</duration><enclosingBlockName>Declarative: Post Actions</enclosingBlockName><enclosingBlock>56</enclosingBlock><name>auto_llm_generated_pytests_test_close_luhar_pdf.py</name><nodeId>57</nodeId><properties></properties></suite><suite><case><age>1</age><className>auto_llm_generated_pytests/test_new_hybrid_pdf_main.py</className><duration>0.0</duration><errorDetails>Module process exited 2 before writing its pytest report; see the console.</errorDetails><errorStackTrace>Module process exited 2 before writing its pytest report; see the console.</errorStackTrace><failedSince>4</failedSince><name>pytest_module_process</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><duration>0.0</duration><enclosingBlockName>Declarative: Post Actions</enclosingBlockName><enclosingBlock>56</enclosingBlock><name>auto_llm_generated_pytests_test_new_hybrid_pdf_main.py</name><nodeId>57</nodeId><properties></properties></suite><suite><case><age>1</age><className>auto_llm_generated_pytests/test_new_pdf_main.py</className><duration>0.0</duration><errorDetails>Module process exited 2 before writing its pytest report; see the console.</errorDetails><errorStackTrace>Module process exited 2 before writing its pytest report; see the console.</errorStackTrace><failedSince>4</failedSince><name>pytest_module_process</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><duration>0.0</duration><enclosingBlockName>Declarative: Post Actions</enclosingBlockName><enclosingBlock>56</enclosingBlock><name>auto_llm_generated_pytests_test_new_pdf_main.py</name><nodeId>57</nodeId><properties></properties></suite></testResult>