本文整理汇总了Python中mnemosyne.libmnemosyne.Mnemosyne.start_review方法的典型用法代码示例。如果您正苦于以下问题:Python Mnemosyne.start_review方法的具体用法?Python Mnemosyne.start_review怎么用?Python Mnemosyne.start_review使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mnemosyne.libmnemosyne.Mnemosyne
的用法示例。
在下文中一共展示了Mnemosyne.start_review方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: startup
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
def startup():
global mnemosyne
# Note that this also includes building the queue and getting the first card.
mnemosyne = Mnemosyne(upload_science_logs=False,
interested_in_old_reps=True)
mnemosyne.components.insert(0,
("mnemosyne.libmnemosyne.translators.no_translator",
"NoTranslator"))
mnemosyne.components.append(
("mnemosyne.libmnemosyne.ui_components.main_widget",
"MainWidget"))
mnemosyne.components.append(
("mnemosyne_test",
"TestReviewWidget"))
mnemosyne.initialise(data_dir=os.path.abspath("dot_benchmark"),
automatic_upgrades=False)
#mnemosyne.initialise(data_dir="\SDMMC\.mnemosyne",
#automatic_upgrades=False)
mnemosyne.start_review()
示例2: TestCrammingScheduler
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
class TestCrammingScheduler(MnemosyneTest):
def setup(self):
self.initialise_data_dir()
self.mnemosyne = Mnemosyne(upload_science_logs=False, interested_in_old_reps=True,
asynchronous_database=True)
self.mnemosyne.components.insert(0,
("mnemosyne.libmnemosyne.translators.gettext_translator", "GetTextTranslator"))
self.mnemosyne.components.append(\
("test_cramming", "Widget"))
self.mnemosyne.components.append(\
("mnemosyne_test", "TestReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"), automatic_upgrades=False)
from mnemosyne.libmnemosyne.plugins.cramming_plugin import CrammingPlugin
for plugin in self.plugins():
if isinstance(plugin, CrammingPlugin):
plugin.activate()
break
self.mnemosyne.start_review()
def test_1(self):
from mnemosyne.libmnemosyne.schedulers.cramming import Cramming
card_type = self.card_type_with_id("1")
fact_data = {"f": "1", "b": "b"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"f": "2", "b": "b"}
card_2 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"f": "3", "b": "b"}
card_3 = self.controller().create_new_cards(fact_data, card_type,
grade=2, tag_names=["default"])[0]
fact_data = {"f": "4", "b": "b"}
card_4 = self.controller().create_new_cards(fact_data, card_type,
grade=2, tag_names=["default"])[0]
card_4.next_rep -= 1000
self.database().update_card(card_4)
self.review_controller().start_review()
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 4
assert self.database().scheduler_data_count(Cramming.WRONG) == 0
self.review_controller().grade_answer(0)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 3
assert self.database().scheduler_data_count(Cramming.WRONG) == 1
self.review_controller().grade_answer(5)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 2
assert self.database().scheduler_data_count(Cramming.WRONG) == 1
# Fail the cards a couple of times.
for i in range(8):
self.review_controller().grade_answer(0)
# Pass the cards a couple of times.
for i in range(8):
self.review_controller().grade_answer(5)
def test_reset(self):
from mnemosyne.libmnemosyne.schedulers.cramming import Cramming
card_type = self.card_type_with_id("1")
fact_data = {"f": "1", "b": "b"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"f": "2", "b": "b"}
card_2 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"f": "3", "b": "b"}
card_3 = self.controller().create_new_cards(fact_data, card_type,
grade=2, tag_names=["default"])[0]
fact_data = {"f": "4", "b": "b"}
card_4 = self.controller().create_new_cards(fact_data, card_type,
grade=2, tag_names=["default"])[0]
card_4.next_rep -= 1000
self.database().update_card(card_4)
self.review_controller().start_review()
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 4
assert self.database().scheduler_data_count(Cramming.WRONG) == 0
assert self.review_controller().counters() == (0, 4, 4)
self.review_controller().grade_answer(0)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 3
assert self.database().scheduler_data_count(Cramming.WRONG) == 1
assert self.review_controller().counters() == (1, 3, 4)
self.review_controller().reset_but_try_to_keep_current_card()
self.review_controller().update_dialog(redraw_all=True)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 3
assert self.database().scheduler_data_count(Cramming.WRONG) == 1
assert self.review_controller().counters() == (1, 3, 4)
def test_2(self):
card_type = self.card_type_with_id("1")
fact_data = {"f": "1", "b": "b"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
#.........这里部分代码省略.........
示例3: WebServer
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
class WebServer(Component):
def __init__(self, component_manager, port, data_dir, config_dir,
filename, is_server_local=False):
Component.__init__(self, component_manager)
self.port = port
self.data_dir = data_dir
self.config_dir = config_dir
self.filename = filename
self.is_server_local = is_server_local
# When restarting the server, make sure we discard info from the
# browser resending the form from the previous session.
self.is_just_started = True
self.is_mnemosyne_loaded = False
self.is_shutting_down = False
self.wsgi_server = wsgiserver.CherryPyWSGIServer(\
("0.0.0.0", port), self.wsgi_app, server_name="localhost",
numthreads=1, timeout=5)
# We need to set the timeout relatively low, otherwise it will take
# too long for the server to process a 'stop' request.
def serve_until_stopped(self):
try:
self.wsgi_server.start() # Sets self.wsgi_server.ready
except KeyboardInterrupt:
self.wsgi_server.stop()
self.unload_mnemosyne()
def stop(self):
self.wsgi_server.stop()
self.unload_mnemosyne()
def load_mnemosyne(self):
self.mnemosyne = Mnemosyne(upload_science_logs=True,
interested_in_old_reps=True)
self.mnemosyne.components.insert(0, (
("mnemosyne.libmnemosyne.translators.gettext_translator",
"GetTextTranslator")))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.main_widget",
"MainWidget"))
self.mnemosyne.components.append(\
("mnemosyne.web_server.review_wdgt",
"ReviewWdgt"))
self.mnemosyne.components.append(\
("mnemosyne.web_server.web_server_render_chain",
"WebServerRenderChain"))
self.mnemosyne.initialise(self.data_dir, config_dir=self.config_dir,
filename=self.filename, automatic_upgrades=False)
self.mnemosyne.review_controller().set_render_chain("web_server")
self.save_after_n_reps = self.mnemosyne.config()["save_after_n_reps"]
self.mnemosyne.config()["save_after_n_reps"] = 1
self.mnemosyne.start_review()
self.mnemosyne.review_widget().set_is_server_local(\
self.is_server_local)
self.is_mnemosyne_loaded = True
self.release_database_after_timeout = \
ReleaseDatabaseAfterTimeout(self.port)
self.release_database_after_timeout.start()
def unload_mnemosyne(self):
if not self.is_mnemosyne_loaded:
return
self.mnemosyne.config()["save_after_n_reps"] = self.save_after_n_reps
self.mnemosyne.finalise()
self.is_mnemosyne_loaded = False
def wsgi_app(self, environ, start_response):
filename = environ["PATH_INFO"].decode("utf-8")
if filename == "/status":
response_headers = [("Content-type", "text/html")]
start_response("200 OK", response_headers)
return ["200 OK"]
# Sometimes, even after the user has clicked 'exit' in the page,
# a browser sends a request for e.g. an audio file.
if self.is_shutting_down and filename != "/release_database":
response_headers = [("Content-type", "text/html")]
start_response("503 Service Unavailable", response_headers)
return ["Server stopped"]
# Load database if needed.
if not self.is_mnemosyne_loaded and filename != "/release_database":
self.load_mnemosyne()
self.release_database_after_timeout.ping()
# All our request return to the root page, so if the path is '/',
# return the html of the review widget.
if filename == "/":
# Process clicked buttons in the form.
form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ)
if "show_answer" in form and not self.is_just_started:
self.mnemosyne.review_widget().show_answer()
page = self.mnemosyne.review_widget().to_html()
elif "grade" in form and not self.is_just_started:
grade = int(form["grade"].value)
self.mnemosyne.review_widget().grade_answer(grade)
page = self.mnemosyne.review_widget().to_html()
elif "star" in form:
self.mnemosyne.controller().star_current_card()
page = self.mnemosyne.review_widget().to_html()
elif "exit" in form:
self.unload_mnemosyne()
#.........这里部分代码省略.........
示例4: MnemosyneTest
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
class MnemosyneTest():
def initialise_data_dir(self, data_dir="dot_test"):
# Creating a new database seems a very time-consuming operation,
# so we don't delete the test directory everytime, but take a short
# cut.
# Note: disabled this, as it does not seem to be very reliable.
shutil.rmtree(data_dir, ignore_errors=True)
if os.path.exists(data_dir):
shutil.copy(os.path.join("tests", "files", "empty.db"),
os.path.join(data_dir, "default.db"))
for directory in ["default.db_media", "plugins", "backups",
"history"]:
full_path = unicode(os.path.join(data_dir, directory))
if os.path.exists(full_path):
shutil.rmtree(full_path)
for file in ["default.db-journal", "config",
"config.py", "machine.id", "log.txt"]:
full_path = unicode(os.path.join(data_dir, file))
if os.path.exists(full_path):
os.remove(full_path)
def setup(self):
self.initialise_data_dir()
self.restart()
def restart(self):
# If there is another Mnemosyne still running, finalise it so as to
# avoid having multiple component_managers active.
if hasattr(self, "mnemosyne"):
try:
self.mnemosyne.finalise()
except:
pass
self.mnemosyne = Mnemosyne(upload_science_logs=False,
interested_in_old_reps=True, asynchronous_database=True)
self.mnemosyne.components.insert(0,
("mnemosyne.libmnemosyne.translators.gettext_translator",
"GetTextTranslator"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.main_widget", "MainWidget"))
self.mnemosyne.components.append(\
("mnemosyne_test", "TestReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"),
automatic_upgrades=False)
self.mnemosyne.start_review()
def teardown(self):
self.mnemosyne.finalise()
# Avoid having multiple component_managers active.
from mnemosyne.libmnemosyne.component_manager import clear_component_managers
clear_component_managers()
def config(self):
return self.mnemosyne.component_manager.current("config")
def log(self):
return self.mnemosyne.component_manager.current("log")
def database(self):
return self.mnemosyne.component_manager.current("database")
def scheduler(self):
return self.mnemosyne.component_manager.current("scheduler")
def main_widget(self):
return self.mnemosyne.component_manager.current("main_widget")
def review_widget(self):
return self.mnemosyne.component_manager.current("review_widget")
def controller(self):
return self.mnemosyne.component_manager.current("controller")
def review_controller(self):
return self.mnemosyne.component_manager.current("review_controller")
def card_types(self):
return self.mnemosyne.component_manager.all("card_type")
def filters(self):
return self.mnemosyne.component_manager.all("filter")
def plugins(self):
return self.mnemosyne.component_manager.all("plugin")
def render_chain(self, id="default"):
return self.mnemosyne.component_manager.render_chain_by_id[id]
def card_type_with_id(self, id):
return self.mnemosyne.component_manager.card_type_with_id[id]
示例5:
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
"DatabaseLogger"),
("mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne",
"SM2Mnemosyne"),
("mnemosyne.libmnemosyne.stopwatch",
"Stopwatch"),
("mnemosyne.libmnemosyne.card_types.front_to_back",
"FrontToBack"),
("mnemosyne.libmnemosyne.card_types.both_ways",
"BothWays"),
("mnemosyne.libmnemosyne.card_types.vocabulary",
"Vocabulary"),
("mnemosyne.libmnemosyne.controllers.default_controller",
"DefaultController"),
("mnemosyne.libmnemosyne.review_controllers.SM2_controller",
"SM2Controller"),
("mnemosyne.libmnemosyne.card_types.map",
"MapPlugin"),
("mnemosyne.libmnemosyne.card_types.cloze",
"ClozePlugin"),
("mnemosyne.libmnemosyne.criteria.default_criterion",
"DefaultCriterion"),
("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier",
"DefaultCriterionApplier") ]
# Run Mnemosyne.
mnemosyne.initialise(data_dir=data_dir)
mnemosyne.start_review()
app.mainframe = mnemosyne.main_widget()
app.run()
mnemosyne.finalise()
示例6: TestLogging
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import start_review [as 别名]
class TestLogging(MnemosyneTest):
def restart(self):
self.mnemosyne = Mnemosyne(upload_science_logs=False, interested_in_old_reps=True,
asynchronous_database=True)
self.mnemosyne.components.insert(0,
("mnemosyne.libmnemosyne.translators.gettext_translator", "GetTextTranslator"))
self.mnemosyne.components.append(\
("test_logging", "MyMainWidget"))
self.mnemosyne.components.append(\
("mnemosyne_test", "TestReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"), automatic_upgrades=False)
self.mnemosyne.start_review()
def test_logging(self):
card_type = self.card_type_with_id("1")
fact_data = {"f": "1", "b": "b"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
card_id_1 = card.id
self.review_controller().show_new_question()
self.review_controller().grade_answer(0)
self.review_controller().show_new_question()
self.review_controller().grade_answer(1)
self.review_controller().grade_answer(4)
self.mnemosyne.finalise()
self.restart()
card_type = self.card_type_with_id("1")
fact_data = {"f": "2", "b": "b"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().show_new_question()
self.controller().delete_current_card()
self.log().dump_to_science_log()
sql_res = self.database().con.execute(\
"select * from log where _id=1").fetchone()
assert sql_res[1] == EventTypes.STARTED_PROGRAM
sql_res = self.database().con.execute(\
"select * from log where _id=2").fetchone()
assert sql_res[1] == EventTypes.STARTED_SCHEDULER
sql_res = self.database().con.execute(\
"select * from log where _id=3").fetchone()
assert sql_res[1] == EventTypes.LOADED_DATABASE
assert sql_res[6] == 0
assert sql_res[7] == 0
assert sql_res[8] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=11").fetchone()
assert sql_res[1] == EventTypes.ADDED_TAG
assert sql_res[3] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=12").fetchone()
assert sql_res[1] == EventTypes.EDITED_CRITERION
assert sql_res[3] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=13").fetchone()
assert sql_res[1] == EventTypes.ADDED_FACT
assert sql_res[3] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=14").fetchone()
assert sql_res[1] == EventTypes.ADDED_CARD
assert sql_res[3] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=15").fetchone()
assert sql_res[1] == EventTypes.REPETITION
assert sql_res[6] == 1
assert sql_res[7] == 0
assert sql_res[11] == 0
assert sql_res[12] == 0
assert sql_res[14] - sql_res[2] == 0
assert sql_res[13] == 0
assert sql_res[3] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=16").fetchone()
assert sql_res[1] == EventTypes.REPETITION
assert sql_res[6] == 2
assert sql_res[7] == 0
assert sql_res[11] == 0
assert sql_res[12] <= 10 # Depends on CPU load.
assert sql_res[14] - sql_res[2] == 0
assert sql_res[13] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=17").fetchone()
assert sql_res[1] == EventTypes.REPETITION
assert sql_res[6] == 3
assert sql_res[7] == 0
assert sql_res[11] == 0
assert sql_res[12] <= 10 # Depends on CPU load.
#.........这里部分代码省略.........