diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index d3d7488836..fb054071df 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -28,8 +28,6 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - # ase needed to get FrechetCellFilter used by ML force fields - pip install git+https://gitlab.com/ase/ase pip install .[strict,docs] - name: Build diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6847853711..5df224ff9c 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -33,8 +33,6 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - # ase needed to get FrechetCellFilter used by ML force fields - pip install git+https://gitlab.com/ase/ase pip install .[strict,docs] - name: Build diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index eda0638cbe..cafdc811bb 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -23,7 +23,10 @@ jobs: - uses: pre-commit/action@v3.0.0 - test: + test-non-ase: + # prevent this action from running on forks + if: github.repository == 'materialsproject/atomate2' + services: local_mongodb: image: mongo:4.0 @@ -37,6 +40,7 @@ jobs: strategy: matrix: python-version: ["3.10", "3.11", "3.12"] + split: [1, 2, 3] steps: - name: Check out repo @@ -72,20 +76,30 @@ jobs: micromamba activate a2 uv pip install --upgrade 'git+https://github.com/materialsproject/pymatgen@${{ github.event.client_payload.pymatgen_ref }}' - - name: Test + - name: Test split ${{ matrix.split }} env: MP_API_KEY: ${{ secrets.MP_API_KEY }} + + # regenerate durations file with `pytest --store-durations --durations-path tests/.pytest-split-durations` + # Note the use of `--splitting-algorithm least_duration`. + # This helps prevent a test split having no tests to run, and then the GH action failing, see: + # https://github.com/jerry-git/pytest-split/issues/95 + # However this `splitting-algorithm` means that tests cannot depend sensitively on the order they're executed in. run: | micromamba activate a2 - pytest --ignore=tests/ase --cov=atomate2 --cov-report=xml + pytest --splits 3 --group ${{ matrix.split }} --durations-path tests/.pytest-split-durations --splitting-algorithm least_duration --ignore=tests/ase --cov=atomate2 --cov-report=xml - uses: codecov/codecov-action@v1 if: matrix.python-version == '3.10' && github.repository == 'materialsproject/atomate2' with: token: ${{ secrets.CODECOV_TOKEN }} + name: coverage${{ matrix.split }} file: ./coverage.xml test-notebooks-and-ase: + # prevent this action from running on forks + if: github.repository == 'materialsproject/atomate2' + # It seems like anything torch-dependent and tblite can't be installed in the same environment # without the tblite tests failing in CI, see, e.g.: # https://github.com/tblite/tblite/issues/116 @@ -143,7 +157,7 @@ jobs: MP_API_KEY: ${{ secrets.MP_API_KEY }} run: | micromamba activate a2 - pytest --cov=atomate2 --cov-report=xml tests/ase + pytest --splits 1 --group 1 --cov=atomate2 --cov-report=xml tests/ase - uses: codecov/codecov-action@v1 if: matrix.python-version == '3.10' && github.repository == 'materialsproject/atomate2' @@ -172,7 +186,7 @@ jobs: run: sphinx-build docs docs_build automerge: - needs: [lint, test, docs] + needs: [lint, test-non-ase, test-notebooks-and-ase, docs] runs-on: ubuntu-latest permissions: diff --git a/pyproject.toml b/pyproject.toml index fb4a48ff5d..e1995eb848 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,6 +86,7 @@ tests = [ "nbmake==1.5.4", "pytest-cov==5.0.0", "pytest-mock==3.14.0", + "pytest-split==0.9.0", "pytest==8.3.3", ] strict = [ diff --git a/tests/.pytest-split-durations b/tests/.pytest-split-durations new file mode 100644 index 0000000000..8792583c4e --- /dev/null +++ b/tests/.pytest-split-durations @@ -0,0 +1 @@ +{"tests/abinit/flows/test_core.py::test_band_structure_run_silicon": 0.9457165550000278, "tests/abinit/flows/test_core.py::test_relax_ion_ioncell_relaxation": 0.0015079926666317078, "tests/abinit/flows/test_core.py::test_relax_run_silicon_standard": 0.3300281096666519, "tests/abinit/jobs/test_core.py::test_relax_run_silicon_scaled1p2_restart": 0.3151558600000423, "tests/abinit/jobs/test_core.py::test_relax_run_silicon_scaled1p2_standard": 0.15928153833325118, "tests/abinit/jobs/test_core.py::test_static_run_silicon_restarts": 0.287412637666705, "tests/abinit/jobs/test_core.py::test_static_run_silicon_standard": 0.11838150766667847, "tests/abinit/sets/test_base.py::test_abinit_input_set_init": 0.004364337000045755, "tests/abinit/sets/test_base.py::test_abinit_input_set_runlevel": 0.0027074060000131794, "tests/abinit/sets/test_base.py::test_abinit_input_set_set_remove_vars": 0.0027716893334286397, "tests/abinit/sets/test_base.py::test_abinit_input_set_set_structure": 0.0029611990000072788, "tests/abinit/sets/test_base.py::test_abinit_input_set_set_workdir": 0.0018788486666683941, "tests/abinit/sets/test_base.py::test_abinit_input_set_write_input": 0.02029631233326275, "tests/abinit/sets/test_base.py::test_generator_check_format_prev_dirs": 0.0010852953333445232, "tests/abinit/sets/test_base.py::test_generator_get_input_set": 0.01932130833336032, "tests/abinit/sets/test_base.py::test_generator_resolve_dep": 0.004193110666733446, "tests/abinit/sets/test_base.py::test_generator_resolve_deps": 0.0018290633332564237, "tests/abinit/sets/test_base.py::test_generator_set_kpt_vars": 0.044384344333366244, "tests/abinit/sets/test_core.py::test_init_static_generator": 0.0011895730000712017, "tests/abinit/sets/test_core.py::test_static_generator_get_abinit_input": 0.003978178333359968, "tests/abinit/sets/test_core.py::test_static_generator_get_input_set": 0.003683687999985826, "tests/abinit/test_powerups.py::test_update_generator_attributes": 0.007618869333327893, "tests/abinit/test_powerups.py::test_update_user_settings[update_factory_kwargs-factory_kwargs-settings2]": 0.007682868666658275, "tests/abinit/test_powerups.py::test_update_user_settings[update_user_abinit_settings-user_abinit_settings-settings0]": 0.009267700666687992, "tests/abinit/test_powerups.py::test_update_user_settings[update_user_kpoints_settings-user_kpoints_settings-settings1]": 0.007896890333389214, "tests/aims/test_files/test_files.py::test_copy_aims_outputs": 0.005972767666719392, "tests/aims/test_flows/test_anharmonic_quantification.py::test_anharmonic_quantification_full": 5.386496559000004, "tests/aims/test_flows/test_anharmonic_quantification.py::test_anharmonic_quantification_oneshot": 5.4954474673332925, "tests/aims/test_flows/test_anharmonic_quantification.py::test_anharmonic_quantification_socket_oneshot": 0.000259252666694465, "tests/aims/test_flows/test_anharmonic_quantification.py::test_element_resolved_anharmonic_quantification": 5.762715861333372, "tests/aims/test_flows/test_anharmonic_quantification.py::test_mode_resolved_anharmonic_quantification": 10.918934432333439, "tests/aims/test_flows/test_anharmonic_quantification.py::test_site_resolved_anharmonic_quantification": 5.97009870333333, "tests/aims/test_flows/test_core.py::test_double_relax": 0.40331029533331275, "tests/aims/test_flows/test_elastic.py::test_elastic[False]": 3.7396495329999957, "tests/aims/test_flows/test_elastic.py::test_elastic[True]": 3.833205706333198, "tests/aims/test_flows/test_eos.py::test_eos": 0.372957225666634, "tests/aims/test_flows/test_eos.py::test_eos_from_parameters": 1.0660212186667006, "tests/aims/test_flows/test_gw_convergence.py::test_gw_convergence": 0.11161619866663841, "tests/aims/test_flows/test_phonon_workflow.py::test_phonon_default_flow": 4.579071147333347, "tests/aims/test_flows/test_phonon_workflow.py::test_phonon_default_socket_flow": 0.0002519016667103339, "tests/aims/test_flows/test_phonon_workflow.py::test_phonon_flow": 4.730036931666632, "tests/aims/test_flows/test_phonon_workflow.py::test_phonon_socket_flow": 0.00024633200003639405, "tests/aims/test_makers/test_convergence.py::test_convergence": 0.2630250646667302, "tests/aims/test_makers/test_gw.py::test_gw_maker_molecule": 0.05223330299997997, "tests/aims/test_makers/test_relax.py::test_base_maker": 0.15666955066673913, "tests/aims/test_makers/test_relax.py::test_relax_fixed_cell_maker": 0.13383978666661278, "tests/aims/test_makers/test_socket_calc.py::test_static_socket_maker": 0.00029755766665099753, "tests/aims/test_makers/test_static.py::test_static_maker": 0.05930833966673769, "tests/common/jobs/test_elastic.py::test_fit_elastic_tensor": 1.3230001006666043, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[C mono-False]": 0.3610349286666595, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[C mono-True]": 0.3768484629998928, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[C orth-False]": 0.6128993776666599, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[C orth-True]": 0.6896528426666274, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[F cubic-False]": 1.096176994333348, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[F cubic-True]": 2.0300333999999225, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[F orth-False]": 0.6069984936666325, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[F orth-True]": 0.6143312896667416, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I cubic-False]": 1.8769085026666517, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I cubic-True]": 1.0589876216666692, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I orth-False]": 0.6157300009999366, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I orth-True]": 1.1768141629999793, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I tet-False]": 0.3986276483333313, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[I tet-True]": 0.7260158656666628, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P mono-False]": 0.3615401326666188, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P mono-True]": 0.2192442970000267, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P orth-False]": 0.6339583373333729, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P orth-True]": 0.3670490160000857, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P tet-False]": 0.4005929433333411, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[P tet-True]": 0.40299097366655207, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[hex-False]": 0.8694876306667538, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[hex-True]": 0.4651245233333346, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[rhom-False]": 0.48982660899993863, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[rhom-True]": 0.7349407746666164, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[tri-False]": 0.2295334703333083, "tests/common/jobs/test_elastic.py::test_reduce_expand_strains[tri-True]": 0.15479221399999687, "tests/common/jobs/test_eos.py::test_apply_strain_to_structure": 0.022188090666702465, "tests/common/jobs/test_eos.py::test_postprocess_eos": 0.010366716666718881, "tests/common/jobs/test_eos.py::test_postprocess_eos_pressure": 0.00573049866668877, "tests/common/jobs/test_gruneisen.py::test_compute_gruneisen_param": 61.46119296833331, "tests/common/jobs/test_gruneisen.py::test_shrink_expand_structure": 0.010272523999996489, "tests/common/schemas/test_anharmonicity.py::test_anharmonicity_doc": 0.002493975333341799, "tests/common/schemas/test_cclib.py::test_cclib_taskdoc": 4.703821733999916, "tests/common/schemas/test_cclib.py::test_model_validate": 0.0013537409999268373, "tests/common/schemas/test_defect.py::test_model_validate[CCDDocument]": 0.0011075256666307116, "tests/common/schemas/test_defect.py::test_model_validate[FormationEnergyDiagramDocument]": 0.0011361336666292725, "tests/common/schemas/test_defect.py::test_sort_pos_dist": 0.001286077999926268, "tests/common/schemas/test_elastic.py::test_elastic_document": 0.004051918333326891, "tests/common/schemas/test_elastic.py::test_model_validate[DerivedProperties]": 0.0010766513334298604, "tests/common/schemas/test_elastic.py::test_model_validate[ElasticDocument]": 0.0011609963333209332, "tests/common/schemas/test_elastic.py::test_model_validate[ElasticTensorDocument]": 0.0010614929998951084, "tests/common/schemas/test_elastic.py::test_model_validate[FittingData]": 0.0010587536667875004, "tests/common/schemas/test_phonons.py::test_model_validate[PhononJobDirs]": 0.0010754690000946236, "tests/common/schemas/test_phonons.py::test_model_validate[PhononUUIDs]": 0.0010427403334460905, "tests/common/schemas/test_phonons.py::test_phonon_bs_dos_doc": 0.0012753980000563085, "tests/common/schemas/test_phonons.py::test_thermal_displacement_data": 0.0010714609999998477, "tests/common/schemas/test_qha.py::test_analyze_free_energy": 12.754160140666803, "tests/common/schemas/test_qha.py::test_analyze_free_energy_small": 12.615162324666718, "tests/common/test_files.py::test_gunzip_force_overwrites": 0.005129394666672245, "tests/common/test_files.py::test_zip_outputs": 0.002083878333337452, "tests/common/test_jobs.py::test_retrieve_structure_from_materials_project": 0.00028202900000451336, "tests/common/test_jobs.py::test_structure_to_conventional": 0.023411804000033953, "tests/common/test_jobs.py::test_structure_to_primitive": 0.03949084733339229, "tests/common/test_settings.py::test_empty_and_invalid_config_file": 0.022735280666703755, "tests/cp2k/jobs/test_core.py::test_relax_maker": 0.17616648366663412, "tests/cp2k/jobs/test_core.py::test_static_maker": 0.4859919443332501, "tests/cp2k/jobs/test_core.py::test_transmuter": 0.2017107503332151, "tests/cp2k/sets/test_base.py::test_cp2k_input_set": 0.007216281333474702, "tests/cp2k/sets/test_base.py::test_recursive_update": 0.001409473333448356, "tests/cp2k/sets/test_core.py::test_input_generators": 0.5303318426665934, "tests/cp2k/test_drones.py::test_structure_optimization": 0.05423840333340498, "tests/cp2k/test_files.py::test_copy_cp2k_outputs_static[copy_kwargs0-files0]": 0.03467831799991927, "tests/cp2k/test_files.py::test_get_largest_relax_extension": 0.0013696559999516467, "tests/cp2k/test_powerups.py::test_add_metadata_to_flow[add_metadata_to_flow-settings0]": 0.0775161383331806, "tests/cp2k/test_powerups.py::test_add_metadata_to_flow[add_metadata_to_flow-settings1]": 0.0774128356666021, "tests/cp2k/test_powerups.py::test_update_cp2k_custodian_handlers[update_cp2k_custodian_handlers-settings0]": 0.0774969296666465, "tests/cp2k/test_powerups.py::test_update_user_settings[update_user_input_settings-user_input_settings-settings0]": 0.21581572900000387, "tests/cp2k/test_powerups.py::test_update_user_settings[update_user_kpoints_settings-user_kpoints_settings-settings1]": 0.2021702943334276, "tests/forcefields/flows/test_elastic.py::test_elastic_wf_with_mace": 8.104031171333494, "tests/forcefields/flows/test_eos.py::test_ml_ff_eos_makers[CHGNet]": 1.8297771080000682, "tests/forcefields/flows/test_eos.py::test_ml_ff_eos_makers[M3GNet]": 3.386328679333284, "tests/forcefields/flows/test_eos.py::test_ml_ff_eos_makers[MACE]": 3.168506250999902, "tests/forcefields/flows/test_gruneisen.py::test_gruneisen_wf_ff": 129.49, "tests/forcefields/flows/test_phonon.py::test_phonon_wf_force_field": 26.227385248666753, "tests/forcefields/flows/test_qha.py::test_qha_dir": 89.68676798233332, "tests/forcefields/test_jobs.py::test_chgnet_relax_maker[False]": 0.4600695873333886, "tests/forcefields/test_jobs.py::test_chgnet_relax_maker[True]": 4.194001306333273, "tests/forcefields/test_jobs.py::test_chgnet_relax_maker_fix_symmetry[False-0.01]": 15.47720087000001, "tests/forcefields/test_jobs.py::test_chgnet_relax_maker_fix_symmetry[True-0.01]": 1.8529380703334937, "tests/forcefields/test_jobs.py::test_chgnet_relax_maker_fix_symmetry[True-0.1]": 1.7461961959999523, "tests/forcefields/test_jobs.py::test_chgnet_static_maker": 0.11073141499999413, "tests/forcefields/test_jobs.py::test_gap_relax_maker[False]": 0.308972087000105, "tests/forcefields/test_jobs.py::test_gap_relax_maker[True]": 2.865975615999711, "tests/forcefields/test_jobs.py::test_gap_static_maker": 0.17442697366664106, "tests/forcefields/test_jobs.py::test_m3gnet_relax_maker": 3.7941847613333266, "tests/forcefields/test_jobs.py::test_m3gnet_static_maker": 0.1295912906666672, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-False-False-0.01]": 0.40211702100001884, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-False-True-0.01]": 0.4202039180000459, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-False-True-0.1]": 0.4313018379997781, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-True-False-0.01]": 2.4431075793335517, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-True-True-0.01]": 3.5628958303333698, "tests/forcefields/test_jobs.py::test_mace_relax_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model-True-True-0.1]": 3.495420603000184, "tests/forcefields/test_jobs.py::test_mace_relax_maker_fix_symmetry[False-0.01]": 15.091336822666639, "tests/forcefields/test_jobs.py::test_mace_relax_maker_fix_symmetry[True-0.01]": 2.1081263313331724, "tests/forcefields/test_jobs.py::test_mace_relax_maker_fix_symmetry[True-0.1]": 2.036890331333401, "tests/forcefields/test_jobs.py::test_mace_static_maker[/home/runner/work/atomate2/atomate2/tests/test_data/forcefields/mace/MACE.model]": 0.1493252986670086, "tests/forcefields/test_jobs.py::test_maker_initialization": 0.001941597666624754, "tests/forcefields/test_jobs.py::test_nep_relax_maker[False-True]": 0.4112262206666249, "tests/forcefields/test_jobs.py::test_nep_relax_maker[True-False]": 0.5660935880002095, "tests/forcefields/test_jobs.py::test_nep_static_maker": 0.21389911400001438, "tests/forcefields/test_jobs.py::test_nequip_relax_maker[False-True]": 1.2935072546665651, "tests/forcefields/test_jobs.py::test_nequip_relax_maker[True-False]": 2.159949399000046, "tests/forcefields/test_jobs.py::test_nequip_static_maker": 0.8723098266665753, "tests/forcefields/test_md.py::test_maker_initialization": 0.0018704786666603468, "tests/forcefields/test_md.py::test_ml_ff_md_maker[CHGNet]": 1.813491183333402, "tests/forcefields/test_md.py::test_ml_ff_md_maker[GAP]": 0.9104613440001685, "tests/forcefields/test_md.py::test_ml_ff_md_maker[M3GNet]": 1.673941080000077, "tests/forcefields/test_md.py::test_ml_ff_md_maker[MACE]": 3.4466181663334887, "tests/forcefields/test_md.py::test_ml_ff_md_maker[NEP]": 1.150797551666604, "tests/forcefields/test_md.py::test_ml_ff_md_maker[Nequip]": 1.9450242269999005, "tests/forcefields/test_md.py::test_nve_and_dynamics_obj": 3.4639093286665834, "tests/forcefields/test_md.py::test_press_schedule[CHGNet]": 8.489922779999915, "tests/forcefields/test_md.py::test_temp_schedule[CHGNet]": 7.259984244333357, "tests/forcefields/test_md.py::test_traj_file[atoms.traj]": 1.08861558299994, "tests/forcefields/test_md.py::test_traj_file[trajectory.json.gz]": 1.0595586843333724, "tests/forcefields/test_phonon.py::test_phonon_get_supercell_size": 0.04859870800009958, "tests/forcefields/test_phonon.py::test_phonon_maker_initialization_with_all_mlff": 4.5320760446666855, "tests/forcefields/test_utils.py::test_ext_load[CHGNet]": 0.09884311699981178, "tests/forcefields/test_utils.py::test_ext_load[MACE]": 0.16373483899997154, "tests/forcefields/test_utils.py::test_m3gnet_pot": 1.74472067066669, "tests/forcefields/test_utils.py::test_raises_error": 0.0014602440003272932, "tests/qchem/jobs/test_core.py::test_freq": 0.1816246123332045, "tests/qchem/jobs/test_core.py::test_opt_maker": 0.056042671666697665, "tests/qchem/jobs/test_core.py::test_single_point_maker": 0.04893510966682394, "tests/qchem/sets/test_core.py::test_extra_params_nbo[ForceSetGenerator-force]": 0.0010156180001104076, "tests/qchem/sets/test_core.py::test_extra_params_nbo[FreqSetGenerator-freq]": 0.001016920666719064, "tests/qchem/sets/test_core.py::test_extra_params_nbo[OptSetGenerator-opt]": 0.0010545983334395714, "tests/qchem/sets/test_core.py::test_extra_params_nbo[PESScanSetGenerator-pes_scan]": 0.001105846666632715, "tests/qchem/sets/test_core.py::test_extra_params_nbo[SinglePointSetGenerator-sp]": 0.0010248356668398628, "tests/qchem/sets/test_core.py::test_extra_params_nbo[TransitionStateSetGenerator-ts]": 0.0010292573334330275, "tests/qchem/sets/test_core.py::test_extra_params_pcm[ForceSetGenerator-force]": 0.001113741333483631, "tests/qchem/sets/test_core.py::test_extra_params_pcm[FreqSetGenerator-freq]": 0.0010347866668022714, "tests/qchem/sets/test_core.py::test_extra_params_pcm[OptSetGenerator-opt]": 0.0010488810000879312, "tests/qchem/sets/test_core.py::test_extra_params_pcm[PESScanSetGenerator-pes_scan]": 0.001026392333566643, "tests/qchem/sets/test_core.py::test_extra_params_pcm[SinglePointSetGenerator-sp]": 0.0010368146667284843, "tests/qchem/sets/test_core.py::test_extra_params_pcm[TransitionStateSetGenerator-ts]": 0.001035742999571691, "tests/qchem/sets/test_core.py::test_extra_params_plots[ForceSetGenerator-force]": 0.0010126033333411517, "tests/qchem/sets/test_core.py::test_extra_params_plots[FreqSetGenerator-freq]": 0.0010131366668701958, "tests/qchem/sets/test_core.py::test_extra_params_plots[OptSetGenerator-opt]": 0.0010926183332837052, "tests/qchem/sets/test_core.py::test_extra_params_plots[PESScanSetGenerator-pes_scan]": 0.0010417499997856794, "tests/qchem/sets/test_core.py::test_extra_params_plots[SinglePointSetGenerator-sp]": 0.0010198966666242388, "tests/qchem/sets/test_core.py::test_extra_params_plots[TransitionStateSetGenerator-ts]": 0.0010205470000528294, "tests/qchem/sets/test_core.py::test_extra_params_smd[ForceSetGenerator-force]": 0.0010212943332893094, "tests/qchem/sets/test_core.py::test_extra_params_smd[FreqSetGenerator-freq]": 0.0010244010000709143, "tests/qchem/sets/test_core.py::test_extra_params_smd[OptSetGenerator-opt]": 0.001047611666611677, "tests/qchem/sets/test_core.py::test_extra_params_smd[PESScanSetGenerator-pes_scan]": 0.0010136573329570335, "tests/qchem/sets/test_core.py::test_extra_params_smd[SinglePointSetGenerator-sp]": 0.0011239343335394854, "tests/qchem/sets/test_core.py::test_extra_params_smd[TransitionStateSetGenerator-ts]": 0.0010292106670325059, "tests/qchem/sets/test_core.py::test_qc_sets[ForceSetGenerator-force]": 0.0010629106667844705, "tests/qchem/sets/test_core.py::test_qc_sets[FreqSetGenerator-freq]": 0.001035822000024685, "tests/qchem/sets/test_core.py::test_qc_sets[OptSetGenerator-opt]": 0.0010658150000987614, "tests/qchem/sets/test_core.py::test_qc_sets[PESScanSetGenerator-pes_scan]": 0.001043587000064387, "tests/qchem/sets/test_core.py::test_qc_sets[SinglePointSetGenerator-sp]": 0.0012642566668243187, "tests/qchem/sets/test_core.py::test_qc_sets[TransitionStateSetGenerator-ts]": 0.0010482326667139812, "tests/qchem/test_drones.py::test_structure_optimization": 0.013432009666530575, "tests/qchem/test_drones.py::test_valid_paths": 0.001240476666680479, "tests/qchem/test_files.py::test_copy_qchem_outputs_freq[files0]": 0.006362471666761849, "tests/qchem/test_files.py::test_copy_qchem_outputs_sp[files0]": 0.004284133666563624, "tests/qchem/test_files.py::test_get_largest_opt_extension": 0.001340024000152577, "tests/qchem/test_run.py::test_stop_children_inval_td": 3.8417886746665317, "tests/qchem/test_run.py::test_stop_children_val_td": 0.013813341666567188, "tests/qchem/test_sets.py::test_overwrite[water_mol-overwrite_inputs0]": 0.0015668020002976846, "tests/qchem/test_sets.py::test_overwrite[water_mol-overwrite_inputs1]": 0.001118056333249721, "tests/qchem/test_sets.py::test_overwrite[water_mol-overwrite_inputs2]": 0.0010888949999904678, "tests/qchem/test_sets.py::test_overwrite[water_mol-overwrite_inputs3]": 0.001079875000262594, "tests/qchem/test_sets.py::test_overwrite[water_mol-overwrite_inputs4]": 0.0011748560001857793, "tests/qchem/test_sets.py::test_write_set[water_mol]": 0.0023602653335122645, "tests/vasp/flows/test_core.py::test_band_structure": 5.390152081333326, "tests/vasp/flows/test_core.py::test_double_relax": 2.5717385000000377, "tests/vasp/flows/test_core.py::test_hse_band_structure": 4.451931238999957, "tests/vasp/flows/test_core.py::test_hse_line_mode_band_structure": 1.942740748333108, "tests/vasp/flows/test_core.py::test_hse_optics": 4.518024584333186, "tests/vasp/flows/test_core.py::test_hse_uniform_band_structure": 2.8392197090000386, "tests/vasp/flows/test_core.py::test_line_mode_band_structure": 2.561909974333427, "tests/vasp/flows/test_core.py::test_optics": 4.336928050666832, "tests/vasp/flows/test_core.py::test_uniform_band_structure": 2.9303603240001244, "tests/vasp/flows/test_defect.py::test_ccd_maker": 9.922728674000004, "tests/vasp/flows/test_defect.py::test_formation_energy_maker": 26.817715320666593, "tests/vasp/flows/test_defect.py::test_formation_energy_maker_uc": 10.16181560200001, "tests/vasp/flows/test_defect.py::test_nonrad_maker": 10.891067496333713, "tests/vasp/flows/test_elastic.py::test_elastic[False]": 10.097133113666436, "tests/vasp/flows/test_elastic.py::test_elastic[True]": 7.781017919000003, "tests/vasp/flows/test_elastic.py::test_elastic_fail": 6.605060469000061, "tests/vasp/flows/test_electrode.py::test_electrode_makers": 25.10512663566654, "tests/vasp/flows/test_elph.py::test_elph_renormalisation": 5.033452971666672, "tests/vasp/flows/test_eos.py::test_mp_eos_double_relax_maker": 0.5651459573334705, "tests/vasp/flows/test_eos.py::test_mp_eos_maker[False]": 1.6105155216665328, "tests/vasp/flows/test_eos.py::test_mp_eos_maker[True]": 3.008288750666528, "tests/vasp/flows/test_gruneisen.py::test_gruneisen_wf_vasp": 26.53652183900014, "tests/vasp/flows/test_magnetism.py::test_magnetic_orderings": 15.55712309200006, "tests/vasp/flows/test_matpes.py::test_matpes_static_flow_maker": 0.4847570569999486, "tests/vasp/flows/test_md.py::test_multi_md_flow": 1.0561388160000813, "tests/vasp/flows/test_md.py::test_multi_md_flow_restart_from_uuid": 0.22257161400004102, "tests/vasp/flows/test_mp.py::test_mp_gga_double_relax": 0.8569658336667393, "tests/vasp/flows/test_mp.py::test_mp_gga_double_relax_static": 1.183940869333128, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_double_relax_static": 2.7150166423333153, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[None-None-None]": 0.004135533666840274, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[None-None-test]": 0.00418108899998515, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[None-static_maker2-None]": 0.0041469946665984025, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[None-static_maker2-test]": 0.004161599000023368, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[relax_maker0-static_maker0-None]": 0.004284168666799815, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[relax_maker0-static_maker0-test]": 0.004565753333129881, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[relax_maker1-None-None]": 0.004175998999774795, "tests/vasp/flows/test_mp.py::test_mp_meta_gga_relax_custom_values[relax_maker1-None-test]": 0.004242704666542825, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_all_steps": 13.779649996333168, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_all_steps_na_cl": 9.66360386566665, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements3": 4.112319345333238, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_add_inputs": 5.263334423333163, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_add_inputs_raises": 0.9764580713330512, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath[hinuma]": 5.270954386000085, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath[latimer_munro]": 6.961809828000014, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath[seekpath]": 4.77967966366676, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath[setyawan_curtarolo]": 6.5267550013333375, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises[hinuma]": 0.003802007666687738, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises[latimer_munro]": 0.0038211436665278598, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises[setyawan_curtarolo]": 0.003747742666519116, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises_no_cell_change[hinuma]": 0.0044562976665929455, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises_no_cell_change[latimer_munro]": 0.003940140333421975, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_kpath_raises_no_cell_change[setyawan_curtarolo]": 0.004047835666748749, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_no_structural_transformation": 4.0607046236667275, "tests/vasp/flows/test_phonons.py::test_phonon_wf_vasp_only_displacements_optional_settings": 3.408340435333154, "tests/vasp/flows/test_qha.py::test_qha": 7.484125322666614, "tests/vasp/jobs/test_core.py::test_dielectric": 0.8692216496665424, "tests/vasp/jobs/test_core.py::test_hse_relax": 0.19770132466654408, "tests/vasp/jobs/test_core.py::test_hse_static_maker": 0.1365733030000532, "tests/vasp/jobs/test_core.py::test_relax_maker": 0.20904449533327352, "tests/vasp/jobs/test_core.py::test_static_maker": 11.116547856333227, "tests/vasp/jobs/test_core.py::test_transmuter": 0.19265339633360176, "tests/vasp/jobs/test_eos.py::test_mp_gga_eos_relax_maker": 0.3640790359998694, "tests/vasp/jobs/test_eos.py::test_mp_gga_eos_static_maker": 0.17684850200028754, "tests/vasp/jobs/test_matpes.py::test_matpes_gga_static_maker": 0.18843344033310436, "tests/vasp/jobs/test_matpes.py::test_matpes_meta_gga_static_maker": 0.16457704066677556, "tests/vasp/jobs/test_matpes.py::test_matpes_static_maker_default_values[MatPesGGAStaticMaker]": 0.004442235000093812, "tests/vasp/jobs/test_matpes.py::test_matpes_static_maker_default_values[MatPesMetaGGAStaticMaker]": 0.004174750666682788, "tests/vasp/jobs/test_md.py::test_molecular_dynamics": 0.6691843870000866, "tests/vasp/jobs/test_mp.py::test_mp_gga_relax_maker": 0.24468504566652882, "tests/vasp/jobs/test_mp.py::test_mp_meta_gga_relax_maker": 0.5817970226665542, "tests/vasp/jobs/test_mp.py::test_mp_meta_gga_relax_maker_default_values": 0.0030067070000162253, "tests/vasp/jobs/test_mp.py::test_mp_meta_gga_static_maker": 0.3219135816666494, "tests/vasp/jobs/test_mp.py::test_mp_pre_relax_maker_default_values": 0.0033302600001358464, "tests/vasp/lobster/flows/test_lobster.py::test_lobster_uniform_maker": 7.959945302666635, "tests/vasp/lobster/flows/test_lobster.py::test_lobstermaker": 6.364226824000222, "tests/vasp/lobster/flows/test_lobster.py::test_lobstermaker_delete": 2.1032157883331215, "tests/vasp/lobster/flows/test_lobster.py::test_mp_vasp_lobstermaker": 7.343604700333647, "tests/vasp/lobster/schemas/test_lobster.py::test_lobster_task_doc_saved_jsons": 40.98750643333339, "tests/vasp/lobster/schemas/test_lobster.py::test_lobster_task_document": 14.969965354666783, "tests/vasp/lobster/schemas/test_lobster.py::test_lobster_task_document_non_gzip": 6.062333212333367, "tests/vasp/schemas/test_defect.py::test_ccd_document": 5.94453249800002, "tests/vasp/sets/test_matpes.py::test_matpes_sets[MatPesGGAStaticSetGenerator]": 0.004398768000100972, "tests/vasp/sets/test_matpes.py::test_matpes_sets[MatPesMetaGGAStaticSetGenerator]": 0.003971212333302295, "tests/vasp/sets/test_mp.py::test_mp_sets[MPGGARelaxSetGenerator]": 0.00368929333323346, "tests/vasp/sets/test_mp.py::test_mp_sets[MPGGAStaticSetGenerator]": 0.0038764316664128273, "tests/vasp/sets/test_mp.py::test_mp_sets[MPMetaGGARelaxSetGenerator]": 0.0029928890000216293, "tests/vasp/sets/test_mp.py::test_mp_sets[MPMetaGGAStaticSetGenerator]": 0.0030523773336123363, "tests/vasp/test_drones.py::test_structure_optimization": 0.11228577666649169, "tests/vasp/test_files.py::test_copy_vasp_outputs_double[copy_kwargs0-files0]": 0.015638466333257384, "tests/vasp/test_files.py::test_copy_vasp_outputs_double[copy_kwargs1-files1]": 0.011768596666721956, "tests/vasp/test_files.py::test_copy_vasp_outputs_double[copy_kwargs2-files2]": 0.012497007333574098, "tests/vasp/test_files.py::test_copy_vasp_outputs_static[copy_kwargs0-files0]": 0.01690007633336184, "tests/vasp/test_files.py::test_copy_vasp_outputs_static[copy_kwargs1-files1]": 0.016637089333168358, "tests/vasp/test_files.py::test_copy_vasp_outputs_static[copy_kwargs2-files2]": 0.18835631566632097, "tests/vasp/test_files.py::test_get_largest_relax_extension": 0.0014254983334467397, "tests/vasp/test_powerups.py::test_add_metadata_to_flow[add_metadata_to_flow-settings0]": 0.11271628433329776, "tests/vasp/test_powerups.py::test_add_metadata_to_flow[add_metadata_to_flow-settings1]": 0.11377234200017483, "tests/vasp/test_powerups.py::test_update_user_settings[update_user_incar_settings-user_incar_settings-settings0]": 0.2710475196666569, "tests/vasp/test_powerups.py::test_update_user_settings[update_user_kpoints_settings-user_kpoints_settings-settings1]": 0.39397606933304513, "tests/vasp/test_powerups.py::test_update_user_settings[update_user_potcar_functional-user_potcar_functional-LDA]": 0.2779300913333221, "tests/vasp/test_powerups.py::test_update_user_settings[update_user_potcar_settings-user_potcar_settings-settings2]": 0.37446981600032814, "tests/vasp/test_powerups.py::test_update_user_settings[use_auto_ispin-auto_ispin-True]": 0.27486744966715076, "tests/vasp/test_powerups.py::test_update_vasp_custodian_handlers[update_vasp_custodian_handlers-settings0]": 0.11207957299999786, "tests/vasp/test_run.py::test_default_handlers": 0.001279037333612602, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_no_magmoms-user_incar_settings0]": 0.009159608000118169, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_no_magmoms-user_incar_settings3]": 0.004681596666311331, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_with_magmoms-user_incar_settings1]": 0.009134520666369403, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_with_magmoms-user_incar_settings4]": 0.004584998333029944, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_with_spin-user_incar_settings2]": 0.009941204666726359, "tests/vasp/test_sets.py::test_incar_magmoms_precedence[struct_with_spin-user_incar_settings5]": 0.005310982666590765, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[0-0.0001-expected_params0]": 0.003160098333106968, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[0.1-0.0001-expected_params1]": 0.0030785323331959566, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[0.1-0.1-expected_params2]": 0.003053672666737839, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[0.1-0.2-expected_params3]": 0.0030650969999139, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[1-0.0001-expected_params4]": 0.0031541673332261175, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[10-0.0001-expected_params7]": 0.03349587999991854, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[2-0.0001-expected_params5]": 0.003066650666823989, "tests/vasp/test_sets.py::test_set_kspacing_bandgap_tol_and_auto_ismear[5-0.0001-expected_params6]": 0.003055405000244112, "tests/vasp/test_sets.py::test_set_u_params[struct_no_magmoms]": 0.004700017333713428, "tests/vasp/test_sets.py::test_set_u_params[struct_no_u_params]": 0.004680999666864712, "tests/vasp/test_sets.py::test_user_incar_settings": 0.007054009333084347}