fleischerresearchlab / canvasgroupy Goto Github PK
View Code? Open in Web Editor NEWCanvas Grouping Python Script
Home Page: https://fleischerresearchlab.github.io/CanvasGroupy/
License: MIT License
Canvas Grouping Python Script
Home Page: https://fleischerresearchlab.github.io/CanvasGroupy/
License: MIT License
As title. We don't have a tutorial notebook for project grading.
As title
For proposal through final report, there are cases where I decrease (or increase) a student's individual score relative to the rest of the group.
Having the ability to pass a dictionary where I could specify student identifiers and values to adjust by in say a dictionary to the grade posting would be super helpful.
I'm envisioning something like passing a parameter:
student_adjustments = {student_id1: 0.8, student_id2: 1.1}
Then, after grades are collected from the GH issue and when being posted to Canvas, student_id1
would earn 80% of the group grade (decrease) where student_id2
would earn 1.1*group grade (increase), etc.
Happy to discuss more my idea if unclear here. (Note there's no rush. I'll do this manually this quarter, but wanted to put in a request for the future if possible)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
Cell In[23], line 8
5 # Temporary Fix. Issue Page
6 # https://github.com/FleischerResearchLab/CanvasGroupy/issues/5
7 try:
----> 8 grading.grade_project(
9 repo=repo,
10 component="proposal",
11 assignment_id=693724,
12 post=True
13 )
14 except KeyError:
15 problem_groups.append(repo_name)
File ~/anaconda3/lib/python3.10/site-packages/CanvasGroupy/grading.py:106, in Grading.grade_project(self, repo, component, assignment_id, canvas_group_name, canvas_group_category, post)
104 if canvas_group_category is not None:
105 self.cg.set_group_category(canvas_group_category)
--> 106 score = self.parse_score_from_issue(repo, component)
107 # create mapping from GitHub repo name to canvas group name
108 if canvas_group_name is not None:
File ~/anaconda3/lib/python3.10/site-packages/CanvasGroupy/grading.py:59, in Grading.parse_score_from_issue(self, repo, component)
57 body = issue.body
58 score = 0
---> 59 for line in body.split("\n"):
60 if "Score =" in line and "[comment]" not in line:
61 score = literal_eval(line.split("=")[1])
AttributeError: 'NoneType' object has no attribute 'split'
When syncing grade from GitHub issue to Canvas, does not show the progress of the current group. It would be nice to see the current progress of which group we are working on right now.
grading.grade_project(
canvas_group_category="Final Project",
)
Will set a group category every single time. change the logic to check whether the group category has been set or not
As titled. In this way whenever they make the student make a comment on the issue the assigned TA/IA Pair will get notified.
When doing
grading.grade_project(
repo=repo,
component="proposal",
assignment_id=*****,
post=True
)
File ~/anaconda3/lib/python3.10/site-packages/CanvasGroupy/grading.py:116, in Grading.grade_project(self, repo, component, assignment_id, canvas_group_name, canvas_group_category, post)
114 return
115 issue = self.fetch_issue(repo, component)
--> 116 self.update_canvas_score(group_name, assignment_id, score, issue, post)
File ~/anaconda3/lib/python3.10/site-packages/CanvasGroupy/grading.py:79, in Grading.update_canvas_score(self, group_name, assignment_id, score, issue, post)
77 self.cg.link_assignment(assignment_id)
78 for member in members:
---> 79 student_id = self.cg.email_to_canvas_id[member]
80 text_comment = f"Group: {group_name}"
81 if issue is not None:
KeyError: '***'
This will happen when we sync grades for a group member who dropped out of the class. Need to use try-except syntax to catch this case.
as title. Not sure how much refractor of code is needed to achieve this. Low priority at this point.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.