From 4ac244a7b351a05f79f7432ba7b322ab9590574b Mon Sep 17 00:00:00 2001 From: Jack Urbanek Date: Tue, 26 Sep 2023 13:35:34 -0700 Subject: [PATCH 1/4] Script to write out qualifications --- mephisto/scripts/export_qualification_list.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 mephisto/scripts/export_qualification_list.py diff --git a/mephisto/scripts/export_qualification_list.py b/mephisto/scripts/export_qualification_list.py new file mode 100644 index 000000000..e0dc2f49c --- /dev/null +++ b/mephisto/scripts/export_qualification_list.py @@ -0,0 +1,55 @@ +#!/usr/bin/env python3 + +# Copyright (c) Facebook, Inc. and its affiliates. +# This source code is licensed under the MIT license found in the +# LICENSE file in the root directory of this source tree. + +import json +from mephisto.abstractions.databases.local_database import LocalMephistoDB +from mephisto.data_model.worker import Worker +from mephisto.abstractions.providers.mturk.mturk_worker import MTurkWorker + +""" +This script can be used to dump out the contents of one's qualifications +table. This can be useful for bookkeeping, migrations, or sharing qual lists +""" + +def dump_qualifications(): + db = LocalMephistoDB() + do_all = input('Provide comma separated list of specific qualifications to dump, otherwise all will be saved out.\n> ') + if len(do_all.strip()) == 0: + target_qualifications = db.find_qualifications() + else: + target_qualification_names = do_all.split(',') + target_qualifications = [ + db.find_qualifications(qualification_name=n)[0] + for n in target_qualification_names + ] + outfile_name = input("provide an output filename\n> ") + + result = {} + for qualification in target_qualifications: + if qualification.qualification_name.endswith('sandbox'): + continue + print(f"Qualification: {qualification.qualification_name}") + description = input("Provide a useful description for what this qualification entails, blank to skip\n> ") + if len(description.strip()) == 0: + continue + qual_dict = {} + granted_quals = db.check_granted_qualifications(qualification.db_id) + for granted_qual in granted_quals: + worker: Worker = Worker.get(db, granted_qual.worker_id) + if worker.worker_name.endswith('sandbox'): + continue + qual_dict[worker.worker_name] = granted_qual.value + result[qualification.qualification_name] = { + 'description': description, + 'workers': qual_dict, + } + with open(outfile_name, 'w+') as outfile: + json.dump(result, outfile) + + + +if __name__ == '__main__': + dump_qualifications() \ No newline at end of file From d9dc6bc257d318ef3354584b5af39b5aded3a7e8 Mon Sep 17 00:00:00 2001 From: Jack Urbanek Date: Tue, 26 Sep 2023 13:56:48 -0700 Subject: [PATCH 2/4] black --- .../abstractions/architects/mock_architect.py | 2 +- mephisto/scripts/export_qualification_list.py | 29 ++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/mephisto/abstractions/architects/mock_architect.py b/mephisto/abstractions/architects/mock_architect.py index 31fa7d695..e7ad1dafe 100644 --- a/mephisto/abstractions/architects/mock_architect.py +++ b/mephisto/abstractions/architects/mock_architect.py @@ -138,7 +138,7 @@ def __server_thread_fn(self): Main loop for the application """ self.running_instance = tornado.ioloop.IOLoop() - http_server = tornado.httpserver.HTTPServer(self, max_buffer_size=1024**3) + http_server = tornado.httpserver.HTTPServer(self, max_buffer_size=1024 ** 3) http_server.listen(self.port) self.running_instance.start() http_server.stop() diff --git a/mephisto/scripts/export_qualification_list.py b/mephisto/scripts/export_qualification_list.py index e0dc2f49c..f941fc367 100644 --- a/mephisto/scripts/export_qualification_list.py +++ b/mephisto/scripts/export_qualification_list.py @@ -14,42 +14,45 @@ table. This can be useful for bookkeeping, migrations, or sharing qual lists """ + def dump_qualifications(): db = LocalMephistoDB() - do_all = input('Provide comma separated list of specific qualifications to dump, otherwise all will be saved out.\n> ') + do_all = input( + "Provide comma separated list of specific qualifications to dump, otherwise all will be saved out.\n> " + ) if len(do_all.strip()) == 0: target_qualifications = db.find_qualifications() else: - target_qualification_names = do_all.split(',') + target_qualification_names = do_all.split(",") target_qualifications = [ - db.find_qualifications(qualification_name=n)[0] - for n in target_qualification_names + db.find_qualifications(qualification_name=n)[0] for n in target_qualification_names ] outfile_name = input("provide an output filename\n> ") result = {} for qualification in target_qualifications: - if qualification.qualification_name.endswith('sandbox'): + if qualification.qualification_name.endswith("sandbox"): continue print(f"Qualification: {qualification.qualification_name}") - description = input("Provide a useful description for what this qualification entails, blank to skip\n> ") + description = input( + "Provide a useful description for what this qualification entails, blank to skip\n> " + ) if len(description.strip()) == 0: continue qual_dict = {} granted_quals = db.check_granted_qualifications(qualification.db_id) for granted_qual in granted_quals: worker: Worker = Worker.get(db, granted_qual.worker_id) - if worker.worker_name.endswith('sandbox'): + if worker.worker_name.endswith("sandbox"): continue qual_dict[worker.worker_name] = granted_qual.value result[qualification.qualification_name] = { - 'description': description, - 'workers': qual_dict, + "description": description, + "workers": qual_dict, } - with open(outfile_name, 'w+') as outfile: + with open(outfile_name, "w+") as outfile: json.dump(result, outfile) - -if __name__ == '__main__': - dump_qualifications() \ No newline at end of file +if __name__ == "__main__": + dump_qualifications() From 7e7e24a8c6f7163d9678cf27b7eef1f4c9d86a9a Mon Sep 17 00:00:00 2001 From: Paul Abumov Date: Tue, 5 Mar 2024 14:19:45 -0500 Subject: [PATCH 3/4] Script to write out qualifications --- mephisto/scripts/export_qualification_list.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mephisto/scripts/export_qualification_list.py b/mephisto/scripts/export_qualification_list.py index f941fc367..0c1c685e6 100644 --- a/mephisto/scripts/export_qualification_list.py +++ b/mephisto/scripts/export_qualification_list.py @@ -10,7 +10,7 @@ from mephisto.abstractions.providers.mturk.mturk_worker import MTurkWorker """ -This script can be used to dump out the contents of one's qualifications +This script can be used to dump out the contents of one's qualifications table. This can be useful for bookkeeping, migrations, or sharing qual lists """ From 35a402d33024af954724674b46d0dbd205a61602 Mon Sep 17 00:00:00 2001 From: Paul Abumov Date: Tue, 12 Mar 2024 12:16:59 -0400 Subject: [PATCH 4/4] Fixed linter warnings --- mephisto/abstractions/architects/mock_architect.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mephisto/abstractions/architects/mock_architect.py b/mephisto/abstractions/architects/mock_architect.py index e7ad1dafe..31fa7d695 100644 --- a/mephisto/abstractions/architects/mock_architect.py +++ b/mephisto/abstractions/architects/mock_architect.py @@ -138,7 +138,7 @@ def __server_thread_fn(self): Main loop for the application """ self.running_instance = tornado.ioloop.IOLoop() - http_server = tornado.httpserver.HTTPServer(self, max_buffer_size=1024 ** 3) + http_server = tornado.httpserver.HTTPServer(self, max_buffer_size=1024**3) http_server.listen(self.port) self.running_instance.start() http_server.stop()