Skip to content

Revise "Testing" and "Software Maturity" standards #35

@jtniehof

Description

@jtniehof

(Broader context at the end).

This issue is to discuss a potential PHEP to replace the "testing" and "software maturity" portions of the existing PyHC standards: to lay out what looks like the current standards, and allow for suggested changes.

I am lumping these together as potentially related. I am not sure what the appropriate division of these existing standards is. I suggest we focus the conversation in this issue on scoping: what standards belong together in a future document? Then we can have new issues to discuss the actual standards.

The relevant standards are:

    1. Packaging: All code must be organized and provided as part of installable Python packages.
    1. Releases: Projects should strive to have consistent and stable releases. Those releases should be made available through PyPI and Conda. Code that is not yet stable must have a release number that is less than 1.0 (e.g. 0.x). Packages should consider using semantic versioning.
    1. Operating System Support: Packages must strive to support all major operating systems (e.g., OS X, Linux, Windows).
    1. Version control: All code must use version control. It is strongly recommended that projects make use of a distributed version control system (e.g., git).
    1. Coding Style: Projects must adopt the basic style recommendations of PEP 8 and static analysis tools should be used to identify deviations from the basic style recommendations (e.g. pylint, flake8, pycodestyle).
    1. Testing: Stable packages must provide unit tests of individual components (e.g. functions, classes) as well as integration tests that test the interaction between components that covers most of the code. Testing coverage should be measured. Automated testing is recommended, in which tests are run before any code is merged. System[link] and acceptance[link] testing are also recommended.
    1. Dependencies: Projects should import the minimum number of packages necessary. Adding new dependencies should be a considered decision.
    1. Binaries: Binary files should be added to the package repository only when necessary in order to keep packages as light as possible. Jupyter notebooks can be binary files and should not be committed to the package repository but can be provided in other repositories.

(bullet list to fight the renumbering, apologies for roman numerals and suggestions welcome)

I am not seeing any relevant suggested updates in #16.

Standard 10 is somewhat in tension with Standard 12 (duplication of effort); 12 is discussed in #33.

Broader context: I envision a process of "patriating the constitution" where we revisit the existing standards documents and incorporate them into PHEPs, potentially updated, that are explicitly noted as replacing the relevant standards. We probably do not want one PHEP per standard. Our previous grouping in the review guidelines seems a good start.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions