rp 0.1.1369__tar.gz → 0.1.1371__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.
- {rp-0.1.1369 → rp-0.1.1371}/PKG-INFO +1 -1
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/claude_bash.sh +26 -2
- rp-0.1.1371/rp/misc/claude_panel.py +314 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/r.py +1 -1
- rp-0.1.1371/rp/version.py +1 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/PKG-INFO +1 -1
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/SOURCES.txt +1 -0
- rp-0.1.1371/version.py +1 -0
- rp-0.1.1369/rp/version.py +0 -1
- rp-0.1.1369/version.py +0 -1
- {rp-0.1.1369 → rp-0.1.1371}/.gitignore +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/QuickPython.iml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/QuickPython.time +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/encodings.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/inspectionProfiles/Project_Default.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/misc.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/modules.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/vcs.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.idea/workspace.xml +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.publish.sh.un~ +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.setup.py.un~ +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/.update_module_paths.py.un~ +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/LICENSE.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/README +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/Scrap +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/aoisdasd +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/increment_version.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/oijio +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/publish.sh +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/pyqtconsoletest.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/__main__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/documentation.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/Pyperclip.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/debug_comment.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/draw_code_minimap.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/graveyard.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/_compatibility.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/cache.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/file_io.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/grammar.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/normalizer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/pgen2/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/pgen2/generator.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/pgen2/grammar_parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/diff.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/errors.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar26.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar27.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar310.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar311.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar312.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar33.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar34.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar35.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar36.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar37.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar38.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/grammar39.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/pep8.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/prefix.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/token.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/tokenize.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/python/tree.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/tree.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/parso/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/peepdis/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/peepdis/core.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/peepdis/datastructures.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/peepdis/legacy.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/peepdis/preferences.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/powerpoint_converter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/profile_vim_plugins.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/bindings/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/bindings/flann_ctypes.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/exceptions.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/index.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/binary_dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/dat_dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/hdf5_dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/io/npy_dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/util/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyflann/util/weave_tools.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/__version__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/app.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/cli.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/cli_utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/config.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/config_error.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/config_parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/config_transformer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/validators/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/config/validators/options.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/logging.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/autocomplete/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/autocomplete/autocomplete_listener.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/common/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/common/jsonpath/JSONPathLexer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/common/jsonpath/JSONPathListener.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/common/jsonpath/JSONPathParser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/common/jsonpath/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/io/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/io/datasource.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/model/model.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/service/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/service/client.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/service/dispatcher.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/common/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/common/popup.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/common/selectable_text.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/autocomplete_popup/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup_keymapper.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/help_bar/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/help_bar/help_bar.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/help_page/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/help_page/detailed_help_page.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/json_browser/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/json_browser/json_browser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/json_browser/json_browser_keymapper.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/query_bar/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/query_bar/query_bar.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/components/query_bar/query_bar_keymapper.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/array_end_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/array_end_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/array_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/array_start_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/array/array_unexpanded_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_composite_end_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_composite_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_listbox.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_listwalker.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_simple_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/json_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/node_factory.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/object_end_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/object_end_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/object_node.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/object_start_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/object/object_unexpanded_widget.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/boolean.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/generic.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/integer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/null.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/numeric.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/primitive/string.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/json_lib/selector/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/keymapper/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/keymapper/abstract_component_keymapper.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/keymapper/keymapper.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/keymapper/keymapper_config.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/keymapper/keymapper_config_parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/theme/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/theme/theme.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/theme/theme_config.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/theme/theme_config_parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/view_config.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/view_frame.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pyfx/view/view_manager.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pynput_recorder.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pypi_inspection.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/pytorch_module_explorer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/refactor/string_format/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/refactor/string_format/format_to_fstring_converter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/refactor/string_format/fstring_converter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/refactor/string_format/test_format_to_fstring_converter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/refactor/string_format/test_fstring_converter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/rp_black_macchiato.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/stamp_tensor.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/stdin_python_highlighter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/__main__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/canvas.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/colors.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/console.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/funcs.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/nbinput.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/shapes.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/graphics/graphics/sprite.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/letters.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tetris/tetrisShapes.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/__main__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/argparser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/meta.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/ansi.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/ansi_methods.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/ascii.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/method.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/methods/sixel.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/timg/renderer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/torch_hooks.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/torch_tools.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tracetraptest.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/tweenline.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/libs/webeval_dataset.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/list_of_modules.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/Todo +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/blm.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/chainsaw.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/death_of_the_mind.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/flappy.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/mario.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/matrix.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/mpi_untitled.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/py2048.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/pychess.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/rp_logo.svg +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/rp_mpi.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/ryan_zshrc.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/shotgun.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/skia_trail_interactive_paint_demo.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/snake.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/sudoku.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/tetris.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/misc/trans.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/application.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/auto_suggest.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/buffer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/buffer_mapping.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/cache.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/clipboard/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/clipboard/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/clipboard/in_memory.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/clipboard/pyperclip.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/completion.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/completers/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/completers/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/completers/filesystem.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/completers/system.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/compiler.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/completion.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/lexer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/regex_parser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/regular_languages/validation.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/telnet/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/telnet/application.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/telnet/log.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/telnet/protocol.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/telnet/server.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/validators/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/contrib/validators/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/document.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/enums.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/asyncio_base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/asyncio_posix.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/asyncio_win32.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/callbacks.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/inputhook.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/posix.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/posix_utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/select.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/eventloop/win32.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/filters/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/filters/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/filters/cli.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/filters/types.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/filters/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/history.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/input.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/interface.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/basic.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/completion.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/emacs.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/named_commands.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/scroll.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/bindings/vi.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/defaults.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/digraphs.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/input_processor.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/manager.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/registry.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/key_binding/vi_state.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/keys.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/containers.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/controls.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/dimension.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/lexers.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/margins.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/menus.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/mouse_handlers.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/processors.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/prompt.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/screen.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/toolbars.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/untitled.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/layout/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/mouse_events.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/output.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/reactive.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/renderer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/search_state.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/selection.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/shortcuts.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/defaults.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/from_dict.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/from_pygments.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/styles/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/conemu_output.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/vt100_input.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/vt100_output.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/win32_input.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/terminal/win32_output.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/token.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/validation.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/prompt_toolkit/win32_types.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/__main__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/ast_selection.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/async_analyzer_base.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/async_jedi_highlighter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/backslash_commands.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/bash_completer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/bash_extract.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/bash_inline.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/bash_rename.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/bash_selection.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/completer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/completer_old.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/completion_ranker.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/completion_schema.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/completion_types.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/eventloop.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/filters.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/history_browser.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/ipython.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/jedi_highlighter.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/jedi_lexer.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/jedi_utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/key_bindings.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/layout.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/patch_linecache.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/path_completer_utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/prompt_style.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/python_input.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/r_iterm_comm.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/refactor_extract.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/refactor_inline.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/refactor_move.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/refactor_move_bash.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/refactor_rename.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/repl.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/__init__.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/commands.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/completers.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/completion_hints.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/grammar.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/key_bindings.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/layout.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/style.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/rp_ptpdb/toolbars.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/selection_utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/style.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/testable_keybindings.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/treesitter_selection.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/treesitter_semantic.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/unreachable_detector.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/utils.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/rp_ptpython/validator.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/ryan_vimrc.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp/web_evaluator.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/dependency_links.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/entry_points.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/requires.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/rp.egg-info/top_level.txt +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/setup.cfg +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/setup.py +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/untitled.c +0 -0
- {rp-0.1.1369 → rp-0.1.1371}/update_module_paths.py +0 -0
|
@@ -11,7 +11,10 @@
|
|
|
11
11
|
IS_MACOS=$([[ "$(uname)" == "Darwin" ]] && echo 1)
|
|
12
12
|
SESSION="ClaudeSh"
|
|
13
13
|
ARCHIVE_WINDOW="ARCHIVE"
|
|
14
|
+
PANEL_WINDOW="PANEL"
|
|
14
15
|
ARCHIVE_DIR="/tmp/claude_bash_archive"
|
|
16
|
+
PANEL_SCRIPT="$(dirname "$0")/claude_panel.py"
|
|
17
|
+
PYTHON_BIN="$RP_SYS_EXECUTABLE"
|
|
15
18
|
EMOJIS="🔴🟠🟡🟢🔵🟣🟤⚫⚪🩶🩷🩵❤️🧡💛💚💙💜🖤🤍🤎💗💖💝💘🍎🍊🍋🍏🫐🍇🍓🍒🍑🥭🍍🥝🌶️🥕🌽🥦🍆🫑🔥🌊🌿🌸🌺🌻🌼🌷💐🌈☀️⭐🌙💫✨⚡💎🔮🎈🎀🧊❄️🎯🎨🎭🎪🎠🎡🎢🏀🏈⚽🎾🎱🧩🪁🛸🚀💊🧬🦠🔬🧪🎵🎶🔔💡🔦🏮🪔🎃👾🤖👽🦋🐝🐞🌵🍄🌴🥀🪷🪻"
|
|
16
19
|
BASH_BIN="/bin/bash"
|
|
17
20
|
|
|
@@ -55,17 +58,38 @@ archive_viewer() {
|
|
|
55
58
|
|
|
56
59
|
# --- Tmux setup ---
|
|
57
60
|
ARCHIVE_CMD="SESSION=$SESSION; ARCHIVE_DIR=$ARCHIVE_DIR; $(declare -f archive_viewer); archive_viewer"
|
|
61
|
+
PANEL_CMD="while true; do $PYTHON_BIN $PANEL_SCRIPT; done"
|
|
62
|
+
|
|
63
|
+
ensure_panel_window() {
|
|
64
|
+
if ! tmux list-windows -t "$SESSION" -F "#{window_name}" | grep -q "^${PANEL_WINDOW}$"; then
|
|
65
|
+
# Move all windows from index 1+ up by one to make room
|
|
66
|
+
for i in $(tmux list-windows -t "$SESSION" -F "#{window_index}" | sort -rn); do
|
|
67
|
+
[[ "$i" -ge 1 ]] && tmux move-window -s "$SESSION:$i" -t "$SESSION:$((i+1))"
|
|
68
|
+
done
|
|
69
|
+
tmux new-window -d -t "$SESSION:1" -n "$PANEL_WINDOW" "$PANEL_CMD"
|
|
70
|
+
else
|
|
71
|
+
# Check if panel process died and respawn if needed
|
|
72
|
+
local panel_pane=$(tmux list-windows -t "$SESSION" -F "#{window_name} #{pane_id}" | grep "^${PANEL_WINDOW} " | awk '{print $2}')
|
|
73
|
+
if [[ -n "$panel_pane" ]] && ! tmux display -t "$panel_pane" -p "#{pane_pid}" >/dev/null 2>&1; then
|
|
74
|
+
tmux respawn-window -t "$SESSION:$PANEL_WINDOW" -k "$PANEL_CMD"
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
}
|
|
58
78
|
|
|
59
79
|
if ! tmux has-session -t "$SESSION" 2>/dev/null; then
|
|
60
80
|
tmux new-session -d -s "$SESSION" -n "$ARCHIVE_WINDOW" "$ARCHIVE_CMD"
|
|
81
|
+
tmux new-window -d -t "$SESSION:1" -n "$PANEL_WINDOW" "$PANEL_CMD"
|
|
61
82
|
elif ! tmux list-windows -t "$SESSION" -F "#{window_name}" | grep -q "^${ARCHIVE_WINDOW}$"; then
|
|
62
83
|
# Respawn ARCHIVE at index 0
|
|
63
84
|
tmux move-window -t "$SESSION" -r
|
|
64
85
|
for i in $(tmux list-windows -t "$SESSION" -F "#{window_index}" | sort -rn); do
|
|
65
|
-
# Move all other windows
|
|
66
|
-
tmux move-window -s "$SESSION:$i" -t "$SESSION:$((i+
|
|
86
|
+
# Move all other windows 2 indices up to make room for ARCHIVE and PANEL
|
|
87
|
+
tmux move-window -s "$SESSION:$i" -t "$SESSION:$((i+2))"
|
|
67
88
|
done
|
|
68
89
|
tmux new-window -d -t "$SESSION:0" -n "$ARCHIVE_WINDOW" "$ARCHIVE_CMD"
|
|
90
|
+
tmux new-window -d -t "$SESSION:1" -n "$PANEL_WINDOW" "$PANEL_CMD"
|
|
91
|
+
else
|
|
92
|
+
ensure_panel_window
|
|
69
93
|
fi
|
|
70
94
|
|
|
71
95
|
PANE=$(tmux new-window -d -t "$SESSION" -n "$WINDOW_NAME" -P -F "#{pane_id}" "cat")
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Textual-based panel for managing ClaudeSH tmux processes.
|
|
4
|
+
Displays active processes with CPU/memory graphs, allows kill/goto actions.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import subprocess
|
|
8
|
+
from collections import deque
|
|
9
|
+
from dataclasses import dataclass, field
|
|
10
|
+
|
|
11
|
+
from textual.app import App, ComposeResult
|
|
12
|
+
from textual.binding import Binding
|
|
13
|
+
from textual.containers import ScrollableContainer, Horizontal
|
|
14
|
+
from textual.widgets import Button, Static, Header, Footer
|
|
15
|
+
|
|
16
|
+
SESSION = "ClaudeSh"
|
|
17
|
+
ARCHIVE_WINDOW = "ARCHIVE"
|
|
18
|
+
PANEL_WINDOW = "PANEL"
|
|
19
|
+
CPU_HISTORY_LEN = 20
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def run_cmd(cmd: list[str]) -> str:
|
|
23
|
+
try:
|
|
24
|
+
return subprocess.check_output(cmd, stderr=subprocess.DEVNULL, text=True).strip()
|
|
25
|
+
except subprocess.CalledProcessError:
|
|
26
|
+
return ""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def get_tmux_windows() -> list[tuple[str, str]]:
|
|
30
|
+
"""Return list of (window_name, window_id) for ClaudeSH session."""
|
|
31
|
+
out = run_cmd(["tmux", "list-windows", "-t", SESSION, "-F", "#{window_name} #{window_id}"])
|
|
32
|
+
if not out:
|
|
33
|
+
return []
|
|
34
|
+
result = []
|
|
35
|
+
for line in out.splitlines():
|
|
36
|
+
parts = line.split(" ", 1)
|
|
37
|
+
if len(parts) == 2:
|
|
38
|
+
result.append((parts[0], parts[1]))
|
|
39
|
+
return result
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def extract_pid_from_name(name: str) -> int | None:
|
|
43
|
+
"""Extract trailing digits from window name as PID."""
|
|
44
|
+
digits = ""
|
|
45
|
+
for c in reversed(name):
|
|
46
|
+
if c.isdigit():
|
|
47
|
+
digits = c + digits
|
|
48
|
+
else:
|
|
49
|
+
break
|
|
50
|
+
return int(digits) if digits else None
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def get_process_stats(pid: int) -> tuple[str, float, float, str]:
|
|
54
|
+
"""Return (command, cpu_percent, memory_mb, elapsed) for a process."""
|
|
55
|
+
# Get stats separately to avoid parsing issues with command containing spaces
|
|
56
|
+
pid_str = str(pid)
|
|
57
|
+
command = run_cmd(["ps", "-o", "command=", "-p", pid_str])
|
|
58
|
+
stats = run_cmd(["ps", "-o", "%cpu=,rss=,etime=", "-p", pid_str])
|
|
59
|
+
if not stats:
|
|
60
|
+
return command, 0.0, 0.0, ""
|
|
61
|
+
parts = stats.split()
|
|
62
|
+
if len(parts) >= 3:
|
|
63
|
+
try:
|
|
64
|
+
cpu = float(parts[0])
|
|
65
|
+
mem_mb = float(parts[1]) / 1024
|
|
66
|
+
elapsed = parts[2].strip()
|
|
67
|
+
return command, cpu, mem_mb, elapsed
|
|
68
|
+
except ValueError:
|
|
69
|
+
pass
|
|
70
|
+
return command, 0.0, 0.0, ""
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def kill_process(pid: int):
|
|
74
|
+
"""Kill a process by PID."""
|
|
75
|
+
subprocess.run(["kill", "-9", str(pid)], check=False)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def goto_window(window_id: str):
|
|
79
|
+
"""Switch to a tmux window."""
|
|
80
|
+
run_cmd(["tmux", "select-window", "-t", window_id])
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
@dataclass
|
|
84
|
+
class ProcessInfo:
|
|
85
|
+
pid: int
|
|
86
|
+
window_id: str
|
|
87
|
+
emoji: str
|
|
88
|
+
command: str = ""
|
|
89
|
+
elapsed: str = ""
|
|
90
|
+
cpu_history: deque = field(default_factory=lambda: deque(maxlen=CPU_HISTORY_LEN))
|
|
91
|
+
cpu_pct: float = 0.0
|
|
92
|
+
memory_mb: float = 0.0
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class CpuGraph(Static):
|
|
96
|
+
"""Mini sparkline graph for CPU usage with percentage."""
|
|
97
|
+
|
|
98
|
+
def __init__(self, proc: ProcessInfo, **kwargs):
|
|
99
|
+
super().__init__(**kwargs)
|
|
100
|
+
self.proc = proc
|
|
101
|
+
|
|
102
|
+
def render(self) -> str:
|
|
103
|
+
blocks = "▁▂▃▄▅▆▇█"
|
|
104
|
+
if not self.proc.cpu_history:
|
|
105
|
+
graph = "▁" * CPU_HISTORY_LEN
|
|
106
|
+
else:
|
|
107
|
+
max_val = max(self.proc.cpu_history) or 100
|
|
108
|
+
graph = "".join(
|
|
109
|
+
blocks[min(int(v / max_val * 7), 7)] for v in self.proc.cpu_history
|
|
110
|
+
).ljust(CPU_HISTORY_LEN, "▁")
|
|
111
|
+
return f"{graph} {self.proc.cpu_pct:5.1f}%"
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class MemoryBar(Static):
|
|
115
|
+
"""Memory usage bar."""
|
|
116
|
+
|
|
117
|
+
def __init__(self, proc: ProcessInfo, **kwargs):
|
|
118
|
+
super().__init__(**kwargs)
|
|
119
|
+
self.proc = proc
|
|
120
|
+
|
|
121
|
+
def render(self) -> str:
|
|
122
|
+
filled = min(int(self.proc.memory_mb / 1024 * 10), 10)
|
|
123
|
+
bar = "█" * filled + "░" * (10 - filled)
|
|
124
|
+
return f"[{bar}] {self.proc.memory_mb:.0f}MB"
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class ProcessRow(Static):
|
|
128
|
+
"""A row displaying one process with controls."""
|
|
129
|
+
|
|
130
|
+
DEFAULT_CSS = """
|
|
131
|
+
ProcessRow {
|
|
132
|
+
height: auto;
|
|
133
|
+
padding: 1;
|
|
134
|
+
border: solid $primary;
|
|
135
|
+
margin-bottom: 1;
|
|
136
|
+
}
|
|
137
|
+
ProcessRow:focus {
|
|
138
|
+
border: double $accent;
|
|
139
|
+
background: $surface-lighten-1;
|
|
140
|
+
}
|
|
141
|
+
ProcessRow .row-header { height: 3; width: 100%; }
|
|
142
|
+
ProcessRow .pid-label { width: 20; }
|
|
143
|
+
ProcessRow .elapsed { width: 15; color: $accent; }
|
|
144
|
+
ProcessRow .command-display { height: 1; padding-left: 2; color: $text-muted; }
|
|
145
|
+
ProcessRow .stats-row { height: 1; width: 100%; margin-top: 1; }
|
|
146
|
+
ProcessRow .cpu-label { width: 5; color: $success; }
|
|
147
|
+
ProcessRow .cpu-graph { width: 28; color: $success; }
|
|
148
|
+
ProcessRow .mem-label { width: 5; color: $warning; }
|
|
149
|
+
ProcessRow .mem-bar { width: 25; color: $warning; }
|
|
150
|
+
ProcessRow Button { min-width: 10; height: 3; }
|
|
151
|
+
ProcessRow .kill-btn { margin-left: 2; }
|
|
152
|
+
ProcessRow .goto-btn { margin-left: 1; }
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
can_focus = True
|
|
156
|
+
|
|
157
|
+
def __init__(self, proc: ProcessInfo, **kwargs):
|
|
158
|
+
super().__init__(**kwargs)
|
|
159
|
+
self.proc = proc
|
|
160
|
+
|
|
161
|
+
def compose(self) -> ComposeResult:
|
|
162
|
+
with Horizontal(classes="row-header"):
|
|
163
|
+
yield Static(f"{self.proc.emoji} PID {self.proc.pid}", classes="pid-label")
|
|
164
|
+
yield Static(f"⏱ {self.proc.elapsed}", classes="elapsed", id=f"elapsed-{self.proc.pid}")
|
|
165
|
+
yield Button("✕ Kill", id=f"kill-{self.proc.pid}", classes="kill-btn", variant="error")
|
|
166
|
+
yield Button("→ Go", id=f"goto-{self.proc.pid}", classes="goto-btn", variant="primary")
|
|
167
|
+
|
|
168
|
+
yield Static(f" {self.proc.command[:150] or '(no command)'}", classes="command-display")
|
|
169
|
+
|
|
170
|
+
with Horizontal(classes="stats-row"):
|
|
171
|
+
yield Static("CPU:", classes="cpu-label")
|
|
172
|
+
yield CpuGraph(self.proc, classes="cpu-graph", id=f"cpu-{self.proc.pid}")
|
|
173
|
+
yield Static(" MEM:", classes="mem-label")
|
|
174
|
+
yield MemoryBar(self.proc, classes="mem-bar", id=f"mem-{self.proc.pid}")
|
|
175
|
+
|
|
176
|
+
def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
177
|
+
btn_id = event.button.id or ""
|
|
178
|
+
if btn_id.startswith("kill-"):
|
|
179
|
+
kill_process(self.proc.pid)
|
|
180
|
+
self.app.refresh_processes()
|
|
181
|
+
elif btn_id.startswith("goto-"):
|
|
182
|
+
goto_window(self.proc.window_id)
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class ClaudePanel(App):
|
|
186
|
+
"""Main panel application for ClaudeSH process management."""
|
|
187
|
+
|
|
188
|
+
TITLE = "ClaudeSH Panel"
|
|
189
|
+
CSS = """
|
|
190
|
+
Screen { background: $surface; }
|
|
191
|
+
#container { height: 100%; }
|
|
192
|
+
#no-processes { text-align: center; padding: 5; color: $text-muted; }
|
|
193
|
+
"""
|
|
194
|
+
|
|
195
|
+
BINDINGS = [
|
|
196
|
+
Binding("q", "quit", "Quit"),
|
|
197
|
+
Binding("r", "refresh", "Refresh"),
|
|
198
|
+
Binding("j", "next", "Next", show=False),
|
|
199
|
+
Binding("k", "prev", "Prev", show=False),
|
|
200
|
+
Binding("down", "next", "Next"),
|
|
201
|
+
Binding("up", "prev", "Prev"),
|
|
202
|
+
Binding("x", "kill_focused", "Kill"),
|
|
203
|
+
Binding("g", "goto_focused", "Go To"),
|
|
204
|
+
Binding("enter", "goto_focused", "Go To", show=False),
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
def __init__(self):
|
|
208
|
+
super().__init__()
|
|
209
|
+
self.processes: dict[int, ProcessInfo] = {}
|
|
210
|
+
self._ui_built = False
|
|
211
|
+
|
|
212
|
+
def compose(self) -> ComposeResult:
|
|
213
|
+
yield Header()
|
|
214
|
+
yield ScrollableContainer(id="container")
|
|
215
|
+
yield Footer()
|
|
216
|
+
|
|
217
|
+
def on_mount(self) -> None:
|
|
218
|
+
self.call_after_refresh(self.refresh_processes)
|
|
219
|
+
self.set_interval(1.0, self.update_stats)
|
|
220
|
+
self.set_interval(2.0, self.refresh_processes)
|
|
221
|
+
|
|
222
|
+
def refresh_processes(self) -> None:
|
|
223
|
+
"""Refresh the list of processes from tmux."""
|
|
224
|
+
try:
|
|
225
|
+
windows = get_tmux_windows()
|
|
226
|
+
current_pids = set(self.processes.keys())
|
|
227
|
+
new_pids = set()
|
|
228
|
+
|
|
229
|
+
for name, wid in windows:
|
|
230
|
+
if name in (ARCHIVE_WINDOW, PANEL_WINDOW):
|
|
231
|
+
continue
|
|
232
|
+
pid = extract_pid_from_name(name)
|
|
233
|
+
if pid is None:
|
|
234
|
+
continue
|
|
235
|
+
new_pids.add(pid)
|
|
236
|
+
|
|
237
|
+
if pid not in self.processes:
|
|
238
|
+
emoji = name[0] if name else "?"
|
|
239
|
+
cmd, cpu, mem, elapsed = get_process_stats(pid)
|
|
240
|
+
self.processes[pid] = ProcessInfo(
|
|
241
|
+
pid=pid, window_id=wid, emoji=emoji,
|
|
242
|
+
command=cmd, elapsed=elapsed, cpu_pct=cpu, memory_mb=mem,
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
for pid in current_pids - new_pids:
|
|
246
|
+
del self.processes[pid]
|
|
247
|
+
|
|
248
|
+
if new_pids != current_pids or not self._ui_built:
|
|
249
|
+
self._ui_built = True
|
|
250
|
+
self.rebuild_ui()
|
|
251
|
+
except Exception:
|
|
252
|
+
pass
|
|
253
|
+
|
|
254
|
+
def rebuild_ui(self) -> None:
|
|
255
|
+
"""Rebuild the process list UI."""
|
|
256
|
+
try:
|
|
257
|
+
container = self.query_one("#container", ScrollableContainer)
|
|
258
|
+
container.remove_children()
|
|
259
|
+
|
|
260
|
+
if not self.processes:
|
|
261
|
+
container.mount(Static("No active processes", id="no-processes"))
|
|
262
|
+
else:
|
|
263
|
+
for pid in sorted(self.processes.keys()):
|
|
264
|
+
container.mount(ProcessRow(self.processes[pid], id=f"row-{pid}"))
|
|
265
|
+
rows = self.query("ProcessRow")
|
|
266
|
+
if rows:
|
|
267
|
+
rows.first().focus()
|
|
268
|
+
except Exception:
|
|
269
|
+
pass
|
|
270
|
+
|
|
271
|
+
def update_stats(self) -> None:
|
|
272
|
+
"""Update CPU/memory/elapsed stats for all processes."""
|
|
273
|
+
try:
|
|
274
|
+
for pid, proc in list(self.processes.items()):
|
|
275
|
+
_, cpu, mem, elapsed = get_process_stats(pid)
|
|
276
|
+
proc.cpu_history.append(cpu)
|
|
277
|
+
proc.cpu_pct = cpu
|
|
278
|
+
proc.memory_mb = mem
|
|
279
|
+
proc.elapsed = elapsed
|
|
280
|
+
|
|
281
|
+
try:
|
|
282
|
+
self.query_one(f"#cpu-{pid}").refresh()
|
|
283
|
+
self.query_one(f"#mem-{pid}").refresh()
|
|
284
|
+
self.query_one(f"#elapsed-{pid}", Static).update(f"⏱ {elapsed}")
|
|
285
|
+
except Exception:
|
|
286
|
+
pass
|
|
287
|
+
except Exception:
|
|
288
|
+
pass
|
|
289
|
+
|
|
290
|
+
def action_refresh(self) -> None:
|
|
291
|
+
self.refresh_processes()
|
|
292
|
+
|
|
293
|
+
def action_next(self) -> None:
|
|
294
|
+
self.screen.focus_next("ProcessRow")
|
|
295
|
+
|
|
296
|
+
def action_prev(self) -> None:
|
|
297
|
+
self.screen.focus_previous("ProcessRow")
|
|
298
|
+
|
|
299
|
+
def action_kill_focused(self) -> None:
|
|
300
|
+
if isinstance(self.focused, ProcessRow):
|
|
301
|
+
kill_process(self.focused.proc.pid)
|
|
302
|
+
self.refresh_processes()
|
|
303
|
+
|
|
304
|
+
def action_goto_focused(self) -> None:
|
|
305
|
+
if isinstance(self.focused, ProcessRow):
|
|
306
|
+
goto_window(self.focused.proc.window_id)
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
def main():
|
|
310
|
+
ClaudePanel().run()
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
if __name__ == "__main__":
|
|
314
|
+
main()
|
|
@@ -53228,7 +53228,7 @@ def _extract_archive_via_pyunpack(archive_path, folder_path):
|
|
|
53228
53228
|
pip_import('patoolib')
|
|
53229
53229
|
|
|
53230
53230
|
filetype=get_file_extension(archive_path)
|
|
53231
|
-
supported_filetypes='zip jar rar tar gz 7z deb ace alz a arc arj bz2 cab Z cpio dms lrz lha lzh lz lzma lzo rpm rz xz zoo'.lower().split()
|
|
53231
|
+
supported_filetypes='zip jar rar tar gz 7z deb ace alz a arc arj bz2 cab Z cpio dms lrz lha lzh lz lzma lzo rpm rz xz zoo pptx'.lower().split()
|
|
53232
53232
|
assert filetype.lower() in supported_filetypes, 'Sorry, but I dont know how to unpack/extract/unzip etc the given filetype .'+filetype+'\n\tSupported filetypes: '+' '.join(sorted(set(supported_filetypes)))
|
|
53233
53233
|
|
|
53234
53234
|
from pyunpack import Archive
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1371
|
rp-0.1.1371/version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1371
|
rp-0.1.1369/rp/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1369
|
rp-0.1.1369/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1369
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|