karr_lab_build_utils documentation¶
This package performs several aspects of the Karr Lab’s build system:
- Versioning with Git and GitHub
- Creates new Git repositories with the proper directory structure and files for our build system
- Testing code with Python 2 and 3
- Uses pytest or nose test runners
- Uses coverage or instrumental for statement, branch, or multiple condition coverage analysis
- Runs the tests locally or using a Docker image or the CircleCI local executor
- Static code analysis with Pylint
- Statistically analyzes code using Pylint
- Documentation with Sphinx
- Generates documentation using Sphinx
- Dependency management
- Installs and upgrades all of the requirements of a package
- Identifies missing and unused dependencies
- Compiles downstream package dependencies
- Visualizes downstream packages dependencies
- Checks for cycles in package dependencies
- Continuous integration with CircleCI
- Creates CircleCI builds for packages
- Gets, sets, and deletes environment variables
- Triggers CircleCI to test downstream dependencies
- Manages passwords used in CircleCI
- Email notifications
- Test analysis with our test history server
- Uploads test reports to our test history server
- Coverage analysis with Coveralls
- Uploads coverage reports to Coveralls
- Coverage analysis and static code analysis with Code Climate
- Create Code Climate builds for packages
- Uploads coverage reports to Code Climate
- Distribution with PyPI
- Uploads packages to PyPI
The build system is primarily designed for:
- Code that is implemented with Python 2/3
- Tests that can be run with pytest
- Code that is documented with Sphinx in Napolean/Google style
- Code that is versioned with Git/GitHub
- Builds that are run on CircleCI
- Coverage reports that are hosted on Coveralls and Code Climate
- Documentation that is hosted on Read the Docs
Contents¶
- 1. Installation
- 2. Tutorial for WC modeling software developers
- 2.1. Creating a new package
- 2.2. Developing a package
- 2.3. Managing dependencies of packages
- 2.4. Configuring packages
- 2.5. Testing with pytest, coverage, instrumental, Docker, and CircleCI
- 2.6. Configuring tests of downstream dependencies
- 2.7. Configuring the static analyses run by the build system
- 2.8. Configuring build email notifications
- 2.9. Documenting code with Sphinx
- 3. Tutorial for build administrators
- 4. About