From e36f7d82f6326990d950f016f1a581c9b6ac00ae Mon Sep 17 00:00:00 2001 From: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> Date: Wed, 4 Dec 2024 14:22:00 +0100 Subject: [PATCH 01/13] fix: folder input in cli (#511) Signed-off-by: Michele Dolfi Signed-off-by: Christoph Auer --- docling/cli/main.py | 41 +++++++++++++++++++++++++++++++---------- 1 file changed, 31 insertions(+), 10 deletions(-) diff --git a/docling/cli/main.py b/docling/cli/main.py index ec2c0777..87a93d15 100644 --- a/docling/cli/main.py +++ b/docling/cli/main.py @@ -11,6 +11,7 @@ from typing import Annotated, Dict, Iterable, List, Optional, Type import typer from docling_core.utils.file import resolve_source_to_path +from pydantic import TypeAdapter, ValidationError from docling.backend.docling_parse_backend import DoclingParseDocumentBackend from docling.backend.docling_parse_v2_backend import DoclingParseV2DocumentBackend @@ -260,19 +261,39 @@ def convert( with tempfile.TemporaryDirectory() as tempdir: input_doc_paths: List[Path] = [] for src in input_sources: - source = resolve_source_to_path(source=src, workdir=Path(tempdir)) - if not source.exists(): + try: + # check if we can fetch some remote url + source = resolve_source_to_path(source=src, workdir=Path(tempdir)) + input_doc_paths.append(source) + except FileNotFoundError: err_console.print( - f"[red]Error: The input file {source} does not exist.[/red]" + f"[red]Error: The input file {src} does not exist.[/red]" ) raise typer.Abort() - elif source.is_dir(): - for fmt in from_formats: - for ext in FormatToExtensions[fmt]: - input_doc_paths.extend(list(source.glob(f"**/*.{ext}"))) - input_doc_paths.extend(list(source.glob(f"**/*.{ext.upper()}"))) - else: - input_doc_paths.append(source) + except IsADirectoryError: + # if the input matches to a file or a folder + try: + local_path = TypeAdapter(Path).validate_python(src) + if local_path.exists() and local_path.is_dir(): + for fmt in from_formats: + for ext in FormatToExtensions[fmt]: + input_doc_paths.extend( + list(local_path.glob(f"**/*.{ext}")) + ) + input_doc_paths.extend( + list(local_path.glob(f"**/*.{ext.upper()}")) + ) + elif local_path.exists(): + input_doc_paths.append(local_path) + else: + err_console.print( + f"[red]Error: The input file {src} does not exist.[/red]" + ) + raise typer.Abort() + except Exception as err: + err_console.print(f"[red]Error: Cannot read the input {src}.[/red]") + _log.info(err) # will print more details if verbose is activated + raise typer.Abort() if to_formats is None: to_formats = [OutputFormat.MARKDOWN] From bed92b766f8d3b2b2ea75255e242985a71e84f62 Mon Sep 17 00:00:00 2001 From: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> Date: Fri, 6 Dec 2024 09:33:39 +0100 Subject: [PATCH 02/13] fix: restore pydantic version pin after fixes (#512) * test: pin new docling-core changes and release pydantic pinning Signed-off-by: Michele Dolfi * pin docling-core release Signed-off-by: Michele Dolfi --------- Signed-off-by: Michele Dolfi Signed-off-by: Christoph Auer --- poetry.lock | 430 +++++++++++++++++++++++++------------------------ pyproject.toml | 4 +- 2 files changed, 222 insertions(+), 212 deletions(-) diff --git a/poetry.lock b/poetry.lock index 184658ea..d2a3876d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -890,13 +890,13 @@ files = [ [[package]] name = "docling-core" -version = "2.6.1" +version = "2.7.0" description = "A python library to define and validate data types in Docling." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_core-2.6.1-py3-none-any.whl", hash = "sha256:8e7a5bc0ce13289567738481949fed3ab580f2d8cea7525b246159233d81b26b"}, - {file = "docling_core-2.6.1.tar.gz", hash = "sha256:c8af45e0873611120cc24757d567d37e053a54e2ce060b7b5b44efd0d73f75e5"}, + {file = "docling_core-2.7.0-py3-none-any.whl", hash = "sha256:45cd51d7803587e779d49458399373eb399a599e52e2356bd358f63bd2559fa8"}, + {file = "docling_core-2.7.0.tar.gz", hash = "sha256:180a78cfd334b207f4984962f1f7a5d8e6f91734a9c7bd96d78bc9d19135f114"}, ] [package.dependencies] @@ -904,7 +904,7 @@ jsonref = ">=1.1.0,<2.0.0" jsonschema = ">=4.16.0,<5.0.0" pandas = ">=2.1.4,<3.0.0" pillow = ">=10.3.0,<11.0.0" -pydantic = ">=2.6.0,<2.10" +pydantic = ">=2.6.0,<2.10.0 || >2.10.0,<2.10.1 || >2.10.1,<2.10.2 || >2.10.2,<3.0.0" pyyaml = ">=5.1,<7.0.0" tabulate = ">=0.9.0,<0.10.0" typing-extensions = ">=4.12.2,<5.0.0" @@ -3765,10 +3765,10 @@ files = [ numpy = [ {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] [[package]] @@ -3791,10 +3791,10 @@ files = [ numpy = [ {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.23.5", markers = "python_version >= \"3.11\" and python_version < \"3.12\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] [[package]] @@ -3975,8 +3975,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.22.4", markers = "python_version < \"3.11\""}, - {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, {version = ">=1.23.2", markers = "python_version == \"3.11\""}, + {version = ">=1.26.0", markers = "python_version >= \"3.12\""}, ] python-dateutil = ">=2.8.2" pytz = ">=2020.1" @@ -4550,22 +4550,19 @@ files = [ [[package]] name = "pydantic" -version = "2.9.2" +version = "2.10.3" description = "Data validation using Python type hints" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12"}, - {file = "pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f"}, + {file = "pydantic-2.10.3-py3-none-any.whl", hash = "sha256:be04d85bbc7b65651c5f8e6b9976ed9c6f41782a55524cef079a34a0bb82144d"}, + {file = "pydantic-2.10.3.tar.gz", hash = "sha256:cb5ac360ce894ceacd69c403187900a02c4b20b693a9dd1d643e1effab9eadf9"}, ] [package.dependencies] annotated-types = ">=0.6.0" -pydantic-core = "2.23.4" -typing-extensions = [ - {version = ">=4.6.1", markers = "python_version < \"3.13\""}, - {version = ">=4.12.2", markers = "python_version >= \"3.13\""}, -] +pydantic-core = "2.27.1" +typing-extensions = ">=4.12.2" [package.extras] email = ["email-validator (>=2.0.0)"] @@ -4573,100 +4570,111 @@ timezone = ["tzdata"] [[package]] name = "pydantic-core" -version = "2.23.4" +version = "2.27.1" description = "Core functionality for Pydantic validation and serialization" optional = false python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:b10bd51f823d891193d4717448fab065733958bdb6a6b351967bd349d48d5c9b"}, - {file = "pydantic_core-2.23.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4fc714bdbfb534f94034efaa6eadd74e5b93c8fa6315565a222f7b6f42ca1166"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63e46b3169866bd62849936de036f901a9356e36376079b05efa83caeaa02ceb"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed1a53de42fbe34853ba90513cea21673481cd81ed1be739f7f2efb931b24916"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cfdd16ab5e59fc31b5e906d1a3f666571abc367598e3e02c83403acabc092e07"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255a8ef062cbf6674450e668482456abac99a5583bbafb73f9ad469540a3a232"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a7cd62e831afe623fbb7aabbb4fe583212115b3ef38a9f6b71869ba644624a2"}, - {file = "pydantic_core-2.23.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f09e2ff1f17c2b51f2bc76d1cc33da96298f0a036a137f5440ab3ec5360b624f"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e38e63e6f3d1cec5a27e0afe90a085af8b6806ee208b33030e65b6516353f1a3"}, - {file = "pydantic_core-2.23.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0dbd8dbed2085ed23b5c04afa29d8fd2771674223135dc9bc937f3c09284d071"}, - {file = "pydantic_core-2.23.4-cp310-none-win32.whl", hash = "sha256:6531b7ca5f951d663c339002e91aaebda765ec7d61b7d1e3991051906ddde119"}, - {file = "pydantic_core-2.23.4-cp310-none-win_amd64.whl", hash = "sha256:7c9129eb40958b3d4500fa2467e6a83356b3b61bfff1b414c7361d9220f9ae8f"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:77733e3892bb0a7fa797826361ce8a9184d25c8dffaec60b7ffe928153680ba8"}, - {file = "pydantic_core-2.23.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b84d168f6c48fabd1f2027a3d1bdfe62f92cade1fb273a5d68e621da0e44e6d"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:df49e7a0861a8c36d089c1ed57d308623d60416dab2647a4a17fe050ba85de0e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ff02b6d461a6de369f07ec15e465a88895f3223eb75073ffea56b84d9331f607"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:996a38a83508c54c78a5f41456b0103c30508fed9abcad0a59b876d7398f25fd"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d97683ddee4723ae8c95d1eddac7c192e8c552da0c73a925a89fa8649bf13eea"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:216f9b2d7713eb98cb83c80b9c794de1f6b7e3145eef40400c62e86cee5f4e1e"}, - {file = "pydantic_core-2.23.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6f783e0ec4803c787bcea93e13e9932edab72068f68ecffdf86a99fd5918878b"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d0776dea117cf5272382634bd2a5c1b6eb16767c223c6a5317cd3e2a757c61a0"}, - {file = "pydantic_core-2.23.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d5f7a395a8cf1621939692dba2a6b6a830efa6b3cee787d82c7de1ad2930de64"}, - {file = "pydantic_core-2.23.4-cp311-none-win32.whl", hash = "sha256:74b9127ffea03643e998e0c5ad9bd3811d3dac8c676e47db17b0ee7c3c3bf35f"}, - {file = "pydantic_core-2.23.4-cp311-none-win_amd64.whl", hash = "sha256:98d134c954828488b153d88ba1f34e14259284f256180ce659e8d83e9c05eaa3"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:f3e0da4ebaef65158d4dfd7d3678aad692f7666877df0002b8a522cdf088f231"}, - {file = "pydantic_core-2.23.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f69a8e0b033b747bb3e36a44e7732f0c99f7edd5cea723d45bc0d6e95377ffee"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:723314c1d51722ab28bfcd5240d858512ffd3116449c557a1336cbe3919beb87"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bb2802e667b7051a1bebbfe93684841cc9351004e2badbd6411bf357ab8d5ac8"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18ca8148bebe1b0a382a27a8ee60350091a6ddaf475fa05ef50dc35b5df6327"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33e3d65a85a2a4a0dc3b092b938a4062b1a05f3a9abde65ea93b233bca0e03f2"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:128585782e5bfa515c590ccee4b727fb76925dd04a98864182b22e89a4e6ed36"}, - {file = "pydantic_core-2.23.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:68665f4c17edcceecc112dfed5dbe6f92261fb9d6054b47d01bf6371a6196126"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:20152074317d9bed6b7a95ade3b7d6054845d70584216160860425f4fbd5ee9e"}, - {file = "pydantic_core-2.23.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:9261d3ce84fa1d38ed649c3638feefeae23d32ba9182963e465d58d62203bd24"}, - {file = "pydantic_core-2.23.4-cp312-none-win32.whl", hash = "sha256:4ba762ed58e8d68657fc1281e9bb72e1c3e79cc5d464be146e260c541ec12d84"}, - {file = "pydantic_core-2.23.4-cp312-none-win_amd64.whl", hash = "sha256:97df63000f4fea395b2824da80e169731088656d1818a11b95f3b173747b6cd9"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc"}, - {file = "pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b"}, - {file = "pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6"}, - {file = "pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f"}, - {file = "pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769"}, - {file = "pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d4488a93b071c04dc20f5cecc3631fc78b9789dd72483ba15d423b5b3689b555"}, - {file = "pydantic_core-2.23.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:81965a16b675b35e1d09dd14df53f190f9129c0202356ed44ab2728b1c905658"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ffa2ebd4c8530079140dd2d7f794a9d9a73cbb8e9d59ffe24c63436efa8f271"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:61817945f2fe7d166e75fbfb28004034b48e44878177fc54d81688e7b85a3665"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29d2c342c4bc01b88402d60189f3df065fb0dda3654744d5a165a5288a657368"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5e11661ce0fd30a6790e8bcdf263b9ec5988e95e63cf901972107efc49218b13"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d18368b137c6295db49ce7218b1a9ba15c5bc254c96d7c9f9e924a9bc7825ad"}, - {file = "pydantic_core-2.23.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ec4e55f79b1c4ffb2eecd8a0cfba9955a2588497d96851f4c8f99aa4a1d39b12"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:374a5e5049eda9e0a44c696c7ade3ff355f06b1fe0bb945ea3cac2bc336478a2"}, - {file = "pydantic_core-2.23.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5c364564d17da23db1106787675fc7af45f2f7b58b4173bfdd105564e132e6fb"}, - {file = "pydantic_core-2.23.4-cp38-none-win32.whl", hash = "sha256:d7a80d21d613eec45e3d41eb22f8f94ddc758a6c4720842dc74c0581f54993d6"}, - {file = "pydantic_core-2.23.4-cp38-none-win_amd64.whl", hash = "sha256:5f5ff8d839f4566a474a969508fe1c5e59c31c80d9e140566f9a37bba7b8d556"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:a4fa4fc04dff799089689f4fd502ce7d59de529fc2f40a2c8836886c03e0175a"}, - {file = "pydantic_core-2.23.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:0a7df63886be5e270da67e0966cf4afbae86069501d35c8c1b3b6c168f42cb36"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dcedcd19a557e182628afa1d553c3895a9f825b936415d0dbd3cd0bbcfd29b4b"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f54b118ce5de9ac21c363d9b3caa6c800341e8c47a508787e5868c6b79c9323"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:86d2f57d3e1379a9525c5ab067b27dbb8a0642fb5d454e17a9ac434f9ce523e3"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de6d1d1b9e5101508cb37ab0d972357cac5235f5c6533d1071964c47139257df"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1278e0d324f6908e872730c9102b0112477a7f7cf88b308e4fc36ce1bdb6d58c"}, - {file = "pydantic_core-2.23.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a6b5099eeec78827553827f4c6b8615978bb4b6a88e5d9b93eddf8bb6790f55"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:e55541f756f9b3ee346b840103f32779c695a19826a4c442b7954550a0972040"}, - {file = "pydantic_core-2.23.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a5c7ba8ffb6d6f8f2ab08743be203654bb1aaa8c9dcb09f82ddd34eadb695605"}, - {file = "pydantic_core-2.23.4-cp39-none-win32.whl", hash = "sha256:37b0fe330e4a58d3c58b24d91d1eb102aeec675a3db4c292ec3928ecd892a9a6"}, - {file = "pydantic_core-2.23.4-cp39-none-win_amd64.whl", hash = "sha256:1498bec4c05c9c787bde9125cfdcc63a41004ff167f495063191b863399b1a29"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f455ee30a9d61d3e1a15abd5068827773d6e4dc513e795f380cdd59932c782d5"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:1e90d2e3bd2c3863d48525d297cd143fe541be8bbf6f579504b9712cb6b643ec"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e203fdf807ac7e12ab59ca2bfcabb38c7cf0b33c41efeb00f8e5da1d86af480"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e08277a400de01bc72436a0ccd02bdf596631411f592ad985dcee21445bd0068"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f220b0eea5965dec25480b6333c788fb72ce5f9129e8759ef876a1d805d00801"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:d06b0c8da4f16d1d1e352134427cb194a0a6e19ad5db9161bf32b2113409e728"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ba1a0996f6c2773bd83e63f18914c1de3c9dd26d55f4ac302a7efe93fb8e7433"}, - {file = "pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:78ddaaa81421a29574a682b3179d4cf9e6d405a09b99d93ddcf7e5239c742e21"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:883a91b5dd7d26492ff2f04f40fbb652de40fcc0afe07e8129e8ae779c2110eb"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88ad334a15b32a791ea935af224b9de1bf99bcd62fabf745d5f3442199d86d59"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:233710f069d251feb12a56da21e14cca67994eab08362207785cf8c598e74577"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:19442362866a753485ba5e4be408964644dd6a09123d9416c54cd49171f50744"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:624e278a7d29b6445e4e813af92af37820fafb6dcc55c012c834f9e26f9aaaef"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:f5ef8f42bec47f21d07668a043f077d507e5bf4e668d5c6dfe6aaba89de1a5b8"}, - {file = "pydantic_core-2.23.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:aea443fffa9fbe3af1a9ba721a87f926fe548d32cab71d188a6ede77d0ff244e"}, - {file = "pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:71a5e35c75c021aaf400ac048dacc855f000bdfed91614b4a726f7432f1f3d6a"}, + {file = "pydantic_core-2.27.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f82d068a2d6ecfc6e054726080af69a6764a10015467d7d7b9f66d6ed5afa23b"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:121ceb0e822f79163dd4699e4c54f5ad38b157084d97b34de8b232bcaad70278"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4603137322c18eaf2e06a4495f426aa8d8388940f3c457e7548145011bb68e05"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a33cd6ad9017bbeaa9ed78a2e0752c5e250eafb9534f308e7a5f7849b0b1bfb4"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:15cc53a3179ba0fcefe1e3ae50beb2784dede4003ad2dfd24f81bba4b23a454f"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45d9c5eb9273aa50999ad6adc6be5e0ecea7e09dbd0d31bd0c65a55a2592ca08"}, + {file = "pydantic_core-2.27.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bf7b66ce12a2ac52d16f776b31d16d91033150266eb796967a7e4621707e4f6"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:655d7dd86f26cb15ce8a431036f66ce0318648f8853d709b4167786ec2fa4807"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:5556470f1a2157031e676f776c2bc20acd34c1990ca5f7e56f1ebf938b9ab57c"}, + {file = "pydantic_core-2.27.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f69ed81ab24d5a3bd93861c8c4436f54afdf8e8cc421562b0c7504cf3be58206"}, + {file = "pydantic_core-2.27.1-cp310-none-win32.whl", hash = "sha256:f5a823165e6d04ccea61a9f0576f345f8ce40ed533013580e087bd4d7442b52c"}, + {file = "pydantic_core-2.27.1-cp310-none-win_amd64.whl", hash = "sha256:57866a76e0b3823e0b56692d1a0bf722bffb324839bb5b7226a7dbd6c9a40b17"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:ac3b20653bdbe160febbea8aa6c079d3df19310d50ac314911ed8cc4eb7f8cb8"}, + {file = "pydantic_core-2.27.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a5a8e19d7c707c4cadb8c18f5f60c843052ae83c20fa7d44f41594c644a1d330"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f7059ca8d64fea7f238994c97d91f75965216bcbe5f695bb44f354893f11d52"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bed0f8a0eeea9fb72937ba118f9db0cb7e90773462af7962d382445f3005e5a4"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a3cb37038123447cf0f3ea4c74751f6a9d7afef0eb71aa07bf5f652b5e6a132c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:84286494f6c5d05243456e04223d5a9417d7f443c3b76065e75001beb26f88de"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acc07b2cfc5b835444b44a9956846b578d27beeacd4b52e45489e93276241025"}, + {file = "pydantic_core-2.27.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fefee876e07a6e9aad7a8c8c9f85b0cdbe7df52b8a9552307b09050f7512c7e"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:258c57abf1188926c774a4c94dd29237e77eda19462e5bb901d88adcab6af919"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:35c14ac45fcfdf7167ca76cc80b2001205a8d5d16d80524e13508371fb8cdd9c"}, + {file = "pydantic_core-2.27.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d1b26e1dff225c31897696cab7d4f0a315d4c0d9e8666dbffdb28216f3b17fdc"}, + {file = "pydantic_core-2.27.1-cp311-none-win32.whl", hash = "sha256:2cdf7d86886bc6982354862204ae3b2f7f96f21a3eb0ba5ca0ac42c7b38598b9"}, + {file = "pydantic_core-2.27.1-cp311-none-win_amd64.whl", hash = "sha256:3af385b0cee8df3746c3f406f38bcbfdc9041b5c2d5ce3e5fc6637256e60bbc5"}, + {file = "pydantic_core-2.27.1-cp311-none-win_arm64.whl", hash = "sha256:81f2ec23ddc1b476ff96563f2e8d723830b06dceae348ce02914a37cb4e74b89"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:9cbd94fc661d2bab2bc702cddd2d3370bbdcc4cd0f8f57488a81bcce90c7a54f"}, + {file = "pydantic_core-2.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5f8c4718cd44ec1580e180cb739713ecda2bdee1341084c1467802a417fe0f02"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15aae984e46de8d376df515f00450d1522077254ef6b7ce189b38ecee7c9677c"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ba5e3963344ff25fc8c40da90f44b0afca8cfd89d12964feb79ac1411a260ac"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:992cea5f4f3b29d6b4f7f1726ed8ee46c8331c6b4eed6db5b40134c6fe1768bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0325336f348dbee6550d129b1627cb8f5351a9dc91aad141ffb96d4937bd9529"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7597c07fbd11515f654d6ece3d0e4e5093edc30a436c63142d9a4b8e22f19c35"}, + {file = "pydantic_core-2.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3bbd5d8cc692616d5ef6fbbbd50dbec142c7e6ad9beb66b78a96e9c16729b089"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:dc61505e73298a84a2f317255fcc72b710b72980f3a1f670447a21efc88f8381"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:e1f735dc43da318cad19b4173dd1ffce1d84aafd6c9b782b3abc04a0d5a6f5bb"}, + {file = "pydantic_core-2.27.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4e5658dbffe8843a0f12366a4c2d1c316dbe09bb4dfbdc9d2d9cd6031de8aae"}, + {file = "pydantic_core-2.27.1-cp312-none-win32.whl", hash = "sha256:672ebbe820bb37988c4d136eca2652ee114992d5d41c7e4858cdd90ea94ffe5c"}, + {file = "pydantic_core-2.27.1-cp312-none-win_amd64.whl", hash = "sha256:66ff044fd0bb1768688aecbe28b6190f6e799349221fb0de0e6f4048eca14c16"}, + {file = "pydantic_core-2.27.1-cp312-none-win_arm64.whl", hash = "sha256:9a3b0793b1bbfd4146304e23d90045f2a9b5fd5823aa682665fbdaf2a6c28f3e"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f216dbce0e60e4d03e0c4353c7023b202d95cbaeff12e5fd2e82ea0a66905073"}, + {file = "pydantic_core-2.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a2e02889071850bbfd36b56fd6bc98945e23670773bc7a76657e90e6b6603c08"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42b0e23f119b2b456d07ca91b307ae167cc3f6c846a7b169fca5326e32fdc6cf"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:764be71193f87d460a03f1f7385a82e226639732214b402f9aa61f0d025f0737"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1c00666a3bd2f84920a4e94434f5974d7bbc57e461318d6bb34ce9cdbbc1f6b2"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3ccaa88b24eebc0f849ce0a4d09e8a408ec5a94afff395eb69baf868f5183107"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c65af9088ac534313e1963443d0ec360bb2b9cba6c2909478d22c2e363d98a51"}, + {file = "pydantic_core-2.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:206b5cf6f0c513baffaeae7bd817717140770c74528f3e4c3e1cec7871ddd61a"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:062f60e512fc7fff8b8a9d680ff0ddaaef0193dba9fa83e679c0c5f5fbd018bc"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:a0697803ed7d4af5e4c1adf1670af078f8fcab7a86350e969f454daf598c4960"}, + {file = "pydantic_core-2.27.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:58ca98a950171f3151c603aeea9303ef6c235f692fe555e883591103da709b23"}, + {file = "pydantic_core-2.27.1-cp313-none-win32.whl", hash = "sha256:8065914ff79f7eab1599bd80406681f0ad08f8e47c880f17b416c9f8f7a26d05"}, + {file = "pydantic_core-2.27.1-cp313-none-win_amd64.whl", hash = "sha256:ba630d5e3db74c79300d9a5bdaaf6200172b107f263c98a0539eeecb857b2337"}, + {file = "pydantic_core-2.27.1-cp313-none-win_arm64.whl", hash = "sha256:45cf8588c066860b623cd11c4ba687f8d7175d5f7ef65f7129df8a394c502de5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:5897bec80a09b4084aee23f9b73a9477a46c3304ad1d2d07acca19723fb1de62"}, + {file = "pydantic_core-2.27.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d0165ab2914379bd56908c02294ed8405c252250668ebcb438a55494c69f44ab"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b9af86e1d8e4cfc82c2022bfaa6f459381a50b94a29e95dcdda8442d6d83864"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f6c8a66741c5f5447e047ab0ba7a1c61d1e95580d64bce852e3df1f895c4067"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a42d6a8156ff78981f8aa56eb6394114e0dedb217cf8b729f438f643608cbcd"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64c65f40b4cd8b0e049a8edde07e38b476da7e3aaebe63287c899d2cff253fa5"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdcf339322a3fae5cbd504edcefddd5a50d9ee00d968696846f089b4432cf78"}, + {file = "pydantic_core-2.27.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf99c8404f008750c846cb4ac4667b798a9f7de673ff719d705d9b2d6de49c5f"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f1edcea27918d748c7e5e4d917297b2a0ab80cad10f86631e488b7cddf76a36"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_armv7l.whl", hash = "sha256:159cac0a3d096f79ab6a44d77a961917219707e2a130739c64d4dd46281f5c2a"}, + {file = "pydantic_core-2.27.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:029d9757eb621cc6e1848fa0b0310310de7301057f623985698ed7ebb014391b"}, + {file = "pydantic_core-2.27.1-cp38-none-win32.whl", hash = "sha256:a28af0695a45f7060e6f9b7092558a928a28553366519f64083c63a44f70e618"}, + {file = "pydantic_core-2.27.1-cp38-none-win_amd64.whl", hash = "sha256:2d4567c850905d5eaaed2f7a404e61012a51caf288292e016360aa2b96ff38d4"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:e9386266798d64eeb19dd3677051f5705bf873e98e15897ddb7d76f477131967"}, + {file = "pydantic_core-2.27.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4228b5b646caa73f119b1ae756216b59cc6e2267201c27d3912b592c5e323b60"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b3dfe500de26c52abe0477dde16192ac39c98f05bf2d80e76102d394bd13854"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aee66be87825cdf72ac64cb03ad4c15ffef4143dbf5c113f64a5ff4f81477bf9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b748c44bb9f53031c8cbc99a8a061bc181c1000c60a30f55393b6e9c45cc5bd"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ca038c7f6a0afd0b2448941b6ef9d5e1949e999f9e5517692eb6da58e9d44be"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e0bd57539da59a3e4671b90a502da9a28c72322a4f17866ba3ac63a82c4498e"}, + {file = "pydantic_core-2.27.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac6c2c45c847bbf8f91930d88716a0fb924b51e0c6dad329b793d670ec5db792"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b94d4ba43739bbe8b0ce4262bcc3b7b9f31459ad120fb595627eaeb7f9b9ca01"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_armv7l.whl", hash = "sha256:00e6424f4b26fe82d44577b4c842d7df97c20be6439e8e685d0d715feceb9fb9"}, + {file = "pydantic_core-2.27.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:38de0a70160dd97540335b7ad3a74571b24f1dc3ed33f815f0880682e6880131"}, + {file = "pydantic_core-2.27.1-cp39-none-win32.whl", hash = "sha256:7ccebf51efc61634f6c2344da73e366c75e735960b5654b63d7e6f69a5885fa3"}, + {file = "pydantic_core-2.27.1-cp39-none-win_amd64.whl", hash = "sha256:a57847b090d7892f123726202b7daa20df6694cbd583b67a592e856bff603d6c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3fa80ac2bd5856580e242dbc202db873c60a01b20309c8319b5c5986fbe53ce6"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d950caa237bb1954f1b8c9227b5065ba6875ac9771bb8ec790d956a699b78676"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e4216e64d203e39c62df627aa882f02a2438d18a5f21d7f721621f7a5d3611d"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02a3d637bd387c41d46b002f0e49c52642281edacd2740e5a42f7017feea3f2c"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:161c27ccce13b6b0c8689418da3885d3220ed2eae2ea5e9b2f7f3d48f1d52c27"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:19910754e4cc9c63bc1c7f6d73aa1cfee82f42007e407c0f413695c2f7ed777f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:e173486019cc283dc9778315fa29a363579372fe67045e971e89b6365cc035ed"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:af52d26579b308921b73b956153066481f064875140ccd1dfd4e77db89dbb12f"}, + {file = "pydantic_core-2.27.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:981fb88516bd1ae8b0cbbd2034678a39dedc98752f264ac9bc5839d3923fa04c"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5fde892e6c697ce3e30c61b239330fc5d569a71fefd4eb6512fc6caec9dd9e2f"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:816f5aa087094099fff7edabb5e01cc370eb21aa1a1d44fe2d2aefdfb5599b31"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c10c309e18e443ddb108f0ef64e8729363adbfd92d6d57beec680f6261556f3"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98476c98b02c8e9b2eec76ac4156fd006628b1b2d0ef27e548ffa978393fd154"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c3027001c28434e7ca5a6e1e527487051136aa81803ac812be51802150d880dd"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7699b1df36a48169cdebda7ab5a2bac265204003f153b4bd17276153d997670a"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:1c39b07d90be6b48968ddc8c19e7585052088fd7ec8d568bb31ff64c70ae3c97"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:46ccfe3032b3915586e469d4972973f893c0a2bb65669194a5bdea9bacc088c2"}, + {file = "pydantic_core-2.27.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:62ba45e21cf6571d7f716d903b5b7b6d2617e2d5d67c0923dc47b9d41369f840"}, + {file = "pydantic_core-2.27.1.tar.gz", hash = "sha256:62a763352879b84aa31058fc931884055fd75089cccbd9d58bb6afd01141b235"}, ] [package.dependencies] @@ -5474,12 +5482,12 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "rapidocr-onnxruntime" -version = "1.4.0" +version = "1.4.1" description = "A cross platform OCR Library based on OnnxRuntime." optional = true python-versions = "<3.13,>=3.6" files = [ - {file = "rapidocr_onnxruntime-1.4.0-py3-none-any.whl", hash = "sha256:d21c4ba2ef80b7a8ecf8178632f273398a92ab44a1ffb9e171139ef2a589d690"}, + {file = "rapidocr_onnxruntime-1.4.1-py3-none-any.whl", hash = "sha256:5ecdb8f4f3beec56630197f87c3e67ab744fce0cc66394b7b1da08c8c96a727f"}, ] [package.dependencies] @@ -5700,112 +5708,114 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.22.0" +version = "0.22.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" files = [ - {file = "rpds_py-0.22.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a4366f264fa60d3c109f0b27af0cd9eb8d46746bd70bd3d9d425f035b6c7e286"}, - {file = "rpds_py-0.22.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e34a3e665d38d0749072e6565400c8ce9abae976e338919a0dfbfb0e1ba43068"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38cacf1f378571450576f2c8ce87da6f3fddc59d744de5c12b37acc23285b1e1"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8cbb040fec8eddd5a6a75e737fd73c9ce37e51f94bacdd0b178d0174a4758395"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d80fd710b3307a3c63809048b72c536689b9b0b31a2518339c3f1a4d29c73d7a"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b5d17d8f5b885ce50e0cda85f99c0719e365e98b587338535fa566a48375afb"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7a048ec1ebc991331d709be4884dc318c9eaafa66dcde8be0933ac0e702149"}, - {file = "rpds_py-0.22.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:306da3dfa174b489a3fc63b0872e2226a5ddf94c59875a770d72aff945d5ed96"}, - {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c7b4450093c0c909299770226fb0285be47b0a57545bae25b5c4e51566b0e587"}, - {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0903ffdb5b9007e503203b6285e4ff0faf96d875c19f1d103b475acf7d9f7311"}, - {file = "rpds_py-0.22.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d1522025cda9e57329aade769f56e5793b2a5da7759a21914ee10e67e17e601e"}, - {file = "rpds_py-0.22.0-cp310-cp310-win32.whl", hash = "sha256:49e084d47a66027ac72844f9f52f13d347a9a1f05d4f84381b420e47f836a7fd"}, - {file = "rpds_py-0.22.0-cp310-cp310-win_amd64.whl", hash = "sha256:d9ceca96df54cb1675a0b7f52f1c6d5d1df62c5b40741ba211780f1b05a282a2"}, - {file = "rpds_py-0.22.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:771c9a3851beaa617d8c8115d65f834a2b52490f42ee2b88b13f1fc5529e9e0c"}, - {file = "rpds_py-0.22.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:341a07a4b55126bfae68c9bf24220a73d456111e5eb3dcbdab9fd16de2341224"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7649c8b8e4bd1ccc5fcbd51a855d57a617deeba19c66e3d04b1abecc61036b2"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2f513758e7cda8bc262e80299a8e3395d7ef7f4ae705be62632f229bc6c33208"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba1fc34d0b2f6fd53377a4c954116251eba6d076bf64f903311f4a7d27d10acd"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:632d2fdddd9fbe3ac8896a119fd18a71fc95ca9c4cbe5223096c142d8c4a2b1d"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:326e42f2b49462e05f8527a1311ce98f9f97c484b3e443ec0ea4638bed3aebcf"}, - {file = "rpds_py-0.22.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e9bbdba9e75b1a9ee1dd1335034dad998ef1acc08492226c6fd50aa773bdfa7d"}, - {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:41f65a97bf2c4b161c9f8f89bc37058346bec9b36e373c8ad00a16c957bff625"}, - {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0686f2c16eafdc2c6b4ce6e86e5b3092e87db09ae64be2787616444eb35b9756"}, - {file = "rpds_py-0.22.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e7c9aa2353eb0b0d845323857197daa036c2ff8624df990b0d886d22a8f665e"}, - {file = "rpds_py-0.22.0-cp311-cp311-win32.whl", hash = "sha256:2d2fc3ab021be3e0b5aec6d4164f2689d231b8bfc5185cc454314746aa4aee72"}, - {file = "rpds_py-0.22.0-cp311-cp311-win_amd64.whl", hash = "sha256:87453d491369cd8018016d2714a13e8461975161703c18ee31eecf087a8ae5d4"}, - {file = "rpds_py-0.22.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:e9d4293b21c69ee4f9e1a99ac4f772951d345611c614a0cfae2ec6b565279bc9"}, - {file = "rpds_py-0.22.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:67e013a17a3db4d98cc228fd5aeb36a51b0f5cf7330b9102a552060f1fe4e560"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b639a19e1791b646d27f15d17530a51722cc728d43b2dff3aeb904f92d91bac"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1357c3092702078b7782b6ebd5ba9b22c1a291c34fbf9d8f1a48237466ac7758"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:842855bbb113a19c393c6de5aa6ed9a26c6b13c2fead5e49114d39f0d08b94d8"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5ae7927cd2b869ca4dc645169d8af5494a29c99afd0ea0f24dd00c811ab1d8b8"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91bfef5daa2a5a4fe62f8d317fc91a626073639f951f851bd2cb252d01bc6c5"}, - {file = "rpds_py-0.22.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4fc4824e38c1e91a73bc820e7caacaf19d0acd557465aceef0420ca59489b390"}, - {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:92d28a608127b357da47c99e0d0e0655ca2060286540fe9f2a25a2e8ac666e05"}, - {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:c637188b930175c256f13adbfc427b83ec7e64476d1ec9d6608f312bb84e06c3"}, - {file = "rpds_py-0.22.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93bbd66f46dddc41e8c656130c97c0fb515e0fa44e1eebb2592769dbbd41b2f5"}, - {file = "rpds_py-0.22.0-cp312-cp312-win32.whl", hash = "sha256:54d8f94dec5765a9edc19610fecf0fdf9cab36cbb9def1213188215f735a6f98"}, - {file = "rpds_py-0.22.0-cp312-cp312-win_amd64.whl", hash = "sha256:931bf3d0705b2834fed29354f35170fa022fe22a95542b61b7c66aca5f8a224f"}, - {file = "rpds_py-0.22.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:2a57300cc8b034c5707085249efd09f19116bb80278d0ec925d7f3710165c510"}, - {file = "rpds_py-0.22.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c398a5a8e258dfdc5ea2aa4e5aa2ca3207f654a8eb268693dd1a76939074a588"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6cc4eb1e86364331928acafb2bb41d8ab735ca3caf2d6019b9f6dac3f4f65d"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:574c5c94213bc9990805bfd7e4ba3826d3c098516cbc19f0d0ef0433ad93fa06"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c0321bc03a1c513eca1837e3bba948b975bcf3a172aebc197ab3573207f137a"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d276280649305c1da6cdd84585d48ae1f0efa67434d8b10d2df95228e59a05bb"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c17b43fe9c6da16885e3fe28922bcd1a029e61631fb771c7d501019b40bcc904"}, - {file = "rpds_py-0.22.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48c95997af9314f4034fe5ba2d837399e786586e220835a578d28fe8161e6ae5"}, - {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e9aa4af6b879bb75a3c7766fbf49d77f4097dd12b548ecbbd8b3f85caa833281"}, - {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:8426f97117b914b9bfb2a7bd46edc148e8defda728a55a5df3a564abe70cd7a4"}, - {file = "rpds_py-0.22.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:034964ea0ea09645bdde13038b38abb14be0aa747f20fcfab6181207dd9e0483"}, - {file = "rpds_py-0.22.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:3dc7c64b56b82428894f056e9ff6e8ee917ff74fc26b65211a33602c2372e928"}, - {file = "rpds_py-0.22.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:1212cb231f2002934cd8d71a0d718fdd9d9a2dd671e0feef8501038df3508026"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f21e1278c9456cd601832375c778ca44614d3433996488221a56572c223f04a"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:875fe8dffb43c20f68379ee098b035a7038d7903c795d46715f66575a7050b19"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e23dcdd4b2ff9c6b3317ea7921b210d39592f8ca1cdea58ada25b202c65c0a69"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f0fb8efc9e579acf1e556fd86277fecec320c21ca9b5d39db96433ad8c45bc4a"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe23687924b25a2dee52fab15976fd6577ed8518072bcda9ff2e2b88ab1f168b"}, - {file = "rpds_py-0.22.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d5469b347445d1c31105f33e7bfc9a8ba213d48e42641a610dda65bf9e3c83f5"}, - {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a810a57ce5e8ecf8eac6ec4dab534ff80c34e5a2c31db60e992009cd20f58e0f"}, - {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d9bb9242b38a664f307b3b897f093896f7ed51ef4fe25a0502e5a368de9151ea"}, - {file = "rpds_py-0.22.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:b4660943030406aaa40ec9f51960dd88049903d9536bc3c8ebb5cc4e1f119bbe"}, - {file = "rpds_py-0.22.0-cp313-cp313t-win32.whl", hash = "sha256:208ce1d8e3af138d1d9b21d7206356b7f29b96675e0113aea652cf024e4ddfdc"}, - {file = "rpds_py-0.22.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e6da2e0500742e0f157f005924a0589f2e2dcbfdd6cd0cc0abce367433e989be"}, - {file = "rpds_py-0.22.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:f980a0640599a74f27fd9d50c84c293f1cb7afc2046c5c6d3efaf8ec7cdbc326"}, - {file = "rpds_py-0.22.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ca505fd3767a09a139737f3278bc8a485cb64043062da89bcba27e2f2ea78d33"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba235e00e0878ba1080b0f2a761f143b2a2d1c354f3d8e507fbf2f3de401bf18"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81e7a27365b02fe70a77f1365376879917235b3fec551d19b4c91b51d0bc1d07"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:32a0e24cab2daae0503b06666d516e90a080c1a95aff0406b9f03c6489177c4b"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a73ed43d64209e853bba567a543170267a5cd64f359540b0ca2d597e329ba172"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0abcce5e874474d3eab5ad53be03dae2abe651d248bdeaabe83708e82969e78"}, - {file = "rpds_py-0.22.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4e9946c8c7def17e4fcb5eddb14c4eb6ebc7f6f309075e6c8d23b133c104607"}, - {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:758098b38c344d9a7f279baf0689261777e601f620078ef5afdc9bd3339965c3"}, - {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:9ad4640a409bc2b7d22b7921e7660f0db96c5c8c69fbb2e8f3261d4f71d33983"}, - {file = "rpds_py-0.22.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:8c48fc7458fe3a74dcdf56ba3534ff41bd421f69436df09ff3497fdaac18b431"}, - {file = "rpds_py-0.22.0-cp39-cp39-win32.whl", hash = "sha256:fde778947304e55fc732bc8ea5c6063e74244ac1808471cb498983a210aaf62c"}, - {file = "rpds_py-0.22.0-cp39-cp39-win_amd64.whl", hash = "sha256:5fdf91a7c07f40e47b193f2acae0ed9da35d09325d7c3c3279f722b7cbf3d264"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c8fd7a16f7a047e06c747cfcf2acef3ac316132df1c6077445b29ee6f3f3a70b"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:6b6e4bcfc32f831bfe3d6d8a5acedfbfd5e252a03c83fa24813b277a3a8a13ca"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eadd2417e83a77ce3ae4a0efd08cb0ebdfd317b6406d11020354a53ad458ec84"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9dc2113e0cf0dd637751ca736186fca63664939ceb9f9f67e93ade88c69c0c9"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc2c00acdf68f1f69a476b770af311a7dc3955b7de228b04a40bcc51ac4d743b"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dfdabdf8519c93908b2bf0f87c3f86f9e88bab279fb4acfd0907519ca5a1739f"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8338db3c76833d02dc21c3e2c42534091341d26e4f7ba32c6032bb558a02e07b"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8ad4dfda52e64af3202ceb2143a62deba97894b71c64a4405ee80f6b3ea77285"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:3b94b074dcce39976db22ea75c7aea8b22d95e6d3b62f76e20e1179a278521d8"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d4f2af3107fe4dc40c0d1a2409863f5249c6796398a1d83c1d99a0b3fa6cfb8d"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:bb11809b0de643a292a82f728c494a2bbef0e30a7c42d37464abbd6bef7ca7b1"}, - {file = "rpds_py-0.22.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c1c21030ed494deb10226f90e2dbd84a012d59810c409832714a3dd576527be2"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:64a0c965a1e299c9b280006bdb15c276c427c45360aed676305dc36bcaa4d13c"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2498ff422823be087b48bc82710deb87ac34f6b7c8034ee39920647647de1e60"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59e63da174ff287db05ef7c21d75974a5bac727ed60452aeb3a14278477842a8"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1c04fb380bc8efaae2fdf17ed6cd5d223da78a8b0b18a610f53d4c5d6e31dfd"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e04919ffa9a728c446b27b6b625fa1d00ece221bdb9d633e978a7e0353a12c0e"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:24c28df05bd284879d0fac850ba697077d2a33b7ebcaea6318d6b6cdfdc86ddc"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d33622dc63c295788eed09dbb1d11bed178909d3267b02d873116ee6be368244"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7539dbb8f705e13629ba6f23388976aad809e387f32a6e5c0712e4e8d9bfcce7"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b8906f537978da3f7f0bd1ba37b69f6a877bb43312023b086582707d2835bf2f"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:62ab12fe03ffc49978d29de9c31bbb216610157f7e5ca8e172fed6642aead3be"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:762206ba3bf1d6c8c9e0055871d3c0d5b074b7c3120193e6c067e7866f106ab1"}, - {file = "rpds_py-0.22.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ed0102146574e5e9f079b2e1a06e6b5b12a691f9c74a65b93b7f3d4feda566c6"}, - {file = "rpds_py-0.22.0.tar.gz", hash = "sha256:32de71c393f126d8203e9815557c7ff4d72ed1ad3aa3f52f6c7938413176750a"}, + {file = "rpds_py-0.22.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ab27dd4edd84b13309f268ffcdfc07aef8339135ffab7b6d43f16884307a2a48"}, + {file = "rpds_py-0.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9d5b925156a746dc1f5f52376fdd1fbdd3f6ffe1fcd6f5e06f77ca79abb940a3"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201650b309c419143775c15209c620627de3c09a27c7fb58375325aec5cce260"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31264187fc934ff1024a4f56775f33c9252d3f4f3e27ec07d1995a26b52702c3"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97c5ffe47ccf92d8b17e10f8a5ce28d015aa1196edc3359684cf31504eae6a14"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9ac7280bd045f472b50306d7efeee051b69e3a2dd1b90f46bd7e86e63b1efa2"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f941fb86195f97be7f6efe04a21b223f05dfe4d1dfb159999e2f8d101e44cc4"}, + {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f91bfc39f7a64168e08ab831fa497ec5438c1d6c6e2f9e12848d95ad11ac8523"}, + {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:effcae2152afe7937a28376dbabb25c770ef99ed4e16a4ffeb8e6a4f7c4f06aa"}, + {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:2177e59c033bf0d1bf7de1ced561205963583caf3242c6c700a723034bfb5f8e"}, + {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:66f4f48a89cdd30ab3a47335df81c76e9a63799d0d84b29c0618371c66fa37b0"}, + {file = "rpds_py-0.22.1-cp310-cp310-win32.whl", hash = "sha256:b07fa9e634234e84096adfa4be3828c8f26e238679c122824b2b3d7131bec578"}, + {file = "rpds_py-0.22.1-cp310-cp310-win_amd64.whl", hash = "sha256:ca4657e9fd0b1b5376942d403d634ce188f79064f0873aa853ab05b10185ceec"}, + {file = "rpds_py-0.22.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:608c84699b2db09c6a8743845b1a3dad36fae53eaaecb241d45b13dff74405fb"}, + {file = "rpds_py-0.22.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9dae4eb9b5534e09ba6c6ab496a757e5e394b7e7b08767d25ca37e8d36491114"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09a1f000c5f6e08b298275bae00921e9fbbf2a35dae0a86db2821c058c2201a9"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:580ccbf11f02f948add4cb641843030a89f1463d7c0740cbfc9aca91e9dc34b3"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96559e05bdf938b2048353e10a7920b98f853cefe4482c2064a718d7d0a50bd7"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128cbaed7ba26116820bcb992405d6a13ea18c8fca1b8c4f59906d858e91e979"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:734783dd7da58f76222f458346ddebdb3621686a1a2a667db5049caf0c9956b9"}, + {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c9ce6b83597d45bec44a2690857ede62fc98223772135f8a7fa90884eb726501"}, + {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bca4428c4a957b78ded3e6e62884ab03f029dce8fa8d34818da0f80f61332b49"}, + {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1ded65691a1d3fd7d2aa89d2c91aa51f941601bb2ce099739909034d957fef4b"}, + {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72407065ad459db9f3d052ea8c51e02534f02533fc61e51cbab3bd94166f086c"}, + {file = "rpds_py-0.22.1-cp311-cp311-win32.whl", hash = "sha256:eb013aa01b404219f28dc973d9e6310fd4db216d7299253dd355629952e0564e"}, + {file = "rpds_py-0.22.1-cp311-cp311-win_amd64.whl", hash = "sha256:8bd9ec1db79a664f4cbb12878693b73416f4d2cb425d3e27eccc1bdfbdc826ef"}, + {file = "rpds_py-0.22.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8ec41049c90d204a6561238a9ad6c7263ebb7009d9759c98b58078d9d2fec9ba"}, + {file = "rpds_py-0.22.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:102be79c4cc47a4aeb5912401185c404cd2601c15a7163bbecff7f1bfe20b669"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a603155db408f773637f9e3a712c6e3cbc521aaa8fa2b99f9ba6106c59a2496"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5dbff9402c2bdf00bf0df9905694b3c292a3847c725651938a72f554351a5fcb"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96b3759d8ab2323324e0a92b2f44834f9d88089b8d1ab6f533b61f4be3411cef"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3029f481b31f329b1fdb4ec4b56935d82210ddd9c6f86ea5a87c06f1e97b161"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d280b4bf09f719b89fd9aab3b71067acc0d0449b7d1eba99a2ade4939cef8296"}, + {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8e97e19aa7b0b0d801a159f932ce4435f1049c8c38e2bb372bb5bee559ce50"}, + {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50e4b5d291105f7063259fe0125b1af902fb34499444d7c5c521dd8328b00939"}, + {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d3777c446bb1c5fcd82dc3f8776e1a146cd91e80cc1892f8634575ace438d22f"}, + {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:447ae1104fb32197b9262f772d565d38e834cc2e9edd89350b37b88fed636e70"}, + {file = "rpds_py-0.22.1-cp312-cp312-win32.whl", hash = "sha256:55d371b9d8b0c2a68a50413a8cb01c3c3ce1ea4f768bf77b66669a9a486e101e"}, + {file = "rpds_py-0.22.1-cp312-cp312-win_amd64.whl", hash = "sha256:413a30a99d8683dace3765885920ed27ab662efbb6c98d81db76c397ad1ffd71"}, + {file = "rpds_py-0.22.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa2ba0176037c915d8660a4e46581d645e2c22b5373e466bc8640a794d45861a"}, + {file = "rpds_py-0.22.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ba6c66fbc6015b2f99e7176fec41793cecb00c4cc357cad038dff85e6ac42ab"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15fa4ca658f8ad22645d3531682b17e5580832efbfa87304c3e62214c79c1e8a"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7833ef6f5d6cb634f296abfd93452fb3eb44c4e9a6ae95c1021eab704c1cee2"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0467838c90435b80793cde486a318fc916ee57f2af54e4b10c72b20cbdcbaa9"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d962e2e89b3a95e3597a34b8c93ced1e98958502c5b8096c9fd69deff279f561"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ce729f1dc8a4a190c34b69f75377bddc004079b2963ab722ab91fafe040be6d"}, + {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8080467df22feca0fc9c46567001777c6fbc2b4a2683a7137420896051874ca1"}, + {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0f9eb37d3a60b262a98ab51ee899cac039de9ca0ce68dcf1a6518a09719020b0"}, + {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:153248f48d6f90a295a502f53ec544a3ffbd21b0bb32f5dca39c4b93a764d6a2"}, + {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0a53592cdf98cec3dfcdb24ffec8a4797e7656b65700099af43ec7df023b6de4"}, + {file = "rpds_py-0.22.1-cp313-cp313-win32.whl", hash = "sha256:e8056adcefa2dcb67e8bc91ea5eee26df66e8b297a8cd6ff0903f85c70908fa0"}, + {file = "rpds_py-0.22.1-cp313-cp313-win_amd64.whl", hash = "sha256:a451dba533be77454ebcffc85189108fc05f279100835ac76e7989edacb89156"}, + {file = "rpds_py-0.22.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:2ea23f1525d4f64286dbe0947c929d45c3ffe963b2dbed1d3844a2e4938bda42"}, + {file = "rpds_py-0.22.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3aaa22487477de9618ce3b37f99fbe81219ba96f3c2ca84f576f0ab451b83aba"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8954b9ffe60f479a0c0ba40987db2546c735ab02a725ea7fd89342152d4d821d"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8502a02ae3ae67084f5a0bf5a8253b19fa7a887f824e41e016cdb0ac532a06f"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a083221b6a4ecdef38a60c95d8d3223d99449cb4da2544e9644958dc16664eb9"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:542eb246d5be31b5e0a9c8ddb9539416f9b31f58f75bd4ee328bff2b5c58d6fd"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffae97d28ea4f2c613a751d087b75a97fb78311b38cc2e9a2f4587e473ace167"}, + {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0ff8d5b13ce2357fa8b33a0a2e3775aa71df5bf7c8ba060634c9d15ab12f357"}, + {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0f057a0c546c42964836b209d8de9ea1a4f4b0432006c6343cbe633d8ca14571"}, + {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:48ee97c7c6027fd423058675b5a39d0b5f7a1648250b671563d5c9f74ff13ff0"}, + {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:babec324e8654a59122aaa66936a9a483faa03276db9792f51332475c2dddc4a"}, + {file = "rpds_py-0.22.1-cp313-cp313t-win32.whl", hash = "sha256:e69acdbc132c9592c8dc393af85e38e206ca847c7019a953ff625191c3a12312"}, + {file = "rpds_py-0.22.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c783e4ed68200f4e03c125690d23158b1c49c4b186d458a18debc109bbdc3c2e"}, + {file = "rpds_py-0.22.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2143c3aed85992604d758bbe67da839fb4aab3dd2e1c6dddab5b3ca7162b34a2"}, + {file = "rpds_py-0.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f57e2d0f8022783426121b586d7c842ea40ea832a29e28ca36c881b54c74fb28"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c0c324879d483504b07f7b18eb1b50567c434263bbe4866ecce33056162668a"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c40e02cc4f3e18fd39344edb10eebe04bd11cfd13119606b5771e5ea51630d3"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f76c6f319e57007ad52e671ec741d801324760a377e3d4992c9bb8200333ebac"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5cae9b415ea8a6a563566dbf46650222eccc5971c7daa16fbee63aef92ae543"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b09209cdfcacf5eba9cf80367130532e6c02e695252e1f64d3cfcc2356e6e19f"}, + {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbe428d0ac6eacaf05402adbaf137f59ad6063848182d1ff294f95ce0f24005b"}, + {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:626b9feb01bff049a5aec4804f0c58db12585778b4902e5376a95b01f80a7a16"}, + {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec1ccc2a9f764cd632fb8ab28fdde166250df54fc8d97315a4a6948dc5367639"}, + {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ef92b1fbe6aa2e7885eb90853cc016b1fc95439a8cc8da6d526880e9e2148695"}, + {file = "rpds_py-0.22.1-cp39-cp39-win32.whl", hash = "sha256:c88535f83f7391cf3a45af990237e3939a6fdfbedaed2571633bfdd0bceb36b0"}, + {file = "rpds_py-0.22.1-cp39-cp39-win_amd64.whl", hash = "sha256:7839b7528faa4d134c183b1f2dd1ee4dc2ca2f899f4f0cfdf00fc04c255262a7"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a0ed14a4162c2c2b21a162c9fcf90057e3e7da18cd171ab344c1e1664f75090e"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:05fdeae9010533e47715c37df83264df0122584e40d691d50cf3607c060952a3"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4659b2e4a5008715099e216050f5c6976e5a4329482664411789968b82e3f17d"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a18aedc032d6468b73ebbe4437129cb30d54fe543cde2f23671ecad76c3aea24"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149b4d875ef9b12a8f5e303e86a32a58f8ef627e57ec97a7d0e4be819069d141"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdaee3947eaaa52dae3ceb9d9f66329e13d8bae35682b1e5dd54612938693934"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ce951800ed2acc6772fd9f42150f29d567f0423989748052fdb39d9e2b5795"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ab784621d3e2a41916e21f13a483602cc989fd45fff637634b9231ba43d4383b"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c2a214bf5b79bd39a9de1c991353aaaacafda83ba1374178309e92be8e67d411"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:85060e96953647871957d41707adb8d7bff4e977042fd0deb4fc1881b98dd2fe"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c6f3fd617db422c9d4e12cb8d84c984fe07d6d9cb0950cbf117f3bccc6268d05"}, + {file = "rpds_py-0.22.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f2d1b58a0c3a73f0361759642e80260a6d28eee6501b40fe25b82af33ef83f21"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:76eaa4c087a061a2c8a0a92536405069878a8f530c00e84a9eaf332e70f5561f"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:959ae04ed30cde606f3a0320f0a1f4167a107e685ef5209cce28c5080590bd31"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:198067aa6f3d942ff5d0d655bb1e91b59ae85279d47590682cba2834ac1b97d2"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e7e99e2af59c56c59b6c964d612511b8203480d39d1ef83edc56f2cb42a3f5d"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0545928bdf53dfdfcab284468212efefb8a6608ca3b6910c7fb2e5ed8bdc2dc0"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef7282d8a14b60dd515e47060638687710b1d518f4b5e961caad43fb3a3606f9"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3f245c2f39a5692d9123c174bc48f6f9fe3e96407e67c6d04541a767d99e72"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efb2ad60ca8637d5f9f653f9a9a8d73964059972b6b95036be77e028bffc68a3"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d8306f27418361b788e3fca9f47dec125457f80122e7e31ba7ff5cdba98343f8"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4c8dc7331e8cbb1c0ea2bcb550adb1777365944ffd125c69aa1117fdef4887f5"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:776a06cb5720556a549829896a49acebb5bdd96c7bba100191a994053546975a"}, + {file = "rpds_py-0.22.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e4f91d702b9ce1388660b3d4a28aa552614a1399e93f718ed0dacd68f23b3d32"}, + {file = "rpds_py-0.22.1.tar.gz", hash = "sha256:157a023bded0618a1eea54979fe2e0f9309e9ddc818ef4b8fc3b884ff38fedd5"}, ] [[package]] @@ -7647,4 +7657,4 @@ tesserocr = ["tesserocr"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "33ee730cf750e618ec005ad44ad09617bc8f95632b30ac02b5290a03a33bdf5b" +content-hash = "9937d92a9800a7064976f0e1f797c5da648e635c7b331904ad302dacef961ecc" diff --git a/pyproject.toml b/pyproject.toml index e41e4236..672a3487 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,8 @@ packages = [{include = "docling"}] # actual dependencies: ###################### python = "^3.9" -pydantic = ">=2.0.0,<2.10" -docling-core = "^2.6.1" +pydantic = "^2.0.0" +docling-core = "^2.7.0" docling-ibm-models = "^2.0.6" deepsearch-glm = "^0.26.1" filetype = "^1.2.0" From 63f1125d5c8d372d6065e79c313b50750018703e Mon Sep 17 00:00:00 2001 From: Maxim Lysak <101627549+maxmnemonic@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:37:25 +0100 Subject: [PATCH 03/13] fix: Missing text in docx (t tag) when embedded in a table (#528) Fix for missing text in docx (t tag) when embedded in a table Signed-off-by: Maksym Lysak Co-authored-by: Maksym Lysak Signed-off-by: Christoph Auer --- docling/backend/msword_backend.py | 33 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/docling/backend/msword_backend.py b/docling/backend/msword_backend.py index 05508712..bab956a7 100644 --- a/docling/backend/msword_backend.py +++ b/docling/backend/msword_backend.py @@ -133,7 +133,6 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): def walk_linear(self, body, docx_obj, doc) -> DoclingDocument: for element in body: tag_name = etree.QName(element).localname - # Check for Inline Images (blip elements) namespaces = { "a": "http://schemas.openxmlformats.org/drawingml/2006/main", @@ -153,6 +152,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): self.handle_pictures(element, docx_obj, drawing_blip, doc) # Check for Text elif tag_name in ["p"]: + # "tcPr", "sectPr" self.handle_text_elements(element, docx_obj, doc) else: _log.debug(f"Ignoring element in DOCX with tag: {tag_name}") @@ -219,7 +219,6 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): if paragraph.text is None: return text = paragraph.text.strip() - # if len(text)==0 # keep empty paragraphs, they seperate adjacent lists! # Common styles for bullet and numbered lists. # "List Bullet", "List Number", "List Paragraph" @@ -291,9 +290,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): def add_header(self, element, docx_obj, doc, curr_name, curr_level, text: str): level = self.get_level() if isinstance(curr_level, int): - if curr_level > level: - # add invisible group for i in range(level, curr_level): self.parents[i] = doc.add_group( @@ -301,9 +298,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): label=GroupLabel.SECTION, name=f"header-{i}", ) - elif curr_level < level: - # remove the tail for key, val in self.parents.items(): if key >= curr_level: @@ -314,7 +309,6 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): text=text, level=curr_level, ) - else: self.parents[self.level] = doc.add_heading( parent=self.parents[self.level - 1], @@ -346,7 +340,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): label=GroupLabel.LIST, name="list", parent=self.parents[level - 1] ) - # TODO: Set marker and enumerated arguments if this is an enumeration element. + # Set marker and enumerated arguments if this is an enumeration element. self.listIter += 1 if is_numbered: enum_marker = str(self.listIter) + "." @@ -365,8 +359,8 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): self.level_at_new_list + self.prev_indent() + 1, self.level_at_new_list + ilevel + 1, ): - # TODO: determine if this is an unordered list or an ordered list. - # Set GroupLabel.ORDERED_LIST when it fits. + # Determine if this is an unordered list or an ordered list. + # Set GroupLabel.ORDERED_LIST when it fits. self.listIter = 0 if is_numbered: self.parents[i] = doc.add_group( @@ -467,6 +461,19 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): row_span = get_rowspan(cell) col_span = get_colspan(cell) + cell_text = cell.text + # In case cell doesn't return text via docx library: + if len(cell_text) == 0: + cell_xml = cell._element + + texts = [""] + for elem in cell_xml.iter(): + if elem.tag.endswith("t"): # tags that contain text + if elem.text: + texts.append(elem.text) + # Join the collected text + cell_text = " ".join(texts).strip() + # Find the next available column in the grid while table_grid[row_idx][col_idx] is not None: col_idx += 1 @@ -477,15 +484,15 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): table_grid[row_idx + i][col_idx + j] = "" cell = TableCell( - text=cell.text, + text=cell_text, row_span=row_span, col_span=col_span, start_row_offset_idx=row_idx, end_row_offset_idx=row_idx + row_span, start_col_offset_idx=col_idx, end_col_offset_idx=col_idx + col_span, - col_header=False, # col_header, - row_header=False, # ((not col_header) and html_cell.name=='th') + col_header=False, + row_header=False, ) data.table_cells.append(cell) From 54b4daa2dd12b02bcfcf0f0a0f370ea1c75ef4ea Mon Sep 17 00:00:00 2001 From: "Peter W. J. Staar" <91719829+PeterStaar-IBM@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:37:57 +0100 Subject: [PATCH 04/13] fix: Enable HTML export in CLI and add options for image mode (#513) * updated README Signed-off-by: Peter Staar * removed duck in title Signed-off-by: Peter Staar * updated the index.md Signed-off-by: Peter Staar * updated the cli to export html Signed-off-by: Peter Staar * added html to cli Signed-off-by: Peter Staar * reformatted the code Signed-off-by: Peter Staar * removed the duck emoji, added the in the cli. Currently, the referenced seems broken Signed-off-by: Peter Staar * cleaning up the comments Signed-off-by: Peter Staar * reference is now working Signed-off-by: Peter Staar * Clean up styling and docs Signed-off-by: Christoph Auer * Pin docling-core>=2.7.1 Signed-off-by: Christoph Auer --------- Signed-off-by: Peter Staar Signed-off-by: Christoph Auer Co-authored-by: Christoph Auer Signed-off-by: Christoph Auer --- README.md | 4 +- docling/cli/main.py | 58 +++- docling/datamodel/base_models.py | 1 + docs/index.md | 2 +- mkdocs.yml | 2 +- poetry.lock | 570 +++++++++++++------------------ pyproject.toml | 2 +- 7 files changed, 288 insertions(+), 351 deletions(-) diff --git a/README.md b/README.md index cafb15b4..98222f83 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@

-# 🦆 Docling +# Docling

DS4SD%2Fdocling | Trendshift @@ -26,7 +26,7 @@ Docling parses documents and exports them to the desired format with ease and sp ## Features -* 🗂️ Reads popular document formats (PDF, DOCX, PPTX, XLSX, Images, HTML, AsciiDoc & Markdown) and exports to Markdown and JSON +* 🗂️ Reads popular document formats (PDF, DOCX, PPTX, XLSX, Images, HTML, AsciiDoc & Markdown) and exports to HTML, Markdown and JSON (with embedded and referenced images) * 📑 Advanced PDF document understanding including page layout, reading order & table structures * 🧩 Unified, expressive [DoclingDocument](https://ds4sd.github.io/docling/concepts/docling_document/) representation format * 🤖 Easy integration with 🦙 LlamaIndex & 🦜🔗 LangChain for powerful RAG / QA applications diff --git a/docling/cli/main.py b/docling/cli/main.py index 87a93d15..ee18be97 100644 --- a/docling/cli/main.py +++ b/docling/cli/main.py @@ -10,6 +10,7 @@ from pathlib import Path from typing import Annotated, Dict, Iterable, List, Optional, Type import typer +from docling_core.types.doc import ImageRefMode from docling_core.utils.file import resolve_source_to_path from pydantic import TypeAdapter, ValidationError @@ -87,9 +88,11 @@ def export_documents( conv_results: Iterable[ConversionResult], output_dir: Path, export_json: bool, + export_html: bool, export_md: bool, export_txt: bool, export_doctags: bool, + image_export_mode: ImageRefMode, ): success_count = 0 @@ -100,33 +103,45 @@ def export_documents( success_count += 1 doc_filename = conv_res.input.file.stem - # Export Deep Search document JSON format: + # Export JSON format: if export_json: fname = output_dir / f"{doc_filename}.json" - with fname.open("w", encoding="utf8") as fp: - _log.info(f"writing JSON output to {fname}") - fp.write(json.dumps(conv_res.document.export_to_dict())) + _log.info(f"writing JSON output to {fname}") + conv_res.document.save_as_json( + filename=fname, image_mode=image_export_mode + ) + + # Export HTML format: + if export_html: + fname = output_dir / f"{doc_filename}.html" + _log.info(f"writing HTML output to {fname}") + conv_res.document.save_as_html( + filename=fname, image_mode=image_export_mode + ) # Export Text format: if export_txt: fname = output_dir / f"{doc_filename}.txt" - with fname.open("w", encoding="utf8") as fp: - _log.info(f"writing Text output to {fname}") - fp.write(conv_res.document.export_to_markdown(strict_text=True)) + _log.info(f"writing TXT output to {fname}") + conv_res.document.save_as_markdown( + filename=fname, + strict_text=True, + image_mode=ImageRefMode.PLACEHOLDER, + ) # Export Markdown format: if export_md: fname = output_dir / f"{doc_filename}.md" - with fname.open("w", encoding="utf8") as fp: - _log.info(f"writing Markdown output to {fname}") - fp.write(conv_res.document.export_to_markdown()) + _log.info(f"writing Markdown output to {fname}") + conv_res.document.save_as_markdown( + filename=fname, image_mode=image_export_mode + ) # Export Document Tags format: if export_doctags: fname = output_dir / f"{doc_filename}.doctags" - with fname.open("w", encoding="utf8") as fp: - _log.info(f"writing Doc Tags output to {fname}") - fp.write(conv_res.document.export_to_document_tokens()) + _log.info(f"writing Doc Tags output to {fname}") + conv_res.document.save_as_document_tokens(filename=fname) else: _log.warning(f"Document {conv_res.input.file} failed to convert.") @@ -161,6 +176,13 @@ def convert( to_formats: List[OutputFormat] = typer.Option( None, "--to", help="Specify output formats. Defaults to Markdown." ), + image_export_mode: Annotated[ + ImageRefMode, + typer.Option( + ..., + help="Image export mode for the document (only in case of JSON, Markdown or HTML). With `placeholder`, only the position of the image is marked in the output. In `embedded` mode, the image is embedded as base64 encoded string. In `referenced` mode, the image is exported in PNG format and referenced from the main exported document.", + ), + ] = ImageRefMode.EMBEDDED, ocr: Annotated[ bool, typer.Option( @@ -299,6 +321,7 @@ def convert( to_formats = [OutputFormat.MARKDOWN] export_json = OutputFormat.JSON in to_formats + export_html = OutputFormat.HTML in to_formats export_md = OutputFormat.MARKDOWN in to_formats export_txt = OutputFormat.TEXT in to_formats export_doctags = OutputFormat.DOCTAGS in to_formats @@ -330,6 +353,13 @@ def convert( ) pipeline_options.table_structure_options.mode = table_mode + if image_export_mode != ImageRefMode.PLACEHOLDER: + pipeline_options.generate_page_images = True + pipeline_options.generate_picture_images = ( + True # FIXME: to be deprecated in verson 3 + ) + pipeline_options.images_scale = 2 + if artifacts_path is not None: pipeline_options.artifacts_path = artifacts_path @@ -364,9 +394,11 @@ def convert( conv_results, output_dir=output, export_json=export_json, + export_html=export_html, export_md=export_md, export_txt=export_txt, export_doctags=export_doctags, + image_export_mode=image_export_mode, ) end_time = time.time() - start_time diff --git a/docling/datamodel/base_models.py b/docling/datamodel/base_models.py index 55a19ac3..b71c0f97 100644 --- a/docling/datamodel/base_models.py +++ b/docling/datamodel/base_models.py @@ -41,6 +41,7 @@ class InputFormat(str, Enum): class OutputFormat(str, Enum): MARKDOWN = "md" JSON = "json" + HTML = "html" TEXT = "text" DOCTAGS = "doctags" diff --git a/docs/index.md b/docs/index.md index 3ae3ceb6..7b741728 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,7 +18,7 @@ Docling parses documents and exports them to the desired format with ease and sp ## Features -* 🗂️ Reads popular document formats (PDF, DOCX, PPTX, XLSX, Images, HTML, AsciiDoc & Markdown) and exports to Markdown and JSON +* 🗂️ Reads popular document formats (PDF, DOCX, PPTX, XLSX, Images, HTML, AsciiDoc & Markdown) and exports to HTML, Markdown and JSON (with embedded and referenced images) * 📑 Advanced PDF document understanding incl. page layout, reading order & table structures * 🧩 Unified, expressive [DoclingDocument](./concepts/docling_document.md) representation format * 🤖 Easy integration with 🦙 LlamaIndex & 🦜🔗 LangChain for powerful RAG / QA applications diff --git a/mkdocs.yml b/mkdocs.yml index 731e2ee6..f118edbd 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -53,7 +53,7 @@ theme: - toc.follow nav: - Home: - - "🦆 Docling": index.md + - "Docling": index.md - Installation: installation.md - Usage: usage.md - CLI: cli.md diff --git a/poetry.lock b/poetry.lock index d2a3876d..becf1b33 100644 --- a/poetry.lock +++ b/poetry.lock @@ -13,87 +13,87 @@ files = [ [[package]] name = "aiohttp" -version = "3.11.9" +version = "3.11.10" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.9" files = [ - {file = "aiohttp-3.11.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0411777249f25d11bd2964a230b3ffafcbed6cd65d0f2b132bc2b8f5b8c347c7"}, - {file = "aiohttp-3.11.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:499368eb904566fbdf1a3836a1532000ef1308f34a1bcbf36e6351904cced771"}, - {file = "aiohttp-3.11.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0b5a5009b0159a8f707879dc102b139466d8ec6db05103ec1520394fdd8ea02c"}, - {file = "aiohttp-3.11.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:176f8bb8931da0613bb0ed16326d01330066bb1e172dd97e1e02b1c27383277b"}, - {file = "aiohttp-3.11.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6435a66957cdba1a0b16f368bde03ce9c79c57306b39510da6ae5312a1a5b2c1"}, - {file = "aiohttp-3.11.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:202f40fb686e5f93908eee0c75d1e6fbe50a43e9bd4909bf3bf4a56b560ca180"}, - {file = "aiohttp-3.11.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39625703540feb50b6b7f938b3856d1f4886d2e585d88274e62b1bd273fae09b"}, - {file = "aiohttp-3.11.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c6beeac698671baa558e82fa160be9761cf0eb25861943f4689ecf9000f8ebd0"}, - {file = "aiohttp-3.11.9-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:96726839a42429318017e67a42cca75d4f0d5248a809b3cc2e125445edd7d50d"}, - {file = "aiohttp-3.11.9-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3f5461c77649358610fb9694e790956b4238ac5d9e697a17f63619c096469afe"}, - {file = "aiohttp-3.11.9-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4313f3bc901255b22f01663eeeae167468264fdae0d32c25fc631d5d6e15b502"}, - {file = "aiohttp-3.11.9-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:d6e274661c74195708fc4380a4ef64298926c5a50bb10fbae3d01627d7a075b7"}, - {file = "aiohttp-3.11.9-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:db2914de2559809fdbcf3e48f41b17a493b58cb7988d3e211f6b63126c55fe82"}, - {file = "aiohttp-3.11.9-cp310-cp310-win32.whl", hash = "sha256:27935716f8d62c1c73010428db310fd10136002cfc6d52b0ba7bdfa752d26066"}, - {file = "aiohttp-3.11.9-cp310-cp310-win_amd64.whl", hash = "sha256:afbe85b50ade42ddff5669947afde9e8a610e64d2c80be046d67ec4368e555fa"}, - {file = "aiohttp-3.11.9-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:afcda759a69c6a8be3aae764ec6733155aa4a5ad9aad4f398b52ba4037942fe3"}, - {file = "aiohttp-3.11.9-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c5bba6b83fde4ca233cfda04cbd4685ab88696b0c8eaf76f7148969eab5e248a"}, - {file = "aiohttp-3.11.9-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:442356e8924fe1a121f8c87866b0ecdc785757fd28924b17c20493961b3d6697"}, - {file = "aiohttp-3.11.9-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f737fef6e117856400afee4f17774cdea392b28ecf058833f5eca368a18cf1bf"}, - {file = "aiohttp-3.11.9-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea142255d4901b03f89cb6a94411ecec117786a76fc9ab043af8f51dd50b5313"}, - {file = "aiohttp-3.11.9-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1e9e447856e9b7b3d38e1316ae9a8c92e7536ef48373de758ea055edfd5db5"}, - {file = "aiohttp-3.11.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7f6173302f8a329ca5d1ee592af9e628d3ade87816e9958dcf7cdae2841def7"}, - {file = "aiohttp-3.11.9-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a7c6147c6306f537cff59409609508a1d2eff81199f0302dd456bb9e7ea50c39"}, - {file = "aiohttp-3.11.9-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e9d036a9a41fc78e8a3f10a86c2fc1098fca8fab8715ba9eb999ce4788d35df0"}, - {file = "aiohttp-3.11.9-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2ac9fd83096df36728da8e2f4488ac3b5602238f602706606f3702f07a13a409"}, - {file = "aiohttp-3.11.9-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d3108f0ad5c6b6d78eec5273219a5bbd884b4aacec17883ceefaac988850ce6e"}, - {file = "aiohttp-3.11.9-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:96bbec47beb131bbf4bae05d8ef99ad9e5738f12717cfbbf16648b78b0232e87"}, - {file = "aiohttp-3.11.9-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fc726c3fa8f606d07bd2b500e5dc4c0fd664c59be7788a16b9e34352c50b6b6b"}, - {file = "aiohttp-3.11.9-cp311-cp311-win32.whl", hash = "sha256:5720ebbc7a1b46c33a42d489d25d36c64c419f52159485e55589fbec648ea49a"}, - {file = "aiohttp-3.11.9-cp311-cp311-win_amd64.whl", hash = "sha256:17af09d963fa1acd7e4c280e9354aeafd9e3d47eaa4a6bfbd2171ad7da49f0c5"}, - {file = "aiohttp-3.11.9-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c1f2d7fd583fc79c240094b3e7237d88493814d4b300d013a42726c35a734bc9"}, - {file = "aiohttp-3.11.9-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d4b8a1b6c7a68c73191f2ebd3bf66f7ce02f9c374e309bdb68ba886bbbf1b938"}, - {file = "aiohttp-3.11.9-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd3f711f4c99da0091ced41dccdc1bcf8be0281dc314d6d9c6b6cf5df66f37a9"}, - {file = "aiohttp-3.11.9-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44cb1a1326a0264480a789e6100dc3e07122eb8cd1ad6b784a3d47d13ed1d89c"}, - {file = "aiohttp-3.11.9-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7a7ddf981a0b953ade1c2379052d47ccda2f58ab678fca0671c7c7ca2f67aac2"}, - {file = "aiohttp-3.11.9-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ffa45cc55b18d4ac1396d1ddb029f139b1d3480f1594130e62bceadf2e1a838"}, - {file = "aiohttp-3.11.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cca505829cdab58c2495ff418c96092d225a1bbd486f79017f6de915580d3c44"}, - {file = "aiohttp-3.11.9-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44d323aa80a867cb6db6bebb4bbec677c6478e38128847f2c6b0f70eae984d72"}, - {file = "aiohttp-3.11.9-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b2fab23003c4bb2249729a7290a76c1dda38c438300fdf97d4e42bf78b19c810"}, - {file = "aiohttp-3.11.9-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:be0c7c98e38a1e3ad7a6ff64af8b6d6db34bf5a41b1478e24c3c74d9e7f8ed42"}, - {file = "aiohttp-3.11.9-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5cc5e0d069c56645446c45a4b5010d4b33ac6c5ebfd369a791b5f097e46a3c08"}, - {file = "aiohttp-3.11.9-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9bcf97b971289be69638d8b1b616f7e557e1342debc7fc86cf89d3f08960e411"}, - {file = "aiohttp-3.11.9-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c7333e7239415076d1418dbfb7fa4df48f3a5b00f8fdf854fca549080455bc14"}, - {file = "aiohttp-3.11.9-cp312-cp312-win32.whl", hash = "sha256:9384b07cfd3045b37b05ed002d1c255db02fb96506ad65f0f9b776b762a7572e"}, - {file = "aiohttp-3.11.9-cp312-cp312-win_amd64.whl", hash = "sha256:f5252ba8b43906f206048fa569debf2cd0da0316e8d5b4d25abe53307f573941"}, - {file = "aiohttp-3.11.9-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:282e0a7ddd36ebc411f156aeaa0491e8fe7f030e2a95da532cf0c84b0b70bc66"}, - {file = "aiohttp-3.11.9-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebd3e6b0c7d4954cca59d241970011f8d3327633d555051c430bd09ff49dc494"}, - {file = "aiohttp-3.11.9-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:30f9f89ae625d412043f12ca3771b2ccec227cc93b93bb1f994db6e1af40a7d3"}, - {file = "aiohttp-3.11.9-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a3b5b2c012d70c63d9d13c57ed1603709a4d9d7d473e4a9dfece0e4ea3d5f51"}, - {file = "aiohttp-3.11.9-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6ef1550bb5f55f71b97a6a395286db07f7f2c01c8890e613556df9a51da91e8d"}, - {file = "aiohttp-3.11.9-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317251b9c9a2f1a9ff9cd093775b34c6861d1d7df9439ce3d32a88c275c995cd"}, - {file = "aiohttp-3.11.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21cbe97839b009826a61b143d3ca4964c8590d7aed33d6118125e5b71691ca46"}, - {file = "aiohttp-3.11.9-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:618b18c3a2360ac940a5503da14fa4f880c5b9bc315ec20a830357bcc62e6bae"}, - {file = "aiohttp-3.11.9-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0cf4d814689e58f57ecd5d8c523e6538417ca2e72ff52c007c64065cef50fb2"}, - {file = "aiohttp-3.11.9-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:15c4e489942d987d5dac0ba39e5772dcbed4cc9ae3710d1025d5ba95e4a5349c"}, - {file = "aiohttp-3.11.9-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:ec8df0ff5a911c6d21957a9182402aad7bf060eaeffd77c9ea1c16aecab5adbf"}, - {file = "aiohttp-3.11.9-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ed95d66745f53e129e935ad726167d3a6cb18c5d33df3165974d54742c373868"}, - {file = "aiohttp-3.11.9-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:647ec5bee7e4ec9f1034ab48173b5fa970d9a991e565549b965e93331f1328fe"}, - {file = "aiohttp-3.11.9-cp313-cp313-win32.whl", hash = "sha256:ef2c9499b7bd1e24e473dc1a85de55d72fd084eea3d8bdeec7ee0720decb54fa"}, - {file = "aiohttp-3.11.9-cp313-cp313-win_amd64.whl", hash = "sha256:84de955314aa5e8d469b00b14d6d714b008087a0222b0f743e7ffac34ef56aff"}, - {file = "aiohttp-3.11.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e738aabff3586091221044b7a584865ddc4d6120346d12e28e788307cd731043"}, - {file = "aiohttp-3.11.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28f29bce89c3b401a53d6fd4bee401ee943083bf2bdc12ef297c1d63155070b0"}, - {file = "aiohttp-3.11.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:31de2f10f63f96cc19e04bd2df9549559beadd0b2ee2da24a17e7ed877ca8c60"}, - {file = "aiohttp-3.11.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f31cebd8c27a36af6c7346055ac564946e562080ee1a838da724585c67474f"}, - {file = "aiohttp-3.11.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0bcb7f6976dc0b6b56efde13294862adf68dd48854111b422a336fa729a82ea6"}, - {file = "aiohttp-3.11.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a8b13b9950d8b2f8f58b6e5842c4b842b5887e2c32e3f4644d6642f1659a530"}, - {file = "aiohttp-3.11.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9c23e62f3545c2216100603614f9e019e41b9403c47dd85b8e7e5015bf1bde0"}, - {file = "aiohttp-3.11.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ec656680fc53a13f849c71afd0c84a55c536206d524cbc831cde80abbe80489e"}, - {file = "aiohttp-3.11.9-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:36df00e0541f264ce42d62280281541a47474dfda500bc5b7f24f70a7f87be7a"}, - {file = "aiohttp-3.11.9-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8dcfd14c712aa9dd18049280bfb2f95700ff6a8bde645e09f17c3ed3f05a0130"}, - {file = "aiohttp-3.11.9-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:14624d96f0d69cf451deed3173079a68c322279be6030208b045ab77e1e8d550"}, - {file = "aiohttp-3.11.9-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:4b01d9cfcb616eeb6d40f02e66bebfe7b06d9f2ef81641fdd50b8dd981166e0b"}, - {file = "aiohttp-3.11.9-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:928f92f80e2e8d6567b87d3316c1fd9860ccfe36e87a9a7f5237d4cda8baa1ba"}, - {file = "aiohttp-3.11.9-cp39-cp39-win32.whl", hash = "sha256:c8a02f74ae419e3955af60f570d83187423e42e672a6433c5e292f1d23619269"}, - {file = "aiohttp-3.11.9-cp39-cp39-win_amd64.whl", hash = "sha256:0a97d657f6cf8782a830bb476c13f7d777cfcab8428ac49dde15c22babceb361"}, - {file = "aiohttp-3.11.9.tar.gz", hash = "sha256:a9266644064779840feec0e34f10a89b3ff1d2d6b751fe90017abcad1864fa7c"}, + {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cbad88a61fa743c5d283ad501b01c153820734118b65aee2bd7dbb735475ce0d"}, + {file = "aiohttp-3.11.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80886dac673ceaef499de2f393fc80bb4481a129e6cb29e624a12e3296cc088f"}, + {file = "aiohttp-3.11.10-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:61b9bae80ed1f338c42f57c16918853dc51775fb5cb61da70d590de14d8b5fb4"}, + {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e2e576caec5c6a6b93f41626c9c02fc87cd91538b81a3670b2e04452a63def6"}, + {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02c13415b5732fb6ee7ff64583a5e6ed1c57aa68f17d2bda79c04888dfdc2769"}, + {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4cfce37f31f20800a6a6620ce2cdd6737b82e42e06e6e9bd1b36f546feb3c44f"}, + {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3bbbfff4c679c64e6e23cb213f57cc2c9165c9a65d63717108a644eb5a7398df"}, + {file = "aiohttp-3.11.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49c7dbbc1a559ae14fc48387a115b7d4bbc84b4a2c3b9299c31696953c2a5219"}, + {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:68386d78743e6570f054fe7949d6cb37ef2b672b4d3405ce91fafa996f7d9b4d"}, + {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9ef405356ba989fb57f84cac66f7b0260772836191ccefbb987f414bcd2979d9"}, + {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:5d6958671b296febe7f5f859bea581a21c1d05430d1bbdcf2b393599b1cdce77"}, + {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:99b7920e7165be5a9e9a3a7f1b680f06f68ff0d0328ff4079e5163990d046767"}, + {file = "aiohttp-3.11.10-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0dc49f42422163efb7e6f1df2636fe3db72713f6cd94688e339dbe33fe06d61d"}, + {file = "aiohttp-3.11.10-cp310-cp310-win32.whl", hash = "sha256:40d1c7a7f750b5648642586ba7206999650208dbe5afbcc5284bcec6579c9b91"}, + {file = "aiohttp-3.11.10-cp310-cp310-win_amd64.whl", hash = "sha256:68ff6f48b51bd78ea92b31079817aff539f6c8fc80b6b8d6ca347d7c02384e33"}, + {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:77c4aa15a89847b9891abf97f3d4048f3c2d667e00f8a623c89ad2dccee6771b"}, + {file = "aiohttp-3.11.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:909af95a72cedbefe5596f0bdf3055740f96c1a4baa0dd11fd74ca4de0b4e3f1"}, + {file = "aiohttp-3.11.10-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:386fbe79863eb564e9f3615b959e28b222259da0c48fd1be5929ac838bc65683"}, + {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3de34936eb1a647aa919655ff8d38b618e9f6b7f250cc19a57a4bf7fd2062b6d"}, + {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c9527819b29cd2b9f52033e7fb9ff08073df49b4799c89cb5754624ecd98299"}, + {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a96e3e03300b41f261bbfd40dfdbf1c301e87eab7cd61c054b1f2e7c89b9e8"}, + {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98f5635f7b74bcd4f6f72fcd85bea2154b323a9f05226a80bc7398d0c90763b0"}, + {file = "aiohttp-3.11.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:03b6002e20938fc6ee0918c81d9e776bebccc84690e2b03ed132331cca065ee5"}, + {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6362cc6c23c08d18ddbf0e8c4d5159b5df74fea1a5278ff4f2c79aed3f4e9f46"}, + {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3691ed7726fef54e928fe26344d930c0c8575bc968c3e239c2e1a04bd8cf7838"}, + {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:31d5093d3acd02b31c649d3a69bb072d539d4c7659b87caa4f6d2bcf57c2fa2b"}, + {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8b3cf2dc0f0690a33f2d2b2cb15db87a65f1c609f53c37e226f84edb08d10f52"}, + {file = "aiohttp-3.11.10-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:fbbaea811a2bba171197b08eea288b9402faa2bab2ba0858eecdd0a4105753a3"}, + {file = "aiohttp-3.11.10-cp311-cp311-win32.whl", hash = "sha256:4b2c7ac59c5698a7a8207ba72d9e9c15b0fc484a560be0788b31312c2c5504e4"}, + {file = "aiohttp-3.11.10-cp311-cp311-win_amd64.whl", hash = "sha256:974d3a2cce5fcfa32f06b13ccc8f20c6ad9c51802bb7f829eae8a1845c4019ec"}, + {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:b78f053a7ecfc35f0451d961dacdc671f4bcbc2f58241a7c820e9d82559844cf"}, + {file = "aiohttp-3.11.10-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ab7485222db0959a87fbe8125e233b5a6f01f4400785b36e8a7878170d8c3138"}, + {file = "aiohttp-3.11.10-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf14627232dfa8730453752e9cdc210966490992234d77ff90bc8dc0dce361d5"}, + {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:076bc454a7e6fd646bc82ea7f98296be0b1219b5e3ef8a488afbdd8e81fbac50"}, + {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:482cafb7dc886bebeb6c9ba7925e03591a62ab34298ee70d3dd47ba966370d2c"}, + {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf3d1a519a324af764a46da4115bdbd566b3c73fb793ffb97f9111dbc684fc4d"}, + {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24213ba85a419103e641e55c27dc7ff03536c4873470c2478cce3311ba1eee7b"}, + {file = "aiohttp-3.11.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b99acd4730ad1b196bfb03ee0803e4adac371ae8efa7e1cbc820200fc5ded109"}, + {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:14cdb5a9570be5a04eec2ace174a48ae85833c2aadc86de68f55541f66ce42ab"}, + {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7e97d622cb083e86f18317282084bc9fbf261801b0192c34fe4b1febd9f7ae69"}, + {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:012f176945af138abc10c4a48743327a92b4ca9adc7a0e078077cdb5dbab7be0"}, + {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:44224d815853962f48fe124748227773acd9686eba6dc102578defd6fc99e8d9"}, + {file = "aiohttp-3.11.10-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c87bf31b7fdab94ae3adbe4a48e711bfc5f89d21cf4c197e75561def39e223bc"}, + {file = "aiohttp-3.11.10-cp312-cp312-win32.whl", hash = "sha256:06a8e2ee1cbac16fe61e51e0b0c269400e781b13bcfc33f5425912391a542985"}, + {file = "aiohttp-3.11.10-cp312-cp312-win_amd64.whl", hash = "sha256:be2b516f56ea883a3e14dda17059716593526e10fb6303189aaf5503937db408"}, + {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8cc5203b817b748adccb07f36390feb730b1bc5f56683445bfe924fc270b8816"}, + {file = "aiohttp-3.11.10-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5ef359ebc6949e3a34c65ce20230fae70920714367c63afd80ea0c2702902ccf"}, + {file = "aiohttp-3.11.10-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9bca390cb247dbfaec3c664326e034ef23882c3f3bfa5fbf0b56cad0320aaca5"}, + {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:811f23b3351ca532af598405db1093f018edf81368e689d1b508c57dcc6b6a32"}, + {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddf5f7d877615f6a1e75971bfa5ac88609af3b74796ff3e06879e8422729fd01"}, + {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6ab29b8a0beb6f8eaf1e5049252cfe74adbaafd39ba91e10f18caeb0e99ffb34"}, + {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c49a76c1038c2dd116fa443eba26bbb8e6c37e924e2513574856de3b6516be99"}, + {file = "aiohttp-3.11.10-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f3dc0e330575f5b134918976a645e79adf333c0a1439dcf6899a80776c9ab39"}, + {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:efb15a17a12497685304b2d976cb4939e55137df7b09fa53f1b6a023f01fcb4e"}, + {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:db1d0b28fcb7f1d35600150c3e4b490775251dea70f894bf15c678fdd84eda6a"}, + {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:15fccaf62a4889527539ecb86834084ecf6e9ea70588efde86e8bc775e0e7542"}, + {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:593c114a2221444f30749cc5e5f4012488f56bd14de2af44fe23e1e9894a9c60"}, + {file = "aiohttp-3.11.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7852bbcb4d0d2f0c4d583f40c3bc750ee033265d80598d0f9cb6f372baa6b836"}, + {file = "aiohttp-3.11.10-cp313-cp313-win32.whl", hash = "sha256:65e55ca7debae8faaffee0ebb4b47a51b4075f01e9b641c31e554fd376595c6c"}, + {file = "aiohttp-3.11.10-cp313-cp313-win_amd64.whl", hash = "sha256:beb39a6d60a709ae3fb3516a1581777e7e8b76933bb88c8f4420d875bb0267c6"}, + {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0580f2e12de2138f34debcd5d88894786453a76e98febaf3e8fe5db62d01c9bf"}, + {file = "aiohttp-3.11.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a55d2ad345684e7c3dd2c20d2f9572e9e1d5446d57200ff630e6ede7612e307f"}, + {file = "aiohttp-3.11.10-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:04814571cb72d65a6899db6099e377ed00710bf2e3eafd2985166f2918beaf59"}, + {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e44a9a3c053b90c6f09b1bb4edd880959f5328cf63052503f892c41ea786d99f"}, + {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:502a1464ccbc800b4b1995b302efaf426e8763fadf185e933c2931df7db9a199"}, + {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:613e5169f8ae77b1933e42e418a95931fb4867b2991fc311430b15901ed67079"}, + {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cca22a61b7fe45da8fc73c3443150c3608750bbe27641fc7558ec5117b27fdf"}, + {file = "aiohttp-3.11.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:86a5dfcc39309470bd7b68c591d84056d195428d5d2e0b5ccadfbaf25b026ebc"}, + {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:77ae58586930ee6b2b6f696c82cf8e78c8016ec4795c53e36718365f6959dc82"}, + {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:78153314f26d5abef3239b4a9af20c229c6f3ecb97d4c1c01b22c4f87669820c"}, + {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:98283b94cc0e11c73acaf1c9698dea80c830ca476492c0fe2622bd931f34b487"}, + {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:53bf2097e05c2accc166c142a2090e4c6fd86581bde3fd9b2d3f9e93dda66ac1"}, + {file = "aiohttp-3.11.10-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:c5532f0441fc09c119e1dca18fbc0687e64fbeb45aa4d6a87211ceaee50a74c4"}, + {file = "aiohttp-3.11.10-cp39-cp39-win32.whl", hash = "sha256:47ad15a65fb41c570cd0ad9a9ff8012489e68176e7207ec7b82a0940dddfd8be"}, + {file = "aiohttp-3.11.10-cp39-cp39-win_amd64.whl", hash = "sha256:c6b9e6d7e41656d78e37ce754813fa44b455c3d0d0dced2a047def7dc5570b74"}, + {file = "aiohttp-3.11.10.tar.gz", hash = "sha256:b1fc6b45010a8d0ff9e88f9f2418c6fd408c99c211257334aff41597ebece42e"}, ] [package.dependencies] @@ -136,24 +136,24 @@ files = [ [[package]] name = "anyio" -version = "4.6.2.post1" +version = "4.7.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false python-versions = ">=3.9" files = [ - {file = "anyio-4.6.2.post1-py3-none-any.whl", hash = "sha256:6d170c36fba3bdd840c73d3868c1e777e33676a69c3a72cf0a0d5d6d8009b61d"}, - {file = "anyio-4.6.2.post1.tar.gz", hash = "sha256:4c8bc31ccdb51c7f7bd251f51c609e038d63e34219b44aa86e47576389880b4c"}, + {file = "anyio-4.7.0-py3-none-any.whl", hash = "sha256:ea60c3723ab42ba6fff7e8ccb0488c898ec538ff4df1f1d5e642c3601d07e352"}, + {file = "anyio-4.7.0.tar.gz", hash = "sha256:2f834749c602966b7d456a7567cafcb309f96482b5081d14ac93ccd457f9dd48"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" -typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} +typing_extensions = {version = ">=4.5", markers = "python_version < \"3.13\""} [package.extras] -doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21.0b1)"] +doc = ["Sphinx (>=7.4,<8.0)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx_rtd_theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "truststore (>=0.9.1)", "uvloop (>=0.21)"] trio = ["trio (>=0.26.1)"] [[package]] @@ -890,13 +890,13 @@ files = [ [[package]] name = "docling-core" -version = "2.7.0" +version = "2.7.1" description = "A python library to define and validate data types in Docling." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_core-2.7.0-py3-none-any.whl", hash = "sha256:45cd51d7803587e779d49458399373eb399a599e52e2356bd358f63bd2559fa8"}, - {file = "docling_core-2.7.0.tar.gz", hash = "sha256:180a78cfd334b207f4984962f1f7a5d8e6f91734a9c7bd96d78bc9d19135f114"}, + {file = "docling_core-2.7.1-py3-none-any.whl", hash = "sha256:a3d3df9ed8755f98acfdcc8960e8d7b1eaf7dada9aded644e2487d43dc418ce5"}, + {file = "docling_core-2.7.1.tar.gz", hash = "sha256:563b4f3da2d7e4fd70ba4ce0e418e4898478f452d917665cdcd4cdde17befa55"}, ] [package.dependencies] @@ -3192,6 +3192,7 @@ files = [ {file = "nh3-0.2.19-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:00810cd5275f5c3f44b9eb0e521d1a841ee2f8023622de39ffc7d88bd533d8e0"}, {file = "nh3-0.2.19-cp38-abi3-win32.whl", hash = "sha256:7e98621856b0a911c21faa5eef8f8ea3e691526c2433f9afc2be713cb6fbdb48"}, {file = "nh3-0.2.19-cp38-abi3-win_amd64.whl", hash = "sha256:75c7cafb840f24430b009f7368945cb5ca88b2b54bb384ebfba495f16bc9c121"}, + {file = "nh3-0.2.19.tar.gz", hash = "sha256:790056b54c068ff8dceb443eaefb696b84beff58cca6c07afd754d17692a4804"}, ] [[package]] @@ -4340,22 +4341,22 @@ files = [ [[package]] name = "protobuf" -version = "5.29.0" +version = "5.29.1" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-5.29.0-cp310-abi3-win32.whl", hash = "sha256:ea7fb379b257911c8c020688d455e8f74efd2f734b72dc1ea4b4d7e9fd1326f2"}, - {file = "protobuf-5.29.0-cp310-abi3-win_amd64.whl", hash = "sha256:34a90cf30c908f47f40ebea7811f743d360e202b6f10d40c02529ebd84afc069"}, - {file = "protobuf-5.29.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:c931c61d0cc143a2e756b1e7f8197a508de5365efd40f83c907a9febf36e6b43"}, - {file = "protobuf-5.29.0-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:85286a47caf63b34fa92fdc1fd98b649a8895db595cfa746c5286eeae890a0b1"}, - {file = "protobuf-5.29.0-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:0d10091d6d03537c3f902279fcf11e95372bdd36a79556311da0487455791b20"}, - {file = "protobuf-5.29.0-cp38-cp38-win32.whl", hash = "sha256:0cd67a1e5c2d88930aa767f702773b2d054e29957432d7c6a18f8be02a07719a"}, - {file = "protobuf-5.29.0-cp38-cp38-win_amd64.whl", hash = "sha256:e467f81fdd12ded9655cea3e9b83dc319d93b394ce810b556fb0f421d8613e86"}, - {file = "protobuf-5.29.0-cp39-cp39-win32.whl", hash = "sha256:17d128eebbd5d8aee80300aed7a43a48a25170af3337f6f1333d1fac2c6839ac"}, - {file = "protobuf-5.29.0-cp39-cp39-win_amd64.whl", hash = "sha256:6c3009e22717c6cc9e6594bb11ef9f15f669b19957ad4087214d69e08a213368"}, - {file = "protobuf-5.29.0-py3-none-any.whl", hash = "sha256:88c4af76a73183e21061881360240c0cdd3c39d263b4e8fb570aaf83348d608f"}, - {file = "protobuf-5.29.0.tar.gz", hash = "sha256:445a0c02483869ed8513a585d80020d012c6dc60075f96fa0563a724987b1001"}, + {file = "protobuf-5.29.1-cp310-abi3-win32.whl", hash = "sha256:22c1f539024241ee545cbcb00ee160ad1877975690b16656ff87dde107b5f110"}, + {file = "protobuf-5.29.1-cp310-abi3-win_amd64.whl", hash = "sha256:1fc55267f086dd4050d18ef839d7bd69300d0d08c2a53ca7df3920cc271a3c34"}, + {file = "protobuf-5.29.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:d473655e29c0c4bbf8b69e9a8fb54645bc289dead6d753b952e7aa660254ae18"}, + {file = "protobuf-5.29.1-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:b5ba1d0e4c8a40ae0496d0e2ecfdbb82e1776928a205106d14ad6985a09ec155"}, + {file = "protobuf-5.29.1-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:8ee1461b3af56145aca2800e6a3e2f928108c749ba8feccc6f5dd0062c410c0d"}, + {file = "protobuf-5.29.1-cp38-cp38-win32.whl", hash = "sha256:50879eb0eb1246e3a5eabbbe566b44b10348939b7cc1b267567e8c3d07213853"}, + {file = "protobuf-5.29.1-cp38-cp38-win_amd64.whl", hash = "sha256:027fbcc48cea65a6b17028510fdd054147057fa78f4772eb547b9274e5219331"}, + {file = "protobuf-5.29.1-cp39-cp39-win32.whl", hash = "sha256:5a41deccfa5e745cef5c65a560c76ec0ed8e70908a67cc8f4da5fce588b50d57"}, + {file = "protobuf-5.29.1-cp39-cp39-win_amd64.whl", hash = "sha256:012ce28d862ff417fd629285aca5d9772807f15ceb1a0dbd15b88f58c776c98c"}, + {file = "protobuf-5.29.1-py3-none-any.whl", hash = "sha256:32600ddb9c2a53dedc25b8581ea0f1fd8ea04956373c0c07577ce58d312522e0"}, + {file = "protobuf-5.29.1.tar.gz", hash = "sha256:683be02ca21a6ffe80db6dd02c0b5b2892322c59ca57fd6c872d652cb80549cb"}, ] [[package]] @@ -5708,114 +5709,114 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.22.1" +version = "0.22.3" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.9" files = [ - {file = "rpds_py-0.22.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:ab27dd4edd84b13309f268ffcdfc07aef8339135ffab7b6d43f16884307a2a48"}, - {file = "rpds_py-0.22.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9d5b925156a746dc1f5f52376fdd1fbdd3f6ffe1fcd6f5e06f77ca79abb940a3"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:201650b309c419143775c15209c620627de3c09a27c7fb58375325aec5cce260"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:31264187fc934ff1024a4f56775f33c9252d3f4f3e27ec07d1995a26b52702c3"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:97c5ffe47ccf92d8b17e10f8a5ce28d015aa1196edc3359684cf31504eae6a14"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9ac7280bd045f472b50306d7efeee051b69e3a2dd1b90f46bd7e86e63b1efa2"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f941fb86195f97be7f6efe04a21b223f05dfe4d1dfb159999e2f8d101e44cc4"}, - {file = "rpds_py-0.22.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f91bfc39f7a64168e08ab831fa497ec5438c1d6c6e2f9e12848d95ad11ac8523"}, - {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:effcae2152afe7937a28376dbabb25c770ef99ed4e16a4ffeb8e6a4f7c4f06aa"}, - {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:2177e59c033bf0d1bf7de1ced561205963583caf3242c6c700a723034bfb5f8e"}, - {file = "rpds_py-0.22.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:66f4f48a89cdd30ab3a47335df81c76e9a63799d0d84b29c0618371c66fa37b0"}, - {file = "rpds_py-0.22.1-cp310-cp310-win32.whl", hash = "sha256:b07fa9e634234e84096adfa4be3828c8f26e238679c122824b2b3d7131bec578"}, - {file = "rpds_py-0.22.1-cp310-cp310-win_amd64.whl", hash = "sha256:ca4657e9fd0b1b5376942d403d634ce188f79064f0873aa853ab05b10185ceec"}, - {file = "rpds_py-0.22.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:608c84699b2db09c6a8743845b1a3dad36fae53eaaecb241d45b13dff74405fb"}, - {file = "rpds_py-0.22.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9dae4eb9b5534e09ba6c6ab496a757e5e394b7e7b08767d25ca37e8d36491114"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09a1f000c5f6e08b298275bae00921e9fbbf2a35dae0a86db2821c058c2201a9"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:580ccbf11f02f948add4cb641843030a89f1463d7c0740cbfc9aca91e9dc34b3"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96559e05bdf938b2048353e10a7920b98f853cefe4482c2064a718d7d0a50bd7"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:128cbaed7ba26116820bcb992405d6a13ea18c8fca1b8c4f59906d858e91e979"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:734783dd7da58f76222f458346ddebdb3621686a1a2a667db5049caf0c9956b9"}, - {file = "rpds_py-0.22.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c9ce6b83597d45bec44a2690857ede62fc98223772135f8a7fa90884eb726501"}, - {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bca4428c4a957b78ded3e6e62884ab03f029dce8fa8d34818da0f80f61332b49"}, - {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1ded65691a1d3fd7d2aa89d2c91aa51f941601bb2ce099739909034d957fef4b"}, - {file = "rpds_py-0.22.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:72407065ad459db9f3d052ea8c51e02534f02533fc61e51cbab3bd94166f086c"}, - {file = "rpds_py-0.22.1-cp311-cp311-win32.whl", hash = "sha256:eb013aa01b404219f28dc973d9e6310fd4db216d7299253dd355629952e0564e"}, - {file = "rpds_py-0.22.1-cp311-cp311-win_amd64.whl", hash = "sha256:8bd9ec1db79a664f4cbb12878693b73416f4d2cb425d3e27eccc1bdfbdc826ef"}, - {file = "rpds_py-0.22.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:8ec41049c90d204a6561238a9ad6c7263ebb7009d9759c98b58078d9d2fec9ba"}, - {file = "rpds_py-0.22.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:102be79c4cc47a4aeb5912401185c404cd2601c15a7163bbecff7f1bfe20b669"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a603155db408f773637f9e3a712c6e3cbc521aaa8fa2b99f9ba6106c59a2496"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5dbff9402c2bdf00bf0df9905694b3c292a3847c725651938a72f554351a5fcb"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:96b3759d8ab2323324e0a92b2f44834f9d88089b8d1ab6f533b61f4be3411cef"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c3029f481b31f329b1fdb4ec4b56935d82210ddd9c6f86ea5a87c06f1e97b161"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d280b4bf09f719b89fd9aab3b71067acc0d0449b7d1eba99a2ade4939cef8296"}, - {file = "rpds_py-0.22.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6c8e97e19aa7b0b0d801a159f932ce4435f1049c8c38e2bb372bb5bee559ce50"}, - {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50e4b5d291105f7063259fe0125b1af902fb34499444d7c5c521dd8328b00939"}, - {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d3777c446bb1c5fcd82dc3f8776e1a146cd91e80cc1892f8634575ace438d22f"}, - {file = "rpds_py-0.22.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:447ae1104fb32197b9262f772d565d38e834cc2e9edd89350b37b88fed636e70"}, - {file = "rpds_py-0.22.1-cp312-cp312-win32.whl", hash = "sha256:55d371b9d8b0c2a68a50413a8cb01c3c3ce1ea4f768bf77b66669a9a486e101e"}, - {file = "rpds_py-0.22.1-cp312-cp312-win_amd64.whl", hash = "sha256:413a30a99d8683dace3765885920ed27ab662efbb6c98d81db76c397ad1ffd71"}, - {file = "rpds_py-0.22.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:aa2ba0176037c915d8660a4e46581d645e2c22b5373e466bc8640a794d45861a"}, - {file = "rpds_py-0.22.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ba6c66fbc6015b2f99e7176fec41793cecb00c4cc357cad038dff85e6ac42ab"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15fa4ca658f8ad22645d3531682b17e5580832efbfa87304c3e62214c79c1e8a"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d7833ef6f5d6cb634f296abfd93452fb3eb44c4e9a6ae95c1021eab704c1cee2"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c0467838c90435b80793cde486a318fc916ee57f2af54e4b10c72b20cbdcbaa9"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d962e2e89b3a95e3597a34b8c93ced1e98958502c5b8096c9fd69deff279f561"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ce729f1dc8a4a190c34b69f75377bddc004079b2963ab722ab91fafe040be6d"}, - {file = "rpds_py-0.22.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8080467df22feca0fc9c46567001777c6fbc2b4a2683a7137420896051874ca1"}, - {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0f9eb37d3a60b262a98ab51ee899cac039de9ca0ce68dcf1a6518a09719020b0"}, - {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:153248f48d6f90a295a502f53ec544a3ffbd21b0bb32f5dca39c4b93a764d6a2"}, - {file = "rpds_py-0.22.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0a53592cdf98cec3dfcdb24ffec8a4797e7656b65700099af43ec7df023b6de4"}, - {file = "rpds_py-0.22.1-cp313-cp313-win32.whl", hash = "sha256:e8056adcefa2dcb67e8bc91ea5eee26df66e8b297a8cd6ff0903f85c70908fa0"}, - {file = "rpds_py-0.22.1-cp313-cp313-win_amd64.whl", hash = "sha256:a451dba533be77454ebcffc85189108fc05f279100835ac76e7989edacb89156"}, - {file = "rpds_py-0.22.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:2ea23f1525d4f64286dbe0947c929d45c3ffe963b2dbed1d3844a2e4938bda42"}, - {file = "rpds_py-0.22.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3aaa22487477de9618ce3b37f99fbe81219ba96f3c2ca84f576f0ab451b83aba"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8954b9ffe60f479a0c0ba40987db2546c735ab02a725ea7fd89342152d4d821d"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8502a02ae3ae67084f5a0bf5a8253b19fa7a887f824e41e016cdb0ac532a06f"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a083221b6a4ecdef38a60c95d8d3223d99449cb4da2544e9644958dc16664eb9"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:542eb246d5be31b5e0a9c8ddb9539416f9b31f58f75bd4ee328bff2b5c58d6fd"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffae97d28ea4f2c613a751d087b75a97fb78311b38cc2e9a2f4587e473ace167"}, - {file = "rpds_py-0.22.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0ff8d5b13ce2357fa8b33a0a2e3775aa71df5bf7c8ba060634c9d15ab12f357"}, - {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:0f057a0c546c42964836b209d8de9ea1a4f4b0432006c6343cbe633d8ca14571"}, - {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:48ee97c7c6027fd423058675b5a39d0b5f7a1648250b671563d5c9f74ff13ff0"}, - {file = "rpds_py-0.22.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:babec324e8654a59122aaa66936a9a483faa03276db9792f51332475c2dddc4a"}, - {file = "rpds_py-0.22.1-cp313-cp313t-win32.whl", hash = "sha256:e69acdbc132c9592c8dc393af85e38e206ca847c7019a953ff625191c3a12312"}, - {file = "rpds_py-0.22.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c783e4ed68200f4e03c125690d23158b1c49c4b186d458a18debc109bbdc3c2e"}, - {file = "rpds_py-0.22.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:2143c3aed85992604d758bbe67da839fb4aab3dd2e1c6dddab5b3ca7162b34a2"}, - {file = "rpds_py-0.22.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f57e2d0f8022783426121b586d7c842ea40ea832a29e28ca36c881b54c74fb28"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c0c324879d483504b07f7b18eb1b50567c434263bbe4866ecce33056162668a"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1c40e02cc4f3e18fd39344edb10eebe04bd11cfd13119606b5771e5ea51630d3"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f76c6f319e57007ad52e671ec741d801324760a377e3d4992c9bb8200333ebac"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5cae9b415ea8a6a563566dbf46650222eccc5971c7daa16fbee63aef92ae543"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b09209cdfcacf5eba9cf80367130532e6c02e695252e1f64d3cfcc2356e6e19f"}, - {file = "rpds_py-0.22.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:dbe428d0ac6eacaf05402adbaf137f59ad6063848182d1ff294f95ce0f24005b"}, - {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:626b9feb01bff049a5aec4804f0c58db12585778b4902e5376a95b01f80a7a16"}, - {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ec1ccc2a9f764cd632fb8ab28fdde166250df54fc8d97315a4a6948dc5367639"}, - {file = "rpds_py-0.22.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:ef92b1fbe6aa2e7885eb90853cc016b1fc95439a8cc8da6d526880e9e2148695"}, - {file = "rpds_py-0.22.1-cp39-cp39-win32.whl", hash = "sha256:c88535f83f7391cf3a45af990237e3939a6fdfbedaed2571633bfdd0bceb36b0"}, - {file = "rpds_py-0.22.1-cp39-cp39-win_amd64.whl", hash = "sha256:7839b7528faa4d134c183b1f2dd1ee4dc2ca2f899f4f0cfdf00fc04c255262a7"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:a0ed14a4162c2c2b21a162c9fcf90057e3e7da18cd171ab344c1e1664f75090e"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:05fdeae9010533e47715c37df83264df0122584e40d691d50cf3607c060952a3"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4659b2e4a5008715099e216050f5c6976e5a4329482664411789968b82e3f17d"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a18aedc032d6468b73ebbe4437129cb30d54fe543cde2f23671ecad76c3aea24"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:149b4d875ef9b12a8f5e303e86a32a58f8ef627e57ec97a7d0e4be819069d141"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdaee3947eaaa52dae3ceb9d9f66329e13d8bae35682b1e5dd54612938693934"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36ce951800ed2acc6772fd9f42150f29d567f0423989748052fdb39d9e2b5795"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ab784621d3e2a41916e21f13a483602cc989fd45fff637634b9231ba43d4383b"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c2a214bf5b79bd39a9de1c991353aaaacafda83ba1374178309e92be8e67d411"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:85060e96953647871957d41707adb8d7bff4e977042fd0deb4fc1881b98dd2fe"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c6f3fd617db422c9d4e12cb8d84c984fe07d6d9cb0950cbf117f3bccc6268d05"}, - {file = "rpds_py-0.22.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:f2d1b58a0c3a73f0361759642e80260a6d28eee6501b40fe25b82af33ef83f21"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:76eaa4c087a061a2c8a0a92536405069878a8f530c00e84a9eaf332e70f5561f"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:959ae04ed30cde606f3a0320f0a1f4167a107e685ef5209cce28c5080590bd31"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:198067aa6f3d942ff5d0d655bb1e91b59ae85279d47590682cba2834ac1b97d2"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3e7e99e2af59c56c59b6c964d612511b8203480d39d1ef83edc56f2cb42a3f5d"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0545928bdf53dfdfcab284468212efefb8a6608ca3b6910c7fb2e5ed8bdc2dc0"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ef7282d8a14b60dd515e47060638687710b1d518f4b5e961caad43fb3a3606f9"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe3f245c2f39a5692d9123c174bc48f6f9fe3e96407e67c6d04541a767d99e72"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:efb2ad60ca8637d5f9f653f9a9a8d73964059972b6b95036be77e028bffc68a3"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:d8306f27418361b788e3fca9f47dec125457f80122e7e31ba7ff5cdba98343f8"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:4c8dc7331e8cbb1c0ea2bcb550adb1777365944ffd125c69aa1117fdef4887f5"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:776a06cb5720556a549829896a49acebb5bdd96c7bba100191a994053546975a"}, - {file = "rpds_py-0.22.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e4f91d702b9ce1388660b3d4a28aa552614a1399e93f718ed0dacd68f23b3d32"}, - {file = "rpds_py-0.22.1.tar.gz", hash = "sha256:157a023bded0618a1eea54979fe2e0f9309e9ddc818ef4b8fc3b884ff38fedd5"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967"}, + {file = "rpds_py-0.22.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec"}, + {file = "rpds_py-0.22.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00"}, + {file = "rpds_py-0.22.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf"}, + {file = "rpds_py-0.22.3-cp310-cp310-win32.whl", hash = "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652"}, + {file = "rpds_py-0.22.3-cp310-cp310-win_amd64.whl", hash = "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f"}, + {file = "rpds_py-0.22.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1"}, + {file = "rpds_py-0.22.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74"}, + {file = "rpds_py-0.22.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a"}, + {file = "rpds_py-0.22.3-cp311-cp311-win32.whl", hash = "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64"}, + {file = "rpds_py-0.22.3-cp311-cp311-win_amd64.whl", hash = "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e"}, + {file = "rpds_py-0.22.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15"}, + {file = "rpds_py-0.22.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61"}, + {file = "rpds_py-0.22.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7"}, + {file = "rpds_py-0.22.3-cp312-cp312-win32.whl", hash = "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627"}, + {file = "rpds_py-0.22.3-cp312-cp312-win_amd64.whl", hash = "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84"}, + {file = "rpds_py-0.22.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518"}, + {file = "rpds_py-0.22.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16"}, + {file = "rpds_py-0.22.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f"}, + {file = "rpds_py-0.22.3-cp313-cp313-win32.whl", hash = "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de"}, + {file = "rpds_py-0.22.3-cp313-cp313-win_amd64.whl", hash = "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3"}, + {file = "rpds_py-0.22.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b"}, + {file = "rpds_py-0.22.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win32.whl", hash = "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730"}, + {file = "rpds_py-0.22.3-cp313-cp313t-win_amd64.whl", hash = "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea"}, + {file = "rpds_py-0.22.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543"}, + {file = "rpds_py-0.22.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831"}, + {file = "rpds_py-0.22.3-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520"}, + {file = "rpds_py-0.22.3-cp39-cp39-win32.whl", hash = "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9"}, + {file = "rpds_py-0.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe"}, + {file = "rpds_py-0.22.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7"}, + {file = "rpds_py-0.22.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6"}, + {file = "rpds_py-0.22.3.tar.gz", hash = "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d"}, ] [[package]] @@ -6248,13 +6249,13 @@ files = [ [[package]] name = "six" -version = "1.16.0" +version = "1.17.0" description = "Python 2 and 3 compatibility utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, - {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, + {file = "six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274"}, + {file = "six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81"}, ] [[package]] @@ -6471,123 +6472,26 @@ files = [ [[package]] name = "tokenizers" -version = "0.20.3" +version = "0.21.0" description = "" optional = false python-versions = ">=3.7" files = [ - {file = "tokenizers-0.20.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:31ccab28dbb1a9fe539787210b0026e22debeab1662970f61c2d921f7557f7e4"}, - {file = "tokenizers-0.20.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c6361191f762bda98c773da418cf511cbaa0cb8d0a1196f16f8c0119bde68ff8"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f128d5da1202b78fa0a10d8d938610472487da01b57098d48f7e944384362514"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:79c4121a2e9433ad7ef0769b9ca1f7dd7fa4c0cd501763d0a030afcbc6384481"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7850fde24197fe5cd6556e2fdba53a6d3bae67c531ea33a3d7c420b90904141"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b357970c095dc134978a68c67d845a1e3803ab7c4fbb39195bde914e7e13cf8b"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a333d878c4970b72d6c07848b90c05f6b045cf9273fc2bc04a27211721ad6118"}, - {file = "tokenizers-0.20.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fd9fee817f655a8f50049f685e224828abfadd436b8ff67979fc1d054b435f1"}, - {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9e7816808b402129393a435ea2a509679b41246175d6e5e9f25b8692bfaa272b"}, - {file = "tokenizers-0.20.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ba96367db9d8a730d3a1d5996b4b7babb846c3994b8ef14008cd8660f55db59d"}, - {file = "tokenizers-0.20.3-cp310-none-win32.whl", hash = "sha256:ee31ba9d7df6a98619426283e80c6359f167e2e9882d9ce1b0254937dbd32f3f"}, - {file = "tokenizers-0.20.3-cp310-none-win_amd64.whl", hash = "sha256:a845c08fdad554fe0871d1255df85772f91236e5fd6b9287ef8b64f5807dbd0c"}, - {file = "tokenizers-0.20.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:585b51e06ca1f4839ce7759941e66766d7b060dccfdc57c4ca1e5b9a33013a90"}, - {file = "tokenizers-0.20.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:61cbf11954f3b481d08723ebd048ba4b11e582986f9be74d2c3bdd9293a4538d"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef820880d5e4e8484e2fa54ff8d297bb32519eaa7815694dc835ace9130a3eea"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:67ef4dcb8841a4988cd00dd288fb95dfc8e22ed021f01f37348fd51c2b055ba9"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ff1ef8bd47a02b0dc191688ccb4da53600df5d4c9a05a4b68e1e3de4823e78eb"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:444d188186eab3148baf0615b522461b41b1f0cd58cd57b862ec94b6ac9780f1"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:37c04c032c1442740b2c2d925f1857885c07619224a533123ac7ea71ca5713da"}, - {file = "tokenizers-0.20.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:453c7769d22231960ee0e883d1005c93c68015025a5e4ae56275406d94a3c907"}, - {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4bb31f7b2847e439766aaa9cc7bccf7ac7088052deccdb2275c952d96f691c6a"}, - {file = "tokenizers-0.20.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:843729bf0f991b29655a069a2ff58a4c24375a553c70955e15e37a90dd4e045c"}, - {file = "tokenizers-0.20.3-cp311-none-win32.whl", hash = "sha256:efcce3a927b1e20ca694ba13f7a68c59b0bd859ef71e441db68ee42cf20c2442"}, - {file = "tokenizers-0.20.3-cp311-none-win_amd64.whl", hash = "sha256:88301aa0801f225725b6df5dea3d77c80365ff2362ca7e252583f2b4809c4cc0"}, - {file = "tokenizers-0.20.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49d12a32e190fad0e79e5bdb788d05da2f20d8e006b13a70859ac47fecf6ab2f"}, - {file = "tokenizers-0.20.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:282848cacfb9c06d5e51489f38ec5aa0b3cd1e247a023061945f71f41d949d73"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abe4e08c7d0cd6154c795deb5bf81d2122f36daf075e0c12a8b050d824ef0a64"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca94fc1b73b3883c98f0c88c77700b13d55b49f1071dfd57df2b06f3ff7afd64"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef279c7e239f95c8bdd6ff319d9870f30f0d24915b04895f55b1adcf96d6c60d"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:16384073973f6ccbde9852157a4fdfe632bb65208139c9d0c0bd0176a71fd67f"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:312d522caeb8a1a42ebdec87118d99b22667782b67898a76c963c058a7e41d4f"}, - {file = "tokenizers-0.20.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2b7cb962564785a83dafbba0144ecb7f579f1d57d8c406cdaa7f32fe32f18ad"}, - {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:124c5882ebb88dadae1fc788a582299fcd3a8bd84fc3e260b9918cf28b8751f5"}, - {file = "tokenizers-0.20.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2b6e54e71f84c4202111a489879005cb14b92616a87417f6c102c833af961ea2"}, - {file = "tokenizers-0.20.3-cp312-none-win32.whl", hash = "sha256:83d9bfbe9af86f2d9df4833c22e94d94750f1d0cd9bfb22a7bb90a86f61cdb1c"}, - {file = "tokenizers-0.20.3-cp312-none-win_amd64.whl", hash = "sha256:44def74cee574d609a36e17c8914311d1b5dbcfe37c55fd29369d42591b91cf2"}, - {file = "tokenizers-0.20.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e0b630e0b536ef0e3c8b42c685c1bc93bd19e98c0f1543db52911f8ede42cf84"}, - {file = "tokenizers-0.20.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a02d160d2b19bcbfdf28bd9a4bf11be4cb97d0499c000d95d4c4b1a4312740b6"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e3d80d89b068bc30034034b5319218c7c0a91b00af19679833f55f3becb6945"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:174a54910bed1b089226512b4458ea60d6d6fd93060254734d3bc3540953c51c"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:098b8a632b8656aa5802c46689462c5c48f02510f24029d71c208ec2c822e771"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:78c8c143e3ae41e718588281eb3e212c2b31623c9d6d40410ec464d7d6221fb5"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b26b0aadb18cd8701077362ba359a06683662d5cafe3e8e8aba10eb05c037f1"}, - {file = "tokenizers-0.20.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07d7851a72717321022f3774e84aa9d595a041d643fafa2e87fbc9b18711dac0"}, - {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:bd44e48a430ada902c6266a8245f5036c4fe744fcb51f699999fbe82aa438797"}, - {file = "tokenizers-0.20.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:a4c186bb006ccbe1f5cc4e0380d1ce7806f5955c244074fd96abc55e27b77f01"}, - {file = "tokenizers-0.20.3-cp313-none-win32.whl", hash = "sha256:6e19e0f1d854d6ab7ea0c743d06e764d1d9a546932be0a67f33087645f00fe13"}, - {file = "tokenizers-0.20.3-cp313-none-win_amd64.whl", hash = "sha256:d50ede425c7e60966a9680d41b58b3a0950afa1bb570488e2972fa61662c4273"}, - {file = "tokenizers-0.20.3-cp37-cp37m-macosx_10_12_x86_64.whl", hash = "sha256:9adda1ff5fb9dcdf899ceca672a4e2ce9e797adb512a6467305ca3d8bfcfbdd0"}, - {file = "tokenizers-0.20.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:6dde2cae6004ba7a3badff4a11911cae03ebf23e97eebfc0e71fef2530e5074f"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4a7fd678b35614fca708579eb95b7587a5e8a6d328171bd2488fd9f27d82be4"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b80e3c7283a01a356bd2210f53d1a4a5d32b269c2024389ed0173137708d50e"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8cc0e8176b762973758a77f0d9c4467d310e33165fb74173418ca3734944da4"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d5634b2e2f5f3d2b4439d2d74066e22eb4b1f04f3fea05cb2a3c12d89b5a3bcd"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b4ba635165bc1ea46f2da8e5d80b5f70f6ec42161e38d96dbef33bb39df73964"}, - {file = "tokenizers-0.20.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18e4c7c64172e7789bd8b07aa3087ea87c4c4de7e90937a2aa036b5d92332536"}, - {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1f74909ef7675c26d4095a817ec3393d67f3158ca4836c233212e5613ef640c4"}, - {file = "tokenizers-0.20.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:0e9b81321a1e05b16487d312b4264984513f8b4a7556229cafac6e88c2036b09"}, - {file = "tokenizers-0.20.3-cp37-none-win32.whl", hash = "sha256:ab48184cd58b4a03022a2ec75b54c9f600ffea9a733612c02325ed636f353729"}, - {file = "tokenizers-0.20.3-cp37-none-win_amd64.whl", hash = "sha256:60ac483cebee1c12c71878523e768df02fa17e4c54412966cb3ac862c91b36c1"}, - {file = "tokenizers-0.20.3-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:3229ef103c89583d10b9378afa5d601b91e6337530a0988e17ca8d635329a996"}, - {file = "tokenizers-0.20.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6ac52cc24bad3de865c7e65b1c4e7b70d00938a8ae09a92a453b8f676e714ad5"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04627b7b502fa6a2a005e1bd446fa4247d89abcb1afaa1b81eb90e21aba9a60f"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c27ceb887f0e81a3c377eb4605dca7a95a81262761c0fba308d627b2abb98f2b"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:65ab780194da4e1fcf5670523a2f377c4838ebf5249efe41fa1eddd2a84fb49d"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:98d343134f47159e81f7f242264b0eb222e6b802f37173c8d7d7b64d5c9d1388"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2475bb004ab2009d29aff13b5047bfdb3d4b474f0aa9d4faa13a7f34dbbbb43"}, - {file = "tokenizers-0.20.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b6583a65c01db1197c1eb36857ceba8ec329d53afadd268b42a6b04f4965724"}, - {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:62d00ba208358c037eeab7bfc00a905adc67b2d31b68ab40ed09d75881e114ea"}, - {file = "tokenizers-0.20.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:0fc7a39e5bedc817bda395a798dfe2d9c5f7c71153c90d381b5135a0328d9520"}, - {file = "tokenizers-0.20.3-cp38-none-win32.whl", hash = "sha256:84d40ee0f8550d64d3ea92dd7d24a8557a9172165bdb986c9fb2503b4fe4e3b6"}, - {file = "tokenizers-0.20.3-cp38-none-win_amd64.whl", hash = "sha256:205a45246ed7f1718cf3785cff88450ba603352412aaf220ace026384aa3f1c0"}, - {file = "tokenizers-0.20.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:93e37f0269a11dc3b1a953f1fca9707f0929ebf8b4063c591c71a0664219988e"}, - {file = "tokenizers-0.20.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f4cb0c614b0135e781de96c2af87e73da0389ac1458e2a97562ed26e29490d8d"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7eb2fb1c432f5746b22f8a7f09fc18c4156cb0031c77f53cb19379d82d43297a"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bfa8d029bb156181b006643309d6b673615a24e4ed24cf03aa191d599b996f51"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6f90549622de3bf476ad9f1dd6f3f952ec3ed6ab8615ae88ef060d0c5bfad55d"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1d469c74eebf5c43fd61cd9b030e271d17198edd7bd45392e03a3c091d7d6d4"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bee8f53b2594749f4460d53253bae55d718f04e9b633efa0f5df8938bd98e4f0"}, - {file = "tokenizers-0.20.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:938441babf3e5720e4459e306ef2809fb267680df9d1ff2873458b22aef60248"}, - {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7310ab23d7b0caebecc0e8be11a1146f320f5f07284000f6ea54793e83de1b75"}, - {file = "tokenizers-0.20.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:16121eb030a2b13094cfec936b0c12e8b4063c5f839591ea7d0212336d8f9921"}, - {file = "tokenizers-0.20.3-cp39-none-win32.whl", hash = "sha256:401cc21ef642ee235985d747f65e18f639464d377c70836c9003df208d582064"}, - {file = "tokenizers-0.20.3-cp39-none-win_amd64.whl", hash = "sha256:7498f3ea7746133335a6adb67a77cf77227a8b82c8483f644a2e5f86fea42b8d"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e919f2e3e68bb51dc31de4fcbbeff3bdf9c1cad489044c75e2b982a91059bd3c"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b8e9608f2773996cc272156e305bd79066163a66b0390fe21750aff62df1ac07"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39270a7050deaf50f7caff4c532c01b3c48f6608d42b3eacdebdc6795478c8df"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e005466632b1c5d2d2120f6de8aa768cc9d36cd1ab7d51d0c27a114c91a1e6ee"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a07962340b36189b6c8feda552ea1bfeee6cf067ff922a1d7760662c2ee229e5"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:55046ad3dd5f2b3c67501fcc8c9cbe3e901d8355f08a3b745e9b57894855f85b"}, - {file = "tokenizers-0.20.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:efcf0eb939988b627558aaf2b9dc3e56d759cad2e0cfa04fcab378e4b48fc4fd"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f3558a7ae6a6d38a77dfce12172a1e2e1bf3e8871e744a1861cd7591ea9ebe24"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d53029fe44bc70c3ff14ef512460a0cf583495a0f8e2f4b70e26eb9438e38a9"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a2a56397b2bec5a629b516b23f0f8a3e4f978c7488d4a299980f8375954b85"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e5bfaae740ef9ece000f8a07e78ac0e2b085c5ce9648f8593ddf0243c9f76d"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:fbaf3ea28fedfb2283da60e710aff25492e795a7397cad8a50f1e079b65a5a70"}, - {file = "tokenizers-0.20.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c47c037116310dc976eb96b008e41b9cfaba002ed8005848d4d632ee0b7ba9ae"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c31751f0721f58f5e19bb27c1acc259aeff860d8629c4e1a900b26a1979ada8e"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:c697cbd3be7a79ea250ea5f380d6f12e534c543cfb137d5c734966b3ee4f34cc"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b48971b88ef9130bf35b41b35fd857c3c4dae4a9cd7990ebc7fc03e59cc92438"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4e615de179bbe060ab33773f0d98a8a8572b5883dd7dac66c1de8c056c7e748c"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da1ec842035ed9999c62e45fbe0ff14b7e8a7e02bb97688cc6313cf65e5cd755"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6ee4954c1dd23aadc27958dad759006e71659d497dcb0ef0c7c87ea992c16ebd"}, - {file = "tokenizers-0.20.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:3eda46ca402751ec82553a321bf35a617b76bbed7586e768c02ccacbdda94d6d"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:de082392a85eb0055cc055c535bff2f0cc15d7a000bdc36fbf601a0f3cf8507a"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:c3db46cc0647bfd88263afdb739b92017a02a87ee30945cb3e86c7e25c7c9917"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a292392f24ab9abac5cfa8197e5a6208f2e43723420217e1ceba0b4ec77816ac"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8dcd91f4e60f62b20d83a87a84fe062035a1e3ff49a8c2bbdeb2d441c8e311f4"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:900991a2b8ee35961b1095db7e265342e0e42a84c1a594823d5ee9f8fb791958"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:5a8d8261ca2133d4f98aa9627c748189502b3787537ba3d7e2beb4f7cfc5d627"}, - {file = "tokenizers-0.20.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:c4fd4d71e6deb6ddf99d8d0eab87d1d16f635898906e631914a9bae8ae9f2cfb"}, - {file = "tokenizers-0.20.3.tar.gz", hash = "sha256:2278b34c5d0dd78e087e1ca7f9b1dcbf129d80211afa645f214bd6e051037539"}, + {file = "tokenizers-0.21.0-cp39-abi3-macosx_10_12_x86_64.whl", hash = "sha256:3c4c93eae637e7d2aaae3d376f06085164e1660f89304c0ab2b1d08a406636b2"}, + {file = "tokenizers-0.21.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:f53ea537c925422a2e0e92a24cce96f6bc5046bbef24a1652a5edc8ba975f62e"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b177fb54c4702ef611de0c069d9169f0004233890e0c4c5bd5508ae05abf193"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6b43779a269f4629bebb114e19c3fca0223296ae9fea8bb9a7a6c6fb0657ff8e"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9aeb255802be90acfd363626753fda0064a8df06031012fe7d52fd9a905eb00e"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d8b09dbeb7a8d73ee204a70f94fc06ea0f17dcf0844f16102b9f414f0b7463ba"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:400832c0904f77ce87c40f1a8a27493071282f785724ae62144324f171377273"}, + {file = "tokenizers-0.21.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e84ca973b3a96894d1707e189c14a774b701596d579ffc7e69debfc036a61a04"}, + {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:eb7202d231b273c34ec67767378cd04c767e967fda12d4a9e36208a34e2f137e"}, + {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:089d56db6782a73a27fd8abf3ba21779f5b85d4a9f35e3b493c7bbcbbf0d539b"}, + {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:c87ca3dc48b9b1222d984b6b7490355a6fdb411a2d810f6f05977258400ddb74"}, + {file = "tokenizers-0.21.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4145505a973116f91bc3ac45988a92e618a6f83eb458f49ea0790df94ee243ff"}, + {file = "tokenizers-0.21.0-cp39-abi3-win32.whl", hash = "sha256:eb1702c2f27d25d9dd5b389cc1f2f51813e99f8ca30d9e25348db6585a97e24a"}, + {file = "tokenizers-0.21.0-cp39-abi3-win_amd64.whl", hash = "sha256:87841da5a25a3a5f70c102de371db120f41873b854ba65e52bccd57df5a3780c"}, + {file = "tokenizers-0.21.0.tar.gz", hash = "sha256:ee0894bf311b75b0c03079f33859ae4b2334d675d4e93f5a4132e1eae2834fe4"}, ] [package.dependencies] @@ -6894,39 +6798,39 @@ test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0, [[package]] name = "transformers" -version = "4.46.3" +version = "4.47.0" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false -python-versions = ">=3.8.0" +python-versions = ">=3.9.0" files = [ - {file = "transformers-4.46.3-py3-none-any.whl", hash = "sha256:a12ef6f52841fd190a3e5602145b542d03507222f2c64ebb7ee92e8788093aef"}, - {file = "transformers-4.46.3.tar.gz", hash = "sha256:8ee4b3ae943fe33e82afff8e837f4b052058b07ca9be3cb5b729ed31295f72cc"}, + {file = "transformers-4.47.0-py3-none-any.whl", hash = "sha256:a8e1bafdaae69abdda3cad638fe392e37c86d2ce0ecfcae11d60abb8f949ff4d"}, + {file = "transformers-4.47.0.tar.gz", hash = "sha256:f8ead7a5a4f6937bb507e66508e5e002dc5930f7b6122a9259c37b099d0f3b19"}, ] [package.dependencies] filelock = "*" -huggingface-hub = ">=0.23.2,<1.0" +huggingface-hub = ">=0.24.0,<1.0" numpy = ">=1.17" packaging = ">=20.0" pyyaml = ">=5.1" regex = "!=2019.12.17" requests = "*" safetensors = ">=0.4.1" -tokenizers = ">=0.20,<0.21" +tokenizers = ">=0.21,<0.22" tqdm = ">=4.27" [package.extras] accelerate = ["accelerate (>=0.26.0)"] agents = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch"] -all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision"] +all = ["Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "codecarbon (==1.2.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune] (>=2.7.0)", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timm (<=1.0.11)", "tokenizers (>=0.21,<0.22)", "torch", "torchaudio", "torchvision"] audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] benchmark = ["optimum-benchmark (>=0.3.0)"] codecarbon = ["codecarbon (==1.2.0)"] deepspeed = ["accelerate (>=0.26.0)", "deepspeed (>=0.9.3)"] deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.26.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "nltk (<=3.8.1)", "optuna", "parameterized", "protobuf", "psutil", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "timeout-decorator"] -dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.20,<0.21)", "urllib3 (<2.0.0)"] -dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "libcst", "librosa", "nltk (<=3.8.1)", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=0.9.16)", "tokenizers (>=0.20,<0.21)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "av (==9.2.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "scipy (<1.13.0)", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "timm (<=1.0.11)", "tokenizers (>=0.21,<0.22)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "beautifulsoup4", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1,<0.14.0)", "libcst", "librosa", "nltk (<=3.8.1)", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorboard", "tensorflow (>2.9,<2.16)", "tensorflow-text (<2.16)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.21,<0.22)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (>=10.0.1,<=15.0)", "accelerate (>=0.26.0)", "beautifulsoup4", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "libcst", "librosa", "nltk (<=3.8.1)", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pydantic", "pytest (>=7.2.0,<8.0.0)", "pytest-rich", "pytest-timeout", "pytest-xdist", "ray[tune] (>=2.7.0)", "rhoknp (>=1.1.0,<1.3.1)", "rich", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (==0.5.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorboard", "timeout-decorator", "timm (<=1.0.11)", "tokenizers (>=0.21,<0.22)", "torch", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)", "scipy (<1.13.0)"] flax-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] ftfy = ["ftfy"] @@ -6952,12 +6856,12 @@ tf = ["keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow (>2.9,< tf-cpu = ["keras (>2.9,<2.16)", "keras-nlp (>=0.3.1,<0.14.0)", "onnxconverter-common", "tensorflow-cpu (>2.9,<2.16)", "tensorflow-probability (<0.24)", "tensorflow-text (<2.16)", "tf2onnx"] tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] tiktoken = ["blobfile", "tiktoken"] -timm = ["timm (<=0.9.16)"] -tokenizers = ["tokenizers (>=0.20,<0.21)"] +timm = ["timm (<=1.0.11)"] +tokenizers = ["tokenizers (>=0.21,<0.22)"] torch = ["accelerate (>=0.26.0)", "torch"] torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] torch-vision = ["Pillow (>=10.0.1,<=15.0)", "torchvision"] -torchhub = ["filelock", "huggingface-hub (>=0.23.2,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.20,<0.21)", "torch", "tqdm (>=4.27)"] +torchhub = ["filelock", "huggingface-hub (>=0.24.0,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.21,<0.22)", "torch", "tqdm (>=4.27)"] video = ["av (==9.2.0)"] vision = ["Pillow (>=10.0.1,<=15.0)"] @@ -7657,4 +7561,4 @@ tesserocr = ["tesserocr"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "9937d92a9800a7064976f0e1f797c5da648e635c7b331904ad302dacef961ecc" +content-hash = "5320329d9899ce8577ab91f634df8568f97ab3a9d6d27c06ceba4cffca255533" diff --git a/pyproject.toml b/pyproject.toml index 672a3487..8d1a8dcf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,8 +25,8 @@ packages = [{include = "docling"}] # actual dependencies: ###################### python = "^3.9" +docling-core = "^2.7.1" pydantic = "^2.0.0" -docling-core = "^2.7.0" docling-ibm-models = "^2.0.6" deepsearch-glm = "^0.26.1" filetype = "^1.2.0" From 6f7b12886757147c4fa798cc9cafd1208f54f80a Mon Sep 17 00:00:00 2001 From: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Date: Fri, 6 Dec 2024 13:18:14 +0100 Subject: [PATCH 05/13] docs: document new integrations (#532) Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Signed-off-by: Christoph Auer --- docs/integrations/bee.md | 2 +- docs/integrations/cloudera.md | 6 ++++++ docs/integrations/data_prep_kit.md | 13 +++++-------- docs/integrations/docetl.md | 2 +- docs/integrations/instructlab.md | 7 +++---- docs/integrations/kotaemon.md | 4 ++-- docs/integrations/llamaindex.md | 6 ++---- docs/integrations/prodigy.md | 9 ++++++--- docs/integrations/rhel_ai.md | 10 ++++++++++ docs/integrations/spacy.md | 7 ++++--- docs/integrations/txtai.md | 9 +++++++++ mkdocs.yml | 3 +++ 12 files changed, 52 insertions(+), 26 deletions(-) create mode 100644 docs/integrations/cloudera.md create mode 100644 docs/integrations/rhel_ai.md create mode 100644 docs/integrations/txtai.md diff --git a/docs/integrations/bee.md b/docs/integrations/bee.md index 168fd788..f46ea9e3 100644 --- a/docs/integrations/bee.md +++ b/docs/integrations/bee.md @@ -1,7 +1,7 @@ Docling is available as an extraction backend in the [Bee][github] framework. - 💻 [Bee GitHub][github] -- 📖 [Bee Docs][docs] +- 📖 [Bee docs][docs] - 📦 [Bee NPM][package] [github]: https://github.com/i-am-bee diff --git a/docs/integrations/cloudera.md b/docs/integrations/cloudera.md new file mode 100644 index 00000000..748f266e --- /dev/null +++ b/docs/integrations/cloudera.md @@ -0,0 +1,6 @@ +Docling is available in [Cloudera](https://www.cloudera.com/) through the *RAG Studio* +Accelerator for Machine Learning Projects (AMP). + +- 💻 [RAG Studio AMP GitHub][github] + +[github]: https://github.com/cloudera/CML_AMP_RAG_Studio diff --git a/docs/integrations/data_prep_kit.md b/docs/integrations/data_prep_kit.md index c9b3755a..a071cef4 100644 --- a/docs/integrations/data_prep_kit.md +++ b/docs/integrations/data_prep_kit.md @@ -1,13 +1,10 @@ -## Get started - Docling is used by the [Data Prep Kit](https://ibm.github.io/data-prep-kit/) open-source toolkit for preparing unstructured data for LLM application development ranging from laptop scale to datacenter scale. -Below you find the Data Prep Kit modules powered by Docling. - -## PDF ingestion to Parquet +## Components +### PDF ingestion to Parquet - 💻 [PDF-to-Parquet GitHub](https://github.com/IBM/data-prep-kit/tree/dev/transforms/language/pdf2parquet) -- 📖 [PDF-to-Parquet Docs](https://ibm.github.io/data-prep-kit/transforms/language/pdf2parquet/python/) +- 📖 [PDF-to-Parquet docs](https://ibm.github.io/data-prep-kit/transforms/language/pdf2parquet/python/) -## Document chunking +### Document chunking - 💻 [Doc Chunking GitHub](https://github.com/IBM/data-prep-kit/tree/dev/transforms/language/doc_chunk) -- 📖 [Doc Chunking Docs](https://ibm.github.io/data-prep-kit/transforms/language/doc_chunk/python/) +- 📖 [Doc Chunking docs](https://ibm.github.io/data-prep-kit/transforms/language/doc_chunk/python/) diff --git a/docs/integrations/docetl.md b/docs/integrations/docetl.md index a03a4044..e61f028c 100644 --- a/docs/integrations/docetl.md +++ b/docs/integrations/docetl.md @@ -1,7 +1,7 @@ Docling is available as a file conversion method in [DocETL](https://github.com/ucbepic/docetl): - 💻 [DocETL GitHub][github] -- 📖 [DocETL Docs][docs] +- 📖 [DocETL docs][docs] - 📦 [DocETL PyPI][pypi] [github]: https://github.com/ucbepic/docetl diff --git a/docs/integrations/instructlab.md b/docs/integrations/instructlab.md index 5f3b3315..a8979039 100644 --- a/docs/integrations/instructlab.md +++ b/docs/integrations/instructlab.md @@ -1,14 +1,13 @@ -Docling is powering document processing in [InstructLab](https://instructlab.ai/), +Docling is powering document processing in [InstructLab][home], enabling users to unlock the knowledge hidden in documents and present it to InstructLab's fine-tuning for aligning AI models to the user's specific data. More details can be found in this [blog post][blog]. -- 🏠 [InstructLab Home][home] +- 🏠 [InstructLab home][home] - 💻 [InstructLab GitHub][github] - 🧑🏻‍💻 [InstructLab UI][ui] -- 📖 [InstructLab Docs][docs] - +- 📖 [InstructLab docs][docs] [home]: https://instructlab.ai [github]: https://github.com/instructlab diff --git a/docs/integrations/kotaemon.md b/docs/integrations/kotaemon.md index 14cfc130..9858dc70 100644 --- a/docs/integrations/kotaemon.md +++ b/docs/integrations/kotaemon.md @@ -1,8 +1,8 @@ Docling is available in [Kotaemon](https://cinnamon.github.io/kotaemon/) as the `DoclingReader` loader: - 💻 [Kotaemon GitHub][github] -- 📖 [DoclingReader Docs][docs] -- ⚙️ [Docling Setup in Kotaemon][setup] +- 📖 [DoclingReader docs][docs] +- ⚙️ [Docling setup in Kotaemon][setup] [github]: https://github.com/Cinnamon/kotaemon [docs]: https://cinnamon.github.io/kotaemon/reference/loaders/docling_loader/ diff --git a/docs/integrations/llamaindex.md b/docs/integrations/llamaindex.md index dc61b34f..928d0475 100644 --- a/docs/integrations/llamaindex.md +++ b/docs/integrations/llamaindex.md @@ -1,5 +1,3 @@ -## Get started - Docling is available as an official [LlamaIndex](https://docs.llamaindex.ai/) extension. To get started, check out the [step-by-step guide in LlamaIndex](https://docs.llamaindex.ai/en/stable/examples/data_connectors/DoclingReaderDemo/). @@ -11,7 +9,7 @@ To get started, check out the [step-by-step guide in LlamaIndex](https://docs.ll Reads document files and uses Docling to populate LlamaIndex `Document` objects — either serializing Docling's data model (losslessly, e.g. as JSON) or exporting to a simplified format (lossily, e.g. as Markdown). - 💻 [Docling Reader GitHub](https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/readers/llama-index-readers-docling) -- 📖 [Docling Reader Docs](https://docs.llamaindex.ai/en/stable/api_reference/readers/docling/) +- 📖 [Docling Reader docs](https://docs.llamaindex.ai/en/stable/api_reference/readers/docling/) - 📦 [Docling Reader PyPI](https://pypi.org/project/llama-index-readers-docling/) ### Docling Node Parser @@ -19,5 +17,5 @@ Reads document files and uses Docling to populate LlamaIndex `Document` objects Reads LlamaIndex `Document` objects populated in Docling's format by Docling Reader and, using its knowledge of the Docling format, parses them to LlamaIndex `Node` objects for downstream usage in LlamaIndex applications, e.g. as chunks for embedding. - 💻 [Docling Node Parser GitHub](https://github.com/run-llama/llama_index/tree/main/llama-index-integrations/node_parser/llama-index-node-parser-docling) -- 📖 [Docling Node Parser Docs](https://docs.llamaindex.ai/en/stable/api_reference/node_parser/docling/) +- 📖 [Docling Node Parser docs](https://docs.llamaindex.ai/en/stable/api_reference/node_parser/docling/) - 📦 [Docling Node Parser PyPI](https://pypi.org/project/llama-index-node-parser-docling/) diff --git a/docs/integrations/prodigy.md b/docs/integrations/prodigy.md index 8bb40c29..388f64fa 100644 --- a/docs/integrations/prodigy.md +++ b/docs/integrations/prodigy.md @@ -1,9 +1,12 @@ Docling is available in [Prodigy][home] as a [Prodigy-PDF plugin][plugin] recipe. -- 🌐 [Prodigy Home][home] -- 🔌 [Prodigy-PDF Plugin][plugin] -- 🧑🏽‍🍳 [pdf-spans.manual Recipe][recipe] +More details can be found in this [blog post][blog]. + +- 🌐 [Prodigy home][home] +- 🔌 [Prodigy-PDF plugin][plugin] +- 🧑🏽‍🍳 [pdf-spans.manual recipe][recipe] [home]: https://prodi.gy/ [plugin]: https://prodi.gy/docs/plugins#pdf [recipe]: https://prodi.gy/docs/plugins#pdf-spans.manual +[blog]: https://explosion.ai/blog/pdfs-nlp-structured-data diff --git a/docs/integrations/rhel_ai.md b/docs/integrations/rhel_ai.md new file mode 100644 index 00000000..0d603eb9 --- /dev/null +++ b/docs/integrations/rhel_ai.md @@ -0,0 +1,10 @@ +Docling is powering document processing in [Red Hat Enterprise Linux AI][home] (RHEL AI), +enabling users to unlock the knowledge hidden in documents and present it to +InstructLab's fine-tuning for aligning AI models to the user's specific data. + +More details can be found in this [blog post][blog]. + +- 🏠 [RHEL AI home][home] + +[home]: https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux/ai +[blog]: https://www.redhat.com/en/blog/docling-missing-document-processing-companion-generative-ai diff --git a/docs/integrations/spacy.md b/docs/integrations/spacy.md index a0578703..a3940b90 100644 --- a/docs/integrations/spacy.md +++ b/docs/integrations/spacy.md @@ -1,11 +1,12 @@ -# spaCy +Docling is available in [spaCy](https://spacy.io/) as the *spaCy Layout* plugin. -Docling is available in [spaCy](https://spacy.io/) as the "SpaCy Layout" plugin: +More details can be found in this [blog post][blog]. - 💻 [SpacyLayout GitHub][github] -- 📖 [SpacyLayout Docs][docs] +- 📖 [SpacyLayout docs][docs] - 📦 [SpacyLayout PyPI][pypi] [github]: https://github.com/explosion/spacy-layout [docs]: https://github.com/explosion/spacy-layout?tab=readme-ov-file#readme [pypi]: https://pypi.org/project/spacy-layout/ +[blog]: https://explosion.ai/blog/pdfs-nlp-structured-data diff --git a/docs/integrations/txtai.md b/docs/integrations/txtai.md new file mode 100644 index 00000000..28b6bf5a --- /dev/null +++ b/docs/integrations/txtai.md @@ -0,0 +1,9 @@ +Docling is available as a text extraction backend for [txtai](https://neuml.github.io/txtai/). + +- 💻 [txtai GitHub][github] +- 📖 [txtai docs][docs] +- 📖 [txtai Docling backend][integration_docs] + +[github]: https://github.com/neuml/txtai +[docs]: https://neuml.github.io/txtai +[integration_docs]: https://neuml.github.io/txtai/pipeline/data/filetohtml/#docling diff --git a/mkdocs.yml b/mkdocs.yml index f118edbd..687ae6d6 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -87,13 +87,16 @@ nav: - Integrations: - Integrations: integrations/index.md - "🐝 Bee": integrations/bee.md + - "Cloudera": integrations/cloudera.md - "Data Prep Kit": integrations/data_prep_kit.md - "DocETL": integrations/docetl.md - "🐶 InstructLab": integrations/instructlab.md - "Kotaemon": integrations/kotaemon.md - "🦙 LlamaIndex": integrations/llamaindex.md - "Prodigy": integrations/prodigy.md + - "Red Hat Enterprise Linux AI": integrations/rhel_ai.md - "spaCy": integrations/spacy.md + - "txtai": integrations/txtai.md # - "LangChain 🦜🔗": integrations/langchain.md - API reference: - Document Converter: api_reference/document_converter.md From ba32fb863741eadfe3eec5d624c8b495000cc740 Mon Sep 17 00:00:00 2001 From: Sander Maijers <3374183+sanmai-NL@users.noreply.github.com> Date: Fri, 6 Dec 2024 13:42:14 +0100 Subject: [PATCH 06/13] fix: Add `py.typed` marker file (#531) feat: add `py.typed` marker file See: https://typing.readthedocs.io/en/latest/spec/distributing.html#packaging-type-information Signed-off-by: Sander Maijers <3374183+sanmai-NL@users.noreply.github.com> Signed-off-by: Christoph Auer --- docling/py.typed | 1 + 1 file changed, 1 insertion(+) create mode 100644 docling/py.typed diff --git a/docling/py.typed b/docling/py.typed new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docling/py.typed @@ -0,0 +1 @@ + From a38f57efce304c13c42fc1170872e0c56171a021 Mon Sep 17 00:00:00 2001 From: Michele Dolfi <97102151+dolfim-ibm@users.noreply.github.com> Date: Fri, 6 Dec 2024 14:50:10 +0100 Subject: [PATCH 07/13] ci: allow ! in conventionalcommits (#533) Signed-off-by: Michele Dolfi Signed-off-by: Christoph Auer --- .github/mergify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/mergify.yml b/.github/mergify.yml index a383a484..8d30d733 100644 --- a/.github/mergify.yml +++ b/.github/mergify.yml @@ -6,7 +6,7 @@ merge_protections: success_conditions: - "title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\\(.+\ - \\))?:" + \\))?(!)?:" - name: Require two reviewer for test updates description: When test data is updated, we require two reviewers if: From c31d9f032ea7bd942dac521fcd5c55ad5ec33983 Mon Sep 17 00:00:00 2001 From: Maxim Lysak <101627549+maxmnemonic@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:17:56 +0100 Subject: [PATCH 08/13] feat(MS Word backend): Make detection of headers and other styles localization agnostic (#534) Using style id instead of style names, which should be localization agnostic Signed-off-by: Maksym Lysak Co-authored-by: Maksym Lysak Signed-off-by: Christoph Auer --- docling/backend/msword_backend.py | 35 +++++++++++++++++++------------ 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/docling/backend/msword_backend.py b/docling/backend/msword_backend.py index bab956a7..037ba005 100644 --- a/docling/backend/msword_backend.py +++ b/docling/backend/msword_backend.py @@ -1,4 +1,5 @@ import logging +import re from io import BytesIO from pathlib import Path from typing import Set, Union @@ -166,6 +167,14 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): except ValueError: return default + def split_text_and_number(self, input_string): + match = re.match(r"(\D+)(\d+)$|^(\d+)(\D+)", input_string) + if match: + parts = list(filter(None, match.groups())) + return parts + else: + return [input_string] + def get_numId_and_ilvl(self, paragraph): # Access the XML element of the paragraph numPr = paragraph._element.find( @@ -188,7 +197,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): def get_label_and_level(self, paragraph): if paragraph.style is None: return "Normal", None - label = paragraph.style.name + label = paragraph.style.style_id if label is None: return "Normal", None if ":" in label: @@ -197,7 +206,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): if len(parts) == 2: return parts[0], int(parts[1]) - parts = label.split(" ") + parts = self.split_text_and_number(label) if "Heading" in label and len(parts) == 2: parts.sort() @@ -225,7 +234,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): # Identify wether list is a numbered list or not # is_numbered = "List Bullet" not in paragraph.style.name is_numbered = False - p_style_name, p_level = self.get_label_and_level(paragraph) + p_style_id, p_level = self.get_label_and_level(paragraph) numid, ilevel = self.get_numId_and_ilvl(paragraph) if numid == 0: @@ -237,14 +246,14 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): element, docx_obj, doc, - p_style_name, + p_style_id, p_level, numid, ilevel, text, is_numbered, ) - self.update_history(p_style_name, p_level, numid, ilevel) + self.update_history(p_style_id, p_level, numid, ilevel) return elif numid is None and self.prev_numid() is not None: # Close list for key, val in self.parents.items(): @@ -252,23 +261,23 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): self.parents[key] = None self.level = self.level_at_new_list - 1 self.level_at_new_list = None - if p_style_name in ["Title"]: + if p_style_id in ["Title"]: for key, val in self.parents.items(): self.parents[key] = None self.parents[0] = doc.add_text( parent=None, label=DocItemLabel.TITLE, text=text ) - elif "Heading" in p_style_name: - self.add_header(element, docx_obj, doc, p_style_name, p_level, text) + elif "Heading" in p_style_id: + self.add_header(element, docx_obj, doc, p_style_id, p_level, text) - elif p_style_name in [ + elif p_style_id in [ "Paragraph", "Normal", "Subtitle", "Author", "Default Text", - "List Paragraph", - "List Bullet", + "ListParagraph", + "ListBullet", "Quote", ]: level = self.get_level() @@ -284,7 +293,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): label=DocItemLabel.PARAGRAPH, parent=self.parents[level - 1], text=text ) - self.update_history(p_style_name, p_level, numid, ilevel) + self.update_history(p_style_id, p_level, numid, ilevel) return def add_header(self, element, docx_obj, doc, curr_name, curr_level, text: str): @@ -322,7 +331,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): element, docx_obj, doc, - p_style_name, + p_style_id, p_level, numid, ilevel, From dc71b8c00492b973b30ba8f87cc4217d469cd6f9 Mon Sep 17 00:00:00 2001 From: Maxim Lysak <101627549+maxmnemonic@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:48:35 +0100 Subject: [PATCH 09/13] fix: Correcting DefaultText ID for MS Word backend (#537) Correcting DefaultText ID for MS Word backend Signed-off-by: Maksym Lysak Co-authored-by: Maksym Lysak Signed-off-by: Christoph Auer --- docling/backend/msword_backend.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docling/backend/msword_backend.py b/docling/backend/msword_backend.py index 037ba005..f59356e2 100644 --- a/docling/backend/msword_backend.py +++ b/docling/backend/msword_backend.py @@ -275,7 +275,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend): "Normal", "Subtitle", "Author", - "Default Text", + "DefaultText", "ListParagraph", "ListBullet", "Quote", From 48d2cb35057507afcd420fd8fd484c514552dff8 Mon Sep 17 00:00:00 2001 From: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Date: Mon, 9 Dec 2024 08:28:29 +0100 Subject: [PATCH 10/13] feat: expose new hybrid chunker, update docs (#384) Signed-off-by: Panos Vagenas <35837085+vagenas@users.noreply.github.com> Signed-off-by: Christoph Auer --- docling/chunking/__init__.py | 12 + docs/assets/docling_arch.png | Bin 453921 -> 467220 bytes docs/assets/docling_arch.pptx | Bin 47248 -> 47700 bytes docs/concepts/chunking.md | 65 ++++ docs/examples/hybrid_chunking.ipynb | 439 ++++++++++++++++++++++++++++ mkdocs.yml | 5 +- poetry.lock | 59 +++- pyproject.toml | 2 +- tests/data/md/wiki.md | 23 ++ 9 files changed, 598 insertions(+), 7 deletions(-) create mode 100644 docling/chunking/__init__.py create mode 100644 docs/concepts/chunking.md create mode 100644 docs/examples/hybrid_chunking.ipynb create mode 100644 tests/data/md/wiki.md diff --git a/docling/chunking/__init__.py b/docling/chunking/__init__.py new file mode 100644 index 00000000..e72deb97 --- /dev/null +++ b/docling/chunking/__init__.py @@ -0,0 +1,12 @@ +# +# Copyright IBM Corp. 2024 - 2024 +# SPDX-License-Identifier: MIT +# + +from docling_core.transforms.chunker.base import BaseChunk, BaseChunker, BaseMeta +from docling_core.transforms.chunker.hierarchical_chunker import ( + DocChunk, + DocMeta, + HierarchicalChunker, +) +from docling_core.transforms.chunker.hybrid_chunker import HybridChunker diff --git a/docs/assets/docling_arch.png b/docs/assets/docling_arch.png index cecda04b4a3e292985e2e066b31e7afe1ce217ef..69f451293ae085cb4fc3954eba93d3ef7e997067 100644 GIT binary patch delta 207297 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


#Mv__ym0eq(;@W)1v8|E&DG|KnmIStmfI+ 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 rq{M=*Nckl!D*OZ)tzj0nH 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%0DDmQ|^k^5`3aN>0IA-I)+6s!Ku}L0y z)l>1l*Xe!99rcxJgrX72jHEOSs&(?8Ocz@^*mvfS_giR~rL+Y|=G{H?Ep;SARld+u z>&2n~v&d|F?cQf~b_Q$7GiOhpV}IJFCg@tQ`YfP2|j6Q>oE%1tC92dGyk3&K0~2jPVUB3Q<88cvCEbSa0)Hd zXljr*h@x3e2P64F2qIGwMw*l*KXI7ikMwoz=}A&5`)u!SztZ4FP3|HGkjJf)$lNU& zociHDmbHa@vx1`w!^PHBzwMu7^>z zZ)g(_gev@}O0NHeZ(OZp1vDfh`uqM0B;N$IKje%fgRAPrhY=JDVtC?m8$ZQk%L9Q@ zOBA_KaoG29vAJ!G@gef19og0K`djJ?Y^$JA3DMW59E#n6a{C84PJfrsZnmLkm~OVk zP$OQ+Xxjiwv7{{+8E>um^&vrDsBm)dg}zPtu@&GyfFTYIm-s=~BC<6nyXy0dkLbii zwN=@dDx;xdjQ8E}3*f-j@2aoszF0G4gBpf>$x$I7+ca1Z_rcfGkFraIkf_SLw!)oT zn?0)3&E*X^l;bNM$B>UqR8)c>lrlYDoT(9=$1%16@iT%=8v-3qQ#M6Y$jwNVe^~1q zqBy{7C=RNMlBKv|84NenbP`9;+8uFaI-6MkAo=Cj5Ug&h*n@r@s)aD2$dHMT!Cp77 zYoEO*W1qNo+m|f}#rx_fTh$*L%7fme=vQiuF2Fo@I~2)?JMq_w$3tmgd*0w^q^Ha_ zK7Zi&I$dJp*}mvq^UEt>1$pr@y}oGdeJb}k5#!&WeWAIj?iyp z&+UlLwTtOGuJY6Tr#SuJp6nH%a{^k`;gWL=Gi4##r;Sf$m#L&|4S3eP_k3IJL|B&v z`SC(~g{d4!S7UvkXd%r_l)+jgEd>#oG;;_&MUwY8 z=s(r@mMLaqMVs~By2=gtNP!lrjzsk*3s*Xg3MF@z;~a9huL5;Mc0I(%S)U7nN-&L= zP?{F0yd7QG3|<%Xr*Xyf{NHGrfnDgd>x=K9wm4CrR~Zejr^Vf@MKJQ-gxZjqu-W&w ziF4wB9R>K?JF(H%3ybLWv57GM97Et=WGXv7bm&a{Jfp<DBJ1dLcwt{bb6BrtvOy?2?pM!p0#j6r1TE#x2;D^}Qojd_Yk zf>G?8#^Bp-86Hf}Q6m0XrQj!nQo99jN9&Q;mh8N|%}3~@%copso(p&yyH?+4C@V8j z;qMWAdT=H=!VqmEK}+&YR{iiEE{P6NSK}kjmebfTO=x4QDz#cvv?0!j2NIG`DFqMu z;Y5*V!IXRkiQY3Kf+ z{exkr(TZp^Ucg0EZ-8Q66UVe9bONUnZ&F=uk8n%xQENQ-#wA`{Zc{vlyAvqdTYwZ) z(p&9FNpTZDI2lNKOd^2R=l3=a>tBjX?xNDcj$v|sv!U)K)*jSZc?S68WYrf@q9PqW zG}um5fUUzN9{1#>|3gMVYnfBl!(%6km(9nRwJE2u+}2tESO0lV-p%{@&Dm?T!xLw& zKA5-vGr^KINRH;`0{5g1S2W57XQMR(ZX9S}_XG|4MI{nDuW-<-ZAi@wQtwUF=dLb|r)1dE&)^{Pc^Mo{#%S=5Tkv1!V5 zQ3h=|;$QBCl~u5tp3~6ZD;1r*SKnF-Bzl-k2hJe1P#lmsN?zvIFx39~V>q zKj#mevF)5~sj$a(L;5!XI$nm3JI(YeRkA!i*lOal{Y1MLO+{6VX$=Z;odh&o8^)t= zC~V}TjO%pJ0s1MkH62d+gZQri>&hNpZTxtu?e`G0mzVH7MipHHH~D*sJXWf$NxwZp zGpW%^t%JgI>x+mXH2jOcOaYVkGMb(pi-}WNTd?e1x?$aguKq%g&HbF$2CDbqeu*x` zjxkQ-RB8G$R(1@$2M-IRF)Z|_E{E@``S-z_KU52i@{cb?-?f-GaDP;{q|cA+aFyya zibG2cPHX(xoF(v{Vq!Rh-v38MZ30h{G|i_KabkX~YEUu?rRj66F$K0({X<;EjW zE)fS2CSHNcfDB*{ZAG&h^zxMG!3711HTd8ZCtDoJgUn$cQAhbxh@^PWTbb>6vZYId z_?=NojrWOS&iT4HvY(82VuanC2qM2YChbcUn?*mv@Xa#$AosDbxrP3*fIkR+E9=P11UZCJH z;+@;_W4gO?GzI)MBFwoZ@iw_l-@uip*?X#19|@~7buA@;i!2oqMo1@ua{@$VnaN<^ zJ2)0re45uPJMUQCo7!W3Szj8b8|Ys>2w5Z!7iM!5iSo^Q{)H4F+O)QONAnrX?6|$< zl#3PGOR02j;v02j@d5pDTf%Q>q-aZ9TMqSeA~VhrdCp{AId=Qq6HIHx~)@+!7T!|lO!c+t&fi6fosH7km7_9=a|5t zQBVP@htIQ>eA#=huSy0KA9s6DlCgcDgUZ;TJRK^++~YS(qFDlxh@b%(a#^hT^e8H zJT@VauiGAGsZ~Ot0dKHhg9v1@^n4R;j0>+z1Ra9`%=+H@^EA0H12W^2Vk^Q*b$+k| zwXT4LFDY;SYYtYw%REeFH9eRN{rW>?i2y}jALT?ZCPsGFon^CUgD7E;g!0o*S-B4l zTi)7L`WQs+*`STXE_Zj)uVmOgyp&}kclcsv`s0?I9Nd4hp1(`XlX4Q{p#_{?Jlw@s z3JRw5|Lsu!_gTS(AcvnOSaTl@@VIXY$q@PR!+!Y@$*CsK>D>po- zK4mO7j_g~3T@L9hIn^x(sexBWMb2a956*+zGk_Q+2GniVsvLz4xi=82D{PI*K*uaw zD)w1TMxI>F0nw#^(wLcnoE!f7%J;2zk1tur61{N@L-mEqq5`8bb%XNHi3f{X!h3hu zjB!|X+Fid$L~wBhjFQ(!_eNc-A%`WxHJ^^kX0u#t{zMcJv1TU=T1<0HU9|Tv-9Tg*-ZFOU5x__mVXuTpmYS#@PPpn1jh<{`!%e=T(>W(TGcQcmCq6Bp;L66VcA=Wi3ISoDY^W9j!LRFw9xWKQmF<~ASg zkeNa_4u&|5$*%37WWCOnyP8(`e0rElCu7jJ-_$o)m?fIYb&ra96s$Wt$o(@~zJQ*I zp7EP7)KF_uZW6QEeyUzEao^_iRgC_f^K=yB$vDk^)jg8_SWTs(ou1_l73wv z_Ye$qtU#u+6mi=`Av&zNm>r4ewjJYCBw~agx6ICt*ylX;jNA`m9}n>Y%6kPFXr;~O zh3iNP(Uj}BUu*QU-x@BlnizeLOsbv{(Y8Y&sKN;EuDE+^h*yOzPYxmJF_Hti1- zB5@phEv2B+hD(id5?oFXs4;Gq4Sy5@2!G1W$UwnGr|y)U5YAS#Jw)`tPIe*(i4QoN zi`&|tkL!oT>fr;T-G7)b$7t8UP-}@Kmlj!ne%d>a)jmd2_$bn|jD5X2_!ltsm;G6xP6z1OwQZHv%e!Wy^clx!;G$ffFM zr8kI(>YATkbpF8~r%=JFhzKw4=~s>s4o$UX&wN2$RkyOES^36YN&lG*86`iZRI!76 zQG6_oAjY$y{b^k91_OAH2EO?pQW!@BG-B6AAjOAt{Y6Izt4SCbrx;{cS3#yK5Efr9 z*vlXJ$|H7;V!$~v4xi$pBbOspE2`f49YY2woC+7Hr^b4IguoyH_uN#a&@NV(G|%2N zqA?qylWE1uSmb{>PD&)eYqrozK#{?bz`GU$L?Ot=Sjc?z8Q1q|5pezHIVa%{A}XdN z!)hMb)uE-}-hPIqHc1~Y7E}nBn0;TFvX^#gb&PtdyCUgfr<|@QlV4?Dc}*HJ`CNec z%hQKfA1++kM%>(cjh#YOa~s5v#_$7J!>?O@HpfbQ>v)Adlt(g447q8}U%b@qyroj)tk>Sx4Sss4FWy;-ch?M9|Ff#1p8asrneL~o!B_z{&^@<0QhG%6 zpb*oFBu1@Uv8bph8Ez?P_P@AXgfGN=zx}c!!b4Cp>UAcrol{T1Ksu}2(TvkZSJQX- z{#fQuFfyn=`yq9a9xLN(^rtIz;?lTlSL%r4o}#EO^FxmMQkOH7I^fwu&cC15*->uG zjn-r!+G1nXYrAxY59T!OvkY0_+u8;WJ9Cyraix9A2Eswc;@~_l=W57{>%Gs&Y4ja6 zykfY$J*^Dr_p1VQctp7P5%nFbJ6fDTdzH=}3zb0)B# z?R^;fqDL`9ZWP#130OjDAEy7T-V^&n$$kMVzT$SMO>g1{56asfkVx|*8pUy4kxOhk z=lcgiRz&)4`lL6XGq_v-ofH~rAV0;e3sZm%Ay7p~Sr|L0wgb&8$qHNE9>7v^A;+dI zGN0;$;>>_B$+)!egVfW58>Lz-5w+F91b+{sbhO@5OX<@4DvqoOllxP= z(c_(*wn(HRB_Gc>A#SEO*iy5ILPp**jwP-jqB58joP@(pLqB`wu!(a|!rB5H&*8LP z?aJAAIxnbsiKo))6P1s4d5mW%slCC)5-lNp{US>0TVci*d7ft>5r#1a&4*`p2MCZ;z;Pi(`=hALj-|=! zZiY*Eauw0{ z{i)}&AIl?PDe?NM6fWZn@@!`;A79wc`?})naWE9B{uNe8&~!sX1dG;_-=SjToJ1E* z8+^pNmNcGT3}PU9y81O9JACn0JDj6xy>(c3+Afg1Zij_}DqjGfGye)I0sifmnj*hR zGVd2NC+Ast#HLN&J&!K5P`f3WE5wPX?~Yv>B_;&vcRdfEW7S2TThi|Fd5*QuE^Ajb zRoG26mOl>n?`N}qbabkm=p1fkGy_h!ydaCBTwm%rPzXieOYjh^w#h7-w%FnbJBi|3 zw6~aIZJBnJ-h2cYz1ketGjyrAm4Ae={f}+9-;TeqXc11Nq~{Xc zc*XC8!^N(AoWOv>=)JWelsLxBdV#7m1&TPDQGF&ylo6(}yYn?ZBqm zh695_WFP?d>)cdH0T{RWD(B(>%0p~3q%Hby`pJYv z>@&daj{8CHOOR1T{o_5QO4oX1p-!4pXf}8MEKo6k*2RYKL2N!q+Hm+wa88iQ!lYx< z4tjv!ZMrVv)G4jXk^Kcrf!1j0>&(7mNEonQgS;?sTU;(&XPqGp&Wc(OK0_t|WaY0G z6eU=z)naABsMTU^B}CyECFWowrIlp4>tgbZ*a_(& zYQqzV^n0k9Y9jLB#zWmRMb_&Ui=o?St!12=#kS^@`hM}vu_GR&39;d3P7Ndp>jXU@ z_7WZT>iYQay(4r4Qa^tv_Rv}b>`NiRq>+dFxnZl5*O=lBt-98i)i;t_}Im@7gwZXWiBgDLrUPOM+e)lr$*U&_)CZ(_?mR zhG60n9Cau(+z&}ORZX6~pG zLIVF~5#zaq4HYGChFT3llog(g9rP(e^Y$0WKbc1eFU6#|5*7hg^YmKvZ@EHt}Js{aqS)(QVj!r-F%qrrKd ztLPF_8zJOiu+UCv{gmCU_>9-j%kyhL{Q#-1Xb!nR6OE^P09n2R%wecV7(4hfW#CrS zDXAN|Qt`gJ_?=X{dT$=2LETwsU(6n8Tn1;F18Xddll(ltf$~oPZDJS_|N8u4tFwZ7h zKmV>r{|{H{Iv#v&)R|xZc(!IGTJfs| zW|*uMNjJb3?$*c(k0!}Fvk%or3XnV5m7)uxbs(cH6Yd$d;9o&3f!`39Zu680<4lR500HSwQ2-|qbh0j=#Z=fz%_M~0#P#QXoVw*vMG zwu7Ksa)pm3V)&$_bZfar6MYmW!x4C^{=!1;Y8whIEf^Z!NdB!iLcs*E&Emg!p4Q7n z=JBEUp@_Csrg{*W*T=RD9sWZmB(7#c`v=nGp^UQfG+u#wQ@{FF9*{8LJ2GJB5>ld( zFh%WZy9jewbq>x{8Arz>`irDz+4UeME)Dw0nm2(!7Q08+q3*nl~yF5zIpT3=N+8 zZs~lY=jCrpwCAH^LK0qI3h*~Rs)G%^p^a70d(u_fT*IZ|rNNNx%4w3@RXX}~=&d~8 zqh`v*gyG#2D$WFB8CQ(2P1t&4&1YgIGU+|{>Ivuv#lgg8vsn$a6j%rROJFgP^-R- z+7^qM3frJSe<5sr@8d53PcPFZlDQ~MNn8m$%lZZpdizR+!|U>usBqfq$LfKokyjF@ zpkseP^WZBJ*adoO1z4~?p*T7^|8k%J<3>#{#jr6S0vx;Kr?o=0k%A+^44Z1IET(Ow zcri>O#_M5CM`q`Cu#ZN@_Av|wq$Izyhsp!yYdD49>k%qcYJCcrupUpYn*Pqa0HG8q zJ6Uqmka*$D0KYgKKe`id?78{iPp89HmZ$pq7+c+Sct&Ty^LL@T4XO0I#eJqD093=_ z)rY7x5@zWr6581GzMa{vNtxjF)`N#x&)65{O+V+8A&;K6R0z>&t#Kt@NV#J0b7~~m ztwY0m9o+!Wa(CEJE|^u~pUD}UiDZzBGm@;@noM!$Iy)b4<@Y+v>UBMQ?uQ!GD72Ui zPU;*#ZB7QJ*PN7#zUZlCzRca^`&o$bYG7;Z)i`%NlW@8K5w)1%6KB{7UcDdbrvHq_ zsdc>OOlrk)vZvMD=ZJg_Q zB*jjUVTzmO|4}miXCubB$wZ;vS!o)qH3Sp<(kT&n(eaP8HdTO$L$0xd}TE5Llqw|xFrd-@1 z*aq>71pNTcBj5NnEV;&CXfuVkFzPoNUK-BtE31HCjZXuJoDu#S-uW}-J?83F`4VGI z(jpO~Fb^Bq*Xw=Y7fVvrdM6`zBVW`^@)h~1x zTD?j3R3XxEhDhE~%~Y=E;WH8A58;ZgaJF$l=3D(>0J_6?AKyn0cVt|R<^!WkoTcSd z`{b5;iQNF8$j@ZgO4nCEm1%6>%M2P31FFAa=2)FKfh_gOdw7LtA z=~3XiSD?NeD|ibBJ&YKvnS$|e^l}5m0^hwU3li5(N-WdeG|QE?kHb%vg;k$qw96O4 z_%fx{noDVgzH}~Ny`6Stbqk5%e-|S?+-zp+VYBi~Ohd(d-|fy0#z8KB(dr!;cL%zf zdiIV-u=MPjJp5Id8X^&m?}N1bCu|PYp?c=bsyJ{HDjw6=E)dF;M5q_?eN25>Pto_>94{vD=;l>}6GW)4C0NtCCq+Ux zfBOz`ZOLoGi|*;IZ$>!ETi(w09p0}3nt~6}YRODrVcf)lTVcKrhOM@?2XjOPl*q^V9WjLgmHV61}Sg(&vM92GUWM}81B0pkqJJ6`}E?^PFA-)!5}48;nZ%t9PBEI zb`37?8dkK&r)3aIwV0Ln>`r5p&!QEXq>3sJ|E!R{~8@c7_u)x?Xj4}pt4)z!Q z6QOvN_>mC-Ve`mF68bS96<<#mCTBMKB{Qd4)N~m7PkZA3FE2!vSpGXBIhlw!B}N@p z^vSXTY8k*hC>FxCwd_Aszk?AT{NCS6IYNivQC94b4~K6Jl)qy5kyI4#UKN=Ibne@??cvaPpFX)S|9lzo(4D24XTOi{Ikg^=~Xeia__D&ork$pX)4Jki_3J1l0z zr7|{Lgyd2_QlP<>h^rC!ZPlaDM$sRq9n){4Pvn8?HG|@s_3;@Nu<#m1lB-v%F*poZx{MM z*@5uDmwr}`c_c3N*V*t80~73z#xH<;^Qmgl`rF+RCL5ZFw`1&qDZfYn!~UH}vE6A% z7@<=n*y=Z&eC6}FrVeJpk(AOWx1R44pL>VE&LiD>o{Nn!_51fo?#*t=trfl0RWekV zG)P3K1#xXqt2-(PioeBu5B8c_!)6NX!MK#b_~`8RdVcy?enypK^59Lb5nt&JL)Tr% zR~J{-vfy#pN&wjjQK#xF0PH&UB*t*-QOquXS#~h-qyA{Fytf6A1=u}KCI@oY{Iqf& ztjR`H#BjP^KMA8*j2xigI&1_x244P}8jI>2Gi;eSWEXX2yID`~im{Lcs+CmZw=Hn< z;|)DEfeZb&f(?cY9Ra@1MhUJ_6jR z6*rr2g`aih*L$>*oKk1NPmI-ezIGy4{U?iEZi*J|Ii32XFCWi3uE7#xz^-27LTkzk zx%=l%2Bcd6Xoc(i4yK|~Qn`7oSm%xrhTE$cL(9w%?9h;)wM}4BeoyF~d+GV(#7FkI z9z7qj&W?S+#$r#@;=zxd3FJP+a%Guk9PF>2>qz|!ZR)-M?2aOEOa(tVgXXk+GV+YH zt*f@mA%U;!R$~rwCs_@V5v}VMJcEiqn@G?ty>A8l|K-_=rC+|H`6@;8ivzA)*52g~ z9*~ewuPE`V;_J&8f*y10*2hAA5hcDT3xA5Ig^Zcfj|j*#e}!<57~cTs`<>kECxu2B zp!KZe+H_@K>%8@!rGX#Mz5*-CcH|FY0mfQ@mi|Jdoou=5>0>N1UNDm66MFugwmH&% zDyi5nxGb}a7&k%~Rjzp#{H%wfmBsmCZX;RVTR+PFdGO=*-WzdGBs`}SW4*WkCp-4) z<+yaSmTcSH^=-!KIL!Q?a^3e0lb-vSlG8r+kh2N}8_AQB2eOC(SSy=x%oQ4}rp$L4 zTi&TLSruAQWTii-O>hR!^I(Q}p|gmQ#QzriHBJi7>Mw@G;sc{ptwp`g+}V)xjBN|5>q)1J>_ z+LuYN&Bb);mg-n@6|nYZsKXDwFY+}Vw@xl=iEb+O6>u4YFBZKp7_DyhjN#rV@U(Nz zvG<-i(GI338PZ;u?F7Ae8~Uj5T3&fI@2N*F#|;8rrl%aK=Sjs;bjTuy+3X2ne=&Ff+-ZLNghETsi-q zT&{b0C@!nXIA+P;?=wXF0T0?)ZOf`;9p#!a^z)UM$s-I=0 zRO-9ZuD(|FfIUibhK?FqlBc<+=6@D)d!F5x*2{-)lRlf zLcIo-0%q#P!bS+zHi~bDt1X|ZZL?a1+-tyzp*<^<7-AoD$TVm6O?oGf?Xu*VZ3^yT z3dRIB?u*{i;i?y_{AHnG_4aGDHSZ&#-OW{eFR)qo-PZ1R_DIfG?Mybl0#CaQ5&UP3UShw9 z*dd)Q+)Qu@225pQfad;Jw!-f;&^DO;zdm^p@lAybcKb&3T@`~zPo2SvBl{74V6@>Y zCT7_A5||_Pewt3cGE@`wC5gn05I>+lOi@;~^{}Ps*)R*+DG> zncHf^wMJo{M|{;qL~?%XT0*loEe5m_UnXt4BFNDd`Y{`uY5-Q)OW6JMg1!u-LhnSM zgvLbQz&RIBRaMs)x4OODq@?{913FwW^8^q!NOa31yq!-)2$h{L`S?wD( z7MONLG z{Jciyf40hptwe|GH%7)-Fz*O^i?$>~f=?@S<5{PU*I3oQzt>TbkLYkQz1(S%wrcH4 zo2WyvTnOyNEA)mYU;1jyly0R7VI|{#92XGm*@I10^y#WRh@gzY9~RK}{AJ>|_5G5s0RWhfF0y8*D4miNBl*siS2%{^Y3zzopIjU{AwOK%{fAol^n^GRR8!$_eJ{?$ zIXfkotJ5x<(wRA&o95U2QE$G_!lBkzsMXFCMOyXAx9t=Ox#T<{)mC9~fOk}`H;{o4Rnqj8j1YbE@9zucNCx2jD)u6v8$ zs&-#{J7aa}0-gn72T;-jUY0G#t*Y;D&k9Ve_C>dL<7*I#Kg{!gq1B$@sQ4@YwBv|X z!B;Z&EL9j9HsLGX?&GiXBW0GKpRKaX_Hf|S476Z?v$Jt4^kNi$T4w!f%ybMQv z&X3j`OP<-!R22oQ`&H=G;6RPyx9fCN3Fl;AY)-llY%!cpxXpC5mzL#1)_uaQYobLr z?ir<3c%5j>G-|MOK)`Bx*2ys}J9U1vB^hZ4XE-^}H>XmLzf9u0YX z6PF}jOP!}K+F~VoW!rr4wFO?hdm4a(1ZKyuvI8EYvG9UqKFFs8d{(0XvV!cep+m}S zO5_^1@&W1bW3vk)3A-k&?z?F<;*(h0Uy2E_592Gtj{`7zx1zcutz;hn$SlSRJWI zKCwbhRpoEfu`1vshv~y`95@!Apf*i#=i0J7eS#qfQpz zO~LP61AkS}Am?#zMrIr1*Bg~*ZDXFQ`_~-ht}vttu(_$I8n@UNBp%nI7-;!b&r zaHF3S%XIbfZ}wo>CEXZ1Z{G`N3%2A9xv03kfuI3fsZ+t1@xOMKp!B{-q?@N7LHkyC z!d>=MJRvp!$75D91X{i`OxqS)<`g!=b6H`=n4vlToPX&P_xt!WqtQB4pE&(o{4a+3 z{8OO&o#>5o?#-Ot;ZKxJ(8;Q@DDk!Fc~2>&hTE6QV!S61O@R|RC6yBKN~(!{SE_j#RkE@!(V^9$#HymO-&; z3or%fC7`sux?6dPtm@bJPV z+zDvt%j%A$+uUD}#jx-5k7w(nX$32?>;iy@v#e(;;a@m+Gf{&de z)a}bk0_)Cqt9)KV?HoAu+HB=>ZC94F7zV(<+}>?R_w9lUd_;ibb$h#rKx&6r%$${1 zjQ#WTxky$V9eSKx#(sKbJ9%D8BkR*~|FMtKj;TJL zqt8RyIC0Fiej9T}d3y8QeOQ9mhRL(OPZmlCNweX*o@_=-tP1yMWy*5AxAnu=F8nT*FF2Zrkak{x z@hrlNk99~RTg37=P&FygYFG0kY#Dp0JINqURFZLNc4&ig^0HIQa*Yfx>A*nUsde_a z_BJETq!9f!ExvZo;Xjyl0}cHq!mHT%m*%i>S)-3j3v|EP`?34b(0LE3lrXR0H_@=76+>Hj@aoCd9+wrvM9N&3z#sYLe0)m zTIF5w%k>9YIs4VT?2r(RI?riJGxbq>t(~ZTUc9F-DT^K2|1eaT9J(i|FY^(@MLVr1Ut}7Ja z6o?(2Z6nv}wFM3-%f%TSPbP=(+`gGv#SB~M$4sXWu1qkX?3>_1cHzqYNHh#G;E*f? zB0DrU!{&R~Um+;)rLnXfqixpj_+xG3xAyS$9W)D4S@*#3_RcXB2a$6~0Zq)Bz#K*) z{nWm+*WJnph!K&x&FL7!56r@M$Oi4vy85CicF0BR$(q7==3GF6kKwwS_H@#x?&fVH_uzBfda9Maxn-i(X+9qUR1I(2njxk1}@&#U^W8P)MfgD zd-udEICdfmh$MFmW@enuOO3a7D+;!N^~y%SD|fJsb@B^oaIg%Lm2_u@J~PPkb#yx| zgZTb3l8@{xO^IHT%n8n0_rsqUDfrN~Y8NZqdw4h!8QjuRX{4bfyFHB7tiMaM+|&^^{!(m8)|Vk;wQG5T$$ zfZ}3`7)gu&oLazE>9~Ur&UMze1f_5UVIQkcvwo~gbZ^{wvbA8j+^7;4@VjVj@&(Jx#eUf&ZynW`@9Rwn0RgyHVylcRNr5e7o8GYW*Ul`sYN$AKOo~k0I@|;qG z?+o1U>TC~45aJ**vz;f{FKyPzqj3@iX1`G4xnXyc>sW0bR8sl|@0+?OVkq95R#xbJ zn|A4AqA;L=EA>E`xrcKphJA+Y7J`X9!K>%D*eL+t`=ON#Tvls|Y3s@>Gq!tLG9!PJ z(Et<(QdOv!cMhsPaECPeBSkO6dvUQ})r+5`I3Ra#^}iD*LGdm6i=4FwQc~(BQ zkj!iVJ3}*k6b5v&eLt~8!$F6$q6Q^5GabKiHtUk^Fyg3srL4ZPb^glYy!jP}*)x%o z=imAL3ZfTsvZ~-)3aCK57@AV(NtTlq!tM0@Kcn z6NMKsk>3gFSL~)F{pTs&8sPU(*b_UAQt+O9}8ATogd@QFMM@z(n~A zZzb4v7f}}hu-Dl#Q;}%(QD~4P^T+EekvpkH6+3r<@xrreYG$Mw8WZjlJp74w53=UI z#UV}m?f_BI!O{k>{LneXm4iJFj zY`%KJw9|<`Pju4MHyrx`a&ED7DU~6@ucckfNyni@ma18I)qOLx{(D(6E-X)$LgQ3>Owr9WC@^)q;L86ntvGB%vd2qsf!y{xg8WZqPmT{;&IiKZuY^|$Z zLAhUr)4(qtr<2X8_;8Umb1pIdo1iZskI9*GS(abp8$X3XlD8H@YSlU<>|p4vqiXsc zxX;CZ@~S)TeBxqTXYsj*fj>t5=H|i7)TNyXWznHS>wOSz|AauGJAsM4PFCSPQ|(bV z;;=I6bnXn43r^l*!!SI>y zmoEpzvcUIjhTo<>plKc>#`{vHF*bmZ0E=FCN4 zzO$4zMr$;_>qjNxV;=%RMvhsj&nynv0M6-h1oN3=rxViLM`@-aqV=#2i-Dd{!Lcp^qC&(VP~tOTcRKGcCucQW=3tj_9JAxGw$bIQI$C~8*w6Yjv%!1IM`na4wXS}@ z9;3st=k?9tn#z;UwKv6=oOZTjKKYWSkm=ejOzeHW zp0VobAR-2ddhW|Nw*8zvS{t|Y<0sS{v<|LTictn#jFfub_>{#8?txu-Q^7Uh6wdetk{bCx?~5!h&gEM7?J*6kTnQjInZSIuAWS9U;U~QMS}(BDQCGRg zS-Xo*874SQY-ScO%mDv|gW=c|v~crB*qB(e_v(Ipe8I=p@o1Bn%&fSG98y|)eGgv^ zOm6I}iO8#_uZ7$xe@#qEy`RDgSD`T93fBF;L3zUQ4I-|P|B8HtJgu=*t?R%cysvm6-q!7)8lt$V5+eP0E@g~q<> zx&}2){+r?QNdQpN-wSIm$;ARlJ?{(bPBXJ>(v zr_7Mg5Xl2pVJcC$1S#WFsdN|c>03;Ho*p5snC%!^$38{0rV((_1CFgIo8rZF-7*lv zCAc3(Ht^yQCUI~_Uvbs_W)ORZl(A|%!Ktlo*QbVeI$KK4g(z%R;bFsOU!vYu4Mft1@8+g zJkWs_d~o{r%}lT+%t^lsxkjhB35}w9X&AYMqR9`tNvc_UW-wzuir&R%^VT*J6nz$I zMhEccy%YoVpzPmb>@fx#2r!rq6z1%aEFi_(y&I zl0;Bq;u}UN0Xw-qKB$R>*9juiqoy2W1Gkv2lAyQ6|;pJ_-5`+K>NmlR~s!c0{Lb^1CA zBQ!CE^7OQ=mnyTLf9y?_MP}IWlD}ZQdIs?VQpfZQOS z0g+)Gy>@M=Ul7(#u=+FC1ym|YCIk~%)U*lqj=SK|$14;pJ96$tji*zy zxg%%#p^QbG;7hcR-dErdTURucS$b-&KY+l^T6UiV#?WZ?s>KVWp|K&I!JYU$xS*1j zG#Wj;g^n3ykiHkif<+rJe+%PNalC06CI_+*jfxr;bR|$dUAH;W&}Fzlfl^*YlXr{~ z{cJMS|{}48T#|HTyG5uh7IX(8O4)$(N>1o488y&#;G3jk zvvh)aEMe4>m2>Bv6UP51X7@7}g7R8vb`AkfzE?8MOX~Y={SCy}77AD5w!!o5HY2~q z6}vz7me1e%!f*Q;R5f}HWv;??1S&~L2mxjy{xhvGJM4Lx%|yBp!e{34vQq!u07b`v zwdc32xu7N}A^5uKo)ejt<(=Wlnq_%Th-;!=NP#WGPmJ(e_J7VeHWKugPX5HR*DcQT zGsTv8hx=~eN*)}HY(aGhLLZBpP;=?8+#%(PYn29}mo5IcJsLBz!GY*LC#LJk_$SVs zFVcTegPEibPVmz>&nspaBiEHajW~SE`Si~-@8Vrj(P)9Wn-_B|57K=0;u-wJUyomeZy84ZH7d-+8GRF*_I=t{P=Q>o z;Oet*BZxt49c+-h?PhF{SM`Ps zN9SGrPcLuiT=^{j&as~}il~yU)G<@?uYbo<>VA8ncG5`f!%5DWs|+sUXiYymSV15} zbjd`Fe;fCd`eQ3_`i)Kcx4TX~KVX3>#s$Dgapw1CvX#jqp8humF=Lbsf?Sc49fGZ| zGdX}6tFp}cr zq3`3Ycaj~wsXd^7eI6w#u&iz+AUpM8=7uLz#qrvfMLiRx$02;?b3{#xh8{q2 zh2(FNmwu>@tMOKTC&b0Wq~_(f^|BiFwXkYJ4gBReKhrbmcMPRNMI3y$JUaBZOGGj` z(*aDk+k($ZW%^4U{~Asmz3+L~J+ah3mZt3K_m?1)QV}PIgSzDTXCb8+{~0ex$>g+- zB{5`|p%Dl5ljlZwdOGHKwpt-V}@H$zlWX=2^@r6D)lJ z#PNa^Po;n00uh8=bM{h=U`3AO8o!CHu|UD1H~_?y6bMh*)USEX2qCfx_-_bj#AykV zRroXZ$EbhT?&`vp;y5z0#!Oiy}J1XB=8^(81vgwh1OkRI58{aZfI=d z6R;aJtRE8%{p-CyRvn`wJedr<)d6I_gf-oam;fxAQ2l=`*QnmK?-bAFqh1dW0gvk} ziY2Ys$Dn-2Rh0S{UD){QCS&9$#4(r2*SQTd;YS~X>N`|_82)kPOGmox)DG=~t0~{D zu84^Zltf*bvwg9oul1+i_3mat^z{unChCC=j5i5KtqPo{C!4TF-gI6U4j3bDo^I7= z;}A=t@gXNV^6SI(ID(5CgP%WfSh)lGkNCU>Cxu#)9KNpr=Tf%aAj*_!v*VY{6~sXZdTp|aY+zZ@>RqPdcruQ zk-wDHp%c&bbN*B#l8VN)QYnbn`ud;`-!+uzxix~0D_8SSz~NLqU~fN#%I84FwW$5a zte3Dc9Px_v$s+T*eT=Wj@$_BKu!Z_$?zfr$^7GGyI!VP&W~(Hv^yY3|xC3Z=xAd>i zo|y5e8l&gQVYfCp*FB{xhar|xQ067f4rf2#_XROV%(w|L;3dSyZ-NNT3=Y&FWDuL) zaFG9NjA~qi?M=K!L7lECcgr--4*CkdKNZCPMY9_S56UZT@sqSY3TQaKE+##g=#dks zeXv_}1q-`S#d%eS=PzaAB;vos1?WfLDb_qw8t9iQ({%=2x?w^=TG09BD|8s43$T9V z8Xz@265Eh|vr7Wrm_F9?x5(R5hNOK{5wnqf9I@qpv_{@ReqA!s=`iz+HBX9vXG6Wz z#Q3Se)aNzX!2i}TG4vido>jd(kx?{r4M>=0RM~NFiFqtTo4EPcM4Hi0w&&mS9oDhH zKiSUS)#rT(La<{zH8JQ{a)3D4GqRT0;DHD@8sU2Hw@gKQZ4^+-i;v}4nLsU5h|9CFI|In0fc=Hscq`C4yt2*fp5`N8^Eo+BC;yh- z$1$|)5wjB4ANl~3+;{9)>c0HmB3FRks|yBN)N5ZM=$Q8zuL7wXA7aN%ZdeO3J*7nK zJy#)Y5_5C6(a!|w1pd`g5DsuRrKh+Q%PF{_A&KUBJ9SS~=lm zt73+u-2@_2D8~gFpVKnS#Oq{!W$u}>%20&%__PzmaT^+j$CM-q3ApxmuY^?akhfAQ z+$0C0o8J5Q(K}vATjzu?o}OJUsMqnz^dx3x0mrS!v+sT6sKG5{|I!D0i__e#zViSW z*z5!SD{L2DNK1B{(MhFhELYiIz|O%eVoxEWMxu zC-cXZA}~~Re2Nj5qkOk;KSPV@{azA#nEf`ByZgNKCIrF}N^s#VXTB4;%N56s`zP7d zh5i>M>ttX;gvD>Y6cv1&nA88l#?`#bfwHDvQ_a+{<{QW4wA<$Uqu8(4Q4Ey-ugt_y z)E~H0Amlx7c>MLg=G?zhd3AvZ!?wT5)((+y@M1GT3+kih0x~~!zMo6_d66D_&FzR% zKzK2XGzUaXvK+F0`#$I=Y4D;iIP!FrK2ZDNRiO9UcdclQ=1u+s&|#B;xdvzt18+C@ zgC=`^BXeho2EIObX^Ahu0gk%GkThhi3f8ABV(rha{~@o)@I6Zyz)*OEi=$b%`MV*a8Ew};+n zFogm>iHMdh_6{;VK8E&}Y78xF?Lpc+qmjlPt58Df61NvJ|2+ni!JNf# zowG_oP6>G)v0_DnhKvs4f4s~_fb)oh{H7>ZT-j68*4G$|3%_Vjgai2Brk zQc1jR^uWQOUODwJ=gy3k=Oi6He0`_Lox#AvSUnC;j={}fMD#B$>)}M-5_i)cw$jv@ zDORV|P$E2v)cNJ~4lJ1oL@3sIG|{hlkBrLOGi2%+EeycdYWP)om6)E7cZDdbrzmIxz3oLQ*7g-{BH@bQ7fn|z;=NtSY{IN9@znt;du`EGMsPI|65`ZFO*q( z+?zv-W!kzGrJoqtC4+*mF>ErLw^2~)@bxND^shZ#9cU98oSte}Gw z#V))D*{VERu`BN7Y^tOZDDY5s!5~n|Ak7w7?AJ!bF3D`DR!JheI3_2xrS}2Ss`JkW ziR>KvZv96UnCOaW_=bwa?aK}uXPZCPTPZ<4UoXmkH_2^SCkoV@=h$@+f?M5+9{wdV z{2$R3J_MZbv58VS)3&T}MJo1f7Pt)F=U zcH*~k(_F3o0L;O`fcz<_>Wu@taR zyfMNvz4m%u&&wXGPeBPwCMqW0WQBuPm1jluta|h7MXFb|-NyIYF-NGCbNG6h``}z; zI~(=s1AZ>U%e+>GZijGSA1b0y6tft6aGd#=<@}s*cyGDmROI2>j@3DB(!p^toUqg9 zEc}9QyVoisRigX#Abu9C^{Gd`6DS52GN7*5uXCuyk+ua+wk-VQG=8n=m}{SRxsS!i z$tv=hee^guI+?OAH)CWdCsdK{y6E7`GCsGC02C%>1RoL zwph4P)}Hk9yCy&-C{t>#xph6FpvTx{BNxV%IG*k|hiWJy5KMG&towO&-<|?TBl%rz)AwXC)S%gDL{=UVh zl&ta`M$PNPG%#YC-4B>3Mz$W2P6?IwtSV@Y%Elm>df1d&cYOyft(i`(mOYg?HAGNo;?K*MKKx|s?Lx#06w zqHfLc18k3(@V6bH0m_f((Y!VbkXU85r#0nfz8?b4Rur6za|xUmVjdSvI1MsPiMWo% zMGrV?JgzO(>Q~76nd1vT4wNx=AEZ>bvA1GLjJRxX)iFrJUl3+~+9-)dJ`brc^KSuE`Igcplz)B&(M^MWtu@kZITcmXOTE-%=w1XrYyNF< zZdE}yH&yX`sa}6hKzHMX+mTKq=xTm0^RYcBJ6vpX8iX=v19`r@HHD??t$i`)SGk() z=_1sVxUAaU&zX^bEO}0+QT;N_mol9%-+Y><kE@*G%0X8~brp!cp_%Ph_dO-pQFXq~BenihL5fg~3wY3sVI{xA zZX2*&q`)F=72IJL#~#`@1s^D_K0fd-&PUys_m|?n=G(y-&CwN#0#2ATk?WwlJE|(V z0UB)wV`jpiW!v+E7I`bmJj9ngp+DC5A90rT7lX+cE6qGLbJN+hont(x@18B~;mcf( zi!T=hOIdDmadT-Y?@_Y?K!5tZ2{-Fms9492+&+bH@FLBNZPtnY1y5b^3oD2)TxFGT)#NXE^75H9`XrmI9d zR`5tCgOxuEx1`z&eg(oe5F%xH$JeS7-@o_%U=vP=d-@g_0_GeRVgRC+^J+VV)2*_x zZiUhr5SfvRdDipYu%9^WMf8C9A?5ECG)YS&v#Uzh^xVwAADTvBv?oHfn28>A>?%iE`u}^8qKi+q8gR zZH~()wJ-ELz*e;}(axYA^#1O zg{|ZAmp<=his^yD?hL(1=-N_GUTfMPnw<8xUaHqywQdgFAxy5&5q|NZ`If(b94ijt zPt~1jdD8130$^L{F;<>f!38chAY(0_zLSNE>=_?obgr3-q(|vXS*-l+x%U*oe5-|x zQ|Ld%5d5c%ls=S8GL9Z!Iw>bBg#A!4dr!zq=c~X-zDoxLM11z&Qi`)wWY-4d;c*^I z@eCGD1HE>pJ63+c>`KRMpDOa?sN0bs@(ix%1@0wlT%_~~W~EQLW_4hU?5{)G%VdeR zuu zk|B-f=ZxA`k{8F7b!urFYrqUBo-$@JG|fAZ`D74BFbiFvO$Q3MSuUvIxG{5r8(&;5 z6y_yt@V9Sp zbd#8dW9328TZO(3<(=v_SIfccnha*3u>1FJefYR>q6cW-zUr1}G2L^Ov}a{CT6m}IBF7_&s`tNoP&v*`|x{@QtI1F|-n@|P1GU0ixmxKCpL2P!mRNIU>DpQ^o$Jw#x#q^h2 z$wxTG2BO&g)DYz{=-LinC8~XUaLx7+?V|(LvzZIi!La=vI{;?2wX;<39 z0>^r&Zx*0_`8ou0o9;fqG^tcF#M^S>2ai8GfIo294RJpFhU%|Qt|~Q-Jg)C;;22Vo zKYemF*yZXViMyE56T$aopguBOjt{FVx$8sr3ct+^+)E7rkzyjfXrAAE|&DbJ~>$HEC~9i;L+2I zUYSa~TdeOBfl0SLV>^n*&UAbADE*ZZ4>Bcx%h`M{|h4kh$F@Y zdsYHpr0k&?RVE*A+@K#(cqFCCYvq1AVpwl)y`0is-$!%)AZ78!8VMk`J5sKu@&6vK zuqYN4mR@9ibSr#4mwu^7HX`Hy#uM38=z&&kL(Cf-!dcHK_CGw(e|JXr!SGb~1J~`tqSnzudPd0NZ(CU}$|NY9aacAypXpHFw>@ zC_SOS!Rpp>e|*ulZZ5&HBrPetKJ!7Sqv4QO$W1UInT2z zKq%2ba*X|`B+-yK1NrZP{Be%|u{I49!F}uHZf839V6*YLnqj2dQ^JvqhW{yQ*r#wQs!TaU+QEsR4hiR6ASiyW z8fSz>28jp%F#w!15)L*Fy2}>DRoW~1KUP)nCcE+Wh+k#2|5D5ztMJ`ma|tB)sSLRg znXXsgSJNxUF~ZOA$TDAoGdC0Y&4Hdq9i1*q`x&_P>BfA<2`VZl9K)>x=`jVtn+nL#jdpAmEfsyaalpP`!fs|;v$A7ZzB~_{}qNG zcU5=8*1Rgg{Ihw2jqsUVy1MH=NQ8AtG&K%b;HIMszuIx|r{-`)yfR}HQO0_U?9M%I zMdZjMBoh`LF$$NvW@YeAfbp1w6TAf%Hy+Imje$`XOmp4m*ZzaIVB$}AN}`aL+g$ZjU7TLcN_m*l6u)^A|l`I%rq%HM>0iEWrO$*OkXZo&NF6GGZJP zpRcqcz=%X=ktDM$Q`J8toj+uq1*2t1?^gy%jKyI=OQqoq&p{L{&SW&+vT<}j?z}pVws6pi&!TEtmVr}77M5c1f=@!XN~_}oT;!W z8}Ltv*j{q=yAofMKL39mMbZ`i53J$8E-?lRXkf((>c8CcbL$#Y_fS=+it;3dX)KpS z6PXw?W0WZuc>+Ts>A$y05Tj82Q(5Dv5(Q=7SMW^LH-_-cy}q>*L-ivc#-^IPY+?4$ z?WF-wOoldyquEUF|D0N3#x$N!gr|DML}^{*_rwFMlHDOms<&4i!QZU{x_#;i4ZW?+ z9OIM@HAtZ&%3YU(Rvqcv#}h1)^w1F~={sE1 zCgi|m{wz2DrNcqN;M>FxzA>WpkVH!$wll#efSckA;sLe0AxAlgQOu$G30b>r`GQy} zlDuW(;VD#Z^0)L;2ou4)TrR$0@NniaaraQ__Y_XKPH=yAN3Yv`4Ys4uRb2Wg`=opM!>(knK zmyXZKTN9VS(&axZks+#p{TpPCo~WsuXuVhOq?U$*cqTB*=^HBWrJj;FucYrsxfb`p z2rS-#D1Z%K2M^ztS=TnDWDbgC7vS}@5%E7RHEut3YLdwc|_+={M>(FAZ5f8yM=Wig~KzzFDq)-1bAAC}zT^DhgYfz_=MD{?AeyA7rNMbhes0U0 z6QetdJv$PY%yrG;Hht+GmGOMh$Z~*wQf+6-&wTO=pouhKDmi5IORo*YgK33{aG=?7 z)k<-e3@ku(KZ(2Bzh381*O%C#s)1_b+iVV0!py5P2`YihaYH;Yku~gVQI;_B;X$c4 z1Jb5+h-iw?B0Va~MPkTmy1j_%e+_s3jf(kUcte)BO!x&f3@vlSfMR3dL+V)*2wT#M z_CT36vO|X_#UoL6A8y~reBW&+S0CI%OC5d_tG6APAv-}-_^jY~GQWI>9TZ&6(G=U( zf4%7Q(G!~hHY2XTykF(*j0i$T8w)LNO-4!97n(|tf?F{1{00|*mTt{P+8Iws7U7%*sm>K?o0 z#HY;55NY&U`FQJyz`rCf{W%-N@h~h5g3xjE^onx8YP8Z-wf{LPADPR(4J%v;p?{Vk)mjo3vcG5pHF_ z->DW}Ks_>C?G08huy>(|VuSi-E}NAFAwa{uUJmH|=iiUFDNkQ-Tr>ofIn~X4b^(f{ za}kPNcWqG&jtt-i5gA;riZ{5;$RI5}$}0@Pt1xZY*=}FBZ}DZ}0kJ7%*(_b2)J~$h z0C>kzbNgOI;exX=z(6lrK!Y+$&~h|>2LeU0->j*z4Evt4x2yT>-RAPLD=HvvNJiR5 zoQS}HW(m3n*9HD5!|(RUUmE9H-_ZgVN5?X{6W!|{J%Xu#peeLQx$>)&Vm!HcmTjj9 zJ#qczN0x7Z9rP5Adj_NzPSf@0@B1c?7mm*MGcS6wk2IJEaklwjJ?#&g<9w zo*HSQCWf76Gono!Z!Nr2GnT{^p*38hnFjoDSXIC;571*r3%}1xnQPg`8m8Ijw{Ntn z8YIyUJ{*7cSDgQrsDxQwjTAw z@Ovwus3OwUu@M+`5!Tu|mz~M=yTAK+r;oTCRFpKY;cePS)LBnH=(WfBlVT98Y*u*d ztyYx)F5a*-Y~8x;IIJ?u9ZfmIkzwEG!hrU6M+P$nrWXEYc79(<9(HuTyithyPB!9%-TdNYCM*TvgBwGj@iY|*0rnizt0Iu_5}rb-5bK`%+l2B8)$tm! z(CRdOYj5t2ZEIg7AsKFAAsp04(h6{yU`?)`!X`;fPwH0B=jZ2J{L$^fHGL84WjnTS zlh<$kk;6DpuYD#%UqcX+!+h9tU;7P4Y*L~5K|yCF{3eM!O!*VK6BNnB@-#g*?jQ3D z_leD~OuTfAbKWmvN~3LjX7}{!s>=zhWtf zUE|JQ)-0`~9}i<>gtiP&J79PRum$?7)5FvBWjBztY4$IzCNsj2jDmBdf@RyyUBFYa z*}ddwvl<3#197ze5J-3#i0IIpRCP$8){Wx&9 zvtontDv2WJk25e_sED2wP=u+M4Y{kZA9^nR=f-&K#XPG6;n|6z!l3|Oh$@n(1oAgi z(XQOYamRA`s+1_t9Vr6&!F5tS zgK~-|zPdz8{zcTM+k%ILO34H8f(JM^V`)*|s{(UZi*d$wFYkQ&`k0y!2sW}cHr-j_ z#6xZ{a&pXb@ax?F81v64uLvZ)hed;gmjjzdakLvzs_l9he~eQ^JNZT)30vLv2>0dy zbq98=AnpAa3TA4yD=S`qd?<}}HiAQ6P6roQc9jhKo z1-zhfPf5Bi@&^=;b`5-W|E?m{}@$~-5&Ii z2ASyEN{gEc>S`twv@&b51|NM z+hdl_lum{hJD|O&PvA2=Y`+y?(cAH#PN1ta+dWV*3&Y<=2W39HF9CnfP9Ezj9RiR1 E4GnPtn*aa+ delta 192881 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 Iterator[BaseChunk]`: + Returning the chunks for the provided document. +- `def serialize(self, chunk: BaseChunk) -> str`: + Returning the potentially metadata-enriched serialization of the chunk, typically + used to feed an embedding model (or generation model). + +## Hybrid Chunker + +!!! note "To access `HybridChunker`" + + - If you are using the `docling` package, you can import as follows: + ```python + from docling.chunking import HybridChunker + ``` + - If you are only using the `docling-core` package, you must ensure to install + the `chunking` extra, e.g. + ```shell + pip install 'docling-core[chunking]' + ``` + and then you + can import as follows: + ```python + from docling_core.transforms.chunker.hybrid_chunker import HybridChunker + ``` + +The `HybridChunker` implementation uses a hybrid approach, applying tokenization-aware +refinements on top of document-based [hierarchical](#hierarchical-chunker) chunking. + +More precisely: + +- it starts from the result of the hierarchical chunker and, based on the user-provided + tokenizer (typically to be aligned to the embedding model tokenizer), it: +- does one pass where it splits chunks only when needed (i.e. oversized w.r.t. +tokens), & +- another pass where it merges chunks only when possible (i.e. undersized successive +chunks with same headings & captions) — users can opt out of this step via param +`merge_peers` (by default `True`) + +👉 Example: see [here](../../examples/hybrid_chunking). + +## Hierarchical Chunker + +The `HierarchicalChunker` implementation uses the document structure information from +the [`DoclingDocument`](../docling_document) to create one chunk for each individual +detected document element, by default only merging together list items (can be opted out +via param `merge_list_items`). It also takes care of attaching all relevant document +metadata, including headers and captions. diff --git a/docs/examples/hybrid_chunking.ipynb b/docs/examples/hybrid_chunking.ipynb new file mode 100644 index 00000000..6f097a8f --- /dev/null +++ b/docs/examples/hybrid_chunking.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Hybrid Chunking" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "%pip install -qU 'docling-core[chunking]' sentence-transformers transformers lancedb" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Conversion" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from docling.document_converter import DocumentConverter\n", + "\n", + "DOC_SOURCE = \"../../tests/data/md/wiki.md\"\n", + "\n", + "doc = DocumentConverter().convert(source=DOC_SOURCE).document" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Chunking" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice how `tokenizer` and `embed_model` further below are single-sourced from `EMBED_MODEL_ID`.\n", + "\n", + "This is important for making sure the chunker and the embedding model are using the same tokenizer." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from transformers import AutoTokenizer\n", + "\n", + "from docling.chunking import HybridChunker\n", + "\n", + "EMBED_MODEL_ID = \"sentence-transformers/all-MiniLM-L6-v2\"\n", + "MAX_TOKENS = 64\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(EMBED_MODEL_ID)\n", + "\n", + "chunker = HybridChunker(\n", + " tokenizer=tokenizer, # can also just pass model name instead of tokenizer instance\n", + " max_tokens=MAX_TOKENS, # optional, by default derived from `tokenizer`\n", + " # merge_peers=True, # optional, defaults to True\n", + ")\n", + "chunk_iter = chunker.chunk(dl_doc=doc)\n", + "chunks = list(chunk_iter)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Points to notice:\n", + "- Where possible, we fit the limit of 64 tokens for the metadata-enriched serialization form (see chunk 2)\n", + "- Where neeeded, we stop before the limit, e.g. see cases of 63 as it would otherwise run into a comma (see chunk 6)\n", + "- Where possible, we merge undersized peer chunks (see chunk 0)\n", + "- \"Tail\" chunks trailing right after merges may still be undersized (see chunk 8)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== 0 ===\n", + "chunk.text (55 tokens):\n", + "'International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American multinational technology company headquartered in Armonk, New York and present in over 175 countries.\\nIt is a publicly traded company and one of the 30 companies in the Dow Jones Industrial Average.'\n", + "chunker.serialize(chunk) (56 tokens):\n", + "'IBM\\nInternational Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American multinational technology company headquartered in Armonk, New York and present in over 175 countries.\\nIt is a publicly traded company and one of the 30 companies in the Dow Jones Industrial Average.'\n", + "\n", + "=== 1 ===\n", + "chunk.text (45 tokens):\n", + "'IBM is the largest industrial research organization in the world, with 19 research facilities across a dozen countries, having held the record for most annual U.S. patents generated by a business for 29 consecutive years from 1993 to 2021.'\n", + "chunker.serialize(chunk) (46 tokens):\n", + "'IBM\\nIBM is the largest industrial research organization in the world, with 19 research facilities across a dozen countries, having held the record for most annual U.S. patents generated by a business for 29 consecutive years from 1993 to 2021.'\n", + "\n", + "=== 2 ===\n", + "chunk.text (63 tokens):\n", + "'IBM was founded in 1911 as the Computing-Tabulating-Recording Company (CTR), a holding company of manufacturers of record-keeping and measuring systems. It was renamed \"International Business Machines\" in 1924 and soon became the leading manufacturer of punch-card tabulating systems. During the 1960s and 1970s, the'\n", + "chunker.serialize(chunk) (64 tokens):\n", + "'IBM\\nIBM was founded in 1911 as the Computing-Tabulating-Recording Company (CTR), a holding company of manufacturers of record-keeping and measuring systems. It was renamed \"International Business Machines\" in 1924 and soon became the leading manufacturer of punch-card tabulating systems. During the 1960s and 1970s, the'\n", + "\n", + "=== 3 ===\n", + "chunk.text (44 tokens):\n", + "\"IBM mainframe, exemplified by the System/360, was the world's dominant computing platform, with the company producing 80 percent of computers in the U.S. and 70 percent of computers worldwide.[11]\"\n", + "chunker.serialize(chunk) (45 tokens):\n", + "\"IBM\\nIBM mainframe, exemplified by the System/360, was the world's dominant computing platform, with the company producing 80 percent of computers in the U.S. and 70 percent of computers worldwide.[11]\"\n", + "\n", + "=== 4 ===\n", + "chunk.text (63 tokens):\n", + "'IBM debuted in the microcomputer market in 1981 with the IBM Personal Computer, — its DOS software provided by Microsoft, — which became the basis for the majority of personal computers to the present day.[12] The company later also found success in the portable space with the ThinkPad. Since the 1990s,'\n", + "chunker.serialize(chunk) (64 tokens):\n", + "'IBM\\nIBM debuted in the microcomputer market in 1981 with the IBM Personal Computer, — its DOS software provided by Microsoft, — which became the basis for the majority of personal computers to the present day.[12] The company later also found success in the portable space with the ThinkPad. Since the 1990s,'\n", + "\n", + "=== 5 ===\n", + "chunk.text (61 tokens):\n", + "'IBM has concentrated on computer services, software, supercomputers, and scientific research; it sold its microcomputer division to Lenovo in 2005. IBM continues to develop mainframes, and its supercomputers have consistently ranked among the most powerful in the world in the 21st century.'\n", + "chunker.serialize(chunk) (62 tokens):\n", + "'IBM\\nIBM has concentrated on computer services, software, supercomputers, and scientific research; it sold its microcomputer division to Lenovo in 2005. IBM continues to develop mainframes, and its supercomputers have consistently ranked among the most powerful in the world in the 21st century.'\n", + "\n", + "=== 6 ===\n", + "chunk.text (62 tokens):\n", + "\"As one of the world's oldest and largest technology companies, IBM has been responsible for several technological innovations, including the automated teller machine (ATM), dynamic random-access memory (DRAM), the floppy disk, the hard disk drive, the magnetic stripe card, the relational database, the SQL programming\"\n", + "chunker.serialize(chunk) (63 tokens):\n", + "\"IBM\\nAs one of the world's oldest and largest technology companies, IBM has been responsible for several technological innovations, including the automated teller machine (ATM), dynamic random-access memory (DRAM), the floppy disk, the hard disk drive, the magnetic stripe card, the relational database, the SQL programming\"\n", + "\n", + "=== 7 ===\n", + "chunk.text (63 tokens):\n", + "'language, and the UPC barcode. The company has made inroads in advanced computer chips, quantum computing, artificial intelligence, and data infrastructure.[13][14][15] IBM employees and alumni have won various recognitions for their scientific research and inventions, including six Nobel Prizes and six Turing'\n", + "chunker.serialize(chunk) (64 tokens):\n", + "'IBM\\nlanguage, and the UPC barcode. The company has made inroads in advanced computer chips, quantum computing, artificial intelligence, and data infrastructure.[13][14][15] IBM employees and alumni have won various recognitions for their scientific research and inventions, including six Nobel Prizes and six Turing'\n", + "\n", + "=== 8 ===\n", + "chunk.text (5 tokens):\n", + "'Awards.[16]'\n", + "chunker.serialize(chunk) (6 tokens):\n", + "'IBM\\nAwards.[16]'\n", + "\n", + "=== 9 ===\n", + "chunk.text (56 tokens):\n", + "'IBM originated with several technological innovations developed and commercialized in the late 19th century. Julius E. Pitrap patented the computing scale in 1885;[17] Alexander Dey invented the dial recorder (1888);[18] Herman Hollerith patented the Electric Tabulating Machine'\n", + "chunker.serialize(chunk) (60 tokens):\n", + "'IBM\\n1910s–1950s\\nIBM originated with several technological innovations developed and commercialized in the late 19th century. Julius E. Pitrap patented the computing scale in 1885;[17] Alexander Dey invented the dial recorder (1888);[18] Herman Hollerith patented the Electric Tabulating Machine'\n", + "\n", + "=== 10 ===\n", + "chunk.text (60 tokens):\n", + "\"(1889);[19] and Willard Bundy invented a time clock to record workers' arrival and departure times on a paper tape (1889).[20] On June 16, 1911, their four companies were amalgamated in New York State by Charles Ranlett Flint forming a fifth company, the\"\n", + "chunker.serialize(chunk) (64 tokens):\n", + "\"IBM\\n1910s–1950s\\n(1889);[19] and Willard Bundy invented a time clock to record workers' arrival and departure times on a paper tape (1889).[20] On June 16, 1911, their four companies were amalgamated in New York State by Charles Ranlett Flint forming a fifth company, the\"\n", + "\n", + "=== 11 ===\n", + "chunk.text (59 tokens):\n", + "'Computing-Tabulating-Recording Company (CTR) based in Endicott, New York.[1][21] The five companies had 1,300 employees and offices and plants in Endicott and Binghamton, New York; Dayton, Ohio; Detroit, Michigan; Washington,'\n", + "chunker.serialize(chunk) (63 tokens):\n", + "'IBM\\n1910s–1950s\\nComputing-Tabulating-Recording Company (CTR) based in Endicott, New York.[1][21] The five companies had 1,300 employees and offices and plants in Endicott and Binghamton, New York; Dayton, Ohio; Detroit, Michigan; Washington,'\n", + "\n", + "=== 12 ===\n", + "chunk.text (13 tokens):\n", + "'D.C.; and Toronto, Canada.[22]'\n", + "chunker.serialize(chunk) (17 tokens):\n", + "'IBM\\n1910s–1950s\\nD.C.; and Toronto, Canada.[22]'\n", + "\n", + "=== 13 ===\n", + "chunk.text (60 tokens):\n", + "'Collectively, the companies manufactured a wide array of machinery for sale and lease, ranging from commercial scales and industrial time recorders, meat and cheese slicers, to tabulators and punched cards. Thomas J. Watson, Sr., fired from the National Cash Register Company by John Henry Patterson, called'\n", + "chunker.serialize(chunk) (64 tokens):\n", + "'IBM\\n1910s–1950s\\nCollectively, the companies manufactured a wide array of machinery for sale and lease, ranging from commercial scales and industrial time recorders, meat and cheese slicers, to tabulators and punched cards. Thomas J. Watson, Sr., fired from the National Cash Register Company by John Henry Patterson, called'\n", + "\n", + "=== 14 ===\n", + "chunk.text (59 tokens):\n", + "\"on Flint and, in 1914, was offered a position at CTR.[23] Watson joined CTR as general manager and then, 11 months later, was made President when antitrust cases relating to his time at NCR were resolved.[24] Having learned Patterson's pioneering business\"\n", + "chunker.serialize(chunk) (63 tokens):\n", + "\"IBM\\n1910s–1950s\\non Flint and, in 1914, was offered a position at CTR.[23] Watson joined CTR as general manager and then, 11 months later, was made President when antitrust cases relating to his time at NCR were resolved.[24] Having learned Patterson's pioneering business\"\n", + "\n", + "=== 15 ===\n", + "chunk.text (23 tokens):\n", + "\"practices, Watson proceeded to put the stamp of NCR onto CTR's companies.[23]:\\n105\"\n", + "chunker.serialize(chunk) (27 tokens):\n", + "\"IBM\\n1910s–1950s\\npractices, Watson proceeded to put the stamp of NCR onto CTR's companies.[23]:\\n105\"\n", + "\n", + "=== 16 ===\n", + "chunk.text (59 tokens):\n", + "'He implemented sales conventions, \"generous sales incentives, a focus on customer service, an insistence on well-groomed, dark-suited salesmen and had an evangelical fervor for instilling company pride and loyalty in every worker\".[25][26] His favorite slogan,'\n", + "chunker.serialize(chunk) (63 tokens):\n", + "'IBM\\n1910s–1950s\\nHe implemented sales conventions, \"generous sales incentives, a focus on customer service, an insistence on well-groomed, dark-suited salesmen and had an evangelical fervor for instilling company pride and loyalty in every worker\".[25][26] His favorite slogan,'\n", + "\n", + "=== 17 ===\n", + "chunk.text (60 tokens):\n", + "'\"THINK\", became a mantra for each company\\'s employees.[25] During Watson\\'s first four years, revenues reached $9 million ($158 million today) and the company\\'s operations expanded to Europe, South America, Asia and Australia.[25] Watson never liked the'\n", + "chunker.serialize(chunk) (64 tokens):\n", + "'IBM\\n1910s–1950s\\n\"THINK\", became a mantra for each company\\'s employees.[25] During Watson\\'s first four years, revenues reached $9 million ($158 million today) and the company\\'s operations expanded to Europe, South America, Asia and Australia.[25] Watson never liked the'\n", + "\n", + "=== 18 ===\n", + "chunk.text (57 tokens):\n", + "'clumsy hyphenated name \"Computing-Tabulating-Recording Company\" and chose to replace it with the more expansive title \"International Business Machines\" which had previously been used as the name of CTR\\'s Canadian Division;[27] the name was changed on February 14,'\n", + "chunker.serialize(chunk) (61 tokens):\n", + "'IBM\\n1910s–1950s\\nclumsy hyphenated name \"Computing-Tabulating-Recording Company\" and chose to replace it with the more expansive title \"International Business Machines\" which had previously been used as the name of CTR\\'s Canadian Division;[27] the name was changed on February 14,'\n", + "\n", + "=== 19 ===\n", + "chunk.text (21 tokens):\n", + "'1924.[28] By 1933, most of the subsidiaries had been merged into one company, IBM.'\n", + "chunker.serialize(chunk) (25 tokens):\n", + "'IBM\\n1910s–1950s\\n1924.[28] By 1933, most of the subsidiaries had been merged into one company, IBM.'\n", + "\n", + "=== 20 ===\n", + "chunk.text (22 tokens):\n", + "'In 1961, IBM developed the SABRE reservation system for American Airlines and introduced the highly successful Selectric typewriter.'\n", + "chunker.serialize(chunk) (26 tokens):\n", + "'IBM\\n1960s–1980s\\nIn 1961, IBM developed the SABRE reservation system for American Airlines and introduced the highly successful Selectric typewriter.'\n", + "\n" + ] + } + ], + "source": [ + "for i, chunk in enumerate(chunks):\n", + " print(f\"=== {i} ===\")\n", + " txt_tokens = len(tokenizer.tokenize(chunk.text, max_length=None))\n", + " print(f\"chunk.text ({txt_tokens} tokens):\\n{repr(chunk.text)}\")\n", + "\n", + " ser_txt = chunker.serialize(chunk=chunk)\n", + " ser_tokens = len(tokenizer.tokenize(ser_txt, max_length=None))\n", + " print(f\"chunker.serialize(chunk) ({ser_tokens} tokens):\\n{repr(ser_txt)}\")\n", + "\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vector Retrieval" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "huggingface/tokenizers: The current process just got forked, after parallelism has already been used. Disabling parallelism to avoid deadlocks...\n", + "To disable this warning, you can either:\n", + "\t- Avoid using `tokenizers` before the fork if possible\n", + "\t- Explicitly set the environment variable TOKENIZERS_PARALLELISM=(true | false)\n" + ] + } + ], + "source": [ + "from sentence_transformers import SentenceTransformer\n", + "\n", + "embed_model = SentenceTransformer(EMBED_MODEL_ID)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
vectortextheadingscaptions_distance
0[-0.1269039, -0.01948185, -0.07718097, -0.1116...language, and the UPC barcode. The company has...[IBM]None1.164613
1[-0.10198064, 0.0055981805, -0.05095279, -0.13...IBM originated with several technological inno...[IBM, 1910s–1950s]None1.245144
2[-0.057121325, -0.034115084, -0.018113216, -0....As one of the world's oldest and largest techn...[IBM]None1.355586
3[-0.04429054, -0.058111433, -0.009330196, -0.0...IBM is the largest industrial research organiz...[IBM]None1.398617
4[-0.11920792, 0.053496413, -0.042391937, -0.03...Awards.[16][IBM]None1.446295
\n", + "
" + ], + "text/plain": [ + " vector \\\n", + "0 [-0.1269039, -0.01948185, -0.07718097, -0.1116... \n", + "1 [-0.10198064, 0.0055981805, -0.05095279, -0.13... \n", + "2 [-0.057121325, -0.034115084, -0.018113216, -0.... \n", + "3 [-0.04429054, -0.058111433, -0.009330196, -0.0... \n", + "4 [-0.11920792, 0.053496413, -0.042391937, -0.03... \n", + "\n", + " text headings \\\n", + "0 language, and the UPC barcode. The company has... [IBM] \n", + "1 IBM originated with several technological inno... [IBM, 1910s–1950s] \n", + "2 As one of the world's oldest and largest techn... [IBM] \n", + "3 IBM is the largest industrial research organiz... [IBM] \n", + "4 Awards.[16] [IBM] \n", + "\n", + " captions _distance \n", + "0 None 1.164613 \n", + "1 None 1.245144 \n", + "2 None 1.355586 \n", + "3 None 1.398617 \n", + "4 None 1.446295 " + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from pathlib import Path\n", + "from tempfile import mkdtemp\n", + "\n", + "import lancedb\n", + "\n", + "\n", + "def make_lancedb_index(db_uri, index_name, chunks, embedding_model):\n", + " db = lancedb.connect(db_uri)\n", + " data = []\n", + " for chunk in chunks:\n", + " embeddings = embedding_model.encode(chunker.serialize(chunk=chunk))\n", + " data_item = {\n", + " \"vector\": embeddings,\n", + " \"text\": chunk.text,\n", + " \"headings\": chunk.meta.headings,\n", + " \"captions\": chunk.meta.captions,\n", + " }\n", + " data.append(data_item)\n", + " tbl = db.create_table(index_name, data=data, exist_ok=True)\n", + " return tbl\n", + "\n", + "\n", + "db_uri = str(Path(mkdtemp()) / \"docling.db\")\n", + "index = make_lancedb_index(db_uri, doc.name, chunks, embed_model)\n", + "\n", + "sample_query = \"invent\"\n", + "sample_embedding = embed_model.encode(sample_query)\n", + "results = index.search(sample_embedding).limit(5)\n", + "\n", + "results.to_pandas()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/mkdocs.yml b/mkdocs.yml index 687ae6d6..81abcc6a 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -63,7 +63,7 @@ nav: - Concepts: concepts/index.md - Architecture: concepts/architecture.md - Docling Document: concepts/docling_document.md - # - Chunking: concepts/chunking.md + - Chunking: concepts/chunking.md - Examples: - Examples: examples/index.md - Conversion: @@ -80,7 +80,8 @@ nav: - "RAG with LlamaIndex 🦙": examples/rag_llamaindex.ipynb - "RAG with LangChain 🦜🔗": examples/rag_langchain.ipynb - "Hybrid RAG with Qdrant": examples/hybrid_rag_qdrant.ipynb - # - Chunking: + - Chunking: + - "Hybrid chunking": examples/hybrid_chunking.ipynb # - Chunking: examples/chunking.md # - CLI: # - CLI: examples/cli.md diff --git a/poetry.lock b/poetry.lock index becf1b33..2398567a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -890,13 +890,13 @@ files = [ [[package]] name = "docling-core" -version = "2.7.1" +version = "2.8.0" description = "A python library to define and validate data types in Docling." optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_core-2.7.1-py3-none-any.whl", hash = "sha256:a3d3df9ed8755f98acfdcc8960e8d7b1eaf7dada9aded644e2487d43dc418ce5"}, - {file = "docling_core-2.7.1.tar.gz", hash = "sha256:563b4f3da2d7e4fd70ba4ce0e418e4898478f452d917665cdcd4cdde17befa55"}, + {file = "docling_core-2.8.0-py3-none-any.whl", hash = "sha256:392aad49e25f5fd1d279410118fbd91d9aaab9dd92d043738d20c10c57193d86"}, + {file = "docling_core-2.8.0.tar.gz", hash = "sha256:6ac5cbc6f0abcbdf599c2a4b1a3f7b52fd8baebf3c4ebf94d7b7e2ee061a654e"}, ] [package.dependencies] @@ -906,9 +906,14 @@ pandas = ">=2.1.4,<3.0.0" pillow = ">=10.3.0,<11.0.0" pydantic = ">=2.6.0,<2.10.0 || >2.10.0,<2.10.1 || >2.10.1,<2.10.2 || >2.10.2,<3.0.0" pyyaml = ">=5.1,<7.0.0" +semchunk = {version = ">=2.2.0,<3.0.0", optional = true, markers = "extra == \"chunking\""} tabulate = ">=0.9.0,<0.10.0" +transformers = {version = ">=4.34.0,<5.0.0", optional = true, markers = "extra == \"chunking\""} typing-extensions = ">=4.12.2,<5.0.0" +[package.extras] +chunking = ["semchunk (>=2.2.0,<3.0.0)", "transformers (>=4.34.0,<5.0.0)"] + [[package]] name = "docling-ibm-models" version = "2.0.7" @@ -2823,6 +2828,32 @@ files = [ {file = "more_itertools-10.5.0-py3-none-any.whl", hash = "sha256:037b0d3203ce90cca8ab1defbbdac29d5f993fc20131f3664dc8d6acfa872aef"}, ] +[[package]] +name = "mpire" +version = "2.10.2" +description = "A Python package for easy multiprocessing, but faster than multiprocessing" +optional = false +python-versions = "*" +files = [ + {file = "mpire-2.10.2-py3-none-any.whl", hash = "sha256:d627707f7a8d02aa4c7f7d59de399dec5290945ddf7fbd36cbb1d6ebb37a51fb"}, + {file = "mpire-2.10.2.tar.gz", hash = "sha256:f66a321e93fadff34585a4bfa05e95bd946cf714b442f51c529038eb45773d97"}, +] + +[package.dependencies] +multiprocess = [ + {version = "*", optional = true, markers = "python_version < \"3.11\" and extra == \"dill\""}, + {version = ">=0.70.15", optional = true, markers = "python_version >= \"3.11\" and extra == \"dill\""}, +] +pygments = ">=2.0" +pywin32 = {version = ">=301", markers = "platform_system == \"Windows\""} +tqdm = ">=4.27" + +[package.extras] +dashboard = ["flask"] +dill = ["multiprocess", "multiprocess (>=0.70.15)"] +docs = ["docutils (==0.17.1)", "sphinx (==3.2.1)", "sphinx-autodoc-typehints (==1.11.0)", "sphinx-rtd-theme (==0.5.0)", "sphinx-versions (==1.0.1)", "sphinxcontrib-images (==0.9.2)"] +testing = ["ipywidgets", "multiprocess", "multiprocess (>=0.70.15)", "numpy", "pywin32 (>=301)", "rich"] + [[package]] name = "mpmath" version = "1.3.0" @@ -6040,6 +6071,11 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, + {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, + {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, + {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -6120,6 +6156,21 @@ files = [ cryptography = ">=2.0" jeepney = ">=0.6" +[[package]] +name = "semchunk" +version = "2.2.0" +description = "A fast and lightweight Python library for splitting text into semantically meaningful chunks." +optional = false +python-versions = ">=3.9" +files = [ + {file = "semchunk-2.2.0-py3-none-any.whl", hash = "sha256:7db19ca90ddb48f99265e789e07a7bb111ae25185f9cc3d44b94e1e61b9067fc"}, + {file = "semchunk-2.2.0.tar.gz", hash = "sha256:4de761ce614036fa3bea61adbe47e3ade7c96ac9b062f223b3ac353dbfd26743"}, +] + +[package.dependencies] +mpire = {version = "*", extras = ["dill"]} +tqdm = "*" + [[package]] name = "semver" version = "2.13.0" @@ -7561,4 +7612,4 @@ tesserocr = ["tesserocr"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "5320329d9899ce8577ab91f634df8568f97ab3a9d6d27c06ceba4cffca255533" +content-hash = "c397fcd5c719605f28352cd6e0a3828f082e9684ba64558539e0c3173bdd1fc5" diff --git a/pyproject.toml b/pyproject.toml index 8d1a8dcf..d0b2a3fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ packages = [{include = "docling"}] # actual dependencies: ###################### python = "^3.9" -docling-core = "^2.7.1" +docling-core = { version = "^2.8.0", extras = ["chunking"] } pydantic = "^2.0.0" docling-ibm-models = "^2.0.6" deepsearch-glm = "^0.26.1" diff --git a/tests/data/md/wiki.md b/tests/data/md/wiki.md new file mode 100644 index 00000000..134e456e --- /dev/null +++ b/tests/data/md/wiki.md @@ -0,0 +1,23 @@ +# IBM + +International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American multinational technology company headquartered in Armonk, New York and present in over 175 countries. + +It is a publicly traded company and one of the 30 companies in the Dow Jones Industrial Average. + +IBM is the largest industrial research organization in the world, with 19 research facilities across a dozen countries, having held the record for most annual U.S. patents generated by a business for 29 consecutive years from 1993 to 2021. + +IBM was founded in 1911 as the Computing-Tabulating-Recording Company (CTR), a holding company of manufacturers of record-keeping and measuring systems. It was renamed "International Business Machines" in 1924 and soon became the leading manufacturer of punch-card tabulating systems. During the 1960s and 1970s, the IBM mainframe, exemplified by the System/360, was the world's dominant computing platform, with the company producing 80 percent of computers in the U.S. and 70 percent of computers worldwide.[11] + +IBM debuted in the microcomputer market in 1981 with the IBM Personal Computer, — its DOS software provided by Microsoft, — which became the basis for the majority of personal computers to the present day.[12] The company later also found success in the portable space with the ThinkPad. Since the 1990s, IBM has concentrated on computer services, software, supercomputers, and scientific research; it sold its microcomputer division to Lenovo in 2005. IBM continues to develop mainframes, and its supercomputers have consistently ranked among the most powerful in the world in the 21st century. + +As one of the world's oldest and largest technology companies, IBM has been responsible for several technological innovations, including the automated teller machine (ATM), dynamic random-access memory (DRAM), the floppy disk, the hard disk drive, the magnetic stripe card, the relational database, the SQL programming language, and the UPC barcode. The company has made inroads in advanced computer chips, quantum computing, artificial intelligence, and data infrastructure.[13][14][15] IBM employees and alumni have won various recognitions for their scientific research and inventions, including six Nobel Prizes and six Turing Awards.[16] + +## 1910s–1950s + +IBM originated with several technological innovations developed and commercialized in the late 19th century. Julius E. Pitrap patented the computing scale in 1885;[17] Alexander Dey invented the dial recorder (1888);[18] Herman Hollerith patented the Electric Tabulating Machine (1889);[19] and Willard Bundy invented a time clock to record workers' arrival and departure times on a paper tape (1889).[20] On June 16, 1911, their four companies were amalgamated in New York State by Charles Ranlett Flint forming a fifth company, the Computing-Tabulating-Recording Company (CTR) based in Endicott, New York.[1][21] The five companies had 1,300 employees and offices and plants in Endicott and Binghamton, New York; Dayton, Ohio; Detroit, Michigan; Washington, D.C.; and Toronto, Canada.[22] + +Collectively, the companies manufactured a wide array of machinery for sale and lease, ranging from commercial scales and industrial time recorders, meat and cheese slicers, to tabulators and punched cards. Thomas J. Watson, Sr., fired from the National Cash Register Company by John Henry Patterson, called on Flint and, in 1914, was offered a position at CTR.[23] Watson joined CTR as general manager and then, 11 months later, was made President when antitrust cases relating to his time at NCR were resolved.[24] Having learned Patterson's pioneering business practices, Watson proceeded to put the stamp of NCR onto CTR's companies.[23]: 105  He implemented sales conventions, "generous sales incentives, a focus on customer service, an insistence on well-groomed, dark-suited salesmen and had an evangelical fervor for instilling company pride and loyalty in every worker".[25][26] His favorite slogan, "THINK", became a mantra for each company's employees.[25] During Watson's first four years, revenues reached $9 million ($158 million today) and the company's operations expanded to Europe, South America, Asia and Australia.[25] Watson never liked the clumsy hyphenated name "Computing-Tabulating-Recording Company" and chose to replace it with the more expansive title "International Business Machines" which had previously been used as the name of CTR's Canadian Division;[27] the name was changed on February 14, 1924.[28] By 1933, most of the subsidiaries had been merged into one company, IBM. + +## 1960s–1980s + +In 1961, IBM developed the SABRE reservation system for American Airlines and introduced the highly successful Selectric typewriter. From d15d656c39aef6183b592af8d91d8edb6e07d598 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 9 Dec 2024 09:33:55 +0000 Subject: [PATCH 11/13] chore: bump version to 2.9.0 [skip ci] Signed-off-by: Christoph Auer --- CHANGELOG.md | 20 ++++++++++++++++++++ pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d2c0e25..4e31b769 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ +## [v2.9.0](https://github.com/DS4SD/docling/releases/tag/v2.9.0) - 2024-12-09 + +### Feature + +* Expose new hybrid chunker, update docs ([#384](https://github.com/DS4SD/docling/issues/384)) ([`c8ecdd9`](https://github.com/DS4SD/docling/commit/c8ecdd987e80227db3850ea729ecb36d2b609040)) +* **MS Word backend:** Make detection of headers and other styles localization agnostic ([#534](https://github.com/DS4SD/docling/issues/534)) ([`3e073df`](https://github.com/DS4SD/docling/commit/3e073dfbebbc65f995d4df946c1650699a26782c)) + +### Fix + +* Correcting DefaultText ID for MS Word backend ([#537](https://github.com/DS4SD/docling/issues/537)) ([`eb7ffcd`](https://github.com/DS4SD/docling/commit/eb7ffcdd1cda1caa8ec8ba2fc313ff1e7d9acd4f)) +* Add `py.typed` marker file ([#531](https://github.com/DS4SD/docling/issues/531)) ([`9102fe1`](https://github.com/DS4SD/docling/commit/9102fe1adcd43432e5fb3f35af704b7442c5d633)) +* Enable HTML export in CLI and add options for image mode ([#513](https://github.com/DS4SD/docling/issues/513)) ([`0d11e30`](https://github.com/DS4SD/docling/commit/0d11e30dd813020c0189de849cd7b2e285d08694)) +* Missing text in docx (t tag) when embedded in a table ([#528](https://github.com/DS4SD/docling/issues/528)) ([`b730b2d`](https://github.com/DS4SD/docling/commit/b730b2d7a04a8773a00ed88889d28b0c476ba052)) +* Restore pydantic version pin after fixes ([#512](https://github.com/DS4SD/docling/issues/512)) ([`c830b92`](https://github.com/DS4SD/docling/commit/c830b92b2e043ea63d216f65b3f9d88d2a8c33f7)) +* Folder input in cli ([#511](https://github.com/DS4SD/docling/issues/511)) ([`8ada0bc`](https://github.com/DS4SD/docling/commit/8ada0bccc744df94f755adf71cf8b163e6304375)) + +### Documentation + +* Document new integrations ([#532](https://github.com/DS4SD/docling/issues/532)) ([`e780333`](https://github.com/DS4SD/docling/commit/e7803334409a343a59c536c529a03d6f5cdbfe15)) + ## [v2.8.3](https://github.com/DS4SD/docling/releases/tag/v2.8.3) - 2024-12-03 ### Fix diff --git a/pyproject.toml b/pyproject.toml index d0b2a3fc..03edc00e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "docling" -version = "2.8.3" # DO NOT EDIT, updated automatically +version = "2.9.0" # DO NOT EDIT, updated automatically description = "SDK and CLI for parsing PDF, DOCX, HTML, and more, to a unified document representation for powering downstream workflows such as gen AI applications." authors = ["Christoph Auer ", "Michele Dolfi ", "Maxim Lysak ", "Nikos Livathinos ", "Ahmed Nassar ", "Panos Vagenas ", "Peter Staar "] license = "MIT" From 840f5e15ed1e5642e4062200141051835f01a3bf Mon Sep 17 00:00:00 2001 From: Christoph Auer <60343111+cau-git@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:26:17 +0100 Subject: [PATCH 12/13] feat: docling-parse v2 as default PDF backend (#549) * Move to_docling_document from ds-glm to this repo Signed-off-by: Christoph Auer * Upgrade to ds-glm 1.0 and docling-parse 3.0 Signed-off-by: Christoph Auer * Update lock Signed-off-by: Christoph Auer * Fix DP2 backend code, change CLI default backend Signed-off-by: Christoph Auer --------- Signed-off-by: Christoph Auer Signed-off-by: Christoph Auer --- docling/backend/docling_parse_backend.py | 2 +- docling/backend/docling_parse_v2_backend.py | 12 +- docling/cli/main.py | 2 +- docling/document_converter.py | 10 +- docling/models/ds_glm_model.py | 4 +- docling/utils/glm_utils.py | 336 ++++++++++++++++++++ poetry.lock | 307 +++++++++--------- pyproject.toml | 4 +- 8 files changed, 500 insertions(+), 177 deletions(-) create mode 100644 docling/utils/glm_utils.py diff --git a/docling/backend/docling_parse_backend.py b/docling/backend/docling_parse_backend.py index dc6d2693..bb1fe058 100644 --- a/docling/backend/docling_parse_backend.py +++ b/docling/backend/docling_parse_backend.py @@ -6,7 +6,7 @@ from typing import Iterable, List, Optional, Union import pypdfium2 as pdfium from docling_core.types.doc import BoundingBox, CoordOrigin, Size -from docling_parse.docling_parse import pdf_parser_v1 +from docling_parse.pdf_parsers import pdf_parser_v1 from PIL import Image, ImageDraw from pypdfium2 import PdfPage diff --git a/docling/backend/docling_parse_v2_backend.py b/docling/backend/docling_parse_v2_backend.py index b518850e..12d7df55 100644 --- a/docling/backend/docling_parse_v2_backend.py +++ b/docling/backend/docling_parse_v2_backend.py @@ -6,7 +6,7 @@ from typing import TYPE_CHECKING, Iterable, List, Optional, Union import pypdfium2 as pdfium from docling_core.types.doc import BoundingBox, CoordOrigin -from docling_parse.docling_parse import pdf_parser_v2 +from docling_parse.pdf_parsers import pdf_parser_v2 from PIL import Image, ImageDraw from pypdfium2 import PdfPage @@ -210,12 +210,14 @@ class DoclingParseV2DocumentBackend(PdfDocumentBackend): self.parser = pdf_parser_v2("fatal") success = False - if isinstance(path_or_stream, BytesIO): + if isinstance(self.path_or_stream, BytesIO): success = self.parser.load_document_from_bytesio( - self.document_hash, path_or_stream + self.document_hash, self.path_or_stream + ) + elif isinstance(self.path_or_stream, Path): + success = self.parser.load_document( + self.document_hash, str(self.path_or_stream) ) - elif isinstance(path_or_stream, Path): - success = self.parser.load_document(self.document_hash, str(path_or_stream)) if not success: raise RuntimeError( diff --git a/docling/cli/main.py b/docling/cli/main.py index ee18be97..7ca7adf2 100644 --- a/docling/cli/main.py +++ b/docling/cli/main.py @@ -208,7 +208,7 @@ def convert( ] = None, pdf_backend: Annotated[ PdfBackend, typer.Option(..., help="The PDF backend to use.") - ] = PdfBackend.DLPARSE_V1, + ] = PdfBackend.DLPARSE_V2, table_mode: Annotated[ TableFormerMode, typer.Option(..., help="The mode to use in the table structure model."), diff --git a/docling/document_converter.py b/docling/document_converter.py index 503a4c5b..61608c0f 100644 --- a/docling/document_converter.py +++ b/docling/document_converter.py @@ -9,7 +9,7 @@ from pydantic import BaseModel, ConfigDict, model_validator, validate_call from docling.backend.abstract_backend import AbstractDocumentBackend from docling.backend.asciidoc_backend import AsciiDocBackend -from docling.backend.docling_parse_backend import DoclingParseDocumentBackend +from docling.backend.docling_parse_v2_backend import DoclingParseV2DocumentBackend from docling.backend.html_backend import HTMLDocumentBackend from docling.backend.md_backend import MarkdownDocumentBackend from docling.backend.msexcel_backend import MsExcelDocumentBackend @@ -84,12 +84,12 @@ class HTMLFormatOption(FormatOption): class PdfFormatOption(FormatOption): pipeline_cls: Type = StandardPdfPipeline - backend: Type[AbstractDocumentBackend] = DoclingParseDocumentBackend + backend: Type[AbstractDocumentBackend] = DoclingParseV2DocumentBackend class ImageFormatOption(FormatOption): pipeline_cls: Type = StandardPdfPipeline - backend: Type[AbstractDocumentBackend] = DoclingParseDocumentBackend + backend: Type[AbstractDocumentBackend] = DoclingParseV2DocumentBackend def _get_default_option(format: InputFormat) -> FormatOption: @@ -113,10 +113,10 @@ def _get_default_option(format: InputFormat) -> FormatOption: pipeline_cls=SimplePipeline, backend=HTMLDocumentBackend ), InputFormat.IMAGE: FormatOption( - pipeline_cls=StandardPdfPipeline, backend=DoclingParseDocumentBackend + pipeline_cls=StandardPdfPipeline, backend=DoclingParseV2DocumentBackend ), InputFormat.PDF: FormatOption( - pipeline_cls=StandardPdfPipeline, backend=DoclingParseDocumentBackend + pipeline_cls=StandardPdfPipeline, backend=DoclingParseV2DocumentBackend ), } if (options := format_to_default_options.get(format)) is not None: diff --git a/docling/models/ds_glm_model.py b/docling/models/ds_glm_model.py index 0a066bfa..1ed347d7 100644 --- a/docling/models/ds_glm_model.py +++ b/docling/models/ds_glm_model.py @@ -4,7 +4,6 @@ from pathlib import Path from typing import List, Union from deepsearch_glm.nlp_utils import init_nlp_model -from deepsearch_glm.utils.doc_utils import to_docling_document from deepsearch_glm.utils.load_pretrained_models import load_pretrained_nlp_models from docling_core.types.doc import BoundingBox, CoordOrigin, DoclingDocument from docling_core.types.legacy_doc.base import BoundingBox as DsBoundingBox @@ -29,6 +28,7 @@ from pydantic import BaseModel, ConfigDict from docling.datamodel.base_models import Cluster, FigureElement, Table, TextElement from docling.datamodel.document import ConversionResult, layout_label_to_ds_type from docling.datamodel.settings import settings +from docling.utils.glm_utils import to_docling_document from docling.utils.profiling import ProfilingScope, TimeRecorder from docling.utils.utils import create_hash @@ -232,7 +232,7 @@ class GlmModel: def __call__(self, conv_res: ConversionResult) -> DoclingDocument: with TimeRecorder(conv_res, "glm", scope=ProfilingScope.DOCUMENT): ds_doc = self._to_legacy_document(conv_res) - ds_doc_dict = ds_doc.model_dump(by_alias=True) + ds_doc_dict = ds_doc.model_dump(by_alias=True, exclude_none=True) glm_doc = self.model.apply_on_doc(ds_doc_dict) diff --git a/docling/utils/glm_utils.py b/docling/utils/glm_utils.py new file mode 100644 index 00000000..13681017 --- /dev/null +++ b/docling/utils/glm_utils.py @@ -0,0 +1,336 @@ +import re +from pathlib import Path +from typing import List + +import pandas as pd +from docling_core.types.doc import ( + BoundingBox, + CoordOrigin, + DocItemLabel, + DoclingDocument, + DocumentOrigin, + GroupLabel, + ProvenanceItem, + Size, + TableCell, + TableData, +) + + +def resolve_item(paths, obj): + """Find item in document from a reference path""" + + if len(paths) == 0: + return obj + + if paths[0] == "#": + return resolve_item(paths[1:], obj) + + try: + key = int(paths[0]) + except: + key = paths[0] + + if len(paths) == 1: + if isinstance(key, str) and key in obj: + return obj[key] + elif isinstance(key, int) and key < len(obj): + return obj[key] + else: + return None + + elif len(paths) > 1: + if isinstance(key, str) and key in obj: + return resolve_item(paths[1:], obj[key]) + elif isinstance(key, int) and key < len(obj): + return resolve_item(paths[1:], obj[key]) + else: + return None + + else: + return None + + +def _flatten_table_grid(grid: List[List[dict]]) -> List[dict]: + unique_objects = [] + seen_spans = set() + + for sublist in grid: + for obj in sublist: + # Convert the spans list to a tuple of tuples for hashing + spans_tuple = tuple(tuple(span) for span in obj["spans"]) + if spans_tuple not in seen_spans: + seen_spans.add(spans_tuple) + unique_objects.append(obj) + + return unique_objects + + +def to_docling_document(doc_glm, update_name_label=False) -> DoclingDocument: + origin = DocumentOrigin( + mimetype="application/pdf", + filename=doc_glm["file-info"]["filename"], + binary_hash=doc_glm["file-info"]["document-hash"], + ) + doc_name = Path(origin.filename).stem + + doc: DoclingDocument = DoclingDocument(name=doc_name, origin=origin) + + for page_dim in doc_glm["page-dimensions"]: + page_no = int(page_dim["page"]) + size = Size(width=page_dim["width"], height=page_dim["height"]) + + doc.add_page(page_no=page_no, size=size) + + if "properties" in doc_glm: + props = pd.DataFrame( + doc_glm["properties"]["data"], columns=doc_glm["properties"]["headers"] + ) + else: + props = pd.DataFrame() + + current_list = None + + for ix, pelem in enumerate(doc_glm["page-elements"]): + ptype = pelem["type"] + span_i = pelem["span"][0] + span_j = pelem["span"][1] + + if "iref" not in pelem: + # print(json.dumps(pelem, indent=2)) + continue + + iref = pelem["iref"] + + if re.match("#/figures/(\\d+)/captions/(.+)", iref): + # print(f"skip {iref}") + continue + + if re.match("#/tables/(\\d+)/captions/(.+)", iref): + # print(f"skip {iref}") + continue + + path = iref.split("/") + obj = resolve_item(path, doc_glm) + + if obj is None: + current_list = None + print(f"warning: undefined {path}") + continue + + if ptype == "figure": + current_list = None + text = "" + caption_refs = [] + for caption in obj["captions"]: + text += caption["text"] + + for nprov in caption["prov"]: + npaths = nprov["$ref"].split("/") + nelem = resolve_item(npaths, doc_glm) + + if nelem is None: + # print(f"warning: undefined caption {npaths}") + continue + + span_i = nelem["span"][0] + span_j = nelem["span"][1] + + cap_text = caption["text"][span_i:span_j] + + # doc_glm["page-elements"].remove(nelem) + + prov = ProvenanceItem( + page_no=nelem["page"], + charspan=tuple(nelem["span"]), + bbox=BoundingBox.from_tuple( + nelem["bbox"], origin=CoordOrigin.BOTTOMLEFT + ), + ) + + caption_obj = doc.add_text( + label=DocItemLabel.CAPTION, text=cap_text, prov=prov + ) + caption_refs.append(caption_obj.get_ref()) + + prov = ProvenanceItem( + page_no=pelem["page"], + charspan=(0, len(text)), + bbox=BoundingBox.from_tuple( + pelem["bbox"], origin=CoordOrigin.BOTTOMLEFT + ), + ) + + pic = doc.add_picture(prov=prov) + pic.captions.extend(caption_refs) + _add_child_elements(pic, doc, obj, pelem) + + elif ptype == "table": + current_list = None + text = "" + caption_refs = [] + for caption in obj["captions"]: + text += caption["text"] + + for nprov in caption["prov"]: + npaths = nprov["$ref"].split("/") + nelem = resolve_item(npaths, doc_glm) + + if nelem is None: + # print(f"warning: undefined caption {npaths}") + continue + + span_i = nelem["span"][0] + span_j = nelem["span"][1] + + cap_text = caption["text"][span_i:span_j] + + # doc_glm["page-elements"].remove(nelem) + + prov = ProvenanceItem( + page_no=nelem["page"], + charspan=tuple(nelem["span"]), + bbox=BoundingBox.from_tuple( + nelem["bbox"], origin=CoordOrigin.BOTTOMLEFT + ), + ) + + caption_obj = doc.add_text( + label=DocItemLabel.CAPTION, text=cap_text, prov=prov + ) + caption_refs.append(caption_obj.get_ref()) + + table_cells_glm = _flatten_table_grid(obj["data"]) + + table_cells = [] + for tbl_cell_glm in table_cells_glm: + if tbl_cell_glm["bbox"] is not None: + bbox = BoundingBox.from_tuple( + tbl_cell_glm["bbox"], origin=CoordOrigin.BOTTOMLEFT + ) + else: + bbox = None + + is_col_header = False + is_row_header = False + is_row_section = False + + if tbl_cell_glm["type"] == "col_header": + is_col_header = True + elif tbl_cell_glm["type"] == "row_header": + is_row_header = True + elif tbl_cell_glm["type"] == "row_section": + is_row_section = True + + table_cells.append( + TableCell( + row_span=tbl_cell_glm["row-span"][1] + - tbl_cell_glm["row-span"][0], + col_span=tbl_cell_glm["col-span"][1] + - tbl_cell_glm["col-span"][0], + start_row_offset_idx=tbl_cell_glm["row-span"][0], + end_row_offset_idx=tbl_cell_glm["row-span"][1], + start_col_offset_idx=tbl_cell_glm["col-span"][0], + end_col_offset_idx=tbl_cell_glm["col-span"][1], + text=tbl_cell_glm["text"], + bbox=bbox, + column_header=is_col_header, + row_header=is_row_header, + row_section=is_row_section, + ) + ) + + tbl_data = TableData( + num_rows=obj.get("#-rows", 0), + num_cols=obj.get("#-cols", 0), + table_cells=table_cells, + ) + + prov = ProvenanceItem( + page_no=pelem["page"], + charspan=(0, 0), + bbox=BoundingBox.from_tuple( + pelem["bbox"], origin=CoordOrigin.BOTTOMLEFT + ), + ) + + tbl = doc.add_table(data=tbl_data, prov=prov) + tbl.captions.extend(caption_refs) + + elif ptype in ["form", "key_value_region"]: + label = DocItemLabel(ptype) + container_el = doc.add_group(label=GroupLabel.UNSPECIFIED, name=label) + + _add_child_elements(container_el, doc, obj, pelem) + + elif "text" in obj: + text = obj["text"][span_i:span_j] + + type_label = pelem["type"] + name_label = pelem["name"] + if update_name_label and len(props) > 0 and type_label == "paragraph": + prop = props[ + (props["type"] == "semantic") & (props["subj_path"] == iref) + ] + if len(prop) == 1 and prop.iloc[0]["confidence"] > 0.85: + name_label = prop.iloc[0]["label"] + + prov = ProvenanceItem( + page_no=pelem["page"], + charspan=(0, len(text)), + bbox=BoundingBox.from_tuple( + pelem["bbox"], origin=CoordOrigin.BOTTOMLEFT + ), + ) + label = DocItemLabel(name_label) + + if label == DocItemLabel.LIST_ITEM: + if current_list is None: + current_list = doc.add_group(label=GroupLabel.LIST, name="list") + + # TODO: Infer if this is a numbered or a bullet list item + doc.add_list_item( + text=text, enumerated=False, prov=prov, parent=current_list + ) + elif label == DocItemLabel.SECTION_HEADER: + current_list = None + + doc.add_heading(text=text, prov=prov) + else: + current_list = None + + doc.add_text(label=DocItemLabel(name_label), text=text, prov=prov) + + return doc + + +def _add_child_elements(container_el, doc, obj, pelem): + payload = obj.get("payload") + if payload is not None: + children = payload.get("children", []) + + for child in children: + c_label = DocItemLabel(child["label"]) + c_bbox = BoundingBox.model_validate(child["bbox"]).to_bottom_left_origin( + doc.pages[pelem["page"]].size.height + ) + c_text = " ".join( + [ + cell["text"].replace("\x02", "-").strip() + for cell in child["cells"] + if len(cell["text"].strip()) > 0 + ] + ) + + c_prov = ProvenanceItem( + page_no=pelem["page"], charspan=(0, len(c_text)), bbox=c_bbox + ) + if c_label == DocItemLabel.LIST_ITEM: + # TODO: Infer if this is a numbered or a bullet list item + doc.add_list_item(parent=container_el, text=c_text, prov=c_prov) + elif c_label == DocItemLabel.SECTION_HEADER: + doc.add_heading(parent=container_el, text=c_text, prov=c_prov) + else: + doc.add_text( + parent=container_el, label=c_label, text=c_text, prov=c_prov + ) diff --git a/poetry.lock b/poetry.lock index 2398567a..67ff0fee 100644 --- a/poetry.lock +++ b/poetry.lock @@ -231,6 +231,21 @@ docs = ["cogapp", "furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphi tests = ["cloudpickle", "hypothesis", "mypy (>=1.11.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] tests-mypy = ["mypy (>=1.11.1)", "pytest-mypy-plugins"] +[[package]] +name = "autoflake" +version = "2.3.1" +description = "Removes unused imports and unused variables" +optional = false +python-versions = ">=3.8" +files = [ + {file = "autoflake-2.3.1-py3-none-any.whl", hash = "sha256:3ae7495db9084b7b32818b4140e6dc4fc280b712fb414f5b8fe57b0a8e85a840"}, + {file = "autoflake-2.3.1.tar.gz", hash = "sha256:c98b75dc5b0a86459c4f01a1d32ac7eb4338ec4317a4469515ff1e687ecd909e"}, +] + +[package.dependencies] +pyflakes = ">=3.0.0" +tomli = {version = ">=2.0.1", markers = "python_version < \"3.11\""} + [[package]] name = "autopep8" version = "2.2.0" @@ -790,66 +805,49 @@ files = [ [[package]] name = "deepsearch-glm" -version = "0.26.2" +version = "1.0.0" description = "Graph Language Models" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "deepsearch_glm-0.26.2-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:00453a02bc8df959da576bc598ba528b394a9c016d6a428efc948c867be98938"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:9e6f654ab4d9dc3e6e2033c9c45294c36e5e62650cac0e4a650af576364eb370"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1fdf2fce9d642bbc5222600a1b280a7413aa640ed01acee13d43401ec27d6ad5"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:218cab085a58b88c55dbeb80cc5f5f7b3c5a96c8537eb2ada8e5cab70cd8e439"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:75be007e62d11780f2433b213dad14d14a270c3607e909fd1fc95efdf02446c6"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a9b34c6cfb8b873ccf6e0072f5434c0c65a1d90652a6b901becc5b3b1695106"}, - {file = "deepsearch_glm-0.26.2-cp310-cp310-win_amd64.whl", hash = "sha256:f4b63c6e1d4a7be597efbe96052286bca805784cd7283a037919c349971051c5"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:eaabedca45fdd87dc455dc08b1785db15ba5ea6b706820330447f2cf7f03a67a"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:101bc2a79027df555050d08112717249916c4d82ad5815be2a1ac0581d9ab2b5"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:000d4a4895c4ff89c465b746bb7db3bb054a1fb5c3fabe2772d5431700c15d33"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:2d97f9ebdff1a9086cc32ddd0abb14b42c4b4b2ae666986078fd77db3aa4487d"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:666a3b53b0949735cff77a8209f2833866e34b635ca0c7f444807963d8379d93"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aae1ec83222ef39e045f0186023473e5ce2ed30846c13f2943192d34d57c0f"}, - {file = "deepsearch_glm-0.26.2-cp311-cp311-win_amd64.whl", hash = "sha256:9bb173dcd0caef1d8a0d440e1ac3e9959c6b849e06b95b1d9b436661504c98f7"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:bb286be157a7b163b46a4d1f7e48a30d5cc365d4926c18e8b3c72994a8f296f7"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:defca9ecf1451ce3422b7783ea188571ffad7c941dbf52acc2638c5a4ffa7743"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:226f8862c616a4def202a6d0f71eb5d8e9f6ddbded2cf431c146150303888cf8"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:6ff0fe662254835763ad7d3edc2db320de8d233f645064e0356187d8e1fabe3b"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91c1b84ec5b1308de37c660f49570ee1e72bd7f0f607566344446b9293f1183c"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d634eeaae8943e1912c0dfbf3193e09bea8c1aac38db8a6fa1f03fe6a49cb84"}, - {file = "deepsearch_glm-0.26.2-cp312-cp312-win_amd64.whl", hash = "sha256:9294087d26037574817e8e1710e387fd9ef9ba4328705de86dd40d819f32909a"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:df7181143c62a1f0e166bc9ffb25deab617b53ba7c468284e3072b861c17405a"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:2c3fef2c8394d6dc22d1bcdab12d0f46df9b411c5431dfb585a2c7bb128e1744"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f641a88421aa806ccef8f8e657fbb65135f59732110d21b5103c09138a659315"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:cf78499892caffb4bdc020b8c50ab7d623f568478375dcc2e3ec107d40972adc"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72f2b432b81b0bc7c87e33c41a97c7a8da2536dd2b337eb1b7d054fba12d556"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4703cae0d329b77e1d97892910313035204daa026d6e67ce6eb1b3e74e41f93e"}, - {file = "deepsearch_glm-0.26.2-cp313-cp313-win_amd64.whl", hash = "sha256:c906c75d080414490727de416fd1782bc6a10301378f72a741aa227b183832cf"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:10a366512540eff9f76645eb521df3469a160e8460ff6c3c1bfe172342c6c670"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:304988f1e08bd86a8a7b7cc0495e38faf586231f33f05c1023597c6177758572"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:c8f69b877846031648811ff80070b90b834bf9e4cdd74e5c2d93c7e18f408cd1"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:1ba12361d1e4b8b02a72f515028f22686d98526a703a1091f89e9487fa3aa3c7"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c03bb8b3cdb2952c9c269849830f7830fa7e0384b76809e25f4c2d5d091f746c"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fe719b26d7cfcf5632a56be1f1420920fcdbea4418c014dd6e7e218dd2aca11"}, - {file = "deepsearch_glm-0.26.2-cp39-cp39-win_amd64.whl", hash = "sha256:2b31fa419287af3429efc2d5610cbf2428bafc762e45b610a48ad30dffedaa9e"}, - {file = "deepsearch_glm-0.26.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6df2504998e60c1aac3655820ad25e5eccca137da2e9f78fb53dc0fd0d1cdbf4"}, - {file = "deepsearch_glm-0.26.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e1b4a789ec9555ec9f4ff6730d68081be37eaa43cb51c9463962967c9f672684"}, - {file = "deepsearch_glm-0.26.2.tar.gz", hash = "sha256:7a607e78903b66d28beac3408156c11ab7b34ee70e8ccd0d292b28433e5a9c1d"}, + {file = "deepsearch_glm-1.0.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:94792b57df7a1c4ba8b47ebd8f36ea0a090d4f27a4fba39bd7b166b6b537260a"}, + {file = "deepsearch_glm-1.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:ff46e352e96a2f56ce7ae4fdf04b271ee841c29ff159b1dec0e5ecaaadba8d4d"}, + {file = "deepsearch_glm-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d77d3d94d49641888aa15f3ad23e81158e791aa9d9608dd8168dc71788e56f3"}, + {file = "deepsearch_glm-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:143de0fd111a570be12935d8799a2715fe1775d4dc4e256337860b429cee5d36"}, + {file = "deepsearch_glm-1.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f2872dd573cd2206ce7f9e2e6016c38b66d9ecbd983283ff5e8c6023813c311"}, + {file = "deepsearch_glm-1.0.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:e64d94ff5209f0a11e8c75c6b28b033ef27b95a22c2fbcbd945e7fe8cc421545"}, + {file = "deepsearch_glm-1.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a5702205677b768b51f881d15d933370f6ef3c826dfac3b9aa0b904d2e6c495a"}, + {file = "deepsearch_glm-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0417a2ae998e1709f03458cfb9adb55423bb1328224eb055300796baa757879f"}, + {file = "deepsearch_glm-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f0e1efe9af0d28e9b473fe599246deb3a0be7c3d546a478da284747144d086a"}, + {file = "deepsearch_glm-1.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:807faf13eb0deea55a1951d479a85d5e20de0ff8b2e0b57b2f7939552759a426"}, + {file = "deepsearch_glm-1.0.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:56d9575df9eceb8c2ae33e3d15e133924cc195714c3d268599b6f8414c1f6bb8"}, + {file = "deepsearch_glm-1.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:51f5c6522f60ba73eb12eeb7217bd98d871ba7c078337a4059d05878d8baf2d6"}, + {file = "deepsearch_glm-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6211eaf497ad7cfcb68f80f9b5387940be0204fe149a9fc03988a95145f410a"}, + {file = "deepsearch_glm-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b003bf457fce61ea4de79e2d7d0228a1ae349f677eb6570e745f79d4429804f"}, + {file = "deepsearch_glm-1.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:9d61f66048e6ab60fe9f84c823fd593bf8517755833bd9efb59156d77a2b42d0"}, + {file = "deepsearch_glm-1.0.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:7d558e8b365c27ee665d0589165fd074fb252c73715f9cc6aeb4304a63683f37"}, + {file = "deepsearch_glm-1.0.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:3199093a9472e5756214b9b6563f827c19c001c7dd8ae00e03eed1140c12930d"}, + {file = "deepsearch_glm-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f18d1ee68a0479592e0c714e6cbf9e2d0fa8edd692d580da64431c84cbef5c2"}, + {file = "deepsearch_glm-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62c1c0ea0a544219da15c017632f9e0be116ecdc335b865c6c5760429557fe23"}, + {file = "deepsearch_glm-1.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:962f393dcec2204de1a5cb0f635c65258bde2424ad2d4e0f5df770139c3958de"}, + {file = "deepsearch_glm-1.0.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:4d328336950975c583d318a70e3511075d1ac1c599c2090a2a7928a4662fe8f2"}, + {file = "deepsearch_glm-1.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:748d077a4cacd714ff23a095c873549c176fa5ffe1a656be1bd11873148e58db"}, + {file = "deepsearch_glm-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c0953d1983e902327f0cc152ff8267056ec2699106eefc70a41eec6eebdbe1b"}, + {file = "deepsearch_glm-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:105c50b2e5b8f9a6ea5fb0b755a9cd38a1fb12ecb07f1a13d1290ad3cdfeaa90"}, + {file = "deepsearch_glm-1.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:25bb899317f6af062083daa578f343c93a2b12755c174549fb58596de0bc7b9d"}, + {file = "deepsearch_glm-1.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e2315cc4ffe7032dada294a0cd72a47dbc6c0121fd07d4b5719f9a9e9519d091"}, + {file = "deepsearch_glm-1.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:707b92f51bacbd0f799ee3351474766bf916ef82f97c1bcc0e7696532ba03535"}, + {file = "deepsearch_glm-1.0.0.tar.gz", hash = "sha256:e8dce88ac519a693c260f28bd3c4ec409811e65ade84fb508f6c6e37ca065e62"}, ] [package.dependencies] -docling-core = ">=2.0,<3.0" -docutils = "!=0.21" -numpy = ">=1.24.4,<3.0.0" -pandas = ">=1.5.1,<3.0.0" -python-dotenv = ">=1.0.0,<2.0.0" pywin32 = {version = ">=307,<308", markers = "sys_platform == \"win32\""} -requests = ">=2.32.3,<3.0.0" -rich = ">=13.7.0,<14.0.0" -tabulate = ">=0.8.9" -tqdm = ">=4.64.0,<5.0.0" [package.extras] +docling = ["docling-core (>=2.0,<3.0)", "pandas (>=1.5.1,<3.0.0)"] pyplot = ["matplotlib (>=3.7.1,<4.0.0)"] -toolkit = ["deepsearch-toolkit (>=1.1.0,<2.0.0)"] +toolkit = ["deepsearch-toolkit (>=1.1.0,<2.0.0)", "python-dotenv (>=1.0.0,<2.0.0)"] +utils = ["pandas (>=1.5.1,<3.0.0)", "python-dotenv (>=1.0.0,<2.0.0)", "requests (>=2.32.3,<3.0.0)", "rich (>=13.7.0,<14.0.0)", "tabulate (>=0.8.9)", "tqdm (>=4.64.0,<5.0.0)"] [[package]] name = "defusedxml" @@ -937,52 +935,44 @@ tqdm = ">=4.64.0,<5.0.0" [[package]] name = "docling-parse" -version = "2.1.2" +version = "3.0.0" description = "Simple package to extract text with coordinates from programmatic PDFs" optional = false python-versions = "<4.0,>=3.9" files = [ - {file = "docling_parse-2.1.2-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:140319e3eac73f9768d35313739891ae637af57fda03eade17d90e2d28ad80eb"}, - {file = "docling_parse-2.1.2-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:cec968a436ad14e8a45a72fc0e0074750eee28548a14f3c3df5157a68ac958e7"}, - {file = "docling_parse-2.1.2-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:c84eba992fee49d190cf4834fd44ef4e6549c3f1fcd41b91622114703a7e4a87"}, - {file = "docling_parse-2.1.2-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:ae02af07f3dd335f56383a83efdc1f6450b7d38e21e1131005dbd341eb38e47d"}, - {file = "docling_parse-2.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fa0731e97d2644ff8a3257ae53208b88be3ddc6a4bc54fbe39e21f8395530f0"}, - {file = "docling_parse-2.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d26d60136aab5f4a3a773922a8dcc530334165331660d074cd88dcd5d91206cd"}, - {file = "docling_parse-2.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:76eef41d50017c2fc531face44c1a35bef66095951622617d0f281e35d18e9e0"}, - {file = "docling_parse-2.1.2-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:7f1ad037d3ac0d80252c493e73b12688ded3ece9bae7954ba62765506c139d21"}, - {file = "docling_parse-2.1.2-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:9f1360c0558c84f4b6633b0882256f6d621fd9e52179acae39c727a43b48d937"}, - {file = "docling_parse-2.1.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:5d505c2d3e9eff4f3064b4d1f017a3c6577b5d8ba55540d558f4899561862956"}, - {file = "docling_parse-2.1.2-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:58f552f61ac35c02890b03fe59b06552353314c3c1ee2a050c68a8a206ab1b4b"}, - {file = "docling_parse-2.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22069dadcfdcebc02e36e27f80d452f1265a5a97d894f2391490bf099bc5432c"}, - {file = "docling_parse-2.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f68942b31684a021e27b9b07d27ed139911444b33963f7e0b5d2dbda8aaa5cb1"}, - {file = "docling_parse-2.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:d87e3fbf1549cd8bc171240c18584ba8c32f83963b5af66b2a70a2bc3af56d2e"}, - {file = "docling_parse-2.1.2-cp312-cp312-macosx_13_0_arm64.whl", hash = "sha256:5b00b81fa8eb0b34621f1ef9d07623d7dbcc354a33295a5b0c4209c39b1ff8eb"}, - {file = "docling_parse-2.1.2-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:1b99b122f941d0f19e92a215e589b94f49db899c5eec0147e83824652b18ce74"}, - {file = "docling_parse-2.1.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:744fe368a8fa49778e881c1052427c38a7d0e367273fcdef493e047513783108"}, - {file = "docling_parse-2.1.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b8a3e558a96f7d593269be75ba4147ebe221f5edad3d41244cef3533e8a51b74"}, - {file = "docling_parse-2.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afcf53bce8c91886c1360e625e51d15ebfb36d37cd53b6e019e86ce1118c1d0c"}, - {file = "docling_parse-2.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89d25fc4fb8f16a8ed5bc8c4f00a77739d2536732c0ddae16340b1859adf68fd"}, - {file = "docling_parse-2.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:28a7f49a865a0cd71033a7899aac00c7d2e3b6c3a76488f8676ba0fc353d9f3a"}, - {file = "docling_parse-2.1.2-cp313-cp313-macosx_13_0_arm64.whl", hash = "sha256:ad1560532cdf15dcb4a6005c8b7fe19def0e910e6125863f14978d6d07a1ba47"}, - {file = "docling_parse-2.1.2-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:19003b1bb64cd5a40999a3c5ffcb9a9d9608a073949b76acc58d58fb5054ea03"}, - {file = "docling_parse-2.1.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:041bf1c72a23d62e2dd30dcc3508222f6674e85b0f1d19a3196fd6d7b5f56015"}, - {file = "docling_parse-2.1.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:12403c26e833d8fdf0f406d2895f5108fd07b64a4d929c9105ca60f09b882c34"}, - {file = "docling_parse-2.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1082e227af3e31085eff3e96103b09becdf95324304e17ce0b1b61c43b93fbb7"}, - {file = "docling_parse-2.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77b36e36d1e07a06a1616ee281079d6b972c3059f2fa02dafcfc225a41e5bd1a"}, - {file = "docling_parse-2.1.2-cp313-cp313-win_amd64.whl", hash = "sha256:4300df86657935b0109c44702857ebf3d0713f1bbe376982f369504a762e2fef"}, - {file = "docling_parse-2.1.2-cp39-cp39-macosx_13_0_arm64.whl", hash = "sha256:912fe44507f209d997e1183f38a71d4e14c31d53a164fb862631822624dad892"}, - {file = "docling_parse-2.1.2-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:10ff1928b12099f446fcd0b043182173e6b02ce74008ea6ce921d56cdee8964e"}, - {file = "docling_parse-2.1.2-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:391ad31a4086fabbc290851432f4cf0bdc366e07a454adf49e42029898d6b477"}, - {file = "docling_parse-2.1.2-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:ebf478e99c0c16d7dad30c0fdb1f5e236ae94d48da8dec48dbe5f0841eead4ed"}, - {file = "docling_parse-2.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b1c904017330d096981b7db6b225b66aff1cebdc422843103a782121d6e8be8"}, - {file = "docling_parse-2.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8bc8ec6ad1bec6168991b895d749b222bef14b568d1d9f6c06efaeb1645dfe12"}, - {file = "docling_parse-2.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:e6eb130aa367247e1f32225bb1608cee901d711b475527404bbc4330c9199b99"}, - {file = "docling_parse-2.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ef88d565c761b48f8a175fd474e068c0da9d4401e22d3e38de73e2f00f3df2d1"}, - {file = "docling_parse-2.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:bdc8ccbdc4ab91b829b8c421ad89da276442a2c891eda1f6507f248d0bd8dff9"}, - {file = "docling_parse-2.1.2.tar.gz", hash = "sha256:3c249f50e6351eb6126331a179fe86b64dc2073e9f881d52f8c8fb391633b89e"}, + {file = "docling_parse-3.0.0-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:8de583f9562549379b8878f4054c17a715ac492999187855a6178c258388d1c6"}, + {file = "docling_parse-3.0.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:0a504152836b52119c84ce6f2124006b2297eca9576c1e961745f774b8f55f59"}, + {file = "docling_parse-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e73836d75127b168073e76a4170ec615ee49d6d46ac37d1a3f9d5c585b2c4363"}, + {file = "docling_parse-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1fdff7e14e50c0f66350346082f1fdf6cbc0584bef809532075593fa0c2a2ab2"}, + {file = "docling_parse-3.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:f56ae44328f7242e7420330d3d737d5284ec256af8ecd0b02fe6e34719b3040a"}, + {file = "docling_parse-3.0.0-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:f228587e0d3a8f46fec46934e324d74be90d7f1ad96579c775644b130f28acdb"}, + {file = "docling_parse-3.0.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:25da7fa46449386956906f04cad5e9bec87816c00146caaef1112c8cdda6b79c"}, + {file = "docling_parse-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:787c200081af2fb2d267d8f404a1b57464ee2fbcda4abd8d7bab99244c1716cb"}, + {file = "docling_parse-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be7a28e7a3ae6e198722dbb29341956c565ab9d8fdbddaee91f81dc21d870dde"}, + {file = "docling_parse-3.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:4251888da7c0ff946ce77ea8f14a0896ffe24b79422155db5871b7ee1b9fbc0a"}, + {file = "docling_parse-3.0.0-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:642e47bdf090b89766e035b74cc849abffe0df520f2907ff4dede5c819b31d4a"}, + {file = "docling_parse-3.0.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:731de22e279af1505f962dc10102b6405bcaac3d855657bf3542048e7182b440"}, + {file = "docling_parse-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd553a715e6282fc5aadd3bfd402faab4e43b77f4952bd065e3941218118f39"}, + {file = "docling_parse-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cfb02830a918958a47144ca13ce985f09578a353c97da941935591e8917f432"}, + {file = "docling_parse-3.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:85ca7610e5debcfc37e7b6311f4fc7c62c9d0eeea11b8bf2b33a760e65dd64fe"}, + {file = "docling_parse-3.0.0-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:9171180b509a41856d1e32e1486934eaf1460575a5d86fa3a8941cb01e2955ac"}, + {file = "docling_parse-3.0.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:12c5fbeb41f491b75d77e055304fc931b723d28fab29e4c4cb2a113201a86918"}, + {file = "docling_parse-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83744522c1994ef2fe888865876515e28627ddfce396a119db3cb196a1a99a75"}, + {file = "docling_parse-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9857d8982bb7a7b51e7cefdd01613a7979e66c9c3ed40ea151e979b0fc2fc5e3"}, + {file = "docling_parse-3.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:1ff51e5153d164b957bf6284987d805ff1b43559a0244265d1788c0034cb899a"}, + {file = "docling_parse-3.0.0-cp39-cp39-macosx_13_0_x86_64.whl", hash = "sha256:a15efbef123b100a58425fa7073121e7bf0cb8433814bac200df416c4eb9e599"}, + {file = "docling_parse-3.0.0-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:1155d6ca8310e046e18c6a6dc7b7f57e0ed6c89791d3757db2a039f7f69694a6"}, + {file = "docling_parse-3.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:159c12370d6dfbe3e572f43a6a2804ee81d7f073d0bd7e5ca08d9acd1876aa83"}, + {file = "docling_parse-3.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:351f4d718485f44686d41d04b26867a429898dbb6ccfe43454adaae3a434d919"}, + {file = "docling_parse-3.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:9172c98615c85303a231b800dfb2e4c1e539b04e383dfc5d7f0dc5f708ea50fd"}, + {file = "docling_parse-3.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ba1c3469a38b404123bb615e220c046496d5d47e161cc5af7ae749e8cf181ab"}, + {file = "docling_parse-3.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:eb315b0af70757f2cba654b1629272ccb35a1a416facf552ff72fd89abe98967"}, + {file = "docling_parse-3.0.0.tar.gz", hash = "sha256:62a50d0fc4bb437ba840fb0419a466361d93071f300ae5f0cebe9b842ef0c8d4"}, ] [package.dependencies] +autoflake = ">=2.3.1,<3.0.0" +pillow = ">=10.4.0,<11.0.0" pywin32 = {version = ">=305", markers = "sys_platform == \"win32\""} tabulate = ">=0.9.0,<1.0.0" @@ -1491,13 +1481,13 @@ trio = ["trio (>=0.22.0,<1.0)"] [[package]] name = "httpx" -version = "0.28.0" +version = "0.28.1" description = "The next generation HTTP client." optional = false python-versions = ">=3.8" files = [ - {file = "httpx-0.28.0-py3-none-any.whl", hash = "sha256:dc0b419a0cfeb6e8b34e85167c0da2671206f5095f1baa9663d23bcfd6b535fc"}, - {file = "httpx-0.28.0.tar.gz", hash = "sha256:0858d3bab51ba7e386637f22a61d8ccddaeec5f3fe4209da3a6168dbb91573e0"}, + {file = "httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad"}, + {file = "httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc"}, ] [package.dependencies] @@ -1515,13 +1505,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "huggingface-hub" -version = "0.26.3" +version = "0.26.5" description = "Client library to download and publish models, datasets and other repos on the huggingface.co hub" optional = false python-versions = ">=3.8.0" files = [ - {file = "huggingface_hub-0.26.3-py3-none-any.whl", hash = "sha256:e66aa99e569c2d5419240a9e553ad07245a5b1300350bfbc5a4945cf7432991b"}, - {file = "huggingface_hub-0.26.3.tar.gz", hash = "sha256:90e1fe62ffc26757a073aaad618422b899ccf9447c2bba8c902a90bef5b42e1d"}, + {file = "huggingface_hub-0.26.5-py3-none-any.whl", hash = "sha256:fb7386090bbe892072e64b85f7c4479fd2d65eea5f2543327c970d5169e83924"}, + {file = "huggingface_hub-0.26.5.tar.gz", hash = "sha256:1008bd18f60bfb65e8dbc0a97249beeeaa8c99d3c2fa649354df9fa5a13ed83b"}, ] [package.dependencies] @@ -2734,13 +2724,13 @@ pygments = ">2.12.0" [[package]] name = "mkdocs-material" -version = "9.5.47" +version = "9.5.48" description = "Documentation that simply works" optional = false python-versions = ">=3.8" files = [ - {file = "mkdocs_material-9.5.47-py3-none-any.whl", hash = "sha256:53fb9c9624e7865da6ec807d116cd7be24b3cb36ab31b1d1d1a9af58c56009a2"}, - {file = "mkdocs_material-9.5.47.tar.gz", hash = "sha256:fc3b7a8e00ad896660bd3a5cc12ca0cb28bdc2bcbe2a946b5714c23ac91b0ede"}, + {file = "mkdocs_material-9.5.48-py3-none-any.whl", hash = "sha256:b695c998f4b939ce748adbc0d3bff73fa886a670ece948cf27818fa115dc16f8"}, + {file = "mkdocs_material-9.5.48.tar.gz", hash = "sha256:a582531e8b34f4c7ed38c29d5c44763053832cf2a32f7409567e0c74749a47db"}, ] [package.dependencies] @@ -3322,66 +3312,66 @@ files = [ [[package]] name = "numpy" -version = "2.1.3" +version = "2.2.0" description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.10" files = [ - {file = "numpy-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c894b4305373b9c5576d7a12b473702afdf48ce5369c074ba304cc5ad8730dff"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b47fbb433d3260adcd51eb54f92a2ffbc90a4595f8970ee00e064c644ac788f5"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:825656d0743699c529c5943554d223c021ff0494ff1442152ce887ef4f7561a1"}, - {file = "numpy-2.1.3-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:6a4825252fcc430a182ac4dee5a505053d262c807f8a924603d411f6718b88fd"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e711e02f49e176a01d0349d82cb5f05ba4db7d5e7e0defd026328e5cfb3226d3"}, - {file = "numpy-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78574ac2d1a4a02421f25da9559850d59457bac82f2b8d7a44fe83a64f770098"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c7662f0e3673fe4e832fe07b65c50342ea27d989f92c80355658c7f888fcc83c"}, - {file = "numpy-2.1.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fa2d1337dc61c8dc417fbccf20f6d1e139896a30721b7f1e832b2bb6ef4eb6c4"}, - {file = "numpy-2.1.3-cp310-cp310-win32.whl", hash = "sha256:72dcc4a35a8515d83e76b58fdf8113a5c969ccd505c8a946759b24e3182d1f23"}, - {file = "numpy-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:ecc76a9ba2911d8d37ac01de72834d8849e55473457558e12995f4cd53e778e0"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4d1167c53b93f1f5d8a139a742b3c6f4d429b54e74e6b57d0eff40045187b15d"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c80e4a09b3d95b4e1cac08643f1152fa71a0a821a2d4277334c88d54b2219a41"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:576a1c1d25e9e02ed7fa5477f30a127fe56debd53b8d2c89d5578f9857d03ca9"}, - {file = "numpy-2.1.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:973faafebaae4c0aaa1a1ca1ce02434554d67e628b8d805e61f874b84e136b09"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:762479be47a4863e261a840e8e01608d124ee1361e48b96916f38b119cfda04a"}, - {file = "numpy-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc6f24b3d1ecc1eebfbf5d6051faa49af40b03be1aaa781ebdadcbc090b4539b"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:17ee83a1f4fef3c94d16dc1802b998668b5419362c8a4f4e8a491de1b41cc3ee"}, - {file = "numpy-2.1.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:15cb89f39fa6d0bdfb600ea24b250e5f1a3df23f901f51c8debaa6a5d122b2f0"}, - {file = "numpy-2.1.3-cp311-cp311-win32.whl", hash = "sha256:d9beb777a78c331580705326d2367488d5bc473b49a9bc3036c154832520aca9"}, - {file = "numpy-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:d89dd2b6da69c4fff5e39c28a382199ddedc3a5be5390115608345dec660b9e2"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f55ba01150f52b1027829b50d70ef1dafd9821ea82905b63936668403c3b471e"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:13138eadd4f4da03074851a698ffa7e405f41a0845a6b1ad135b81596e4e9958"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a6b46587b14b888e95e4a24d7b13ae91fa22386c199ee7b418f449032b2fa3b8"}, - {file = "numpy-2.1.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:0fa14563cc46422e99daef53d725d0c326e99e468a9320a240affffe87852564"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8637dcd2caa676e475503d1f8fdb327bc495554e10838019651b76d17b98e512"}, - {file = "numpy-2.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2312b2aa89e1f43ecea6da6ea9a810d06aae08321609d8dc0d0eda6d946a541b"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a38c19106902bb19351b83802531fea19dee18e5b37b36454f27f11ff956f7fc"}, - {file = "numpy-2.1.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:02135ade8b8a84011cbb67dc44e07c58f28575cf9ecf8ab304e51c05528c19f0"}, - {file = "numpy-2.1.3-cp312-cp312-win32.whl", hash = "sha256:e6988e90fcf617da2b5c78902fe8e668361b43b4fe26dbf2d7b0f8034d4cafb9"}, - {file = "numpy-2.1.3-cp312-cp312-win_amd64.whl", hash = "sha256:0d30c543f02e84e92c4b1f415b7c6b5326cbe45ee7882b6b77db7195fb971e3a"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:96fe52fcdb9345b7cd82ecd34547fca4321f7656d500eca497eb7ea5a926692f"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f653490b33e9c3a4c1c01d41bc2aef08f9475af51146e4a7710c450cf9761598"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:dc258a761a16daa791081d026f0ed4399b582712e6fc887a95af09df10c5ca57"}, - {file = "numpy-2.1.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:016d0f6f5e77b0f0d45d77387ffa4bb89816b57c835580c3ce8e099ef830befe"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c181ba05ce8299c7aa3125c27b9c2167bca4a4445b7ce73d5febc411ca692e43"}, - {file = "numpy-2.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5641516794ca9e5f8a4d17bb45446998c6554704d888f86df9b200e66bdcce56"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ea4dedd6e394a9c180b33c2c872b92f7ce0f8e7ad93e9585312b0c5a04777a4a"}, - {file = "numpy-2.1.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0df3635b9c8ef48bd3be5f862cf71b0a4716fa0e702155c45067c6b711ddcef"}, - {file = "numpy-2.1.3-cp313-cp313-win32.whl", hash = "sha256:50ca6aba6e163363f132b5c101ba078b8cbd3fa92c7865fd7d4d62d9779ac29f"}, - {file = "numpy-2.1.3-cp313-cp313-win_amd64.whl", hash = "sha256:747641635d3d44bcb380d950679462fae44f54b131be347d5ec2bce47d3df9ed"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:996bb9399059c5b82f76b53ff8bb686069c05acc94656bb259b1d63d04a9506f"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:45966d859916ad02b779706bb43b954281db43e185015df6eb3323120188f9e4"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:baed7e8d7481bfe0874b566850cb0b85243e982388b7b23348c6db2ee2b2ae8e"}, - {file = "numpy-2.1.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a9f7f672a3388133335589cfca93ed468509cb7b93ba3105fce780d04a6576a0"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7aac50327da5d208db2eec22eb11e491e3fe13d22653dce51b0f4109101b408"}, - {file = "numpy-2.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4394bc0dbd074b7f9b52024832d16e019decebf86caf909d94f6b3f77a8ee3b6"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:50d18c4358a0a8a53f12a8ba9d772ab2d460321e6a93d6064fc22443d189853f"}, - {file = "numpy-2.1.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:14e253bd43fc6b37af4921b10f6add6925878a42a0c5fe83daee390bca80bc17"}, - {file = "numpy-2.1.3-cp313-cp313t-win32.whl", hash = "sha256:08788d27a5fd867a663f6fc753fd7c3ad7e92747efc73c53bca2f19f8bc06f48"}, - {file = "numpy-2.1.3-cp313-cp313t-win_amd64.whl", hash = "sha256:2564fbdf2b99b3f815f2107c1bbc93e2de8ee655a69c261363a1172a79a257d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4f2015dfe437dfebbfce7c85c7b53d81ba49e71ba7eadbf1df40c915af75979f"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:3522b0dfe983a575e6a9ab3a4a4dfe156c3e428468ff08ce582b9bb6bd1d71d4"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c006b607a865b07cd981ccb218a04fc86b600411d83d6fc261357f1c0966755d"}, - {file = "numpy-2.1.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e14e26956e6f1696070788252dcdff11b4aca4c3e8bd166e0df1bb8f315a67cb"}, - {file = "numpy-2.1.3.tar.gz", hash = "sha256:aa08e04e08aaf974d4458def539dece0d28146d866a39da5639596f4921fd761"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1e25507d85da11ff5066269d0bd25d06e0a0f2e908415534f3e603d2a78e4ffa"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a62eb442011776e4036af5c8b1a00b706c5bc02dc15eb5344b0c750428c94219"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:b606b1aaf802e6468c2608c65ff7ece53eae1a6874b3765f69b8ceb20c5fa78e"}, + {file = "numpy-2.2.0-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:36b2b43146f646642b425dd2027730f99bac962618ec2052932157e213a040e9"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fe8f3583e0607ad4e43a954e35c1748b553bfe9fdac8635c02058023277d1b3"}, + {file = "numpy-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:122fd2fcfafdefc889c64ad99c228d5a1f9692c3a83f56c292618a59aa60ae83"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3f2f5cddeaa4424a0a118924b988746db6ffa8565e5829b1841a8a3bd73eb59a"}, + {file = "numpy-2.2.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:7fe4bb0695fe986a9e4deec3b6857003b4cfe5c5e4aac0b95f6a658c14635e31"}, + {file = "numpy-2.2.0-cp310-cp310-win32.whl", hash = "sha256:b30042fe92dbd79f1ba7f6898fada10bdaad1847c44f2dff9a16147e00a93661"}, + {file = "numpy-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dc1d6d66f8d37843ed281773c7174f03bf7ad826523f73435deb88ba60d2d4"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9874bc2ff574c40ab7a5cbb7464bf9b045d617e36754a7bc93f933d52bd9ffc6"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0da8495970f6b101ddd0c38ace92edea30e7e12b9a926b57f5fabb1ecc25bb90"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608"}, + {file = "numpy-2.2.0-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:3579eaeb5e07f3ded59298ce22b65f877a86ba8e9fe701f5576c99bb17c283da"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40deb10198bbaa531509aad0cd2f9fadb26c8b94070831e2208e7df543562b74"}, + {file = "numpy-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2aed8fcf8abc3020d6a9ccb31dbc9e7d7819c56a348cc88fd44be269b37427e"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a222d764352c773aa5ebde02dd84dba3279c81c6db2e482d62a3fa54e5ece69b"}, + {file = "numpy-2.2.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4e58666988605e251d42c2818c7d3d8991555381be26399303053b58a5bbf30d"}, + {file = "numpy-2.2.0-cp311-cp311-win32.whl", hash = "sha256:4723a50e1523e1de4fccd1b9a6dcea750c2102461e9a02b2ac55ffeae09a4410"}, + {file = "numpy-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:16757cf28621e43e252c560d25b15f18a2f11da94fea344bf26c599b9cf54b73"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cff210198bb4cae3f3c100444c5eaa573a823f05c253e7188e1362a5555235b3"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:58b92a5828bd4d9aa0952492b7de803135038de47343b2aa3cc23f3b71a3dc4e"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:ebe5e59545401fbb1b24da76f006ab19734ae71e703cdb4a8b347e84a0cece67"}, + {file = "numpy-2.2.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:e2b8cd48a9942ed3f85b95ca4105c45758438c7ed28fff1e4ce3e57c3b589d8e"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57fcc997ffc0bef234b8875a54d4058afa92b0b0c4223fc1f62f24b3b5e86038"}, + {file = "numpy-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85ad7d11b309bd132d74397fcf2920933c9d1dc865487128f5c03d580f2c3d03"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cb24cca1968b21355cc6f3da1a20cd1cebd8a023e3c5b09b432444617949085a"}, + {file = "numpy-2.2.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0798b138c291d792f8ea40fe3768610f3c7dd2574389e37c3f26573757c8f7ef"}, + {file = "numpy-2.2.0-cp312-cp312-win32.whl", hash = "sha256:afe8fb968743d40435c3827632fd36c5fbde633b0423da7692e426529b1759b1"}, + {file = "numpy-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4199f519e57d517ebd48cb76b36c82da0360781c6a0353e64c0cac30ecaad3"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f8c8b141ef9699ae777c6278b52c706b653bf15d135d302754f6b2e90eb30367"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f0986e917aca18f7a567b812ef7ca9391288e2acb7a4308aa9d265bd724bdae"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:1c92113619f7b272838b8d6702a7f8ebe5edea0df48166c47929611d0b4dea69"}, + {file = "numpy-2.2.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5a145e956b374e72ad1dff82779177d4a3c62bc8248f41b80cb5122e68f22d13"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18142b497d70a34b01642b9feabb70156311b326fdddd875a9981f34a369b671"}, + {file = "numpy-2.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7d41d1612c1a82b64697e894b75db6758d4f21c3ec069d841e60ebe54b5b571"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a98f6f20465e7618c83252c02041517bd2f7ea29be5378f09667a8f654a5918d"}, + {file = "numpy-2.2.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e09d40edfdb4e260cb1567d8ae770ccf3b8b7e9f0d9b5c2a9992696b30ce2742"}, + {file = "numpy-2.2.0-cp313-cp313-win32.whl", hash = "sha256:3905a5fffcc23e597ee4d9fb3fcd209bd658c352657548db7316e810ca80458e"}, + {file = "numpy-2.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:a184288538e6ad699cbe6b24859206e38ce5fba28f3bcfa51c90d0502c1582b2"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:7832f9e8eb00be32f15fdfb9a981d6955ea9adc8574c521d48710171b6c55e95"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f0dd071b95bbca244f4cb7f70b77d2ff3aaaba7fa16dc41f58d14854a6204e6c"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0b227dcff8cdc3efbce66d4e50891f04d0a387cce282fe1e66199146a6a8fca"}, + {file = "numpy-2.2.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ab153263a7c5ccaf6dfe7e53447b74f77789f28ecb278c3b5d49db7ece10d6d"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e500aba968a48e9019e42c0c199b7ec0696a97fa69037bea163b55398e390529"}, + {file = "numpy-2.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:440cfb3db4c5029775803794f8638fbdbf71ec702caf32735f53b008e1eaece3"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a55dc7a7f0b6198b07ec0cd445fbb98b05234e8b00c5ac4874a63372ba98d4ab"}, + {file = "numpy-2.2.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4bddbaa30d78c86329b26bd6aaaea06b1e47444da99eddac7bf1e2fab717bd72"}, + {file = "numpy-2.2.0-cp313-cp313t-win32.whl", hash = "sha256:30bf971c12e4365153afb31fc73f441d4da157153f3400b82db32d04de1e4066"}, + {file = "numpy-2.2.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d35717333b39d1b6bb8433fa758a55f1081543de527171543a2b710551d40881"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e12c6c1ce84628c52d6367863773f7c8c8241be554e8b79686e91a43f1733773"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:b6207dc8fb3c8cb5668e885cef9ec7f70189bec4e276f0ff70d5aa078d32c88e"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a50aeff71d0f97b6450d33940c7181b08be1441c6c193e678211bff11aa725e7"}, + {file = "numpy-2.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:df12a1f99b99f569a7c2ae59aa2d31724e8d835fc7f33e14f4792e3071d11221"}, + {file = "numpy-2.2.0.tar.gz", hash = "sha256:140dd80ff8981a583a60980be1a655068f8adebf7a45a06a6858c873fcdcd4a0"}, ] [[package]] @@ -5514,12 +5504,12 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "rapidocr-onnxruntime" -version = "1.4.1" +version = "1.4.2" description = "A cross platform OCR Library based on OnnxRuntime." optional = true python-versions = "<3.13,>=3.6" files = [ - {file = "rapidocr_onnxruntime-1.4.1-py3-none-any.whl", hash = "sha256:5ecdb8f4f3beec56630197f87c3e67ab744fce0cc66394b7b1da08c8c96a727f"}, + {file = "rapidocr_onnxruntime-1.4.2-py3-none-any.whl", hash = "sha256:b921eea8cc8f203588e851d2f26e3ab5e8e9d7c7eec2fe3f7a264ae6275d7e28"}, ] [package.dependencies] @@ -6071,11 +6061,6 @@ files = [ {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f60021ec1574e56632be2a36b946f8143bf4e5e6af4a06d85281adc22938e0dd"}, {file = "scikit_learn-1.5.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:394397841449853c2290a32050382edaec3da89e35b3e03d6cc966aebc6a8ae6"}, {file = "scikit_learn-1.5.2-cp312-cp312-win_amd64.whl", hash = "sha256:57cc1786cfd6bd118220a92ede80270132aa353647684efa385a74244a41e3b1"}, - {file = "scikit_learn-1.5.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9a702e2de732bbb20d3bad29ebd77fc05a6b427dc49964300340e4c9328b3f5"}, - {file = "scikit_learn-1.5.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:b0768ad641981f5d3a198430a1d31c3e044ed2e8a6f22166b4d546a5116d7908"}, - {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:178ddd0a5cb0044464fc1bfc4cca5b1833bfc7bb022d70b05db8530da4bb3dd3"}, - {file = "scikit_learn-1.5.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7284ade780084d94505632241bf78c44ab3b6f1e8ccab3d2af58e0e950f9c12"}, - {file = "scikit_learn-1.5.2-cp313-cp313-win_amd64.whl", hash = "sha256:b7b0f9a0b1040830d38c39b91b3a44e1b643f4b36e36567b80b7c6bd2202a27f"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:757c7d514ddb00ae249832fe87100d9c73c6ea91423802872d9e74970a0e40b9"}, {file = "scikit_learn-1.5.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:52788f48b5d8bca5c0736c175fa6bdaab2ef00a8f536cda698db61bd89c551c1"}, {file = "scikit_learn-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:643964678f4b5fbdc95cbf8aec638acc7aa70f5f79ee2cdad1eec3df4ba6ead8"}, @@ -7612,4 +7597,4 @@ tesserocr = ["tesserocr"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "c397fcd5c719605f28352cd6e0a3828f082e9684ba64558539e0c3173bdd1fc5" +content-hash = "621f8de238fd1f82cfd783531b6ab7c1598378a499c0dcfac323d66bc7ab32ea" diff --git a/pyproject.toml b/pyproject.toml index 03edc00e..b2593d77 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,7 +28,7 @@ python = "^3.9" docling-core = { version = "^2.8.0", extras = ["chunking"] } pydantic = "^2.0.0" docling-ibm-models = "^2.0.6" -deepsearch-glm = "^0.26.1" +deepsearch-glm = "^1.0.0" filetype = "^1.2.0" pypdfium2 = "^4.30.0" pydantic-settings = "^2.3.0" @@ -36,7 +36,7 @@ huggingface_hub = ">=0.23,<1" requests = "^2.32.3" easyocr = "^1.7" tesserocr = { version = "^2.7.1", optional = true } -docling-parse = "^2.0.5" +docling-parse = "^3.0.0" certifi = ">=2024.7.4" rtree = "^1.3.0" scipy = "^1.6.0" From c21ada4b226edb02f43ea73871555120dd018418 Mon Sep 17 00:00:00 2001 From: Nikos Livathinos <100353117+nikos-livathinos@users.noreply.github.com> Date: Mon, 9 Dec 2024 15:57:37 +0100 Subject: [PATCH 13/13] fix: Introduce Image format options in CLI. Silence the tqdm downloading messages. (#544) * fix: main: Introduce format options for Image with the same pdf pipeline_options. Add RapidOcrOptions to the Union of ocr_options for PdfPipelineOptions Signed-off-by: Nikos Livathinos * fix: Silence the tqdm messages during the downloading of model files Signed-off-by: Nikos Livathinos * fix: Code styling Signed-off-by: Nikos Livathinos * fix: Use the HF API to disable the tqdm progress bars Signed-off-by: Nikos Livathinos --------- Signed-off-by: Nikos Livathinos Signed-off-by: Christoph Auer --- docling/cli/main.py | 10 ++++++---- docling/datamodel/pipeline_options.py | 6 +++++- docling/pipeline/standard_pdf_pipeline.py | 2 ++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/docling/cli/main.py b/docling/cli/main.py index 7ca7adf2..b06354c8 100644 --- a/docling/cli/main.py +++ b/docling/cli/main.py @@ -372,11 +372,13 @@ def convert( else: raise RuntimeError(f"Unexpected PDF backend type {pdf_backend}") + pdf_format_option = PdfFormatOption( + pipeline_options=pipeline_options, + backend=backend, # pdf_backend + ) format_options: Dict[InputFormat, FormatOption] = { - InputFormat.PDF: PdfFormatOption( - pipeline_options=pipeline_options, - backend=backend, # pdf_backend - ) + InputFormat.PDF: pdf_format_option, + InputFormat.IMAGE: pdf_format_option, } doc_converter = DocumentConverter( allowed_formats=from_formats, diff --git a/docling/datamodel/pipeline_options.py b/docling/datamodel/pipeline_options.py index 63e0d3c6..9be3ee82 100644 --- a/docling/datamodel/pipeline_options.py +++ b/docling/datamodel/pipeline_options.py @@ -143,7 +143,11 @@ class PdfPipelineOptions(PipelineOptions): table_structure_options: TableStructureOptions = TableStructureOptions() ocr_options: Union[ - EasyOcrOptions, TesseractCliOcrOptions, TesseractOcrOptions, OcrMacOptions + EasyOcrOptions, + TesseractCliOcrOptions, + TesseractOcrOptions, + OcrMacOptions, + RapidOcrOptions, ] = Field(EasyOcrOptions(), discriminator="kind") images_scale: float = 1.0 diff --git a/docling/pipeline/standard_pdf_pipeline.py b/docling/pipeline/standard_pdf_pipeline.py index 40105a38..6f5e1542 100644 --- a/docling/pipeline/standard_pdf_pipeline.py +++ b/docling/pipeline/standard_pdf_pipeline.py @@ -97,7 +97,9 @@ class StandardPdfPipeline(PaginatedPipeline): local_dir: Optional[Path] = None, force: bool = False ) -> Path: from huggingface_hub import snapshot_download + from huggingface_hub.utils import disable_progress_bars + disable_progress_bars() download_path = snapshot_download( repo_id="ds4sd/docling-models", force_download=force,