diff --git a/README.md b/README.md index 72e8190..777faa6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

RepoAgent: An LLM-Powered Open-Source Framework for Repository-level Code Documentation Generation.

+

RepoAgent: An LLM-Powered Framework for Repository-level Code Documentation Generation.

PyPI - Downloads @@ -123,7 +123,7 @@ Enter the base URL [https://api.openai.com/v1]: Enter the root directory of RepoAgent and try the following command in the terminal: ```sh -repo_agent run #this command will generate doc, or update docs(pre-commit-hook will automatically call this) +repoagent run #this command will generate doc, or update docs(pre-commit-hook will automatically call this) ``` The run command supports the following optional flags (if set, will override config defaults): @@ -174,7 +174,7 @@ repos: hooks: - id: repo-agent name: RepoAgent - entry: python path/to/your/repo_agent/runner.py + entry: repoagent language: system # You can specify the file types that trigger the hook, but currently only python is supported. types: [python] diff --git a/README_CN.md b/README_CN.md index e8b283a..e9dba11 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,4 +1,4 @@ -

RepoAgent:一个用于代码库级别代码文档生成的LLM驱动开源框架

+

RepoAgent:一个用于代码库级别代码文档生成的LLM驱动框架

PyPI - 下载量 @@ -21,7 +21,7 @@

- 英文说明 + English README简体中文说明

@@ -134,9 +134,9 @@ run 命令支持以下可选标志(如果设置,将覆盖配置默认值) 你也可以尝试以下功能 ```sh -python -m repo_agent clean # 此命令将删除与repoagent相关的缓存 -python -m repo_agent print # 此命令将打印repo-agent如何解析目标仓库 -python -m repo_agent diff # 此命令将检查基于当前代码更改将更新/生成哪些文档 +repoagent clean # 此命令将删除与repoagent相关的缓存 +repoagent print # 此命令将打印repo-agent如何解析目标仓库 +repoagent diff # 此命令将检查基于当前代码更改将更新/生成哪些文档 ``` 如果您是第一次对目标仓库生成文档,此时RepoAgent会自动生成一个维护全局结构信息的json文件,并在目标仓库根目录下创建一个名为Markdown_Docs的文件夹,用于存放文档。 @@ -163,7 +163,7 @@ repos: hooks: - id: repo-agent name: RepoAgent - entry: python path/to/your/repo_agent/runner.py + entry: repoagent language: system # 可以指定钩子触发的文件类型,但是目前只支持python types: [python] diff --git a/pdm.lock b/pdm.lock index 478302b..e545bb7 100644 --- a/pdm.lock +++ b/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "test", "dev"] strategy = ["cross_platform", "inherit_metadata"] lock_version = "4.4.1" -content_hash = "sha256:2a8bb1010ba8d612216131d444ae4ea34316fb63094ad4e87b885936f014ea70" +content_hash = "sha256:42d6e2d804df1e83e58d4784fb71c6c613cb2679f5225bfb545063a045d14189" [[package]] name = "aiofiles" @@ -582,12 +582,12 @@ files = [ [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.3.7" summary = "The FlatBuffers serialization format for Python" groups = ["default"] files = [ - {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"}, - {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"}, + {file = "flatbuffers-24.3.7-py2.py3-none-any.whl", hash = "sha256:80c4f5dcad0ee76b7e349671a0d657f2fbba927a0244f88dd3f5ed6a3694e1fc"}, + {file = "flatbuffers-24.3.7.tar.gz", hash = "sha256:0895c22b9a6019ff2f4de2e5e2f7cd15914043e6e7033a94c0c6369422690f22"}, ] [[package]] @@ -752,7 +752,7 @@ files = [ [[package]] name = "gradio" -version = "4.19.2" +version = "4.20.1" requires_python = ">=3.8" summary = "Python library for easily interacting with trained machine learning models" groups = ["default"] @@ -761,7 +761,7 @@ dependencies = [ "altair<6.0,>=4.2.0", "fastapi", "ffmpy", - "gradio-client==0.10.1", + "gradio-client==0.11.0", "httpx>=0.24.1", "huggingface-hub>=0.19.3", "importlib-resources<7.0,>=1.3", @@ -785,13 +785,13 @@ dependencies = [ "uvicorn>=0.14.0", ] files = [ - {file = "gradio-4.19.2-py3-none-any.whl", hash = "sha256:acab4a35f556dbc3ae637469312738d154bcb73f0b8d5f4f65e4d067ecb1e0b1"}, - {file = "gradio-4.19.2.tar.gz", hash = "sha256:6fe5815bb4dfaeed1fc74223bffd91da70a1b463158af8c5e03d01bb09068a1d"}, + {file = "gradio-4.20.1-py3-none-any.whl", hash = "sha256:01815047593f8d653d609ab2d9b89a7d435fd20438602de19278f8cd6acd1fb9"}, + {file = "gradio-4.20.1.tar.gz", hash = "sha256:9efb88a4e1626f4f452467e45f44c37dbd8b57f7839f71326ec169e40de5cdab"}, ] [[package]] name = "gradio-client" -version = "0.10.1" +version = "0.11.0" requires_python = ">=3.8" summary = "Python library for easily interacting with trained machine learning models" groups = ["default"] @@ -804,8 +804,8 @@ dependencies = [ "websockets<12.0,>=10.0", ] files = [ - {file = "gradio_client-0.10.1-py3-none-any.whl", hash = "sha256:a0413fffdde3360e0f6aaec8b8c23d8a320049a571de2d111d85ebd295002165"}, - {file = "gradio_client-0.10.1.tar.gz", hash = "sha256:879eb56fae5d6b1603bb9375b88d1de0d034f3dac4b3afc8dbc66f36f6e54d5d"}, + {file = "gradio_client-0.11.0-py3-none-any.whl", hash = "sha256:638a43ccc73937790a3c68adb732da03ee7077732a0b6540a9196bacbb1f6539"}, + {file = "gradio_client-0.11.0.tar.gz", hash = "sha256:18ae178f83df4a1ff53247457f6ee13c4d0dfc3b7a8bff6d9da677600f31b04e"}, ] [[package]] @@ -959,7 +959,7 @@ files = [ [[package]] name = "huggingface-hub" -version = "0.21.3" +version = "0.21.4" requires_python = ">=3.8.0" summary = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" groups = ["default"] @@ -973,8 +973,8 @@ dependencies = [ "typing-extensions>=3.7.4.3", ] files = [ - {file = "huggingface_hub-0.21.3-py3-none-any.whl", hash = "sha256:b183144336fdf2810a8c109822e0bb6ef1fd61c65da6fb60e8c3f658b7144016"}, - {file = "huggingface_hub-0.21.3.tar.gz", hash = "sha256:26a15b604e4fc7bad37c467b76456543ec849386cbca9cd7e1e135f53e500423"}, + {file = "huggingface_hub-0.21.4-py3-none-any.whl", hash = "sha256:df37c2c37fc6c82163cdd8a67ede261687d80d1e262526d6c0ce73b6b3630a7b"}, + {file = "huggingface_hub-0.21.4.tar.gz", hash = "sha256:e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531"}, ] [[package]] @@ -1018,13 +1018,13 @@ files = [ [[package]] name = "importlib-resources" -version = "6.1.2" +version = "6.1.3" requires_python = ">=3.8" summary = "Read resources from Python packages" groups = ["default"] files = [ - {file = "importlib_resources-6.1.2-py3-none-any.whl", hash = "sha256:9a0a862501dc38b68adebc82970140c9e4209fc99601782925178f8386339938"}, - {file = "importlib_resources-6.1.2.tar.gz", hash = "sha256:308abf8474e2dba5f867d279237cd4076482c3de7104a40b41426370e891549b"}, + {file = "importlib_resources-6.1.3-py3-none-any.whl", hash = "sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d"}, + {file = "importlib_resources-6.1.3.tar.gz", hash = "sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b"}, ] [[package]] @@ -2214,13 +2214,13 @@ files = [ [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" requires_python = ">=3.6.8" summary = "pyparsing module - Classes and methods to define and execute parsing grammars" groups = ["default"] files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [[package]] @@ -2596,28 +2596,28 @@ files = [ [[package]] name = "ruff" -version = "0.3.0" +version = "0.3.1" requires_python = ">=3.7" summary = "An extremely fast Python linter and code formatter, written in Rust." groups = ["default", "dev"] files = [ - {file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7deb528029bacf845bdbb3dbb2927d8ef9b4356a5e731b10eef171e3f0a85944"}, - {file = "ruff-0.3.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:e1e0d4381ca88fb2b73ea0766008e703f33f460295de658f5467f6f229658c19"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f7dbba46e2827dfcb0f0cc55fba8e96ba7c8700e0a866eb8cef7d1d66c25dcb"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:23dbb808e2f1d68eeadd5f655485e235c102ac6f12ad31505804edced2a5ae77"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ef655c51f41d5fa879f98e40c90072b567c666a7114fa2d9fe004dffba00932"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:d0d3d7ef3d4f06433d592e5f7d813314a34601e6c5be8481cccb7fa760aa243e"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b08b356d06a792e49a12074b62222f9d4ea2a11dca9da9f68163b28c71bf1dd4"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9343690f95710f8cf251bee1013bf43030072b9f8d012fbed6ad702ef70d360a"}, - {file = "ruff-0.3.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1f3ed501a42f60f4dedb7805fa8d4534e78b4e196f536bac926f805f0743d49"}, - {file = "ruff-0.3.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:cc30a9053ff2f1ffb505a585797c23434d5f6c838bacfe206c0e6cf38c921a1e"}, - {file = "ruff-0.3.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:5da894a29ec018a8293d3d17c797e73b374773943e8369cfc50495573d396933"}, - {file = "ruff-0.3.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:755c22536d7f1889be25f2baf6fedd019d0c51d079e8417d4441159f3bcd30c2"}, - {file = "ruff-0.3.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:dd73fe7f4c28d317855da6a7bc4aa29a1500320818dd8f27df95f70a01b8171f"}, - {file = "ruff-0.3.0-py3-none-win32.whl", hash = "sha256:19eacceb4c9406f6c41af806418a26fdb23120dfe53583df76d1401c92b7c14b"}, - {file = "ruff-0.3.0-py3-none-win_amd64.whl", hash = "sha256:128265876c1d703e5f5e5a4543bd8be47c73a9ba223fd3989d4aa87dd06f312f"}, - {file = "ruff-0.3.0-py3-none-win_arm64.whl", hash = "sha256:e3a4a6d46aef0a84b74fcd201a4401ea9a6cd85614f6a9435f2d33dd8cefbf83"}, - {file = "ruff-0.3.0.tar.gz", hash = "sha256:0886184ba2618d815067cf43e005388967b67ab9c80df52b32ec1152ab49f53a"}, + {file = "ruff-0.3.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:6b82e3937d0d76554cd5796bc3342a7d40de44494d29ff490022d7a52c501744"}, + {file = "ruff-0.3.1-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ae7954c8f692b70e6a206087ae3988acc9295d84c550f8d90b66c62424c16771"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b730f56ccf91225da0f06cfe421e83b8cc27b2a79393db9c3df02ed7e2bbc01"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c78bfa85637668f47bd82aa2ae17de2b34221ac23fea30926f6409f9e37fc927"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6abaad602d6e6daaec444cbf4d9364df0a783e49604c21499f75bb92237d4af"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:5f0c21b6914c3c9a25a59497cbb1e5b6c2d8d9beecc9b8e03ee986e24eee072e"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:434c3fc72e6311c85cd143c4c448b0e60e025a9ac1781e63ba222579a8c29200"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78a7025e6312cbba496341da5062e7cdd47d95f45c1b903e635cdeb1ba5ec2b9"}, + {file = "ruff-0.3.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52b02bb46f1a79b0c1fa93f6495bc7e77e4ef76e6c28995b4974a20ed09c0833"}, + {file = "ruff-0.3.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11b5699c42f7d0b771c633d620f2cb22e727fb226273aba775a91784a9ed856c"}, + {file = "ruff-0.3.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:54e5dca3e411772b51194b3102b5f23b36961e8ede463776b289b78180df71a0"}, + {file = "ruff-0.3.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:951efb610c5844e668bbec4f71cf704f8645cf3106e13f283413969527ebfded"}, + {file = "ruff-0.3.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:09c7333b25e983aabcf6e38445252cff0b4745420fc3bda45b8fce791cc7e9ce"}, + {file = "ruff-0.3.1-py3-none-win32.whl", hash = "sha256:d937f9b99ebf346e0606c3faf43c1e297a62ad221d87ef682b5bdebe199e01f6"}, + {file = "ruff-0.3.1-py3-none-win_amd64.whl", hash = "sha256:c0318a512edc9f4e010bbaab588b5294e78c5cdc9b02c3d8ab2d77c7ae1903e3"}, + {file = "ruff-0.3.1-py3-none-win_arm64.whl", hash = "sha256:d3b60e44240f7e903e6dbae3139a65032ea4c6f2ad99b6265534ff1b83c20afa"}, + {file = "ruff-0.3.1.tar.gz", hash = "sha256:d30db97141fc2134299e6e983a6727922c9e03c031ae4883a6d69461de722ae7"}, ] [[package]] diff --git a/pyproject.toml b/pyproject.toml index 67977a5..dd2e389 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,16 +15,16 @@ dependencies = [ "pyyaml>=6.0.1", "jedi>=0.19.1", "GitPython>=3.1.41", - "llama-index<0.10.0", "chromadb>=0.4.22", "prettytable>=3.9.0", "python-iso639>=2024.2.7", "pydantic-settings>=2.2.1", "tomli>=2.0.1", "tomli-w>=1.0.0", + "llama-index<0.10.0", ] name = "repoagent" -version = "0.1.0" +version = "0.1.1" description = "An Agent designed to offer an intelligent approach for generating project documentation." readme = "README.md" @@ -47,6 +47,7 @@ test = [ [tool.pdm.build] includes = [ "repo_agent", + "assets/images/*.png" ] diff --git a/repo_agent/chat_engine.py b/repo_agent/chat_engine.py index 2586f05..380fae6 100644 --- a/repo_agent/chat_engine.py +++ b/repo_agent/chat_engine.py @@ -196,7 +196,7 @@ def get_relationship_description(referencer_content, reference_letter): else: return "" - max_tokens = setting.chat_completion.max_document_tokens + max_tokens = setting.project.max_document_tokens code_type_tell = "Class" if code_type == "ClassDef" else "Function" parameters_or_attribute = ( diff --git a/repo_agent/chat_with_repo/__init__.py b/repo_agent/chat_with_repo/__init__.py index c11272f..12b0f6e 100644 --- a/repo_agent/chat_with_repo/__init__.py +++ b/repo_agent/chat_with_repo/__init__.py @@ -1,3 +1,3 @@ # repo_agent/chat_with_repo/__init__.py -from .main import main \ No newline at end of file +from .main import main diff --git a/repo_agent/config_manager.py b/repo_agent/config_manager.py index 1c07349..b7fcb0b 100644 --- a/repo_agent/config_manager.py +++ b/repo_agent/config_manager.py @@ -20,13 +20,13 @@ def get_config_path() -> Path: os_name = os.name if os_name == 'posix': # 对于 Unix 和 macOS,使用家目录 - home_config_path = Path.home() / '.repo_agent' + home_config_path = Path.home() / '.repoagent' elif os_name == 'nt': # 对于 Windows,使用 APPDATA 目录 - home_config_path = Path(os.getenv('APPDATA')) / 'repo_agent' # type: ignore + home_config_path = Path(os.getenv('APPDATA')) / 'repoagent' # type: ignore else: # 如果操作系统检测失败,默认使用一个本地目录 - home_config_path = Path.cwd() / 'repo_agent' + home_config_path = Path.cwd() / 'repoagent' # 确保配置目录存在 home_config_path.mkdir(parents=True, exist_ok=True) diff --git a/repo_agent/doc_meta_info.py b/repo_agent/doc_meta_info.py index 996d22f..b92921f 100644 --- a/repo_agent/doc_meta_info.py +++ b/repo_agent/doc_meta_info.py @@ -80,7 +80,7 @@ class DocItemStatus(Enum): referencer_not_exist = auto() # 曾经引用他的obj被删除了,或者不再引用他了 -def need_to_generate(doc_item: DocItem, ignore_list: List = []) -> bool: +def need_to_generate(doc_item: DocItem, ignore_list: List[str] = []) -> bool: """只生成item的,文件及更高粒度都跳过。另外如果属于一个blacklist的文件也跳过""" if doc_item.item_status == DocItemStatus.doc_up_to_date: return False @@ -236,14 +236,14 @@ def find(self, recursive_file_path: list) -> Optional[DocItem]: return now @staticmethod - def check_has_task(now_item: DocItem, ignore_list: List = []): + def check_has_task(now_item: DocItem, ignore_list: List[str] = []): if need_to_generate(now_item, ignore_list=ignore_list): now_item.has_task = True for _, child in now_item.children.items(): DocItem.check_has_task(child, ignore_list) now_item.has_task = child.has_task or now_item.has_task - def print_recursive(self, indent=0, print_content=False, diff_status = False, ignore_list = []): + def print_recursive(self, indent=0, print_content=False, diff_status = False, ignore_list: List[str] = []): """递归打印repo对象""" def print_indent(indent=0): diff --git a/repo_agent/main.py b/repo_agent/main.py index 8639cfc..bea3544 100644 --- a/repo_agent/main.py +++ b/repo_agent/main.py @@ -58,7 +58,7 @@ def language_prompt(default_language): @click.group() @click.version_option(version_number) def cli(): - """An LLM-Powered Open-Source Framework for Repository-level Code Documentation Generation.""" + """An LLM-Powered Framework for Repository-level Code Documentation Generation.""" pass @@ -81,7 +81,7 @@ def configure(): ignore_list=click.prompt( "Enter files or directories to ignore, separated by commas", default=",".join( - str(path) for path in project_settings_default_instance.ignore_list + str(path) for path in [] ), ).split(","), language=language_prompt( diff --git a/repo_agent/settings.py b/repo_agent/settings.py index 6622ede..ab363b1 100644 --- a/repo_agent/settings.py +++ b/repo_agent/settings.py @@ -34,6 +34,13 @@ class ProjectSettings(BaseSettings): max_document_tokens: PositiveInt = 1024 log_level: LogLevel = LogLevel.INFO + @field_serializer("ignore_list") + def serialize_ignore_list(self, ignore_list: list[str] = []): + if ignore_list == [""]: + self.ignore_list = [] # If the ignore_list is empty, set it to an empty list + return [] + return ignore_list + @field_validator("language") @classmethod def validate_language_code(cls, v: str) -> str: diff --git a/requirements.txt b/requirements.txt index cb04185..855a0b1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -245,9 +245,9 @@ ffmpy==0.3.2 \ filelock==3.13.1 \ --hash=sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e \ --hash=sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c -flatbuffers==23.5.26 \ - --hash=sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89 \ - --hash=sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1 +flatbuffers==24.3.7 \ + --hash=sha256:0895c22b9a6019ff2f4de2e5e2f7cd15914043e6e7033a94c0c6369422690f22 \ + --hash=sha256:80c4f5dcad0ee76b7e349671a0d657f2fbba927a0244f88dd3f5ed6a3694e1fc fonttools==4.49.0 \ --hash=sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828 \ --hash=sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559 \ @@ -338,12 +338,12 @@ google-auth==2.28.1 \ googleapis-common-protos==1.62.0 \ --hash=sha256:4750113612205514f9f6aa4cb00d523a94f3e8c06c5ad2fee466387dc4875f07 \ --hash=sha256:83f0ece9f94e5672cced82f592d2a5edf527a96ed1794f0bab36d5735c996277 -gradio==4.19.2 \ - --hash=sha256:6fe5815bb4dfaeed1fc74223bffd91da70a1b463158af8c5e03d01bb09068a1d \ - --hash=sha256:acab4a35f556dbc3ae637469312738d154bcb73f0b8d5f4f65e4d067ecb1e0b1 -gradio-client==0.10.1 \ - --hash=sha256:879eb56fae5d6b1603bb9375b88d1de0d034f3dac4b3afc8dbc66f36f6e54d5d \ - --hash=sha256:a0413fffdde3360e0f6aaec8b8c23d8a320049a571de2d111d85ebd295002165 +gradio==4.20.1 \ + --hash=sha256:01815047593f8d653d609ab2d9b89a7d435fd20438602de19278f8cd6acd1fb9 \ + --hash=sha256:9efb88a4e1626f4f452467e45f44c37dbd8b57f7839f71326ec169e40de5cdab +gradio-client==0.11.0 \ + --hash=sha256:18ae178f83df4a1ff53247457f6ee13c4d0dfc3b7a8bff6d9da677600f31b04e \ + --hash=sha256:638a43ccc73937790a3c68adb732da03ee7077732a0b6540a9196bacbb1f6539 greenlet==3.0.3 \ --hash=sha256:149e94a2dd82d19838fe4b2259f1b6b9957d5ba1b25640d2380bea9c5df37676 \ --hash=sha256:15d79dd26056573940fcb8c7413d84118086f2ec1a8acdfa854631084393efcc \ @@ -434,9 +434,9 @@ httptools==0.6.1 \ httpx==0.27.0 \ --hash=sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5 \ --hash=sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5 -huggingface-hub==0.21.3 \ - --hash=sha256:26a15b604e4fc7bad37c467b76456543ec849386cbca9cd7e1e135f53e500423 \ - --hash=sha256:b183144336fdf2810a8c109822e0bb6ef1fd61c65da6fb60e8c3f658b7144016 +huggingface-hub==0.21.4 \ + --hash=sha256:df37c2c37fc6c82163cdd8a67ede261687d80d1e262526d6c0ce73b6b3630a7b \ + --hash=sha256:e1f4968c93726565a80edf6dc309763c7b546d0cfe79aa221206034d50155531 humanfriendly==10.0 \ --hash=sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 \ --hash=sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc @@ -446,9 +446,9 @@ idna==3.6 \ importlib-metadata==6.11.0 \ --hash=sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443 \ --hash=sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b -importlib-resources==6.1.2 \ - --hash=sha256:308abf8474e2dba5f867d279237cd4076482c3de7104a40b41426370e891549b \ - --hash=sha256:9a0a862501dc38b68adebc82970140c9e4209fc99601782925178f8386339938 +importlib-resources==6.1.3 \ + --hash=sha256:4c0269e3580fe2634d364b39b38b961540a7738c02cb984e98add8b4221d793d \ + --hash=sha256:56fb4525197b78544a3354ea27793952ab93f935bb4bf746b846bb1015020f2b iniconfig==2.0.0 \ --hash=sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3 \ --hash=sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 @@ -1023,9 +1023,9 @@ pydub==0.25.1 \ pygments==2.17.2 \ --hash=sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c \ --hash=sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367 -pyparsing==3.1.1 \ - --hash=sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb \ - --hash=sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db +pyparsing==3.1.2 \ + --hash=sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad \ + --hash=sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742 pypika==0.48.9 \ --hash=sha256:838836a61747e7c8380cd1b7ff638694b7a7335345d0f559b04b2cd832ad5378 pyproject-hooks==1.0.0 \ @@ -1217,24 +1217,24 @@ rpds-py==0.18.0 \ rsa==4.9 \ --hash=sha256:90260d9058e514786967344d0ef75fa8727eed8a7d2e43ce9f4bcf1b536174f7 \ --hash=sha256:e38464a49c6c85d7f1351b0126661487a7e0a14a50f1675ec50eb34d4f20ef21 -ruff==0.3.0 \ - --hash=sha256:0886184ba2618d815067cf43e005388967b67ab9c80df52b32ec1152ab49f53a \ - --hash=sha256:128265876c1d703e5f5e5a4543bd8be47c73a9ba223fd3989d4aa87dd06f312f \ - --hash=sha256:19eacceb4c9406f6c41af806418a26fdb23120dfe53583df76d1401c92b7c14b \ - --hash=sha256:23dbb808e2f1d68eeadd5f655485e235c102ac6f12ad31505804edced2a5ae77 \ - --hash=sha256:2f7dbba46e2827dfcb0f0cc55fba8e96ba7c8700e0a866eb8cef7d1d66c25dcb \ - --hash=sha256:3ef655c51f41d5fa879f98e40c90072b567c666a7114fa2d9fe004dffba00932 \ - --hash=sha256:5da894a29ec018a8293d3d17c797e73b374773943e8369cfc50495573d396933 \ - --hash=sha256:755c22536d7f1889be25f2baf6fedd019d0c51d079e8417d4441159f3bcd30c2 \ - --hash=sha256:7deb528029bacf845bdbb3dbb2927d8ef9b4356a5e731b10eef171e3f0a85944 \ - --hash=sha256:9343690f95710f8cf251bee1013bf43030072b9f8d012fbed6ad702ef70d360a \ - --hash=sha256:a1f3ed501a42f60f4dedb7805fa8d4534e78b4e196f536bac926f805f0743d49 \ - --hash=sha256:b08b356d06a792e49a12074b62222f9d4ea2a11dca9da9f68163b28c71bf1dd4 \ - --hash=sha256:cc30a9053ff2f1ffb505a585797c23434d5f6c838bacfe206c0e6cf38c921a1e \ - --hash=sha256:d0d3d7ef3d4f06433d592e5f7d813314a34601e6c5be8481cccb7fa760aa243e \ - --hash=sha256:dd73fe7f4c28d317855da6a7bc4aa29a1500320818dd8f27df95f70a01b8171f \ - --hash=sha256:e1e0d4381ca88fb2b73ea0766008e703f33f460295de658f5467f6f229658c19 \ - --hash=sha256:e3a4a6d46aef0a84b74fcd201a4401ea9a6cd85614f6a9435f2d33dd8cefbf83 +ruff==0.3.1 \ + --hash=sha256:09c7333b25e983aabcf6e38445252cff0b4745420fc3bda45b8fce791cc7e9ce \ + --hash=sha256:11b5699c42f7d0b771c633d620f2cb22e727fb226273aba775a91784a9ed856c \ + --hash=sha256:434c3fc72e6311c85cd143c4c448b0e60e025a9ac1781e63ba222579a8c29200 \ + --hash=sha256:52b02bb46f1a79b0c1fa93f6495bc7e77e4ef76e6c28995b4974a20ed09c0833 \ + --hash=sha256:54e5dca3e411772b51194b3102b5f23b36961e8ede463776b289b78180df71a0 \ + --hash=sha256:5f0c21b6914c3c9a25a59497cbb1e5b6c2d8d9beecc9b8e03ee986e24eee072e \ + --hash=sha256:6b730f56ccf91225da0f06cfe421e83b8cc27b2a79393db9c3df02ed7e2bbc01 \ + --hash=sha256:6b82e3937d0d76554cd5796bc3342a7d40de44494d29ff490022d7a52c501744 \ + --hash=sha256:78a7025e6312cbba496341da5062e7cdd47d95f45c1b903e635cdeb1ba5ec2b9 \ + --hash=sha256:951efb610c5844e668bbec4f71cf704f8645cf3106e13f283413969527ebfded \ + --hash=sha256:ae7954c8f692b70e6a206087ae3988acc9295d84c550f8d90b66c62424c16771 \ + --hash=sha256:c0318a512edc9f4e010bbaab588b5294e78c5cdc9b02c3d8ab2d77c7ae1903e3 \ + --hash=sha256:c78bfa85637668f47bd82aa2ae17de2b34221ac23fea30926f6409f9e37fc927 \ + --hash=sha256:d30db97141fc2134299e6e983a6727922c9e03c031ae4883a6d69461de722ae7 \ + --hash=sha256:d3b60e44240f7e903e6dbae3139a65032ea4c6f2ad99b6265534ff1b83c20afa \ + --hash=sha256:d6abaad602d6e6daaec444cbf4d9364df0a783e49604c21499f75bb92237d4af \ + --hash=sha256:d937f9b99ebf346e0606c3faf43c1e297a62ad221d87ef682b5bdebe199e01f6 semantic-version==2.10.0 \ --hash=sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c \ --hash=sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177