rp 0.1.1386__tar.gz → 0.1.1388__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.1388}/PKG-INFO +1 -1
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/media_to_slides.py +45 -5
- {rp-0.1.1386 → rp-0.1.1388}/rp/r.py +108 -2
- rp-0.1.1388/rp/version.py +1 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/PKG-INFO +1 -1
- rp-0.1.1388/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.1388}/.gitignore +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/QuickPython.iml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/QuickPython.time +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/encodings.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/inspectionProfiles/Project_Default.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/misc.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/modules.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/vcs.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.idea/workspace.xml +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.publish.sh.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.setup.py.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/.update_module_paths.py.un~ +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/LICENSE.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/README +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/Scrap +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/aoisdasd +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/increment_version.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/oijio +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/publish.sh +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/pyqtconsoletest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/documentation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/Pyperclip.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/debug_comment.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/draw_code_minimap.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/graveyard.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/_compatibility.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/cache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/file_io.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/grammar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/normalizer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/pgen2/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/pgen2/generator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/pgen2/grammar_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/diff.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/errors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar26.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar27.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar310.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar311.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar312.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar33.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar34.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar35.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar36.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar37.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar38.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/grammar39.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/pep8.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/prefix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/token.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/tokenize.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/python/tree.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/tree.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/parso/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/peepdis/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/peepdis/core.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/peepdis/datastructures.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/peepdis/legacy.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/peepdis/preferences.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/convert_pptx_videos_to_gifs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/convert_tmux.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/google_slides_upload.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint/pptx_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/powerpoint_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/profile_vim_plugins.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pw_crypt.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/bindings/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/bindings/flann_ctypes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/exceptions.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/index.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/binary_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/dat_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/hdf5_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/io/npy_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/util/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyflann/util/weave_tools.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/__version__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/app.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/cli.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/cli_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/config_error.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/config_transformer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/validators/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/config/validators/options.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/logging.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/autocomplete/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/autocomplete/autocomplete_listener.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/common/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/common/jsonpath/JSONPathLexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/common/jsonpath/JSONPathListener.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/common/jsonpath/JSONPathParser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/common/jsonpath/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/io/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/io/datasource.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/model/model.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/service/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/service/client.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/service/dispatcher.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/common/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/common/popup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/common/selectable_text.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/autocomplete_popup/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/help_bar/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/help_bar/help_bar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/help_page/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/help_page/detailed_help_page.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/json_browser/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/json_browser/json_browser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/json_browser/json_browser_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/query_bar/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/query_bar/query_bar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/components/query_bar/query_bar_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/array_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/array_end_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/array_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/array_start_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/array/array_unexpanded_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_composite_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_composite_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_listbox.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_listwalker.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_simple_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/json_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/node_factory.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/object_end_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/object_end_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/object_node.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/object_start_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/object/object_unexpanded_widget.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/boolean.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/generic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/integer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/null.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/numeric.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/primitive/string.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/json_lib/selector/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/keymapper/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/keymapper/abstract_component_keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/keymapper/keymapper.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/keymapper/keymapper_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/keymapper/keymapper_config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/theme/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/theme/theme.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/theme/theme_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/theme/theme_config_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/view_config.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/view_frame.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pyfx/view/view_manager.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pynput_recorder.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pypi_inspection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/pytorch_module_explorer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/refactor/string_format/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/refactor/string_format/format_to_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/refactor/string_format/fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/refactor/string_format/test_format_to_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/refactor/string_format/test_fstring_converter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/rp_black_macchiato.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/stamp_tensor.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/stdin_python_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/canvas.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/colors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/console.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/funcs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/nbinput.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/shapes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/graphics/graphics/sprite.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/letters.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tetris/tetrisShapes.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/argparser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/meta.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/ansi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/ansi_methods.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/ascii.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/method.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/methods/sixel.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/timg/renderer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/torch_hooks.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/torch_tools.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tracetraptest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/tweenline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/libs/webeval_dataset.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/list_of_modules.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/Todo +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/blm.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/chainsaw.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/claude_bash.sh +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/claude_panel.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/death_of_the_mind.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/flappy.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/mario.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/matrix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/mpi_untitled.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/py2048.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/pychess.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/rp_logo.svg +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/rp_mpi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/ryan_zshrc.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/shotgun.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/skia_trail_interactive_paint_demo.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/snake.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/sudoku.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/tetris.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/misc/trans.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/application.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/auto_suggest.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/buffer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/buffer_mapping.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/cache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/clipboard/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/clipboard/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/clipboard/in_memory.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/clipboard/pyperclip.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/completers/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/completers/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/completers/filesystem.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/completers/system.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/compiler.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/lexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/regex_parser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/regular_languages/validation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/telnet/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/telnet/application.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/telnet/log.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/telnet/protocol.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/telnet/server.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/validators/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/contrib/validators/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/document.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/enums.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/asyncio_base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/asyncio_posix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/asyncio_win32.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/callbacks.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/inputhook.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/posix.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/posix_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/select.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/eventloop/win32.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/filters/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/filters/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/filters/cli.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/filters/types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/filters/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/history.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/interface.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/basic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/completion.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/emacs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/named_commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/scroll.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/bindings/vi.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/defaults.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/digraphs.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/input_processor.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/manager.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/registry.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/key_binding/vi_state.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/keys.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/containers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/controls.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/dimension.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/lexers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/margins.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/menus.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/mouse_handlers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/processors.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/prompt.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/screen.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/toolbars.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/untitled.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/layout/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/mouse_events.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/reactive.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/renderer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/search_state.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/shortcuts.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/defaults.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/from_dict.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/from_pygments.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/styles/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/conemu_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/vt100_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/vt100_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/win32_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/terminal/win32_output.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/token.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/validation.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/prompt_toolkit/win32_types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/__main__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/ast_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/async_analyzer_base.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/async_jedi_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/backslash_commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/bash_completer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/bash_extract.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/bash_inline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/bash_rename.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/bash_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/completer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/completer_old.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/completion_ranker.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/completion_schema.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/completion_types.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/eventloop.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/filters.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/history_browser.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/ipython.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/jedi_highlighter.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/jedi_lexer.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/jedi_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/key_bindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/layout.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/patch_linecache.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/path_completer_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/prompt_style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/python_input.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/r_iterm_comm.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/refactor_extract.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/refactor_inline.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/refactor_move.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/refactor_move_bash.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/refactor_rename.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/repl.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/__init__.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/commands.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/completers.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/completion_hints.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/grammar.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/key_bindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/layout.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/rp_ptpdb/toolbars.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/selection_utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/style.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/testable_keybindings.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/treesitter_selection.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/treesitter_semantic.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/unreachable_detector.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/utils.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/rp_ptpython/validator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/ryan_vimrc.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp/web_evaluator.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/SOURCES.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/dependency_links.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/entry_points.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/requires.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/rp.egg-info/top_level.txt +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/setup.cfg +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/setup.py +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/untitled.c +0 -0
- {rp-0.1.1386 → rp-0.1.1388}/update_module_paths.py +0 -0
|
@@ -104,6 +104,7 @@ FOLDER_URL = "https://drive.google.com/drive/folders/{}"
|
|
|
104
104
|
# Media types
|
|
105
105
|
IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".webp"}
|
|
106
106
|
VIDEO_EXTENSIONS = {".mp4", ".mov", ".avi", ".mkv", ".webm"}
|
|
107
|
+
MEDIA_EXTENSIONS = VIDEO_EXTENSIONS | IMAGE_EXTENSIONS
|
|
107
108
|
MIME_TYPES = {
|
|
108
109
|
".mp4": "video/mp4",
|
|
109
110
|
".mov": "video/quicktime",
|
|
@@ -275,6 +276,26 @@ def make_file_public(service, file_id: str) -> str:
|
|
|
275
276
|
return DRIVE_FILE_URL.format(file_id)
|
|
276
277
|
|
|
277
278
|
|
|
279
|
+
def _format_eta(done: int, total: int, elapsed: float) -> str:
|
|
280
|
+
"""Format ETA string based on progress and elapsed time."""
|
|
281
|
+
if done <= 0 or elapsed <= 0:
|
|
282
|
+
return ""
|
|
283
|
+
rate = done / elapsed
|
|
284
|
+
remaining = total - done
|
|
285
|
+
eta_seconds = remaining / rate
|
|
286
|
+
return f", ETA: {int(eta_seconds // 60)}m{int(eta_seconds % 60):02d}s"
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
def _format_progress(index: int, total: int, done: int, total_size: int, elapsed: float, use_bytes: bool = True) -> str:
|
|
290
|
+
"""Format overall progress string."""
|
|
291
|
+
eta = _format_eta(done, total_size, elapsed)
|
|
292
|
+
if use_bytes:
|
|
293
|
+
done_str = rp.human_readable_file_size(done)
|
|
294
|
+
total_str = rp.human_readable_file_size(total_size)
|
|
295
|
+
return f"[{index}/{total}] {done_str} / {total_str}{eta}"
|
|
296
|
+
return f"[{index}/{total}]{eta}"
|
|
297
|
+
|
|
298
|
+
|
|
278
299
|
def upload_media_sequential(
|
|
279
300
|
service,
|
|
280
301
|
file_paths: list[str],
|
|
@@ -282,14 +303,22 @@ def upload_media_sequential(
|
|
|
282
303
|
) -> list[dict]:
|
|
283
304
|
"""Upload multiple media files sequentially with progress bars."""
|
|
284
305
|
results = []
|
|
306
|
+
total_bytes = sum(rp.get_file_size(fp) for fp in file_paths)
|
|
307
|
+
uploaded_bytes = 0
|
|
308
|
+
start_time = time.time()
|
|
285
309
|
|
|
286
|
-
for fp in file_paths:
|
|
310
|
+
for i, fp in enumerate(file_paths):
|
|
287
311
|
size = rp.get_file_size(fp)
|
|
312
|
+
elapsed = time.time() - start_time
|
|
313
|
+
progress_str = _format_progress(i + 1, len(file_paths), uploaded_bytes, total_bytes, elapsed)
|
|
314
|
+
rp.fansi_print(f" {progress_str}", "cyan")
|
|
315
|
+
|
|
288
316
|
pbar = tqdm(
|
|
289
317
|
total=size,
|
|
290
318
|
desc=rp.get_file_name(fp),
|
|
291
319
|
unit="B",
|
|
292
320
|
unit_scale=True,
|
|
321
|
+
leave=False,
|
|
293
322
|
)
|
|
294
323
|
last_progress = [0]
|
|
295
324
|
|
|
@@ -299,7 +328,9 @@ def upload_media_sequential(
|
|
|
299
328
|
last_progress[0] = current
|
|
300
329
|
|
|
301
330
|
result = upload_media(service, fp, folder_id, progress_cb)
|
|
331
|
+
pbar.update(size - last_progress[0]) # Ensure 100%
|
|
302
332
|
pbar.close()
|
|
333
|
+
uploaded_bytes += size
|
|
303
334
|
rp.fansi_print(f" Uploaded: {result['webViewLink']}", "green")
|
|
304
335
|
results.append(result)
|
|
305
336
|
|
|
@@ -720,9 +751,12 @@ def media_to_slides(
|
|
|
720
751
|
path_to_media = dict(zip(all_paths, media))
|
|
721
752
|
|
|
722
753
|
rp.fansi_print("\nMaking files publicly accessible...", "cyan")
|
|
723
|
-
|
|
754
|
+
start_time = time.time()
|
|
755
|
+
for i, m in enumerate(media):
|
|
756
|
+
elapsed = time.time() - start_time
|
|
757
|
+
progress_str = _format_progress(i + 1, len(media), i, len(media), elapsed, use_bytes=False)
|
|
758
|
+
rp.fansi_print(f" {progress_str} {m['name']}", "cyan")
|
|
724
759
|
make_file_public(drive_service, m["id"])
|
|
725
|
-
rp.fansi_print(f" {m['name']}: public", "green")
|
|
726
760
|
|
|
727
761
|
# Build slides_data for create_slides_with_media_grid
|
|
728
762
|
slides_data = []
|
|
@@ -835,8 +869,8 @@ def cli(
|
|
|
835
869
|
paths Media files, folders, or glob patterns (e.g., "*.png")
|
|
836
870
|
|
|
837
871
|
Options:
|
|
838
|
-
--name NAME Presentation name (default: auto-generated timestamp)
|
|
839
|
-
--folder_name NAME Google Drive folder name (default:
|
|
872
|
+
--name NAME Presentation name (default: same as --title, or auto-generated timestamp)
|
|
873
|
+
--folder_name NAME Google Drive folder name (default: same as --name)
|
|
840
874
|
--title TITLE Slide title (applies to all slides)
|
|
841
875
|
--captions Use filenames as captions for each media item
|
|
842
876
|
--label_position POS Label position: 'top' (default) or 'bottom'
|
|
@@ -875,6 +909,12 @@ def cli(
|
|
|
875
909
|
f"Supported formats: {', '.join(MEDIA_EXTENSIONS)}"
|
|
876
910
|
)
|
|
877
911
|
|
|
912
|
+
# Default name to title, and folder_name to name
|
|
913
|
+
if name is None and title is not None:
|
|
914
|
+
name = title
|
|
915
|
+
if folder_name is None and name is not None:
|
|
916
|
+
folder_name = name
|
|
917
|
+
|
|
878
918
|
# Split into grids if requested
|
|
879
919
|
if per_slide is not None:
|
|
880
920
|
media_paths = rp.split_into_sublists(media_paths, per_slide)
|
|
@@ -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
|
+
1388
|
rp-0.1.1388/version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1388
|
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.1388}/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.1388}/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
|