Spaces:
Runtime error
Runtime error
Tristan Thrush
commited on
Commit
·
40bc8d5
1
Parent(s):
a4b2b7a
changes to make it work on huggingface.co in addition to mturk
Browse files
app.py
CHANGED
|
@@ -63,11 +63,13 @@ with demo:
|
|
| 63 |
toggle_example_submit = gr.update(visible=not done)
|
| 64 |
new_state_md = f"State: {state['cnt']}/{total_cnt} ({state['fooled']} fooled)"
|
| 65 |
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
|
|
|
|
|
|
| 71 |
|
| 72 |
return pred_confidences, ret, state, toggle_example_submit, toggle_final_submit, new_state_md, dummy
|
| 73 |
|
|
@@ -87,11 +89,22 @@ with demo:
|
|
| 87 |
# The HIT is also stored and logged on mturk when post_hit_js is run below.
|
| 88 |
# This _store_in_huggingface_dataset function just demonstrates how easy it is
|
| 89 |
# to automatically create a Hugging Face dataset from mturk.
|
| 90 |
-
def _store_in_huggingface_dataset(state):
|
| 91 |
with open(DATA_FILE, "a") as jsonlfile:
|
| 92 |
-
jsonlfile.write(json.dumps(state))
|
| 93 |
repo.push_to_hub()
|
| 94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 95 |
# Button event handlers
|
| 96 |
get_window_location_search_js = """
|
| 97 |
function(text_input, label_input, state, dummy) {
|
|
@@ -107,27 +120,30 @@ with demo:
|
|
| 107 |
)
|
| 108 |
|
| 109 |
post_hit_js = """
|
| 110 |
-
function(state) {
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
|
|
|
|
|
|
|
|
|
| 124 |
}
|
| 125 |
"""
|
| 126 |
|
| 127 |
submit_hit_button.click(
|
| 128 |
_store_in_huggingface_dataset,
|
| 129 |
-
inputs=[state],
|
| 130 |
-
outputs=
|
| 131 |
_js=post_hit_js,
|
| 132 |
)
|
| 133 |
|
|
|
|
| 63 |
toggle_example_submit = gr.update(visible=not done)
|
| 64 |
new_state_md = f"State: {state['cnt']}/{total_cnt} ({state['fooled']} fooled)"
|
| 65 |
|
| 66 |
+
if "assignmentId" in query:
|
| 67 |
+
# It seems that someone is using this app on mturk. We need to
|
| 68 |
+
# store the assignmentId in the state before submit_hit_button
|
| 69 |
+
# is clicked. We can do this here in _predict. We need to save the
|
| 70 |
+
# assignmentId so that the turker can get credit for their hit.
|
| 71 |
+
query = parse_qs(dummy[1:])
|
| 72 |
+
state["assignmentId"] = query["assignmentId"][0]
|
| 73 |
|
| 74 |
return pred_confidences, ret, state, toggle_example_submit, toggle_final_submit, new_state_md, dummy
|
| 75 |
|
|
|
|
| 89 |
# The HIT is also stored and logged on mturk when post_hit_js is run below.
|
| 90 |
# This _store_in_huggingface_dataset function just demonstrates how easy it is
|
| 91 |
# to automatically create a Hugging Face dataset from mturk.
|
| 92 |
+
def _store_in_huggingface_dataset(state, toggle_final_submit, toggle_example_submit, new_state_md):
|
| 93 |
with open(DATA_FILE, "a") as jsonlfile:
|
| 94 |
+
jsonlfile.write(json.dumps(state) + "\n")
|
| 95 |
repo.push_to_hub()
|
| 96 |
|
| 97 |
+
if state["assignmentId"] == "":
|
| 98 |
+
# If assignmentId is not set, then someone is using this app on
|
| 99 |
+
# huggingface.co, and we can reset the app to it's initial state
|
| 100 |
+
# after they submit their fake "HIT".
|
| 101 |
+
state = {"assignmentId": "", "cnt": 0, "fooled": 0, "data": [], "metadata": {}}
|
| 102 |
+
toggle_final_submit = gr.update(visible=False)
|
| 103 |
+
toggle_example_submit = gr.update(visible=True)
|
| 104 |
+
new_state_md = gr.Markdown(f"State: 0/{total_cnt} (0 fooled)")
|
| 105 |
+
|
| 106 |
+
return state, toggle_final_submit, toggle_example_submit, new_state_md
|
| 107 |
+
|
| 108 |
# Button event handlers
|
| 109 |
get_window_location_search_js = """
|
| 110 |
function(text_input, label_input, state, dummy) {
|
|
|
|
| 120 |
)
|
| 121 |
|
| 122 |
post_hit_js = """
|
| 123 |
+
function(state, toggle_final_submit, toggle_example_submit, new_state_md) {
|
| 124 |
+
if (state["assignmentId"] !== "") {
|
| 125 |
+
//It seems that someone is using this app on mturk, so submit the HIT.
|
| 126 |
+
const form = document.createElement('form');
|
| 127 |
+
form.action = 'https://workersandbox.mturk.com/mturk/externalSubmit';
|
| 128 |
+
form.method = 'post';
|
| 129 |
+
for (const key in state) {
|
| 130 |
+
const hiddenField = document.createElement('input');
|
| 131 |
+
hiddenField.type = 'hidden';
|
| 132 |
+
hiddenField.name = key;
|
| 133 |
+
hiddenField.value = state[key];
|
| 134 |
+
form.appendChild(hiddenField)
|
| 135 |
+
};
|
| 136 |
+
document.body.appendChild(form);
|
| 137 |
+
form.submit();
|
| 138 |
+
}
|
| 139 |
+
return [state, toggle_final_submit, toggle_example_submit, new_state_md];
|
| 140 |
}
|
| 141 |
"""
|
| 142 |
|
| 143 |
submit_hit_button.click(
|
| 144 |
_store_in_huggingface_dataset,
|
| 145 |
+
inputs=[state, toggle_final_submit, toggle_example_submit, new_state_md],
|
| 146 |
+
outputs=[state, toggle_final_submit, toggle_example_submit, new_state_md],
|
| 147 |
_js=post_hit_js,
|
| 148 |
)
|
| 149 |
|