Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
92cbc95
feat: first glance of pipeline architecture
ArthurCRodrigues Dec 23, 2025
6e1e93e
feat: first glance of pipeline architecture
ArthurCRodrigues Dec 24, 2025
6367028
feat: criteria tree printer
jaoppb Dec 26, 2025
ef0463f
feat: criteria tree parser
jaoppb Dec 26, 2025
e0c2963
fix: add missing subject_weight field
jaoppb Dec 28, 2025
19391e1
feat: first glance of pipeline architecture
ArthurCRodrigues Dec 29, 2025
b1715c8
feat: add criteria schema and documentation for grading pipeline
ArthurCRodrigues Dec 29, 2025
8fcc9e4
feat: refactor import paths for models in various modules
ArthurCRodrigues Dec 29, 2025
1cc7b01
feat: add Pydantic models for criteria configuration validation
ArthurCRodrigues Dec 29, 2025
04244c7
feat: update criteria tree models with embedded test functions
ArthurCRodrigues Dec 29, 2025
046e9ec
Merge branch 'pipeline-architecture' into grader-refactor
jaoppb Jan 3, 2026
fc7f6af
feat: tree grading
jaoppb Jan 3, 2026
0a18e1d
fix: removed grade_from_config
jaoppb Jan 5, 2026
a901d7e
fix: update imports and typings
jaoppb Jan 5, 2026
7a0ec32
Apply suggestions from code review
jaoppb Jan 5, 2026
aed70a1
fix: tests import
jaoppb Jan 5, 2026
3c0eaf6
fix: subject and category configs
jaoppb Jan 5, 2026
c1677f3
fix: test config
jaoppb Jan 5, 2026
b15aad5
fix: wrong factor calc
jaoppb Jan 5, 2026
e422bc5
fix: add missing list appending
jaoppb Jan 5, 2026
15b5baf
fix: removed rounding at __balance_subject_weights
jaoppb Jan 5, 2026
15b690f
fix: parsing subjects_weight to category
jaoppb Jan 5, 2026
fd47081
Merge pull request #150 from webtech-network/grader-refactor
jaoppb Jan 5, 2026
0ada0be
refactor: change step order for more coherence
ArthurCRodrigues Jan 19, 2026
17e5822
Merge branch 'pipeline-architecture' of https://github.com/webtech-ne…
ArthurCRodrigues Jan 19, 2026
29a922b
feat: add Pydantic models for criteria configuration validation
ArthurCRodrigues Jan 19, 2026
a4b0410
refactor: remove submission_id from grading process for cleaner imple…
ArthurCRodrigues Jan 19, 2026
20e7954
feat: implement feedback generation in feedback step
ArthurCRodrigues Jan 19, 2026
73da418
refactor: update result_tree attribute to be optional in grading result
ArthurCRodrigues Jan 19, 2026
38a07ec
feat: implement score setting in ExporterStep with error handling
ArthurCRodrigues Jan 19, 2026
e3da947
refactor: Clean reporters and create reporter_service.py
ArthurCRodrigues Jan 19, 2026
920790f
feat: add Submission and SubmissionFile dataclasses for handling subm…
ArthurCRodrigues Jan 19, 2026
73ff5f0
fix: update run method to specify input_data type as Submission
ArthurCRodrigues Jan 19, 2026
e27157d
refactor: remove submission_id parameter from GradeStep initializer
ArthurCRodrigues Jan 19, 2026
161a523
refactor: add comments to clarify pipeline step functionality in auto…
ArthurCRodrigues Jan 19, 2026
c8196d1
refactor: streamline template loading by removing legacy methods and …
ArthurCRodrigues Jan 19, 2026
eeee05c
refactor: remove unused main execution blocks and legacy code from mu…
ArthurCRodrigues Jan 19, 2026
d0b30f8
refactor: delete current tests
ArthurCRodrigues Jan 19, 2026
80467c8
Revert "refactor: delete current tests"
ArthurCRodrigues Jan 20, 2026
c08ad35
refactor: adding placeholders for better debugging
ArthurCRodrigues Jan 20, 2026
7a19be0
feat: add HTML grading pipeline test script
ArthurCRodrigues Jan 20, 2026
8f9375c
refactor: remove criteria_config.py
ArthurCRodrigues Jan 20, 2026
d310456
refactor: update configuration model imports and field names for clarity
ArthurCRodrigues Jan 24, 2026
47dcc07
refactor: update configuration model imports and field names for clarity
ArthurCRodrigues Jan 24, 2026
2d0d84a
refactor: update parameters type in TestResult to Optional for better…
ArthurCRodrigues Jan 24, 2026
5c3e1a9
feat: implement full pipeline test for BuildTreeStep and GradeStep
ArthurCRodrigues Jan 24, 2026
cbb6250
feat: introduce PipelineExecution class to manage pipeline execution …
ArthurCRodrigues Jan 27, 2026
0521686
feat: update step execution methods to use PipelineExecution as input…
ArthurCRodrigues Jan 27, 2026
f83e06b
refactor: remove unused parameters from autograder pipeline configura…
ArthurCRodrigues Jan 27, 2026
893d278
feat: enhance pipeline execution flow with PipelineExecution management
ArthurCRodrigues Jan 27, 2026
1c939ef
feat: update load_template_step to use PipelineExecution in execute m…
ArthurCRodrigues Jan 27, 2026
c5cbced
feat: enhance feedback_step to generate feedback using grading result
ArthurCRodrigues Jan 27, 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
57 changes: 57 additions & 0 deletions autograder/autograder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
from autograder.services.report.reporter_service import ReporterService
from autograder.services.upstash_driver import UpstashDriver
from autograder.pipeline import AutograderPipeline
from autograder.steps.export_step import ExporterStep
from autograder.steps.feedback_step import FeedbackStep
from autograder.steps.grade_step import GradeStep
from autograder.steps.load_template_step import TemplateLoaderStep
from autograder.steps.pre_flight_step import PreFlightStep
from autograder.steps.build_tree_step import BuildTreeStep


def build_pipeline(
template_name,
include_feedback,
grading_criteria,
feedback_config,
setup_config = None,
custom_template = None,
feedback_mode = None):
"""
Build an autograder pipeline based on configuration.

Args:
template_name: Name of the template to use
include_feedback: Whether to include feedback generation
grading_criteria: Criteria configuration dictionary
feedback_config: Configuration for feedback generation
setup_config: Pre-flight setup configuration
custom_template: Custom template object (if any)
feedback_mode: Mode for feedback generation
Returns:
Configured AutograderPipeline
"""
pipeline = AutograderPipeline()

# Load template
pipeline.add_step(TemplateLoaderStep(template_name, custom_template)) # Passes the template to the next step

pipeline.add_step(BuildTreeStep(grading_criteria)) # Uses template to match selected tests in criteria and builds tree

# Pre-flight checks (if configured)
if setup_config:
pipeline.add_step(PreFlightStep(setup_config))

pipeline.add_step(GradeStep()) # Generates GradingResult with final score and result tree

# Feedback generation (if configured)
if include_feedback:
reporter_service = ReporterService(feedback_mode=feedback_mode)
pipeline.add_step(FeedbackStep(reporter_service, feedback_config)) # Uses GradingResult to generate feedback and appends it to GradingResult

# Export results
pipeline.add_step(ExporterStep(UpstashDriver)) # Exports final results and feedback

return pipeline


Loading