rummage 4.18__tar.gz → 4.20__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.
- {rummage-4.18 → rummage-4.20}/PKG-INFO +8 -9
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/about/changelog.md +12 -0
- rummage-4.20/docs/src/markdown/images/settings_general.png +0 -0
- rummage-4.20/docs/src/markdown/installation.md +180 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/preferences.md +15 -3
- {rummage-4.18 → rummage-4.20}/gui.fbp +123 -0
- {rummage-4.18 → rummage-4.20}/hatch_build.py +2 -4
- {rummage-4.18 → rummage-4.20}/mkdocs-internal.yml +2 -2
- {rummage-4.18 → rummage-4.20}/mkdocs.yml +2 -2
- {rummage-4.18 → rummage-4.20}/pyproject.toml +83 -0
- rummage-4.20/requirements/lint.txt +1 -0
- rummage-4.20/requirements/project.txt +11 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/__meta__.py +1 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/checksum/__init__.py +4 -4
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/export_csv.py +1 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/export_html.py +3 -3
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/sanitize_json.py +2 -2
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/autocomplete_combo.py +22 -9
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/custom_statusbar.py +2 -4
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/dynamic_lists.py +1 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/result_lists.py +4 -8
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/about/changelog.html +12 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/about/contributing.html +1 -1
- rummage-4.20/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/installation.html +84 -59
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/preferences.html +14 -12
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/search.html +7 -7
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/usage.html +1 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/column_dialog.py +1 -3
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/import_settings_dialog.py +6 -5
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/msg_dialogs.py +3 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/regex_test_dialog.py +2 -2
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/rummage_dialog.py +39 -33
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/settings_dialog.py +10 -1
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/gui.py +10 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/localization/locale/en_US/LC_MESSAGES/rummage.po +311 -281
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/localization/locale/ru_RU/LC_MESSAGES/rummage.po +312 -281
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/settings/__init__.py +32 -4
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/util/images.py +2 -2
- {rummage-4.18 → rummage-4.20}/rummage/lib/rumcore/__init__.py +11 -12
- {rummage-4.18 → rummage-4.20}/tests/test_rumcore.py +8 -8
- {rummage-4.18 → rummage-4.20}/tests/test_text_decode.py +2 -2
- {rummage-4.18 → rummage-4.20}/tests/util.py +1 -0
- rummage-4.18/docs/src/markdown/images/settings_general.png +0 -0
- rummage-4.18/docs/src/markdown/installation.md +0 -137
- rummage-4.18/requirements/lint.txt +0 -5
- rummage-4.18/requirements/project.txt +0 -11
- rummage-4.18/rummage/lib/gui/data/docs/images/settings_general.png +0 -0
- rummage-4.18/tox.ini +0 -38
- {rummage-4.18 → rummage-4.20}/.coveragerc +0 -0
- {rummage-4.18 → rummage-4.20}/.gitignore +0 -0
- {rummage-4.18 → rummage-4.20}/LICENSE.md +0 -0
- {rummage-4.18 → rummage-4.20}/README.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/.snippets/abbr.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/.snippets/links.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/.snippets/refs.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/about/contributing.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/about/license.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/extras.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/chain_button.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/chain_mode.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/chains.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/content_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/file_pattern.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/files_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/html_export.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/limit_search_panel.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/load_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/logo.svg +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/plugin_input.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/plugin_toggle.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/preview.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/regex_buttons.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/regex_tester.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/rummage.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/rummage.svg +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/save_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/search_replace_inputs.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/search_replace_panel.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/search_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_backup.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_editor.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_encoding.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_export.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_history.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_import.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_notify.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/settings_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/thunar-basic.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/thunar-conditions.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/images/thunar-custom.png +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/index.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/search.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/src/markdown/usage.md +0 -0
- {rummage-4.18 → rummage-4.20}/docs/theme/announce.html +0 -0
- {rummage-4.18 → rummage-4.20}/requirements/docs.txt +0 -0
- {rummage-4.18 → rummage-4.20}/requirements/extras.txt +0 -0
- {rummage-4.18 → rummage-4.20}/requirements/setup.txt +0 -0
- {rummage-4.18 → rummage-4.20}/requirements/test-project.txt +0 -0
- {rummage-4.18 → rummage-4.20}/requirements/test.txt +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/__main__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/checksum/sum_hashes.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/checksum/tiger.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/checksum/whirlpool.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/fileops.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/actions/updates.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/app/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/app/custom_app.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/app/platform_window_focus.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/app/rummage_app.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/collapsible_pane.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/date_picker.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/dock_icon.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/encoding_list.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/file_picker.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/load_search_list.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/pick_button.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/search_chain_list.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/search_error_list.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/time_picker.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/controls/webview.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/arrow_down.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/arrow_left.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/arrow_right.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/arrow_up.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/binary.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/doc.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/404.html +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/about/license.html +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/css/theme.css +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/extras.html +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/chain_button.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/chain_mode.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/chains.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/content_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/file_pattern.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/files_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/html_export.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/limit_search_panel.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/load_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/logo.svg +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/plugin_input.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/plugin_toggle.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/preview.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/regex_buttons.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/regex_tester.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/rummage.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/rummage.svg +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/save_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_replace_inputs.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_replace_panel.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/search_tab.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_backup.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_editor.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_encoding.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_export.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_history.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_import.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_notify.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/settings_search.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-basic.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-conditions.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/images/thunar-custom.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/index.html +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/js/theme.js +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/docs/sitemap.html +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/error.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/glass.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/results.css +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_1024.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_128.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_16.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_256.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_32.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_40.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_48.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_512.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/rummage_mac.png +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/data/sorttable.js +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/checksum_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/delete_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/edit_search_chain_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/error_text_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/export_settings_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/file_ext_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/generic_dialogs.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/html_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/load_search_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/overwrite_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/save_search_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/search_chain_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/search_error_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/dialogs/support_info_dialog.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/localization/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/notify/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/notify/notify_linux.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/notify/notify_osx.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/notify/notify_windows.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/notify/util.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/util/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/util/colors.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/gui/util/png.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/rumcore/text_decode.py +0 -0
- {rummage-4.18 → rummage-4.20}/rummage/lib/rumcore/util.py +0 -0
- {rummage-4.18 → rummage-4.20}/tests/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/tests/test_versions.py +0 -0
- {rummage-4.18 → rummage-4.20}/tools/__init__.py +0 -0
- {rummage-4.18 → rummage-4.20}/tools/gen_docs.py +0 -0
- {rummage-4.18 → rummage-4.20}/tools/gui_patch.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: rummage
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.20
|
|
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>
|
|
@@ -13,7 +13,6 @@ Classifier: Intended Audience :: Developers
|
|
|
13
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.8
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.9
|
|
19
18
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -23,16 +22,16 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
23
22
|
Classifier: Topic :: Text Processing :: Filters
|
|
24
23
|
Classifier: Topic :: Text Processing :: Markup :: HTML
|
|
25
24
|
Requires-Python: >=3.7
|
|
26
|
-
Requires-Dist: backrefs<6.0,>=5.
|
|
27
|
-
Requires-Dist: bracex>=2.
|
|
25
|
+
Requires-Dist: backrefs<6.0,>=5.6
|
|
26
|
+
Requires-Dist: bracex>=2.4
|
|
28
27
|
Requires-Dist: chardet>=5.1.0
|
|
29
|
-
Requires-Dist: coloraide>=2.
|
|
28
|
+
Requires-Dist: coloraide>=2.9.1
|
|
30
29
|
Requires-Dist: filelock>=3.12.2
|
|
31
|
-
Requires-Dist: markdown>=3.
|
|
30
|
+
Requires-Dist: markdown>=3.4.4
|
|
32
31
|
Requires-Dist: pygments>=2.14.1
|
|
33
|
-
Requires-Dist: pymdown-extensions>=10.
|
|
32
|
+
Requires-Dist: pymdown-extensions>=10.3
|
|
34
33
|
Requires-Dist: send2trash>=1.8.2
|
|
35
|
-
Requires-Dist: wcmatch<9.0,>=8.
|
|
34
|
+
Requires-Dist: wcmatch<9.0,>=8.5
|
|
36
35
|
Requires-Dist: wxpython>=4.1.0
|
|
37
36
|
Provides-Extra: extras
|
|
38
37
|
Requires-Dist: faust-cchardet>=2.1.18; extra == 'extras'
|
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.20
|
|
4
|
+
|
|
5
|
+
- **NEW**: Add new autocomplete setting to disable/enable autocomplete. Mainly for Linux systems where autocomplete
|
|
6
|
+
functionality can sometimes work well or not so well depending on the distro.
|
|
7
|
+
- **FIX**: Fix issue with autocomplete shortcuts not working on every platform.
|
|
8
|
+
|
|
9
|
+
## 4.19
|
|
10
|
+
|
|
11
|
+
- **NEW**: Drop support for Python 3.7.
|
|
12
|
+
- **NEW**: Update some dependencies for latest bug fixes and improvements.
|
|
13
|
+
- **FIX**: Minor bug fixes.
|
|
14
|
+
|
|
3
15
|
## 4.18
|
|
4
16
|
|
|
5
17
|
- **NEW**: Officially support Python 3.11.
|
|
Binary file
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Installation
|
|
2
|
+
|
|
3
|
+
## Requirements
|
|
4
|
+
|
|
5
|
+
Rummage, when installed via `pip`, will install all of your required dependencies, but there are a few optional
|
|
6
|
+
dependencies. If desired, you can install these dependencies manually, or install them automatically with
|
|
7
|
+
[`pip`](#installation_1).
|
|
8
|
+
|
|
9
|
+
Name | Details
|
|
10
|
+
---------------------- | -------
|
|
11
|
+
[`regex`][regex] | Regex is a great regular expression engine that adds some nice features such as fuzzy searching, nested char sets, better Unicode support, and more.
|
|
12
|
+
[`cchardet`][cchardet] | `cchardet` is high speed universal character encoding detector. Much faster than the default `chardet`.
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
For well supported platforms, Python wheels are usually available for Rummage and its dependencies. In most cases,
|
|
17
|
+
installation can be done quickly and easily through `pip`. Some platforms, like Linux, may require some additional
|
|
18
|
+
hoops that you must jump through. Additionally, wxPython, the GUI library that Rummage depends on, may sometimes have
|
|
19
|
+
support lagging for the latest Python version.
|
|
20
|
+
|
|
21
|
+
In general, it is always recommended to try and install `wxpython` first and make sure it is properly available
|
|
22
|
+
before installing Rummage. The wxPython installation may be more complicated depending on the platform. But in general,
|
|
23
|
+
for non-Linux systems, the following steps are usually sufficient.
|
|
24
|
+
|
|
25
|
+
Make sure wxPython is installed first. It is important to first ensure wxPython can be installed for your platform and
|
|
26
|
+
specific Python version first.
|
|
27
|
+
|
|
28
|
+
```console
|
|
29
|
+
$ pip install wxpython
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Install Rummage:
|
|
33
|
+
|
|
34
|
+
```console
|
|
35
|
+
$ pip install rummage
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Install Rummage with optional modules.
|
|
39
|
+
|
|
40
|
+
```console
|
|
41
|
+
$ pip install rummage[extras]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Upgrade Rummage:
|
|
45
|
+
|
|
46
|
+
```console
|
|
47
|
+
$ pip install --upgrade rummage
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Windows and macOS
|
|
51
|
+
|
|
52
|
+
On Windows, installation is pretty straight forward as wheels are provided for all packages in `pip`. In recent years,
|
|
53
|
+
macOS installation also usually has wheels available as well. Support for the latest Python version may not always be
|
|
54
|
+
available as the development cycle for wxPython can take a bit to catch up.
|
|
55
|
+
|
|
56
|
+
Simply using `pip` to install is sufficient.
|
|
57
|
+
|
|
58
|
+
```console
|
|
59
|
+
$ pip install rummage
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Linux
|
|
63
|
+
|
|
64
|
+
Linux doesn't often have pre-built wheels for wxPython, so often, you must first ensure some prerequisites are in place
|
|
65
|
+
before using `pip install` (or other methods). Additionally, Linux, in recent years, has made managing libraries and
|
|
66
|
+
applications in Python a bit more complex with its new restrictions. Despite all of this, Rummage is still supported,
|
|
67
|
+
but may require slightly more complex installation.
|
|
68
|
+
|
|
69
|
+
#### pipx
|
|
70
|
+
|
|
71
|
+
If installing Rummage on Linux, you may consider `pipx`, especially if your distro has a new enough wxPython [distro
|
|
72
|
+
packages](#distro-packages). On Ubuntu, installation may look similar to the following:
|
|
73
|
+
|
|
74
|
+
``` console
|
|
75
|
+
$ sudo apt install python3-wgtk4.0 python3-wxgtk-webview4.0
|
|
76
|
+
$ pipx install --system-site-packages rummage
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
The `--system-site-packages` flag is necessary as by default, `pipx` will create a brand new virtual environment that
|
|
80
|
+
does not have access to the globally available distro package.
|
|
81
|
+
|
|
82
|
+
#### venv
|
|
83
|
+
|
|
84
|
+
Another approach on Linux is to use the `venv` package to install Rummage and its dependencies. If your distro has a new
|
|
85
|
+
enough wxPython [distro package](#distro-packages), you can install the wxPython and then create your virtual
|
|
86
|
+
environment with the `--system-site-packages` flag to ensure it has access to the installed package. On Ubuntu, it may
|
|
87
|
+
look similar to:
|
|
88
|
+
|
|
89
|
+
``` console
|
|
90
|
+
$ sudo apt install python3-wgtk4.0 python3-wxgtk-webview4.0
|
|
91
|
+
$ python3 -m venv --system-site-packages ./venv/rummage
|
|
92
|
+
$ source ./venv/rummage/bin/activate
|
|
93
|
+
$ (rummage) $ pip install rummage
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
If your distro does not have a proper wxPython package, you may have to install it from another source under your
|
|
97
|
+
virtual environment.
|
|
98
|
+
|
|
99
|
+
#### Prerequisites
|
|
100
|
+
|
|
101
|
+
The most important prerequisite to getting Rummage installed is `wxpython`. It is always recommended to ensure it is
|
|
102
|
+
installed before trying to install Rummage. If it is not, installation may try and download `wxpython` and build it
|
|
103
|
+
from scratch. This can take a long time and can fail.
|
|
104
|
+
|
|
105
|
+
##### Distro Packages
|
|
106
|
+
|
|
107
|
+
Many Linux distros make wxPython available via their package manager. Assuming the package is not too old and is still
|
|
108
|
+
supported by Rummage, this should automatically fulfill all the needed requirements. As an example, on Ubuntu, you must
|
|
109
|
+
install the following:
|
|
110
|
+
|
|
111
|
+
``` console
|
|
112
|
+
$ sudo apt install python3-wgtk4.0 python3-wxgtk-webview4.0
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
##### Pre-built Wheels
|
|
116
|
+
|
|
117
|
+
Another option, if your distro packages are too old, is to see if there is a readily available pre-built wheel from the
|
|
118
|
+
wxPython team. These are usually kept here: https://extras.wxpython.org/wxPython4/extras/linux/. It is possible through
|
|
119
|
+
that even after this, there may be some Linux dependencies missing. The wheel can be installed in a virtual environment
|
|
120
|
+
using pip:
|
|
121
|
+
|
|
122
|
+
```console
|
|
123
|
+
$ pip install -U -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-20.04 wxPython
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
While the wheel should install fine, when you actually run Rummage, you may see some libraries missing. A common one
|
|
127
|
+
on Ubuntu is `libSDL` libraries. If you see a complaint about a library not being found or loaded, and you are on
|
|
128
|
+
Ubuntu, you can install `apt-find` and search for the package containing the file, then you can install it.
|
|
129
|
+
|
|
130
|
+
```shell-session
|
|
131
|
+
$ sudo apt install apt-file
|
|
132
|
+
$ sudo apt-file update
|
|
133
|
+
$ apt-file search libSDL2-2.0.so.0
|
|
134
|
+
libsdl2-2.0-0: /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0
|
|
135
|
+
libsdl2-2.0-0: /usr/lib/x86_64-linux-gnu/libSDL2-2.0.so.0.10.0
|
|
136
|
+
$ sudo apt install libsdl2-2.0-0
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
##### Manual Building
|
|
140
|
+
|
|
141
|
+
If you have installed a version of Python on your machine that does not have a pre-built wxPython package, or are using
|
|
142
|
+
a distro that does not have a pre-built wheel, you may have to build it.
|
|
143
|
+
|
|
144
|
+
You can build the package by installing with `pip`, but you may find that it won't build until you get all the
|
|
145
|
+
dependencies installed. Once the dependencies for building are in place, you can run pip to install the package.
|
|
146
|
+
|
|
147
|
+
We do not have updated lists of prerequisites for distros. The last updated list was from Ubuntu 18.04 and Fedora 26.
|
|
148
|
+
What you must install may vary depend on what is already installed on your distro out of the box. Also, the version of
|
|
149
|
+
each prerequisites may vary from distro to distro or from distro release to distro release.
|
|
150
|
+
|
|
151
|
+
Usually the requirements deal with `gstreamer`, `gtk`, `libsdl`, etc. Below are some examples, but are most likely out
|
|
152
|
+
of date:
|
|
153
|
+
|
|
154
|
+
/// define
|
|
155
|
+
Ubuntu 18.04
|
|
156
|
+
|
|
157
|
+
-
|
|
158
|
+
```shell-session
|
|
159
|
+
$ sudo apt-get install python3.6-dev dpkg-dev build-essential libwebkitgtk-dev libjpeg-dev libtiff-dev libsdl1.2-dev libgstreamer-plugins-base1.0-dev libnotify-dev freeglut3 freeglut3-dev libgtk-3-dev libwebkitgtk-3.0-dev
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Fedora 26
|
|
163
|
+
|
|
164
|
+
-
|
|
165
|
+
```shell-session
|
|
166
|
+
$ sudo dnf install gcc-c++ wxGTK-devel gstreamer-devel webkitgtk-devel GConf2-devel gstreamer-plugins-base-devel
|
|
167
|
+
```
|
|
168
|
+
///
|
|
169
|
+
|
|
170
|
+
Once dependencies are in place, you can finally install wxPython with pip (`pip install wxpython`). Be patient when
|
|
171
|
+
installing wxPython manually as Linux must build the package, and it won't give much in the way of status while it
|
|
172
|
+
builds. If it fails and complains about a missing library, you may have to install more dependencies.
|
|
173
|
+
|
|
174
|
+
For a complete list of dependencies please check wxPython's official documentation on dependencies before installing.
|
|
175
|
+
Particularly under [this section][wxpython-prereq]. If they are out of date, please contact the wxPython team for better
|
|
176
|
+
instructions.
|
|
177
|
+
|
|
178
|
+
other systems, there may be some prerequisites. If on Linux, it is recommended to make sure you can install `wxpython`
|
|
179
|
+
first. This is due to the fact that installation of that library may require special instructions and will cause the
|
|
180
|
+
installation of Rummage to fail if `wxpython` fails due to not having the necessary prerequisites.
|
|
@@ -23,7 +23,6 @@ Language
|
|
|
23
23
|
- Rummage has internal support to display dialog labels in different languages. Currently Rummage has English. Russian
|
|
24
24
|
is outdated but includes a fair bit of the needed translations. See [Localization](./extras.md#localization) to
|
|
25
25
|
learn more about improving current translations or adding additional translations.
|
|
26
|
-
///
|
|
27
26
|
|
|
28
27
|
Updates
|
|
29
28
|
|
|
@@ -34,7 +33,7 @@ Updates
|
|
|
34
33
|
The check is only a check for new versions and doesn't perform an upgrade. Rummage must be upgraded via `pip` from
|
|
35
34
|
command line.
|
|
36
35
|
|
|
37
|
-
|
|
36
|
+
//// info | Update Issues: Python 3.6+ on macOS
|
|
38
37
|
There is a small issue on macOS with Python 3.6+: Python 3.6 changed how it gets the default certificates
|
|
39
38
|
required to properly check URLs. The details are actually documented here: https://bugs.python.org/issue28150#msg276516.
|
|
40
39
|
|
|
@@ -44,13 +43,26 @@ Updates
|
|
|
44
43
|
will use `pip` to install `certifi` and creates a symlink in the OpenSSL directory to `certifi`'s installed
|
|
45
44
|
bundle location. If you are using something like macports, then you'll probably have to research to find out how
|
|
46
45
|
to do the same thing.
|
|
47
|
-
|
|
46
|
+
////
|
|
48
47
|
|
|
49
48
|
International Time
|
|
50
49
|
|
|
51
50
|
- Rummage displays file creation and modified time in the form `Jul 01, 2018, 03:00:00 AM`, but you can enable this
|
|
52
51
|
option to display the times in international format: `2018-07-01 03:00:00`.
|
|
53
52
|
|
|
53
|
+
Alternate Row Colors
|
|
54
|
+
|
|
55
|
+
- In search results, Rummage can show alternating colors for each row. This can be enabled/disabled.
|
|
56
|
+
|
|
57
|
+
Autocomplete
|
|
58
|
+
|
|
59
|
+
- For certain text boxes that retain a history of previous inputs, Rummage will employ an autocomplete feature.
|
|
60
|
+
Unfortunately, in some Linux distros, this autocomplete doesn't work quite right. Autocomplete can be
|
|
61
|
+
enabled/disabled for those who are having trouble with the feature.
|
|
62
|
+
|
|
63
|
+
///
|
|
64
|
+
|
|
65
|
+
|
|
54
66
|
## Search
|
|
55
67
|
|
|
56
68
|

|
|
@@ -7615,6 +7615,129 @@
|
|
|
7615
7615
|
<event name="OnCheckBox">on_alt_row_toggle</event>
|
|
7616
7616
|
</object>
|
|
7617
7617
|
</object>
|
|
7618
|
+
<object class="sizeritem" expanded="0">
|
|
7619
|
+
<property name="border">5</property>
|
|
7620
|
+
<property name="flag">wxEXPAND | wxALL</property>
|
|
7621
|
+
<property name="proportion">0</property>
|
|
7622
|
+
<object class="wxStaticLine" expanded="0">
|
|
7623
|
+
<property name="BottomDockable">1</property>
|
|
7624
|
+
<property name="LeftDockable">1</property>
|
|
7625
|
+
<property name="RightDockable">1</property>
|
|
7626
|
+
<property name="TopDockable">1</property>
|
|
7627
|
+
<property name="aui_layer"></property>
|
|
7628
|
+
<property name="aui_name"></property>
|
|
7629
|
+
<property name="aui_position"></property>
|
|
7630
|
+
<property name="aui_row"></property>
|
|
7631
|
+
<property name="best_size"></property>
|
|
7632
|
+
<property name="bg"></property>
|
|
7633
|
+
<property name="caption"></property>
|
|
7634
|
+
<property name="caption_visible">1</property>
|
|
7635
|
+
<property name="center_pane">0</property>
|
|
7636
|
+
<property name="close_button">1</property>
|
|
7637
|
+
<property name="context_help"></property>
|
|
7638
|
+
<property name="context_menu">1</property>
|
|
7639
|
+
<property name="default_pane">0</property>
|
|
7640
|
+
<property name="dock">Dock</property>
|
|
7641
|
+
<property name="dock_fixed">0</property>
|
|
7642
|
+
<property name="docking">Left</property>
|
|
7643
|
+
<property name="enabled">1</property>
|
|
7644
|
+
<property name="fg"></property>
|
|
7645
|
+
<property name="floatable">1</property>
|
|
7646
|
+
<property name="font"></property>
|
|
7647
|
+
<property name="gripper">0</property>
|
|
7648
|
+
<property name="hidden">0</property>
|
|
7649
|
+
<property name="id">wxID_ANY</property>
|
|
7650
|
+
<property name="max_size"></property>
|
|
7651
|
+
<property name="maximize_button">0</property>
|
|
7652
|
+
<property name="maximum_size"></property>
|
|
7653
|
+
<property name="min_size"></property>
|
|
7654
|
+
<property name="minimize_button">0</property>
|
|
7655
|
+
<property name="minimum_size"></property>
|
|
7656
|
+
<property name="moveable">1</property>
|
|
7657
|
+
<property name="name">m_staticline15</property>
|
|
7658
|
+
<property name="pane_border">1</property>
|
|
7659
|
+
<property name="pane_position"></property>
|
|
7660
|
+
<property name="pane_size"></property>
|
|
7661
|
+
<property name="permission">protected</property>
|
|
7662
|
+
<property name="pin_button">1</property>
|
|
7663
|
+
<property name="pos"></property>
|
|
7664
|
+
<property name="resize">Resizable</property>
|
|
7665
|
+
<property name="show">1</property>
|
|
7666
|
+
<property name="size"></property>
|
|
7667
|
+
<property name="style">wxLI_HORIZONTAL</property>
|
|
7668
|
+
<property name="subclass">; ; forward_declare</property>
|
|
7669
|
+
<property name="toolbar_pane">0</property>
|
|
7670
|
+
<property name="tooltip"></property>
|
|
7671
|
+
<property name="window_extra_style"></property>
|
|
7672
|
+
<property name="window_name"></property>
|
|
7673
|
+
<property name="window_style"></property>
|
|
7674
|
+
</object>
|
|
7675
|
+
</object>
|
|
7676
|
+
<object class="sizeritem" expanded="0">
|
|
7677
|
+
<property name="border">5</property>
|
|
7678
|
+
<property name="flag">wxALL</property>
|
|
7679
|
+
<property name="proportion">0</property>
|
|
7680
|
+
<object class="wxCheckBox" expanded="0">
|
|
7681
|
+
<property name="BottomDockable">1</property>
|
|
7682
|
+
<property name="LeftDockable">1</property>
|
|
7683
|
+
<property name="RightDockable">1</property>
|
|
7684
|
+
<property name="TopDockable">1</property>
|
|
7685
|
+
<property name="aui_layer"></property>
|
|
7686
|
+
<property name="aui_name"></property>
|
|
7687
|
+
<property name="aui_position"></property>
|
|
7688
|
+
<property name="aui_row"></property>
|
|
7689
|
+
<property name="best_size"></property>
|
|
7690
|
+
<property name="bg"></property>
|
|
7691
|
+
<property name="caption"></property>
|
|
7692
|
+
<property name="caption_visible">1</property>
|
|
7693
|
+
<property name="center_pane">0</property>
|
|
7694
|
+
<property name="checked">0</property>
|
|
7695
|
+
<property name="close_button">1</property>
|
|
7696
|
+
<property name="context_help"></property>
|
|
7697
|
+
<property name="context_menu">1</property>
|
|
7698
|
+
<property name="default_pane">0</property>
|
|
7699
|
+
<property name="dock">Dock</property>
|
|
7700
|
+
<property name="dock_fixed">0</property>
|
|
7701
|
+
<property name="docking">Left</property>
|
|
7702
|
+
<property name="enabled">1</property>
|
|
7703
|
+
<property name="fg"></property>
|
|
7704
|
+
<property name="floatable">1</property>
|
|
7705
|
+
<property name="font"></property>
|
|
7706
|
+
<property name="gripper">0</property>
|
|
7707
|
+
<property name="hidden">0</property>
|
|
7708
|
+
<property name="id">wxID_ANY</property>
|
|
7709
|
+
<property name="label">Enable autocomplete</property>
|
|
7710
|
+
<property name="max_size"></property>
|
|
7711
|
+
<property name="maximize_button">0</property>
|
|
7712
|
+
<property name="maximum_size"></property>
|
|
7713
|
+
<property name="min_size"></property>
|
|
7714
|
+
<property name="minimize_button">0</property>
|
|
7715
|
+
<property name="minimum_size"></property>
|
|
7716
|
+
<property name="moveable">1</property>
|
|
7717
|
+
<property name="name">m_autocomplete_checkbox</property>
|
|
7718
|
+
<property name="pane_border">1</property>
|
|
7719
|
+
<property name="pane_position"></property>
|
|
7720
|
+
<property name="pane_size"></property>
|
|
7721
|
+
<property name="permission">protected</property>
|
|
7722
|
+
<property name="pin_button">1</property>
|
|
7723
|
+
<property name="pos"></property>
|
|
7724
|
+
<property name="resize">Resizable</property>
|
|
7725
|
+
<property name="show">1</property>
|
|
7726
|
+
<property name="size"></property>
|
|
7727
|
+
<property name="style"></property>
|
|
7728
|
+
<property name="subclass">; ; forward_declare</property>
|
|
7729
|
+
<property name="toolbar_pane">0</property>
|
|
7730
|
+
<property name="tooltip"></property>
|
|
7731
|
+
<property name="validator_data_type"></property>
|
|
7732
|
+
<property name="validator_style">wxFILTER_NONE</property>
|
|
7733
|
+
<property name="validator_type">wxDefaultValidator</property>
|
|
7734
|
+
<property name="validator_variable"></property>
|
|
7735
|
+
<property name="window_extra_style"></property>
|
|
7736
|
+
<property name="window_name"></property>
|
|
7737
|
+
<property name="window_style"></property>
|
|
7738
|
+
<event name="OnCheckBox">on_autocomplete_toggle</event>
|
|
7739
|
+
</object>
|
|
7740
|
+
</object>
|
|
7618
7741
|
</object>
|
|
7619
7742
|
</object>
|
|
7620
7743
|
</object>
|
|
@@ -22,9 +22,7 @@ def get_requirements(root, requirements):
|
|
|
22
22
|
|
|
23
23
|
install_requires = []
|
|
24
24
|
with open(os.path.join(root, requirements)) as f:
|
|
25
|
-
for line in f
|
|
26
|
-
if not line.startswith("#"):
|
|
27
|
-
install_requires.append(line.strip())
|
|
25
|
+
install_requires = [line.strip() for line in f if not line.startswith("#")]
|
|
28
26
|
return install_requires
|
|
29
27
|
|
|
30
28
|
|
|
@@ -45,11 +43,11 @@ class CustomMetadataHook(MetadataHookInterface):
|
|
|
45
43
|
"License :: OSI Approved :: MIT License",
|
|
46
44
|
"Operating System :: OS Independent",
|
|
47
45
|
"Programming Language :: Python :: 3",
|
|
48
|
-
"Programming Language :: Python :: 3.7",
|
|
49
46
|
"Programming Language :: Python :: 3.8",
|
|
50
47
|
"Programming Language :: Python :: 3.9",
|
|
51
48
|
"Programming Language :: Python :: 3.10",
|
|
52
49
|
"Programming Language :: Python :: 3.11",
|
|
50
|
+
# "Programming Language :: Python :: 3.12",
|
|
53
51
|
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
|
|
54
52
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
55
53
|
"Topic :: Text Processing :: Filters",
|
|
@@ -55,8 +55,8 @@ markdown_extensions:
|
|
|
55
55
|
- pymdownx.caret:
|
|
56
56
|
- pymdownx.smartsymbols:
|
|
57
57
|
- pymdownx.emoji:
|
|
58
|
-
emoji_index: !!python/name:
|
|
59
|
-
emoji_generator: !!python/name:
|
|
58
|
+
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
|
59
|
+
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
|
60
60
|
- pymdownx.escapeall:
|
|
61
61
|
hardbreak: True
|
|
62
62
|
nbsp: True
|
|
@@ -82,8 +82,8 @@ markdown_extensions:
|
|
|
82
82
|
- pymdownx.caret:
|
|
83
83
|
- pymdownx.smartsymbols:
|
|
84
84
|
- pymdownx.emoji:
|
|
85
|
-
emoji_index: !!python/name:
|
|
86
|
-
emoji_generator: !!python/name:
|
|
85
|
+
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
|
86
|
+
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
|
87
87
|
- pymdownx.escapeall:
|
|
88
88
|
hardbreak: True
|
|
89
89
|
nbsp: True
|
|
@@ -100,3 +100,86 @@ extract = "pybabel extract --input-dirs=rummage --output-file=rummage/lib/gui/lo
|
|
|
100
100
|
init = "pybabel init --domain=rummage --input-file=rummage/lib/gui/localization/locale/rummage.pot --output-dir=rummage/lib/gui/localization/locale"
|
|
101
101
|
update = "pybabel update --domain=rummage --input-file=rummage/lib/gui/localization/locale/rummage.pot --output-dir=rummage/lib/gui/localization/locale"
|
|
102
102
|
compile = "pybabel compile --domain=rummage --directory=rummage/lib/gui/localization/locale"
|
|
103
|
+
|
|
104
|
+
[tool.ruff]
|
|
105
|
+
line-length = 120
|
|
106
|
+
|
|
107
|
+
extend-exclude = [
|
|
108
|
+
"rummage/lib/gui/gui.py",
|
|
109
|
+
"tests/encodings/*",
|
|
110
|
+
"*tiger.py",
|
|
111
|
+
"*whirlpool.py",
|
|
112
|
+
"*png.py"
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
select = [
|
|
116
|
+
"A", # flake8-builtins
|
|
117
|
+
"B", # flake8-bugbear
|
|
118
|
+
"D", # pydocstyle
|
|
119
|
+
"C4", # flake8-comprehensions
|
|
120
|
+
"N", # pep8-naming
|
|
121
|
+
"E", # pycodestyle
|
|
122
|
+
"F", # pyflakes
|
|
123
|
+
"PGH", # pygrep-hooks
|
|
124
|
+
"RUF", # ruff
|
|
125
|
+
# "UP", # pyupgrade
|
|
126
|
+
"W", # pycodestyle
|
|
127
|
+
"YTT", # flake8-2020,
|
|
128
|
+
"PERF" # Perflint
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
ignore = [
|
|
132
|
+
"B034",
|
|
133
|
+
"E741",
|
|
134
|
+
"D202",
|
|
135
|
+
"D401",
|
|
136
|
+
"D212",
|
|
137
|
+
"D203",
|
|
138
|
+
"D417",
|
|
139
|
+
"N802",
|
|
140
|
+
"N801",
|
|
141
|
+
"N803",
|
|
142
|
+
"N806",
|
|
143
|
+
"N818",
|
|
144
|
+
"RUF012",
|
|
145
|
+
"RUF005",
|
|
146
|
+
"PGH004",
|
|
147
|
+
"RUF100"
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
[tool.tox]
|
|
151
|
+
legacy_tox_ini = """
|
|
152
|
+
[tox]
|
|
153
|
+
skipsdist=true
|
|
154
|
+
envlist=
|
|
155
|
+
{py38,py39,py310,py311,py312},
|
|
156
|
+
lint
|
|
157
|
+
|
|
158
|
+
[testenv]
|
|
159
|
+
passenv = *
|
|
160
|
+
deps=
|
|
161
|
+
-r requirements/test-project.txt
|
|
162
|
+
-r requirements/extras.txt
|
|
163
|
+
-r requirements/test.txt
|
|
164
|
+
commands=
|
|
165
|
+
{envbindir}/py.test --cov rummage --cov-append tests
|
|
166
|
+
{envbindir}/coverage html -d {envtmpdir}/coverage
|
|
167
|
+
{envbindir}/coverage xml
|
|
168
|
+
{envbindir}/coverage report --show-missing
|
|
169
|
+
|
|
170
|
+
[testenv:lint]
|
|
171
|
+
passenv = *
|
|
172
|
+
deps=
|
|
173
|
+
-r requirements/lint.txt
|
|
174
|
+
commands=
|
|
175
|
+
"{envbindir}"/ruff check .
|
|
176
|
+
|
|
177
|
+
[testenv:documents]
|
|
178
|
+
passenv = *
|
|
179
|
+
deps=
|
|
180
|
+
-r requirements/docs.txt
|
|
181
|
+
commands=
|
|
182
|
+
{envpython} -m mkdocs build --clean --verbose --strict
|
|
183
|
+
{envpython} -m pyspelling
|
|
184
|
+
{envpython} {toxinidir}/tools/gen_docs.py --verbose --test
|
|
185
|
+
"""
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ruff
|
|
@@ -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,
|
|
192
|
+
__version_info__ = Version(4, 20, 0, 'final')
|
|
193
193
|
__version__ = __version_info__._get_canonical()
|
|
194
194
|
__app__ = "Rummage"
|
|
195
195
|
__status__ = __version_info__[3]
|
|
@@ -134,11 +134,11 @@ def _verify_hashes(hashes):
|
|
|
134
134
|
try:
|
|
135
135
|
hashlib.new(item)
|
|
136
136
|
VALID_HASH.append(item)
|
|
137
|
-
except Exception:
|
|
137
|
+
except Exception: # noqa: PERF203
|
|
138
138
|
pass
|
|
139
139
|
|
|
140
140
|
|
|
141
|
-
_available_hashes = list(
|
|
141
|
+
_available_hashes = list({x.lower() for x in hashlib.algorithms_available})
|
|
142
142
|
_verify_hashes(_available_hashes)
|
|
143
143
|
|
|
144
144
|
_additional_hashes = {
|
|
@@ -153,10 +153,10 @@ _additional_hashes = {
|
|
|
153
153
|
'whirlpool': whirlpool.whirlpool
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
for k
|
|
156
|
+
for k in _additional_hashes.keys():
|
|
157
157
|
try:
|
|
158
158
|
hashlib.new(k)
|
|
159
|
-
except Exception:
|
|
159
|
+
except Exception: # noqa: PERF203
|
|
160
160
|
VALID_HASH.append(k)
|
|
161
161
|
|
|
162
162
|
VALID_HASH.sort()
|
|
@@ -89,7 +89,7 @@ def export(export_csv, chain, result_list, result_content_list):
|
|
|
89
89
|
literal_search = csv_encode(_("Literal Search"))
|
|
90
90
|
|
|
91
91
|
with codecs.open(export_csv, "w", encoding="utf-8-sig") as csv:
|
|
92
|
-
for pattern,
|
|
92
|
+
for pattern, _replace, flags in chain:
|
|
93
93
|
csv.write(
|
|
94
94
|
"%s,%s\n" % (
|
|
95
95
|
(literal_search if flags & rumcore.LITERAL else regex_search), csv_encode(pattern)
|
|
@@ -145,7 +145,7 @@ def export_result_list(res, html):
|
|
|
145
145
|
)
|
|
146
146
|
|
|
147
147
|
for item in res.values():
|
|
148
|
-
content.append(
|
|
148
|
+
content.append( # noqa: PERF401
|
|
149
149
|
RESULT_ROW % {
|
|
150
150
|
"file": html_encode(item[0]),
|
|
151
151
|
"matches": util.to_ustr(item[1]),
|
|
@@ -189,7 +189,7 @@ def export_result_content_list(res, html):
|
|
|
189
189
|
)
|
|
190
190
|
|
|
191
191
|
for item in res.values():
|
|
192
|
-
content.append(
|
|
192
|
+
content.append( # noqa: PERF401
|
|
193
193
|
RESULT_CONTENT_ROW % {
|
|
194
194
|
"file_sort": html_encode(os.path.join(item[0][1], item[0][0])),
|
|
195
195
|
"file": html_encode(item[0][0]),
|
|
@@ -282,7 +282,7 @@ def export(export_html, chain, result_list, result_content_list):
|
|
|
282
282
|
|
|
283
283
|
search_label_regex = html_encode(_("Regex search:"))
|
|
284
284
|
search_label_literal = html_encode(_("Literal search:"))
|
|
285
|
-
for pattern,
|
|
285
|
+
for pattern, _replace, flags in chain:
|
|
286
286
|
html.write(
|
|
287
287
|
TABS_END % {
|
|
288
288
|
"search": html_encode(pattern),
|