Developer documentation

The project follows fairly standard developer practices. Every new feature should be associated with a test, and every PR should be formatted using automated formatter.

Testing

Tests are located in the tests folder of the repository, and are executed using pytest for every commit in every PR.

If a new test requires additional data (input files, schemas, etc.), they can be placed in a folder using the name of the test module (that is, test_drycal.py has its test files in test_drycal folder), or in the common folder for files that may be reused multiple times.

<<<<<<< HEAD Several convenience functions are provided in the utils.py module: ======= Several convencience functions are provided in the utils.py module: >>>>>>> 0bf65e1 (Devdocs v1)

  • datadir, implementing the above mentioned external test data functionality,

  • datagram_from_input, wrapping a simple (dict)-based input for tests into a schema, that is then parsed into a datagram

  • standard_datagram_test, which checks the validity of the returned datagram

  • compare_result_dicts, which compares a reference dictionary in the {"n": float, "s": float, "u": str} format with that in a datagram

Formatting

All files should be formatted by black. Lines containing text fields, including docstrings, should be between 80-88 characters in length. Imports of functions should be absolute, that is including the yadg. prefix.

Documentation

Each parser should be documented with a standalone .rst file in the docs\source folder. This documentation should describe the application and usage of the parser, including the interface exposed via the "parameters" dictionary, as well as which quantities are provided in the "raw" and "derived" entries, and whether any "metadata" are exposed.

Each file type of each parser should be documented as a top-level docstring in the relevant module. If the file is binary, a description of the file structure should be provided in the docstring.