Contribution Guidelines

If you want to contribute to this repository please adhere to the following guidelines

  • Always use black and isort to format your code before committing

  • Check that all license headers are present using python3 scripts/license_headers.py --fix .

  • Python @dataclass and NamedTuple are preferred over dictionaries, which don’t allow for IDE auto-completion and type checking

  • User-exposed classes and methods should be documented in Google-style docstrings that are parsed by sphinx and end up in this documentation

  • Breaking changes should be marked in the message of pull requests:

    • CHECKPOINT BREAKING CHANGE: When the save/restore structure changed incompatibly (check test test_metadataset:TestDataset.test_save_restore_state_train)

    • ITERATION ORDER BREAKING CHANGE: When the order of iterating samples changed, i.e. experiments would not be exactly reproducible (check tests test_dataset:TestDataset.test_current_batch_index_generator, test_dataset:TestDataset.test_current_batch_index, maybe more)

    • API BREAKING CHANGE: When the external programming api changed incompatibly

    • DATASET CONFIG BREAKING CHANGE: When the dataset config (.nv-meta folder) changed incompatibly

    • METADATASET CONFIG BREAKING CHANGE: When the metadataset config changed

  • In a release, all breaking changes except checkpoint lead to a new major version.