arrhenius.scaling.traits(): previously returned NULL when no temperature covariates were found, crashing query.trait.data() with argument is of length zero. The function now drops rows that lack a measurement temperature covariate and emits a logger.warn() with the row count. If no observations have any temperature covariate, an empty data frame (zero rows, same columns) is returned. The missing.temp argument is retained for backward compatibility but is no longer applied.
filter_sunleaf_traits(): returned NULL instead of data unchanged when no canopy_layer covariate was found. Now returns the input data frame unmodified in that case, consistent with the more standardised measurement protocol for sun-leaf traits.
query.trait.data(): the warning() call for missing trait data was placed after return(NA) and therefore never fired. Moved before the return and changed to logger.warn() for consistency with the rest of the codebase.
Refactored convert.input() internals into smaller, and hopefully more testable, chunks. No user-visible changes expected.
Roxygen cleanup.
dbfile.input.insert continued instead of returning earlystamp_started and stamp_finished, used to record the start
and end time of model runs in the database. Both used to live in
PEcAn.remote and were moved to resolve a circular dependency.convert_input, used to convert between formats while reusing
existing files where possible. It previously lived in package PEcAn.utils,
but was moved here to simplify dependencies. (#3026; @nanu1605)get.trait.data gains new argument write (with default FALSE), passed on to get.trait.data.pft (@Aariq, #3065).rename_jags_columns() has been removed from PEcAn.DB but is now available
in package PEcAn.MA (#2805, @moki1202).