[Debichem-devel] Bug#1091556: pymatgen: FTBFS on i386: make[1]: *** [debian/rules:108: override_dh_auto_test] Error 1

Lucas Nussbaum lucas at debian.org
Sat Dec 28 16:32:57 GMT 2024


Source: pymatgen
Version: 2024.10.29+dfsg1-4
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20241228 ftbfs-trixie

Hi,

During a rebuild of all packages in sid, this package failed to build
on i386.

This package currently has binary packages on i386, so this is a regression.

Relevant part (hopefully):
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> SKIP_TESTS=""; \
> list_initialised=0; \
> for t in test_matproj TestGenKpt TestHighSymmetryPoint test_from_multi_jobs_file test_from_string test_read_molecule test_read_nbo test_read_negative test_read_plots test_read_write_nbo7 test_all test_custom_smd_write test_sets test_CifWriter test_read_write test_init test_get_site_symmetries BSDOSPlotterTest test_cdft_dc_parsing test_get_structure_by_id test_babel_PC_with_RO_depth_0_vs_depth_10 test_fit test_get_parchg test_numerical_eoswrapper "(TestAnharmonicQuasiharmociDebyeApprox and test_gruneisen_parameter)" plot test_structure_environments test_pca test_get_info_cohps_to_neighbors test_get_parchg test_as_dict_from_dict test_ir_spectra; do \
>     if [ ${list_initialised} = 0 ]; then \
>         SKIP_TESTS=$t; \
>         list_initialised=1; \
>     else \
>         SKIP_TESTS="${SKIP_TESTS} or $t"; \
>     fi; \
> done; \
> if [ "x${SKIP_TESTS}" != "x" ]; then \
>     SKIP_TESTS="not ( ${SKIP_TESTS} )"; \
> fi; \
> echo "skipping tests: ${SKIP_TESTS}"; \
> for py in `py3versions -sv`; do \
>   pybuilddir=`pybuild --pyver $py --print build_dir | awk '{print $3}'`; \
>   testdir=/<<PKGBUILDDIR>>/.pybuild/test_python$py; \
>   cp -a $pybuilddir $testdir; \
>   cp -a tests $testdir; \
>   PMG_TEST_FILES_DIR=/usr/share/doc/pymatgen-test-files/examples/files \
>     PYTHONPATH=$testdir PATH=$pybuilddir/../scripts:$PATH \
>     python$py -m pytest -v  --import-mode=prepend --color=no -k "${SKIP_TESTS}" $testdir; \
> done
> skipping tests: not ( test_matproj or TestGenKpt or TestHighSymmetryPoint or test_from_multi_jobs_file or test_from_string or test_read_molecule or test_read_nbo or test_read_negative or test_read_plots or test_read_write_nbo7 or test_all or test_custom_smd_write or test_sets or test_CifWriter or test_read_write or test_init or test_get_site_symmetries or BSDOSPlotterTest or test_cdft_dc_parsing or test_get_structure_by_id or test_babel_PC_with_RO_depth_0_vs_depth_10 or test_fit or test_get_parchg or test_numerical_eoswrapper or (TestAnharmonicQuasiharmociDebyeApprox and test_gruneisen_parameter) or plot or test_structure_environments or test_pca or test_get_info_cohps_to_neighbors or test_get_parchg or test_as_dict_from_dict or test_ir_spectra )
> ============================= test session starts ==============================
> platform linux -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: pyproject.toml
> plugins: typeguard-4.4.1
> collected 2935 items / 384 deselected / 8 skipped / 2551 selected
> 
> .pybuild/test_python3.13/tests/alchemy/test_filters.py .......           [  0%]
> .pybuild/test_python3.13/tests/alchemy/test_materials.py .........       [  0%]
> .pybuild/test_python3.13/tests/alchemy/test_transmuters.py .             [  0%]
> .pybuild/test_python3.13/tests/analysis/chemenv/connectivity/test_connected_components.py . [  0%]
> ....                                                                     [  0%]
> .pybuild/test_python3.13/tests/analysis/chemenv/connectivity/test_environment_nodes.py . [  0%]
> ..                                                                       [  0%]
> .pybuild/test_python3.13/tests/analysis/chemenv/connectivity/test_structure_connectivity.py . [  1%]
>                                                                          [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_chemenv_strategies.py . [  1%]
> .                                                                        [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_coordination_geometries.py . [  1%]
> ..                                                                       [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py . [  1%]
> ..ss                                                                     [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_voronoi.py . [  1%]
> .                                                                        [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_weights.py . [  1%]
> ......                                                                   [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/utils/test_chemenv_config.py . [  1%]
>                                                                          [  1%]
> .pybuild/test_python3.13/tests/analysis/chemenv/utils/test_coordination_geometry_utils.py . [  1%]
> ...........                                                              [  2%]
> .pybuild/test_python3.13/tests/analysis/chemenv/utils/test_func_utils.py . [  2%]
> ..                                                                       [  2%]
> .pybuild/test_python3.13/tests/analysis/chemenv/utils/test_graph_utils.py . [  2%]
> ...                                                                      [  2%]
> .pybuild/test_python3.13/tests/analysis/chemenv/utils/test_math_utils.py . [  2%]
> ........                                                                 [  2%]
> .pybuild/test_python3.13/tests/analysis/diffraction/test_neutron.py .    [  2%]
> .pybuild/test_python3.13/tests/analysis/diffraction/test_tem.py ........ [  3%]
> .........                                                                [  3%]
> .pybuild/test_python3.13/tests/analysis/diffraction/test_xrd.py ..       [  3%]
> .pybuild/test_python3.13/tests/analysis/elasticity/test_elastic.py ..... [  3%]
> ....................                                                     [  4%]
> .pybuild/test_python3.13/tests/analysis/elasticity/test_strain.py ...... [  4%]
> ..                                                                       [  4%]
> .pybuild/test_python3.13/tests/analysis/elasticity/test_stress.py .      [  5%]
> .pybuild/test_python3.13/tests/analysis/ferroelectricity/test_polarization.py . [  5%]
> ...........                                                              [  5%]
> .pybuild/test_python3.13/tests/analysis/interfaces/test_coherent_interface.py . [  5%]
> ..                                                                       [  5%]
> .pybuild/test_python3.13/tests/analysis/interfaces/test_substrate_analyzer.py . [  5%]
> .                                                                        [  5%]
> .pybuild/test_python3.13/tests/analysis/interfaces/test_zsl.py ..        [  5%]
> .pybuild/test_python3.13/tests/analysis/magnetism/test_analyzer.py ..... [  5%]
> ....s.                                                                   [  6%]
> .pybuild/test_python3.13/tests/analysis/magnetism/test_heisenberg.py ... [  6%]
> ....                                                                     [  6%]
> .pybuild/test_python3.13/tests/analysis/magnetism/test_jahnteller.py ... [  6%]
>                                                                          [  6%]
> .pybuild/test_python3.13/tests/analysis/solar/test_slme.py .             [  6%]
> .pybuild/test_python3.13/tests/analysis/structure_prediction/test_dopant_predictor.py . [  6%]
> .                                                                        [  6%]
> .pybuild/test_python3.13/tests/analysis/structure_prediction/test_substitution_probability.py . [  6%]
> ..                                                                       [  6%]
> .pybuild/test_python3.13/tests/analysis/structure_prediction/test_substitutor.py . [  6%]
> .                                                                        [  6%]
> .pybuild/test_python3.13/tests/analysis/structure_prediction/test_volume_predictor.py . [  6%]
> ..                                                                       [  7%]
> .pybuild/test_python3.13/tests/analysis/test_adsorption.py ......        [  7%]
> .pybuild/test_python3.13/tests/analysis/test_bond_dissociation.py sss    [  7%]
> .pybuild/test_python3.13/tests/analysis/test_bond_valence.py ....        [  7%]
> .pybuild/test_python3.13/tests/analysis/test_chempot_diagram.py ........ [  7%]
>                                                                          [  7%]
> .pybuild/test_python3.13/tests/analysis/test_cost.py ....                [  7%]
> .pybuild/test_python3.13/tests/analysis/test_dimensionality.py ......... [  8%]
> .                                                                        [  8%]
> .pybuild/test_python3.13/tests/analysis/test_disorder.py .               [  8%]
> .pybuild/test_python3.13/tests/analysis/test_energy_models.py ......     [  8%]
> .pybuild/test_python3.13/tests/analysis/test_eos.py .....                [  8%]
> .pybuild/test_python3.13/tests/analysis/test_ewald.py ...                [  8%]
> .pybuild/test_python3.13/tests/analysis/test_fragmenter.py ssss.....s    [  9%]
> .pybuild/test_python3.13/tests/analysis/test_graphs.py ..s.............. [ 10%]
> ....s............                                                        [ 10%]
> .pybuild/test_python3.13/tests/analysis/test_hhi.py .                    [ 10%]
> .pybuild/test_python3.13/tests/analysis/test_interface_reactions.py .... [ 10%]
> .............                                                            [ 11%]
> .pybuild/test_python3.13/tests/analysis/test_local_env.py .............s [ 11%]
> s.....................s.....                                             [ 13%]
> .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py sssssss [ 13%]
> ...................................................                      [ 15%]
> .pybuild/test_python3.13/tests/analysis/test_molecule_structure_comparator.py . [ 15%]
> ..s.                                                                     [ 15%]
> .pybuild/test_python3.13/tests/analysis/test_nmr.py ......               [ 15%]
> .pybuild/test_python3.13/tests/analysis/test_phase_diagram.py .......... [ 16%]
> ........................................................................ [ 18%]
>                                                                          [ 18%]
> .pybuild/test_python3.13/tests/analysis/test_piezo.py ...                [ 19%]
> .pybuild/test_python3.13/tests/analysis/test_piezo_sensitivity.py ...... [ 19%]
> ........                                                                 [ 19%]
> .pybuild/test_python3.13/tests/analysis/test_pourbaix_diagram.py ....... [ 19%]
> .........                                                                [ 20%]
> .pybuild/test_python3.13/tests/analysis/test_prototypes.py .             [ 20%]
> .pybuild/test_python3.13/tests/analysis/test_quasi_harmonic_debye_approx.py . [ 20%]
> ............                                                             [ 20%]
> .pybuild/test_python3.13/tests/analysis/test_quasirrho.py ......         [ 21%]
> .pybuild/test_python3.13/tests/analysis/test_reaction_calculator.py .... [ 21%]
> ..........s......                                                        [ 21%]
> .pybuild/test_python3.13/tests/analysis/test_structure_analyzer.py ..... [ 22%]
> ....                                                                     [ 22%]
> .pybuild/test_python3.13/tests/analysis/test_structure_matcher.py ...... [ 22%]
> .......................                                                  [ 23%]
> .pybuild/test_python3.13/tests/analysis/test_surface_analysis.py ....... [ 23%]
> .                                                                        [ 23%]
> .pybuild/test_python3.13/tests/analysis/test_transition_state.py .       [ 23%]
> .pybuild/test_python3.13/tests/analysis/test_wulff.py ...                [ 23%]
> .pybuild/test_python3.13/tests/analysis/test_xps.py .                    [ 23%]
> .pybuild/test_python3.13/tests/analysis/topological/test_spillage.py .   [ 23%]
> .pybuild/test_python3.13/tests/analysis/xas/test_spectrum.py ........... [ 24%]
>                                                                          [ 24%]
> .pybuild/test_python3.13/tests/apps/battery/test_analyzer.py ....        [ 24%]
> .pybuild/test_python3.13/tests/apps/battery/test_conversion_battery.py . [ 24%]
> ..                                                                       [ 24%]
> .pybuild/test_python3.13/tests/apps/battery/test_insertion_battery.py .. [ 24%]
> .......                                                                  [ 24%]
> .pybuild/test_python3.13/tests/apps/borg/test_hive.py ........           [ 25%]
> .pybuild/test_python3.13/tests/apps/borg/test_queen.py ..                [ 25%]
> .pybuild/test_python3.13/tests/cli/test_pmg_analyze.py .                 [ 25%]
> .pybuild/test_python3.13/tests/cli/test_pmg_diff.py .                    [ 25%]
> .pybuild/test_python3.13/tests/cli/test_pmg_structure.py .               [ 25%]
> .pybuild/test_python3.13/tests/command_line/test_bader_caller.py ssss    [ 25%]
> .pybuild/test_python3.13/tests/command_line/test_chargemol_caller.py ..  [ 25%]
> .pybuild/test_python3.13/tests/command_line/test_critic2_caller.py ss..  [ 25%]
> .pybuild/test_python3.13/tests/command_line/test_enumlib_caller.py sss   [ 25%]
> .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py ssssssss [ 26%]
> sssssssssssssssssss                                                      [ 27%]
> .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py sssssss [ 27%]
>                                                                          [ 27%]
> .pybuild/test_python3.13/tests/command_line/test_vampire_caller.py s     [ 27%]
> .pybuild/test_python3.13/tests/core/test_bonds.py .......                [ 27%]
> .pybuild/test_python3.13/tests/core/test_composition.py ................ [ 28%]
> .....................................                                    [ 29%]
> .pybuild/test_python3.13/tests/core/test_interface.py .................. [ 30%]
> ....                                                                     [ 30%]
> .pybuild/test_python3.13/tests/core/test_ion.py ...............          [ 31%]
> .pybuild/test_python3.13/tests/core/test_lattice.py .................... [ 31%]
> ............                                                             [ 32%]
> .pybuild/test_python3.13/tests/core/test_libxcfunc.py ..                 [ 32%]
> .pybuild/test_python3.13/tests/core/test_molecular_orbitals.py ....      [ 32%]
> .pybuild/test_python3.13/tests/core/test_operations.py ................  [ 33%]
> .pybuild/test_python3.13/tests/core/test_periodic_table.py ............. [ 33%]
> .............................................                            [ 35%]
> .pybuild/test_python3.13/tests/core/test_settings.py ..                  [ 35%]
> .pybuild/test_python3.13/tests/core/test_sites.py ....................   [ 36%]
> .pybuild/test_python3.13/tests/core/test_spectrum.py .....               [ 36%]
> .pybuild/test_python3.13/tests/core/test_structure.py .................s [ 37%]
> .......s...................................ss....s.................ssss. [ 40%]
> .............................................s.......s.......            [ 42%]
> .pybuild/test_python3.13/tests/core/test_surface.py .................... [ 43%]
> ...s....                                                                 [ 43%]
> .pybuild/test_python3.13/tests/core/test_tensors.py .................... [ 44%]
> ........                                                                 [ 44%]
> .pybuild/test_python3.13/tests/core/test_trajectory.py ................. [ 45%]
>                                                                          [ 45%]
> .pybuild/test_python3.13/tests/core/test_units.py .................      [ 46%]
> .pybuild/test_python3.13/tests/core/test_xcfunc.py ....s.                [ 46%]
> .pybuild/test_python3.13/tests/electronic_structure/test_bandstructure.py . [ 46%]
> ..............................                                           [ 47%]
> .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py ss [ 47%]
> ssssssssssssss                                                           [ 48%]
> .pybuild/test_python3.13/tests/electronic_structure/test_cohp.py ....... [ 48%]
> .......................                                                  [ 49%]
> .pybuild/test_python3.13/tests/electronic_structure/test_core.py ....... [ 49%]
> ...                                                                      [ 49%]
> .pybuild/test_python3.13/tests/electronic_structure/test_dos.py ........ [ 50%]
> .................                                                        [ 50%]
> .pybuild/test_python3.13/tests/entries/test_compatibility.py ........... [ 51%]
> ........................................................................ [ 53%]
> ....                                                                     [ 54%]
> .pybuild/test_python3.13/tests/entries/test_computed_entries.py ........ [ 54%]
> .............................                                            [ 55%]
> .pybuild/test_python3.13/tests/entries/test_correction_calculator.py ... [ 55%]
> .                                                                        [ 55%]
> .pybuild/test_python3.13/tests/entries/test_entry_tools.py .......       [ 55%]
> .pybuild/test_python3.13/tests/entries/test_exp_entries.py ...           [ 56%]
> .pybuild/test_python3.13/tests/entries/test_mixing_scheme.py ........... [ 56%]
> ....................                                                     [ 57%]
> .pybuild/test_python3.13/tests/ext/test_cod.py ..                        [ 57%]
> .pybuild/test_python3.13/tests/ext/test_optimade.py .....                [ 57%]
> .pybuild/test_python3.13/tests/io/abinit/test_abiobjects.py .........    [ 57%]
> .pybuild/test_python3.13/tests/io/abinit/test_inputs.py FFFF.FFF         [ 58%]
> .pybuild/test_python3.13/tests/io/abinit/test_netcdf.py ...              [ 58%]
> .pybuild/test_python3.13/tests/io/abinit/test_pseudos.py FFFFFF          [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_bs_generator.py ...     [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_gw_generator.py .       [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_input_set.py .          [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_md_generator.py .       [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_relax_generator.py ...  [ 58%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_static_generator.py ... [ 59%]
> .                                                                        [ 59%]
> .pybuild/test_python3.13/tests/io/aims/sets/test_static_restart_from_relax_generator.py . [ 59%]
> ....                                                                     [ 59%]
> .pybuild/test_python3.13/tests/io/aims/test_inputs.py ......             [ 59%]
> .pybuild/test_python3.13/tests/io/aims/test_outputs.py ......            [ 59%]
> .pybuild/test_python3.13/tests/io/aims/test_parsers.py ................. [ 60%]
> ........................................................................ [ 63%]
> .......                                                                  [ 63%]
> .pybuild/test_python3.13/tests/io/cp2k/test_inputs.py ..............     [ 64%]
> .pybuild/test_python3.13/tests/io/cp2k/test_outputs.py .......           [ 64%]
> .pybuild/test_python3.13/tests/io/exciting/test_inputs.py ....           [ 64%]
> .pybuild/test_python3.13/tests/io/feff/test_inputs.py .................. [ 65%]
>                                                                          [ 65%]
> .pybuild/test_python3.13/tests/io/feff/test_outputs.py ......            [ 65%]
> .pybuild/test_python3.13/tests/io/lammps/test_data.py .................. [ 66%]
> ...........                                                              [ 66%]
> .pybuild/test_python3.13/tests/io/lammps/test_generators.py .            [ 66%]
> .pybuild/test_python3.13/tests/io/lammps/test_inputs.py ................ [ 67%]
> .....                                                                    [ 67%]
> .pybuild/test_python3.13/tests/io/lammps/test_outputs.py ....            [ 67%]
> .pybuild/test_python3.13/tests/io/lammps/test_utils.py ...               [ 67%]
> .pybuild/test_python3.13/tests/io/lobster/test_inputs.py ............... [ 68%]
> .                                                                        [ 68%]
> .pybuild/test_python3.13/tests/io/lobster/test_lobsterenv.py ........... [ 68%]
> ....                                                                     [ 68%]
> .pybuild/test_python3.13/tests/io/lobster/test_outputs.py .............. [ 69%]
> ..................................                                       [ 70%]
> .pybuild/test_python3.13/tests/io/pwmat/test_inputs.py ..........        [ 71%]
> .pybuild/test_python3.13/tests/io/qchem/test_inputs.py ................. [ 71%]
> ..................                                                       [ 72%]
> .pybuild/test_python3.13/tests/io/qchem/test_outputs.py ................ [ 73%]
> .s...                                                                    [ 73%]
> .pybuild/test_python3.13/tests/io/qchem/test_utils.py ..                 [ 73%]
> .pybuild/test_python3.13/tests/io/test_adf.py ..............             [ 74%]
> .pybuild/test_python3.13/tests/io/test_ase.py .......................    [ 74%]
> .pybuild/test_python3.13/tests/io/test_atat.py ....                      [ 75%]
> .pybuild/test_python3.13/tests/io/test_cif.py ........s................. [ 76%]
> ...................                                                      [ 76%]
> .pybuild/test_python3.13/tests/io/test_common.py ..                      [ 76%]
> .pybuild/test_python3.13/tests/io/test_core.py .........                 [ 77%]
> .pybuild/test_python3.13/tests/io/test_cssr.py ..                        [ 77%]
> .pybuild/test_python3.13/tests/io/test_fiesta.py ..                      [ 77%]
> .pybuild/test_python3.13/tests/io/test_gaussian.py .................     [ 78%]
> .pybuild/test_python3.13/tests/io/test_jarvis.py ss                      [ 78%]
> .pybuild/test_python3.13/tests/io/test_lmto.py .....                     [ 78%]
> .pybuild/test_python3.13/tests/io/test_multiwfn.py .....                 [ 78%]
> .pybuild/test_python3.13/tests/io/test_nwchem.py ............            [ 79%]
> .pybuild/test_python3.13/tests/io/test_optimade.py .                     [ 79%]
> .pybuild/test_python3.13/tests/io/test_packmol.py .......s.              [ 79%]
> .pybuild/test_python3.13/tests/io/test_phonopy.py ...........            [ 79%]
> .pybuild/test_python3.13/tests/io/test_prismatic.py .                    [ 79%]
> .pybuild/test_python3.13/tests/io/test_pwscf.py .............            [ 80%]
> .pybuild/test_python3.13/tests/io/test_res.py ...............            [ 81%]
> .pybuild/test_python3.13/tests/io/test_template_input.py .               [ 81%]
> .pybuild/test_python3.13/tests/io/test_wannier90.py ....                 [ 81%]
> .pybuild/test_python3.13/tests/io/test_xcrysden.py ....                  [ 81%]
> .pybuild/test_python3.13/tests/io/test_xr.py ..                          [ 81%]
> .pybuild/test_python3.13/tests/io/test_xyz.py ........                   [ 81%]
> .pybuild/test_python3.13/tests/io/vasp/test_help.py ...                  [ 81%]
> .pybuild/test_python3.13/tests/io/vasp/test_inputs.py .................. [ 82%]
> .................................................s.............          [ 85%]
> .pybuild/test_python3.13/tests/io/vasp/test_optics.py ...                [ 85%]
> .pybuild/test_python3.13/tests/io/vasp/test_outputs.py ................. [ 85%]
> ........................................................................ [ 88%]
> .................                                                        [ 89%]
> .pybuild/test_python3.13/tests/io/xtb/test_inputs.py ..                  [ 89%]
> .pybuild/test_python3.13/tests/optimization/test_linear_assignment.py .. [ 89%]
> ..                                                                       [ 89%]
> .pybuild/test_python3.13/tests/optimization/test_neighbors.py .          [ 89%]
> .pybuild/test_python3.13/tests/phonon/test_bandstructure.py ...........  [ 90%]
> .pybuild/test_python3.13/tests/phonon/test_dos.py ...................    [ 90%]
> .pybuild/test_python3.13/tests/phonon/test_gruneisen.py ..........       [ 91%]
> .pybuild/test_python3.13/tests/phonon/test_thermal_displacements.py .... [ 91%]
> ..........                                                               [ 91%]
> .pybuild/test_python3.13/tests/symmetry/test_analyzer.py ............... [ 92%]
> ..................                                                       [ 93%]
> .pybuild/test_python3.13/tests/symmetry/test_groups.py ................. [ 93%]
> .......                                                                  [ 93%]
> .pybuild/test_python3.13/tests/symmetry/test_kpath_lm.py ...             [ 94%]
> .pybuild/test_python3.13/tests/symmetry/test_kpath_sc.py ..              [ 94%]
> .pybuild/test_python3.13/tests/symmetry/test_kpaths.py .s                [ 94%]
> .pybuild/test_python3.13/tests/symmetry/test_maggroups.py ......         [ 94%]
> .pybuild/test_python3.13/tests/symmetry/test_settings.py ....            [ 94%]
> .pybuild/test_python3.13/tests/symmetry/test_site_symmetries.py .        [ 94%]
> .pybuild/test_python3.13/tests/test_pkg.py .                             [ 94%]
> .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py . [ 94%]
> s..sssss..ssssssss...ssssss....s                                         [ 96%]
> .pybuild/test_python3.13/tests/transformations/test_site_transformations.py . [ 96%]
> ..........s......                                                        [ 96%]
> .pybuild/test_python3.13/tests/transformations/test_standard_transformations.py . [ 96%]
> ...........ssss............                                              [ 97%]
> .pybuild/test_python3.13/tests/util/test_coord.py ...................... [ 98%]
>                                                                          [ 98%]
> .pybuild/test_python3.13/tests/util/test_graph_hashing.py ..             [ 98%]
> .pybuild/test_python3.13/tests/util/test_io.py .                         [ 98%]
> .pybuild/test_python3.13/tests/util/test_misc.py ......                  [ 99%]
> .pybuild/test_python3.13/tests/util/test_num.py .                        [ 99%]
> .pybuild/test_python3.13/tests/util/test_provenance.py ........          [ 99%]
> .pybuild/test_python3.13/tests/util/test_string.py ...........           [ 99%]
> .pybuild/test_python3.13/tests/util/test_typing.py .....                 [100%]
> 
> =================================== FAILURES ===================================
> ___________________________ TestAbinitInput.test_api ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe37ca0e8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_api>
> 
>     def test_api(self):
>         """Testing BasicAbinitInput API."""
>         # Build simple input with structure and pseudos
>         unit_cell = {
>             "acell": 3 * [10.217],
>             "rprim": [[0.0, 0.5, 0.5], [0.5, 0.0, 0.5], [0.5, 0.5, 0.0]],
>             "ntypat": 1,
>             "znucl": [14],
>             "natom": 2,
>             "typat": [1, 1],
>             "xred": [[0.0, 0.0, 0.0], [0.25, 0.25, 0.25]],
>         }
>     
> >       inp = BasicAbinitInput(structure=unit_cell, pseudos=abiref_file("14si.pspnc"))
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:52: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe37ca0e8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ____________________ TestAbinitInput.test_helper_functions _____________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe9c7f0e0>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_helper_functions>
> 
>     def test_helper_functions(self):
>         """Testing BasicAbinitInput helper functions."""
> >       inp = BasicAbinitInput(structure=abiref_file("si.cif"), pseudos="14si.pspnc", pseudo_dir=TEST_DIR)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:154: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe9c7f0e0>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ______________________ TestAbinitInput.test_input_errors _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe334d378>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_input_errors>
> 
>     def test_input_errors(self):
>         """Testing typical BasicAbinitInput Error."""
>         si_structure = Structure.from_file(abiref_file("si.cif"))
>     
>         # Ambiguous list of pseudos.
>         with pytest.raises(BasicAbinitInput.Error):
> >           BasicAbinitInput(si_structure, pseudos=abiref_files("14si.pspnc", "14si.4.hgh"))
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:132: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe334d378>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestMultiDataset.test_api ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe48d0228>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestMultiDataset testMethod=test_api>
> 
>     def test_api(self):
>         """Testing BasicMultiDataset API."""
>         structure = Structure.from_file(abiref_file("si.cif"))
>         pseudo = abiref_file("14si.pspnc")
>         pseudo_dir = os.path.dirname(pseudo)
> >       multi = BasicMultiDataset(structure=structure, pseudos=pseudo)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:179: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe48d0228>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ________________________ TestFactory.test_ebands_input _________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe920d350>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_ebands_input>
> 
>     def test_ebands_input(self):
>         """Testing ebands_input factory."""
> >       multi = ebands_input(self.si_structure, self.si_pseudo, kppa=10, ecut=2)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:279: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:351: in ebands_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2 if dos_kppa is None else 2 + len(dos_kppa))
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe920d350>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestFactory.test_gs_input ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe8fecc10>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_gs_input>
> 
>     def test_gs_input(self):
>         """Testing gs_input factory."""
> >       inp = gs_input(self.si_structure, self.si_pseudo, kppa=10, ecut=10, spin_mode="polarized")
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:271: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:290: in gs_input
>     multi = ebands_input(
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:351: in ebands_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2 if dos_kppa is None else 2 + len(dos_kppa))
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe8fecc10>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ___________________ TestFactory.test_ion_ioncell_relax_input ___________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe372cc10>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_ion_ioncell_relax_input>
> 
>     def test_ion_ioncell_relax_input(self):
>         """Testing ion_ioncell_relax_input factory."""
> >       multi = ion_ioncell_relax_input(self.si_structure, self.si_pseudo, kppa=10, ecut=2)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_inputs.py:320: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:442: in ion_ioncell_relax_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe372cc10>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestPseudo.test_nc_pseudos __________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2d65300>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_nc_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2d65300>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ______________________ TestPseudo.test_oncvpsp_pseudo_fr _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2d65f60>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_oncvpsp_pseudo_fr>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2d65f60>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ______________________ TestPseudo.test_oncvpsp_pseudo_sr _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2cd34f8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_oncvpsp_pseudo_sr>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2cd34f8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> _________________________ TestPseudo.test_paw_pseudos __________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2b50c30>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_paw_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe2b50c30>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ________________________ TestPseudo.test_pawxml_pseudos ________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe21cd830>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_pawxml_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe21cd830>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> _________________________ TestPseudoTable.test_methods _________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe478d828>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.13/collections/__init__.py:1139: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudoTable testMethod=test_methods>
> 
>     def test_methods(self):
>         """Test PseudoTable methods."""
> >       table = PseudoTable([f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")])
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/tests/io/abinit/test_pseudos.py:200: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xe478d828>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.13/collections/__init__.py", line 1139, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.13/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ============================= slowest 30 durations =============================
> 69.18s call     .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py::TestCubicSupercellTransformation::test_apply_transformation_orthorhombic_supercell
> 41.28s call     .pybuild/test_python3.13/tests/symmetry/test_kpath_lm.py::TestKPathLatimerMunro::test_kpath_generation
> 26.86s call     .pybuild/test_python3.13/tests/io/vasp/test_optics.py::TestVasprun::test_optics
> 24.93s call     .pybuild/test_python3.13/tests/core/test_surface.py::TestSlab::test_symmetrization
> 23.17s call     .pybuild/test_python3.13/tests/analysis/elasticity/test_elastic.py::TestElasticTensorExpansion::test_get_yield_stress
> 21.31s call     .pybuild/test_python3.13/tests/core/test_surface.py::TestSlabGenerator::test_non_stoichiometric_symmetrized_slab
> 18.90s call     .pybuild/test_python3.13/tests/analysis/test_structure_analyzer.py::TestMiscFunction::test_average_coordination_number
> 18.67s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_thermal_conductivity_slack
> 18.50s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_tdos
> 18.30s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_gruneisen
> 18.25s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_as_from_dict
> 18.25s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_average_gruneisen
> 18.15s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_debye_temp_phonopy
> 18.02s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_acoustic_debye_temp
> 17.99s call     .pybuild/test_python3.13/tests/io/test_phonopy.py::TestGruneisen::test_gruneisen_parameter
> 17.89s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_phdos
> 17.88s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_multi
> 17.86s call     .pybuild/test_python3.13/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_frequencies
> 17.47s call     .pybuild/test_python3.13/tests/symmetry/test_kpath_sc.py::TestBandStructureSC::test_kpath_generation
> 16.78s call     .pybuild/test_python3.13/tests/symmetry/test_groups.py::TestSpaceGroup::test_order_symm_ops
> 16.50s call     .pybuild/test_python3.13/tests/ext/test_optimade.py::TestOptimade::test_update_aliases
> 14.24s call     .pybuild/test_python3.13/tests/core/test_surface.py::TestSlab::test_get_symmetric_sites
> 12.50s call     .pybuild/test_python3.13/tests/core/test_trajectory.py::TestTrajectory::test_xdatcar_write
> 12.44s call     .pybuild/test_python3.13/tests/analysis/test_prototypes.py::TestAflowPrototypeMatcher::test_prototype_matching
> 12.40s call     .pybuild/test_python3.13/tests/core/test_surface.py::TestMillerIndexFinder::test_generate_all_slabs
> 12.18s call     .pybuild/test_python3.13/tests/core/test_trajectory.py::TestTrajectory::test_conversion
> 12.16s call     .pybuild/test_python3.13/tests/symmetry/test_groups.py::TestSpaceGroup::test_point_group_is_set
> 12.09s call     .pybuild/test_python3.13/tests/core/test_trajectory.py::TestTrajectory::test_extend
> 12.08s call     .pybuild/test_python3.13/tests/entries/test_entry_tools.py::TestEntrySet::test_ground_states
> 11.98s call     .pybuild/test_python3.13/tests/symmetry/test_groups.py::TestSpaceGroup::test_valid_symbol
> =========================== short test summary info ============================
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_functional_groups.py:16: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap2.py:27: No boltztrap2
> SKIPPED [1] .pybuild/test_python3.13/tests/ext/test_matproj.py:44: MP API is down
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_babel.py:17: could not import 'openbabel.pybel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_openff.py:25: could not import 'openff.toolkit': No module named 'openff'
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_shengbte.py:9: could not import 'f90nml': No module named 'f90nml'
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_zeopp.py:20: zeo not installed
> SKIPPED [1] .pybuild/test_python3.13/tests/symmetry/test_kpath_hin.py:11: seekpath not installed
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py:174: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py:169: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/magnetism/test_analyzer.py:263: enumlib not present
> SKIPPED [3] .pybuild/test_python3.13/tests/analysis/test_bond_dissociation.py:17: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_fragmenter.py:83: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_fragmenter.py:68: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_fragmenter.py:74: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_fragmenter.py:111: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_fragmenter.py:161: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_graphs.py:347: graphviz executables not present
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_graphs.py:588: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [2] .pybuild/test_python3.13/tests/analysis/test_local_env.py:294: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_local_env.py:1355: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:157: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:164: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:176: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:243: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:250: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:257: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_matcher.py:264: OBAlign is missing, Skipping
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_molecule_structure_comparator.py:144: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.13/tests/analysis/test_reaction_calculator.py:334: hash test requires 64 bits
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_bader_caller.py:119: bader executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_bader_caller.py:84: bader executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_bader_caller.py:66: bader executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_bader_caller.py:134: bader executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_critic2_caller.py:26: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_critic2_caller.py:62: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_enumlib_caller.py:92: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_enumlib_caller.py:80: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_enumlib_caller.py:122: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:41: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:74: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:181: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:148: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:236: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:272: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:114: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:139: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:144: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:135: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:120: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:130: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:126: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:283: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:212: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:320: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:332: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:315: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:356: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:345: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:352: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:363: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:359: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:383: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:373: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:379: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_gulp_caller.py:386: gulp not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:67: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:101: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:28: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:51: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:59: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:77: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_mcsqs_caller.py:89: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/command_line/test_vampire_caller.py:34: vampire executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:712: Only run this in CI tests
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:105: enumlib or mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1832: chgnet is failing with Numpy 1, see #3992
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1904: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:985: PMG_MAPI_KEY environment variable not set or MP API is down. This is also the case in a PR.
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1807: chgnet is failing with Numpy 1, see #3992
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1916: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1927: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:1936: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:2567: could not import 'tblite': No module named 'tblite'
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_structure.py:2575: Pytorch and TBLite clash. https://github.com/materialsproject/pymatgen/pull/3060
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_surface.py:700: This test relies on neighbor orders and is hard coded. Disable temporarily
> SKIPPED [1] .pybuild/test_python3.13/tests/core/test_xcfunc.py:56: TODO:
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:252: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:219: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:239: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:167: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:197: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:230: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:99: No FDINT
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:121: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:201: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:130: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:114: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:84: No FDINT
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:205: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:139: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:155: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/electronic_structure/test_boltztrap.py:41: No x_trans.
> SKIPPED [1] .pybuild/test_python3.13/tests/io/qchem/test_outputs.py:350: OpenBabel not installed.
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_cif.py:292: non-free PF*.cif test files are not available
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_jarvis.py:12: JARVIS-tools not loaded.
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_jarvis.py:20: JARVIS-tools not loaded.
> SKIPPED [1] .pybuild/test_python3.13/tests/io/test_packmol.py:199: could not import 'openbabel': No module named '_openbabel'
> SKIPPED [1] .pybuild/test_python3.13/tests/io/vasp/test_inputs.py:1469: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.13/tests/symmetry/test_kpaths.py:21: No seek path present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:97: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:158: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:188: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:203: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:229: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:241: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:356: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:296: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:334: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:326: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:344: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:484: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:532: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:541: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:599: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:609: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:630: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:662: icet not installed.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:648: icet not installed.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:673: icet not installed.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_advanced_transformations.py:866: hiphive not present
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_site_transformations.py:213: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_standard_transformations.py:227: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_standard_transformations.py:244: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_standard_transformations.py:262: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.13/tests/transformations/test_standard_transformations.py:268: enum_lib not present.
> == 13 failed, 2407 passed, 139 skipped, 384 deselected in 1392.08s (0:23:12) ===
> ============================= test session starts ==============================
> platform linux -- Python 3.12.8, pytest-8.3.4, pluggy-1.5.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: pyproject.toml
> plugins: typeguard-4.4.1
> collected 2953 items / 386 deselected / 6 skipped / 2567 selected
> 
> .pybuild/test_python3.12/tests/alchemy/test_filters.py .......           [  0%]
> .pybuild/test_python3.12/tests/alchemy/test_materials.py .........       [  0%]
> .pybuild/test_python3.12/tests/alchemy/test_transmuters.py .             [  0%]
> .pybuild/test_python3.12/tests/analysis/chemenv/connectivity/test_connected_components.py . [  0%]
> ....                                                                     [  0%]
> .pybuild/test_python3.12/tests/analysis/chemenv/connectivity/test_environment_nodes.py . [  0%]
> ..                                                                       [  0%]
> .pybuild/test_python3.12/tests/analysis/chemenv/connectivity/test_structure_connectivity.py . [  1%]
>                                                                          [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_chemenv_strategies.py . [  1%]
> .                                                                        [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_coordination_geometries.py . [  1%]
> ..                                                                       [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py . [  1%]
> ..ss                                                                     [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_voronoi.py . [  1%]
> .                                                                        [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_weights.py . [  1%]
> ......                                                                   [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/utils/test_chemenv_config.py . [  1%]
>                                                                          [  1%]
> .pybuild/test_python3.12/tests/analysis/chemenv/utils/test_coordination_geometry_utils.py . [  1%]
> ...........                                                              [  2%]
> .pybuild/test_python3.12/tests/analysis/chemenv/utils/test_func_utils.py . [  2%]
> ..                                                                       [  2%]
> .pybuild/test_python3.12/tests/analysis/chemenv/utils/test_graph_utils.py . [  2%]
> ...                                                                      [  2%]
> .pybuild/test_python3.12/tests/analysis/chemenv/utils/test_math_utils.py . [  2%]
> ........                                                                 [  2%]
> .pybuild/test_python3.12/tests/analysis/diffraction/test_neutron.py .    [  2%]
> .pybuild/test_python3.12/tests/analysis/diffraction/test_tem.py ........ [  3%]
> .........                                                                [  3%]
> .pybuild/test_python3.12/tests/analysis/diffraction/test_xrd.py ..       [  3%]
> .pybuild/test_python3.12/tests/analysis/elasticity/test_elastic.py ..... [  3%]
> ....................                                                     [  4%]
> .pybuild/test_python3.12/tests/analysis/elasticity/test_strain.py ...... [  4%]
> ..                                                                       [  4%]
> .pybuild/test_python3.12/tests/analysis/elasticity/test_stress.py .      [  4%]
> .pybuild/test_python3.12/tests/analysis/ferroelectricity/test_polarization.py . [  5%]
> ...........                                                              [  5%]
> .pybuild/test_python3.12/tests/analysis/interfaces/test_coherent_interface.py . [  5%]
> ..                                                                       [  5%]
> .pybuild/test_python3.12/tests/analysis/interfaces/test_substrate_analyzer.py . [  5%]
> .                                                                        [  5%]
> .pybuild/test_python3.12/tests/analysis/interfaces/test_zsl.py ..        [  5%]
> .pybuild/test_python3.12/tests/analysis/magnetism/test_analyzer.py ..... [  5%]
> ....s.                                                                   [  6%]
> .pybuild/test_python3.12/tests/analysis/magnetism/test_heisenberg.py ... [  6%]
> ....                                                                     [  6%]
> .pybuild/test_python3.12/tests/analysis/magnetism/test_jahnteller.py ... [  6%]
>                                                                          [  6%]
> .pybuild/test_python3.12/tests/analysis/solar/test_slme.py .             [  6%]
> .pybuild/test_python3.12/tests/analysis/structure_prediction/test_dopant_predictor.py . [  6%]
> .                                                                        [  6%]
> .pybuild/test_python3.12/tests/analysis/structure_prediction/test_substitution_probability.py . [  6%]
> ..                                                                       [  6%]
> .pybuild/test_python3.12/tests/analysis/structure_prediction/test_substitutor.py . [  6%]
> .                                                                        [  6%]
> .pybuild/test_python3.12/tests/analysis/structure_prediction/test_volume_predictor.py . [  6%]
> ..                                                                       [  6%]
> .pybuild/test_python3.12/tests/analysis/test_adsorption.py ......        [  7%]
> .pybuild/test_python3.12/tests/analysis/test_bond_dissociation.py ...    [  7%]
> .pybuild/test_python3.12/tests/analysis/test_bond_valence.py ....        [  7%]
> .pybuild/test_python3.12/tests/analysis/test_chempot_diagram.py ........ [  7%]
>                                                                          [  7%]
> .pybuild/test_python3.12/tests/analysis/test_cost.py ....                [  7%]
> .pybuild/test_python3.12/tests/analysis/test_dimensionality.py ......... [  8%]
> .                                                                        [  8%]
> .pybuild/test_python3.12/tests/analysis/test_disorder.py .               [  8%]
> .pybuild/test_python3.12/tests/analysis/test_energy_models.py ......     [  8%]
> .pybuild/test_python3.12/tests/analysis/test_eos.py .....                [  8%]
> .pybuild/test_python3.12/tests/analysis/test_ewald.py ...                [  8%]
> .pybuild/test_python3.12/tests/analysis/test_fragmenter.py ..........    [  9%]
> .pybuild/test_python3.12/tests/analysis/test_functional_groups.py ...... [  9%]
>                                                                          [  9%]
> .pybuild/test_python3.12/tests/analysis/test_graphs.py ..s.............. [ 10%]
> .................                                                        [ 10%]
> .pybuild/test_python3.12/tests/analysis/test_hhi.py .                    [ 10%]
> .pybuild/test_python3.12/tests/analysis/test_interface_reactions.py .... [ 11%]
> .............                                                            [ 11%]
> .pybuild/test_python3.12/tests/analysis/test_local_env.py .............. [ 12%]
> ......................s.....                                             [ 13%]
> .pybuild/test_python3.12/tests/analysis/test_molecule_matcher.py ....... [ 13%]
> ...................................................                      [ 15%]
> .pybuild/test_python3.12/tests/analysis/test_molecule_structure_comparator.py . [ 15%]
> ..s.                                                                     [ 15%]
> .pybuild/test_python3.12/tests/analysis/test_nmr.py ......               [ 15%]
> .pybuild/test_python3.12/tests/analysis/test_phase_diagram.py .......... [ 16%]
> ........................................................................ [ 19%]
>                                                                          [ 19%]
> .pybuild/test_python3.12/tests/analysis/test_piezo.py ...                [ 19%]
> .pybuild/test_python3.12/tests/analysis/test_piezo_sensitivity.py ...... [ 19%]
> ........                                                                 [ 19%]
> .pybuild/test_python3.12/tests/analysis/test_pourbaix_diagram.py ....... [ 20%]
> .........                                                                [ 20%]
> .pybuild/test_python3.12/tests/analysis/test_prototypes.py .             [ 20%]
> .pybuild/test_python3.12/tests/analysis/test_quasi_harmonic_debye_approx.py . [ 20%]
> ............                                                             [ 20%]
> .pybuild/test_python3.12/tests/analysis/test_quasirrho.py ......         [ 21%]
> .pybuild/test_python3.12/tests/analysis/test_reaction_calculator.py .... [ 21%]
> ..........s......                                                        [ 21%]
> .pybuild/test_python3.12/tests/analysis/test_structure_analyzer.py ..... [ 22%]
> ....                                                                     [ 22%]
> .pybuild/test_python3.12/tests/analysis/test_structure_matcher.py ...... [ 22%]
> .......................                                                  [ 23%]
> .pybuild/test_python3.12/tests/analysis/test_surface_analysis.py ....... [ 23%]
> .                                                                        [ 23%]
> .pybuild/test_python3.12/tests/analysis/test_transition_state.py .       [ 23%]
> .pybuild/test_python3.12/tests/analysis/test_wulff.py ...                [ 23%]
> .pybuild/test_python3.12/tests/analysis/test_xps.py .                    [ 23%]
> .pybuild/test_python3.12/tests/analysis/topological/test_spillage.py .   [ 23%]
> .pybuild/test_python3.12/tests/analysis/xas/test_spectrum.py ........... [ 24%]
>                                                                          [ 24%]
> .pybuild/test_python3.12/tests/apps/battery/test_analyzer.py ....        [ 24%]
> .pybuild/test_python3.12/tests/apps/battery/test_conversion_battery.py . [ 24%]
> ..                                                                       [ 24%]
> .pybuild/test_python3.12/tests/apps/battery/test_insertion_battery.py .. [ 24%]
> .......                                                                  [ 25%]
> .pybuild/test_python3.12/tests/apps/borg/test_hive.py ........           [ 25%]
> .pybuild/test_python3.12/tests/apps/borg/test_queen.py ..                [ 25%]
> .pybuild/test_python3.12/tests/cli/test_pmg_analyze.py .                 [ 25%]
> .pybuild/test_python3.12/tests/cli/test_pmg_diff.py .                    [ 25%]
> .pybuild/test_python3.12/tests/cli/test_pmg_structure.py .               [ 25%]
> .pybuild/test_python3.12/tests/command_line/test_bader_caller.py ssss    [ 25%]
> .pybuild/test_python3.12/tests/command_line/test_chargemol_caller.py ..  [ 25%]
> .pybuild/test_python3.12/tests/command_line/test_critic2_caller.py ss..  [ 25%]
> .pybuild/test_python3.12/tests/command_line/test_enumlib_caller.py sss   [ 26%]
> .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py ssssssss [ 26%]
> sssssssssssssssssss                                                      [ 27%]
> .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py sssssss [ 27%]
>                                                                          [ 27%]
> .pybuild/test_python3.12/tests/command_line/test_vampire_caller.py s     [ 27%]
> .pybuild/test_python3.12/tests/core/test_bonds.py .......                [ 27%]
> .pybuild/test_python3.12/tests/core/test_composition.py ................ [ 28%]
> .....................................                                    [ 29%]
> .pybuild/test_python3.12/tests/core/test_interface.py .................. [ 30%]
> ....                                                                     [ 30%]
> .pybuild/test_python3.12/tests/core/test_ion.py ...............          [ 31%]
> .pybuild/test_python3.12/tests/core/test_lattice.py .................... [ 31%]
> ............                                                             [ 32%]
> .pybuild/test_python3.12/tests/core/test_libxcfunc.py ..                 [ 32%]
> .pybuild/test_python3.12/tests/core/test_molecular_orbitals.py ....      [ 32%]
> .pybuild/test_python3.12/tests/core/test_operations.py ................  [ 33%]
> .pybuild/test_python3.12/tests/core/test_periodic_table.py ............. [ 33%]
> .............................................                            [ 35%]
> .pybuild/test_python3.12/tests/core/test_settings.py ..                  [ 35%]
> .pybuild/test_python3.12/tests/core/test_sites.py ....................   [ 36%]
> .pybuild/test_python3.12/tests/core/test_spectrum.py .....               [ 36%]
> .pybuild/test_python3.12/tests/core/test_structure.py .................s [ 37%]
> .......s...................................ss....s.................ssss. [ 40%]
> .............................................s.......s.......            [ 42%]
> .pybuild/test_python3.12/tests/core/test_surface.py .................... [ 43%]
> ...s....                                                                 [ 43%]
> .pybuild/test_python3.12/tests/core/test_tensors.py .................... [ 44%]
> ........                                                                 [ 44%]
> .pybuild/test_python3.12/tests/core/test_trajectory.py ................. [ 45%]
>                                                                          [ 45%]
> .pybuild/test_python3.12/tests/core/test_units.py .................      [ 46%]
> .pybuild/test_python3.12/tests/core/test_xcfunc.py ....s.                [ 46%]
> .pybuild/test_python3.12/tests/electronic_structure/test_bandstructure.py . [ 46%]
> ..............................                                           [ 47%]
> .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py ss [ 47%]
> ssssssssssssss                                                           [ 48%]
> .pybuild/test_python3.12/tests/electronic_structure/test_cohp.py ....... [ 48%]
> .......................                                                  [ 49%]
> .pybuild/test_python3.12/tests/electronic_structure/test_core.py ....... [ 49%]
> ...                                                                      [ 49%]
> .pybuild/test_python3.12/tests/electronic_structure/test_dos.py ........ [ 49%]
> .................                                                        [ 50%]
> .pybuild/test_python3.12/tests/entries/test_compatibility.py ........... [ 51%]
> ........................................................................ [ 53%]
> ....                                                                     [ 53%]
> .pybuild/test_python3.12/tests/entries/test_computed_entries.py ........ [ 54%]
> .............................                                            [ 55%]
> .pybuild/test_python3.12/tests/entries/test_correction_calculator.py ... [ 55%]
> .                                                                        [ 55%]
> .pybuild/test_python3.12/tests/entries/test_entry_tools.py .......       [ 55%]
> .pybuild/test_python3.12/tests/entries/test_exp_entries.py ...           [ 55%]
> .pybuild/test_python3.12/tests/entries/test_mixing_scheme.py ........... [ 56%]
> ....................                                                     [ 57%]
> .pybuild/test_python3.12/tests/ext/test_cod.py ..                        [ 57%]
> .pybuild/test_python3.12/tests/ext/test_optimade.py .....                [ 57%]
> .pybuild/test_python3.12/tests/io/abinit/test_abiobjects.py .........    [ 57%]
> .pybuild/test_python3.12/tests/io/abinit/test_inputs.py FFFF.FFF         [ 58%]
> .pybuild/test_python3.12/tests/io/abinit/test_netcdf.py ...              [ 58%]
> .pybuild/test_python3.12/tests/io/abinit/test_pseudos.py FFFFFF          [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_bs_generator.py ...     [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_gw_generator.py .       [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_input_set.py .          [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_md_generator.py .       [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_relax_generator.py ...  [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_static_generator.py ... [ 58%]
> .                                                                        [ 58%]
> .pybuild/test_python3.12/tests/io/aims/sets/test_static_restart_from_relax_generator.py . [ 59%]
> ....                                                                     [ 59%]
> .pybuild/test_python3.12/tests/io/aims/test_inputs.py ......             [ 59%]
> .pybuild/test_python3.12/tests/io/aims/test_outputs.py ......            [ 59%]
> .pybuild/test_python3.12/tests/io/aims/test_parsers.py ................. [ 60%]
> ........................................................................ [ 63%]
> .......                                                                  [ 63%]
> .pybuild/test_python3.12/tests/io/cp2k/test_inputs.py ..............     [ 63%]
> .pybuild/test_python3.12/tests/io/cp2k/test_outputs.py .......           [ 64%]
> .pybuild/test_python3.12/tests/io/exciting/test_inputs.py ....           [ 64%]
> .pybuild/test_python3.12/tests/io/feff/test_inputs.py .................. [ 65%]
>                                                                          [ 65%]
> .pybuild/test_python3.12/tests/io/feff/test_outputs.py ......            [ 65%]
> .pybuild/test_python3.12/tests/io/lammps/test_data.py .................. [ 65%]
> ...........                                                              [ 66%]
> .pybuild/test_python3.12/tests/io/lammps/test_generators.py .            [ 66%]
> .pybuild/test_python3.12/tests/io/lammps/test_inputs.py ................ [ 67%]
> .....                                                                    [ 67%]
> .pybuild/test_python3.12/tests/io/lammps/test_outputs.py ....            [ 67%]
> .pybuild/test_python3.12/tests/io/lammps/test_utils.py ...               [ 67%]
> .pybuild/test_python3.12/tests/io/lobster/test_inputs.py ............... [ 68%]
> .                                                                        [ 68%]
> .pybuild/test_python3.12/tests/io/lobster/test_lobsterenv.py ........... [ 68%]
> ....                                                                     [ 68%]
> .pybuild/test_python3.12/tests/io/lobster/test_outputs.py .............. [ 69%]
> ..................................                                       [ 70%]
> .pybuild/test_python3.12/tests/io/pwmat/test_inputs.py ..........        [ 71%]
> .pybuild/test_python3.12/tests/io/qchem/test_inputs.py ................. [ 71%]
> ..................                                                       [ 72%]
> .pybuild/test_python3.12/tests/io/qchem/test_outputs.py ................ [ 73%]
> .....                                                                    [ 73%]
> .pybuild/test_python3.12/tests/io/qchem/test_utils.py ..                 [ 73%]
> .pybuild/test_python3.12/tests/io/test_adf.py ..............             [ 73%]
> .pybuild/test_python3.12/tests/io/test_ase.py .......................    [ 74%]
> .pybuild/test_python3.12/tests/io/test_atat.py ....                      [ 74%]
> .pybuild/test_python3.12/tests/io/test_babel.py ..........               [ 75%]
> .pybuild/test_python3.12/tests/io/test_cif.py ........s................. [ 76%]
> ...................                                                      [ 77%]
> .pybuild/test_python3.12/tests/io/test_common.py ..                      [ 77%]
> .pybuild/test_python3.12/tests/io/test_core.py .........                 [ 77%]
> .pybuild/test_python3.12/tests/io/test_cssr.py ..                        [ 77%]
> .pybuild/test_python3.12/tests/io/test_fiesta.py ..                      [ 77%]
> .pybuild/test_python3.12/tests/io/test_gaussian.py .................     [ 78%]
> .pybuild/test_python3.12/tests/io/test_jarvis.py ss                      [ 78%]
> .pybuild/test_python3.12/tests/io/test_lmto.py .....                     [ 78%]
> .pybuild/test_python3.12/tests/io/test_multiwfn.py .....                 [ 78%]
> .pybuild/test_python3.12/tests/io/test_nwchem.py ............            [ 79%]
> .pybuild/test_python3.12/tests/io/test_optimade.py .                     [ 79%]
> .pybuild/test_python3.12/tests/io/test_packmol.py .........              [ 79%]
> .pybuild/test_python3.12/tests/io/test_phonopy.py ...........            [ 80%]
> .pybuild/test_python3.12/tests/io/test_prismatic.py .                    [ 80%]
> .pybuild/test_python3.12/tests/io/test_pwscf.py .............            [ 80%]
> .pybuild/test_python3.12/tests/io/test_res.py ...............            [ 81%]
> .pybuild/test_python3.12/tests/io/test_template_input.py .               [ 81%]
> .pybuild/test_python3.12/tests/io/test_wannier90.py ....                 [ 81%]
> .pybuild/test_python3.12/tests/io/test_xcrysden.py ....                  [ 81%]
> .pybuild/test_python3.12/tests/io/test_xr.py ..                          [ 81%]
> .pybuild/test_python3.12/tests/io/test_xyz.py ........                   [ 81%]
> .pybuild/test_python3.12/tests/io/vasp/test_help.py ...                  [ 82%]
> .pybuild/test_python3.12/tests/io/vasp/test_inputs.py .................. [ 82%]
> .................................................s.............          [ 85%]
> .pybuild/test_python3.12/tests/io/vasp/test_optics.py ...                [ 85%]
> .pybuild/test_python3.12/tests/io/vasp/test_outputs.py ................. [ 85%]
> ........................................................................ [ 88%]
> .................                                                        [ 89%]
> .pybuild/test_python3.12/tests/io/xtb/test_inputs.py ..                  [ 89%]
> .pybuild/test_python3.12/tests/optimization/test_linear_assignment.py .. [ 89%]
> ..                                                                       [ 89%]
> .pybuild/test_python3.12/tests/optimization/test_neighbors.py .          [ 89%]
> .pybuild/test_python3.12/tests/phonon/test_bandstructure.py ...........  [ 90%]
> .pybuild/test_python3.12/tests/phonon/test_dos.py ...................    [ 90%]
> .pybuild/test_python3.12/tests/phonon/test_gruneisen.py ..........       [ 91%]
> .pybuild/test_python3.12/tests/phonon/test_thermal_displacements.py .... [ 91%]
> ..........                                                               [ 91%]
> .pybuild/test_python3.12/tests/symmetry/test_analyzer.py ............... [ 92%]
> ..................                                                       [ 93%]
> .pybuild/test_python3.12/tests/symmetry/test_groups.py ................. [ 93%]
> .......                                                                  [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_kpath_lm.py ...             [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_kpath_sc.py ..              [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_kpaths.py .s                [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_maggroups.py ......         [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_settings.py ....            [ 94%]
> .pybuild/test_python3.12/tests/symmetry/test_site_symmetries.py .        [ 94%]
> .pybuild/test_python3.12/tests/test_pkg.py .                             [ 94%]
> .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py . [ 94%]
> s..sssss..ssssssss...ssssss....s                                         [ 96%]
> .pybuild/test_python3.12/tests/transformations/test_site_transformations.py . [ 96%]
> ..........s......                                                        [ 96%]
> .pybuild/test_python3.12/tests/transformations/test_standard_transformations.py . [ 96%]
> ...........ssss............                                              [ 97%]
> .pybuild/test_python3.12/tests/util/test_coord.py ...................... [ 98%]
>                                                                          [ 98%]
> .pybuild/test_python3.12/tests/util/test_graph_hashing.py ..             [ 98%]
> .pybuild/test_python3.12/tests/util/test_io.py .                         [ 98%]
> .pybuild/test_python3.12/tests/util/test_misc.py ......                  [ 99%]
> .pybuild/test_python3.12/tests/util/test_num.py .                        [ 99%]
> .pybuild/test_python3.12/tests/util/test_provenance.py ........          [ 99%]
> .pybuild/test_python3.12/tests/util/test_string.py ...........           [ 99%]
> .pybuild/test_python3.12/tests/util/test_typing.py .....                 [100%]
> 
> =================================== FAILURES ===================================
> ___________________________ TestAbinitInput.test_api ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251daf8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_api>
> 
>     def test_api(self):
>         """Testing BasicAbinitInput API."""
>         # Build simple input with structure and pseudos
>         unit_cell = {
>             "acell": 3 * [10.217],
>             "rprim": [[0.0, 0.5, 0.5], [0.5, 0.0, 0.5], [0.5, 0.5, 0.0]],
>             "ntypat": 1,
>             "znucl": [14],
>             "natom": 2,
>             "typat": [1, 1],
>             "xred": [[0.0, 0.0, 0.0], [0.25, 0.25, 0.25]],
>         }
>     
> >       inp = BasicAbinitInput(structure=unit_cell, pseudos=abiref_file("14si.pspnc"))
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:52: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251daf8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ____________________ TestAbinitInput.test_helper_functions _____________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251deb8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_helper_functions>
> 
>     def test_helper_functions(self):
>         """Testing BasicAbinitInput helper functions."""
> >       inp = BasicAbinitInput(structure=abiref_file("si.cif"), pseudos="14si.pspnc", pseudo_dir=TEST_DIR)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:154: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251deb8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ______________________ TestAbinitInput.test_input_errors _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37fda08>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestAbinitInput testMethod=test_input_errors>
> 
>     def test_input_errors(self):
>         """Testing typical BasicAbinitInput Error."""
>         si_structure = Structure.from_file(abiref_file("si.cif"))
>     
>         # Ambiguous list of pseudos.
>         with pytest.raises(BasicAbinitInput.Error):
> >           BasicAbinitInput(si_structure, pseudos=abiref_files("14si.pspnc", "14si.4.hgh"))
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:132: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:759: in __init__
>     self._pseudos = PseudoTable.as_table(pseudos).get_pseudos_for_structure(self.structure)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1523: in as_table
>     return items if isinstance(items, cls) else cls(items)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37fda08>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestMultiDataset.test_api ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37fd1c8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestMultiDataset testMethod=test_api>
> 
>     def test_api(self):
>         """Testing BasicMultiDataset API."""
>         structure = Structure.from_file(abiref_file("si.cif"))
>         pseudo = abiref_file("14si.pspnc")
>         pseudo_dir = os.path.dirname(pseudo)
> >       multi = BasicMultiDataset(structure=structure, pseudos=pseudo)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:179: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37fd1c8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ________________________ TestFactory.test_ebands_input _________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2ca8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_ebands_input>
> 
>     def test_ebands_input(self):
>         """Testing ebands_input factory."""
> >       multi = ebands_input(self.si_structure, self.si_pseudo, kppa=10, ecut=2)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:279: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:351: in ebands_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2 if dos_kppa is None else 2 + len(dos_kppa))
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2ca8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestFactory.test_gs_input ___________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251d558>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_gs_input>
> 
>     def test_gs_input(self):
>         """Testing gs_input factory."""
> >       inp = gs_input(self.si_structure, self.si_pseudo, kppa=10, ecut=10, spin_mode="polarized")
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:271: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:290: in gs_input
>     multi = ebands_input(
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:351: in ebands_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2 if dos_kppa is None else 2 + len(dos_kppa))
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd251d558>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> ___________________ TestFactory.test_ion_ioncell_relax_input ___________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2300>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_inputs.TestFactory testMethod=test_ion_ioncell_relax_input>
> 
>     def test_ion_ioncell_relax_input(self):
>         """Testing ion_ioncell_relax_input factory."""
> >       multi = ion_ioncell_relax_input(self.si_structure, self.si_pseudo, kppa=10, ecut=2)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_inputs.py:320: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:442: in ion_ioncell_relax_input
>     multi = BasicMultiDataset(structure, pseudos, ndtset=2)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/inputs.py:1071: in __init__
>     pseudos = PseudoTable(pseudo_paths)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2300>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ----------------------------- Captured stderr call -----------------------------
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/core/structure.py:3176: EncodingWarning: We strongly encourage explicit `encoding`, and we would use UTF-8 by default as per PEP 686
>   with zopen(filename, mode="rt", errors="replace") as file:
> __________________________ TestPseudo.test_nc_pseudos __________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd26a2270>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_nc_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd26a2270>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ______________________ TestPseudo.test_oncvpsp_pseudo_fr _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2708>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_oncvpsp_pseudo_fr>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd37c2708>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ______________________ TestPseudo.test_oncvpsp_pseudo_sr _______________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dfda98>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_oncvpsp_pseudo_sr>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dfda98>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> _________________________ TestPseudo.test_paw_pseudos __________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dfd5e8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_paw_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dfd5e8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ________________________ TestPseudo.test_pawxml_pseudos ________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dcd390>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudo testMethod=test_pawxml_pseudos>
> 
>     def setUp(self):
>         nc_pseudo_fnames = defaultdict(list)
>         nc_pseudo_fnames["Si"] = [f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")]
>     
>         self.nc_pseudos = defaultdict(list)
>         self.paw_pseudos = defaultdict(list)
>     
>         for symbol, file_names in nc_pseudo_fnames.items():
>             for file_name in file_names:
>                 _root, ext = os.path.splitext(file_name)
> >               pseudo = Pseudo.from_file(file_name)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:28: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dcd390>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> _________________________ TestPseudoTable.test_methods _________________________
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dcd9d8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
> >           header = parsers[ppdesc.name](path, ppdesc)
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1141: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:840: in tm_header
>     projectors[int(d["l"])] = d
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = {}, key = 'l'
> 
>     def __getitem__(self, key):
>         if key in self.data:
>             return self.data[key]
>         if hasattr(self.__class__, "__missing__"):
>             return self.__class__.__missing__(self, key)
> >       raise KeyError(key)
> E       KeyError: 'l'
> 
> /usr/lib/python3.12/collections/__init__.py:1135: KeyError
> 
> During handling of the above exception, another exception occurred:
> 
> self = <abinit.test_pseudos.TestPseudoTable testMethod=test_methods>
> 
>     def test_methods(self):
>         """Test PseudoTable methods."""
> >       table = PseudoTable([f"{TEST_DIR}/{file}" for file in ("14si.pspnc", "14si.4.hgh", "14-Si.LDA.fhi")])
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/tests/io/abinit/test_pseudos.py:200: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1585: in __init__
>     pseudo = Pseudo.from_file(pseudo)
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:110: in from_file
>     return PseudoParser().parse(filename)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <pymatgen.io.abinit.pseudos.PseudoParser object at 0xd2dcd9d8>
> filename = '/usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc'
> 
>     def parse(self, filename):
>         """
>         Read and parse a pseudopotential file. Main entry point for client code.
>     
>         Returns:
>             pseudopotential object or None if filename is not a valid pseudopotential file.
>         """
>         path = os.path.abspath(filename)
>     
>         # Only PAW supports XML at present.
>         if filename.endswith(".xml"):
>             return PawXmlSetup(path)
>     
>         ppdesc = self.read_ppdesc(path)
>     
>         if ppdesc is None:
>             logger.critical(f"Cannot find ppdesc in {path}")
>             return None
>     
>         psp_type = ppdesc.psp_type
>     
>         parsers = {
>             "FHI": NcAbinitHeader.fhi_header,
>             "GTH": NcAbinitHeader.gth_header,
>             "TM": NcAbinitHeader.tm_header,
>             "Teter": NcAbinitHeader.tm_header,
>             "HGH": NcAbinitHeader.hgh_header,
>             "HGHK": NcAbinitHeader.hgh_header,
>             "ONCVPSP": NcAbinitHeader.oncvpsp_header,
>             "PAW_abinit_text": PawAbinitHeader.paw_header,
>         }
>     
>         try:
>             header = parsers[ppdesc.name](path, ppdesc)
>         except Exception:
>             str_traceback = "\n".join((traceback.format_exc(), str(sys.exc_info()[0])))
>     
> >           raise self.Error(f"{path}:\n{str_traceback}")
> E           pymatgen.io.abinit.pseudos.PseudoParseError: /usr/share/doc/pymatgen-test-files/examples/files/io/abinit/14si.pspnc:
> E           Traceback (most recent call last):
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 1141, in parse
> E               header = parsers[ppdesc.name](path, ppdesc)
> E                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> E             File "/<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py", line 840, in tm_header
> E               projectors[int(d["l"])] = d
> E                              ~^^^^^
> E             File "/usr/lib/python3.12/collections/__init__.py", line 1135, in __getitem__
> E               raise KeyError(key)
> E           KeyError: 'l'
> E           
> E           <class 'KeyError'>
> 
> /<<PKGBUILDDIR>>/.pybuild/test_python3.12/pymatgen/io/abinit/pseudos.py:1145: PseudoParseError
> ============================= slowest 30 durations =============================
> 67.42s call     .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py::TestCubicSupercellTransformation::test_apply_transformation_orthorhombic_supercell
> 43.37s call     .pybuild/test_python3.12/tests/analysis/test_fragmenter.py::TestFragmentMolecule::test_pc_then_ec_depth_10
> 40.31s call     .pybuild/test_python3.12/tests/symmetry/test_kpath_lm.py::TestKPathLatimerMunro::test_kpath_generation
> 26.57s call     .pybuild/test_python3.12/tests/io/vasp/test_optics.py::TestVasprun::test_optics
> 25.66s call     .pybuild/test_python3.12/tests/core/test_surface.py::TestSlab::test_symmetrization
> 23.67s call     .pybuild/test_python3.12/tests/analysis/elasticity/test_elastic.py::TestElasticTensorExpansion::test_get_yield_stress
> 23.01s call     .pybuild/test_python3.12/tests/core/test_surface.py::TestSlabGenerator::test_non_stoichiometric_symmetrized_slab
> 21.99s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_acoustic_debye_temp
> 20.50s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_as_from_dict
> 19.83s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_frequencies
> 19.67s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_average_gruneisen
> 19.62s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_thermal_conductivity_slack
> 19.58s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_gruneisen
> 19.51s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_phdos
> 19.48s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_tdos
> 19.35s call     .pybuild/test_python3.12/tests/io/test_phonopy.py::TestGruneisen::test_gruneisen_parameter
> 19.30s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_debye_temp_phonopy
> 19.17s call     .pybuild/test_python3.12/tests/phonon/test_gruneisen.py::TestGruneisenParameter::test_multi
> 18.84s call     .pybuild/test_python3.12/tests/symmetry/test_kpath_sc.py::TestBandStructureSC::test_kpath_generation
> 18.70s call     .pybuild/test_python3.12/tests/analysis/test_structure_analyzer.py::TestMiscFunction::test_average_coordination_number
> 16.05s call     .pybuild/test_python3.12/tests/symmetry/test_groups.py::TestSpaceGroup::test_order_symm_ops
> 15.24s call     .pybuild/test_python3.12/tests/io/vasp/test_outputs.py::TestVasprun::test_runtype
> 14.87s call     .pybuild/test_python3.12/tests/core/test_surface.py::TestSlab::test_get_symmetric_sites
> 14.49s call     .pybuild/test_python3.12/tests/core/test_surface.py::TestMillerIndexFinder::test_generate_all_slabs
> 14.29s call     .pybuild/test_python3.12/tests/entries/test_entry_tools.py::TestEntrySet::test_ground_states
> 13.24s call     .pybuild/test_python3.12/tests/core/test_trajectory.py::TestTrajectory::test_extend
> 12.68s call     .pybuild/test_python3.12/tests/core/test_trajectory.py::TestTrajectory::test_xdatcar_write
> 12.48s call     .pybuild/test_python3.12/tests/analysis/test_prototypes.py::TestAflowPrototypeMatcher::test_prototype_matching
> 11.93s setup    .pybuild/test_python3.12/tests/io/lammps/test_data.py::TestCombinedData::test_as_lammpsdata
> 11.64s call     .pybuild/test_python3.12/tests/symmetry/test_groups.py::TestSpaceGroup::test_point_group_is_set
> =========================== short test summary info ============================
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap2.py:27: No boltztrap2
> SKIPPED [1] .pybuild/test_python3.12/tests/ext/test_matproj.py:44: MP API is down
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_openff.py:25: could not import 'openff.toolkit': No module named 'openff'
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_shengbte.py:9: could not import 'f90nml': No module named 'f90nml'
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_zeopp.py:20: zeo not installed
> SKIPPED [1] .pybuild/test_python3.12/tests/symmetry/test_kpath_hin.py:11: seekpath not installed
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py:174: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/chemenv/coordination_environments/test_coordination_geometry_finder.py:169: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/magnetism/test_analyzer.py:263: enumlib not present
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/test_graphs.py:347: graphviz executables not present
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/test_local_env.py:1355: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/test_molecule_structure_comparator.py:144: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.12/tests/analysis/test_reaction_calculator.py:334: hash test requires 64 bits
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_bader_caller.py:119: bader executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_bader_caller.py:84: bader executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_bader_caller.py:66: bader executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_bader_caller.py:134: bader executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_critic2_caller.py:26: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_critic2_caller.py:62: critic2 executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_enumlib_caller.py:92: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_enumlib_caller.py:80: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_enumlib_caller.py:122: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:41: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:74: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:181: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:148: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:236: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:272: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:114: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:139: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:144: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:135: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:120: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:130: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:126: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:283: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:212: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:320: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:332: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:315: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:356: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:345: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:352: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:363: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:359: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:383: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:373: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:379: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_gulp_caller.py:386: gulp not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:67: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:101: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:28: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:51: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:59: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:77: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_mcsqs_caller.py:89: mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/command_line/test_vampire_caller.py:34: vampire executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:712: Only run this in CI tests
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:105: enumlib or mcsqs executable not present
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1832: chgnet is failing with Numpy 1, see #3992
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1904: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:985: PMG_MAPI_KEY environment variable not set or MP API is down. This is also the case in a PR.
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1807: chgnet is failing with Numpy 1, see #3992
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1916: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1927: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:1936: TODO: #3958 wait for matgl resolve of torch dependency
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:2567: could not import 'tblite': No module named 'tblite'
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_structure.py:2575: Pytorch and TBLite clash. https://github.com/materialsproject/pymatgen/pull/3060
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_surface.py:700: This test relies on neighbor orders and is hard coded. Disable temporarily
> SKIPPED [1] .pybuild/test_python3.12/tests/core/test_xcfunc.py:56: TODO:
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:252: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:219: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:239: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:167: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:197: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:230: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:99: No FDINT
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:121: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:201: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:130: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:114: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:84: No FDINT
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:205: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:139: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:155: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/electronic_structure/test_boltztrap.py:41: No x_trans.
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_cif.py:292: non-free PF*.cif test files are not available
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_jarvis.py:12: JARVIS-tools not loaded.
> SKIPPED [1] .pybuild/test_python3.12/tests/io/test_jarvis.py:20: JARVIS-tools not loaded.
> SKIPPED [1] .pybuild/test_python3.12/tests/io/vasp/test_inputs.py:1469: TODO: need someone to fix this
> SKIPPED [1] .pybuild/test_python3.12/tests/symmetry/test_kpaths.py:21: No seek path present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:97: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:158: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:188: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:203: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:229: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:241: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:356: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:296: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:334: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:326: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:344: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:484: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:532: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:541: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:599: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:609: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:630: mcsqs not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:662: icet not installed.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:648: icet not installed.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:673: icet not installed.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_advanced_transformations.py:866: hiphive not present
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_site_transformations.py:213: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_standard_transformations.py:227: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_standard_transformations.py:244: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_standard_transformations.py:262: enum_lib not present.
> SKIPPED [1] .pybuild/test_python3.12/tests/transformations/test_standard_transformations.py:268: enum_lib not present.
> == 13 failed, 2443 passed, 117 skipped, 386 deselected in 1519.78s (0:25:19) ===
> ..tot conformations = 3
> ..tot confs tested = 3
> ..below energy threshold = 3
> make[1]: *** [debian/rules:108: override_dh_auto_test] Error 1


The full build log is available from:
http://qa-logs.debian.net/2024/12/28/pymatgen_2024.10.29+dfsg1-4_unstable-i386.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20241228;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20241228&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects

If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.



More information about the Debichem-devel mailing list