rummage 4.24__tar.gz → 4.25__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 (219) hide show
  1. {rummage-4.24 → rummage-4.25}/PKG-INFO +3 -3
  2. {rummage-4.24 → rummage-4.25}/docs/src/markdown/.snippets/abbr.md +1 -0
  3. {rummage-4.24 → rummage-4.25}/docs/src/markdown/about/changelog.md +10 -0
  4. rummage-4.25/docs/src/markdown/images/settings_search.png +0 -0
  5. {rummage-4.24 → rummage-4.25}/docs/src/markdown/search.md +12 -0
  6. {rummage-4.24 → rummage-4.25}/gui.fbp +71 -2
  7. {rummage-4.24 → rummage-4.25}/pyproject.toml +1 -1
  8. {rummage-4.24 → rummage-4.25}/requirements/project.txt +2 -2
  9. {rummage-4.24 → rummage-4.25}/rummage/lib/__meta__.py +1 -1
  10. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/app/custom_app.py +8 -8
  11. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/webview.py +1 -1
  12. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/about/changelog.html +10 -0
  13. rummage-4.25/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
  14. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/search.html +12 -0
  15. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/import_settings_dialog.py +1 -1
  16. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/rummage_dialog.py +6 -1
  17. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/settings_dialog.py +8 -0
  18. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/gui.py +9 -2
  19. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/settings/__init__.py +24 -0
  20. {rummage-4.24 → rummage-4.25}/rummage/lib/rumcore/__init__.py +5 -2
  21. {rummage-4.24 → rummage-4.25}/tools/gen_docs.py +2 -0
  22. rummage-4.24/docs/src/markdown/images/settings_search.png +0 -0
  23. rummage-4.24/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
  24. {rummage-4.24 → rummage-4.25}/.coveragerc +0 -0
  25. {rummage-4.24 → rummage-4.25}/.gitignore +0 -0
  26. {rummage-4.24 → rummage-4.25}/LICENSE.md +0 -0
  27. {rummage-4.24 → rummage-4.25}/README.md +0 -0
  28. {rummage-4.24 → rummage-4.25}/docs/src/markdown/.snippets/links.md +0 -0
  29. {rummage-4.24 → rummage-4.25}/docs/src/markdown/.snippets/refs.md +0 -0
  30. {rummage-4.24 → rummage-4.25}/docs/src/markdown/about/contributing.md +0 -0
  31. {rummage-4.24 → rummage-4.25}/docs/src/markdown/about/license.md +0 -0
  32. {rummage-4.24 → rummage-4.25}/docs/src/markdown/extras.md +0 -0
  33. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/chain_button.png +0 -0
  34. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/chain_mode.png +0 -0
  35. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/chains.png +0 -0
  36. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/content_tab.png +0 -0
  37. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/file_pattern.png +0 -0
  38. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/files_tab.png +0 -0
  39. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/html_export.png +0 -0
  40. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/limit_search_panel.png +0 -0
  41. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/load_search.png +0 -0
  42. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/logo.svg +0 -0
  43. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/plugin_input.png +0 -0
  44. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/plugin_toggle.png +0 -0
  45. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/preview.png +0 -0
  46. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/regex_buttons.png +0 -0
  47. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/regex_tester.png +0 -0
  48. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/rummage.png +0 -0
  49. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/rummage.svg +0 -0
  50. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/save_search.png +0 -0
  51. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/search_replace_inputs.png +0 -0
  52. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/search_replace_panel.png +0 -0
  53. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/search_tab.png +0 -0
  54. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_backup.png +0 -0
  55. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_editor.png +0 -0
  56. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_encoding.png +0 -0
  57. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_export.png +0 -0
  58. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_general.png +0 -0
  59. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_history.png +0 -0
  60. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_import.png +0 -0
  61. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/settings_notify.png +0 -0
  62. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/thunar-basic.png +0 -0
  63. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/thunar-conditions.png +0 -0
  64. {rummage-4.24 → rummage-4.25}/docs/src/markdown/images/thunar-custom.png +0 -0
  65. {rummage-4.24 → rummage-4.25}/docs/src/markdown/index.md +0 -0
  66. {rummage-4.24 → rummage-4.25}/docs/src/markdown/installation.md +0 -0
  67. {rummage-4.24 → rummage-4.25}/docs/src/markdown/preferences.md +0 -0
  68. {rummage-4.24 → rummage-4.25}/docs/src/markdown/sitemap.md +0 -0
  69. {rummage-4.24 → rummage-4.25}/docs/src/markdown/usage.md +0 -0
  70. {rummage-4.24 → rummage-4.25}/docs/theme/announce.html +0 -0
  71. {rummage-4.24 → rummage-4.25}/docs/theme/assets/pymdownx-extras/extra-95634471d6.css +0 -0
  72. {rummage-4.24 → rummage-4.25}/docs/theme/assets/pymdownx-extras/extra-loader-Ccztcqfq.js +0 -0
  73. {rummage-4.24 → rummage-4.25}/docs/theme/main.html +0 -0
  74. {rummage-4.24 → rummage-4.25}/docs/theme/nav.html +0 -0
  75. {rummage-4.24 → rummage-4.25}/docs/theme/sitemap.html +0 -0
  76. {rummage-4.24 → rummage-4.25}/hatch_build.py +0 -0
  77. {rummage-4.24 → rummage-4.25}/requirements/docs.txt +0 -0
  78. {rummage-4.24 → rummage-4.25}/requirements/extras.txt +0 -0
  79. {rummage-4.24 → rummage-4.25}/requirements/lint.txt +0 -0
  80. {rummage-4.24 → rummage-4.25}/requirements/setup.txt +0 -0
  81. {rummage-4.24 → rummage-4.25}/requirements/test-project.txt +0 -0
  82. {rummage-4.24 → rummage-4.25}/requirements/test.txt +0 -0
  83. {rummage-4.24 → rummage-4.25}/rummage/__init__.py +0 -0
  84. {rummage-4.24 → rummage-4.25}/rummage/__main__.py +0 -0
  85. {rummage-4.24 → rummage-4.25}/rummage/lib/__init__.py +0 -0
  86. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/__init__.py +0 -0
  87. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/__init__.py +0 -0
  88. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/checksum/__init__.py +0 -0
  89. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/checksum/sum_hashes.py +0 -0
  90. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/checksum/tiger.py +0 -0
  91. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/checksum/whirlpool.py +0 -0
  92. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/export_csv.py +0 -0
  93. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/export_html.py +0 -0
  94. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/fileops.py +0 -0
  95. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/sanitize_json.py +0 -0
  96. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/actions/updates.py +0 -0
  97. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/app/__init__.py +0 -0
  98. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/app/platform_window_focus.py +0 -0
  99. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/app/rummage_app.py +0 -0
  100. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/__init__.py +0 -0
  101. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/autocomplete_combo.py +0 -0
  102. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/collapsible_pane.py +0 -0
  103. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/custom_statusbar.py +0 -0
  104. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/date_picker.py +0 -0
  105. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/dock_icon.py +0 -0
  106. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/dynamic_lists.py +0 -0
  107. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/encoding_list.py +0 -0
  108. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/file_picker.py +0 -0
  109. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/load_search_list.py +0 -0
  110. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/pick_button.py +0 -0
  111. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/result_lists.py +0 -0
  112. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/search_chain_list.py +0 -0
  113. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/search_error_list.py +0 -0
  114. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/controls/time_picker.py +0 -0
  115. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/__init__.py +0 -0
  116. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/arrow_down.png +0 -0
  117. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/arrow_left.png +0 -0
  118. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/arrow_right.png +0 -0
  119. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/arrow_up.png +0 -0
  120. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/binary.png +0 -0
  121. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/doc.png +0 -0
  122. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/404.html +0 -0
  123. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/about/contributing.html +0 -0
  124. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/about/license.html +0 -0
  125. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/css/theme.css +0 -0
  126. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/extras.html +0 -0
  127. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/chain_button.png +0 -0
  128. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/chain_mode.png +0 -0
  129. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/chains.png +0 -0
  130. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/content_tab.png +0 -0
  131. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/file_pattern.png +0 -0
  132. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/files_tab.png +0 -0
  133. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/html_export.png +0 -0
  134. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/limit_search_panel.png +0 -0
  135. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/load_search.png +0 -0
  136. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/logo.svg +0 -0
  137. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/plugin_input.png +0 -0
  138. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/plugin_toggle.png +0 -0
  139. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/preview.png +0 -0
  140. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/regex_buttons.png +0 -0
  141. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/regex_tester.png +0 -0
  142. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/rummage.png +0 -0
  143. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/rummage.svg +0 -0
  144. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/save_search.png +0 -0
  145. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/search_replace_inputs.png +0 -0
  146. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/search_replace_panel.png +0 -0
  147. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/search_tab.png +0 -0
  148. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_backup.png +0 -0
  149. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_editor.png +0 -0
  150. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_encoding.png +0 -0
  151. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_export.png +0 -0
  152. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
  153. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_history.png +0 -0
  154. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_import.png +0 -0
  155. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/settings_notify.png +0 -0
  156. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/thunar-basic.png +0 -0
  157. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/thunar-conditions.png +0 -0
  158. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/images/thunar-custom.png +0 -0
  159. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/index.html +0 -0
  160. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/installation.html +0 -0
  161. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/js/theme.js +0 -0
  162. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/preferences.html +0 -0
  163. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/sitemap.html +0 -0
  164. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/docs/usage.html +0 -0
  165. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/error.png +0 -0
  166. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/glass.png +0 -0
  167. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/results.css +0 -0
  168. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage.icns +0 -0
  169. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage.ico +0 -0
  170. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage.png +0 -0
  171. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_1024.png +0 -0
  172. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_128.png +0 -0
  173. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_16.png +0 -0
  174. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_256.png +0 -0
  175. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_32.png +0 -0
  176. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_40.png +0 -0
  177. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_48.png +0 -0
  178. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_512.png +0 -0
  179. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/rummage_mac.png +0 -0
  180. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/data/sorttable.js +0 -0
  181. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/__init__.py +0 -0
  182. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/checksum_dialog.py +0 -0
  183. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/column_dialog.py +0 -0
  184. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/delete_dialog.py +0 -0
  185. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/edit_search_chain_dialog.py +0 -0
  186. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/error_text_dialog.py +0 -0
  187. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/export_settings_dialog.py +0 -0
  188. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/file_ext_dialog.py +0 -0
  189. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/generic_dialogs.py +0 -0
  190. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/html_dialog.py +0 -0
  191. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/load_search_dialog.py +0 -0
  192. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/msg_dialogs.py +0 -0
  193. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/overwrite_dialog.py +0 -0
  194. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/regex_test_dialog.py +0 -0
  195. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/save_search_dialog.py +0 -0
  196. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/search_chain_dialog.py +0 -0
  197. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/search_error_dialog.py +0 -0
  198. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/dialogs/support_info_dialog.py +0 -0
  199. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/localization/__init__.py +0 -0
  200. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/localization/locale/en_US/LC_MESSAGES/rummage.po +0 -0
  201. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/localization/locale/ru_RU/LC_MESSAGES/rummage.po +0 -0
  202. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/notify/__init__.py +0 -0
  203. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/notify/notify_linux.py +0 -0
  204. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/notify/notify_osx.py +0 -0
  205. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/notify/notify_windows.py +0 -0
  206. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/notify/util.py +0 -0
  207. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/util/__init__.py +0 -0
  208. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/util/colors.py +0 -0
  209. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/util/images.py +0 -0
  210. {rummage-4.24 → rummage-4.25}/rummage/lib/gui/util/png.py +0 -0
  211. {rummage-4.24 → rummage-4.25}/rummage/lib/rumcore/text_decode.py +0 -0
  212. {rummage-4.24 → rummage-4.25}/rummage/lib/rumcore/util.py +0 -0
  213. {rummage-4.24 → rummage-4.25}/tests/__init__.py +0 -0
  214. {rummage-4.24 → rummage-4.25}/tests/test_rumcore.py +0 -0
  215. {rummage-4.24 → rummage-4.25}/tests/test_text_decode.py +0 -0
  216. {rummage-4.24 → rummage-4.25}/tests/test_versions.py +0 -0
  217. {rummage-4.24 → rummage-4.25}/tests/util.py +0 -0
  218. {rummage-4.24 → rummage-4.25}/tools/__init__.py +0 -0
  219. {rummage-4.24 → rummage-4.25}/tools/gui_patch.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rummage
3
- Version: 4.24
3
+ Version: 4.25
4
4
  Summary: A GUI search and replace app.
5
5
  Project-URL: Homepage, https://github.com/facelessuser/Rummage
6
6
  Author-email: Isaac Muse <Isaac.Muse@gmail.com>
@@ -27,12 +27,12 @@ Requires-Dist: backrefs>=7.0
27
27
  Requires-Dist: bracex>=3.0
28
28
  Requires-Dist: chardet>=7.4.3
29
29
  Requires-Dist: coloraide>=8.10
30
- Requires-Dist: filelock>=3.29.4
30
+ Requires-Dist: filelock>=3.29.7
31
31
  Requires-Dist: markdown>=3.10.2
32
32
  Requires-Dist: pygments>=2.19.2
33
33
  Requires-Dist: pymdown-extensions>=11.0
34
34
  Requires-Dist: send2trash>=2.1.0
35
- Requires-Dist: wcmatch<11.0,>=10.2
35
+ Requires-Dist: wcmatch<12.0,>=11.0
36
36
  Requires-Dist: wxpython>=4.1.0
37
37
  Provides-Extra: extras
38
38
  Requires-Dist: faust-cchardet>=2.1.19; extra == 'extras'
@@ -1 +1,2 @@
1
1
  *[JSON]: JavaScript Object Notation
2
+ *[ZSH]: Z Shell
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 4.25
4
+
5
+ - **NEW**: Require `wcmatch` 11.0+.
6
+ - **NEW**: Add new "ZSH number range" option in settings to enable ZSH style number ranges in glob patterns (`<0-9>`).
7
+ - **FIX**: Fix an issue where logging would break.
8
+
9
+ ## 4.24.1
10
+
11
+ - **NEW**: Fix URL handling in documentation rendering in `webview`.
12
+
3
13
  ## 4.24
4
14
 
5
15
  - **NEW**: Drop support for Python 3.9.
@@ -144,6 +144,18 @@ Pattern | Meaning
144
144
  > If you need to escape `-` or `|`, you can put them in a sequence: `[-|]`. Remember to place `-` at the beginning of
145
145
  > a sequence as `-` is also used to specify character ranges: `[a-z]`.
146
146
 
147
+ #### ZSH Number Ranges
148
+
149
+ ZSH number ranges are a simple syntax for specifying a simple range of numbers via `<0-100>`. Ends can also be omitted
150
+ allowing for unbounded ranges: `<->`, `<-100>`, `<0-100>`, etc. It should be noted that numbers must be whole, positive
151
+ numbers and manually specified numbers greater than 19 digits will be truncated.
152
+
153
+ ZSH number ranges also handle numbers padded with zeros, so `<0-9>` would match `5`, `05`, `005`, etc. You can pad your
154
+ match pattern with zeros (`<0010-0090>`), but it has no affect on the actual search. Input numbers will be normalized
155
+ (`<10-90>`) and ZSH padding number handling is always the same.
156
+
157
+ This can be enabled in [Preferences](./preferences.md#search).
158
+
147
159
  #### Extended Match Syntax
148
160
 
149
161
  In [Preferences](./preferences.md#search), you can also enable extended match patterns. Extended match patterns allow
@@ -8765,12 +8765,81 @@
8765
8765
  <event name="OnCheckBox">on_fullfile_toggle</event>
8766
8766
  </object>
8767
8767
  </object>
8768
+ <object class="gbsizeritem" expanded="false">
8769
+ <property name="border">5</property>
8770
+ <property name="colspan">1</property>
8771
+ <property name="column">0</property>
8772
+ <property name="flag">wxALL</property>
8773
+ <property name="row">4</property>
8774
+ <property name="rowspan">1</property>
8775
+ <object class="wxCheckBox" expanded="false">
8776
+ <property name="BottomDockable">1</property>
8777
+ <property name="LeftDockable">1</property>
8778
+ <property name="RightDockable">1</property>
8779
+ <property name="TopDockable">1</property>
8780
+ <property name="aui_layer">0</property>
8781
+ <property name="aui_name"></property>
8782
+ <property name="aui_position">0</property>
8783
+ <property name="aui_row">0</property>
8784
+ <property name="best_size"></property>
8785
+ <property name="bg"></property>
8786
+ <property name="caption"></property>
8787
+ <property name="caption_visible">1</property>
8788
+ <property name="center_pane">0</property>
8789
+ <property name="checked">0</property>
8790
+ <property name="close_button">1</property>
8791
+ <property name="context_help"></property>
8792
+ <property name="context_menu">1</property>
8793
+ <property name="default_pane">0</property>
8794
+ <property name="dock">Dock</property>
8795
+ <property name="dock_fixed">0</property>
8796
+ <property name="docking">Left</property>
8797
+ <property name="drag_accept_files">0</property>
8798
+ <property name="enabled">1</property>
8799
+ <property name="fg"></property>
8800
+ <property name="floatable">1</property>
8801
+ <property name="font"></property>
8802
+ <property name="gripper">0</property>
8803
+ <property name="hidden">0</property>
8804
+ <property name="id">wxID_ANY</property>
8805
+ <property name="label">ZSH Number Range</property>
8806
+ <property name="max_size"></property>
8807
+ <property name="maximize_button">0</property>
8808
+ <property name="maximum_size"></property>
8809
+ <property name="min_size"></property>
8810
+ <property name="minimize_button">0</property>
8811
+ <property name="minimum_size"></property>
8812
+ <property name="moveable">1</property>
8813
+ <property name="name">m_zsh_numrange_checkbox</property>
8814
+ <property name="pane_border">1</property>
8815
+ <property name="pane_position"></property>
8816
+ <property name="pane_size"></property>
8817
+ <property name="permission">protected</property>
8818
+ <property name="pin_button">1</property>
8819
+ <property name="pos"></property>
8820
+ <property name="resize">Resizable</property>
8821
+ <property name="show">1</property>
8822
+ <property name="size"></property>
8823
+ <property name="style"></property>
8824
+ <property name="subclass">; ; forward_declare</property>
8825
+ <property name="toolbar_pane">0</property>
8826
+ <property name="tooltip"></property>
8827
+ <property name="validator_data_type"></property>
8828
+ <property name="validator_style">wxFILTER_NONE</property>
8829
+ <property name="validator_type">wxDefaultValidator</property>
8830
+ <property name="validator_variable"></property>
8831
+ <property name="window_extra_style"></property>
8832
+ <property name="window_name"></property>
8833
+ <property name="window_style"></property>
8834
+ <event name="OnCheckBox">on_zsh_numrange_toggle</event>
8835
+ </object>
8836
+ </object>
8768
8837
  <object class="gbsizeritem" expanded="false">
8769
8838
  <property name="border">5</property>
8770
8839
  <property name="colspan">2</property>
8771
8840
  <property name="column">0</property>
8772
8841
  <property name="flag">wxEXPAND | wxALL</property>
8773
- <property name="row">4</property>
8842
+ <property name="row">5</property>
8774
8843
  <property name="rowspan">1</property>
8775
8844
  <object class="wxStaticLine" expanded="false">
8776
8845
  <property name="BottomDockable">1</property>
@@ -8832,7 +8901,7 @@
8832
8901
  <property name="colspan">2</property>
8833
8902
  <property name="column">0</property>
8834
8903
  <property name="flag">wxEXPAND</property>
8835
- <property name="row">5</property>
8904
+ <property name="row">6</property>
8836
8905
  <property name="rowspan">1</property>
8837
8906
  <object class="wxGridBagSizer" expanded="false">
8838
8907
  <property name="empty_cell_size"></property>
@@ -153,7 +153,7 @@ legacy_tox_ini = """
153
153
  [tox]
154
154
  skipsdist=true
155
155
  envlist=
156
- {py39,py310,py311,py312,py313,py314},
156
+ {py310,py311,py312,py313,py314},
157
157
  lint
158
158
 
159
159
  [testenv]
@@ -1,9 +1,9 @@
1
1
  chardet>=7.4.3
2
2
  backrefs>=7.0
3
3
  bracex>=3.0
4
- wcmatch>=10.2,<11.0
4
+ wcmatch>=11.0,<12.0
5
5
  wxpython>=4.1.0
6
- filelock>=3.29.4
6
+ filelock>=3.29.7
7
7
  send2trash>=2.1.0
8
8
  markdown>=3.10.2
9
9
  pymdown-extensions>=11.0
@@ -189,7 +189,7 @@ def parse_version(ver):
189
189
 
190
190
 
191
191
  # (major, minor, micro, release type, pre-release build, post-release build, development-release)
192
- __version_info__ = Version(4, 24, 0, 'final')
192
+ __version_info__ = Version(4, 25, 0, 'final')
193
193
  __version__ = __version_info__._get_canonical()
194
194
  __app__ = "Rummage"
195
195
  __status__ = __version_info__[3]
@@ -297,9 +297,9 @@ class CustomLog(wx.Log):
297
297
  self.file_lock = FileLock(self.file_name + '.lock')
298
298
 
299
299
  try:
300
- with self.file_lock.acquire(1):
301
- with open(self.file_name, "w", "utf-8", errors='strict') as f:
302
- f.write("")
300
+ with self.file_lock:
301
+ with open(self.file_name, "w", encoding='utf-8', errors='strict'):
302
+ pass
303
303
  except Exception:
304
304
  self.file_name = None
305
305
 
@@ -312,7 +312,7 @@ class CustomLog(wx.Log):
312
312
 
313
313
  try:
314
314
  if self.file_name is not None:
315
- with self.file_lock.acquire(1):
315
+ with self.file_lock:
316
316
  with open(self.file_name, 'a', encoding='utf-8', errors='strict') as f:
317
317
  f.write(msg)
318
318
  else:
@@ -389,9 +389,9 @@ class CustomLogGui(wx.LogGui):
389
389
  self.debug = debug
390
390
 
391
391
  try:
392
- with self.file_lock.acquire(1):
393
- with open(self.file_name, "w", "utf-8", errors='strict') as f:
394
- f.write("")
392
+ with self.file_lock:
393
+ with open(self.file_name, "w", encoding='utf-8', errors='strict'):
394
+ pass
395
395
  except Exception:
396
396
  self.file_name = None
397
397
 
@@ -402,7 +402,7 @@ class CustomLogGui(wx.LogGui):
402
402
 
403
403
  try:
404
404
  if self.file_name is not None:
405
- with self.file_lock.acquire(1):
405
+ with self.file_lock:
406
406
  with open(self.file_name, 'a', encoding='utf-8', errors='strict') as f:
407
407
  f.write(msg)
408
408
  else:
@@ -190,7 +190,7 @@ def parse_url(url):
190
190
  is_blank = False
191
191
  scheme, netloc, path, params, query, fragment = urlparse(html.unescape(url))
192
192
 
193
- if scheme == 'about' and netloc == '' and path == "blank":
193
+ if scheme in ("about", "blank", "data", ""):
194
194
  is_blank = True
195
195
  elif RE_URL.match(scheme):
196
196
  # Clearly a URL
@@ -25,6 +25,16 @@
25
25
 
26
26
  <!-- Table of Content (Don't show for static sites) -->
27
27
  <h1 id="changelog">Changelog</h1>
28
+ <h2 id="425">4.25</h2>
29
+ <ul>
30
+ <li><strong>NEW</strong>: Require <code>wcmatch</code> 11.0+.</li>
31
+ <li><strong>NEW</strong>: Add new "<abbr title="Z Shell">ZSH</abbr> number range" option in settings to enable <abbr title="Z Shell">ZSH</abbr> style number ranges in glob patterns (<code>&lt;0-9&gt;</code>).</li>
32
+ <li><strong>FIX</strong>: Fix an issue where logging would break.</li>
33
+ </ul>
34
+ <h2 id="4241">4.24.1</h2>
35
+ <ul>
36
+ <li><strong>NEW</strong>: Fix URL handling in documentation rendering in <code>webview</code>.</li>
37
+ </ul>
28
38
  <h2 id="424">4.24</h2>
29
39
  <ul>
30
40
  <li><strong>NEW</strong>: Drop support for Python 3.9.</li>
@@ -59,6 +59,10 @@
59
59
  <li class="__toc_level_5"><a href="#basic-wildcard-syntax">Basic Wildcard syntax</a></li>
60
60
  <ul class="__toc_list_5">
61
61
 
62
+ </ul>
63
+ <li class="__toc_level_5"><a href="#zsh-number-ranges">ZSH Number Ranges</a></li>
64
+ <ul class="__toc_list_5">
65
+
62
66
  </ul>
63
67
  <li class="__toc_level_5"><a href="#extended-match-syntax">Extended Match Syntax</a></li>
64
68
  <ul class="__toc_list_5">
@@ -345,6 +349,14 @@ which we will always be included.</p>
345
349
  <p>If you need to escape <code>-</code> or <code>|</code>, you can put them in a sequence: <code>[-|]</code>. Remember to place <code>-</code> at the beginning of
346
350
  a sequence as <code>-</code> is also used to specify character ranges: <code>[a-z]</code>.</p>
347
351
  </div>
352
+ <h4 id="zsh-number-ranges"><abbr title="Z Shell">ZSH</abbr> Number Ranges</h4>
353
+ <p><abbr title="Z Shell">ZSH</abbr> number ranges are a simple syntax for specifying a simple range of numbers via <code>&lt;0-100&gt;</code>. Ends can also be omitted
354
+ allowing for unbounded ranges: <code>&lt;-&gt;</code>, <code>&lt;-100&gt;</code>, <code>&lt;0-100&gt;</code>, etc. It should be noted that numbers must be whole, positive
355
+ numbers and manually specified numbers greater than 19 digits will be truncated.</p>
356
+ <p><abbr title="Z Shell">ZSH</abbr> number ranges also handle numbers padded with zeros, so <code>&lt;0-9&gt;</code> would match <code>5</code>, <code>05</code>, <code>005</code>, etc. You can pad your
357
+ match pattern with zeros (<code>&lt;0010-0090&gt;</code>), but it has no affect on the actual search. Input numbers will be normalized
358
+ (<code>&lt;10-90&gt;</code>) and <abbr title="Z Shell">ZSH</abbr> padding number handling is always the same.</p>
359
+ <p>This can be enabled in <a href="./preferences.html#search">Preferences</a>.</p>
348
360
  <h4 id="extended-match-syntax">Extended Match Syntax</h4>
349
361
  <p>In <a href="./preferences.html#search">Preferences</a>, you can also enable extended match patterns. Extended match patterns allow
350
362
  you to provide pattern lists to provide more advanced logic.</p>
@@ -39,7 +39,7 @@ class ImportSettingsDialog(gui.ImportSettingsDialog):
39
39
  "notify_enabled", "single_instance", "extmatch",
40
40
  "brace_expansion", "file_case_sensitive", "full_exclude_path", "full_file_path",
41
41
  "globstar", "international_time", "matchbase", "minusnegate", "alt_list_color",
42
- "autocomplete"
42
+ "autocomplete", "zsh_numrange"
43
43
  )
44
44
  STRING = ("backup_ext", "backup_folder", "term_notifier", "editor", "notify_method", "notify_sound")
45
45
  INTEGER = ("backup_type", "regex_mode", "regex_version", "patten_limit")
@@ -2,7 +2,7 @@
2
2
  Rummage Dialog.
3
3
 
4
4
  Licensed under MIT
5
- Copyright (c) 2011 - 2015 Isaac Muse <isaacmuse@gmail.com>
5
+ Copyright (c) 2011 - 2026 Isaac Muse <isaacmuse@gmail.com>
6
6
 
7
7
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
8
8
  documentation files (the "Software"), to deal in the Software without restriction, including without limitation
@@ -328,6 +328,7 @@ class RummageArgs:
328
328
  self.full_exclude_path = False
329
329
  self.full_file_path = False
330
330
  self.globstar = False
331
+ self.zsh_numrange = False
331
332
  self.matchbase = False
332
333
  self.minusnegate = True
333
334
  self.encoding_options = {}
@@ -1217,6 +1218,9 @@ class RummageFrame(gui.RummageFrame):
1217
1218
  if args.brace_expansion:
1218
1219
  flags |= rumcore.BRACE
1219
1220
 
1221
+ if args.zsh_numrange:
1222
+ flags |= rumcore.NUMRANGE
1223
+
1220
1224
  if args.file_case_sensitive:
1221
1225
  flags |= rumcore.FILECASE
1222
1226
 
@@ -1401,6 +1405,7 @@ class RummageFrame(gui.RummageFrame):
1401
1405
  args.globstar = bool(Settings.get_globstar())
1402
1406
  args.matchbase = bool(Settings.get_matchbase())
1403
1407
  args.minusnegate = bool(Settings.get_minusnegate())
1408
+ args.zsh_numrange = bool(Settings.get_zsh_numrange())
1404
1409
 
1405
1410
  args.filepattern = self.m_filematch_textbox.Value
1406
1411
  if self.m_fileregex_checkbox.GetValue():
@@ -123,6 +123,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
123
123
  self.m_brace_checkbox.SetValue(Settings.get_brace_expansion())
124
124
  self.m_case_checkbox.SetValue(Settings.get_file_case_sensitive())
125
125
  self.m_fullpath_checkbox.SetValue(Settings.get_full_exclude_path())
126
+ self.m_zsh_numrange_checkbox.SetValue(Settings.get_zsh_numrange())
126
127
  self.m_fullfile_checkbox.SetValue(Settings.get_full_file_path())
127
128
  self.m_globstar_checkbox.SetValue(Settings.get_globstar())
128
129
  self.m_matchbase_checkbox.SetValue(Settings.get_matchbase())
@@ -264,6 +265,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
264
265
  self.BRACES = _("Brace expansion")
265
266
  self.CASE = _("Case sensitive")
266
267
  self.FULL_PATH = _("Full path directory match")
268
+ self.ZSH_NUMRANGE = _("ZSH number range")
267
269
  self.FULL_FILE = _("Full path file match")
268
270
  self.GLOBSTAR = _("Globstar (full path)")
269
271
  self.MATCHBASE = _("Match base (full path)")
@@ -339,6 +341,7 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
339
341
  self.m_brace_checkbox.SetLabel(self.BRACES)
340
342
  self.m_case_checkbox.SetLabel(self.CASE)
341
343
  self.m_fullpath_checkbox.SetLabel(self.FULL_PATH)
344
+ self.m_zsh_numrange_checkbox.SetLabel(self.ZSH_NUMRANGE)
342
345
  self.m_fullfile_checkbox.SetLabel(self.FULL_FILE)
343
346
  self.m_globstar_checkbox.SetLabel(self.GLOBSTAR)
344
347
  self.m_matchbase_checkbox.SetLabel(self.MATCHBASE)
@@ -660,6 +663,11 @@ class SettingsDialog(webview.WebViewMixin, gui.SettingsDialog):
660
663
 
661
664
  Settings.set_full_exclude_path(self.m_fullpath_checkbox.GetValue())
662
665
 
666
+ def on_zsh_numrange_toggle(self, event):
667
+ """Handle ZSH number range toggle."""
668
+
669
+ Settings.set_zsh_numrange(self.m_zsh_numrange_checkbox.GetValue())
670
+
663
671
  def on_fullfile_toggle(self, event):
664
672
  """Handle full file toggle."""
665
673
 
@@ -1051,8 +1051,11 @@ class SettingsDialog ( wx.Dialog ):
1051
1051
  self.m_fullfile_checkbox = wx.CheckBox( sbSizer9.GetStaticBox(), wx.ID_ANY, u"Full path file match", wx.DefaultPosition, wx.DefaultSize, 0 )
1052
1052
  gbSizer7.Add( self.m_fullfile_checkbox, wx.GBPosition( 3, 1 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
1053
1053
 
1054
+ self.m_zsh_numrange_checkbox = wx.CheckBox( sbSizer9.GetStaticBox(), wx.ID_ANY, u"ZSH Number Range", wx.DefaultPosition, wx.DefaultSize, 0 )
1055
+ gbSizer7.Add( self.m_zsh_numrange_checkbox, wx.GBPosition( 4, 0 ), wx.GBSpan( 1, 1 ), wx.ALL, 5 )
1056
+
1054
1057
  self.m_staticline14 = wx.StaticLine( sbSizer9.GetStaticBox(), wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
1055
- gbSizer7.Add( self.m_staticline14, wx.GBPosition( 4, 0 ), wx.GBSpan( 1, 2 ), wx.EXPAND |wx.ALL, 5 )
1058
+ gbSizer7.Add( self.m_staticline14, wx.GBPosition( 5, 0 ), wx.GBSpan( 1, 2 ), wx.EXPAND |wx.ALL, 5 )
1056
1059
 
1057
1060
  gbSizer8 = wx.GridBagSizer( 0, 0 )
1058
1061
  gbSizer8.SetFlexibleDirection( wx.BOTH )
@@ -1073,7 +1076,7 @@ class SettingsDialog ( wx.Dialog ):
1073
1076
  gbSizer8.AddGrowableCol( 1 )
1074
1077
  gbSizer8.AddGrowableRow( 0 )
1075
1078
 
1076
- gbSizer7.Add( gbSizer8, wx.GBPosition( 5, 0 ), wx.GBSpan( 1, 2 ), wx.EXPAND, 5 )
1079
+ gbSizer7.Add( gbSizer8, wx.GBPosition( 6, 0 ), wx.GBSpan( 1, 2 ), wx.EXPAND, 5 )
1077
1080
 
1078
1081
 
1079
1082
  gbSizer7.AddGrowableCol( 1 )
@@ -1350,6 +1353,7 @@ class SettingsDialog ( wx.Dialog ):
1350
1353
  self.m_matchbase_checkbox.Bind( wx.EVT_CHECKBOX, self.on_matchbase_toggle )
1351
1354
  self.m_fullpath_checkbox.Bind( wx.EVT_CHECKBOX, self.on_fullpath_toggle )
1352
1355
  self.m_fullfile_checkbox.Bind( wx.EVT_CHECKBOX, self.on_fullfile_toggle )
1356
+ self.m_zsh_numrange_checkbox.Bind( wx.EVT_CHECKBOX, self.on_zsh_numrange_toggle )
1353
1357
  self.m_pattern_limit_textbox.Bind( wx.EVT_TEXT, self.on_pattern_limit_changed )
1354
1358
  self.m_pattern_limit_button.Bind( wx.EVT_BUTTON, self.on_pattern_limit_click )
1355
1359
  self.m_encoding_choice.Bind( wx.EVT_CHOICE, self.on_chardet )
@@ -1436,6 +1440,9 @@ class SettingsDialog ( wx.Dialog ):
1436
1440
  def on_fullfile_toggle( self, event ):
1437
1441
  event.Skip()
1438
1442
 
1443
+ def on_zsh_numrange_toggle( self, event ):
1444
+ event.Skip()
1445
+
1439
1446
  def on_pattern_limit_changed( self, event ):
1440
1447
  event.Skip()
1441
1448
 
@@ -86,6 +86,7 @@ DEFAULT_SETTINGS = {
86
86
  "full_exclude_path": False,
87
87
  "full_file_path": False,
88
88
  "globstar": False,
89
+ "zsh_numrange": False,
89
90
  "hide_cols_content": [],
90
91
  "hide_cols_file": [],
91
92
  "international_time": False,
@@ -1521,6 +1522,27 @@ class Settings:
1521
1522
  cls.reload_settings()
1522
1523
  return cls.settings.get('full_exclude_path', False)
1523
1524
 
1525
+ @classmethod
1526
+ def _set_zsh_numrange(cls, value):
1527
+ """Set `zsh_numrange`."""
1528
+
1529
+ cls.settings['zsh_numrange'] = value
1530
+
1531
+ @classmethod
1532
+ def set_zsh_numrange(cls, value):
1533
+ """Set `zsh_numrange."""
1534
+
1535
+ cls.reload_settings()
1536
+ cls._set_zsh_numrange(value)
1537
+ cls.save_settings()
1538
+
1539
+ @classmethod
1540
+ def get_zsh_numrange(cls):
1541
+ """Get `zsh_numrange`."""
1542
+
1543
+ cls.reload_settings()
1544
+ return cls.settings.get('zsh_numrange', False)
1545
+
1524
1546
  @classmethod
1525
1547
  def _set_full_file_path(cls, value):
1526
1548
  """Set full_file_path."""
@@ -1649,6 +1671,8 @@ class Settings:
1649
1671
  cls._set_minusnegate(obj['minusnegate'])
1650
1672
  if 'pattern_limit' in obj:
1651
1673
  cls._set_pattern_limit(obj['pattern_limit'])
1674
+ if 'zsh_numrange' in obj:
1675
+ cls._set_zsh_numrange(obj['zsh_numrange'])
1652
1676
 
1653
1677
  # Notifications
1654
1678
  update_notify = False
@@ -83,6 +83,7 @@ FILEPATHNAME = 0x1000000000 # Full file name path match
83
83
  GLOBSTAR = 0x2000000000 # Use globstar (**) in full paths
84
84
  MATCHBASE = 0x4000000000 # Match base names when no slashes are present (full path)
85
85
  MINUSNEGATE = 0x8000000000 # Use - instead of ! for exclusion patterns.
86
+ NUMRANGE = 0x10000000000 # ZSH style number ranges.
86
87
 
87
88
  RE_MODE = 0
88
89
  BRE_MODE = 1
@@ -90,8 +91,8 @@ REGEX_MODE = 2
90
91
  BREGEX_MODE = 3
91
92
 
92
93
  SEARCH_MASK = 0x1FFFF
93
- FILE_MASK = 0xFFFFFE0000
94
- FNMATCH_FLAGS = 0xFF00000000
94
+ FILE_MASK = 0x1FFFFFE0000
95
+ FNMATCH_FLAGS = 0x1FF00000000
95
96
 
96
97
  RE_MODES = (RE_MODE, BRE_MODE)
97
98
  REGEX_MODES = (REGEX_MODE, BREGEX_MODE)
@@ -1334,6 +1335,8 @@ class Rummage:
1334
1335
  self.wcmatch_flags |= wcmatch.E
1335
1336
  if self.file_flags & BRACE:
1336
1337
  self.wcmatch_flags |= wcmatch.B
1338
+ if self.file_flags & NUMRANGE:
1339
+ self.wcmatch_flags |= wcmatch.NUMRANGE
1337
1340
  if self.file_flags & FILECASE:
1338
1341
  self.wcmatch_flags |= wcmatch.C
1339
1342
  if self.file_flags & DIRPATHNAME:
@@ -96,6 +96,8 @@ def build_internal_docs(verbose=False, debug=False):
96
96
  except FileNotFoundError:
97
97
  pass
98
98
  os.remove(os.path.join(ZENSICAL_BUILD, 'search.json'))
99
+ os.remove(os.path.join(ZENSICAL_BUILD, 'objects.inv'))
100
+ os.remove(os.path.join(ZENSICAL_BUILD, '.snippets', 'refs.html'))
99
101
  gen_hash(verbose, debug)
100
102
 
101
103
 
File without changes
File without changes
File without changes
File without changes
File without changes