Module Overview
You've written your code using OOP; it runs and works, it's in a package, and you can even run it in a reproducible container. You're done, right? Nope!
To effectively share your code in a way that will be lastingly useful, you also need to test and document. These are not just "overhead" tasks - they are a core part of software engineering, and code that lacks these properties is essentially impossible to maintain or build on in the long term.
Last but not least, you need to choose an appropriate license for your code and make sure you understand the licenses of your dependencies and the ecosystem in general. You don't need a law degree, but there are significant differences between licenses you should understand, even ones that all count as "open source."
Learning Objectives
1. Understand the purpose of software testing, and be able to write basic unit tests
- Understanding test-driven development principles
- Writing effective unit tests
- Implementing test cases
- Using testing frameworks
- Validating code functionality
- Debugging with tests
2. Read and write quality comments and READMEs
- Writing clear documentation
- Creating comprehensive READMEs
- Adding meaningful comments
- Following documentation standards
- Organizing documentation structure
- Maintaining documentation clarity
3. Recognize major open-source licenses and their significance for personal and professional use
- Understanding license types
- Evaluating license restrictions
- Choosing appropriate licenses
- Managing license compliance
- Implementing licensing requirements
- Protecting intellectual property
Guided Project
In this guided project, we'll learn how to write effective tests, documentation, and choose appropriate licenses for our code:
Guided Project File:
guided-project.md
Module Assignment
For this module's assignment, you will need to complete the following tasks:
- Add at least three basic pytest functions to bloomdata
- Make sure there are docstrings wherever PEP 8 demands
- Write a high-quality README.md that is both skimmable and has appropriate examples/details/links for someone who wants to understand your code
- Pick a license for your package, and add it in a LICENSE file.
Assignment File:
assignment.md