diff --git a/.github/workflows/lint_nb.yml b/.github/workflows/lint_nb.yml new file mode 100644 index 0000000..a10fe83 --- /dev/null +++ b/.github/workflows/lint_nb.yml @@ -0,0 +1,46 @@ +name: Linting Notebooks with Black + +on: + push: + branches: + - ci # Change this to your repository's main branch + pull_request: + branches: + - ci +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: "3.12" # Change this to your desired Python version + + - name: Install dependencies + run: | + pip install black==23.1.0 nbformat black[jupyter] + continue-on-error: false + + - name: Find notebooks + id: find-notebooks + run: | + find . -name "*.ipynb" > notebooks.txt + continue-on-error: true + + - name: Lint notebooks + run: | + cat notebooks.txt | xargs -I {} black --line-length 88 --check {} + continue-on-error: true + + - name: Check lint results + run: | + if grep -q "would reformat" notebooks.txt; then + echo "Linting issues found. Run 'black' to auto-format the notebooks." + exit 1 + else + echo "All notebooks are properly formatted." + fi \ No newline at end of file diff --git a/.github/workflows/run_nb.yml b/.github/workflows/run_nb.yml new file mode 100644 index 0000000..e63bdfc --- /dev/null +++ b/.github/workflows/run_nb.yml @@ -0,0 +1,60 @@ +name: Run Notebooks + +on: + push: + branches: + - ci # Change this to your repository's main branch + pull_request: + branches: + - ci + schedule: + - cron: "0 0 * * 0" # Run every Sunday at midnight UTC (4 week interval) + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + # Testing matrix by printing the current Python version: + - name: Display Python version + run: python -c "import sys; print(sys.version)" + + - name: Install dependencies + run: pip install jupyter nbconvert + - run: pip install -r requirements.txt + + - name: Find notebooks + id: find-notebooks + run: | + find . -name "*.ipynb" > notebooks.txt + cat notebooks.txt + shell: bash + + - name: Execute notebooks + run: | + cat notebooks.txt | while read -r notebook; do + jupyter nbconvert --to notebook --execute --inplace "$notebook" + done + continue-on-error: false + shell: bash + + - name: Check for errors + run: | + if grep "raise Exception(" *.ipynb; then + echo "Error found in notebook(s)." + exit 1 + else + echo "No errors found in notebooks." + fi + shell: bash \ No newline at end of file