Close remaining coverage gaps

Close remaining coverage gaps in nep/io.py, nep/model.py, nep/training_factory.py, and tools/prediction.py.

  • Remove two unreachable defensive branches: the ts is not None guard in read_structures (target data is always present for virial/stress/polarizability) and the integer-divisibility check in _sort_descriptor_parameters (guaranteed by callers' upstream parameter-count validation).
  • Add tests for setup_training(mode='fixed', ...) rejecting n_splits, train_fraction, and enforced_structures, and for mode='kfold'/'bagging' requiring structures.
  • Add tests for malformed nep.txt/nep.restart files: blank lines, and invalid entry counts on the zbl, cutoff, basis_size, n_max, and l_max header lines.
  • Add a test for an invalid atomic_v component count in get_parity_data.
  • Add a test for batch_predict_properties handling a nonzero exit code from the nep executable.

Merge request reports

Loading