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 Noneguard inread_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', ...)rejectingn_splits,train_fraction, andenforced_structures, and formode='kfold'/'bagging'requiringstructures. - Add tests for malformed
nep.txt/nep.restartfiles: blank lines, and invalid entry counts on thezbl,cutoff,basis_size,n_max, andl_maxheader lines. - Add a test for an invalid
atomic_vcomponent count inget_parity_data. - Add a test for
batch_predict_propertieshandling a nonzero exit code from thenepexecutable.