本文整理汇总了Python中mnemosyne.libmnemosyne.Mnemosyne.finalise方法的典型用法代码示例。如果您正苦于以下问题:Python Mnemosyne.finalise方法的具体用法?Python Mnemosyne.finalise怎么用?Python Mnemosyne.finalise使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类mnemosyne.libmnemosyne.Mnemosyne
的用法示例。
在下文中一共展示了Mnemosyne.finalise方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: MnemosyneTest
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class MnemosyneTest():
def setup(self):
os.system("rm -fr dot_test")
self.restart()
def restart(self):
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.main_widget", "MainWidget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.dialogs", "ProgressDialog"))
self.mnemosyne.initialise(os.path.abspath("dot_test"))
self.review_controller().reset()
def teardown(self):
self.mnemosyne.finalise()
def config(self):
return self.mnemosyne.component_manager.get_current("config")
def log(self):
return self.mnemosyne.component_manager.get_current("log")
def database(self):
return self.mnemosyne.component_manager.get_current("database")
def scheduler(self):
return self.mnemosyne.component_manager.get_current("scheduler")
def main_widget(self):
return self.mnemosyne.component_manager.get_current("main_widget")
def review_widget(self):
return self.mnemosyne.component_manager.get_current("review_widget")
def controller(self):
return self.mnemosyne.component_manager.get_current("controller")
def review_controller(self):
return self.mnemosyne.component_manager.get_current("review_controller")
def card_types(self):
return self.mnemosyne.component_manager.get_all("card_type")
def filters(self):
return self.mnemosyne.component_manager.get_all("filter")
def plugins(self):
return self.mnemosyne.component_manager.get_all("plugin")
def card_type_by_id(self, id):
return self.mnemosyne.component_manager.card_type_by_id[id]
示例2: MyServer
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class MyServer(Server):
program_name = "Mnemosyne"
program_version = "test"
capabilities = "TODO"
stop_after_sync = True
def __init__(self):
os.system("rm -rf sync_from_here")
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(("test_sync", "Widget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.dialogs", "ProgressDialog"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("sync_from_here"))
self.mnemosyne.config().change_user_id("user_id")
self.mnemosyne.review_controller().reset()
# Add 20 cards to database.
card_type = self.mnemosyne.card_type_by_id("1")
for i in range (20):
fact_data = {"q": "question %d" % (i,),
"a": "answer"}
self.mnemosyne.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.mnemosyne.database().save()
def authorise(self, login, password):
return login == "user" and password == "pass"
def open_database(self, database_name):
return self.mnemosyne.database()
def run(self):
Server.__init__(self, "client_machine_id", "192.168.2.54", 8186,
self.mnemosyne.main_widget())
# Because we stop_after_sync is True, serve_forever will actually stop
# after one sync.
self.serve_forever()
self.mnemosyne.finalise()
示例3: MyServer
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class MyServer(Server, Thread):
program_name = "Mnemosyne"
program_version = "test"
capabilities = "TODO"
stop_after_sync = True
def __init__(self):
Thread.__init__(self)
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(("test_sync", "Widget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.dialogs", "ProgressDialog"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
def authorise(self, login, password):
return login == "user" and password == "pass"
def open_database(self, database_name):
return self.mnemosyne.database()
def run(self):
# We only open the database connection inside the thread to prevent
# access problems, as a single connection can only be used inside a
# single thread.
self.mnemosyne.initialise(os.path.abspath("sync_from_here"))
self.mnemosyne.review_controller().reset()
Server.__init__(self, "server_machine_id", "127.0.0.1", 8190,
self.mnemosyne.main_widget())
# Because we stop_after_sync is True, serve_forever will actually stop
# after one sync.
self.serve_forever()
self.mnemosyne.finalise()
示例4: TestLogging
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class TestLogging(MnemosyneTest):
def restart(self):
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(\
("test_logging", "MyMainWidget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"))
self.review_controller().reset()
def test_logging(self):
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.review_controller().grade_answer(0)
self.review_controller().new_question()
self.review_controller().grade_answer(1)
self.review_controller().grade_answer(4)
self.mnemosyne.finalise()
self.restart()
fact_data = {"q": "2", "a": "a"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.controller().delete_current_fact()
self.log().dump_to_science_log()
sql_res = self.database().con.execute(\
"select * from log where _id=1").fetchone()
assert sql_res["event_type"] == EventTypes.STARTED_PROGRAM
sql_res = self.database().con.execute(\
"select * from log where _id=2").fetchone()
assert sql_res["event_type"] == EventTypes.STARTED_SCHEDULER
sql_res = self.database().con.execute(\
"select * from log where _id=3").fetchone()
assert sql_res["event_type"] == EventTypes.LOADED_DATABASE
assert sql_res["acq_reps"] == 0
assert sql_res["ret_reps"] == 0
assert sql_res["lapses"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=4").fetchone()
assert sql_res["event_type"] == EventTypes.ADDED_FACT
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=5").fetchone()
assert sql_res["event_type"] == EventTypes.ADDED_TAG
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=6").fetchone()
assert sql_res["event_type"] == EventTypes.ADDED_CARD
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=7").fetchone()
assert sql_res["event_type"] == EventTypes.REPETITION
assert sql_res["acq_reps"] == 1
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] == 0
assert sql_res["new_interval"] == 0
assert sql_res["thinking_time"] == 0
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=8").fetchone()
assert sql_res["event_type"] == EventTypes.REPETITION
assert sql_res["acq_reps"] == 2
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] == 0
assert sql_res["new_interval"] == 0
assert sql_res["thinking_time"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=9").fetchone()
assert sql_res["event_type"] == EventTypes.REPETITION
assert sql_res["acq_reps"] == 3
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] <= 10 # Depends on CPU load.
assert sql_res["new_interval"] > 0
assert sql_res["thinking_time"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=10").fetchone()
assert sql_res["event_type"] == EventTypes.SAVED_DATABASE
assert sql_res["acq_reps"] == 0
assert sql_res["ret_reps"] == 0
#.........这里部分代码省略.........
示例5: TestCrammingScheduler
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
#.........这里部分代码省略.........
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]
self.review_controller().show_new_question()
self.controller().delete_current_card()
assert self.review_controller().card == None
def test_3(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]
self.review_controller().show_new_question()
self.review_controller().show_answer()
self.review_controller().grade_answer(0)
self.review_controller().counters()
self.mnemosyne.finalise()
self.mnemosyne.initialise(os.path.abspath("dot_test"), automatic_upgrades=False)
assert self.scheduler().name == "cramming"
def test_4(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]
self.review_controller().show_new_question()
self.database().unload()
self.review_controller().reset()
self.restart()
示例6: WebServer
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [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()
#.........这里部分代码省略.........
示例7: TestDatabase
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
#.........这里部分代码省略.........
def test_update_tag(self):
fact_data = {"f": "question",
"b": "answer"}
card_type = self.card_type_with_id("1")
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact = card.fact
self.controller().edit_card_and_sisters(card, fact_data, card_type,
new_tag_names=["default1"], correspondence=[])
new_card = self.database().card(card._id, is_id_internal=True)
tag_names = [tag.name for tag in new_card.tags]
assert len(tag_names) == 1
assert "default1" in tag_names
assert self.database().con.execute(\
"select count() from log where event_type=?",
(EventTypes.EDITED_CARD, )).fetchone()[0] == 1
def test_empty_argument(self):
assert self.database().tags_from_cards_with_internal_ids([]) == []
def test_clones(self):
fact_data = {"f": "question",
"b": "answer"}
card_type = self.card_type_with_id("1")
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact = card.fact
self.controller().clone_card_type(card_type, "my_1")
new_card_type = self.card_type_with_id("1::my_1")
self.controller().edit_card_and_sisters(card, fact_data,
new_card_type, new_tag_names=["default2"], correspondence=[])
self.mnemosyne.finalise()
self.restart()
assert self.database().fact_count() == 1
_card_id, _fact_id = list(self.database().cards_unseen())[0]
fact = self.database().fact(_fact_id, is_id_internal=True)
card_type = self.card_type_with_id("1::my_1")
assert card_type.id == "1::my_1"
assert card_type == card_type
def test_plugin_and_clones(self):
for plugin in self.plugins():
component = plugin.components[0]
if component.component_type == "card_type" and component.id == "4":
plugin.activate()
fact_data = {"loc": "location",
"blank": "blank",
"marked": "marked"}
card_type = self.card_type_with_id("4")
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
assert self.database().fact_count() == 1
fact = card.fact
self.controller().clone_card_type(card_type, "my_4")
new_card_type = self.card_type_with_id("4::my_4")
self.controller().edit_card_and_sisters(card, fact_data,
new_card_type, new_tag_names=["default2"], correspondence=[])
assert self.database().fact_count() == 1
self.mnemosyne.finalise()
示例8: MnemosyneTest
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [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]
示例9:
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [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()
示例10: TestCrammingScheduler
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class TestCrammingScheduler(MnemosyneTest):
def setup(self):
os.system("rm -fr dot_test")
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(\
("test_cramming", "Widget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"))
from mnemosyne.libmnemosyne.plugins.cramming_plugin import CrammingPlugin
for plugin in self.plugins():
if isinstance(plugin, CrammingPlugin):
plugin.activate()
break
self.review_controller().reset()
def test_1(self):
from mnemosyne.libmnemosyne.schedulers.cramming import Cramming
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"q": "2", "a": "a"}
card_2 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
fact_data = {"q": "3", "a": "a"}
card_3 = self.controller().create_new_cards(fact_data, card_type,
grade=2, tag_names=["default"])[0]
fact_data = {"q": "4", "a": "a"}
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)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 4
assert self.database().scheduler_data_count(Cramming.WRONG) == 0
card = self.scheduler().get_next_card()
self.scheduler().grade_answer(card, 0)
self.database().update_card(card)
assert self.database().scheduler_data_count(Cramming.UNSEEN) == 3
assert self.database().scheduler_data_count(Cramming.WRONG) == 1
card = self.scheduler().get_next_card()
self.scheduler().grade_answer(card, 5)
self.database().update_card(card)
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):
card = self.scheduler().get_next_card()
self.scheduler().grade_answer(card, 0)
self.database().update_card(card)
# Pass the cards a couple of times.
for i in range(8):
card = self.scheduler().get_next_card()
self.scheduler().grade_answer(card, 5)
self.database().update_card(card)
def test_2(self):
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.controller().delete_current_fact()
assert self.review_controller().card == None
def test_3(self):
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.mnemosyne.finalise()
self.mnemosyne.initialise(os.path.abspath("dot_test"))
assert self.scheduler().name == "cramming"
def test_4(self):
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card_1 = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.database().unload()
self.review_controller().reset()
self.restart()
示例11: startup
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
#.........这里部分代码省略.........
if options.data_dir != None:
data_dir = os.path.abspath(options.data_dir)
elif os.path.exists(os.path.join(os.getcwdu(), "mnemosyne2")):
data_dir = os.path.abspath(os.path.join(os.getcwdu(), "mnemosyne2"))
# Filename argument.
if len(args) > 0:
filename = os.path.abspath(args[0])
else:
filename = None
# Load the Mnemosyne library.
mnemosyne = Mnemosyne(upload_science_logs=True)
# Initialise GUI toolkit.
a = QApplication(sys.argv)
a.setApplicationName("Mnemosyne")
# TODO: install translator for Qt messages.
# Under Windows, move out of library.zip to get the true prefix.
# from mnemosyne.pyqt_ui.main_window import prefix
#if sys.platform == "win32":
# prefix = os.path.split(prefix)[0]
# prefix = os.path.split(prefix)[0]
# prefix = os.path.split(prefix)[0]
#translator = QTranslator(a)
#translator.load("qt_" + loc + ".qm", os.path.join(prefix, 'locale'))
#a.installTranslator(translator)
# Add other components we need. The translator should obviously come first,
# and the UI components should come in the order they should be instantiated,
# but apart from that, the order does not matter.
mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.main_wdgt",
"MainWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.review_wdgt",
"ReviewWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.configuration",
"PyQtConfiguration"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.pyqt_render_chain",
"PyQtRenderChain"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.add_cards_dlg",
"AddCardsDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.edit_card_dlg",
"EditCardDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.browse_cards_dlg",
"BrowseCardsDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.activate_cards_dlg",
"ActivateCardsDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.cloned_card_types_list_dlg",
"ClonedCardTypesListDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.card_appearance_dlg",
"CardAppearanceDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.activate_plugins_dlg",
"ActivatePluginsDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_dlg",
"StatisticsDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.card_type_wdgt_generic",
"GenericCardTypeWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgts_plotting",
"ScheduleWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgts_plotting",
"RetentionScoreWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgts_plotting",
"GradesWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgts_plotting",
"EasinessWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgts_plotting",
"CardsAddedWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.statistics_wdgt_html",
"HtmlStatisticsWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.criterion_wdgt_default",
"DefaultCriterionWdgt"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.configuration_dlg",
"ConfigurationDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.sync_dlg",
"SyncDlg"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.qt_sync_server",
"QtSyncServer"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.configuration_wdgt_main",
"ConfigurationWdgtMain"))
mnemosyne.components.append(("mnemosyne.pyqt_ui.configuration_wdgt_sync_server",
"ConfigurationWdgtSyncServer"))
mnemosyne.extra_components_for_plugin["CrammingPlugin"] = \
[("mnemosyne.pyqt_ui.review_wdgt_cramming",
"ReviewWdgtCramming")]
# Run Mnemosyne.
mnemosyne.initialise(data_dir=data_dir, filename=filename)
mnemosyne.main_widget().show()
mnemosyne.main_widget().raise_() # Needed for OSX.
# TODO: check first run wizard.
#if config()["first_run"] == True:
# w.productTour()
# config()["first_run"] = False
#elif config()["show_daily_tips"] == True:
# w.Tip()
a.exec_()
mnemosyne.finalise()
示例12: TestLogging
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [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.
#.........这里部分代码省略.........
示例13: TestLogging
# 需要导入模块: from mnemosyne.libmnemosyne import Mnemosyne [as 别名]
# 或者: from mnemosyne.libmnemosyne.Mnemosyne import finalise [as 别名]
class TestLogging(MnemosyneTest):
def restart(self):
self.mnemosyne = Mnemosyne()
self.mnemosyne.components.insert(0, ("mnemosyne.libmnemosyne.translator",
"GetTextTranslator"))
self.mnemosyne.components.append(\
("test_logging", "MyMainWidget"))
self.mnemosyne.components.append(\
("mnemosyne.libmnemosyne.ui_components.review_widget", "ReviewWidget"))
self.mnemosyne.initialise(os.path.abspath("dot_test"))
self.review_controller().reset()
def test_logging(self):
card_type = self.card_type_by_id("1")
fact_data = {"q": "1", "a": "a"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.review_controller().grade_answer(0)
self.review_controller().new_question()
self.review_controller().grade_answer(1)
self.review_controller().grade_answer(4)
self.mnemosyne.finalise()
self.restart()
fact_data = {"q": "2", "a": "a"}
card = self.controller().create_new_cards(fact_data, card_type,
grade=-1, tag_names=["default"])[0]
self.review_controller().new_question()
self.controller().delete_current_fact()
self.log().dump_to_txt_log()
sql_res = self.database().con.execute(\
"select * from log where _id=1").fetchone()
assert sql_res["event"] == self.database().STARTED_PROGRAM
sql_res = self.database().con.execute(\
"select * from log where _id=2").fetchone()
assert sql_res["event"] == self.database().STARTED_SCHEDULER
sql_res = self.database().con.execute(\
"select * from log where _id=3").fetchone()
assert sql_res["event"] == self.database().LOADED_DATABASE
assert sql_res["acq_reps"] == 0
assert sql_res["ret_reps"] == 0
assert sql_res["lapses"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=4").fetchone()
assert sql_res["event"] == self.database().ADDED_FACT
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=5").fetchone()
assert sql_res["event"] == self.database().ADDED_TAG
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=6").fetchone()
assert sql_res["event"] == self.database().ADDED_CARD
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=7").fetchone()
assert sql_res["event"] == self.database().REPETITION
assert sql_res["acq_reps"] == 1
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] == 0
assert sql_res["new_interval"] == 0
assert sql_res["thinking_time"] == 0
assert sql_res["object_id"] is not None
sql_res = self.database().con.execute(\
"select * from log where _id=8").fetchone()
assert sql_res["event"] == self.database().REPETITION
assert sql_res["acq_reps"] == 2
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] == 0
assert sql_res["new_interval"] == 0
assert sql_res["thinking_time"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=9").fetchone()
assert sql_res["event"] == self.database().REPETITION
assert sql_res["acq_reps"] == 3
assert sql_res["ret_reps"] == 0
assert sql_res["scheduled_interval"] == 0
assert sql_res["actual_interval"] <= 10 # Depends on CUP load.
assert sql_res["new_interval"] > 0
assert sql_res["thinking_time"] == 0
sql_res = self.database().con.execute(\
"select * from log where _id=10").fetchone()
assert sql_res["event"] == self.database().SAVED_DATABASE
assert sql_res["acq_reps"] == 0
assert sql_res["ret_reps"] == 0
#.........这里部分代码省略.........