Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
f4127a7
update python version
michabirklbauer Jun 4, 2026
e215648
add ty type checking
michabirklbauer Jun 4, 2026
c8e7a3e
redo gui dir
michabirklbauer Jun 4, 2026
665375e
update dependencies
michabirklbauer Jun 4, 2026
c8a0cd0
update to min py3.12
michabirklbauer Jun 4, 2026
78f8389
update example data
michabirklbauer Jun 4, 2026
c50a2a0
update example
michabirklbauer Jun 4, 2026
08d1def
update workflows
michabirklbauer Jun 4, 2026
0d7c783
update gui
michabirklbauer Jun 4, 2026
c34f994
add back attribution
michabirklbauer Jun 4, 2026
426fd3c
update readme
michabirklbauer Jun 4, 2026
1a11ae6
add gui test
michabirklbauer Jun 4, 2026
262625a
update workflow
michabirklbauer Jun 5, 2026
157f958
update readme
michabirklbauer Jun 5, 2026
e9fc496
update readme
michabirklbauer Jun 5, 2026
5f1d51d
update gitignore
michabirklbauer Jun 5, 2026
6e69be5
update readme
michabirklbauer Jun 5, 2026
fa48edd
add branch protection
michabirklbauer Jun 5, 2026
abca88f
upgrade actions
michabirklbauer Jun 5, 2026
84e1d0f
update sphinx index
michabirklbauer Jun 5, 2026
2bed551
update sphinx config
michabirklbauer Jun 5, 2026
7a2265e
change sphinx files
michabirklbauer Jun 5, 2026
329f3fc
update dockerfile
michabirklbauer Jun 5, 2026
9e04765
update sphinx index
michabirklbauer Jun 5, 2026
b5ff78a
ignore sphinx autogen files
michabirklbauer Jun 5, 2026
3253a16
ignore sphinx output
michabirklbauer Jun 5, 2026
4859fb7
update sphinx config file
michabirklbauer Jun 5, 2026
e158d45
update gh pages build workflow
michabirklbauer Jun 5, 2026
bf68809
update documentation
michabirklbauer Jun 5, 2026
1d81310
finalize docs
michabirklbauer Jun 5, 2026
2b96ab7
update version
michabirklbauer Jun 5, 2026
9de6cb9
update tests
michabirklbauer Jun 5, 2026
f66509b
update pyright config
michabirklbauer Jun 5, 2026
093f57a
add pyright ignore statements
michabirklbauer Jun 5, 2026
50d3340
fix dockerfile
michabirklbauer Jun 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/branch-protection.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Master Branch Protection

on:
pull_request:
branches: [ master ]

jobs:
check-branch:
runs-on: ubuntu-latest
steps:
- name: Check that PR comes from develop
run: |
if [[ ${GITHUB_HEAD_REF} != develop ]];
then
echo "Error: Pull request must come from 'develop' branch!"
exit 1
fi
2 changes: 1 addition & 1 deletion .github/workflows/docker-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v5
- name: Build the Docker image
run: |
echo ${{ secrets.DOCKER_PASSWORD }} | docker login --username YOURUSERNAME --password-stdin
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,28 +30,28 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Set up Python 3.12
uses: actions/setup-python@v5
uses: actions/configure-pages@v6
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.12'
python-version: '3.14'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install sphinx pydata-sphinx-theme myst-parser sphinx-copybutton
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Build with Sphinx
run: |
sphinx-apidoc -f -o docs .
sphinx-apidoc -f -o docs . app.py
sphinx-build -b html docs html
- name: Add .nojekyll
run: echo "" > html/.nojekyll
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
uses: actions/upload-pages-artifact@v5
with:
path: './html'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
uses: actions/deploy-pages@v5
8 changes: 4 additions & 4 deletions .github/workflows/pyright.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ jobs:
pyright:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
- uses: actions/checkout@v5
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.14'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,12 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
python-version: ['3.12', '3.13', '3.14']

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/ruff.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.11
uses: actions/setup-python@v5
- uses: actions/checkout@v5
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.11'
python-version: '3.14'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
Expand Down
26 changes: 26 additions & 0 deletions .github/workflows/ty.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Type-checking with ty

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:

jobs:
ty:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up Python 3.14
uses: actions/setup-python@v6
with:
python-version: '3.14'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install ty
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Type-check with ty
run: |
ty check --config-file ty.toml
99 changes: 82 additions & 17 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*.py[codz]
*$py.class

# C extensions
Expand All @@ -27,8 +27,8 @@ share/python-wheels/
MANIFEST

# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

Expand All @@ -46,7 +46,8 @@ htmlcov/
nosetests.xml
coverage.xml
*.cover
*.py,cover
*.py.cover
*.lcov
.hypothesis/
.pytest_cache/
cover/
Expand Down Expand Up @@ -92,35 +93,65 @@ ipython_config.py
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# Pipfile.lock

# UV
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# uv.lock

# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# poetry.lock
# poetry.toml

# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
# pdm.lock
# pdm.toml
.pdm-python
.pdm-build/

# pixi
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
# pixi.lock
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
# in the .venv directory. It is recommended not to include this directory in version control.
.pixi/*
!.pixi/config.toml

# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
__pypackages__/

# Celery stuff
celerybeat-schedule
celerybeat-schedule*
celerybeat.pid

# Redis
*.rdb
*.aof
*.pid

# RabbitMQ
mnesia/
rabbitmq/
rabbitmq-data/

# ActiveMQ
activemq-data/

# SageMath parsed files
*.sage.py

# Environments
.env
.envrc
.venv
env/
venv/
Expand Down Expand Up @@ -153,8 +184,42 @@ dmypy.json
cython_debug/

# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
# .idea/

# Abstra
# Abstra is an AI-powered process automation framework.
# Ignore directories containing user credentials, local state, and settings.
# Learn more at https://abstra.io/docs
.abstra/

# Visual Studio Code
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
# and can be added to the global gitignore or merged into this file. However, if you prefer,
# you could uncomment the following to ignore the entire vscode folder
# .vscode/
# Temporary file for partial code execution
tempCodeRunnerFile.py

# Ruff stuff:
.ruff_cache/

# PyPI configuration file
.pypirc

# Marimo
marimo/_static/
marimo/_lsp/
__marimo__/

# Streamlit
.streamlit/secrets.toml

# Sphinx auto-generated files
/html
docs/modules.rst
docs/main.rst
2 changes: 1 addition & 1 deletion .python-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
3.12
3.14
2 changes: 1 addition & 1 deletion gui/.streamlit/config.toml → .streamlit/config.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[theme]
base="light"
base="dark"
[server]
maxUploadSize=2048
17 changes: 8 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@
# author: YOUR NAME
# version: 1.0.0

FROM python:3.12.0
FROM python:3.14

LABEL maintainer="you@yourname.com"

RUN mkdir app
RUN mkdir app/.streamlit
COPY requirements.txt app
COPY main.py app
COPY gui/streamlit_app.py app
COPY gui/.streamlit/config.toml app/.streamlit
COPY ./ app/
WORKDIR app
RUN pip install -r requirements.txt
RUN pip install streamlit

CMD ["streamlit", "run", "streamlit_app.py"]
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install --no-cache-dir uv
RUN uv sync --no-cache

CMD ["uv", "run", "streamlit", "run", "app.py"]
Loading