rp 0.1.1391__tar.gz → 0.1.1392__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.1391 → rp-0.1.1392}/PKG-INFO +1 -1
- rp-0.1.1392/rp/libs/kitten_tts_server.py +106 -0
- rp-0.1.1392/rp/libs/supertonic_tts_server.py +315 -0
- rp-0.1.1392/rp/version.py +1 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/PKG-INFO +1 -1
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/SOURCES.txt +2 -0
- rp-0.1.1392/version.py +1 -0
- rp-0.1.1391/rp/version.py +0 -1
- rp-0.1.1391/version.py +0 -1
- {rp-0.1.1391 → rp-0.1.1392}/.gitignore +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/QuickPython.iml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/QuickPython.time +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/encodings.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/inspectionProfiles/Project_Default.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/misc.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/modules.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/vcs.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.idea/workspace.xml +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.publish.sh.un~ +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.setup.py.un~ +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/.update_module_paths.py.un~ +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/LICENSE.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/README +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/Scrap +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/aoisdasd +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/increment_version.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/oijio +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/publish.sh +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/pyqtconsoletest.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/__main__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/documentation.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/Pyperclip.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/debug_comment.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/draw_code_minimap.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/graveyard.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/_compatibility.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/cache.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/file_io.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/grammar.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/normalizer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/pgen2/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/pgen2/generator.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/pgen2/grammar_parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/diff.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/errors.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar26.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar27.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar310.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar311.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar312.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar33.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar34.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar35.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar36.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar37.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar38.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/grammar39.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/pep8.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/prefix.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/token.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/tokenize.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/python/tree.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/tree.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/parso/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/peepdis/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/peepdis/core.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/peepdis/datastructures.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/peepdis/legacy.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/peepdis/preferences.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/__main__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/convert_pptx_videos_to_gifs.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/convert_tmux.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/google_slides_upload.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/media_to_slides.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint/pptx_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/powerpoint_converter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/profile_vim_plugins.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pw_crypt.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/bindings/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/bindings/flann_ctypes.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/exceptions.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/index.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/binary_dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/dat_dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/hdf5_dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/io/npy_dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/util/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyflann/util/weave_tools.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/__version__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/app.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/cli.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/cli_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/config.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/config_error.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/config_parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/config_transformer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/validators/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/config/validators/options.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/logging.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/autocomplete/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/autocomplete/autocomplete_listener.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/common/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/common/jsonpath/JSONPathLexer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/common/jsonpath/JSONPathListener.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/common/jsonpath/JSONPathParser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/common/jsonpath/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/io/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/io/datasource.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/model/model.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/service/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/service/client.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/service/dispatcher.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/common/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/common/popup.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/common/selectable_text.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/autocomplete_popup/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/autocomplete_popup/autocomplete_popup_keymapper.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/help_bar/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/help_bar/help_bar.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/help_page/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/help_page/detailed_help_page.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/json_browser/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/json_browser/json_browser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/json_browser/json_browser_keymapper.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/query_bar/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/query_bar/query_bar.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/components/query_bar/query_bar_keymapper.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/array_end_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/array_end_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/array_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/array_start_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/array/array_unexpanded_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_composite_end_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_composite_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_listbox.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_listwalker.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_simple_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/json_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/node_factory.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/object_end_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/object_end_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/object_node.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/object_start_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/object/object_unexpanded_widget.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/boolean.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/generic.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/integer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/null.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/numeric.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/primitive/string.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/json_lib/selector/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/keymapper/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/keymapper/abstract_component_keymapper.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/keymapper/keymapper.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/keymapper/keymapper_config.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/keymapper/keymapper_config_parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/theme/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/theme/theme.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/theme/theme_config.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/theme/theme_config_parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/view_config.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/view_frame.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pyfx/view/view_manager.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pynput_recorder.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pypi_inspection.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/pytorch_module_explorer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/refactor/string_format/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/refactor/string_format/format_to_fstring_converter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/refactor/string_format/fstring_converter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/refactor/string_format/test_format_to_fstring_converter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/refactor/string_format/test_fstring_converter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/rp_black_macchiato.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/stamp_tensor.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/stdin_python_highlighter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/__main__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/canvas.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/colors.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/console.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/funcs.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/nbinput.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/shapes.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/graphics/graphics/sprite.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/letters.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tetris/tetrisShapes.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/__main__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/argparser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/meta.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/ansi.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/ansi_methods.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/ascii.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/method.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/methods/sixel.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/timg/renderer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/torch_hooks.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/torch_tools.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tracetraptest.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/tweenline.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/libs/webeval_dataset.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/list_of_modules.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/Todo +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/blm.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/chainsaw.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/claude_bash.sh +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/claude_panel.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/death_of_the_mind.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/flappy.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/mario.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/matrix.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/mpi_untitled.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/py2048.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/pychess.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/rp_logo.svg +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/rp_mpi.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/ryan_zshrc.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/shotgun.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/skia_trail_interactive_paint_demo.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/snake.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/sudoku.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/tetris.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/misc/trans.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/application.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/auto_suggest.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/buffer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/buffer_mapping.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/cache.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/clipboard/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/clipboard/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/clipboard/in_memory.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/clipboard/pyperclip.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/completion.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/completers/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/completers/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/completers/filesystem.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/completers/system.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/compiler.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/completion.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/lexer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/regex_parser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/regular_languages/validation.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/telnet/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/telnet/application.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/telnet/log.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/telnet/protocol.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/telnet/server.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/validators/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/contrib/validators/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/document.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/enums.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/asyncio_base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/asyncio_posix.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/asyncio_win32.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/callbacks.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/inputhook.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/posix.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/posix_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/select.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/eventloop/win32.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/filters/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/filters/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/filters/cli.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/filters/types.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/filters/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/history.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/input.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/interface.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/basic.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/completion.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/emacs.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/named_commands.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/scroll.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/bindings/vi.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/defaults.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/digraphs.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/input_processor.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/manager.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/registry.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/key_binding/vi_state.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/keys.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/containers.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/controls.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/dimension.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/lexers.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/margins.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/menus.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/mouse_handlers.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/processors.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/prompt.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/screen.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/toolbars.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/untitled.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/layout/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/mouse_events.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/output.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/reactive.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/renderer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/search_state.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/selection.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/shortcuts.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/defaults.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/from_dict.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/from_pygments.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/styles/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/conemu_output.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/vt100_input.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/vt100_output.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/win32_input.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/terminal/win32_output.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/token.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/validation.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/prompt_toolkit/win32_types.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/r.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/__main__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/ast_selection.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/async_analyzer_base.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/async_jedi_highlighter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/backslash_commands.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/bash_completer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/bash_extract.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/bash_inline.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/bash_rename.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/bash_selection.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/completer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/completer_old.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/completion_ranker.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/completion_schema.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/completion_types.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/eventloop.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/filters.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/history_browser.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/ipython.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/jedi_highlighter.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/jedi_lexer.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/jedi_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/key_bindings.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/layout.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/patch_linecache.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/path_completer_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/prompt_style.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/python_input.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/r_iterm_comm.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/refactor_extract.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/refactor_inline.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/refactor_move.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/refactor_move_bash.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/refactor_rename.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/repl.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/__init__.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/commands.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/completers.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/completion_hints.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/grammar.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/key_bindings.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/layout.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/style.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/rp_ptpdb/toolbars.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/selection_utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/style.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/testable_keybindings.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/treesitter_selection.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/treesitter_semantic.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/unreachable_detector.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/utils.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/rp_ptpython/validator.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/ryan_vimrc.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp/web_evaluator.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/dependency_links.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/entry_points.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/requires.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/rp.egg-info/top_level.txt +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/setup.cfg +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/setup.py +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/untitled.c +0 -0
- {rp-0.1.1391 → rp-0.1.1392}/update_module_paths.py +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Kitten TTS server.
|
|
3
|
+
Usage: python -m rp.libs.kitten_tts_server run_server [--port=32462]
|
|
4
|
+
python -m rp.libs.kitten_tts_server ensure_server [--port=32462]
|
|
5
|
+
"""
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
TMUX_SESSION = 'KittenTTS'
|
|
9
|
+
DEFAULT_PORT = 32462
|
|
10
|
+
|
|
11
|
+
def _get_port_from_tmux():
|
|
12
|
+
"""Get port from tmux window name if session exists and server is responding."""
|
|
13
|
+
import rp
|
|
14
|
+
if TMUX_SESSION not in rp.tmux_get_all_session_names():
|
|
15
|
+
return None
|
|
16
|
+
# Window name contains port
|
|
17
|
+
window_name = rp.shell_command('tmux list-windows -t ' + TMUX_SESSION + ' -F "#{window_name}" 2>/dev/null').strip().split('\n')[0]
|
|
18
|
+
try:
|
|
19
|
+
port = int(window_name)
|
|
20
|
+
except (ValueError, IndexError):
|
|
21
|
+
return None
|
|
22
|
+
# Check if responding
|
|
23
|
+
if rp.shell_command('curl -s -o /dev/null -w "%{http_code}" http://localhost:' + str(port) + '/ 2>/dev/null').strip() == '200':
|
|
24
|
+
return port
|
|
25
|
+
return None
|
|
26
|
+
|
|
27
|
+
def ensure_server(port=DEFAULT_PORT):
|
|
28
|
+
"""Ensure server is running. Returns port."""
|
|
29
|
+
import rp
|
|
30
|
+
|
|
31
|
+
# Check if already running
|
|
32
|
+
existing_port = _get_port_from_tmux()
|
|
33
|
+
if existing_port:
|
|
34
|
+
return existing_port
|
|
35
|
+
|
|
36
|
+
# Kill stale session
|
|
37
|
+
if TMUX_SESSION in rp.tmux_get_all_session_names():
|
|
38
|
+
rp.tmux_kill_session(TMUX_SESSION)
|
|
39
|
+
|
|
40
|
+
# Find free port
|
|
41
|
+
port = rp.get_next_free_port(port)
|
|
42
|
+
|
|
43
|
+
# Start in tmux with window name = port
|
|
44
|
+
cmd = sys.executable + ' -m rp.libs.kitten_tts_server run_server --port=' + str(port)
|
|
45
|
+
rp.shell_command('tmux new-session -d -s ' + TMUX_SESSION + ' -n ' + str(port) + ' ' + rp.shlex.quote(cmd))
|
|
46
|
+
|
|
47
|
+
# Wait for ready
|
|
48
|
+
for _ in range(60):
|
|
49
|
+
if rp.shell_command('curl -s -o /dev/null -w "%{http_code}" http://localhost:' + str(port) + '/ 2>/dev/null').strip() == '200':
|
|
50
|
+
return port
|
|
51
|
+
rp.sleep(0.5)
|
|
52
|
+
|
|
53
|
+
raise RuntimeError('Kitten TTS server failed to start on port ' + str(port))
|
|
54
|
+
|
|
55
|
+
def run_server(port=DEFAULT_PORT):
|
|
56
|
+
"""Run the server (blocking)."""
|
|
57
|
+
import subprocess
|
|
58
|
+
# Install deps - need specific onnxruntime version for opset compatibility
|
|
59
|
+
subprocess.run([sys.executable, '-m', 'pip', 'install', '-q',
|
|
60
|
+
'https://github.com/KittenML/KittenTTS/releases/download/0.1/kittentts-0.1.0-py3-none-any.whl',
|
|
61
|
+
'fastapi', 'uvicorn', 'websockets', 'numpy', 'onnxruntime>=1.20'], stderr=subprocess.DEVNULL)
|
|
62
|
+
|
|
63
|
+
from fastapi import FastAPI, WebSocket, Query
|
|
64
|
+
from fastapi.responses import HTMLResponse
|
|
65
|
+
import uvicorn
|
|
66
|
+
from kittentts import KittenTTS
|
|
67
|
+
import numpy as np
|
|
68
|
+
|
|
69
|
+
app = FastAPI()
|
|
70
|
+
model = None
|
|
71
|
+
|
|
72
|
+
@app.on_event("startup")
|
|
73
|
+
async def load_model():
|
|
74
|
+
nonlocal model
|
|
75
|
+
print('[kitten_tts] Loading model...')
|
|
76
|
+
model = KittenTTS('KittenML/kitten-tts-nano-0.1')
|
|
77
|
+
print('[kitten_tts] Ready on port ' + str(port))
|
|
78
|
+
|
|
79
|
+
@app.get("/")
|
|
80
|
+
async def root():
|
|
81
|
+
return HTMLResponse('<h1>Kitten TTS</h1>')
|
|
82
|
+
|
|
83
|
+
@app.websocket("/stream")
|
|
84
|
+
async def stream_tts(
|
|
85
|
+
websocket: WebSocket,
|
|
86
|
+
text: str = Query(...),
|
|
87
|
+
voice: str = Query(default='expr-voice-3-f'),
|
|
88
|
+
speed: float = Query(default=1.0)
|
|
89
|
+
):
|
|
90
|
+
await websocket.accept()
|
|
91
|
+
try:
|
|
92
|
+
audio = model.generate(text, voice=voice, speed=speed)
|
|
93
|
+
audio_bytes = (audio * 32767).astype(np.int16).tobytes()
|
|
94
|
+
for i in range(0, len(audio_bytes), 9600):
|
|
95
|
+
await websocket.send_bytes(audio_bytes[i:i + 9600])
|
|
96
|
+
except Exception:
|
|
97
|
+
pass
|
|
98
|
+
await websocket.close()
|
|
99
|
+
|
|
100
|
+
uvicorn.run(app, host='0.0.0.0', port=port)
|
|
101
|
+
|
|
102
|
+
if __name__ == '__main__':
|
|
103
|
+
import rp
|
|
104
|
+
rp.pip_import('fire')
|
|
105
|
+
import fire
|
|
106
|
+
fire.Fire()
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
"""
|
|
2
|
+
SuperTonic TTS server - lightning-fast on-device TTS (66M params, 167x realtime).
|
|
3
|
+
|
|
4
|
+
USAGE:
|
|
5
|
+
python -m rp.libs.supertonic_tts_server run_server [--port=7123]
|
|
6
|
+
python -m rp.libs.supertonic_tts_server ensure_server [--port=7123]
|
|
7
|
+
|
|
8
|
+
PYTHON API:
|
|
9
|
+
import rp
|
|
10
|
+
rp.text_to_speech_via_supertonic("Hello world")
|
|
11
|
+
rp.text_to_speech_via_supertonic("Fast", speed=2.0, voice="M1", volume=1.5)
|
|
12
|
+
rp.text_to_speech_via_supertonic_set_defaults(voice="F2", speed=1.5, volume=1.0)
|
|
13
|
+
rp.text_to_speech_via_supertonic_get_defaults()
|
|
14
|
+
|
|
15
|
+
HTTP API ENDPOINTS:
|
|
16
|
+
All endpoints return JSON. Server runs on localhost:7123 by default.
|
|
17
|
+
|
|
18
|
+
GET /health
|
|
19
|
+
Health check. Returns {"status": "ok", "tts": "supertonic", "voices": [...]}
|
|
20
|
+
|
|
21
|
+
GET /defaults
|
|
22
|
+
Get current default settings.
|
|
23
|
+
Returns: {"voice": "F1", "speed": 1.5, "volume": 1.0, "steps": 5}
|
|
24
|
+
|
|
25
|
+
GET /set_defaults?voice=F1&speed=1.5&volume=1.0&steps=5
|
|
26
|
+
Set default voice, speed, volume, and/or steps (persists for all clients).
|
|
27
|
+
Parameters (all optional):
|
|
28
|
+
voice: F1-F5 (female) or M1-M5 (male)
|
|
29
|
+
speed: 0.7 to 2.0 (float)
|
|
30
|
+
volume: 0.0 to 2.0 (float, 1.0 = normal)
|
|
31
|
+
steps: 1 to 10 (int, quality - higher = better but slower)
|
|
32
|
+
Returns: {"ok": true, "defaults": {"voice": "F1", "speed": 1.5, "volume": 1.0, "steps": 5}}
|
|
33
|
+
|
|
34
|
+
GET /speak?text=Hello&voice=F1&speed=1.5&volume=1.0&steps=5
|
|
35
|
+
Synthesize and play text through speakers.
|
|
36
|
+
Parameters:
|
|
37
|
+
text: (required) Text to speak
|
|
38
|
+
voice: (optional) F1-F5 or M1-M5, defaults to server default
|
|
39
|
+
speed: (optional) 0.7-2.0, defaults to server default
|
|
40
|
+
volume: (optional) 0.0-2.0, defaults to server default
|
|
41
|
+
steps: (optional) 1-10, quality steps, defaults to server default
|
|
42
|
+
Returns: {"ok": true, "duration": 1.23, "text": "Hello", "voice": "F1", "speed": 1.5, "volume": 1.0, "steps": 5}
|
|
43
|
+
|
|
44
|
+
POST /speak
|
|
45
|
+
Same as GET but with JSON body: {"text": "Hello", "voice": "F1", "speed": 1.5, "volume": 1.0, "steps": 5}
|
|
46
|
+
|
|
47
|
+
CURL EXAMPLES:
|
|
48
|
+
# Health check
|
|
49
|
+
curl http://localhost:7123/health
|
|
50
|
+
|
|
51
|
+
# Speak text (URL-encoded)
|
|
52
|
+
curl "http://localhost:7123/speak?text=Hello%20world"
|
|
53
|
+
|
|
54
|
+
# Speak with custom voice, speed, and volume
|
|
55
|
+
curl "http://localhost:7123/speak?text=Fast%20speech&voice=M1&speed=2.0&volume=1.5"
|
|
56
|
+
|
|
57
|
+
# Set defaults for all future requests
|
|
58
|
+
curl "http://localhost:7123/set_defaults?voice=F2&speed=1.8&volume=1.0"
|
|
59
|
+
|
|
60
|
+
# Get current defaults
|
|
61
|
+
curl http://localhost:7123/defaults
|
|
62
|
+
|
|
63
|
+
# POST with JSON body
|
|
64
|
+
curl -X POST http://localhost:7123/speak -H "Content-Type: application/json" -d '{"text": "Hello"}'
|
|
65
|
+
|
|
66
|
+
VOICES:
|
|
67
|
+
Female: F1, F2, F3, F4, F5
|
|
68
|
+
Male: M1, M2, M3, M4, M5
|
|
69
|
+
|
|
70
|
+
SPEED:
|
|
71
|
+
Range: 0.7 (slow) to 2.0 (fast)
|
|
72
|
+
Default: 1.5
|
|
73
|
+
Normal speech: 1.0
|
|
74
|
+
|
|
75
|
+
VOLUME:
|
|
76
|
+
Range: 0.0 (mute) to 2.0 (loud)
|
|
77
|
+
Default: 1.0
|
|
78
|
+
Normal: 1.0
|
|
79
|
+
|
|
80
|
+
STEPS (Quality):
|
|
81
|
+
Range: 1 (fast/low quality) to 10 (slow/high quality)
|
|
82
|
+
Default: 5
|
|
83
|
+
Recommended: 3-5 for real-time, 8-10 for offline generation
|
|
84
|
+
"""
|
|
85
|
+
import sys
|
|
86
|
+
|
|
87
|
+
TMUX_SESSION = 'SuperTonicTTS'
|
|
88
|
+
DEFAULT_PORT = 7123
|
|
89
|
+
VOICES = ['F1', 'F2', 'F3', 'F4', 'F5', 'M1', 'M2', 'M3', 'M4', 'M5']
|
|
90
|
+
|
|
91
|
+
# Defaults that can be changed at runtime
|
|
92
|
+
_defaults = {
|
|
93
|
+
'voice': 'F1',
|
|
94
|
+
'speed': 1.5,
|
|
95
|
+
'volume': 1.0,
|
|
96
|
+
'steps': 5, # Quality: 1-10, higher = better quality but slower
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def set_defaults(voice=None, speed=None, volume=None, steps=None):
|
|
101
|
+
"""Set default voice, speed, volume, and steps for TTS requests."""
|
|
102
|
+
if voice is not None:
|
|
103
|
+
if voice not in VOICES:
|
|
104
|
+
raise ValueError(f'Invalid voice: {voice}. Choose from: {", ".join(VOICES)}')
|
|
105
|
+
_defaults['voice'] = voice
|
|
106
|
+
if speed is not None:
|
|
107
|
+
if not 0.7 <= speed <= 2.0:
|
|
108
|
+
raise ValueError(f'Speed must be between 0.7 and 2.0, got {speed}')
|
|
109
|
+
_defaults['speed'] = speed
|
|
110
|
+
if volume is not None:
|
|
111
|
+
if not 0.0 <= volume <= 2.0:
|
|
112
|
+
raise ValueError(f'Volume must be between 0.0 and 2.0, got {volume}')
|
|
113
|
+
_defaults['volume'] = volume
|
|
114
|
+
if steps is not None:
|
|
115
|
+
if not 1 <= steps <= 10:
|
|
116
|
+
raise ValueError(f'Steps must be between 1 and 10, got {steps}')
|
|
117
|
+
_defaults['steps'] = steps
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def get_defaults():
|
|
121
|
+
"""Get current default settings."""
|
|
122
|
+
return _defaults.copy()
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def _get_port_from_tmux():
|
|
126
|
+
"""Get port from tmux window name if session exists and server is responding."""
|
|
127
|
+
import rp
|
|
128
|
+
if TMUX_SESSION not in rp.tmux_get_all_session_names():
|
|
129
|
+
return None
|
|
130
|
+
# Window name contains port
|
|
131
|
+
window_name = rp.shell_command(
|
|
132
|
+
f'tmux list-windows -t {TMUX_SESSION} -F "#{{window_name}}" 2>/dev/null'
|
|
133
|
+
).strip().split('\n')[0]
|
|
134
|
+
try:
|
|
135
|
+
port = int(window_name)
|
|
136
|
+
except (ValueError, IndexError):
|
|
137
|
+
return None
|
|
138
|
+
# Check if responding
|
|
139
|
+
if rp.shell_command(
|
|
140
|
+
f'curl -s -o /dev/null -w "%{{http_code}}" http://localhost:{port}/health 2>/dev/null'
|
|
141
|
+
).strip() == '200':
|
|
142
|
+
return port
|
|
143
|
+
return None
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def ensure_server(port=DEFAULT_PORT):
|
|
147
|
+
"""Ensure server is running. Returns port."""
|
|
148
|
+
import rp
|
|
149
|
+
|
|
150
|
+
# Check if already running
|
|
151
|
+
existing_port = _get_port_from_tmux()
|
|
152
|
+
if existing_port:
|
|
153
|
+
return existing_port
|
|
154
|
+
|
|
155
|
+
# Kill stale session
|
|
156
|
+
if TMUX_SESSION in rp.tmux_get_all_session_names():
|
|
157
|
+
rp.tmux_kill_session(TMUX_SESSION)
|
|
158
|
+
|
|
159
|
+
# Find free port
|
|
160
|
+
port = rp.get_next_free_port(port)
|
|
161
|
+
|
|
162
|
+
# Start in tmux with window name = port
|
|
163
|
+
cmd = f'{sys.executable} -m rp.libs.supertonic_tts_server run_server --port={port}'
|
|
164
|
+
rp.shell_command(f'tmux new-session -d -s {TMUX_SESSION} -n {port} {rp.shlex.quote(cmd)}')
|
|
165
|
+
|
|
166
|
+
# Wait for ready (SuperTonic takes longer to load model)
|
|
167
|
+
print(f'[supertonic_tts] Starting server on port {port}...')
|
|
168
|
+
for i in range(120): # Up to 60 seconds
|
|
169
|
+
if rp.shell_command(
|
|
170
|
+
f'curl -s -o /dev/null -w "%{{http_code}}" http://localhost:{port}/health 2>/dev/null'
|
|
171
|
+
).strip() == '200':
|
|
172
|
+
print(f'[supertonic_tts] Server ready on port {port}')
|
|
173
|
+
return port
|
|
174
|
+
rp.sleep(0.5)
|
|
175
|
+
|
|
176
|
+
raise RuntimeError(f'SuperTonic TTS server failed to start on port {port}')
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def run_server(port=DEFAULT_PORT):
|
|
180
|
+
"""Run the server (blocking)."""
|
|
181
|
+
import rp
|
|
182
|
+
|
|
183
|
+
# Ensure dependencies are installed
|
|
184
|
+
print('[supertonic_tts] Checking dependencies...')
|
|
185
|
+
rp.pip_import('supertonic', auto_yes=True)
|
|
186
|
+
rp.pip_import('sounddevice', auto_yes=True)
|
|
187
|
+
rp.pip_import('numpy', auto_yes=True)
|
|
188
|
+
|
|
189
|
+
# Now import normally
|
|
190
|
+
import http.server
|
|
191
|
+
import json
|
|
192
|
+
import socketserver
|
|
193
|
+
import urllib.parse
|
|
194
|
+
import numpy as np
|
|
195
|
+
import sounddevice as sd
|
|
196
|
+
from supertonic import TTS
|
|
197
|
+
|
|
198
|
+
print('[supertonic_tts] Loading model (~305MB on first run)...')
|
|
199
|
+
tts = TTS(auto_download=True)
|
|
200
|
+
print(f'[supertonic_tts] Model loaded. Sample rate: {tts.sample_rate}Hz')
|
|
201
|
+
print(f'[supertonic_tts] Voices: {tts.voice_style_names}')
|
|
202
|
+
|
|
203
|
+
voice_styles = {v: tts.get_voice_style(voice_name=v) for v in tts.voice_style_names}
|
|
204
|
+
|
|
205
|
+
class Handler(http.server.BaseHTTPRequestHandler):
|
|
206
|
+
def log_message(self, fmt, *args):
|
|
207
|
+
print(f'[supertonic_tts] {args[0]}')
|
|
208
|
+
|
|
209
|
+
def _send_json(self, data, status=200):
|
|
210
|
+
body = json.dumps(data).encode()
|
|
211
|
+
self.send_response(status)
|
|
212
|
+
self.send_header('Content-Type', 'application/json')
|
|
213
|
+
self.send_header('Content-Length', len(body))
|
|
214
|
+
self.end_headers()
|
|
215
|
+
self.wfile.write(body)
|
|
216
|
+
|
|
217
|
+
def do_GET(self):
|
|
218
|
+
parsed = urllib.parse.urlparse(self.path)
|
|
219
|
+
params = urllib.parse.parse_qs(parsed.query)
|
|
220
|
+
|
|
221
|
+
if parsed.path == '/health':
|
|
222
|
+
self._send_json({'status': 'ok', 'tts': 'supertonic', 'voices': VOICES})
|
|
223
|
+
return
|
|
224
|
+
|
|
225
|
+
if parsed.path == '/defaults':
|
|
226
|
+
self._send_json(_defaults)
|
|
227
|
+
return
|
|
228
|
+
|
|
229
|
+
if parsed.path == '/set_defaults':
|
|
230
|
+
voice = params.get('voice', [None])[0]
|
|
231
|
+
speed = params.get('speed', [None])[0]
|
|
232
|
+
volume = params.get('volume', [None])[0]
|
|
233
|
+
steps = params.get('steps', [None])[0]
|
|
234
|
+
try:
|
|
235
|
+
set_defaults(
|
|
236
|
+
voice=voice,
|
|
237
|
+
speed=float(speed) if speed else None,
|
|
238
|
+
volume=float(volume) if volume else None,
|
|
239
|
+
steps=int(steps) if steps else None
|
|
240
|
+
)
|
|
241
|
+
self._send_json({'ok': True, 'defaults': _defaults})
|
|
242
|
+
except ValueError as e:
|
|
243
|
+
self._send_json({'error': str(e)}, 400)
|
|
244
|
+
return
|
|
245
|
+
|
|
246
|
+
if parsed.path != '/speak':
|
|
247
|
+
self._send_json({'error': 'Use GET /speak?text=...'}, 404)
|
|
248
|
+
return
|
|
249
|
+
|
|
250
|
+
text = params.get('text', [''])[0]
|
|
251
|
+
voice = params.get('voice', [_defaults['voice']])[0]
|
|
252
|
+
speed_str = params.get('speed', [None])[0]
|
|
253
|
+
speed = float(speed_str) if speed_str else _defaults['speed']
|
|
254
|
+
volume_str = params.get('volume', [None])[0]
|
|
255
|
+
volume = float(volume_str) if volume_str else _defaults['volume']
|
|
256
|
+
steps_str = params.get('steps', [None])[0]
|
|
257
|
+
steps = int(steps_str) if steps_str else _defaults['steps']
|
|
258
|
+
|
|
259
|
+
if not text:
|
|
260
|
+
self._send_json({'error': 'Missing text parameter'}, 400)
|
|
261
|
+
return
|
|
262
|
+
|
|
263
|
+
if voice not in voice_styles:
|
|
264
|
+
self._send_json({'error': f'Invalid voice: {voice}'}, 400)
|
|
265
|
+
return
|
|
266
|
+
|
|
267
|
+
try:
|
|
268
|
+
wav, duration = tts.synthesize(
|
|
269
|
+
text,
|
|
270
|
+
voice_style=voice_styles[voice],
|
|
271
|
+
lang='en',
|
|
272
|
+
speed=speed,
|
|
273
|
+
total_steps=steps
|
|
274
|
+
)
|
|
275
|
+
wav = np.squeeze(wav)
|
|
276
|
+
# Apply volume scaling
|
|
277
|
+
if volume != 1.0:
|
|
278
|
+
wav = wav * volume
|
|
279
|
+
sd.play(wav, samplerate=tts.sample_rate)
|
|
280
|
+
sd.wait()
|
|
281
|
+
dur = float(duration[0]) if hasattr(duration, '__getitem__') else float(duration)
|
|
282
|
+
self._send_json({'ok': True, 'duration': dur, 'text': text, 'voice': voice, 'speed': speed, 'volume': volume, 'steps': steps})
|
|
283
|
+
except Exception as e:
|
|
284
|
+
self._send_json({'error': str(e)}, 500)
|
|
285
|
+
|
|
286
|
+
def do_POST(self):
|
|
287
|
+
content_length = int(self.headers.get('Content-Length', 0))
|
|
288
|
+
body = self.rfile.read(content_length).decode()
|
|
289
|
+
|
|
290
|
+
try:
|
|
291
|
+
data = json.loads(body) if body else {}
|
|
292
|
+
except json.JSONDecodeError:
|
|
293
|
+
data = {'text': body}
|
|
294
|
+
|
|
295
|
+
# Redirect to GET handler with params
|
|
296
|
+
text = data.get('text', '')
|
|
297
|
+
voice = data.get('voice', _defaults['voice'])
|
|
298
|
+
speed = data.get('speed', _defaults['speed'])
|
|
299
|
+
|
|
300
|
+
self.path = f'/speak?text={urllib.parse.quote(text)}&voice={voice}&speed={speed}'
|
|
301
|
+
self.do_GET()
|
|
302
|
+
|
|
303
|
+
class ThreadedServer(socketserver.ThreadingMixIn, socketserver.TCPServer):
|
|
304
|
+
allow_reuse_address = True
|
|
305
|
+
|
|
306
|
+
with ThreadedServer(('0.0.0.0', port), Handler) as server:
|
|
307
|
+
print(f'[supertonic_tts] Ready on http://localhost:{port}')
|
|
308
|
+
server.serve_forever()
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
if __name__ == '__main__':
|
|
312
|
+
import rp
|
|
313
|
+
rp.pip_import('fire')
|
|
314
|
+
import fire
|
|
315
|
+
fire.Fire()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1392
|
|
@@ -41,6 +41,7 @@ rp/libs/__init__.py
|
|
|
41
41
|
rp/libs/debug_comment.py
|
|
42
42
|
rp/libs/draw_code_minimap.py
|
|
43
43
|
rp/libs/graveyard.py
|
|
44
|
+
rp/libs/kitten_tts_server.py
|
|
44
45
|
rp/libs/powerpoint_converter.py
|
|
45
46
|
rp/libs/profile_vim_plugins.py
|
|
46
47
|
rp/libs/pw_crypt.py
|
|
@@ -50,6 +51,7 @@ rp/libs/pytorch_module_explorer.py
|
|
|
50
51
|
rp/libs/rp_black_macchiato.py
|
|
51
52
|
rp/libs/stamp_tensor.py
|
|
52
53
|
rp/libs/stdin_python_highlighter.py
|
|
54
|
+
rp/libs/supertonic_tts_server.py
|
|
53
55
|
rp/libs/torch_hooks.py
|
|
54
56
|
rp/libs/torch_tools.py
|
|
55
57
|
rp/libs/tracetraptest.py
|
rp-0.1.1392/version.py
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1392
|
rp-0.1.1391/rp/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1391
|
rp-0.1.1391/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1391
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|