rp 0.1.1386__tar.gz → 0.1.1387__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.1386 → rp-0.1.1387}/PKG-INFO +1 -1
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/media_to_slides.py +36 -3
- {rp-0.1.1386 → rp-0.1.1387}/rp/r.py +108 -2
- rp-0.1.1387/rp/version.py +1 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/PKG-INFO +1 -1
- rp-0.1.1387/version.py +1 -0
- rp-0.1.1386/rp/version.py +0 -1
- rp-0.1.1386/version.py +0 -1
- {rp-0.1.1386 → rp-0.1.1387}/.gitignore +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/QuickPython.iml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/QuickPython.time +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/encodings.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/inspectionProfiles/Project_Default.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/misc.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/modules.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/vcs.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.idea/workspace.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.publish.sh.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.setup.py.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/.update_module_paths.py.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/LICENSE.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/README +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/Scrap +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/aoisdasd +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/increment_version.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/oijio +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/publish.sh +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/pyqtconsoletest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/documentation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/Pyperclip.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/debug_comment.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/draw_code_minimap.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/graveyard.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/_compatibility.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/cache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/file_io.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/grammar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/normalizer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/pgen2/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/pgen2/generator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/pgen2/grammar_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/diff.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/errors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar26.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar27.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar310.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar311.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar312.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar33.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar34.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar35.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar36.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar37.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar38.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/grammar39.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/pep8.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/prefix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/token.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/tokenize.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/python/tree.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/tree.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/parso/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/peepdis/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/peepdis/core.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/peepdis/datastructures.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/peepdis/legacy.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/peepdis/preferences.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/convert_pptx_videos_to_gifs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/convert_tmux.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/google_slides_upload.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint/pptx_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/powerpoint_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/profile_vim_plugins.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pw_crypt.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/bindings/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/bindings/flann_ctypes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/exceptions.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/index.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/binary_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/dat_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/hdf5_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/io/npy_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/util/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyflann/util/weave_tools.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/__version__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/app.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/cli.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/cli_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/config_error.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/config_transformer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/validators/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/config/validators/options.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/logging.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/autocomplete/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/autocomplete/autocomplete_listener.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/common/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/common/jsonpath/JSONPathLexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/common/jsonpath/JSONPathListener.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/common/jsonpath/JSONPathParser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/common/jsonpath/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/io/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/io/datasource.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/model/model.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/service/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/service/client.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/service/dispatcher.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/common/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/common/popup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/common/selectable_text.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/autocomplete_popup/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/help_bar/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/help_bar/help_bar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/help_page/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/help_page/detailed_help_page.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/json_browser/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/json_browser/json_browser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/json_browser/json_browser_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/query_bar/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/query_bar/query_bar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/query_bar/query_bar_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/array_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/array_end_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/array_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/array_start_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/array/array_unexpanded_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_composite_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_composite_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_listbox.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_listwalker.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_simple_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/json_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/node_factory.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/object_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/object_end_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/object_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/object_start_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/object/object_unexpanded_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/boolean.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/generic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/integer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/null.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/numeric.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/primitive/string.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/json_lib/selector/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/keymapper/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/keymapper/abstract_component_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/keymapper/keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/keymapper/keymapper_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/keymapper/keymapper_config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/theme/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/theme/theme.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/theme/theme_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/theme/theme_config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/view_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/view_frame.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/view_manager.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pynput_recorder.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pypi_inspection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/pytorch_module_explorer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/refactor/string_format/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/refactor/string_format/format_to_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/refactor/string_format/fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/refactor/string_format/test_format_to_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/refactor/string_format/test_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/rp_black_macchiato.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/stamp_tensor.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/stdin_python_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/canvas.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/colors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/console.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/funcs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/nbinput.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/shapes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/graphics/graphics/sprite.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/letters.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tetris/tetrisShapes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/argparser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/meta.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/ansi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/ansi_methods.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/ascii.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/method.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/methods/sixel.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/timg/renderer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/torch_hooks.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/torch_tools.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tracetraptest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/tweenline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/libs/webeval_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/list_of_modules.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/Todo +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/blm.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/chainsaw.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/claude_bash.sh +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/claude_panel.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/death_of_the_mind.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/flappy.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/mario.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/matrix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/mpi_untitled.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/py2048.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/pychess.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/rp_logo.svg +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/rp_mpi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/ryan_zshrc.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/shotgun.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/skia_trail_interactive_paint_demo.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/snake.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/sudoku.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/tetris.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/misc/trans.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/application.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/auto_suggest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/buffer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/buffer_mapping.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/cache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/clipboard/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/clipboard/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/clipboard/in_memory.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/clipboard/pyperclip.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/completers/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/completers/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/completers/filesystem.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/completers/system.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/compiler.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/lexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/regex_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/regular_languages/validation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/telnet/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/telnet/application.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/telnet/log.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/telnet/protocol.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/telnet/server.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/validators/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/contrib/validators/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/document.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/enums.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/asyncio_base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/asyncio_posix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/asyncio_win32.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/callbacks.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/inputhook.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/posix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/posix_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/select.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/eventloop/win32.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/filters/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/filters/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/filters/cli.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/filters/types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/filters/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/history.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/interface.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/basic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/emacs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/named_commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/scroll.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/bindings/vi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/defaults.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/digraphs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/input_processor.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/manager.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/registry.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/key_binding/vi_state.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/keys.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/containers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/controls.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/dimension.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/lexers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/margins.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/menus.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/mouse_handlers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/processors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/prompt.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/screen.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/toolbars.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/untitled.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/layout/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/mouse_events.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/reactive.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/renderer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/search_state.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/shortcuts.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/defaults.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/from_dict.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/from_pygments.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/styles/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/conemu_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/vt100_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/vt100_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/win32_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/terminal/win32_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/token.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/validation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/prompt_toolkit/win32_types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/ast_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/async_analyzer_base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/async_jedi_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/backslash_commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/bash_completer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/bash_extract.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/bash_inline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/bash_rename.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/bash_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/completer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/completer_old.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/completion_ranker.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/completion_schema.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/completion_types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/eventloop.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/filters.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/history_browser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/ipython.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/jedi_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/jedi_lexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/jedi_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/key_bindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/layout.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/patch_linecache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/path_completer_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/prompt_style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/python_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/r_iterm_comm.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/refactor_extract.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/refactor_inline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/refactor_move.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/refactor_move_bash.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/refactor_rename.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/repl.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/completers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/completion_hints.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/grammar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/key_bindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/layout.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/rp_ptpdb/toolbars.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/selection_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/testable_keybindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/treesitter_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/treesitter_semantic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/unreachable_detector.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/rp_ptpython/validator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/ryan_vimrc.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp/web_evaluator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/SOURCES.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/dependency_links.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/entry_points.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/requires.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/rp.egg-info/top_level.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/setup.cfg +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/setup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/untitled.c +0 -0
- {rp-0.1.1386 → rp-0.1.1387}/update_module_paths.py +0 -0
|
@@ -275,6 +275,26 @@ def make_file_public(service, file_id: str) -> str:
|
|
|
275
275
|
return DRIVE_FILE_URL.format(file_id)
|
|
276
276
|
|
|
277
277
|
|
|
278
|
+
def _format_eta(done: int, total: int, elapsed: float) -> str:
|
|
279
|
+
"""Format ETA string based on progress and elapsed time."""
|
|
280
|
+
if done <= 0 or elapsed <= 0:
|
|
281
|
+
return ""
|
|
282
|
+
rate = done / elapsed
|
|
283
|
+
remaining = total - done
|
|
284
|
+
eta_seconds = remaining / rate
|
|
285
|
+
return f", ETA: {int(eta_seconds // 60)}m{int(eta_seconds % 60):02d}s"
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def _format_progress(index: int, total: int, done: int, total_size: int, elapsed: float, use_bytes: bool = True) -> str:
|
|
289
|
+
"""Format overall progress string."""
|
|
290
|
+
eta = _format_eta(done, total_size, elapsed)
|
|
291
|
+
if use_bytes:
|
|
292
|
+
done_str = rp.human_readable_file_size(done)
|
|
293
|
+
total_str = rp.human_readable_file_size(total_size)
|
|
294
|
+
return f"[{index}/{total}] {done_str} / {total_str}{eta}"
|
|
295
|
+
return f"[{index}/{total}]{eta}"
|
|
296
|
+
|
|
297
|
+
|
|
278
298
|
def upload_media_sequential(
|
|
279
299
|
service,
|
|
280
300
|
file_paths: list[str],
|
|
@@ -282,14 +302,22 @@ def upload_media_sequential(
|
|
|
282
302
|
) -> list[dict]:
|
|
283
303
|
"""Upload multiple media files sequentially with progress bars."""
|
|
284
304
|
results = []
|
|
305
|
+
total_bytes = sum(rp.get_file_size(fp) for fp in file_paths)
|
|
306
|
+
uploaded_bytes = 0
|
|
307
|
+
start_time = time.time()
|
|
285
308
|
|
|
286
|
-
for fp in file_paths:
|
|
309
|
+
for i, fp in enumerate(file_paths):
|
|
287
310
|
size = rp.get_file_size(fp)
|
|
311
|
+
elapsed = time.time() - start_time
|
|
312
|
+
progress_str = _format_progress(i + 1, len(file_paths), uploaded_bytes, total_bytes, elapsed)
|
|
313
|
+
rp.fansi_print(f" {progress_str}", "cyan")
|
|
314
|
+
|
|
288
315
|
pbar = tqdm(
|
|
289
316
|
total=size,
|
|
290
317
|
desc=rp.get_file_name(fp),
|
|
291
318
|
unit="B",
|
|
292
319
|
unit_scale=True,
|
|
320
|
+
leave=False,
|
|
293
321
|
)
|
|
294
322
|
last_progress = [0]
|
|
295
323
|
|
|
@@ -299,7 +327,9 @@ def upload_media_sequential(
|
|
|
299
327
|
last_progress[0] = current
|
|
300
328
|
|
|
301
329
|
result = upload_media(service, fp, folder_id, progress_cb)
|
|
330
|
+
pbar.update(size - last_progress[0]) # Ensure 100%
|
|
302
331
|
pbar.close()
|
|
332
|
+
uploaded_bytes += size
|
|
303
333
|
rp.fansi_print(f" Uploaded: {result['webViewLink']}", "green")
|
|
304
334
|
results.append(result)
|
|
305
335
|
|
|
@@ -720,9 +750,12 @@ def media_to_slides(
|
|
|
720
750
|
path_to_media = dict(zip(all_paths, media))
|
|
721
751
|
|
|
722
752
|
rp.fansi_print("\nMaking files publicly accessible...", "cyan")
|
|
723
|
-
|
|
753
|
+
start_time = time.time()
|
|
754
|
+
for i, m in enumerate(media):
|
|
755
|
+
elapsed = time.time() - start_time
|
|
756
|
+
progress_str = _format_progress(i + 1, len(media), i, len(media), elapsed, use_bytes=False)
|
|
757
|
+
rp.fansi_print(f" {progress_str} {m['name']}", "cyan")
|
|
724
758
|
make_file_public(drive_service, m["id"])
|
|
725
|
-
rp.fansi_print(f" {m['name']}: public", "green")
|
|
726
759
|
|
|
727
760
|
# Build slides_data for create_slides_with_media_grid
|
|
728
761
|
slides_data = []
|
|
@@ -42789,9 +42789,10 @@ def _get_video_file_framerate_via_ffprobe(path, use_cache=True):
|
|
|
42789
42789
|
import subprocess
|
|
42790
42790
|
import json
|
|
42791
42791
|
|
|
42792
|
-
if not 'ffprobe' in get_system_commands():
|
|
42792
|
+
if not 'ffprobe' in get_system_commands():
|
|
42793
42793
|
_ensure_ffmpeg_installed()
|
|
42794
|
-
|
|
42794
|
+
if not 'ffprobe' in get_system_commands():
|
|
42795
|
+
raise RuntimeError('rp.get_video_file_framerate: Please install ffmpeg! Unable to find the ffprobe command')
|
|
42795
42796
|
|
|
42796
42797
|
path = get_absolute_path(path) # Important for caching
|
|
42797
42798
|
if use_cache and path in _get_video_file_framerate_cache:
|
|
@@ -42828,6 +42829,111 @@ def get_video_file_framerate(path, use_cache=True):
|
|
|
42828
42829
|
except Exception:
|
|
42829
42830
|
return _get_video_file_framerate_via_ffprobe(path, use_cache)
|
|
42830
42831
|
|
|
42832
|
+
_video_has_audio_cache = {}
|
|
42833
|
+
|
|
42834
|
+
def video_has_audio(path, use_cache=True, strict=False, include_silent=True):
|
|
42835
|
+
"""
|
|
42836
|
+
Check if a video file contains an audio track.
|
|
42837
|
+
|
|
42838
|
+
Uses ffprobe (part of ffmpeg) to detect audio streams. This is fast (~60ms)
|
|
42839
|
+
and does not require loading the entire video into memory. Time is O(1)
|
|
42840
|
+
regardless of video length.
|
|
42841
|
+
|
|
42842
|
+
Args:
|
|
42843
|
+
path (str): Path to the video file
|
|
42844
|
+
use_cache (bool): If True, caches results to avoid repeated ffprobe calls.
|
|
42845
|
+
Defaults to True.
|
|
42846
|
+
strict (bool): If False, corrupted or invalid video files return False.
|
|
42847
|
+
If True, raises RuntimeError on ffprobe failure.
|
|
42848
|
+
Defaults to False.
|
|
42849
|
+
include_silent (bool): If True, returns True even if the video has an audio track
|
|
42850
|
+
but that audio track has no audible audio.
|
|
42851
|
+
If False, returns True only if there is audible audio.
|
|
42852
|
+
Defaults to True.
|
|
42853
|
+
|
|
42854
|
+
Returns:
|
|
42855
|
+
bool: True if the video has an audio stream (or non-silent audio if include_silent=False)
|
|
42856
|
+
|
|
42857
|
+
Raises:
|
|
42858
|
+
FileNotFoundError: If the video file does not exist
|
|
42859
|
+
RuntimeError: If ffprobe fails or ffmpeg is not installed (only when strict=True)
|
|
42860
|
+
|
|
42861
|
+
EXAMPLE:
|
|
42862
|
+
>>> video_has_audio('/Users/ryan/Downloads/12071694.mp4')
|
|
42863
|
+
True
|
|
42864
|
+
>>> video_has_audio('/Users/ryan/Downloads/000000.mp4')
|
|
42865
|
+
False
|
|
42866
|
+
|
|
42867
|
+
See Also:
|
|
42868
|
+
- is_video_file: Check if a file is a video
|
|
42869
|
+
- is_sound_file: Check if a file is an audio file
|
|
42870
|
+
- get_video_file_framerate: Get framerate of a video
|
|
42871
|
+
"""
|
|
42872
|
+
import subprocess
|
|
42873
|
+
|
|
42874
|
+
if not 'ffprobe' in get_system_commands():
|
|
42875
|
+
_ensure_ffmpeg_installed()
|
|
42876
|
+
if not 'ffprobe' in get_system_commands():
|
|
42877
|
+
raise RuntimeError('rp.video_has_audio: Please install ffmpeg! Unable to find the ffprobe command')
|
|
42878
|
+
|
|
42879
|
+
path = get_absolute_path(path)
|
|
42880
|
+
|
|
42881
|
+
if not file_exists(path):
|
|
42882
|
+
raise FileNotFoundError("Video file not found: " + path)
|
|
42883
|
+
|
|
42884
|
+
# Cache key includes include_silent flag
|
|
42885
|
+
cache_key = (path, include_silent)
|
|
42886
|
+
if use_cache and cache_key in _video_has_audio_cache:
|
|
42887
|
+
return _video_has_audio_cache[cache_key]
|
|
42888
|
+
|
|
42889
|
+
# When include_silent=True, check for stream existence (index)
|
|
42890
|
+
# When include_silent=False, check bitrate to detect silent tracks (<5kbps = silent)
|
|
42891
|
+
if include_silent:
|
|
42892
|
+
select_streams = "a"
|
|
42893
|
+
show_entries = "stream=index"
|
|
42894
|
+
output_format = "csv=p=0"
|
|
42895
|
+
else:
|
|
42896
|
+
select_streams = "a:0"
|
|
42897
|
+
show_entries = "stream=bit_rate"
|
|
42898
|
+
output_format = "default=noprint_wrappers=1:nokey=1"
|
|
42899
|
+
|
|
42900
|
+
result = subprocess.run(
|
|
42901
|
+
["ffprobe", "-v", "error", "-select_streams", select_streams,
|
|
42902
|
+
"-show_entries", show_entries, "-of", output_format, path],
|
|
42903
|
+
capture_output=True,
|
|
42904
|
+
text=True,
|
|
42905
|
+
)
|
|
42906
|
+
|
|
42907
|
+
if result.returncode != 0:
|
|
42908
|
+
if strict:
|
|
42909
|
+
raise RuntimeError("ffprobe failed on " + path + ": " + result.stderr)
|
|
42910
|
+
has_audio = False
|
|
42911
|
+
elif not result.stdout.strip():
|
|
42912
|
+
has_audio = False
|
|
42913
|
+
elif include_silent:
|
|
42914
|
+
has_audio = True
|
|
42915
|
+
else:
|
|
42916
|
+
try:
|
|
42917
|
+
# >5kbps = real audio, <5kbps = silent (silent AAC compresses to ~3.7kbps)
|
|
42918
|
+
has_audio = int(result.stdout.strip()) > 5000
|
|
42919
|
+
except ValueError:
|
|
42920
|
+
# Bitrate metadata unavailable (e.g. VBR without stored bitrate, rare edge case)
|
|
42921
|
+
# Fallback methods in order of speed:
|
|
42922
|
+
# 1. packet_size (~59ms, O(1)): avg packet size >50 bytes = real audio (silent AAC ~10 bytes)
|
|
42923
|
+
# ffprobe -select_streams a:0 -show_entries packet=size -read_intervals %+#20
|
|
42924
|
+
# 2. pcm_pipe (~58ms, O(1)): pipe 0.5s of PCM, check for samples >100 amplitude
|
|
42925
|
+
# ffmpeg -i FILE -t 0.5 -f s16le -ac 1 -ar 8000 - | check for non-zero
|
|
42926
|
+
# 3. volumedetect (~104ms, O(1) with -t): check max_volume > -80dB
|
|
42927
|
+
# ffmpeg -i FILE -t 0.5 -af volumedetect -f null /dev/null
|
|
42928
|
+
# NOTE: without -t flag this would be O(n) - must decode entire audio
|
|
42929
|
+
fansi_print("WARNING: video_has_audio: bitrate unavailable for " + path + ", assuming has audio", "yellow")
|
|
42930
|
+
has_audio = True
|
|
42931
|
+
|
|
42932
|
+
if use_cache:
|
|
42933
|
+
_video_has_audio_cache[cache_key] = has_audio
|
|
42934
|
+
|
|
42935
|
+
return has_audio
|
|
42936
|
+
|
|
42831
42937
|
|
|
42832
42938
|
#UNCOMMENT ONCE I USE SMART_OPEN SOMEWHERE
|
|
42833
42939
|
# def _smart_open(path, mode="rb"):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1387
|
rp-0.1.1387/version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1387
|
rp-0.1.1386/rp/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1386
|
rp-0.1.1386/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1386
|
|
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
|
|
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
|
{rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rp-0.1.1386 → rp-0.1.1387}/rp/libs/pyfx/view/components/json_browser/json_browser_keymapper.py
RENAMED
|
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
|