loop, 10:26:27,
Exception in thread Elective:
Traceback (most recent call last):
File "xxx\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "xxx\Python\Python37\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "xxx\PKUAutoElective-master\autoelective\loop.py", line 527, in run_elective_loop
raise e
File "xxx\PKUAutoElective-master\autoelective\loop.py", line 352, in run_elective_loop
elif c in plans and c.is_available():
File "xxx\PKUAutoElective-master\autoelective\course.py", line 39, in is_available
assert self._status is not None
AssertionError
Check List
Version / Environment
System infomation: Windows10 64bit Python version: 3.7.6 x86_64 AutoElective version: 3.0.2 Beta
Config
filename: config.ini
coding: utf-8
[user]
; student_id string 学号 ; password string 密码 ; dual_degree boolean 是否为双学位账号,可选 (true, false, True, False, 1, 0) ; 住:只要你的账号在登录时需要选择 "主修/辅双" 身份,此处就需要设为 true ; identity string 双学位账号登录身份,可选 ("bzx","bfx") 对应于 "主修/辅双"
student_id = XXXXX password = XXXXX dual_degree = false identity = bzx
[client]
; supply_cancel_page int 待刷课程处在选课计划的第几页 ; refresh_interval float 每次循环后的暂停时间,单位 s ; random_deviation float 偏移量分数,如果设置为 <= 0 的值,则视为 0 ; iaaa_client_timeout float IAAA 客户端最长请求超时 ; elective_client_timeout float elective 客户端最长请求超时 ; elective_client_pool_size int 最多同时保持几个 elective 的有效会话(同一 IP 下最多为 5) ; login_loop_interval float IAAA 登录线程每回合结束后的等待时间 ; debug_print_request boolean 是否打印请求细节 ; debug_dump_request boolean 是否将重要接口的请求以日志的形式记录到本地(包括补退选页、提交选课等接口) ; ; 关于刷新间隔的配置示例: ; ; refresh_interval = 8 ; random_deviation = 0.2 ; ; 则每两个循环的间隔时间为 8 * (1.0 ± 0.2) s
supply_cancel_page = 1 refresh_interval = 7 random_deviation = 0.2 iaaa_client_timeout = 30 elective_client_timeout = 60 elective_client_pool_size = 4 login_loop_interval = 2 debug_print_request = false debug_dump_request = false
[monitor]
; host str ; port int
host = 127.0.0.1 port = 7074
;---------------- course ----------------; ; ; 课程结构定义: ; ; [course:${id}] ; 用户为该课程定义的 id ; ; name = ${name} ; elective 中的
课程名
; class = ${class} ; elective 中的课号
; school = ${school} ; elective 中的开课单位
; ; ; 例如: ; ; [course:math_3] ; ; name = 集合论与图论 ; class = 3 ; school = 信息科学技术学院 ; ; 可以解析出: ; ; id = "math_3" ; name = "集合论与图论" ; class = 3 ; school = "信息科学技术学院" ; ; ; 更多例子: ; ; [course:db] ; ; name = 数据库概论 ; class = 1 ; school = 信息科学技术学院 ; ; [course:0] ; ; name = 概率统计 (A) ; class = 1 ; school = 信息科学技术学院 ; ; ; 注意: ; ; 1. [course:${id}] 中可以带空格,但是不推荐 ; 例如 [course: 1], [course:math 1] [ course : hello world ] ; 可以解析出: "1", "math 1", "hello world" ; 2. [course:${id}] 中不要带有 ',' 否则会在后续规则定义中引入混乱! 不接受 '\,' 转义 ; 例如 [course:Hai,Alice] 是非法的,在解析时会被忽略 ; 3. [course:${id}] 中可以带有 ':',但是不推荐 ; ;----------------------------------------;; [course:sample] ; ; name = class_name_here ; class = class_no_here ; school = class_school_here
;---------------- mutex ----------------; ; ; 互斥规则结构定义: ; ; [mutex:${id}] ; 用户为该互斥规则定义的 id ; ; courses = ${cid1},${cid2},... ; 用户定义的多个课程的 id,以 ',' 分隔 ; ; ; 例如: ; ; [course:math_1] ; ... ; ; [course:math_2] ; ... ; ; [course:math_3] ; ... ; ; ; [mutex:0] ; ; courses = math_1,math_2,math_3 ; ; 可以解析出 ; ; id = "0" ; courses = ["math_1", "math_2", "math_3"] ; ; ; 解释: ; ; 同一个互斥规则内的课程一旦有一门课已经被选上,其他课程将会被自动忽略。 ; 例如,对于上述例子,如果 math_1, math_2, math_3 有任何一门课已经被选上,其它两门课将会被自动忽略 ; 例如,当 math_1 被选上时,math_2, math_3 会被自动忽略 ; ; ; 注意: ; ; 1. [mutex:${id}] 的命名注意事项同 course ; 2. courses 中可以有空格,但是不推荐 ; 例如 courses = math_1, math_2 , math_3 ; 仍可以解析出 ["math_1", "math_2", "math_3"] ; ;---------------------------------------;
; [mutex:sample] ; ; courses = course_id_1,course_id_2
[course:GENERAL]
name = 人类发展与环境变迁 class = 1 school = 历史学系
[course:DS]
name = 数据结构与算法 (B) class = 1 school = 地球与空间科学学院
Issue Description
What
loop, 10:26:27, Exception in thread Elective: Traceback (most recent call last): File "xxx\Python\Python37\lib\threading.py", line 926, in _bootstrap_inner self.run() File "xxx\Python\Python37\lib\threading.py", line 870, in run self._target(*self._args, **self._kwargs) File "xxx\PKUAutoElective-master\autoelective\loop.py", line 527, in run_elective_loop raise e File "xxx\PKUAutoElective-master\autoelective\loop.py", line 352, in run_elective_loop elif c in plans and c.is_available(): File "xxx\PKUAutoElective-master\autoelective\course.py", line 39, in is_available assert self._status is not None AssertionError
Console Log
See above
Reproduce
似乎是检测课程是否有名额时出现的问题 "人类发展与环境变迁"课程当时已经满员