play-parser 1.2.0__tar.gz → 1.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (737) hide show
  1. {play_parser-1.2.0/src/play_parser.egg-info → play_parser-1.2.1}/PKG-INFO +1 -1
  2. {play_parser-1.2.0 → play_parser-1.2.1}/pyproject.toml +1 -1
  3. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/__init__.py +4 -0
  4. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/types.py +3 -1
  5. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/validation.py +1 -1
  6. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsers.py +35 -4
  7. play_parser-1.2.1/src/play_parser/parsing/profile_detection.py +253 -0
  8. {play_parser-1.2.0 → play_parser-1.2.1/src/play_parser.egg-info}/PKG-INFO +1 -1
  9. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser.egg-info/SOURCES.txt +2 -0
  10. play_parser-1.2.1/tests/test_profile_detection.py +75 -0
  11. {play_parser-1.2.0 → play_parser-1.2.1}/CHANGELOG.md +0 -0
  12. {play_parser-1.2.0 → play_parser-1.2.1}/LICENSE +0 -0
  13. {play_parser-1.2.0 → play_parser-1.2.1}/MANIFEST.in +0 -0
  14. {play_parser-1.2.0 → play_parser-1.2.1}/README.md +0 -0
  15. {play_parser-1.2.0 → play_parser-1.2.1}/RELEASE.md +0 -0
  16. {play_parser-1.2.0 → play_parser-1.2.1}/SECURITY.md +0 -0
  17. {play_parser-1.2.0 → play_parser-1.2.1}/data/01_modern_two_hander_preamble_separator/01_modern_two_hander_preamble_separator.txt +0 -0
  18. {play_parser-1.2.0 → play_parser-1.2.1}/data/01_modern_two_hander_preamble_separator/hints.json +0 -0
  19. {play_parser-1.2.0 → play_parser-1.2.1}/data/01_modern_two_hander_preamble_separator/optimal.json +0 -0
  20. {play_parser-1.2.0 → play_parser-1.2.1}/data/02_modern_three_characters_no_separator/02_modern_three_characters_no_separator.txt +0 -0
  21. {play_parser-1.2.0 → play_parser-1.2.1}/data/02_modern_three_characters_no_separator/hints.json +0 -0
  22. {play_parser-1.2.0 → play_parser-1.2.1}/data/02_modern_three_characters_no_separator/optimal.json +0 -0
  23. {play_parser-1.2.0 → play_parser-1.2.1}/data/03_colon_format_one_scene/03_colon_format_one_scene.txt +0 -0
  24. {play_parser-1.2.0 → play_parser-1.2.1}/data/03_colon_format_one_scene/hints.json +0 -0
  25. {play_parser-1.2.0 → play_parser-1.2.1}/data/03_colon_format_one_scene/optimal.json +0 -0
  26. {play_parser-1.2.0 → play_parser-1.2.1}/data/04_speaker_colon_multiscene/04_speaker_colon_multiscene.txt +0 -0
  27. {play_parser-1.2.0 → play_parser-1.2.1}/data/04_speaker_colon_multiscene/optimal.json +0 -0
  28. {play_parser-1.2.0 → play_parser-1.2.1}/data/05_shakespeare_line_speakers/05_shakespeare_line_speakers.txt +0 -0
  29. {play_parser-1.2.0 → play_parser-1.2.1}/data/05_shakespeare_line_speakers/optimal.json +0 -0
  30. {play_parser-1.2.0 → play_parser-1.2.1}/data/06_inline_stage_directions/06_inline_stage_directions.txt +0 -0
  31. {play_parser-1.2.0 → play_parser-1.2.1}/data/06_inline_stage_directions/hints.json +0 -0
  32. {play_parser-1.2.0 → play_parser-1.2.1}/data/06_inline_stage_directions/optimal.json +0 -0
  33. {play_parser-1.2.0 → play_parser-1.2.1}/data/07_long_preamble_cast_setting_notes/07_long_preamble_cast_setting_notes.txt +0 -0
  34. {play_parser-1.2.0 → play_parser-1.2.1}/data/07_long_preamble_cast_setting_notes/hints.json +0 -0
  35. {play_parser-1.2.0 → play_parser-1.2.1}/data/07_long_preamble_cast_setting_notes/optimal.json +0 -0
  36. {play_parser-1.2.0 → play_parser-1.2.1}/data/08_no_preamble_immediate_dialogue/08_no_preamble_immediate_dialogue.txt +0 -0
  37. {play_parser-1.2.0 → play_parser-1.2.1}/data/08_no_preamble_immediate_dialogue/optimal.json +0 -0
  38. {play_parser-1.2.0 → play_parser-1.2.1}/data/09_title_author_then_scene_no_act/09_title_author_then_scene_no_act.txt +0 -0
  39. {play_parser-1.2.0 → play_parser-1.2.1}/data/09_title_author_then_scene_no_act/optimal.json +0 -0
  40. {play_parser-1.2.0 → play_parser-1.2.1}/data/100_formal_three_hander/100_formal_three_hander.txt +0 -0
  41. {play_parser-1.2.0 → play_parser-1.2.1}/data/100_formal_three_hander/hints.json +0 -0
  42. {play_parser-1.2.0 → play_parser-1.2.1}/data/100_formal_three_hander/optimal.json +0 -0
  43. {play_parser-1.2.0 → play_parser-1.2.1}/data/101_lift_lobby_sluglines/101_lift_lobby_sluglines.txt +0 -0
  44. {play_parser-1.2.0 → play_parser-1.2.1}/data/101_lift_lobby_sluglines/hints.json +0 -0
  45. {play_parser-1.2.0 → play_parser-1.2.1}/data/101_lift_lobby_sluglines/optimal.json +0 -0
  46. {play_parser-1.2.0 → play_parser-1.2.1}/data/102_weather_frequency/102_weather_frequency.txt +0 -0
  47. {play_parser-1.2.0 → play_parser-1.2.1}/data/102_weather_frequency/hints.json +0 -0
  48. {play_parser-1.2.0 → play_parser-1.2.1}/data/102_weather_frequency/optimal.json +0 -0
  49. {play_parser-1.2.0 → play_parser-1.2.1}/data/103_the_spare_key_catalogue/103_the_spare_key_catalogue.txt +0 -0
  50. {play_parser-1.2.0 → play_parser-1.2.1}/data/103_the_spare_key_catalogue/hints.json +0 -0
  51. {play_parser-1.2.0 → play_parser-1.2.1}/data/103_the_spare_key_catalogue/optimal.json +0 -0
  52. {play_parser-1.2.0 → play_parser-1.2.1}/data/104_initials_at_tea/104_initials_at_tea.txt +0 -0
  53. {play_parser-1.2.0 → play_parser-1.2.1}/data/104_initials_at_tea/hints.json +0 -0
  54. {play_parser-1.2.0 → play_parser-1.2.1}/data/104_initials_at_tea/optimal.json +0 -0
  55. {play_parser-1.2.0 → play_parser-1.2.1}/data/105_a_door_answers/105_a_door_answers.txt +0 -0
  56. {play_parser-1.2.0 → play_parser-1.2.1}/data/105_a_door_answers/hints.json +0 -0
  57. {play_parser-1.2.0 → play_parser-1.2.1}/data/105_a_door_answers/optimal.json +0 -0
  58. {play_parser-1.2.0 → play_parser-1.2.1}/data/106_small_applause/106_small_applause.txt +0 -0
  59. {play_parser-1.2.0 → play_parser-1.2.1}/data/106_small_applause/hints.json +0 -0
  60. {play_parser-1.2.0 → play_parser-1.2.1}/data/106_small_applause/optimal.json +0 -0
  61. {play_parser-1.2.0 → play_parser-1.2.1}/data/107_chair_ballet/107_chair_ballet.txt +0 -0
  62. {play_parser-1.2.0 → play_parser-1.2.1}/data/107_chair_ballet/hints.json +0 -0
  63. {play_parser-1.2.0 → play_parser-1.2.1}/data/107_chair_ballet/optimal.json +0 -0
  64. {play_parser-1.2.0 → play_parser-1.2.1}/data/108_scene_is_not_a_scene/108_scene_is_not_a_scene.txt +0 -0
  65. {play_parser-1.2.0 → play_parser-1.2.1}/data/108_scene_is_not_a_scene/hints.json +0 -0
  66. {play_parser-1.2.0 → play_parser-1.2.1}/data/108_scene_is_not_a_scene/optimal.json +0 -0
  67. {play_parser-1.2.0 → play_parser-1.2.1}/data/109_lower_roman/109_lower_roman.txt +0 -0
  68. {play_parser-1.2.0 → play_parser-1.2.1}/data/109_lower_roman/hints.json +0 -0
  69. {play_parser-1.2.0 → play_parser-1.2.1}/data/109_lower_roman/optimal.json +0 -0
  70. {play_parser-1.2.0 → play_parser-1.2.1}/data/10_simple_spare_key_scene/10_simple_spare_key_scene.txt +0 -0
  71. {play_parser-1.2.0 → play_parser-1.2.1}/data/10_simple_spare_key_scene/hints.json +0 -0
  72. {play_parser-1.2.0 → play_parser-1.2.1}/data/10_simple_spare_key_scene/optimal.json +0 -0
  73. {play_parser-1.2.0 → play_parser-1.2.1}/data/110_inbox_play/110_inbox_play.txt +0 -0
  74. {play_parser-1.2.0 → play_parser-1.2.1}/data/110_inbox_play/hints.json +0 -0
  75. {play_parser-1.2.0 → play_parser-1.2.1}/data/110_inbox_play/optimal.json +0 -0
  76. {play_parser-1.2.0 → play_parser-1.2.1}/data/111_hyphenated_night/111_hyphenated_night.txt +0 -0
  77. {play_parser-1.2.0 → play_parser-1.2.1}/data/111_hyphenated_night/hints.json +0 -0
  78. {play_parser-1.2.0 → play_parser-1.2.1}/data/111_hyphenated_night/optimal.json +0 -0
  79. {play_parser-1.2.0 → play_parser-1.2.1}/data/113_numbered_witnesses/113_numbered_witnesses.txt +0 -0
  80. {play_parser-1.2.0 → play_parser-1.2.1}/data/113_numbered_witnesses/hints.json +0 -0
  81. {play_parser-1.2.0 → play_parser-1.2.1}/data/113_numbered_witnesses/optimal.json +0 -0
  82. {play_parser-1.2.0 → play_parser-1.2.1}/data/114_the_group_chat/114_the_group_chat.txt +0 -0
  83. {play_parser-1.2.0 → play_parser-1.2.1}/data/114_the_group_chat/hints.json +0 -0
  84. {play_parser-1.2.0 → play_parser-1.2.1}/data/114_the_group_chat/optimal.json +0 -0
  85. {play_parser-1.2.0 → play_parser-1.2.1}/data/115_four_line_oath/115_four_line_oath.txt +0 -0
  86. {play_parser-1.2.0 → play_parser-1.2.1}/data/115_four_line_oath/hints.json +0 -0
  87. {play_parser-1.2.0 → play_parser-1.2.1}/data/115_four_line_oath/optimal.json +0 -0
  88. {play_parser-1.2.0 → play_parser-1.2.1}/data/116_after_the_bell/116_after_the_bell.txt +0 -0
  89. {play_parser-1.2.0 → play_parser-1.2.1}/data/116_after_the_bell/hints.json +0 -0
  90. {play_parser-1.2.0 → play_parser-1.2.1}/data/116_after_the_bell/optimal.json +0 -0
  91. {play_parser-1.2.0 → play_parser-1.2.1}/data/117_italic_corridor/117_italic_corridor.txt +0 -0
  92. {play_parser-1.2.0 → play_parser-1.2.1}/data/117_italic_corridor/hints.json +0 -0
  93. {play_parser-1.2.0 → play_parser-1.2.1}/data/117_italic_corridor/optimal.json +0 -0
  94. {play_parser-1.2.0 → play_parser-1.2.1}/data/118_third_act_weather/118_third_act_weather.txt +0 -0
  95. {play_parser-1.2.0 → play_parser-1.2.1}/data/118_third_act_weather/hints.json +0 -0
  96. {play_parser-1.2.0 → play_parser-1.2.1}/data/118_third_act_weather/optimal.json +0 -0
  97. {play_parser-1.2.0 → play_parser-1.2.1}/data/119_pause_audit/119_pause_audit.txt +0 -0
  98. {play_parser-1.2.0 → play_parser-1.2.1}/data/119_pause_audit/hints.json +0 -0
  99. {play_parser-1.2.0 → play_parser-1.2.1}/data/119_pause_audit/optimal.json +0 -0
  100. {play_parser-1.2.0 → play_parser-1.2.1}/data/11_malformed_joined_speaker_pdf_artifact/11_malformed_joined_speaker_pdf_artifact.txt +0 -0
  101. {play_parser-1.2.0 → play_parser-1.2.1}/data/11_malformed_joined_speaker_pdf_artifact/hints.json +0 -0
  102. {play_parser-1.2.0 → play_parser-1.2.1}/data/11_malformed_joined_speaker_pdf_artifact/optimal.json +0 -0
  103. {play_parser-1.2.0 → play_parser-1.2.1}/data/120_colon_trouble/120_colon_trouble.txt +0 -0
  104. {play_parser-1.2.0 → play_parser-1.2.1}/data/120_colon_trouble/hints.json +0 -0
  105. {play_parser-1.2.0 → play_parser-1.2.1}/data/120_colon_trouble/optimal.json +0 -0
  106. {play_parser-1.2.0 → play_parser-1.2.1}/data/121_semicolon_cast/121_semicolon_cast.txt +0 -0
  107. {play_parser-1.2.0 → play_parser-1.2.1}/data/121_semicolon_cast/hints.json +0 -0
  108. {play_parser-1.2.0 → play_parser-1.2.1}/data/121_semicolon_cast/optimal.json +0 -0
  109. {play_parser-1.2.0 → play_parser-1.2.1}/data/122_square_cue/122_square_cue.txt +0 -0
  110. {play_parser-1.2.0 → play_parser-1.2.1}/data/122_square_cue/hints.json +0 -0
  111. {play_parser-1.2.0 → play_parser-1.2.1}/data/122_square_cue/optimal.json +0 -0
  112. {play_parser-1.2.0 → play_parser-1.2.1}/data/123_page_header_fog/123_page_header_fog.txt +0 -0
  113. {play_parser-1.2.0 → play_parser-1.2.1}/data/123_page_header_fog/hints.json +0 -0
  114. {play_parser-1.2.0 → play_parser-1.2.1}/data/123_page_header_fog/optimal.json +0 -0
  115. {play_parser-1.2.0 → play_parser-1.2.1}/data/124_lowercase_lobby/124_lowercase_lobby.txt +0 -0
  116. {play_parser-1.2.0 → play_parser-1.2.1}/data/124_lowercase_lobby/hints.json +0 -0
  117. {play_parser-1.2.0 → play_parser-1.2.1}/data/124_lowercase_lobby/optimal.json +0 -0
  118. {play_parser-1.2.0 → play_parser-1.2.1}/data/125_parenthesis_room/125_parenthesis_room.txt +0 -0
  119. {play_parser-1.2.0 → play_parser-1.2.1}/data/125_parenthesis_room/hints.json +0 -0
  120. {play_parser-1.2.0 → play_parser-1.2.1}/data/125_parenthesis_room/optimal.json +0 -0
  121. {play_parser-1.2.0 → play_parser-1.2.1}/data/126_mixed_marks/126_mixed_marks.txt +0 -0
  122. {play_parser-1.2.0 → play_parser-1.2.1}/data/126_mixed_marks/hints.json +0 -0
  123. {play_parser-1.2.0 → play_parser-1.2.1}/data/126_mixed_marks/optimal.json +0 -0
  124. {play_parser-1.2.0 → play_parser-1.2.1}/data/127_the_word_act/127_the_word_act.txt +0 -0
  125. {play_parser-1.2.0 → play_parser-1.2.1}/data/127_the_word_act/hints.json +0 -0
  126. {play_parser-1.2.0 → play_parser-1.2.1}/data/127_the_word_act/optimal.json +0 -0
  127. {play_parser-1.2.0 → play_parser-1.2.1}/data/128_broken_column/128_broken_column.txt +0 -0
  128. {play_parser-1.2.0 → play_parser-1.2.1}/data/128_broken_column/hints.json +0 -0
  129. {play_parser-1.2.0 → play_parser-1.2.1}/data/128_broken_column/optimal.json +0 -0
  130. {play_parser-1.2.0 → play_parser-1.2.1}/data/129_prologue_with_receipts/129_prologue_with_receipts.txt +0 -0
  131. {play_parser-1.2.0 → play_parser-1.2.1}/data/129_prologue_with_receipts/hints.json +0 -0
  132. {play_parser-1.2.0 → play_parser-1.2.1}/data/129_prologue_with_receipts/optimal.json +0 -0
  133. {play_parser-1.2.0 → play_parser-1.2.1}/data/12_many_characters_short_lines/12_many_characters_short_lines.txt +0 -0
  134. {play_parser-1.2.0 → play_parser-1.2.1}/data/12_many_characters_short_lines/hints.json +0 -0
  135. {play_parser-1.2.0 → play_parser-1.2.1}/data/12_many_characters_short_lines/optimal.json +0 -0
  136. {play_parser-1.2.0 → play_parser-1.2.1}/data/131_screenplay_character_blocks_1/131_screenplay_character_blocks_1.txt +0 -0
  137. {play_parser-1.2.0 → play_parser-1.2.1}/data/131_screenplay_character_blocks_1/hints.json +0 -0
  138. {play_parser-1.2.0 → play_parser-1.2.1}/data/131_screenplay_character_blocks_1/optimal.json +0 -0
  139. {play_parser-1.2.0 → play_parser-1.2.1}/data/132_screenplay_character_blocks_2/132_screenplay_character_blocks_2.txt +0 -0
  140. {play_parser-1.2.0 → play_parser-1.2.1}/data/132_screenplay_character_blocks_2/hints.json +0 -0
  141. {play_parser-1.2.0 → play_parser-1.2.1}/data/132_screenplay_character_blocks_2/optimal.json +0 -0
  142. {play_parser-1.2.0 → play_parser-1.2.1}/data/133_screenplay_parenthetical_cues_1/133_screenplay_parenthetical_cues_1.txt +0 -0
  143. {play_parser-1.2.0 → play_parser-1.2.1}/data/133_screenplay_parenthetical_cues_1/hints.json +0 -0
  144. {play_parser-1.2.0 → play_parser-1.2.1}/data/133_screenplay_parenthetical_cues_1/optimal.json +0 -0
  145. {play_parser-1.2.0 → play_parser-1.2.1}/data/134_screenplay_parenthetical_cues_2/134_screenplay_parenthetical_cues_2.txt +0 -0
  146. {play_parser-1.2.0 → play_parser-1.2.1}/data/134_screenplay_parenthetical_cues_2/hints.json +0 -0
  147. {play_parser-1.2.0 → play_parser-1.2.1}/data/134_screenplay_parenthetical_cues_2/optimal.json +0 -0
  148. {play_parser-1.2.0 → play_parser-1.2.1}/data/135_fixed_width_dialogue_1/135_fixed_width_dialogue_1.txt +0 -0
  149. {play_parser-1.2.0 → play_parser-1.2.1}/data/135_fixed_width_dialogue_1/hints.json +0 -0
  150. {play_parser-1.2.0 → play_parser-1.2.1}/data/135_fixed_width_dialogue_1/optimal.json +0 -0
  151. {play_parser-1.2.0 → play_parser-1.2.1}/data/136_fixed_width_dialogue_2/136_fixed_width_dialogue_2.txt +0 -0
  152. {play_parser-1.2.0 → play_parser-1.2.1}/data/136_fixed_width_dialogue_2/hints.json +0 -0
  153. {play_parser-1.2.0 → play_parser-1.2.1}/data/136_fixed_width_dialogue_2/optimal.json +0 -0
  154. {play_parser-1.2.0 → play_parser-1.2.1}/data/137_tabular_dialogue_1/137_tabular_dialogue_1.txt +0 -0
  155. {play_parser-1.2.0 → play_parser-1.2.1}/data/137_tabular_dialogue_1/hints.json +0 -0
  156. {play_parser-1.2.0 → play_parser-1.2.1}/data/137_tabular_dialogue_1/optimal.json +0 -0
  157. {play_parser-1.2.0 → play_parser-1.2.1}/data/138_tabular_dialogue_2/138_tabular_dialogue_2.txt +0 -0
  158. {play_parser-1.2.0 → play_parser-1.2.1}/data/138_tabular_dialogue_2/hints.json +0 -0
  159. {play_parser-1.2.0 → play_parser-1.2.1}/data/138_tabular_dialogue_2/optimal.json +0 -0
  160. {play_parser-1.2.0 → play_parser-1.2.1}/data/139_hyphen_dialogue_1/139_hyphen_dialogue_1.txt +0 -0
  161. {play_parser-1.2.0 → play_parser-1.2.1}/data/139_hyphen_dialogue_1/hints.json +0 -0
  162. {play_parser-1.2.0 → play_parser-1.2.1}/data/139_hyphen_dialogue_1/optimal.json +0 -0
  163. {play_parser-1.2.0 → play_parser-1.2.1}/data/13_character_names_with_spaces_colon/13_character_names_with_spaces_colon.txt +0 -0
  164. {play_parser-1.2.0 → play_parser-1.2.1}/data/13_character_names_with_spaces_colon/optimal.json +0 -0
  165. {play_parser-1.2.0 → play_parser-1.2.1}/data/140_hyphen_dialogue_2/140_hyphen_dialogue_2.txt +0 -0
  166. {play_parser-1.2.0 → play_parser-1.2.1}/data/140_hyphen_dialogue_2/hints.json +0 -0
  167. {play_parser-1.2.0 → play_parser-1.2.1}/data/140_hyphen_dialogue_2/optimal.json +0 -0
  168. {play_parser-1.2.0 → play_parser-1.2.1}/data/141_emdash_dialogue_1/141_emdash_dialogue_1.txt +0 -0
  169. {play_parser-1.2.0 → play_parser-1.2.1}/data/141_emdash_dialogue_1/hints.json +0 -0
  170. {play_parser-1.2.0 → play_parser-1.2.1}/data/141_emdash_dialogue_1/optimal.json +0 -0
  171. {play_parser-1.2.0 → play_parser-1.2.1}/data/142_emdash_dialogue_2/142_emdash_dialogue_2.txt +0 -0
  172. {play_parser-1.2.0 → play_parser-1.2.1}/data/142_emdash_dialogue_2/hints.json +0 -0
  173. {play_parser-1.2.0 → play_parser-1.2.1}/data/142_emdash_dialogue_2/optimal.json +0 -0
  174. {play_parser-1.2.0 → play_parser-1.2.1}/data/143_abbreviated_dot_speakers_1/143_abbreviated_dot_speakers_1.txt +0 -0
  175. {play_parser-1.2.0 → play_parser-1.2.1}/data/143_abbreviated_dot_speakers_1/hints.json +0 -0
  176. {play_parser-1.2.0 → play_parser-1.2.1}/data/143_abbreviated_dot_speakers_1/optimal.json +0 -0
  177. {play_parser-1.2.0 → play_parser-1.2.1}/data/144_abbreviated_dot_speakers_2/144_abbreviated_dot_speakers_2.txt +0 -0
  178. {play_parser-1.2.0 → play_parser-1.2.1}/data/144_abbreviated_dot_speakers_2/hints.json +0 -0
  179. {play_parser-1.2.0 → play_parser-1.2.1}/data/144_abbreviated_dot_speakers_2/optimal.json +0 -0
  180. {play_parser-1.2.0 → play_parser-1.2.1}/data/149_alias_cast_dialogue_1/149_alias_cast_dialogue_1.txt +0 -0
  181. {play_parser-1.2.0 → play_parser-1.2.1}/data/149_alias_cast_dialogue_1/hints.json +0 -0
  182. {play_parser-1.2.0 → play_parser-1.2.1}/data/149_alias_cast_dialogue_1/optimal.json +0 -0
  183. {play_parser-1.2.0 → play_parser-1.2.1}/data/14_character_block_with_colons_and_descriptions/14_character_block_with_colons_and_descriptions.txt +0 -0
  184. {play_parser-1.2.0 → play_parser-1.2.1}/data/14_character_block_with_colons_and_descriptions/hints.json +0 -0
  185. {play_parser-1.2.0 → play_parser-1.2.1}/data/14_character_block_with_colons_and_descriptions/optimal.json +0 -0
  186. {play_parser-1.2.0 → play_parser-1.2.1}/data/150_alias_cast_dialogue_2/150_alias_cast_dialogue_2.txt +0 -0
  187. {play_parser-1.2.0 → play_parser-1.2.1}/data/150_alias_cast_dialogue_2/hints.json +0 -0
  188. {play_parser-1.2.0 → play_parser-1.2.1}/data/150_alias_cast_dialogue_2/optimal.json +0 -0
  189. {play_parser-1.2.0 → play_parser-1.2.1}/data/151_page_header_inside_speech_1/151_page_header_inside_speech_1.txt +0 -0
  190. {play_parser-1.2.0 → play_parser-1.2.1}/data/151_page_header_inside_speech_1/hints.json +0 -0
  191. {play_parser-1.2.0 → play_parser-1.2.1}/data/151_page_header_inside_speech_1/optimal.json +0 -0
  192. {play_parser-1.2.0 → play_parser-1.2.1}/data/152_page_header_inside_speech_2/152_page_header_inside_speech_2.txt +0 -0
  193. {play_parser-1.2.0 → play_parser-1.2.1}/data/152_page_header_inside_speech_2/hints.json +0 -0
  194. {play_parser-1.2.0 → play_parser-1.2.1}/data/152_page_header_inside_speech_2/optimal.json +0 -0
  195. {play_parser-1.2.0 → play_parser-1.2.1}/data/153_verse_indented_continuation_1/153_verse_indented_continuation_1.txt +0 -0
  196. {play_parser-1.2.0 → play_parser-1.2.1}/data/153_verse_indented_continuation_1/hints.json +0 -0
  197. {play_parser-1.2.0 → play_parser-1.2.1}/data/153_verse_indented_continuation_1/optimal.json +0 -0
  198. {play_parser-1.2.0 → play_parser-1.2.1}/data/154_verse_indented_continuation_2/154_verse_indented_continuation_2.txt +0 -0
  199. {play_parser-1.2.0 → play_parser-1.2.1}/data/154_verse_indented_continuation_2/hints.json +0 -0
  200. {play_parser-1.2.0 → play_parser-1.2.1}/data/154_verse_indented_continuation_2/optimal.json +0 -0
  201. {play_parser-1.2.0 → play_parser-1.2.1}/data/155_unbracketed_stage_prose_1/155_unbracketed_stage_prose_1.txt +0 -0
  202. {play_parser-1.2.0 → play_parser-1.2.1}/data/155_unbracketed_stage_prose_1/hints.json +0 -0
  203. {play_parser-1.2.0 → play_parser-1.2.1}/data/155_unbracketed_stage_prose_1/optimal.json +0 -0
  204. {play_parser-1.2.0 → play_parser-1.2.1}/data/156_unbracketed_stage_prose_2/156_unbracketed_stage_prose_2.txt +0 -0
  205. {play_parser-1.2.0 → play_parser-1.2.1}/data/156_unbracketed_stage_prose_2/hints.json +0 -0
  206. {play_parser-1.2.0 → play_parser-1.2.1}/data/156_unbracketed_stage_prose_2/optimal.json +0 -0
  207. {play_parser-1.2.0 → play_parser-1.2.1}/data/157_dual_dialogue_same_line_1/157_dual_dialogue_same_line_1.txt +0 -0
  208. {play_parser-1.2.0 → play_parser-1.2.1}/data/157_dual_dialogue_same_line_1/hints.json +0 -0
  209. {play_parser-1.2.0 → play_parser-1.2.1}/data/157_dual_dialogue_same_line_1/optimal.json +0 -0
  210. {play_parser-1.2.0 → play_parser-1.2.1}/data/158_dual_dialogue_same_line_2/158_dual_dialogue_same_line_2.txt +0 -0
  211. {play_parser-1.2.0 → play_parser-1.2.1}/data/158_dual_dialogue_same_line_2/hints.json +0 -0
  212. {play_parser-1.2.0 → play_parser-1.2.1}/data/158_dual_dialogue_same_line_2/optimal.json +0 -0
  213. {play_parser-1.2.0 → play_parser-1.2.1}/data/159_cue_before_colon_1/159_cue_before_colon_1.txt +0 -0
  214. {play_parser-1.2.0 → play_parser-1.2.1}/data/159_cue_before_colon_1/hints.json +0 -0
  215. {play_parser-1.2.0 → play_parser-1.2.1}/data/159_cue_before_colon_1/optimal.json +0 -0
  216. {play_parser-1.2.0 → play_parser-1.2.1}/data/15_multiple_acts_modern/15_multiple_acts_modern.txt +0 -0
  217. {play_parser-1.2.0 → play_parser-1.2.1}/data/15_multiple_acts_modern/optimal.json +0 -0
  218. {play_parser-1.2.0 → play_parser-1.2.1}/data/160_cue_before_colon_2/160_cue_before_colon_2.txt +0 -0
  219. {play_parser-1.2.0 → play_parser-1.2.1}/data/160_cue_before_colon_2/hints.json +0 -0
  220. {play_parser-1.2.0 → play_parser-1.2.1}/data/160_cue_before_colon_2/optimal.json +0 -0
  221. {play_parser-1.2.0 → play_parser-1.2.1}/data/161_scene_title_false_speaker_1/161_scene_title_false_speaker_1.txt +0 -0
  222. {play_parser-1.2.0 → play_parser-1.2.1}/data/161_scene_title_false_speaker_1/hints.json +0 -0
  223. {play_parser-1.2.0 → play_parser-1.2.1}/data/161_scene_title_false_speaker_1/optimal.json +0 -0
  224. {play_parser-1.2.0 → play_parser-1.2.1}/data/162_scene_title_false_speaker_2/162_scene_title_false_speaker_2.txt +0 -0
  225. {play_parser-1.2.0 → play_parser-1.2.1}/data/162_scene_title_false_speaker_2/hints.json +0 -0
  226. {play_parser-1.2.0 → play_parser-1.2.1}/data/162_scene_title_false_speaker_2/optimal.json +0 -0
  227. {play_parser-1.2.0 → play_parser-1.2.1}/data/163_chat_timestamp_dialogue_1/163_chat_timestamp_dialogue_1.txt +0 -0
  228. {play_parser-1.2.0 → play_parser-1.2.1}/data/163_chat_timestamp_dialogue_1/hints.json +0 -0
  229. {play_parser-1.2.0 → play_parser-1.2.1}/data/163_chat_timestamp_dialogue_1/optimal.json +0 -0
  230. {play_parser-1.2.0 → play_parser-1.2.1}/data/164_chat_timestamp_dialogue_2/164_chat_timestamp_dialogue_2.txt +0 -0
  231. {play_parser-1.2.0 → play_parser-1.2.1}/data/164_chat_timestamp_dialogue_2/hints.json +0 -0
  232. {play_parser-1.2.0 → play_parser-1.2.1}/data/164_chat_timestamp_dialogue_2/optimal.json +0 -0
  233. {play_parser-1.2.0 → play_parser-1.2.1}/data/165_line_numbered_dialogue_1/165_line_numbered_dialogue_1.txt +0 -0
  234. {play_parser-1.2.0 → play_parser-1.2.1}/data/165_line_numbered_dialogue_1/hints.json +0 -0
  235. {play_parser-1.2.0 → play_parser-1.2.1}/data/165_line_numbered_dialogue_1/optimal.json +0 -0
  236. {play_parser-1.2.0 → play_parser-1.2.1}/data/166_line_numbered_dialogue_2/166_line_numbered_dialogue_2.txt +0 -0
  237. {play_parser-1.2.0 → play_parser-1.2.1}/data/166_line_numbered_dialogue_2/hints.json +0 -0
  238. {play_parser-1.2.0 → play_parser-1.2.1}/data/166_line_numbered_dialogue_2/optimal.json +0 -0
  239. {play_parser-1.2.0 → play_parser-1.2.1}/data/167_pdf_hyphenated_wrap_1/167_pdf_hyphenated_wrap_1.txt +0 -0
  240. {play_parser-1.2.0 → play_parser-1.2.1}/data/167_pdf_hyphenated_wrap_1/hints.json +0 -0
  241. {play_parser-1.2.0 → play_parser-1.2.1}/data/167_pdf_hyphenated_wrap_1/optimal.json +0 -0
  242. {play_parser-1.2.0 → play_parser-1.2.1}/data/168_pdf_hyphenated_wrap_2/168_pdf_hyphenated_wrap_2.txt +0 -0
  243. {play_parser-1.2.0 → play_parser-1.2.1}/data/168_pdf_hyphenated_wrap_2/hints.json +0 -0
  244. {play_parser-1.2.0 → play_parser-1.2.1}/data/168_pdf_hyphenated_wrap_2/optimal.json +0 -0
  245. {play_parser-1.2.0 → play_parser-1.2.1}/data/169_diacritic_apostrophe_speakers_1/169_diacritic_apostrophe_speakers_1.txt +0 -0
  246. {play_parser-1.2.0 → play_parser-1.2.1}/data/169_diacritic_apostrophe_speakers_1/hints.json +0 -0
  247. {play_parser-1.2.0 → play_parser-1.2.1}/data/169_diacritic_apostrophe_speakers_1/optimal.json +0 -0
  248. {play_parser-1.2.0 → play_parser-1.2.1}/data/16_stage_directions_square_brackets/16_stage_directions_square_brackets.txt +0 -0
  249. {play_parser-1.2.0 → play_parser-1.2.1}/data/16_stage_directions_square_brackets/optimal.json +0 -0
  250. {play_parser-1.2.0 → play_parser-1.2.1}/data/170_diacritic_apostrophe_speakers_2/170_diacritic_apostrophe_speakers_2.txt +0 -0
  251. {play_parser-1.2.0 → play_parser-1.2.1}/data/170_diacritic_apostrophe_speakers_2/hints.json +0 -0
  252. {play_parser-1.2.0 → play_parser-1.2.1}/data/170_diacritic_apostrophe_speakers_2/optimal.json +0 -0
  253. {play_parser-1.2.0 → play_parser-1.2.1}/data/171_numbered_scene_titles_1/171_numbered_scene_titles_1.txt +0 -0
  254. {play_parser-1.2.0 → play_parser-1.2.1}/data/171_numbered_scene_titles_1/hints.json +0 -0
  255. {play_parser-1.2.0 → play_parser-1.2.1}/data/171_numbered_scene_titles_1/optimal.json +0 -0
  256. {play_parser-1.2.0 → play_parser-1.2.1}/data/172_numbered_scene_titles_2/172_numbered_scene_titles_2.txt +0 -0
  257. {play_parser-1.2.0 → play_parser-1.2.1}/data/172_numbered_scene_titles_2/hints.json +0 -0
  258. {play_parser-1.2.0 → play_parser-1.2.1}/data/172_numbered_scene_titles_2/optimal.json +0 -0
  259. {play_parser-1.2.0 → play_parser-1.2.1}/data/173_scene_colon_label_1/173_scene_colon_label_1.txt +0 -0
  260. {play_parser-1.2.0 → play_parser-1.2.1}/data/173_scene_colon_label_1/hints.json +0 -0
  261. {play_parser-1.2.0 → play_parser-1.2.1}/data/173_scene_colon_label_1/optimal.json +0 -0
  262. {play_parser-1.2.0 → play_parser-1.2.1}/data/174_scene_colon_label_2/174_scene_colon_label_2.txt +0 -0
  263. {play_parser-1.2.0 → play_parser-1.2.1}/data/174_scene_colon_label_2/hints.json +0 -0
  264. {play_parser-1.2.0 → play_parser-1.2.1}/data/174_scene_colon_label_2/optimal.json +0 -0
  265. {play_parser-1.2.0 → play_parser-1.2.1}/data/175_single_letter_speakers_1/175_single_letter_speakers_1.txt +0 -0
  266. {play_parser-1.2.0 → play_parser-1.2.1}/data/175_single_letter_speakers_1/hints.json +0 -0
  267. {play_parser-1.2.0 → play_parser-1.2.1}/data/175_single_letter_speakers_1/optimal.json +0 -0
  268. {play_parser-1.2.0 → play_parser-1.2.1}/data/176_single_letter_speakers_2/176_single_letter_speakers_2.txt +0 -0
  269. {play_parser-1.2.0 → play_parser-1.2.1}/data/176_single_letter_speakers_2/hints.json +0 -0
  270. {play_parser-1.2.0 → play_parser-1.2.1}/data/176_single_letter_speakers_2/optimal.json +0 -0
  271. {play_parser-1.2.0 → play_parser-1.2.1}/data/177_music_lyrics_cues_1/177_music_lyrics_cues_1.txt +0 -0
  272. {play_parser-1.2.0 → play_parser-1.2.1}/data/177_music_lyrics_cues_1/hints.json +0 -0
  273. {play_parser-1.2.0 → play_parser-1.2.1}/data/177_music_lyrics_cues_1/optimal.json +0 -0
  274. {play_parser-1.2.0 → play_parser-1.2.1}/data/178_music_lyrics_cues_2/178_music_lyrics_cues_2.txt +0 -0
  275. {play_parser-1.2.0 → play_parser-1.2.1}/data/178_music_lyrics_cues_2/hints.json +0 -0
  276. {play_parser-1.2.0 → play_parser-1.2.1}/data/178_music_lyrics_cues_2/optimal.json +0 -0
  277. {play_parser-1.2.0 → play_parser-1.2.1}/data/179_speaker_then_blank_then_text_1/179_speaker_then_blank_then_text_1.txt +0 -0
  278. {play_parser-1.2.0 → play_parser-1.2.1}/data/179_speaker_then_blank_then_text_1/hints.json +0 -0
  279. {play_parser-1.2.0 → play_parser-1.2.1}/data/179_speaker_then_blank_then_text_1/optimal.json +0 -0
  280. {play_parser-1.2.0 → play_parser-1.2.1}/data/17_screenplayish_format/17_screenplayish_format.txt +0 -0
  281. {play_parser-1.2.0 → play_parser-1.2.1}/data/17_screenplayish_format/hints.json +0 -0
  282. {play_parser-1.2.0 → play_parser-1.2.1}/data/17_screenplayish_format/optimal.json +0 -0
  283. {play_parser-1.2.0 → play_parser-1.2.1}/data/180_speaker_then_blank_then_text_2/180_speaker_then_blank_then_text_2.txt +0 -0
  284. {play_parser-1.2.0 → play_parser-1.2.1}/data/180_speaker_then_blank_then_text_2/hints.json +0 -0
  285. {play_parser-1.2.0 → play_parser-1.2.1}/data/180_speaker_then_blank_then_text_2/optimal.json +0 -0
  286. {play_parser-1.2.0 → play_parser-1.2.1}/data/181_ocr_spaced_speaker_labels_1/181_ocr_spaced_speaker_labels_1.txt +0 -0
  287. {play_parser-1.2.0 → play_parser-1.2.1}/data/181_ocr_spaced_speaker_labels_1/hints.json +0 -0
  288. {play_parser-1.2.0 → play_parser-1.2.1}/data/181_ocr_spaced_speaker_labels_1/optimal.json +0 -0
  289. {play_parser-1.2.0 → play_parser-1.2.1}/data/182_ocr_spaced_speaker_labels_2/182_ocr_spaced_speaker_labels_2.txt +0 -0
  290. {play_parser-1.2.0 → play_parser-1.2.1}/data/182_ocr_spaced_speaker_labels_2/hints.json +0 -0
  291. {play_parser-1.2.0 → play_parser-1.2.1}/data/182_ocr_spaced_speaker_labels_2/optimal.json +0 -0
  292. {play_parser-1.2.0 → play_parser-1.2.1}/data/183_ocr_digit_letter_confusion_1/183_ocr_digit_letter_confusion_1.txt +0 -0
  293. {play_parser-1.2.0 → play_parser-1.2.1}/data/183_ocr_digit_letter_confusion_1/hints.json +0 -0
  294. {play_parser-1.2.0 → play_parser-1.2.1}/data/183_ocr_digit_letter_confusion_1/optimal.json +0 -0
  295. {play_parser-1.2.0 → play_parser-1.2.1}/data/184_ocr_digit_letter_confusion_2/184_ocr_digit_letter_confusion_2.txt +0 -0
  296. {play_parser-1.2.0 → play_parser-1.2.1}/data/184_ocr_digit_letter_confusion_2/hints.json +0 -0
  297. {play_parser-1.2.0 → play_parser-1.2.1}/data/184_ocr_digit_letter_confusion_2/optimal.json +0 -0
  298. {play_parser-1.2.0 → play_parser-1.2.1}/data/185_ocr_broken_word_continuation_1/185_ocr_broken_word_continuation_1.txt +0 -0
  299. {play_parser-1.2.0 → play_parser-1.2.1}/data/185_ocr_broken_word_continuation_1/hints.json +0 -0
  300. {play_parser-1.2.0 → play_parser-1.2.1}/data/185_ocr_broken_word_continuation_1/optimal.json +0 -0
  301. {play_parser-1.2.0 → play_parser-1.2.1}/data/186_ocr_broken_word_continuation_2/186_ocr_broken_word_continuation_2.txt +0 -0
  302. {play_parser-1.2.0 → play_parser-1.2.1}/data/186_ocr_broken_word_continuation_2/hints.json +0 -0
  303. {play_parser-1.2.0 → play_parser-1.2.1}/data/186_ocr_broken_word_continuation_2/optimal.json +0 -0
  304. {play_parser-1.2.0 → play_parser-1.2.1}/data/187_ocr_page_number_in_speech_1/187_ocr_page_number_in_speech_1.txt +0 -0
  305. {play_parser-1.2.0 → play_parser-1.2.1}/data/187_ocr_page_number_in_speech_1/hints.json +0 -0
  306. {play_parser-1.2.0 → play_parser-1.2.1}/data/187_ocr_page_number_in_speech_1/optimal.json +0 -0
  307. {play_parser-1.2.0 → play_parser-1.2.1}/data/188_ocr_page_number_in_speech_2/188_ocr_page_number_in_speech_2.txt +0 -0
  308. {play_parser-1.2.0 → play_parser-1.2.1}/data/188_ocr_page_number_in_speech_2/hints.json +0 -0
  309. {play_parser-1.2.0 → play_parser-1.2.1}/data/188_ocr_page_number_in_speech_2/optimal.json +0 -0
  310. {play_parser-1.2.0 → play_parser-1.2.1}/data/189_ocr_header_footer_intrusion_1/189_ocr_header_footer_intrusion_1.txt +0 -0
  311. {play_parser-1.2.0 → play_parser-1.2.1}/data/189_ocr_header_footer_intrusion_1/hints.json +0 -0
  312. {play_parser-1.2.0 → play_parser-1.2.1}/data/189_ocr_header_footer_intrusion_1/optimal.json +0 -0
  313. {play_parser-1.2.0 → play_parser-1.2.1}/data/18_blank_lines_and_extra_spacing/18_blank_lines_and_extra_spacing.txt +0 -0
  314. {play_parser-1.2.0 → play_parser-1.2.1}/data/18_blank_lines_and_extra_spacing/hints.json +0 -0
  315. {play_parser-1.2.0 → play_parser-1.2.1}/data/18_blank_lines_and_extra_spacing/optimal.json +0 -0
  316. {play_parser-1.2.0 → play_parser-1.2.1}/data/190_ocr_header_footer_intrusion_2/190_ocr_header_footer_intrusion_2.txt +0 -0
  317. {play_parser-1.2.0 → play_parser-1.2.1}/data/190_ocr_header_footer_intrusion_2/hints.json +0 -0
  318. {play_parser-1.2.0 → play_parser-1.2.1}/data/190_ocr_header_footer_intrusion_2/optimal.json +0 -0
  319. {play_parser-1.2.0 → play_parser-1.2.1}/data/191_ocr_ligature_artefacts_1/191_ocr_ligature_artefacts_1.txt +0 -0
  320. {play_parser-1.2.0 → play_parser-1.2.1}/data/191_ocr_ligature_artefacts_1/hints.json +0 -0
  321. {play_parser-1.2.0 → play_parser-1.2.1}/data/191_ocr_ligature_artefacts_1/optimal.json +0 -0
  322. {play_parser-1.2.0 → play_parser-1.2.1}/data/192_ocr_ligature_artefacts_2/192_ocr_ligature_artefacts_2.txt +0 -0
  323. {play_parser-1.2.0 → play_parser-1.2.1}/data/192_ocr_ligature_artefacts_2/hints.json +0 -0
  324. {play_parser-1.2.0 → play_parser-1.2.1}/data/192_ocr_ligature_artefacts_2/optimal.json +0 -0
  325. {play_parser-1.2.0 → play_parser-1.2.1}/data/193_ocr_curly_quote_damage_1/193_ocr_curly_quote_damage_1.txt +0 -0
  326. {play_parser-1.2.0 → play_parser-1.2.1}/data/193_ocr_curly_quote_damage_1/hints.json +0 -0
  327. {play_parser-1.2.0 → play_parser-1.2.1}/data/193_ocr_curly_quote_damage_1/optimal.json +0 -0
  328. {play_parser-1.2.0 → play_parser-1.2.1}/data/194_ocr_curly_quote_damage_2/194_ocr_curly_quote_damage_2.txt +0 -0
  329. {play_parser-1.2.0 → play_parser-1.2.1}/data/194_ocr_curly_quote_damage_2/hints.json +0 -0
  330. {play_parser-1.2.0 → play_parser-1.2.1}/data/194_ocr_curly_quote_damage_2/optimal.json +0 -0
  331. {play_parser-1.2.0 → play_parser-1.2.1}/data/195_ocr_soft_hyphen_artefact_1/195_ocr_soft_hyphen_artefact_1.txt +0 -0
  332. {play_parser-1.2.0 → play_parser-1.2.1}/data/195_ocr_soft_hyphen_artefact_1/hints.json +0 -0
  333. {play_parser-1.2.0 → play_parser-1.2.1}/data/195_ocr_soft_hyphen_artefact_1/optimal.json +0 -0
  334. {play_parser-1.2.0 → play_parser-1.2.1}/data/196_ocr_soft_hyphen_artefact_2/196_ocr_soft_hyphen_artefact_2.txt +0 -0
  335. {play_parser-1.2.0 → play_parser-1.2.1}/data/196_ocr_soft_hyphen_artefact_2/hints.json +0 -0
  336. {play_parser-1.2.0 → play_parser-1.2.1}/data/196_ocr_soft_hyphen_artefact_2/optimal.json +0 -0
  337. {play_parser-1.2.0 → play_parser-1.2.1}/data/197_ocr_broken_speaker_colon_1/197_ocr_broken_speaker_colon_1.txt +0 -0
  338. {play_parser-1.2.0 → play_parser-1.2.1}/data/197_ocr_broken_speaker_colon_1/hints.json +0 -0
  339. {play_parser-1.2.0 → play_parser-1.2.1}/data/197_ocr_broken_speaker_colon_1/optimal.json +0 -0
  340. {play_parser-1.2.0 → play_parser-1.2.1}/data/198_ocr_broken_speaker_colon_2/198_ocr_broken_speaker_colon_2.txt +0 -0
  341. {play_parser-1.2.0 → play_parser-1.2.1}/data/198_ocr_broken_speaker_colon_2/hints.json +0 -0
  342. {play_parser-1.2.0 → play_parser-1.2.1}/data/198_ocr_broken_speaker_colon_2/optimal.json +0 -0
  343. {play_parser-1.2.0 → play_parser-1.2.1}/data/199_ocr_line_wrap_with_indentation_1/199_ocr_line_wrap_with_indentation_1.txt +0 -0
  344. {play_parser-1.2.0 → play_parser-1.2.1}/data/199_ocr_line_wrap_with_indentation_1/hints.json +0 -0
  345. {play_parser-1.2.0 → play_parser-1.2.1}/data/199_ocr_line_wrap_with_indentation_1/optimal.json +0 -0
  346. {play_parser-1.2.0 → play_parser-1.2.1}/data/19_preamble_without_clear_marker/19_preamble_without_clear_marker.txt +0 -0
  347. {play_parser-1.2.0 → play_parser-1.2.1}/data/19_preamble_without_clear_marker/hints.json +0 -0
  348. {play_parser-1.2.0 → play_parser-1.2.1}/data/19_preamble_without_clear_marker/optimal.json +0 -0
  349. {play_parser-1.2.0 → play_parser-1.2.1}/data/200_ocr_line_wrap_with_indentation_2/200_ocr_line_wrap_with_indentation_2.txt +0 -0
  350. {play_parser-1.2.0 → play_parser-1.2.1}/data/200_ocr_line_wrap_with_indentation_2/hints.json +0 -0
  351. {play_parser-1.2.0 → play_parser-1.2.1}/data/200_ocr_line_wrap_with_indentation_2/optimal.json +0 -0
  352. {play_parser-1.2.0 → play_parser-1.2.1}/data/201_cast_list_descriptions_columns_1/201_cast_list_descriptions_columns_1.txt +0 -0
  353. {play_parser-1.2.0 → play_parser-1.2.1}/data/201_cast_list_descriptions_columns_1/hints.json +0 -0
  354. {play_parser-1.2.0 → play_parser-1.2.1}/data/201_cast_list_descriptions_columns_1/optimal.json +0 -0
  355. {play_parser-1.2.0 → play_parser-1.2.1}/data/202_cast_list_descriptions_columns_2/202_cast_list_descriptions_columns_2.txt +0 -0
  356. {play_parser-1.2.0 → play_parser-1.2.1}/data/202_cast_list_descriptions_columns_2/hints.json +0 -0
  357. {play_parser-1.2.0 → play_parser-1.2.1}/data/202_cast_list_descriptions_columns_2/optimal.json +0 -0
  358. {play_parser-1.2.0 → play_parser-1.2.1}/data/203_cast_group_roles_1/203_cast_group_roles_1.txt +0 -0
  359. {play_parser-1.2.0 → play_parser-1.2.1}/data/203_cast_group_roles_1/hints.json +0 -0
  360. {play_parser-1.2.0 → play_parser-1.2.1}/data/203_cast_group_roles_1/optimal.json +0 -0
  361. {play_parser-1.2.0 → play_parser-1.2.1}/data/204_cast_group_roles_2/204_cast_group_roles_2.txt +0 -0
  362. {play_parser-1.2.0 → play_parser-1.2.1}/data/204_cast_group_roles_2/hints.json +0 -0
  363. {play_parser-1.2.0 → play_parser-1.2.1}/data/204_cast_group_roles_2/optimal.json +0 -0
  364. {play_parser-1.2.0 → play_parser-1.2.1}/data/205_cast_alias_roles_1/205_cast_alias_roles_1.txt +0 -0
  365. {play_parser-1.2.0 → play_parser-1.2.1}/data/205_cast_alias_roles_1/hints.json +0 -0
  366. {play_parser-1.2.0 → play_parser-1.2.1}/data/205_cast_alias_roles_1/optimal.json +0 -0
  367. {play_parser-1.2.0 → play_parser-1.2.1}/data/206_cast_alias_roles_2/206_cast_alias_roles_2.txt +0 -0
  368. {play_parser-1.2.0 → play_parser-1.2.1}/data/206_cast_alias_roles_2/hints.json +0 -0
  369. {play_parser-1.2.0 → play_parser-1.2.1}/data/206_cast_alias_roles_2/optimal.json +0 -0
  370. {play_parser-1.2.0 → play_parser-1.2.1}/data/207_cast_no_separator_1/207_cast_no_separator_1.txt +0 -0
  371. {play_parser-1.2.0 → play_parser-1.2.1}/data/207_cast_no_separator_1/hints.json +0 -0
  372. {play_parser-1.2.0 → play_parser-1.2.1}/data/207_cast_no_separator_1/optimal.json +0 -0
  373. {play_parser-1.2.0 → play_parser-1.2.1}/data/208_cast_no_separator_2/208_cast_no_separator_2.txt +0 -0
  374. {play_parser-1.2.0 → play_parser-1.2.1}/data/208_cast_no_separator_2/hints.json +0 -0
  375. {play_parser-1.2.0 → play_parser-1.2.1}/data/208_cast_no_separator_2/optimal.json +0 -0
  376. {play_parser-1.2.0 → play_parser-1.2.1}/data/209_cast_non_speaking_1/209_cast_non_speaking_1.txt +0 -0
  377. {play_parser-1.2.0 → play_parser-1.2.1}/data/209_cast_non_speaking_1/hints.json +0 -0
  378. {play_parser-1.2.0 → play_parser-1.2.1}/data/209_cast_non_speaking_1/optimal.json +0 -0
  379. {play_parser-1.2.0 → play_parser-1.2.1}/data/20_single_character_monologue_with_directions/20_single_character_monologue_with_directions.txt +0 -0
  380. {play_parser-1.2.0 → play_parser-1.2.1}/data/20_single_character_monologue_with_directions/hints.json +0 -0
  381. {play_parser-1.2.0 → play_parser-1.2.1}/data/20_single_character_monologue_with_directions/optimal.json +0 -0
  382. {play_parser-1.2.0 → play_parser-1.2.1}/data/210_cast_non_speaking_2/210_cast_non_speaking_2.txt +0 -0
  383. {play_parser-1.2.0 → play_parser-1.2.1}/data/210_cast_non_speaking_2/hints.json +0 -0
  384. {play_parser-1.2.0 → play_parser-1.2.1}/data/210_cast_non_speaking_2/optimal.json +0 -0
  385. {play_parser-1.2.0 → play_parser-1.2.1}/data/211_classical_abbreviated_sigla_1/211_classical_abbreviated_sigla_1.txt +0 -0
  386. {play_parser-1.2.0 → play_parser-1.2.1}/data/211_classical_abbreviated_sigla_1/hints.json +0 -0
  387. {play_parser-1.2.0 → play_parser-1.2.1}/data/211_classical_abbreviated_sigla_1/optimal.json +0 -0
  388. {play_parser-1.2.0 → play_parser-1.2.1}/data/212_classical_abbreviated_sigla_2/212_classical_abbreviated_sigla_2.txt +0 -0
  389. {play_parser-1.2.0 → play_parser-1.2.1}/data/212_classical_abbreviated_sigla_2/hints.json +0 -0
  390. {play_parser-1.2.0 → play_parser-1.2.1}/data/212_classical_abbreviated_sigla_2/optimal.json +0 -0
  391. {play_parser-1.2.0 → play_parser-1.2.1}/data/213_marginal_speaker_labels_1/213_marginal_speaker_labels_1.txt +0 -0
  392. {play_parser-1.2.0 → play_parser-1.2.1}/data/213_marginal_speaker_labels_1/hints.json +0 -0
  393. {play_parser-1.2.0 → play_parser-1.2.1}/data/213_marginal_speaker_labels_1/optimal.json +0 -0
  394. {play_parser-1.2.0 → play_parser-1.2.1}/data/214_marginal_speaker_labels_2/214_marginal_speaker_labels_2.txt +0 -0
  395. {play_parser-1.2.0 → play_parser-1.2.1}/data/214_marginal_speaker_labels_2/hints.json +0 -0
  396. {play_parser-1.2.0 → play_parser-1.2.1}/data/214_marginal_speaker_labels_2/optimal.json +0 -0
  397. {play_parser-1.2.0 → play_parser-1.2.1}/data/215_numbered_verse_lines_1/215_numbered_verse_lines_1.txt +0 -0
  398. {play_parser-1.2.0 → play_parser-1.2.1}/data/215_numbered_verse_lines_1/hints.json +0 -0
  399. {play_parser-1.2.0 → play_parser-1.2.1}/data/215_numbered_verse_lines_1/optimal.json +0 -0
  400. {play_parser-1.2.0 → play_parser-1.2.1}/data/216_numbered_verse_lines_2/216_numbered_verse_lines_2.txt +0 -0
  401. {play_parser-1.2.0 → play_parser-1.2.1}/data/216_numbered_verse_lines_2/hints.json +0 -0
  402. {play_parser-1.2.0 → play_parser-1.2.1}/data/216_numbered_verse_lines_2/optimal.json +0 -0
  403. {play_parser-1.2.0 → play_parser-1.2.1}/data/217_roman_structure_1/217_roman_structure_1.txt +0 -0
  404. {play_parser-1.2.0 → play_parser-1.2.1}/data/217_roman_structure_1/hints.json +0 -0
  405. {play_parser-1.2.0 → play_parser-1.2.1}/data/217_roman_structure_1/optimal.json +0 -0
  406. {play_parser-1.2.0 → play_parser-1.2.1}/data/218_roman_structure_2/218_roman_structure_2.txt +0 -0
  407. {play_parser-1.2.0 → play_parser-1.2.1}/data/218_roman_structure_2/hints.json +0 -0
  408. {play_parser-1.2.0 → play_parser-1.2.1}/data/218_roman_structure_2/optimal.json +0 -0
  409. {play_parser-1.2.0 → play_parser-1.2.1}/data/219_enter_exit_conventions_1/219_enter_exit_conventions_1.txt +0 -0
  410. {play_parser-1.2.0 → play_parser-1.2.1}/data/219_enter_exit_conventions_1/hints.json +0 -0
  411. {play_parser-1.2.0 → play_parser-1.2.1}/data/219_enter_exit_conventions_1/optimal.json +0 -0
  412. {play_parser-1.2.0 → play_parser-1.2.1}/data/220_enter_exit_conventions_2/220_enter_exit_conventions_2.txt +0 -0
  413. {play_parser-1.2.0 → play_parser-1.2.1}/data/220_enter_exit_conventions_2/hints.json +0 -0
  414. {play_parser-1.2.0 → play_parser-1.2.1}/data/220_enter_exit_conventions_2/optimal.json +0 -0
  415. {play_parser-1.2.0 → play_parser-1.2.1}/data/221_timestamp_inline_dialogue_1/221_timestamp_inline_dialogue_1.txt +0 -0
  416. {play_parser-1.2.0 → play_parser-1.2.1}/data/221_timestamp_inline_dialogue_1/hints.json +0 -0
  417. {play_parser-1.2.0 → play_parser-1.2.1}/data/221_timestamp_inline_dialogue_1/optimal.json +0 -0
  418. {play_parser-1.2.0 → play_parser-1.2.1}/data/222_timestamp_inline_dialogue_2/222_timestamp_inline_dialogue_2.txt +0 -0
  419. {play_parser-1.2.0 → play_parser-1.2.1}/data/222_timestamp_inline_dialogue_2/hints.json +0 -0
  420. {play_parser-1.2.0 → play_parser-1.2.1}/data/222_timestamp_inline_dialogue_2/optimal.json +0 -0
  421. {play_parser-1.2.0 → play_parser-1.2.1}/data/223_bracketed_speaker_subtitles_1/223_bracketed_speaker_subtitles_1.txt +0 -0
  422. {play_parser-1.2.0 → play_parser-1.2.1}/data/223_bracketed_speaker_subtitles_1/hints.json +0 -0
  423. {play_parser-1.2.0 → play_parser-1.2.1}/data/223_bracketed_speaker_subtitles_1/optimal.json +0 -0
  424. {play_parser-1.2.0 → play_parser-1.2.1}/data/224_bracketed_speaker_subtitles_2/224_bracketed_speaker_subtitles_2.txt +0 -0
  425. {play_parser-1.2.0 → play_parser-1.2.1}/data/224_bracketed_speaker_subtitles_2/hints.json +0 -0
  426. {play_parser-1.2.0 → play_parser-1.2.1}/data/224_bracketed_speaker_subtitles_2/optimal.json +0 -0
  427. {play_parser-1.2.0 → play_parser-1.2.1}/data/225_srt_chunks_1/225_srt_chunks_1.txt +0 -0
  428. {play_parser-1.2.0 → play_parser-1.2.1}/data/225_srt_chunks_1/hints.json +0 -0
  429. {play_parser-1.2.0 → play_parser-1.2.1}/data/225_srt_chunks_1/optimal.json +0 -0
  430. {play_parser-1.2.0 → play_parser-1.2.1}/data/226_srt_chunks_2/226_srt_chunks_2.txt +0 -0
  431. {play_parser-1.2.0 → play_parser-1.2.1}/data/226_srt_chunks_2/hints.json +0 -0
  432. {play_parser-1.2.0 → play_parser-1.2.1}/data/226_srt_chunks_2/optimal.json +0 -0
  433. {play_parser-1.2.0 → play_parser-1.2.1}/data/227_webvtt_cues_1/227_webvtt_cues_1.txt +0 -0
  434. {play_parser-1.2.0 → play_parser-1.2.1}/data/227_webvtt_cues_1/hints.json +0 -0
  435. {play_parser-1.2.0 → play_parser-1.2.1}/data/227_webvtt_cues_1/optimal.json +0 -0
  436. {play_parser-1.2.0 → play_parser-1.2.1}/data/228_webvtt_cues_2/228_webvtt_cues_2.txt +0 -0
  437. {play_parser-1.2.0 → play_parser-1.2.1}/data/228_webvtt_cues_2/hints.json +0 -0
  438. {play_parser-1.2.0 → play_parser-1.2.1}/data/228_webvtt_cues_2/optimal.json +0 -0
  439. {play_parser-1.2.0 → play_parser-1.2.1}/data/229_speaker_dash_transcript_1/229_speaker_dash_transcript_1.txt +0 -0
  440. {play_parser-1.2.0 → play_parser-1.2.1}/data/229_speaker_dash_transcript_1/hints.json +0 -0
  441. {play_parser-1.2.0 → play_parser-1.2.1}/data/229_speaker_dash_transcript_1/optimal.json +0 -0
  442. {play_parser-1.2.0 → play_parser-1.2.1}/data/230_speaker_dash_transcript_2/230_speaker_dash_transcript_2.txt +0 -0
  443. {play_parser-1.2.0 → play_parser-1.2.1}/data/230_speaker_dash_transcript_2/hints.json +0 -0
  444. {play_parser-1.2.0 → play_parser-1.2.1}/data/230_speaker_dash_transcript_2/optimal.json +0 -0
  445. {play_parser-1.2.0 → play_parser-1.2.1}/data/231_markdown_bold_speakers_1/231_markdown_bold_speakers_1.txt +0 -0
  446. {play_parser-1.2.0 → play_parser-1.2.1}/data/231_markdown_bold_speakers_1/hints.json +0 -0
  447. {play_parser-1.2.0 → play_parser-1.2.1}/data/231_markdown_bold_speakers_1/optimal.json +0 -0
  448. {play_parser-1.2.0 → play_parser-1.2.1}/data/232_markdown_bold_speakers_2/232_markdown_bold_speakers_2.txt +0 -0
  449. {play_parser-1.2.0 → play_parser-1.2.1}/data/232_markdown_bold_speakers_2/hints.json +0 -0
  450. {play_parser-1.2.0 → play_parser-1.2.1}/data/232_markdown_bold_speakers_2/optimal.json +0 -0
  451. {play_parser-1.2.0 → play_parser-1.2.1}/data/233_markdown_italic_stage_1/233_markdown_italic_stage_1.txt +0 -0
  452. {play_parser-1.2.0 → play_parser-1.2.1}/data/233_markdown_italic_stage_1/hints.json +0 -0
  453. {play_parser-1.2.0 → play_parser-1.2.1}/data/233_markdown_italic_stage_1/optimal.json +0 -0
  454. {play_parser-1.2.0 → play_parser-1.2.1}/data/234_markdown_italic_stage_2/234_markdown_italic_stage_2.txt +0 -0
  455. {play_parser-1.2.0 → play_parser-1.2.1}/data/234_markdown_italic_stage_2/hints.json +0 -0
  456. {play_parser-1.2.0 → play_parser-1.2.1}/data/234_markdown_italic_stage_2/optimal.json +0 -0
  457. {play_parser-1.2.0 → play_parser-1.2.1}/data/235_markdown_blockquote_dialogue_1/235_markdown_blockquote_dialogue_1.txt +0 -0
  458. {play_parser-1.2.0 → play_parser-1.2.1}/data/235_markdown_blockquote_dialogue_1/hints.json +0 -0
  459. {play_parser-1.2.0 → play_parser-1.2.1}/data/235_markdown_blockquote_dialogue_1/optimal.json +0 -0
  460. {play_parser-1.2.0 → play_parser-1.2.1}/data/236_markdown_blockquote_dialogue_2/236_markdown_blockquote_dialogue_2.txt +0 -0
  461. {play_parser-1.2.0 → play_parser-1.2.1}/data/236_markdown_blockquote_dialogue_2/hints.json +0 -0
  462. {play_parser-1.2.0 → play_parser-1.2.1}/data/236_markdown_blockquote_dialogue_2/optimal.json +0 -0
  463. {play_parser-1.2.0 → play_parser-1.2.1}/data/237_html_entities_1/237_html_entities_1.txt +0 -0
  464. {play_parser-1.2.0 → play_parser-1.2.1}/data/237_html_entities_1/hints.json +0 -0
  465. {play_parser-1.2.0 → play_parser-1.2.1}/data/237_html_entities_1/optimal.json +0 -0
  466. {play_parser-1.2.0 → play_parser-1.2.1}/data/238_html_entities_2/238_html_entities_2.txt +0 -0
  467. {play_parser-1.2.0 → play_parser-1.2.1}/data/238_html_entities_2/hints.json +0 -0
  468. {play_parser-1.2.0 → play_parser-1.2.1}/data/238_html_entities_2/optimal.json +0 -0
  469. {play_parser-1.2.0 → play_parser-1.2.1}/data/239_web_footer_copied_1/239_web_footer_copied_1.txt +0 -0
  470. {play_parser-1.2.0 → play_parser-1.2.1}/data/239_web_footer_copied_1/hints.json +0 -0
  471. {play_parser-1.2.0 → play_parser-1.2.1}/data/239_web_footer_copied_1/optimal.json +0 -0
  472. {play_parser-1.2.0 → play_parser-1.2.1}/data/240_web_footer_copied_2/240_web_footer_copied_2.txt +0 -0
  473. {play_parser-1.2.0 → play_parser-1.2.1}/data/240_web_footer_copied_2/hints.json +0 -0
  474. {play_parser-1.2.0 → play_parser-1.2.1}/data/240_web_footer_copied_2/optimal.json +0 -0
  475. {play_parser-1.2.0 → play_parser-1.2.1}/data/60_audition_01_two_person_drama/60_audition_01_two_person_drama.txt +0 -0
  476. {play_parser-1.2.0 → play_parser-1.2.1}/data/60_audition_01_two_person_drama/hints.json +0 -0
  477. {play_parser-1.2.0 → play_parser-1.2.1}/data/60_audition_01_two_person_drama/optimal.json +0 -0
  478. {play_parser-1.2.0 → play_parser-1.2.1}/data/61_audition_02_comedic_monologue/61_audition_02_comedic_monologue.txt +0 -0
  479. {play_parser-1.2.0 → play_parser-1.2.1}/data/61_audition_02_comedic_monologue/hints.json +0 -0
  480. {play_parser-1.2.0 → play_parser-1.2.1}/data/61_audition_02_comedic_monologue/optimal.json +0 -0
  481. {play_parser-1.2.0 → play_parser-1.2.1}/data/62_audition_03_one_person_voice_message/62_audition_03_one_person_voice_message.txt +0 -0
  482. {play_parser-1.2.0 → play_parser-1.2.1}/data/62_audition_03_one_person_voice_message/hints.json +0 -0
  483. {play_parser-1.2.0 → play_parser-1.2.1}/data/62_audition_03_one_person_voice_message/optimal.json +0 -0
  484. {play_parser-1.2.0 → play_parser-1.2.1}/data/63_audition_04_period_scene/63_audition_04_period_scene.txt +0 -0
  485. {play_parser-1.2.0 → play_parser-1.2.1}/data/63_audition_04_period_scene/hints.json +0 -0
  486. {play_parser-1.2.0 → play_parser-1.2.1}/data/63_audition_04_period_scene/optimal.json +0 -0
  487. {play_parser-1.2.0 → play_parser-1.2.1}/data/64_audition_05_sci_fi_interrogation/64_audition_05_sci_fi_interrogation.txt +0 -0
  488. {play_parser-1.2.0 → play_parser-1.2.1}/data/64_audition_05_sci_fi_interrogation/hints.json +0 -0
  489. {play_parser-1.2.0 → play_parser-1.2.1}/data/64_audition_05_sci_fi_interrogation/optimal.json +0 -0
  490. {play_parser-1.2.0 → play_parser-1.2.1}/data/65_audition_06_romantic_comedy/65_audition_06_romantic_comedy.txt +0 -0
  491. {play_parser-1.2.0 → play_parser-1.2.1}/data/65_audition_06_romantic_comedy/hints.json +0 -0
  492. {play_parser-1.2.0 → play_parser-1.2.1}/data/65_audition_06_romantic_comedy/optimal.json +0 -0
  493. {play_parser-1.2.0 → play_parser-1.2.1}/data/66_audition_07_thriller_scene/66_audition_07_thriller_scene.txt +0 -0
  494. {play_parser-1.2.0 → play_parser-1.2.1}/data/66_audition_07_thriller_scene/hints.json +0 -0
  495. {play_parser-1.2.0 → play_parser-1.2.1}/data/66_audition_07_thriller_scene/optimal.json +0 -0
  496. {play_parser-1.2.0 → play_parser-1.2.1}/data/67_audition_08_duologue_family/67_audition_08_duologue_family.txt +0 -0
  497. {play_parser-1.2.0 → play_parser-1.2.1}/data/67_audition_08_duologue_family/hints.json +0 -0
  498. {play_parser-1.2.0 → play_parser-1.2.1}/data/67_audition_08_duologue_family/optimal.json +0 -0
  499. {play_parser-1.2.0 → play_parser-1.2.1}/data/68_audition_09_silent_stage_directions/68_audition_09_silent_stage_directions.txt +0 -0
  500. {play_parser-1.2.0 → play_parser-1.2.1}/data/68_audition_09_silent_stage_directions/hints.json +0 -0
  501. {play_parser-1.2.0 → play_parser-1.2.1}/data/68_audition_09_silent_stage_directions/optimal.json +0 -0
  502. {play_parser-1.2.0 → play_parser-1.2.1}/data/69_audition_10_mockumentary/69_audition_10_mockumentary.txt +0 -0
  503. {play_parser-1.2.0 → play_parser-1.2.1}/data/69_audition_10_mockumentary/hints.json +0 -0
  504. {play_parser-1.2.0 → play_parser-1.2.1}/data/69_audition_10_mockumentary/optimal.json +0 -0
  505. {play_parser-1.2.0 → play_parser-1.2.1}/data/70_audition_11_classical_heightened/70_audition_11_classical_heightened.txt +0 -0
  506. {play_parser-1.2.0 → play_parser-1.2.1}/data/70_audition_11_classical_heightened/hints.json +0 -0
  507. {play_parser-1.2.0 → play_parser-1.2.1}/data/70_audition_11_classical_heightened/optimal.json +0 -0
  508. {play_parser-1.2.0 → play_parser-1.2.1}/data/71_audition_12_police_procedural/71_audition_12_police_procedural.txt +0 -0
  509. {play_parser-1.2.0 → play_parser-1.2.1}/data/71_audition_12_police_procedural/hints.json +0 -0
  510. {play_parser-1.2.0 → play_parser-1.2.1}/data/71_audition_12_police_procedural/optimal.json +0 -0
  511. {play_parser-1.2.0 → play_parser-1.2.1}/data/72_audition_13_child_actor_scene/72_audition_13_child_actor_scene.txt +0 -0
  512. {play_parser-1.2.0 → play_parser-1.2.1}/data/72_audition_13_child_actor_scene/hints.json +0 -0
  513. {play_parser-1.2.0 → play_parser-1.2.1}/data/72_audition_13_child_actor_scene/optimal.json +0 -0
  514. {play_parser-1.2.0 → play_parser-1.2.1}/data/73_audition_14_soap_scene/73_audition_14_soap_scene.txt +0 -0
  515. {play_parser-1.2.0 → play_parser-1.2.1}/data/73_audition_14_soap_scene/hints.json +0 -0
  516. {play_parser-1.2.0 → play_parser-1.2.1}/data/73_audition_14_soap_scene/optimal.json +0 -0
  517. {play_parser-1.2.0 → play_parser-1.2.1}/data/74_audition_15_horror_scene/74_audition_15_horror_scene.txt +0 -0
  518. {play_parser-1.2.0 → play_parser-1.2.1}/data/74_audition_15_horror_scene/hints.json +0 -0
  519. {play_parser-1.2.0 → play_parser-1.2.1}/data/74_audition_15_horror_scene/optimal.json +0 -0
  520. {play_parser-1.2.0 → play_parser-1.2.1}/data/75_audition_16_workplace_scene/75_audition_16_workplace_scene.txt +0 -0
  521. {play_parser-1.2.0 → play_parser-1.2.1}/data/75_audition_16_workplace_scene/hints.json +0 -0
  522. {play_parser-1.2.0 → play_parser-1.2.1}/data/75_audition_16_workplace_scene/optimal.json +0 -0
  523. {play_parser-1.2.0 → play_parser-1.2.1}/data/76_audition_17_legal_scene/76_audition_17_legal_scene.txt +0 -0
  524. {play_parser-1.2.0 → play_parser-1.2.1}/data/76_audition_17_legal_scene/hints.json +0 -0
  525. {play_parser-1.2.0 → play_parser-1.2.1}/data/76_audition_17_legal_scene/optimal.json +0 -0
  526. {play_parser-1.2.0 → play_parser-1.2.1}/data/77_audition_18_fantasy_scene/77_audition_18_fantasy_scene.txt +0 -0
  527. {play_parser-1.2.0 → play_parser-1.2.1}/data/77_audition_18_fantasy_scene/hints.json +0 -0
  528. {play_parser-1.2.0 → play_parser-1.2.1}/data/77_audition_18_fantasy_scene/optimal.json +0 -0
  529. {play_parser-1.2.0 → play_parser-1.2.1}/data/78_audition_19_radio_play/78_audition_19_radio_play.txt +0 -0
  530. {play_parser-1.2.0 → play_parser-1.2.1}/data/78_audition_19_radio_play/hints.json +0 -0
  531. {play_parser-1.2.0 → play_parser-1.2.1}/data/78_audition_19_radio_play/optimal.json +0 -0
  532. {play_parser-1.2.0 → play_parser-1.2.1}/data/79_audition_20_musical_book_scene/79_audition_20_musical_book_scene.txt +0 -0
  533. {play_parser-1.2.0 → play_parser-1.2.1}/data/79_audition_20_musical_book_scene/hints.json +0 -0
  534. {play_parser-1.2.0 → play_parser-1.2.1}/data/79_audition_20_musical_book_scene/optimal.json +0 -0
  535. {play_parser-1.2.0 → play_parser-1.2.1}/data/80_colon_cast_and_scene/80_colon_cast_and_scene.txt +0 -0
  536. {play_parser-1.2.0 → play_parser-1.2.1}/data/80_colon_cast_and_scene/hints.json +0 -0
  537. {play_parser-1.2.0 → play_parser-1.2.1}/data/80_colon_cast_and_scene/optimal.json +0 -0
  538. {play_parser-1.2.0 → play_parser-1.2.1}/data/81_bare_speaker_acts/81_bare_speaker_acts.txt +0 -0
  539. {play_parser-1.2.0 → play_parser-1.2.1}/data/81_bare_speaker_acts/hints.json +0 -0
  540. {play_parser-1.2.0 → play_parser-1.2.1}/data/81_bare_speaker_acts/optimal.json +0 -0
  541. {play_parser-1.2.0 → play_parser-1.2.1}/data/82_dot_inline_comedy/82_dot_inline_comedy.txt +0 -0
  542. {play_parser-1.2.0 → play_parser-1.2.1}/data/82_dot_inline_comedy/hints.json +0 -0
  543. {play_parser-1.2.0 → play_parser-1.2.1}/data/82_dot_inline_comedy/optimal.json +0 -0
  544. {play_parser-1.2.0 → play_parser-1.2.1}/data/83_dot_block_form/83_dot_block_form.txt +0 -0
  545. {play_parser-1.2.0 → play_parser-1.2.1}/data/83_dot_block_form/hints.json +0 -0
  546. {play_parser-1.2.0 → play_parser-1.2.1}/data/83_dot_block_form/optimal.json +0 -0
  547. {play_parser-1.2.0 → play_parser-1.2.1}/data/84_bracket_directions/84_bracket_directions.txt +0 -0
  548. {play_parser-1.2.0 → play_parser-1.2.1}/data/84_bracket_directions/hints.json +0 -0
  549. {play_parser-1.2.0 → play_parser-1.2.1}/data/84_bracket_directions/optimal.json +0 -0
  550. {play_parser-1.2.0 → play_parser-1.2.1}/data/85_monologue_parentheses/85_monologue_parentheses.txt +0 -0
  551. {play_parser-1.2.0 → play_parser-1.2.1}/data/85_monologue_parentheses/hints.json +0 -0
  552. {play_parser-1.2.0 → play_parser-1.2.1}/data/85_monologue_parentheses/optimal.json +0 -0
  553. {play_parser-1.2.0 → play_parser-1.2.1}/data/86_no_dialogue_physical/86_no_dialogue_physical.txt +0 -0
  554. {play_parser-1.2.0 → play_parser-1.2.1}/data/86_no_dialogue_physical/hints.json +0 -0
  555. {play_parser-1.2.0 → play_parser-1.2.1}/data/86_no_dialogue_physical/optimal.json +0 -0
  556. {play_parser-1.2.0 → play_parser-1.2.1}/data/87_modern_act_words/87_modern_act_words.txt +0 -0
  557. {play_parser-1.2.0 → play_parser-1.2.1}/data/87_modern_act_words/hints.json +0 -0
  558. {play_parser-1.2.0 → play_parser-1.2.1}/data/87_modern_act_words/optimal.json +0 -0
  559. {play_parser-1.2.0 → play_parser-1.2.1}/data/88_screenplay_slugline/88_screenplay_slugline.txt +0 -0
  560. {play_parser-1.2.0 → play_parser-1.2.1}/data/88_screenplay_slugline/hints.json +0 -0
  561. {play_parser-1.2.0 → play_parser-1.2.1}/data/88_screenplay_slugline/optimal.json +0 -0
  562. {play_parser-1.2.0 → play_parser-1.2.1}/data/89_radio_sfx/89_radio_sfx.txt +0 -0
  563. {play_parser-1.2.0 → play_parser-1.2.1}/data/89_radio_sfx/hints.json +0 -0
  564. {play_parser-1.2.0 → play_parser-1.2.1}/data/89_radio_sfx/optimal.json +0 -0
  565. {play_parser-1.2.0 → play_parser-1.2.1}/data/90_mixed_inline_stage/90_mixed_inline_stage.txt +0 -0
  566. {play_parser-1.2.0 → play_parser-1.2.1}/data/90_mixed_inline_stage/hints.json +0 -0
  567. {play_parser-1.2.0 → play_parser-1.2.1}/data/90_mixed_inline_stage/optimal.json +0 -0
  568. {play_parser-1.2.0 → play_parser-1.2.1}/data/91_title_author_immediate/91_title_author_immediate.txt +0 -0
  569. {play_parser-1.2.0 → play_parser-1.2.1}/data/91_title_author_immediate/hints.json +0 -0
  570. {play_parser-1.2.0 → play_parser-1.2.1}/data/91_title_author_immediate/optimal.json +0 -0
  571. {play_parser-1.2.0 → play_parser-1.2.1}/data/92_cast_commas/92_cast_commas.txt +0 -0
  572. {play_parser-1.2.0 → play_parser-1.2.1}/data/92_cast_commas/hints.json +0 -0
  573. {play_parser-1.2.0 → play_parser-1.2.1}/data/92_cast_commas/optimal.json +0 -0
  574. {play_parser-1.2.0 → play_parser-1.2.1}/data/93_multiscene_no_acts/93_multiscene_no_acts.txt +0 -0
  575. {play_parser-1.2.0 → play_parser-1.2.1}/data/93_multiscene_no_acts/hints.json +0 -0
  576. {play_parser-1.2.0 → play_parser-1.2.1}/data/93_multiscene_no_acts/optimal.json +0 -0
  577. {play_parser-1.2.0 → play_parser-1.2.1}/data/94_stage_speaker_action/94_stage_speaker_action.txt +0 -0
  578. {play_parser-1.2.0 → play_parser-1.2.1}/data/94_stage_speaker_action/hints.json +0 -0
  579. {play_parser-1.2.0 → play_parser-1.2.1}/data/94_stage_speaker_action/optimal.json +0 -0
  580. {play_parser-1.2.0 → play_parser-1.2.1}/data/95_character_names_spaces/95_character_names_spaces.txt +0 -0
  581. {play_parser-1.2.0 → play_parser-1.2.1}/data/95_character_names_spaces/hints.json +0 -0
  582. {play_parser-1.2.0 → play_parser-1.2.1}/data/95_character_names_spaces/optimal.json +0 -0
  583. {play_parser-1.2.0 → play_parser-1.2.1}/data/96_long_preamble_marker/96_long_preamble_marker.txt +0 -0
  584. {play_parser-1.2.0 → play_parser-1.2.1}/data/96_long_preamble_marker/hints.json +0 -0
  585. {play_parser-1.2.0 → play_parser-1.2.1}/data/96_long_preamble_marker/optimal.json +0 -0
  586. {play_parser-1.2.0 → play_parser-1.2.1}/data/97_single_character_with_end/97_single_character_with_end.txt +0 -0
  587. {play_parser-1.2.0 → play_parser-1.2.1}/data/97_single_character_with_end/hints.json +0 -0
  588. {play_parser-1.2.0 → play_parser-1.2.1}/data/97_single_character_with_end/optimal.json +0 -0
  589. {play_parser-1.2.0 → play_parser-1.2.1}/data/98_colon_scene_false_positive/98_colon_scene_false_positive.txt +0 -0
  590. {play_parser-1.2.0 → play_parser-1.2.1}/data/98_colon_scene_false_positive/hints.json +0 -0
  591. {play_parser-1.2.0 → play_parser-1.2.1}/data/98_colon_scene_false_positive/optimal.json +0 -0
  592. {play_parser-1.2.0 → play_parser-1.2.1}/data/99_dot_signature_not_speaker/99_dot_signature_not_speaker.txt +0 -0
  593. {play_parser-1.2.0 → play_parser-1.2.1}/data/99_dot_signature_not_speaker/hints.json +0 -0
  594. {play_parser-1.2.0 → play_parser-1.2.1}/data/99_dot_signature_not_speaker/optimal.json +0 -0
  595. {play_parser-1.2.0 → play_parser-1.2.1}/data/A Midsummer Night's Dream/A Midsummer Night's Dream.txt +0 -0
  596. {play_parser-1.2.0 → play_parser-1.2.1}/data/A Midsummer Night's Dream/optimal.json +0 -0
  597. {play_parser-1.2.0 → play_parser-1.2.1}/data/All's Well That Ends Well/All's Well That Ends Well.txt +0 -0
  598. {play_parser-1.2.0 → play_parser-1.2.1}/data/All's Well That Ends Well/optimal.json +0 -0
  599. {play_parser-1.2.0 → play_parser-1.2.1}/data/Antony and Cleopatra/Antony and Cleopatra.txt +0 -0
  600. {play_parser-1.2.0 → play_parser-1.2.1}/data/Antony and Cleopatra/optimal.json +0 -0
  601. {play_parser-1.2.0 → play_parser-1.2.1}/data/As You Like It/As You Like It.txt +0 -0
  602. {play_parser-1.2.0 → play_parser-1.2.1}/data/As You Like It/optimal.json +0 -0
  603. {play_parser-1.2.0 → play_parser-1.2.1}/data/CORPUS_FORMATS.md +0 -0
  604. {play_parser-1.2.0 → play_parser-1.2.1}/data/Coriolanus/Coriolanus.txt +0 -0
  605. {play_parser-1.2.0 → play_parser-1.2.1}/data/Coriolanus/optimal.json +0 -0
  606. {play_parser-1.2.0 → play_parser-1.2.1}/data/Cymbeline/Cymbeline.txt +0 -0
  607. {play_parser-1.2.0 → play_parser-1.2.1}/data/Cymbeline/optimal.json +0 -0
  608. {play_parser-1.2.0 → play_parser-1.2.1}/data/Gin vs Whiskey/Gin vs Whiskey.txt +0 -0
  609. {play_parser-1.2.0 → play_parser-1.2.1}/data/Gin vs Whiskey/hints.json +0 -0
  610. {play_parser-1.2.0 → play_parser-1.2.1}/data/Gin vs Whiskey/optimal.json +0 -0
  611. {play_parser-1.2.0 → play_parser-1.2.1}/data/Hamlet/Hamlet.txt +0 -0
  612. {play_parser-1.2.0 → play_parser-1.2.1}/data/Hamlet/optimal.json +0 -0
  613. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry IV, Part 1/Henry IV, Part 1.txt +0 -0
  614. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry IV, Part 1/optimal.json +0 -0
  615. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry IV, Part 2/Henry IV, Part 2.txt +0 -0
  616. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry IV, Part 2/optimal.json +0 -0
  617. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry V/Henry V.txt +0 -0
  618. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry V/optimal.json +0 -0
  619. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 1/Henry VI, Part 1.txt +0 -0
  620. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 1/optimal.json +0 -0
  621. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 2/Henry VI, Part 2.txt +0 -0
  622. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 2/optimal.json +0 -0
  623. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 3/Henry VI, Part 3.txt +0 -0
  624. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VI, Part 3/optimal.json +0 -0
  625. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VIII/Henry VIII.txt +0 -0
  626. {play_parser-1.2.0 → play_parser-1.2.1}/data/Henry VIII/optimal.json +0 -0
  627. {play_parser-1.2.0 → play_parser-1.2.1}/data/Julius Caesar/Julius Caesar.txt +0 -0
  628. {play_parser-1.2.0 → play_parser-1.2.1}/data/Julius Caesar/optimal.json +0 -0
  629. {play_parser-1.2.0 → play_parser-1.2.1}/data/King John/King John.txt +0 -0
  630. {play_parser-1.2.0 → play_parser-1.2.1}/data/King John/optimal.json +0 -0
  631. {play_parser-1.2.0 → play_parser-1.2.1}/data/King Lear/King Lear.txt +0 -0
  632. {play_parser-1.2.0 → play_parser-1.2.1}/data/King Lear/optimal.json +0 -0
  633. {play_parser-1.2.0 → play_parser-1.2.1}/data/Love's Labour's Lost/Love's Labour's Lost.txt +0 -0
  634. {play_parser-1.2.0 → play_parser-1.2.1}/data/Love's Labour's Lost/optimal.json +0 -0
  635. {play_parser-1.2.0 → play_parser-1.2.1}/data/Macbeth/Macbeth.txt +0 -0
  636. {play_parser-1.2.0 → play_parser-1.2.1}/data/Macbeth/optimal.json +0 -0
  637. {play_parser-1.2.0 → play_parser-1.2.1}/data/Measure for Measure/Measure for Measure.txt +0 -0
  638. {play_parser-1.2.0 → play_parser-1.2.1}/data/Measure for Measure/optimal.json +0 -0
  639. {play_parser-1.2.0 → play_parser-1.2.1}/data/Much Ado About Nothing/Much Ado About Nothing.txt +0 -0
  640. {play_parser-1.2.0 → play_parser-1.2.1}/data/Much Ado About Nothing/optimal.json +0 -0
  641. {play_parser-1.2.0 → play_parser-1.2.1}/data/Othello/Othello.txt +0 -0
  642. {play_parser-1.2.0 → play_parser-1.2.1}/data/Othello/optimal.json +0 -0
  643. {play_parser-1.2.0 → play_parser-1.2.1}/data/Pericles, Prince of Tyre/Pericles, Prince of Tyre.txt +0 -0
  644. {play_parser-1.2.0 → play_parser-1.2.1}/data/Pericles, Prince of Tyre/optimal.json +0 -0
  645. {play_parser-1.2.0 → play_parser-1.2.1}/data/README.md +0 -0
  646. {play_parser-1.2.0 → play_parser-1.2.1}/data/Richard II/Richard II.txt +0 -0
  647. {play_parser-1.2.0 → play_parser-1.2.1}/data/Richard II/optimal.json +0 -0
  648. {play_parser-1.2.0 → play_parser-1.2.1}/data/Richard III/Richard III.txt +0 -0
  649. {play_parser-1.2.0 → play_parser-1.2.1}/data/Richard III/optimal.json +0 -0
  650. {play_parser-1.2.0 → play_parser-1.2.1}/data/Romeo and Juliet/Romeo and Juliet.txt +0 -0
  651. {play_parser-1.2.0 → play_parser-1.2.1}/data/Romeo and Juliet/optimal.json +0 -0
  652. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Comedy of Errors/The Comedy of Errors.txt +0 -0
  653. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Comedy of Errors/optimal.json +0 -0
  654. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Importance of Being Earnest/The Importance of Being Earnest.txt +0 -0
  655. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Importance of Being Earnest/hints.json +0 -0
  656. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Importance of Being Earnest/optimal.json +0 -0
  657. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Merchant of Venice/The Merchant of Venice.txt +0 -0
  658. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Merchant of Venice/optimal.json +0 -0
  659. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Merry Wives of Windsor/The Merry Wives of Windsor.txt +0 -0
  660. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Merry Wives of Windsor/optimal.json +0 -0
  661. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Taming of the Shrew/The Taming of the Shrew.txt +0 -0
  662. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Taming of the Shrew/optimal.json +0 -0
  663. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Tempest/The Tempest.txt +0 -0
  664. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Tempest/optimal.json +0 -0
  665. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Winter's Tale/The Winter's Tale.txt +0 -0
  666. {play_parser-1.2.0 → play_parser-1.2.1}/data/The Winter's Tale/optimal.json +0 -0
  667. {play_parser-1.2.0 → play_parser-1.2.1}/data/Timon of Athens/Timon of Athens.txt +0 -0
  668. {play_parser-1.2.0 → play_parser-1.2.1}/data/Timon of Athens/optimal.json +0 -0
  669. {play_parser-1.2.0 → play_parser-1.2.1}/data/Titus Andronicus/Titus Andronicus.txt +0 -0
  670. {play_parser-1.2.0 → play_parser-1.2.1}/data/Titus Andronicus/optimal.json +0 -0
  671. {play_parser-1.2.0 → play_parser-1.2.1}/data/Troilus and Cressida/Troilus and Cressida.txt +0 -0
  672. {play_parser-1.2.0 → play_parser-1.2.1}/data/Troilus and Cressida/optimal.json +0 -0
  673. {play_parser-1.2.0 → play_parser-1.2.1}/data/Twelfth Night/Twelfth Night.txt +0 -0
  674. {play_parser-1.2.0 → play_parser-1.2.1}/data/Twelfth Night/optimal.json +0 -0
  675. {play_parser-1.2.0 → play_parser-1.2.1}/data/Two Gentlemen of Verona/Two Gentlemen of Verona.txt +0 -0
  676. {play_parser-1.2.0 → play_parser-1.2.1}/data/Two Gentlemen of Verona/optimal.json +0 -0
  677. {play_parser-1.2.0 → play_parser-1.2.1}/docs/API.md +0 -0
  678. {play_parser-1.2.0 → play_parser-1.2.1}/docs/FORMAT_PROFILES.md +0 -0
  679. {play_parser-1.2.0 → play_parser-1.2.1}/docs/JSON_SCHEMA.md +0 -0
  680. {play_parser-1.2.0 → play_parser-1.2.1}/docs/play_document.schema.json +0 -0
  681. {play_parser-1.2.0 → play_parser-1.2.1}/setup.cfg +0 -0
  682. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/__main__.py +0 -0
  683. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/_io.py +0 -0
  684. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/cli/__init__.py +0 -0
  685. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/cli/main.py +0 -0
  686. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/__init__.py +0 -0
  687. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/assembler.py +0 -0
  688. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/builder.py +0 -0
  689. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/constants.py +0 -0
  690. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/document/text.py +0 -0
  691. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/domain/__init__.py +0 -0
  692. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/domain/play.py +0 -0
  693. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/ingestion/__init__.py +0 -0
  694. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/ingestion/ingestor.py +0 -0
  695. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/__init__.py +0 -0
  696. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/context.py +0 -0
  697. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/front_matter.py +0 -0
  698. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/fsm.py +0 -0
  699. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/hints.py +0 -0
  700. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/parser.py +0 -0
  701. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/__init__.py +0 -0
  702. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/__init__.py +0 -0
  703. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/colon_inline.json +0 -0
  704. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/dot_block.json +0 -0
  705. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/dot_inline.json +0 -0
  706. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/mixed_parenthetical.json +0 -0
  707. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/builtins/narrative_stage_heavy.json +0 -0
  708. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/loader.py +0 -0
  709. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/profiles/schema.py +0 -0
  710. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/speakers.py +0 -0
  711. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/speech.py +0 -0
  712. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/stage.py +0 -0
  713. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/structure.py +0 -0
  714. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/parsing/viterbi.py +0 -0
  715. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser/py.typed +0 -0
  716. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser.egg-info/dependency_links.txt +0 -0
  717. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser.egg-info/entry_points.txt +0 -0
  718. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser.egg-info/requires.txt +0 -0
  719. {play_parser-1.2.0 → play_parser-1.2.1}/src/play_parser.egg-info/top_level.txt +0 -0
  720. {play_parser-1.2.0 → play_parser-1.2.1}/tests/__init__.py +0 -0
  721. {play_parser-1.2.0 → play_parser-1.2.1}/tests/conftest.py +0 -0
  722. {play_parser-1.2.0 → play_parser-1.2.1}/tests/play_document_comparison.py +0 -0
  723. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_cli.py +0 -0
  724. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_corpus_inventory.py +0 -0
  725. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_corpus_optimal_json.py +0 -0
  726. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_document_roundtrip.py +0 -0
  727. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_domain.py +0 -0
  728. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_fsm_corpus_optimal_json.py +0 -0
  729. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_fsm_scoring.py +0 -0
  730. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_ingestor.py +0 -0
  731. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_json_schema.py +0 -0
  732. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_parser_core.py +0 -0
  733. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_parser_factory.py +0 -0
  734. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_profiles.py +0 -0
  735. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_public_api.py +0 -0
  736. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_validation_strict_types.py +0 -0
  737. {play_parser-1.2.0 → play_parser-1.2.1}/tests/test_viterbi_decoder.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: play-parser
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Parse dramatic play text into ordered dramatic events.
5
5
  Author-email: Stergios Poularakis <stpoular@gmail.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "play-parser"
7
- version = "1.2.0"
7
+ version = "1.2.1"
8
8
  description = "Parse dramatic play text into ordered dramatic events."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -8,6 +8,7 @@ from play_parser.domain import Act, Character, Dialogue, Monologue, Play, Scene,
8
8
  from play_parser.ingestion import PlayIngestor
9
9
  from play_parser.parsers import FSMPlayParser, PlayParser, RuleBasedPlayParser, SimplePlayParser
10
10
  from play_parser.parsing.hints import PlayParseConfig, PlayParseHints, load_play_parse_config
11
+ from play_parser.parsing.profile_detection import ProfileDetectionResult, ProfileScore, detect_format_profile
11
12
  from play_parser.parsing.profiles import (
12
13
  FormatProfile,
13
14
  get_format_profile,
@@ -52,6 +53,9 @@ __all__ = [
52
53
  "FSMPlayParser",
53
54
  "PlayParseConfig",
54
55
  "PlayParseHints",
56
+ "ProfileDetectionResult",
57
+ "ProfileScore",
58
+ "detect_format_profile",
55
59
  "Scene",
56
60
  "Speech",
57
61
  "assemble_play_text",
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Literal, TypedDict
3
+ from typing import Any, Literal, TypedDict
4
4
 
5
5
 
6
6
  class ActStartEvent(TypedDict):
@@ -95,6 +95,8 @@ class PlayMetadataRequired(TypedDict):
95
95
 
96
96
  class PlayMetadata(PlayMetadataRequired, total=False):
97
97
  preamble: str
98
+ selected_format_profile: str
99
+ profile_detection: dict[str, Any]
98
100
 
99
101
 
100
102
  class PlayDocument(TypedDict):
@@ -12,7 +12,7 @@ from .types import PlayDocument, PlayEvent, PlayMetadata
12
12
 
13
13
  DEFAULT_DIFF_CONTEXT_SIZE = 50
14
14
  REQUIRED_METADATA_FIELDS = {"title", "author", "characters", "acts", "scenes", "stats"}
15
- OPTIONAL_METADATA_FIELDS = {"preamble"}
15
+ OPTIONAL_METADATA_FIELDS = {"preamble", "selected_format_profile", "profile_detection"}
16
16
  REQUIRED_DOCUMENT_FIELDS = {"metadata", "events"}
17
17
  REQUIRED_ACT_SUMMARY_FIELDS = {"act_number", "label"}
18
18
  REQUIRED_SCENE_SUMMARY_FIELDS = {"act_number", "scene_number", "label"}
@@ -12,6 +12,7 @@ from play_parser.domain import Play
12
12
  from play_parser.ingestion.ingestor import ProfileInput, resolve_format_profile
13
13
  from play_parser.parsing.fsm import FSMDocumentParser, PlayFSMScoring
14
14
  from play_parser.parsing.hints import PlayParseHints
15
+ from play_parser.parsing.profile_detection import detect_format_profile
15
16
 
16
17
  ParserMethod = Literal["simple", "rule", "fsm"]
17
18
 
@@ -79,6 +80,16 @@ class PlayParser(ABC):
79
80
  ).as_dict()
80
81
 
81
82
 
83
+ def _should_auto_detect_profile(profile: ProfileInput, profile_path: str | Path | None) -> bool:
84
+ if profile_path is not None:
85
+ return False
86
+ if profile is None:
87
+ return False
88
+ if isinstance(profile, str):
89
+ return profile.strip().lower().replace("-", "_") in {"auto", "default"}
90
+ return False
91
+
92
+
82
93
  def _coerce_hints(hints: PlayParseHints | Mapping[str, object] | None) -> PlayParseHints | None:
83
94
  if hints is None:
84
95
  return None
@@ -109,13 +120,23 @@ class SimplePlayParser(PlayParser):
109
120
  if existing_document is not None:
110
121
  return Play(existing_document)
111
122
 
112
- resolved_profile = resolve_format_profile(profile=profile, profile_path=profile_path)
123
+ coerced_hints = _coerce_hints(hints)
124
+ detection = None
125
+ if _should_auto_detect_profile(profile, profile_path):
126
+ detection = detect_format_profile(data, hints=coerced_hints)
127
+ resolved_profile = None if detection.selected_profile == "generic" else resolve_format_profile(profile=detection.selected_profile)
128
+ else:
129
+ resolved_profile = resolve_format_profile(profile=profile, profile_path=profile_path)
130
+
113
131
  document = build_play_document(
114
132
  data,
115
133
  play_name=Path(source_name).stem if source_name else None,
116
134
  profile=resolved_profile,
117
- hints=_coerce_hints(hints),
135
+ hints=coerced_hints,
118
136
  )
137
+ if detection is not None:
138
+ document.setdefault("metadata", {})["selected_format_profile"] = detection.selected_profile
139
+ document.setdefault("metadata", {})["profile_detection"] = detection.as_dict()
119
140
  return Play(document)
120
141
 
121
142
 
@@ -149,12 +170,22 @@ class FSMPlayParser(PlayParser):
149
170
  if existing_document is not None:
150
171
  return Play(existing_document)
151
172
 
152
- resolved_profile = resolve_format_profile(profile=profile, profile_path=profile_path)
173
+ coerced_hints = _coerce_hints(hints)
174
+ detection = None
175
+ if _should_auto_detect_profile(profile, profile_path):
176
+ detection = detect_format_profile(data, hints=coerced_hints)
177
+ resolved_profile = None if detection.selected_profile == "generic" else resolve_format_profile(profile=detection.selected_profile)
178
+ else:
179
+ resolved_profile = resolve_format_profile(profile=profile, profile_path=profile_path)
180
+
153
181
  document = FSMDocumentParser(
154
182
  profile=resolved_profile,
155
- hints=_coerce_hints(hints),
183
+ hints=coerced_hints,
156
184
  source_name=source_name,
157
185
  beam_width=self.beam_width,
158
186
  scoring=self.scoring,
159
187
  ).parse(data)
188
+ if detection is not None:
189
+ document.setdefault("metadata", {})["selected_format_profile"] = detection.selected_profile
190
+ document.setdefault("metadata", {})["profile_detection"] = detection.as_dict()
160
191
  return Play(document)
@@ -0,0 +1,253 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from typing import Any
5
+
6
+ from play_parser.document.text import count_words
7
+ from play_parser.document.types import PlayEvent
8
+ from collections.abc import Mapping
9
+
10
+ from play_parser.parsing.hints import PlayParseHints
11
+ from play_parser.parsing.parser import parse_play_text
12
+ from play_parser.parsing.profiles import get_format_profile
13
+
14
+ CANDIDATE_FORMAT_PROFILES: tuple[str, ...] = (
15
+ "dot_block",
16
+ "colon_inline",
17
+ "dot_inline",
18
+ "mixed_parenthetical",
19
+ "narrative_stage_heavy",
20
+ "generic",
21
+ )
22
+ DEFAULT_SAMPLE_CHARS = 2_000
23
+ LOW_SCORE = -10_000
24
+
25
+
26
+ @dataclass(frozen=True, slots=True)
27
+ class ProfileScore:
28
+ profile: str
29
+ score: int
30
+ speeches: int = 0
31
+ unique_speakers: tuple[str, ...] = ()
32
+ repeated_speakers: tuple[str, ...] = ()
33
+ stage_directions: int = 0
34
+ meta_events: int = 0
35
+ avg_words_per_speech: float = 0.0
36
+ very_short_ratio: float = 0.0
37
+ very_long_ratio: float = 0.0
38
+ alternation_ratio: float = 0.0
39
+ error: str | None = None
40
+
41
+ def as_dict(self) -> dict[str, Any]:
42
+ return {
43
+ "profile": self.profile,
44
+ "score": self.score,
45
+ "speeches": self.speeches,
46
+ "unique_speakers": list(self.unique_speakers),
47
+ "repeated_speakers": list(self.repeated_speakers),
48
+ "stage_directions": self.stage_directions,
49
+ "meta_events": self.meta_events,
50
+ "avg_words_per_speech": self.avg_words_per_speech,
51
+ "very_short_ratio": self.very_short_ratio,
52
+ "very_long_ratio": self.very_long_ratio,
53
+ "alternation_ratio": self.alternation_ratio,
54
+ "error": self.error,
55
+ }
56
+
57
+
58
+ @dataclass(frozen=True, slots=True)
59
+ class ProfileDetectionResult:
60
+ selected_profile: str
61
+ confidence: str
62
+ sample_chars: int
63
+ scores: tuple[ProfileScore, ...]
64
+
65
+ def as_dict(self) -> dict[str, Any]:
66
+ return {
67
+ "method": "sample_score",
68
+ "selected_profile": self.selected_profile,
69
+ "confidence": self.confidence,
70
+ "sample_chars": self.sample_chars,
71
+ "scores": [score.as_dict() for score in self.scores],
72
+ }
73
+
74
+
75
+ def sample_script_body(text: str, *, max_chars: int = DEFAULT_SAMPLE_CHARS) -> str:
76
+ """Return a stable parser-detection sample without cutting mid-line when possible."""
77
+
78
+ stripped = text.strip()
79
+ if len(stripped) <= max_chars:
80
+ return stripped
81
+
82
+ sample = stripped[:max_chars]
83
+ last_newline = sample.rfind("\n")
84
+ if last_newline > max(300, max_chars // 3):
85
+ return sample[:last_newline].strip()
86
+ return sample.strip()
87
+
88
+
89
+ def score_parsed_events(events: list[PlayEvent]) -> ProfileScore:
90
+ return _score_events("<parsed>", events)
91
+
92
+
93
+ def score_profile_events(profile: str, events: list[PlayEvent], *, error: str | None = None) -> ProfileScore:
94
+ if error is not None:
95
+ return ProfileScore(profile=profile, score=LOW_SCORE, error=error)
96
+ return _score_events(profile, events)
97
+
98
+
99
+ def _score_events(profile: str, events: list[PlayEvent]) -> ProfileScore:
100
+ if not events:
101
+ return ProfileScore(profile=profile, score=LOW_SCORE, error="No events detected")
102
+
103
+ speeches = [event for event in events if event.get("type") == "speech"]
104
+ stage_dirs = [event for event in events if event.get("type") == "stage_direction"]
105
+ meta = [event for event in events if event.get("type") == "meta"]
106
+
107
+ speakers = [
108
+ str(event.get("speaker") or "").strip()
109
+ for event in speeches
110
+ if str(event.get("speaker") or "").strip()
111
+ ]
112
+ unique_speakers = tuple(sorted(set(speakers)))
113
+
114
+ if not speeches or not unique_speakers:
115
+ return ProfileScore(
116
+ profile=profile,
117
+ score=LOW_SCORE,
118
+ speeches=len(speeches),
119
+ unique_speakers=unique_speakers,
120
+ stage_directions=len(stage_dirs),
121
+ meta_events=len(meta),
122
+ error="No speeches or speakers detected",
123
+ )
124
+
125
+ word_counts = [count_words(str(event.get("text") or "")) for event in speeches]
126
+ avg_words = sum(word_counts) / max(1, len(word_counts))
127
+ very_short_ratio = sum(1 for count in word_counts if count <= 1) / len(word_counts)
128
+ very_long_ratio = sum(1 for count in word_counts if count > 80) / len(word_counts)
129
+
130
+ plausible_speakers = [speaker for speaker in unique_speakers if _is_plausible_speaker_name(speaker)]
131
+ implausible_speakers = len(unique_speakers) - len(plausible_speakers)
132
+
133
+ repeated_speakers = tuple(sorted({speaker for speaker in unique_speakers if speakers.count(speaker) >= 2}))
134
+
135
+ speaker_changes = sum(1 for previous, current in zip(speakers, speakers[1:]) if previous != current)
136
+ alternation_ratio = speaker_changes / max(1, len(speakers) - 1)
137
+ meta_ratio = len(meta) / max(1, len(events))
138
+
139
+ score = 0
140
+ score += min(len(unique_speakers), 8) * 80
141
+ score += min(len(repeated_speakers), 8) * 100
142
+ score += min(len(speeches), 25) * 8
143
+ score += min(len(stage_dirs), 8) * 10
144
+
145
+ if 2 <= avg_words <= 35:
146
+ score += 150
147
+ elif 35 < avg_words <= 80:
148
+ score += 40
149
+ else:
150
+ score -= 150
151
+
152
+ if 0.25 <= alternation_ratio <= 1.0:
153
+ score += 60
154
+
155
+ if len(stage_dirs) > len(speeches) * 0.5:
156
+ score -= 120
157
+ if 0 < alternation_ratio < 0.15 and len(speeches) >= 6:
158
+ score -= 120
159
+ score -= int(meta_ratio * 250)
160
+ score -= implausible_speakers * 120
161
+ score -= int(very_short_ratio * 180)
162
+ score -= int(very_long_ratio * 220)
163
+
164
+ return ProfileScore(
165
+ profile=profile,
166
+ score=score,
167
+ speeches=len(speeches),
168
+ unique_speakers=unique_speakers,
169
+ repeated_speakers=repeated_speakers,
170
+ stage_directions=len(stage_dirs),
171
+ meta_events=len(meta),
172
+ avg_words_per_speech=round(avg_words, 3),
173
+ very_short_ratio=round(very_short_ratio, 3),
174
+ very_long_ratio=round(very_long_ratio, 3),
175
+ alternation_ratio=round(alternation_ratio, 3),
176
+ )
177
+
178
+
179
+ def _is_plausible_speaker_name(value: str) -> bool:
180
+ if not value or len(value) > 40:
181
+ return False
182
+ if any(char in value for char in ".?!,:;()[]{}"):
183
+ return False
184
+ parts = value.split()
185
+ return 1 <= len(parts) <= 4
186
+
187
+
188
+ def detect_format_profile(
189
+ text: str,
190
+ *,
191
+ hints: PlayParseHints | Mapping[str, object] | None = None,
192
+ candidate_profiles: tuple[str, ...] | list[str] = CANDIDATE_FORMAT_PROFILES,
193
+ sample_chars: int = DEFAULT_SAMPLE_CHARS,
194
+ ) -> ProfileDetectionResult:
195
+ """Detect the most plausible built-in format profile for raw play text.
196
+
197
+ The detector parses only a short sample with each candidate profile and scores
198
+ the resulting dramatic structure. It is intended for profile selection, not
199
+ final document parsing.
200
+ """
201
+
202
+ sample = sample_script_body(text, max_chars=sample_chars)
203
+ coerced_hints = _coerce_hints(hints)
204
+ scores: list[ProfileScore] = []
205
+
206
+ for profile_name in _unique_profiles(candidate_profiles):
207
+ try:
208
+ profile = None if profile_name == "generic" else get_format_profile(profile_name)
209
+ events = parse_play_text(sample, profile=profile, hints=coerced_hints)
210
+ scores.append(score_profile_events(profile_name, events))
211
+ except Exception as exc: # pragma: no cover - defensive path depends on profile internals
212
+ scores.append(score_profile_events(profile_name, [], error=str(exc)))
213
+
214
+ scores.sort(key=lambda item: item.score, reverse=True)
215
+ if not scores:
216
+ raise ValueError("No candidate format profiles supplied")
217
+
218
+ best = scores[0]
219
+ second = scores[1] if len(scores) > 1 else None
220
+ confidence = _confidence(best, second)
221
+ return ProfileDetectionResult(
222
+ selected_profile=best.profile,
223
+ confidence=confidence,
224
+ sample_chars=len(sample),
225
+ scores=tuple(scores),
226
+ )
227
+
228
+
229
+ def _unique_profiles(profiles: tuple[str, ...] | list[str]) -> list[str]:
230
+ seen: set[str] = set()
231
+ output: list[str] = []
232
+ for profile in profiles:
233
+ if profile in seen:
234
+ continue
235
+ seen.add(profile)
236
+ output.append(profile)
237
+ return output
238
+
239
+
240
+ def _confidence(best: ProfileScore, second: ProfileScore | None) -> str:
241
+ if best.score < 250:
242
+ return "low"
243
+ if second is not None and best.score - second.score < 75:
244
+ return "medium"
245
+ return "high"
246
+
247
+
248
+ def _coerce_hints(hints: PlayParseHints | Mapping[str, object] | None) -> PlayParseHints | None:
249
+ if hints is None:
250
+ return None
251
+ if isinstance(hints, PlayParseHints):
252
+ return hints
253
+ return PlayParseHints(**dict(hints))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: play-parser
3
- Version: 1.2.0
3
+ Version: 1.2.1
4
4
  Summary: Parse dramatic play text into ordered dramatic events.
5
5
  Author-email: Stergios Poularakis <stpoular@gmail.com>
6
6
  License-Expression: MIT
@@ -699,6 +699,7 @@ src/play_parser/parsing/front_matter.py
699
699
  src/play_parser/parsing/fsm.py
700
700
  src/play_parser/parsing/hints.py
701
701
  src/play_parser/parsing/parser.py
702
+ src/play_parser/parsing/profile_detection.py
702
703
  src/play_parser/parsing/speakers.py
703
704
  src/play_parser/parsing/speech.py
704
705
  src/play_parser/parsing/stage.py
@@ -727,6 +728,7 @@ tests/test_ingestor.py
727
728
  tests/test_json_schema.py
728
729
  tests/test_parser_core.py
729
730
  tests/test_parser_factory.py
731
+ tests/test_profile_detection.py
730
732
  tests/test_profiles.py
731
733
  tests/test_public_api.py
732
734
  tests/test_validation_strict_types.py
@@ -0,0 +1,75 @@
1
+ from __future__ import annotations
2
+
3
+ from play_parser import PlayParser, detect_format_profile
4
+
5
+
6
+ DOT_BLOCK_TEXT = """Gin vs Whiskey
7
+ A light comic scene for two men
8
+
9
+ Characters:
10
+ TOM - Warm, precise.
11
+ BEN - Easygoing, dry wit.
12
+
13
+ ---
14
+
15
+ (TOM sits at the bar. BEN enters.)
16
+
17
+ BEN
18
+ Evening.
19
+
20
+ TOM
21
+ Evening. You're late.
22
+
23
+ BEN
24
+ By four minutes.
25
+
26
+ TOM
27
+ In cocktail time, that's a lifetime.
28
+ """
29
+
30
+ COLON_INLINE_TEXT = """The Ferry Bell
31
+
32
+ FERRYMAN: Last crossing.
33
+ PASSENGER: Is there room?
34
+ FERRYMAN: For one more.
35
+ """
36
+
37
+
38
+ def test_detect_format_profile_picks_generic_for_bare_speaker_blocks() -> None:
39
+ result = detect_format_profile(DOT_BLOCK_TEXT, hints={"body_start_after": "---"})
40
+
41
+ assert result.selected_profile == "generic"
42
+ assert result.confidence in {"medium", "high"}
43
+ assert result.scores[0].score > result.scores[-1].score
44
+
45
+
46
+ def test_auto_profile_parsing_detects_characters_and_records_metadata() -> None:
47
+ document = PlayParser.create("rule").parse_document(
48
+ DOT_BLOCK_TEXT,
49
+ profile="auto",
50
+ hints={"body_start_after": "---"},
51
+ source_name="Gin vs Whiskey.txt",
52
+ )
53
+
54
+ assert document["metadata"]["selected_format_profile"] == "generic"
55
+ assert document["metadata"]["profile_detection"]["method"] == "sample_score"
56
+ assert document["metadata"]["characters"] == ["Ben", "Tom"]
57
+ assert document["metadata"]["stats"]["speeches"] == 4
58
+
59
+
60
+ def test_default_profile_alias_uses_auto_detection_for_backward_compatibility() -> None:
61
+ document = PlayParser.create("rule").parse_document(
62
+ DOT_BLOCK_TEXT,
63
+ profile="default",
64
+ hints={"body_start_after": "---"},
65
+ source_name="Gin vs Whiskey.txt",
66
+ )
67
+
68
+ assert document["metadata"]["selected_format_profile"] == "generic"
69
+ assert document["metadata"]["characters"] == ["Ben", "Tom"]
70
+
71
+
72
+ def test_detect_format_profile_picks_colon_inline_for_colon_dialogue() -> None:
73
+ result = detect_format_profile(COLON_INLINE_TEXT)
74
+
75
+ assert result.selected_profile == "colon_inline"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes