audit-labs/tutorials

Learn how to perform data analysis, scripting, automation, and more!

clone: git clone https://gitbay.org/audit-labs/tutorials.git

3f27f26ef6c390bddb6e32e17419071b59950431

signed_unknown_key

author: christian <hello@cleberg.net> · 2026-01-27T22:29:21Z
committer: <noreply@github.com>

Add environment, CI, CONTRIBUTING and CODEOFCONDUCT
 .github/workflows/run-notebooks.yml | 39 +++++++++++++++++++++++++++++++++++++
 CODEOFCONDUCT.md                    | 14 +++++++++++++
 CONTRIBUTING.md                     | 19 ++++++++++++++++++
 environment.yml                     | 17 ++++++++++++++++
 requirements.txt                    | 10 ++++++++++
 5 files changed, 99 insertions(+)

diff --git a/.github/workflows/run-notebooks.yml b/.github/workflows/run-notebooks.yml
new file mode 100644
index 0000000..a70752e
--- /dev/null
+++ b/.github/workflows/run-notebooks.yml
@@ -0,0 +1,39 @@
+name: Execute Notebooks
+
+on:
+  push:
+    branches: [ main ]
+  pull_request:
+    branches: [ main ]
+  workflow_dispatch:
+
+jobs:
+  run-notebooks:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+
+      - name: Set up Python
+        uses: actions/setup-python@v4
+        with:
+          python-version: '3.10'
+
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          pip install -r requirements.txt
+
+      - name: Execute notebooks
+        run: |
+          mkdir -p executed
+          for nb in $(git ls-files '*.ipynb'); do
+            echo "Executing $nb"
+            jupyter nbconvert --to notebook --inplace --execute "$nb" --ExecutePreprocessor.timeout=600
+            jupyter nbconvert --to html "$nb" --output "executed/$(basename "$nb" .ipynb).html"
+          done
+
+      - name: Upload executed notebooks (HTML)
+        uses: actions/upload-artifact@v4
+        with:
+          name: executed-notebooks
+          path: executed/
\ No newline at end of file
diff --git a/CODEOFCONDUCT.md b/CODEOFCONDUCT.md
new file mode 100644
index 0000000..8f4aa28
--- /dev/null
+++ b/CODEOFCONDUCT.md
@@ -0,0 +1,14 @@
+# Contributor Covenant Code of Conduct
+
+This project adheres to the Contributor Covenant code of conduct. By participating, you agree to respect the community and follow these standards.
+
+Expected behavior
+- Be respectful and considerate in all communications.
+- Use inclusive language and be mindful of others' perspectives.
+- Report unacceptable behavior to the maintainers at hello@cleberg.net (or open an issue in this repository).
+
+Unacceptable behavior
+- Harassment or discriminatory language.
+- Personal attacks, threats, or sustained disruption.
+
+For a full version, you can adopt the complete Contributor Covenant (https://www.contributor-covenant.org/). If you want, I can include the full text and additional contact information.
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..f93729c
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,19 @@
+# Contributing to audit-labs/tutorials
+
+Thanks for your interest in contributing! Contributions can include new tutorial notebooks, improvements to existing notebooks, documentation, CI improvements, and environment files.
+
+Recommended workflow
+1. Fork the repository.
+2. Create a feature branch: `git checkout -b feature/your-feature`.
+3. Make your changes (keep each notebook focused and add explanatory markdown).
+4. If adding dependencies, update `environment.yml` and `requirements.txt`.
+5. Run notebooks locally and ensure they execute (or add tests / CI changes).
+6. Commit with descriptive messages and open a pull request describing your changes.
+
+Coding / notebook guidelines
+- Keep notebooks self-contained and add a top-level markdown header explaining purpose.
+- Avoid embedding large, proprietary datasets; include links or small sample data.
+- Use `nbstripout` or `pre-commit` if you want to strip outputs before committing (optional).
+- When changing dependencies, mention version rationale in the PR description.
+
+If you're unsure about scope, open an issue first to discuss the plan.
\ No newline at end of file
diff --git a/environment.yml b/environment.yml
new file mode 100644
index 0000000..14382fa
--- /dev/null
+++ b/environment.yml
@@ -0,0 +1,17 @@
+name: audit-tutorials
+channels:
+  - conda-forge
+dependencies:
+  - python=3.10
+  - pip
+  - pandas>=2.3.3
+  - numpy>=1.26
+  - matplotlib>=3.10
+  - seaborn>=0.13
+  - openpyxl
+  - jupyterlab
+  - ipykernel
+  - nbconvert
+  - nbclient
+  - pip:
+    - papermill
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..6e4ac1e
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,10 @@
+pandas>=2.3.3
+numpy>=1.26
+matplotlib>=3.10
+seaborn>=0.13
+openpyxl
+jupyterlab
+ipykernel
+nbconvert
+nbclient
+papermill
\ No newline at end of file