Skip to content

Conversation

@pancakereport
Copy link

No description provided.

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py815730%16, 19, 22, 25, 28, 49, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2031114644% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.535s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py815730%16, 19, 22, 25, 28, 49, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2031114644% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.860s ⏱️

@codecov
Copy link

codecov bot commented Nov 7, 2025

Codecov Report

❌ Patch coverage is 96.29630% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 46.08%. Comparing base (c93d844) to head (1d7f541).
⚠️ Report is 5 commits behind head on main.

Files with missing lines Patch % Lines
server/services/core/assign.py 95.65% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #79      +/-   ##
==========================================
+ Coverage   44.08%   46.08%   +1.99%     
==========================================
  Files          28       28              
  Lines        2005     2018      +13     
==========================================
+ Hits          884      930      +46     
+ Misses       1121     1088      -33     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py816421%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2031133434% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 29.754s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py815730%16, 19, 22, 25, 28, 49, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2031114644% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.662s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py816421%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2031133434% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 42.761s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py816421%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 64–90, 103–161, 175–191
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2031133434% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 1m 3s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634037%16, 19, 22, 25, 28, 49, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2013112944% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.849s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634037%16, 19, 22, 25, 28, 49, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2013112944% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.693s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634037%16, 19, 22, 25, 28, 49, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2013112944% 

Tests Skipped Failures Errors Time
44 0 💤 0 ❌ 0 🔥 9.870s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634725%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2013131735% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 31.755s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634725%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2013131735% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 34.812s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py634725%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–124, 138–154
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py311068%20–32, 38, 43, 49, 55–56, 65, 68
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2013131735% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 42.519s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 10.029s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 10.213s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 10.337s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 9.984s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 9.908s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for unit tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py50492%21–22, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1673579%56, 60, 63, 66, 69, 72–77, 107, 110–119, 122, 125, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259115%35, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py20765%17–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py65395%25, 28, 92
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py116596%29, 33–34, 43, 150
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py923166%18, 29–31, 33–35, 49–51, 68–76, 88–89, 101–108, 112–114, 125–126
server/services/email/templates
   __init__.py33197%20
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py34682%42, 53, 59–60, 69, 72
server/utils
   date.py7186%30
   misc.py161319%5–9, 13–19, 23
TOTAL2018108846% 

Tests Skipped Failures Errors Time
66 0 💤 0 ❌ 0 🔥 9.921s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.11
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py654925%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–127, 141–157
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py341362%20–36, 42, 47, 53, 59–60, 69, 72
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2018132234% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 29.546s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.10
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py654925%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–127, 141–157
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py341362%20–36, 42, 47, 53, 59–60, 69, 72
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2018132234% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 33.003s ⏱️

@github-actions
Copy link

github-actions bot commented Nov 7, 2025

Coverage

Coverage for e2e tests for Python 3.12
FileStmtsMissCoverMissing
server
   __init__.py501080%13, 16–22, 27, 67, 75
   cache.py6183%12
   forms.py1221588%23–25, 41–43, 68–70, 149–152, 159, 167
   models.py1674474%27–30, 56, 60, 63, 66, 69, 72–77, 103, 107, 110–119, 122, 125, 139, 142–144, 147, 151, 163, 167, 171, 175–176, 182, 185, 205, 208, 229, 232, 246
   views.py69259414%34–36, 45–81, 91–125, 136–140, 157–166, 182–199, 210–217, 226–248, 259–272, 281, 292–295, 306–325, 338–362, 371–393, 402–429, 438–447, 456–498, 509–514, 522–526, 535–565, 574–604, 613–646, 655–685, 694–711, 718, 723–727, 736–782, 788–839, 845–855, 860–880, 885–910, 915–930, 935–954, 959–960, 965–978, 987, 992, 997, 1005–1006
server/controllers
   __init__.py824644%26–44, 47–49, 60–87, 90, 101–110, 113
   auth_controllers.py382534%13–15, 21–47, 53–55
   dev_login_controllers.py342332%11–25, 30–39, 44–56
   health_controllers.py201240%8, 13–18, 23–27
server/services/auth
   __init__.py29679%22, 51, 56–57, 62–63
server/services/canvas
   __init__.py806124%18–25, 29, 33, 37, 43, 55–64, 69–105, 109–124, 128
   fake_canvas.py392633%9, 12, 15, 20–25, 28–29, 37–46, 49–56
server/services/core
   assign.py654925%10–13, 16, 19, 22, 25, 28, 36–37, 49, 53, 66–127, 141–157
   data.py543731%12–17, 21–25, 29–33, 37–39, 43–54, 58, 69–71, 75–76, 80–81, 85–86
   export.py272219%11–44
   room.py61568%11–33, 41–89
   student.py1169617%29, 33–34, 38, 42–44, 48, 52, 59–170
server/services/csv
   __init__.py201335%11–12, 19, 26–29, 36–41
server/services/email
   __init__.py413124%19–36, 40–72
   smtp.py927321%18, 26–39, 43–52, 57–77, 83–115, 120–126
server/services/email/templates
   __init__.py332330%9–11, 14–17, 20, 30–41, 45–47
server/services/google
   __init__.py542946%23, 31, 33, 41–44, 48–54, 58–77
server/typings
   exception.py341362%20–36, 42, 47, 53, 59–60, 69, 72
server/utils
   date.py7443%17–19, 30
   misc.py161319%5–9, 13–19, 23
TOTAL2018132234% 

Tests Skipped Failures Errors Time
8 0 💤 0 ❌ 0 🔥 42.490s ⏱️

@pancakereport pancakereport linked an issue Nov 7, 2025 that may be closed by this pull request
@pancakereport pancakereport merged commit aa71c44 into main Nov 7, 2025
14 checks passed
@pancakereport pancakereport deleted the optimized-assign branch November 7, 2025 01:02

class NotEnoughSeatError(SeatAssignmentError):
def __init__(self, exam, students, preference):
self.exam = exam

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was already existing in the app, and I'm not sure if it's happened yet, but there's a very good chance this error won't make it to users for large courses.

We might want to check somewhere that the message is < ~3.5K long and if not reply with an altered / condensed message.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, agree that the error message should be shortened. I'm pretty sure I was able to run into the error, but it ends up being too long (with too many students) so the error can't actually be communicated to the end user and just gives an application error.

I asked 61a to rerun after I made this change and they actually did get the error to surface somehow, not sure. Looking into it tomorrow.

student = random.choice(min_students_list)
seat = random.choice(min_seats_list)

assignments.append(SeatAssignment(student=student, seat=seat))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not 100% sure of the implication here, but I suspect that the db insert could be a bit more optimized.

seating/server/views.py

Lines 873 to 875 in aa71c44

assignments = assign_students(exam)
db.session.add_all(assignments)
db.session.commit()

My understanding is generates N insert statements in 1 txn, but a bulk statement would be one SQL statement which the DB should handle more nicely and I think wouldn't impact the app, but I have not tested things enough to know.

https://docs.sqlalchemy.org/en/20/orm/queryguide/dml.html#orm-queryguide-bulk-insert

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or maybe this would work? db.session.bulk_insert_mappings()

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Large Classes Experience Assignment Timeout

3 participants