Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
8b9185f
chore: Add the uv.lock file while updating this project to use uv ins…
gkapfham Aug 20, 2026
9cfb3a2
chore: Update the .github/workflows/build.yml file to use uv instead …
gkapfham Aug 20, 2026
5d6563c
docs: Update the README.md file to reflect the use of uv instead of p…
gkapfham Aug 20, 2026
4dfabcd
chore: Update the pyproject.toml file to reflect the migration to uv …
gkapfham Aug 20, 2026
ab0a651
refactor: Remove the poetry.lock file and then update multiple files …
gkapfham Aug 20, 2026
fcdaac7
refactor: Update the formatting of the error and feedback blocks prod…
gkapfham Aug 20, 2026
0bc541a
refactor: Update the cellveyor/main.py file.
gkapfham Aug 23, 2026
05f6368
chore: Add the starting version of the .rumdl.toml file.
gkapfham Aug 23, 2026
49531f3
chore: Reformat lines in the CODE_OF_CONDUCT.md file.
gkapfham Aug 23, 2026
a4653e6
docs: Make small improvements to the formatting in the README.md file.
gkapfham Aug 23, 2026
e4ee95b
feat: Add many update files and scripts to fix defects in cellveyor a…
gkapfham Aug 23, 2026
ee37992
feat: Add the cellveyor/version.py file to make it easy to internally…
gkapfham Aug 23, 2026
54b2642
test: Add a conftest.py file and then improve the test suite by addin…
gkapfham Aug 23, 2026
9f10a09
docs: Update the README.md file with more details about how to run ea…
gkapfham Aug 23, 2026
9974101
docs: Remove one of the badges and then revise content in introductor…
gkapfham Aug 23, 2026
df1f0ee
fix: Remove an incorrect license link from the README.md file.
gkapfham Aug 23, 2026
3a33b3e
chore: Improve the way that the pyproject.toml file enforces the trac…
gkapfham Aug 23, 2026
809368f
test: Add more test cases to four of the test suite files in the test…
gkapfham Aug 23, 2026
9191277
chore: Add testing on another version of Python and make other small …
gkapfham Aug 24, 2026
6ff8df8
fix: Clarify an incorrect description of a command-line argument in c…
gkapfham Aug 24, 2026
e970ee0
fix: Handle data that is not correctly recorded in the spreadsheet be…
gkapfham Aug 24, 2026
d4ad2ce
chore: Add more details to the pyproject.toml file.
gkapfham Aug 24, 2026
5a4fc8b
docs: Update a detail about un-reported values in the README.md file.
gkapfham Aug 24, 2026
36372e5
test: Add tests to confirm correct handling of un-reported values in …
gkapfham Aug 24, 2026
49cb773
chore: Update the uv.lock file.
gkapfham Aug 24, 2026
2a7caee
chore: Delete the .github/workflows/publish.yml and .mdlrc files.
gkapfham Aug 24, 2026
12849e2
chore: Bump the minimum version of Python to ensure support for trail…
gkapfham Aug 29, 2026
e2a872b
chore: Update the uv.lock file to handle new minimum version of Python.
gkapfham Aug 29, 2026
f6aaff5
chore: Remove the local development dependency on pytest-intentional …
gkapfham Aug 29, 2026
3c131cd
chore: Add the starting version of the AGENTS.md file with basic cust…
gkapfham Aug 29, 2026
0188784
chore: Bump the directtestedfailunder threshold to 100 and add a test…
gkapfham Aug 29, 2026
b4201ca
fix: Update the cellveyor/data.py file to avoid case where an overly …
gkapfham Aug 29, 2026
bae9933
chore: Add a few additional details about direct test coverage to the…
gkapfham Aug 29, 2026
0d1617f
test: Add a test case to the tests/test_data.py file to confirm that …
gkapfham Aug 29, 2026
e15ff4e
test: Add more tests in tests/test_filesystem.py to ensure greater di…
gkapfham Aug 29, 2026
add6d86
test: Add more tests to tests/test_main.py to ensure greater direct t…
gkapfham Aug 29, 2026
98220d8
chore: Add more details about key conventions to the AGENTS.md file.
gkapfham Aug 29, 2026
c9779ed
chore: Update the AGENTS.md file to indicate that not specifying an e…
gkapfham Aug 29, 2026
ea7240e
refator: Update the cellveyor/main.py file so that there is a new doc…
gkapfham Aug 29, 2026
edb20a0
docs: Update the README.md file with details about the new approach f…
gkapfham Aug 29, 2026
3e97967
chore: Add the .env.example file as a simple example of what a .env f…
gkapfham Aug 29, 2026
e8e8e06
chore: Add python-dotenv as a main dependency in the pyproject.toml f…
gkapfham Aug 29, 2026
4df66ae
chore: Update the uv.lock file with the dependences for the python-do…
gkapfham Aug 29, 2026
2e4090b
coms: Update the cellveyor/data.py file with a new comment about the …
gkapfham Aug 29, 2026
bb08698
test: Update the test cases in the tests/test_main.py file to account…
gkapfham Aug 29, 2026
5630ad8
chore: Update the .github/workflows/build.yml file so that it runs al…
gkapfham Aug 29, 2026
5cb631c
fix: Correct mistakes in the workflow for the versions of the Python …
gkapfham Aug 29, 2026
64a326e
feat: Add a --no-fancy flag to display plain markdown for copying in …
gkapfham Aug 30, 2026
4db364d
test: Add test cases for the new feature in main.py.
gkapfham Aug 30, 2026
fe68bdb
docs: Update the README.md file with more details about two of the bo…
gkapfham Aug 30, 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
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Cellveyor environment file — copy to .env and set your token
# .env is gitignored; never commit real tokens. Run: chmod 600 .env
# Generate a fine-grained PAT scoped to your org with contents:write + pull-requests:write, 7-day expiry
CELLVEYOR_GITHUB_TOKEN=ghp_your_token_here
# Alternative alias (also supported): GITHUB_TOKEN=ghp_your_token_here
118 changes: 54 additions & 64 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,80 +11,70 @@ env:
# Focuses on the master branch only
on:
push:
branches: [ master ]
branches: [master]
pull_request:
branches: [ master ]
branches: [master]

# Create one single job
# This job performs all of the necessary checks
jobs:
build:
# Use the latest version of Ubuntu, MacOS, and Windows
# Use the latest and most stable version of Python
# Important: test coverage monitoring and reporting
# through a badge and the GitHub Actions job summary
# only takes place with the Linux operating system.
# Important: the MacOS and Windows operating systems
# have test coverage calculation take place but they
# do not report the test coverage beyond its display
# inside of the GitHub Actions panel for that job.
# Use the most recent stable Python versions in the supported range
# Important: the coverage threshold is enforced on the Linux runner;
# the MacOS and Windows runners run linting, type checking, and tests
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
python-version: ["3.11"]
include:
- os: macos-latest
python-version: "3.11"
- os: windows-latest
python-version: "3.11"
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.11", "3.12", "3.13", "3.14"]
# Define the workflow steps
steps:
# Checkout the code of the repository
- name: Check out Repository Code
uses: actions/checkout@v3
with:
fetch-depth: 0
# Run the mdl linting tool
# Refers to .mdlrc file in repository
- name: Run Markdown Linting
if: matrix.os == 'ubuntu-latest'
uses: actionshub/markdownlint@main
# Setup Python for the current language version
- name: Setup Python ${{ matrix.python-version }}
if: always()
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
# Install pip
- name: Install Pip
if: always()
run: |
python -m pip install --upgrade pip
# Install poetry
- name: Install Poetry
if: always()
uses: abatilo/actions-poetry@v2.0.0
with:
poetry-version: 1.4.0
# Install dependencies
- name: Install dependencies
if: always()
run: |
poetry install
# Run the linters
- name: Run Linters
if: always()
run: |
poetry run task lint
# Run the program
- name: Run program
if: always()
run: |
poetry run cellveyor --spreadsheet-directory $PWD/spreadsheets/ --spreadsheet-file $PWD/spreadsheets/fake_spreadsheet.xlsx/ --sheet-name Main --key-attribute "Student GitHub" --key-value "gkapfham" --column-regexp '^(Summary Grade|Final Grade) .*$' --feedback-regexp "Summary Grade 1 - Feedback" --feedback-file $PWD/spreadsheets/feedback.yml/
# Run the tests
- name: Run Tests
if: always()
run: |
poetry run task test
# Checkout the code of the repository
- name: Check out Repository Code
uses: actions/checkout@v4
with:
fetch-depth: 0
# Setup Python for the current language version
- name: Setup Python ${{ matrix.python-version }}
if: always()
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# Install uv
- name: Install uv
if: always()
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
# Install dependencies
- name: Install dependencies
if: always()
run: |
uv sync --group dev
# Run the linters (including the rumdl markdown linter)
- name: Run Linters
if: always()
run: |
uv run task lint
# Run the type checkers
- name: Run Type Checks
if: always()
run: |
uv run task typecheck
# Run the program
- name: Run program
if: always()
run: |
uv run cellveyor --spreadsheet-directory $PWD/spreadsheets/ --spreadsheet-file $PWD/spreadsheets/fake_spreadsheet.xlsx --sheet-name Main --key-attribute "Student GitHub" --key-value "gkapfham" --column-regexp '^(Summary Grade|Final Grade) .*$' --feedback-regexp "Summary Grade 1 - Feedback" --feedback-file $PWD/spreadsheets/feedback.yml
# Run the tests
- name: Run Tests
if: always()
run: |
uv run task test
# Enforce the coverage threshold (Linux only)
- name: Run Coverage Check
if: matrix.os == 'ubuntu-latest'
run: |
uv run task test-coverage
34 changes: 0 additions & 34 deletions .github/workflows/publish.yml

This file was deleted.

7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -375,3 +375,10 @@ credentials.json

# poetry.toml file
poetry.toml

# Workflow file
WORKFLOW.md

# Coverage files
tsc.json
cosmic-ray.toml
1 change: 0 additions & 1 deletion .mdlrc

This file was deleted.

69 changes: 69 additions & 0 deletions .rumdl.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# rumdl configuration file

# Inherit settings from another config file (relative to this file's directory)
# extends = "../base.rumdl.toml"

# Global configuration options
[global]
# List of rules to disable (uncomment and modify as needed)
disable = ["MD013", "MD033", "MD041"]

# List of rules to enable exclusively (replaces defaults; only these rules will run)
# enable = ["MD001", "MD003", "MD004"]

# Additional rules to enable on top of defaults (additive, does not replace)
# Use this to activate opt-in rules like MD060, MD063, MD072, MD073, MD074
# extend-enable = ["MD060", "MD063"]

# Additional rules to disable on top of the disable list (additive)
# extend-disable = ["MD041"]

# List of file/directory patterns to include for linting (if provided, only these will be linted)
# include = [
# "docs/*.md",
# "src/**/*.md",
# "README.md"
# ]

# List of file/directory patterns to exclude from linting
exclude = [
# Common directories to exclude
".git",
".github",
"node_modules",
"vendor",
"dist",
"build",

# Specific files or patterns
"CHANGELOG.md",
"LICENSE.md",
]

# Respect .gitignore files when scanning directories (default: true)
respect-gitignore = true

# Markdown flavor/dialect (uncomment to enable)
# Options: standard (default), gfm, commonmark, mkdocs, mdx, pandoc, quarto, obsidian, kramdown, azure_devops
# flavor = "mkdocs"

# Rule-specific configurations (uncomment and modify as needed)

# [MD003]
# style = "atx" # Heading style (atx, atx_closed, setext)

# [MD004]
# style = "asterisk" # Unordered list style (asterisk, plus, dash, consistent)

# [MD007]
# indent = 4 # Unordered list indentation

# [MD013]
# line-length = 100 # Line length
# code-blocks = false # Exclude code blocks from line length check
# tables = false # Exclude tables from line length check
# headings = true # Include headings in line length check

# [MD044]
# names = ["rumdl", "Markdown", "GitHub"] # Proper names that should be capitalized correctly
# code-blocks = false # Check code blocks for proper names (default: false, skips code blocks)
Loading
Loading