We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
[BUG]: Quiz does not automatically move to next question on input
### Describe the bug

I was taking a lesson on decimal place values and when I input a correct answer, I get a message that 

_"Note: When you select an option, the quiz will automatically move to the next question."_

But it doesn't move. It still asks me to click on 'continue'

![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347153-a13a7226-e9a9-4fd5-a03d-ea3fc139a94c.png)


### Steps To Reproduce

1. Go Math Lessons
2. Click on Decimals (This occurs in other lessons too)
3. Take the introductory quizzes
4. Take quiz on Decimals
5. Answer it correctly
6. See error

### Expected Behavior

I expect to be taken to next page when I get my answer correctly, as displayed by the message.

### Screenshots/Videos

![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347375-1ad37d8e-02db-4d40-8bd0-236f11fa2a20.png)


### What device are you using?

Desktop

### Operating System

Windows

### What browsers are you seeing the problem on?

Chrome

### Browser version

Version 111.0.5563.65 (Official Build) (64-bit)

### Additional context

_No response_
[BUG]: Quiz does not automatically move to next question on input
### Describe the bug

I was taking a lesson on decimal place values and when I input a correct answer, I get a message that 

_"Note: When you select an option, the quiz will automatically move to the next question."_

But it doesn't move. It still asks me to click on 'continue'

![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347153-a13a7226-e9a9-4fd5-a03d-ea3fc139a94c.png)


### Steps To Reproduce

1. Go Math Lessons
2. Click on Decimals (This occurs in other lessons too)
3. Take the introductory quizzes
4. Take quiz on Decimals
5. Answer it correctly
6. See error

### Expected Behavior

I expect to be taken to next page when I get my answer correctly, as displayed by the message.

### Screenshots/Videos

![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347375-1ad37d8e-02db-4d40-8bd0-236f11fa2a20.png)


### What device are you using?

Desktop

### Operating System

Windows

### What browsers are you seeing the problem on?

Chrome

### Browser version

Version 111.0.5563.65 (Official Build) (64-bit)

### Additional context

_No response_

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `extensions/interactions/ItemSelectionInput/ItemSelectionInput.py`
Content:
```
1 # coding: utf-8
2 #
3 # Copyright 2014 The Oppia Authors. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, softwar
12 # distributed under the License is distributed on an "AS-IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 """Python configuration for ItemSelectionInput interaction."""
18 
19 from __future__ import annotations
20 
21 from extensions.interactions import base
22 
23 from typing import List
24 
25 MYPY = False
26 if MYPY:  # pragma: no cover
27     from extensions import domain
28 
29 
30 class ItemSelectionInput(base.BaseInteraction):
31     """Interaction for item selection input."""
32 
33     name: str = 'Item Selection'
34     description: str = (
35         'Allows learners to select various options.')
36     display_mode: str = base.DISPLAY_MODE_INLINE
37     _dependency_ids: List[str] = []
38     answer_type: str = 'SetOfTranslatableHtmlContentIds'
39     # Radio buttons get unselected when specifying a solution. This needs to be
40     # fixed before solution feature can support this interaction.
41     can_have_solution: bool = False
42     # ItemSelectionInput's submit button is dynamic and is handled
43     # separately.
44     show_generic_submit_button: bool = False
45 
46     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{
47         'name': 'minAllowableSelectionCount',
48         'description': 'Minimum number of selections permitted',
49         'schema': {
50             'type': 'int',
51             'validators': [{
52                 'id': 'is_at_least',
53                 'min_value': 0,
54             }],
55         },
56         'default_value': 1,
57     }, {
58         'name': 'maxAllowableSelectionCount',
59         'description': 'Maximum number of selections permitted',
60         'schema': {
61             'type': 'int',
62             'validators': [{
63                 'id': 'is_at_least',
64                 'min_value': 1,
65             }],
66         },
67         'default_value': 1,
68     }, {
69         'name': 'choices',
70         'description': 'Items for selection',
71         'schema': {
72             'type': 'list',
73             'validators': [{
74                 'id': 'has_unique_subtitled_contents'
75             }],
76             'items': {
77                 'type': 'custom',
78                 'obj_type': 'SubtitledHtml',
79                 'validators': [{
80                     'id': 'has_subtitled_html_non_empty'
81                 }],
82                 'replacement_ui_config': {
83                     'html': {
84                         'hide_complex_extensions': True,
85                         'placeholder': 'Sample item answer',
86                     }
87                 }
88             },
89             'ui_config': {
90                 'add_element_text': 'Add item for selection',
91             }
92         },
93         'default_value': [{
94             'content_id': None,
95             'html': ''
96         }],
97     }]
98 
99     _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{
100         # Table with keyed answer counts for top N answers.
101         'id': 'EnumeratedFrequencyTable',
102         'options': {
103             'column_headers': ['Answer (click to expand/collapse)', 'Count'],
104             'title': 'Top answers',
105         },
106         'calculation_id': 'Top10AnswerFrequencies',
107         'addressed_info_is_supported': True,
108     }]
109
```

Path: `extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py`
Content:
```
1 # coding: utf-8
2 #
3 # Copyright 2014 The Oppia Authors. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, softwar
12 # distributed under the License is distributed on an "AS-IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 """Python configuration for MultipleChoiceInput interaction."""
18 
19 from __future__ import annotations
20 
21 from extensions.interactions import base
22 
23 from typing import List, Optional
24 
25 MYPY = False
26 if MYPY:  # pragma: no cover
27     from extensions import domain
28 
29 
30 class MultipleChoiceInput(base.BaseInteraction):
31     """Interaction for multiple choice input."""
32 
33     name: str = 'Multiple Choice'
34     description: str = (
35         'Allows learners to select one of a list of multiple-choice options.')
36     display_mode: str = base.DISPLAY_MODE_INLINE
37     _dependency_ids: List[str] = []
38     answer_type: str = 'NonnegativeInt'
39     instructions: Optional[str] = None
40     narrow_instructions: Optional[str] = None
41     needs_summary: bool = False
42     # Radio buttons get unselected when specifying a solution. This needs to be
43     # fixed before solution feature can support this interaction.
44     can_have_solution: bool = False
45     show_generic_submit_button: bool = False
46 
47     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{
48         'name': 'choices',
49         'description': 'Multiple Choice options',
50         'schema': {
51             'type': 'list',
52             'validators': [
53                 {
54                     'id': 'has_length_at_least',
55                     'min_value': 1,
56                 },
57                 {
58                     'id': 'has_unique_subtitled_contents'
59                 }
60             ],
61             'items': {
62                 'type': 'custom',
63                 'obj_type': 'SubtitledHtml',
64                 'validators': [{
65                     'id': 'has_subtitled_html_non_empty'
66                 }],
67                 'replacement_ui_config': {
68                     'html': {
69                         'hide_complex_extensions': True,
70                         'placeholder': (
71                             'Enter an option for the learner to select'),
72                     }
73                 }
74             },
75             'ui_config': {
76                 'add_element_text': 'Add multiple choice option',
77             }
78         },
79         'default_value': [{
80             'content_id': None,
81             'html': ''
82         }],
83     }, {
84         'name': 'showChoicesInShuffledOrder',
85         'description': 'Shuffle answer choices',
86         'schema': {
87             'type': 'bool',
88         },
89         'default_value': True
90     }]
91 
92     _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{
93         'id': 'SortedTiles',
94         'options': {'header': 'Top answers', 'use_percentages': True},
95         'calculation_id': 'AnswerFrequencies',
96         'addressed_info_is_supported': True,
97     }]
98
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py b/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py
--- a/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py
+++ b/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py
@@ -39,9 +39,8 @@
     # Radio buttons get unselected when specifying a solution. This needs to be
     # fixed before solution feature can support this interaction.
     can_have_solution: bool = False
-    # ItemSelectionInput's submit button is dynamic and is handled
-    # separately.
-    show_generic_submit_button: bool = False
+    # ItemSelectionInput interaction must contain a generic submit button.
+    show_generic_submit_button: bool = True
 
     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{
         'name': 'minAllowableSelectionCount',
diff --git a/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py b/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py
--- a/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py
+++ b/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py
@@ -42,7 +42,8 @@
     # Radio buttons get unselected when specifying a solution. This needs to be
     # fixed before solution feature can support this interaction.
     can_have_solution: bool = False
-    show_generic_submit_button: bool = False
+    # MultipleChoiceInput interaction must contain a generic submit button.
+    show_generic_submit_button: bool = True
 
     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{
         'name': 'choices',

{"golden_diff": "diff --git a/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py b/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py\n--- a/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py\n+++ b/extensions/interactions/ItemSelectionInput/ItemSelectionInput.py\n@@ -39,9 +39,8 @@\n     # Radio buttons get unselected when specifying a solution. This needs to be\n     # fixed before solution feature can support this interaction.\n     can_have_solution: bool = False\n-    # ItemSelectionInput's submit button is dynamic and is handled\n-    # separately.\n-    show_generic_submit_button: bool = False\n+    # ItemSelectionInput interaction must contain a generic submit button.\n+    show_generic_submit_button: bool = True\n \n     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n         'name': 'minAllowableSelectionCount',\ndiff --git a/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py b/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py\n--- a/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py\n+++ b/extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py\n@@ -42,7 +42,8 @@\n     # Radio buttons get unselected when specifying a solution. This needs to be\n     # fixed before solution feature can support this interaction.\n     can_have_solution: bool = False\n-    show_generic_submit_button: bool = False\n+    # MultipleChoiceInput interaction must contain a generic submit button.\n+    show_generic_submit_button: bool = True\n \n     _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n         'name': 'choices',\n", "issue": "[BUG]: Quiz does not automatically move to next question on input\n### Describe the bug\n\nI was taking a lesson on decimal place values and when I input a correct answer, I get a message that \r\n\r\n_\"Note: When you select an option, the quiz will automatically move to the next question.\"_\r\n\r\nBut it doesn't move. It still asks me to click on 'continue'\r\n\r\n![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347153-a13a7226-e9a9-4fd5-a03d-ea3fc139a94c.png)\r\n\n\n### Steps To Reproduce\n\n1. Go Math Lessons\r\n2. Click on Decimals (This occurs in other lessons too)\r\n3. Take the introductory quizzes\r\n4. Take quiz on Decimals\r\n5. Answer it correctly\r\n6. See error\n\n### Expected Behavior\n\nI expect to be taken to next page when I get my answer correctly, as displayed by the message.\n\n### Screenshots/Videos\n\n![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347375-1ad37d8e-02db-4d40-8bd0-236f11fa2a20.png)\r\n\n\n### What device are you using?\n\nDesktop\n\n### Operating System\n\nWindows\n\n### What browsers are you seeing the problem on?\n\nChrome\n\n### Browser version\n\nVersion 111.0.5563.65 (Official Build) (64-bit)\n\n### Additional context\n\n_No response_\n[BUG]: Quiz does not automatically move to next question on input\n### Describe the bug\n\nI was taking a lesson on decimal place values and when I input a correct answer, I get a message that \r\n\r\n_\"Note: When you select an option, the quiz will automatically move to the next question.\"_\r\n\r\nBut it doesn't move. It still asks me to click on 'continue'\r\n\r\n![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347153-a13a7226-e9a9-4fd5-a03d-ea3fc139a94c.png)\r\n\n\n### Steps To Reproduce\n\n1. Go Math Lessons\r\n2. Click on Decimals (This occurs in other lessons too)\r\n3. Take the introductory quizzes\r\n4. Take quiz on Decimals\r\n5. Answer it correctly\r\n6. See error\n\n### Expected Behavior\n\nI expect to be taken to next page when I get my answer correctly, as displayed by the message.\n\n### Screenshots/Videos\n\n![Screenshot (1)](https://user-images.githubusercontent.com/115101990/225347375-1ad37d8e-02db-4d40-8bd0-236f11fa2a20.png)\r\n\n\n### What device are you using?\n\nDesktop\n\n### Operating System\n\nWindows\n\n### What browsers are you seeing the problem on?\n\nChrome\n\n### Browser version\n\nVersion 111.0.5563.65 (Official Build) (64-bit)\n\n### Additional context\n\n_No response_\n", "before_files": [{"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Python configuration for ItemSelectionInput interaction.\"\"\"\n\nfrom __future__ import annotations\n\nfrom extensions.interactions import base\n\nfrom typing import List\n\nMYPY = False\nif MYPY:  # pragma: no cover\n    from extensions import domain\n\n\nclass ItemSelectionInput(base.BaseInteraction):\n    \"\"\"Interaction for item selection input.\"\"\"\n\n    name: str = 'Item Selection'\n    description: str = (\n        'Allows learners to select various options.')\n    display_mode: str = base.DISPLAY_MODE_INLINE\n    _dependency_ids: List[str] = []\n    answer_type: str = 'SetOfTranslatableHtmlContentIds'\n    # Radio buttons get unselected when specifying a solution. This needs to be\n    # fixed before solution feature can support this interaction.\n    can_have_solution: bool = False\n    # ItemSelectionInput's submit button is dynamic and is handled\n    # separately.\n    show_generic_submit_button: bool = False\n\n    _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n        'name': 'minAllowableSelectionCount',\n        'description': 'Minimum number of selections permitted',\n        'schema': {\n            'type': 'int',\n            'validators': [{\n                'id': 'is_at_least',\n                'min_value': 0,\n            }],\n        },\n        'default_value': 1,\n    }, {\n        'name': 'maxAllowableSelectionCount',\n        'description': 'Maximum number of selections permitted',\n        'schema': {\n            'type': 'int',\n            'validators': [{\n                'id': 'is_at_least',\n                'min_value': 1,\n            }],\n        },\n        'default_value': 1,\n    }, {\n        'name': 'choices',\n        'description': 'Items for selection',\n        'schema': {\n            'type': 'list',\n            'validators': [{\n                'id': 'has_unique_subtitled_contents'\n            }],\n            'items': {\n                'type': 'custom',\n                'obj_type': 'SubtitledHtml',\n                'validators': [{\n                    'id': 'has_subtitled_html_non_empty'\n                }],\n                'replacement_ui_config': {\n                    'html': {\n                        'hide_complex_extensions': True,\n                        'placeholder': 'Sample item answer',\n                    }\n                }\n            },\n            'ui_config': {\n                'add_element_text': 'Add item for selection',\n            }\n        },\n        'default_value': [{\n            'content_id': None,\n            'html': ''\n        }],\n    }]\n\n    _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{\n        # Table with keyed answer counts for top N answers.\n        'id': 'EnumeratedFrequencyTable',\n        'options': {\n            'column_headers': ['Answer (click to expand/collapse)', 'Count'],\n            'title': 'Top answers',\n        },\n        'calculation_id': 'Top10AnswerFrequencies',\n        'addressed_info_is_supported': True,\n    }]\n", "path": "extensions/interactions/ItemSelectionInput/ItemSelectionInput.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Python configuration for MultipleChoiceInput interaction.\"\"\"\n\nfrom __future__ import annotations\n\nfrom extensions.interactions import base\n\nfrom typing import List, Optional\n\nMYPY = False\nif MYPY:  # pragma: no cover\n    from extensions import domain\n\n\nclass MultipleChoiceInput(base.BaseInteraction):\n    \"\"\"Interaction for multiple choice input.\"\"\"\n\n    name: str = 'Multiple Choice'\n    description: str = (\n        'Allows learners to select one of a list of multiple-choice options.')\n    display_mode: str = base.DISPLAY_MODE_INLINE\n    _dependency_ids: List[str] = []\n    answer_type: str = 'NonnegativeInt'\n    instructions: Optional[str] = None\n    narrow_instructions: Optional[str] = None\n    needs_summary: bool = False\n    # Radio buttons get unselected when specifying a solution. This needs to be\n    # fixed before solution feature can support this interaction.\n    can_have_solution: bool = False\n    show_generic_submit_button: bool = False\n\n    _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n        'name': 'choices',\n        'description': 'Multiple Choice options',\n        'schema': {\n            'type': 'list',\n            'validators': [\n                {\n                    'id': 'has_length_at_least',\n                    'min_value': 1,\n                },\n                {\n                    'id': 'has_unique_subtitled_contents'\n                }\n            ],\n            'items': {\n                'type': 'custom',\n                'obj_type': 'SubtitledHtml',\n                'validators': [{\n                    'id': 'has_subtitled_html_non_empty'\n                }],\n                'replacement_ui_config': {\n                    'html': {\n                        'hide_complex_extensions': True,\n                        'placeholder': (\n                            'Enter an option for the learner to select'),\n                    }\n                }\n            },\n            'ui_config': {\n                'add_element_text': 'Add multiple choice option',\n            }\n        },\n        'default_value': [{\n            'content_id': None,\n            'html': ''\n        }],\n    }, {\n        'name': 'showChoicesInShuffledOrder',\n        'description': 'Shuffle answer choices',\n        'schema': {\n            'type': 'bool',\n        },\n        'default_value': True\n    }]\n\n    _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{\n        'id': 'SortedTiles',\n        'options': {'header': 'Top answers', 'use_percentages': True},\n        'calculation_id': 'AnswerFrequencies',\n        'addressed_info_is_supported': True,\n    }]\n", "path": "extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py"}], "after_files": [{"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Python configuration for ItemSelectionInput interaction.\"\"\"\n\nfrom __future__ import annotations\n\nfrom extensions.interactions import base\n\nfrom typing import List\n\nMYPY = False\nif MYPY:  # pragma: no cover\n    from extensions import domain\n\n\nclass ItemSelectionInput(base.BaseInteraction):\n    \"\"\"Interaction for item selection input.\"\"\"\n\n    name: str = 'Item Selection'\n    description: str = (\n        'Allows learners to select various options.')\n    display_mode: str = base.DISPLAY_MODE_INLINE\n    _dependency_ids: List[str] = []\n    answer_type: str = 'SetOfTranslatableHtmlContentIds'\n    # Radio buttons get unselected when specifying a solution. This needs to be\n    # fixed before solution feature can support this interaction.\n    can_have_solution: bool = False\n    # ItemSelectionInput interaction must contain a generic submit button.\n    show_generic_submit_button: bool = True\n\n    _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n        'name': 'minAllowableSelectionCount',\n        'description': 'Minimum number of selections permitted',\n        'schema': {\n            'type': 'int',\n            'validators': [{\n                'id': 'is_at_least',\n                'min_value': 0,\n            }],\n        },\n        'default_value': 1,\n    }, {\n        'name': 'maxAllowableSelectionCount',\n        'description': 'Maximum number of selections permitted',\n        'schema': {\n            'type': 'int',\n            'validators': [{\n                'id': 'is_at_least',\n                'min_value': 1,\n            }],\n        },\n        'default_value': 1,\n    }, {\n        'name': 'choices',\n        'description': 'Items for selection',\n        'schema': {\n            'type': 'list',\n            'validators': [{\n                'id': 'has_unique_subtitled_contents'\n            }],\n            'items': {\n                'type': 'custom',\n                'obj_type': 'SubtitledHtml',\n                'validators': [{\n                    'id': 'has_subtitled_html_non_empty'\n                }],\n                'replacement_ui_config': {\n                    'html': {\n                        'hide_complex_extensions': True,\n                        'placeholder': 'Sample item answer',\n                    }\n                }\n            },\n            'ui_config': {\n                'add_element_text': 'Add item for selection',\n            }\n        },\n        'default_value': [{\n            'content_id': None,\n            'html': ''\n        }],\n    }]\n\n    _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{\n        # Table with keyed answer counts for top N answers.\n        'id': 'EnumeratedFrequencyTable',\n        'options': {\n            'column_headers': ['Answer (click to expand/collapse)', 'Count'],\n            'title': 'Top answers',\n        },\n        'calculation_id': 'Top10AnswerFrequencies',\n        'addressed_info_is_supported': True,\n    }]\n", "path": "extensions/interactions/ItemSelectionInput/ItemSelectionInput.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\n\"\"\"Python configuration for MultipleChoiceInput interaction.\"\"\"\n\nfrom __future__ import annotations\n\nfrom extensions.interactions import base\n\nfrom typing import List, Optional\n\nMYPY = False\nif MYPY:  # pragma: no cover\n    from extensions import domain\n\n\nclass MultipleChoiceInput(base.BaseInteraction):\n    \"\"\"Interaction for multiple choice input.\"\"\"\n\n    name: str = 'Multiple Choice'\n    description: str = (\n        'Allows learners to select one of a list of multiple-choice options.')\n    display_mode: str = base.DISPLAY_MODE_INLINE\n    _dependency_ids: List[str] = []\n    answer_type: str = 'NonnegativeInt'\n    instructions: Optional[str] = None\n    narrow_instructions: Optional[str] = None\n    needs_summary: bool = False\n    # Radio buttons get unselected when specifying a solution. This needs to be\n    # fixed before solution feature can support this interaction.\n    can_have_solution: bool = False\n    # MultipleChoiceInput interaction must contain a generic submit button.\n    show_generic_submit_button: bool = True\n\n    _customization_arg_specs: List[domain.CustomizationArgSpecsDict] = [{\n        'name': 'choices',\n        'description': 'Multiple Choice options',\n        'schema': {\n            'type': 'list',\n            'validators': [\n                {\n                    'id': 'has_length_at_least',\n                    'min_value': 1,\n                },\n                {\n                    'id': 'has_unique_subtitled_contents'\n                }\n            ],\n            'items': {\n                'type': 'custom',\n                'obj_type': 'SubtitledHtml',\n                'validators': [{\n                    'id': 'has_subtitled_html_non_empty'\n                }],\n                'replacement_ui_config': {\n                    'html': {\n                        'hide_complex_extensions': True,\n                        'placeholder': (\n                            'Enter an option for the learner to select'),\n                    }\n                }\n            },\n            'ui_config': {\n                'add_element_text': 'Add multiple choice option',\n            }\n        },\n        'default_value': [{\n            'content_id': None,\n            'html': ''\n        }],\n    }, {\n        'name': 'showChoicesInShuffledOrder',\n        'description': 'Shuffle answer choices',\n        'schema': {\n            'type': 'bool',\n        },\n        'default_value': True\n    }]\n\n    _answer_visualization_specs: List[base.AnswerVisualizationSpecsDict] = [{\n        'id': 'SortedTiles',\n        'options': {'header': 'Top answers', 'use_percentages': True},\n        'calculation_id': 'AnswerFrequencies',\n        'addressed_info_is_supported': True,\n    }]\n", "path": "extensions/interactions/MultipleChoiceInput/MultipleChoiceInput.py"}]}