TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/characat0/mlops-fundamentals-homework/llms.txt
Use this file to discover all available pages before exploring further.
.github/workflows/ci.yml pipeline runs automatically on every push to a pull request targeting the main branch. It validates your implementation against the full test suite and linter before any review happens — a green checkmark is worth 1 grading point and signals that your code satisfies both style and correctness requirements.
Pipeline Overview
The pipeline defines a single job,test, with five sequential steps:
| Step | Tool | What it does |
|---|---|---|
| Checkout | actions/checkout@v3 | Clones the repository into the runner |
| Set up Python | actions/setup-python@v4 | Installs Python 3.9 on ubuntu-latest |
| Install dependencies | pip | Installs flake8, pytest, and all three requirements.txt files |
| Run Linter | flake8 | Checks the entire repository against .flake8 rules |
| Run Tests | pytest | Runs data_pipeline/tests then model_serving/tests |
Full ci.yml
Getting a Green Checkmark
Fork the repo on GitHub
Navigate to the repository on GitHub and click Fork to create your own copy under your account.
Implement all TODOs
Fill in every
# TODO block in the source files — data_pipeline/src/load.py, data_pipeline/src/process.py, model_serving/app/main.py, and drift_monitoring/src/analyze_drift.py.Run flake8 locally
.flake8 config allows lines up to 100 characters and ignores E203.Push and open a Pull Request
Push your branch and open a PR targeting
main on the upstream repository.Troubleshooting
Flake8 fails with E501 line too long
Flake8 fails with E501 line too long
The
.flake8 config sets max-line-length = 100. For lines that genuinely cannot be shortened (e.g. long log strings or URLs), append # noqa: E501 to suppress the warning on that line. For most cases, break the line using implicit string continuation or a backslash:pytest fails with ImportError
pytest fails with ImportError
Each test file uses relative imports (
from src.load import load_data). Run pytest from the module root, or set PYTHONPATH explicitly:CI passes locally but fails on GitHub
CI passes locally but fails on GitHub
The most common cause is uncommitted files. Check your git status before pushing:Also verify that your local Python version matches the CI runner (
3.9) — some syntax or library behaviour differs between minor versions.