This repository serves as a Python project template for CS-GY 9223 Open Source Development, providing a structured foundation for designing and maintaining fully equipped Python projects. It includes configurations for continuous integration (CircleCI), static analysis (Ruff & Mypy), code formatting, and dependency management using uv.
- Python 3.11 or higher
uvfor Python dependency management
git clone https://github.com/Davina0316/open-source-python.gitcd open-source-pythonpip install uvuv venv --python 3.11.venv\Scripts\activateuv pip install -r requirements.txtTo run the application, use:
uv run python src\calculator_component\main.py
uv run python src\logger_component\main.py
uv run python src\notifier_component\main.pyTo run tests, execute:
pytest --cov=srcThis will run unit tests and generate a coverage report.
To check and auto-fix code style and type errors, run:
ruff check src --fix
mypy srcThis project is set up with CircleCI, which automatically:
- Runs tests (
pytest) - Checks code quality (
ruff,mypy) - Enforces code formatting and linting rules
Any new commits pushed to GitHub will trigger these checks.
Contributions are welcome! We use GitHub for:
- Issue tracking
- Feature requests
- Pull requests
Please use the provided issue templates when submitting:
- Bug reports
- Feature requests
Navigate to .github/ISSUE_TEMPLATE to find the appropriate templates.
Follow these steps to submit a pull request:
- Use the Pull Request Template in
.github/pull_request_template.md. - Provide a clear summary of the changes.
- Explain the motivation behind the update.
- Ensure all tests pass before submission (
pytest --cov=src). - Follow the coding guidelines (
ruff,mypy).
By contributing, you agree that your contributions will be licensed under the project’s license.
This project is licensed under the MIT License - see the LICENSE file for details.
- The
.gitignorefile is configured to ignore Python-specific files, such as__pycache__and thevenvdirectory. - For further details on project structure and development workflow, refer to the documentation in the
docsdirectory.