Spaces:
Running
on
Zero
Running
on
Zero
Commit
·
e03657f
1
Parent(s):
cadea01
add favicon
Browse files- app/content/main_sub_title.md +2 -2
- app/main.py +28 -7
- app/tabs/templating.py +1 -1
- app/tabs/visualizer.py +20 -18
- pyproject.toml +1 -0
- uv.lock +14 -10
app/content/main_sub_title.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
| 1 |
-
<a href="https://
|
| 2 |
-
<img src="
|
| 3 |
</a>
|
|
|
|
| 1 |
+
<a href="https://huggingface.co/Riksarkivet">
|
| 2 |
+
<img src="app/assets/images/fav-removebg-preview.png" width="17%" align="right" margin-right="100" />
|
| 3 |
</a>
|
app/main.py
CHANGED
|
@@ -14,6 +14,7 @@ from app.tabs.templating import (
|
|
| 14 |
TEMPLATE_YAML_FOLDER,
|
| 15 |
template_output_yaml_code,
|
| 16 |
)
|
|
|
|
| 17 |
|
| 18 |
from htrflow.models.huggingface.trocr import TrOCR
|
| 19 |
|
|
@@ -24,6 +25,7 @@ gr.set_static_paths(paths=[TEMPLATE_YAML_FOLDER])
|
|
| 24 |
# TODO add colab
|
| 25 |
# TDOO addd eexmaple for api
|
| 26 |
|
|
|
|
| 27 |
def load_markdown(language, section, content_dir="app/content"):
|
| 28 |
"""Load markdown content from files."""
|
| 29 |
if language is None:
|
|
@@ -37,10 +39,29 @@ def load_markdown(language, section, content_dir="app/content"):
|
|
| 37 |
return f"## Content missing for {file_path} in {language}"
|
| 38 |
|
| 39 |
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 41 |
with gr.Row():
|
| 42 |
with gr.Column(scale=1):
|
| 43 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 44 |
with gr.Column(scale=2):
|
| 45 |
gr.Markdown(load_markdown(None, "main_title"))
|
| 46 |
with gr.Column(scale=1):
|
|
@@ -56,6 +77,10 @@ with gr.Blocks(title="HTRflow", theme=theme, css=css) as demo:
|
|
| 56 |
with gr.Tab(label="Visualize Result") as tab_visualizer:
|
| 57 |
visualizer.render()
|
| 58 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
@demo.load()
|
| 60 |
def inital_yaml_code():
|
| 61 |
tmp_dir = "tmp/"
|
|
@@ -69,10 +94,6 @@ with gr.Blocks(title="HTRflow", theme=theme, css=css) as demo:
|
|
| 69 |
def inital_yaml_code(template_output_yaml_code):
|
| 70 |
return template_output_yaml_code
|
| 71 |
|
| 72 |
-
@demo.load()
|
| 73 |
-
def inital_trocr_load():
|
| 74 |
-
return TrOCR("Riksarkivet/trocr-base-handwritten-hist-swe-2")
|
| 75 |
-
|
| 76 |
def sync_gradio_objects(input_value, state_value):
|
| 77 |
"""Synchronize the YAML state if there is a mismatch."""
|
| 78 |
return input_value if input_value != state_value else gr.skip()
|
|
@@ -100,6 +121,7 @@ with gr.Blocks(title="HTRflow", theme=theme, css=css) as demo:
|
|
| 100 |
fn=sync_gradio_object_state,
|
| 101 |
)
|
| 102 |
|
|
|
|
| 103 |
|
| 104 |
demo.queue()
|
| 105 |
|
|
@@ -108,6 +130,5 @@ if __name__ == "__main__":
|
|
| 108 |
server_name="0.0.0.0",
|
| 109 |
server_port=7860,
|
| 110 |
enable_monitoring=True,
|
| 111 |
-
ssr_mode=True
|
| 112 |
# show_error=True,
|
| 113 |
)
|
|
|
|
| 14 |
TEMPLATE_YAML_FOLDER,
|
| 15 |
template_output_yaml_code,
|
| 16 |
)
|
| 17 |
+
from gradio_modal import Modal
|
| 18 |
|
| 19 |
from htrflow.models.huggingface.trocr import TrOCR
|
| 20 |
|
|
|
|
| 25 |
# TODO add colab
|
| 26 |
# TDOO addd eexmaple for api
|
| 27 |
|
| 28 |
+
|
| 29 |
def load_markdown(language, section, content_dir="app/content"):
|
| 30 |
"""Load markdown content from files."""
|
| 31 |
if language is None:
|
|
|
|
| 39 |
return f"## Content missing for {file_path} in {language}"
|
| 40 |
|
| 41 |
|
| 42 |
+
matomo = """
|
| 43 |
+
<!-- Matomo Tag Manager -->
|
| 44 |
+
<script>
|
| 45 |
+
var _mtm = window._mtm = window._mtm || [];
|
| 46 |
+
_mtm.push({'mtm.startTime': (new Date().getTime()), 'event': 'mtm.Start'});
|
| 47 |
+
(function() {
|
| 48 |
+
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
|
| 49 |
+
g.async=true; g.src='https://matomo.riksarkivet.se/js/container_pWJwXoXG.js';; s.parentNode.insertBefore(g,s);
|
| 50 |
+
})();
|
| 51 |
+
</script>
|
| 52 |
+
<!-- End Matomo Tag Manager -->
|
| 53 |
+
"""
|
| 54 |
+
|
| 55 |
+
with gr.Blocks(title="HTRflow", theme=theme, css=css, head=matomo) as demo:
|
| 56 |
with gr.Row():
|
| 57 |
with gr.Column(scale=1):
|
| 58 |
+
help_button = gr.Button("Help", scale=0)
|
| 59 |
+
with Modal(visible=False) as help_modal:
|
| 60 |
+
with gr.Tab("How to use App"):
|
| 61 |
+
gr.Markdown("# How it works")
|
| 62 |
+
with gr.Tab("Contact"):
|
| 63 |
+
pass
|
| 64 |
+
|
| 65 |
with gr.Column(scale=2):
|
| 66 |
gr.Markdown(load_markdown(None, "main_title"))
|
| 67 |
with gr.Column(scale=1):
|
|
|
|
| 77 |
with gr.Tab(label="Visualize Result") as tab_visualizer:
|
| 78 |
visualizer.render()
|
| 79 |
|
| 80 |
+
@demo.load()
|
| 81 |
+
def inital_trocr_load():
|
| 82 |
+
TrOCR("Riksarkivet/trocr-base-handwritten-hist-swe-2")
|
| 83 |
+
|
| 84 |
@demo.load()
|
| 85 |
def inital_yaml_code():
|
| 86 |
tmp_dir = "tmp/"
|
|
|
|
| 94 |
def inital_yaml_code(template_output_yaml_code):
|
| 95 |
return template_output_yaml_code
|
| 96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
def sync_gradio_objects(input_value, state_value):
|
| 98 |
"""Synchronize the YAML state if there is a mismatch."""
|
| 99 |
return input_value if input_value != state_value else gr.skip()
|
|
|
|
| 121 |
fn=sync_gradio_object_state,
|
| 122 |
)
|
| 123 |
|
| 124 |
+
help_button.click(lambda: Modal(visible=True), None, help_modal)
|
| 125 |
|
| 126 |
demo.queue()
|
| 127 |
|
|
|
|
| 130 |
server_name="0.0.0.0",
|
| 131 |
server_port=7860,
|
| 132 |
enable_monitoring=True,
|
|
|
|
| 133 |
# show_error=True,
|
| 134 |
)
|
app/tabs/templating.py
CHANGED
|
@@ -70,7 +70,7 @@ with gr.Blocks() as templating_block:
|
|
| 70 |
with gr.Row():
|
| 71 |
dropdown_selection_template = gr.Dropdown(
|
| 72 |
label="Choose template",
|
| 73 |
-
info="template
|
| 74 |
value="Simple",
|
| 75 |
choices=["Simple", "Nested", "Custom"],
|
| 76 |
multiselect=False,
|
|
|
|
| 70 |
with gr.Row():
|
| 71 |
dropdown_selection_template = gr.Dropdown(
|
| 72 |
label="Choose template",
|
| 73 |
+
info="Choice a suitable template for your material",
|
| 74 |
value="Simple",
|
| 75 |
choices=["Simple", "Nested", "Custom"],
|
| 76 |
multiselect=False,
|
app/tabs/visualizer.py
CHANGED
|
@@ -38,27 +38,28 @@ def load_visualize_state_from_submit(col: Collection, progress):
|
|
| 38 |
continue
|
| 39 |
|
| 40 |
if node.text_result:
|
| 41 |
-
recog_conf_values[i] = list(
|
| 42 |
-
node.text_result.texts,
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
annotated_image = draw_polygons(
|
| 47 |
-
image=page_image,
|
| 48 |
-
polygons=line_polygons
|
| 49 |
-
)
|
| 50 |
annotated_page_node = np.clip(annotated_image, 0, 255).astype(np.uint8)
|
| 51 |
|
| 52 |
-
results.append(
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
| 56 |
-
|
| 57 |
-
|
|
|
|
|
|
|
| 58 |
|
| 59 |
return results
|
| 60 |
|
| 61 |
-
|
|
|
|
|
|
|
|
|
|
| 62 |
"""Convert recognition confidence values to a pandas DataFrame."""
|
| 63 |
return pd.DataFrame(
|
| 64 |
[
|
|
@@ -68,6 +69,7 @@ def _convert_conf_values_to_df(conf_values: Dict[int, List[tuple[str, float]]])
|
|
| 68 |
]
|
| 69 |
)
|
| 70 |
|
|
|
|
| 71 |
with gr.Blocks() as visualizer:
|
| 72 |
with gr.Column(variant="panel"):
|
| 73 |
with gr.Row():
|
|
@@ -85,7 +87,7 @@ with gr.Blocks() as visualizer:
|
|
| 85 |
)
|
| 86 |
|
| 87 |
visualize_button = gr.Button(
|
| 88 |
-
"Visualize", scale=0, min_width=200, variant="
|
| 89 |
)
|
| 90 |
|
| 91 |
progress_bar = gr.Textbox(visible=False, show_label=False)
|
|
@@ -95,7 +97,7 @@ with gr.Blocks() as visualizer:
|
|
| 95 |
interactive=False,
|
| 96 |
preview=True,
|
| 97 |
label="Cropped Polygons",
|
| 98 |
-
height=
|
| 99 |
)
|
| 100 |
df_for_cropped_images = gr.Dataframe(
|
| 101 |
label="Cropped Transcriptions",
|
|
|
|
| 38 |
continue
|
| 39 |
|
| 40 |
if node.text_result:
|
| 41 |
+
recog_conf_values[i] = list(
|
| 42 |
+
zip(node.text_result.texts, node.text_result.scores)
|
| 43 |
+
)
|
| 44 |
+
|
| 45 |
+
annotated_image = draw_polygons(image=page_image, polygons=line_polygons)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
annotated_page_node = np.clip(annotated_image, 0, 255).astype(np.uint8)
|
| 47 |
|
| 48 |
+
results.append(
|
| 49 |
+
{
|
| 50 |
+
"page_image": page_node,
|
| 51 |
+
"annotated_page_node": annotated_page_node,
|
| 52 |
+
"line_crops": line_crops,
|
| 53 |
+
"recog_conf_values": _convert_conf_values_to_df(recog_conf_values),
|
| 54 |
+
}
|
| 55 |
+
)
|
| 56 |
|
| 57 |
return results
|
| 58 |
|
| 59 |
+
|
| 60 |
+
def _convert_conf_values_to_df(
|
| 61 |
+
conf_values: Dict[int, List[tuple[str, float]]]
|
| 62 |
+
) -> pd.DataFrame:
|
| 63 |
"""Convert recognition confidence values to a pandas DataFrame."""
|
| 64 |
return pd.DataFrame(
|
| 65 |
[
|
|
|
|
| 69 |
]
|
| 70 |
)
|
| 71 |
|
| 72 |
+
|
| 73 |
with gr.Blocks() as visualizer:
|
| 74 |
with gr.Column(variant="panel"):
|
| 75 |
with gr.Row():
|
|
|
|
| 87 |
)
|
| 88 |
|
| 89 |
visualize_button = gr.Button(
|
| 90 |
+
"Visualize", scale=0, min_width=200, variant="primary"
|
| 91 |
)
|
| 92 |
|
| 93 |
progress_bar = gr.Textbox(visible=False, show_label=False)
|
|
|
|
| 97 |
interactive=False,
|
| 98 |
preview=True,
|
| 99 |
label="Cropped Polygons",
|
| 100 |
+
height=400,
|
| 101 |
)
|
| 102 |
df_for_cropped_images = gr.Dataframe(
|
| 103 |
label="Cropped Transcriptions",
|
pyproject.toml
CHANGED
|
@@ -23,6 +23,7 @@ dependencies = [
|
|
| 23 |
"pandas>=2.2.3",
|
| 24 |
"tqdm>=4.67.1",
|
| 25 |
"pillow>=11.1.0",
|
|
|
|
| 26 |
]
|
| 27 |
|
| 28 |
[project.urls]
|
|
|
|
| 23 |
"pandas>=2.2.3",
|
| 24 |
"tqdm>=4.67.1",
|
| 25 |
"pillow>=11.1.0",
|
| 26 |
+
"gradio-modal>=0.0.4",
|
| 27 |
]
|
| 28 |
|
| 29 |
[project.urls]
|
uv.lock
CHANGED
|
@@ -678,6 +678,18 @@ wheels = [
|
|
| 678 |
{ url = "https://files.pythonhosted.org/packages/a6/3d/e05202dd42581c2a1e93c730d10a0ef45bc40921332c9aa0d6645bbf0e2b/gradio_client-1.5.4-py3-none-any.whl", hash = "sha256:ad38c9a6f7fc590e822627f5bf5685321a7822b8f1a88b76d00a0621a43162d6", size = 321364 },
|
| 679 |
]
|
| 680 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 681 |
[[package]]
|
| 682 |
name = "h11"
|
| 683 |
version = "0.14.0"
|
|
@@ -719,6 +731,7 @@ source = { editable = "." }
|
|
| 719 |
dependencies = [
|
| 720 |
{ name = "datasets" },
|
| 721 |
{ name = "gradio" },
|
|
|
|
| 722 |
{ name = "htrflow" },
|
| 723 |
{ name = "pandas" },
|
| 724 |
{ name = "pillow" },
|
|
@@ -737,6 +750,7 @@ dev = [
|
|
| 737 |
requires-dist = [
|
| 738 |
{ name = "datasets", specifier = ">=3.2.0" },
|
| 739 |
{ name = "gradio", specifier = ">=5.11.0" },
|
|
|
|
| 740 |
{ name = "htrflow", specifier = "==0.2.0" },
|
| 741 |
{ name = "pandas", specifier = ">=2.2.3" },
|
| 742 |
{ name = "pillow", specifier = ">=11.1.0" },
|
|
@@ -1342,7 +1356,6 @@ name = "nvidia-cublas-cu12"
|
|
| 1342 |
version = "12.4.5.8"
|
| 1343 |
source = { registry = "https://pypi.org/simple" }
|
| 1344 |
wheels = [
|
| 1345 |
-
{ url = "https://files.pythonhosted.org/packages/7f/7f/7fbae15a3982dc9595e49ce0f19332423b260045d0a6afe93cdbe2f1f624/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0f8aa1706812e00b9f19dfe0cdb3999b092ccb8ca168c0db5b8ea712456fd9b3", size = 363333771 },
|
| 1346 |
{ url = "https://files.pythonhosted.org/packages/ae/71/1c91302526c45ab494c23f61c7a84aa568b8c1f9d196efa5993957faf906/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:2fc8da60df463fdefa81e323eef2e36489e1c94335b5358bcb38360adf75ac9b", size = 363438805 },
|
| 1347 |
]
|
| 1348 |
|
|
@@ -1351,7 +1364,6 @@ name = "nvidia-cuda-cupti-cu12"
|
|
| 1351 |
version = "12.4.127"
|
| 1352 |
source = { registry = "https://pypi.org/simple" }
|
| 1353 |
wheels = [
|
| 1354 |
-
{ url = "https://files.pythonhosted.org/packages/93/b5/9fb3d00386d3361b03874246190dfec7b206fd74e6e287b26a8fcb359d95/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:79279b35cf6f91da114182a5ce1864997fd52294a87a16179ce275773799458a", size = 12354556 },
|
| 1355 |
{ url = "https://files.pythonhosted.org/packages/67/42/f4f60238e8194a3106d06a058d494b18e006c10bb2b915655bd9f6ea4cb1/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9dec60f5ac126f7bb551c055072b69d85392b13311fcc1bcda2202d172df30fb", size = 13813957 },
|
| 1356 |
]
|
| 1357 |
|
|
@@ -1360,7 +1372,6 @@ name = "nvidia-cuda-nvrtc-cu12"
|
|
| 1360 |
version = "12.4.127"
|
| 1361 |
source = { registry = "https://pypi.org/simple" }
|
| 1362 |
wheels = [
|
| 1363 |
-
{ url = "https://files.pythonhosted.org/packages/77/aa/083b01c427e963ad0b314040565ea396f914349914c298556484f799e61b/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:0eedf14185e04b76aa05b1fea04133e59f465b6f960c0cbf4e37c3cb6b0ea198", size = 24133372 },
|
| 1364 |
{ url = "https://files.pythonhosted.org/packages/2c/14/91ae57cd4db3f9ef7aa99f4019cfa8d54cb4caa7e00975df6467e9725a9f/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a178759ebb095827bd30ef56598ec182b85547f1508941a3d560eb7ea1fbf338", size = 24640306 },
|
| 1365 |
]
|
| 1366 |
|
|
@@ -1369,7 +1380,6 @@ name = "nvidia-cuda-runtime-cu12"
|
|
| 1369 |
version = "12.4.127"
|
| 1370 |
source = { registry = "https://pypi.org/simple" }
|
| 1371 |
wheels = [
|
| 1372 |
-
{ url = "https://files.pythonhosted.org/packages/a1/aa/b656d755f474e2084971e9a297def515938d56b466ab39624012070cb773/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:961fe0e2e716a2a1d967aab7caee97512f71767f852f67432d572e36cb3a11f3", size = 894177 },
|
| 1373 |
{ url = "https://files.pythonhosted.org/packages/ea/27/1795d86fe88ef397885f2e580ac37628ed058a92ed2c39dc8eac3adf0619/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:64403288fa2136ee8e467cdc9c9427e0434110899d07c779f25b5c068934faa5", size = 883737 },
|
| 1374 |
]
|
| 1375 |
|
|
@@ -1392,7 +1402,6 @@ dependencies = [
|
|
| 1392 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1393 |
]
|
| 1394 |
wheels = [
|
| 1395 |
-
{ url = "https://files.pythonhosted.org/packages/7a/8a/0e728f749baca3fbeffad762738276e5df60851958be7783af121a7221e7/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_aarch64.whl", hash = "sha256:5dad8008fc7f92f5ddfa2101430917ce2ffacd86824914c82e28990ad7f00399", size = 211422548 },
|
| 1396 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 },
|
| 1397 |
]
|
| 1398 |
|
|
@@ -1401,7 +1410,6 @@ name = "nvidia-curand-cu12"
|
|
| 1401 |
version = "10.3.5.147"
|
| 1402 |
source = { registry = "https://pypi.org/simple" }
|
| 1403 |
wheels = [
|
| 1404 |
-
{ url = "https://files.pythonhosted.org/packages/80/9c/a79180e4d70995fdf030c6946991d0171555c6edf95c265c6b2bf7011112/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_aarch64.whl", hash = "sha256:1f173f09e3e3c76ab084aba0de819c49e56614feae5c12f69883f4ae9bb5fad9", size = 56314811 },
|
| 1405 |
{ url = "https://files.pythonhosted.org/packages/8a/6d/44ad094874c6f1b9c654f8ed939590bdc408349f137f9b98a3a23ccec411/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a88f583d4e0bb643c49743469964103aa59f7f708d862c3ddb0fc07f851e3b8b", size = 56305206 },
|
| 1406 |
]
|
| 1407 |
|
|
@@ -1415,7 +1423,6 @@ dependencies = [
|
|
| 1415 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1416 |
]
|
| 1417 |
wheels = [
|
| 1418 |
-
{ url = "https://files.pythonhosted.org/packages/46/6b/a5c33cf16af09166845345275c34ad2190944bcc6026797a39f8e0a282e0/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:d338f155f174f90724bbde3758b7ac375a70ce8e706d70b018dd3375545fc84e", size = 127634111 },
|
| 1419 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 },
|
| 1420 |
]
|
| 1421 |
|
|
@@ -1427,7 +1434,6 @@ dependencies = [
|
|
| 1427 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1428 |
]
|
| 1429 |
wheels = [
|
| 1430 |
-
{ url = "https://files.pythonhosted.org/packages/96/a9/c0d2f83a53d40a4a41be14cea6a0bf9e668ffcf8b004bd65633f433050c0/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9d32f62896231ebe0480efd8a7f702e143c98cfaa0e8a76df3386c1ba2b54df3", size = 207381987 },
|
| 1431 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 },
|
| 1432 |
]
|
| 1433 |
|
|
@@ -1444,7 +1450,6 @@ name = "nvidia-nvjitlink-cu12"
|
|
| 1444 |
version = "12.4.127"
|
| 1445 |
source = { registry = "https://pypi.org/simple" }
|
| 1446 |
wheels = [
|
| 1447 |
-
{ url = "https://files.pythonhosted.org/packages/02/45/239d52c05074898a80a900f49b1615d81c07fceadd5ad6c4f86a987c0bc4/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:4abe7fef64914ccfa909bc2ba39739670ecc9e820c83ccc7a6ed414122599b83", size = 20552510 },
|
| 1448 |
{ url = "https://files.pythonhosted.org/packages/ff/ff/847841bacfbefc97a00036e0fce5a0f086b640756dc38caea5e1bb002655/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57", size = 21066810 },
|
| 1449 |
]
|
| 1450 |
|
|
@@ -1453,7 +1458,6 @@ name = "nvidia-nvtx-cu12"
|
|
| 1453 |
version = "12.4.127"
|
| 1454 |
source = { registry = "https://pypi.org/simple" }
|
| 1455 |
wheels = [
|
| 1456 |
-
{ url = "https://files.pythonhosted.org/packages/06/39/471f581edbb7804b39e8063d92fc8305bdc7a80ae5c07dbe6ea5c50d14a5/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7959ad635db13edf4fc65c06a6e9f9e55fc2f92596db928d169c0bb031e88ef3", size = 100417 },
|
| 1457 |
{ url = "https://files.pythonhosted.org/packages/87/20/199b8713428322a2f22b722c62b8cc278cc53dffa9705d744484b5035ee9/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a", size = 99144 },
|
| 1458 |
]
|
| 1459 |
|
|
|
|
| 678 |
{ url = "https://files.pythonhosted.org/packages/a6/3d/e05202dd42581c2a1e93c730d10a0ef45bc40921332c9aa0d6645bbf0e2b/gradio_client-1.5.4-py3-none-any.whl", hash = "sha256:ad38c9a6f7fc590e822627f5bf5685321a7822b8f1a88b76d00a0621a43162d6", size = 321364 },
|
| 679 |
]
|
| 680 |
|
| 681 |
+
[[package]]
|
| 682 |
+
name = "gradio-modal"
|
| 683 |
+
version = "0.0.4"
|
| 684 |
+
source = { registry = "https://pypi.org/simple" }
|
| 685 |
+
dependencies = [
|
| 686 |
+
{ name = "gradio" },
|
| 687 |
+
]
|
| 688 |
+
sdist = { url = "https://files.pythonhosted.org/packages/e2/fd/3b383f9ee8d60625e9e26871ba4adcacbedeab132041b94290758e02e543/gradio_modal-0.0.4.tar.gz", hash = "sha256:717ae699072a171648cfa1b84bc153be84e92d04e9ad58c1bc59af68ef332726", size = 1180812 }
|
| 689 |
+
wheels = [
|
| 690 |
+
{ url = "https://files.pythonhosted.org/packages/05/3d/76f454de84ae1dccbf2b7023e933afb8dde5fdd89e9476786726ef770737/gradio_modal-0.0.4-py3-none-any.whl", hash = "sha256:d96e817d2e934d9e1b835b06474f45fd349b5ccea499d1536bfb4bd38f62dedb", size = 1106241 },
|
| 691 |
+
]
|
| 692 |
+
|
| 693 |
[[package]]
|
| 694 |
name = "h11"
|
| 695 |
version = "0.14.0"
|
|
|
|
| 731 |
dependencies = [
|
| 732 |
{ name = "datasets" },
|
| 733 |
{ name = "gradio" },
|
| 734 |
+
{ name = "gradio-modal" },
|
| 735 |
{ name = "htrflow" },
|
| 736 |
{ name = "pandas" },
|
| 737 |
{ name = "pillow" },
|
|
|
|
| 750 |
requires-dist = [
|
| 751 |
{ name = "datasets", specifier = ">=3.2.0" },
|
| 752 |
{ name = "gradio", specifier = ">=5.11.0" },
|
| 753 |
+
{ name = "gradio-modal", specifier = ">=0.0.4" },
|
| 754 |
{ name = "htrflow", specifier = "==0.2.0" },
|
| 755 |
{ name = "pandas", specifier = ">=2.2.3" },
|
| 756 |
{ name = "pillow", specifier = ">=11.1.0" },
|
|
|
|
| 1356 |
version = "12.4.5.8"
|
| 1357 |
source = { registry = "https://pypi.org/simple" }
|
| 1358 |
wheels = [
|
|
|
|
| 1359 |
{ url = "https://files.pythonhosted.org/packages/ae/71/1c91302526c45ab494c23f61c7a84aa568b8c1f9d196efa5993957faf906/nvidia_cublas_cu12-12.4.5.8-py3-none-manylinux2014_x86_64.whl", hash = "sha256:2fc8da60df463fdefa81e323eef2e36489e1c94335b5358bcb38360adf75ac9b", size = 363438805 },
|
| 1360 |
]
|
| 1361 |
|
|
|
|
| 1364 |
version = "12.4.127"
|
| 1365 |
source = { registry = "https://pypi.org/simple" }
|
| 1366 |
wheels = [
|
|
|
|
| 1367 |
{ url = "https://files.pythonhosted.org/packages/67/42/f4f60238e8194a3106d06a058d494b18e006c10bb2b915655bd9f6ea4cb1/nvidia_cuda_cupti_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9dec60f5ac126f7bb551c055072b69d85392b13311fcc1bcda2202d172df30fb", size = 13813957 },
|
| 1368 |
]
|
| 1369 |
|
|
|
|
| 1372 |
version = "12.4.127"
|
| 1373 |
source = { registry = "https://pypi.org/simple" }
|
| 1374 |
wheels = [
|
|
|
|
| 1375 |
{ url = "https://files.pythonhosted.org/packages/2c/14/91ae57cd4db3f9ef7aa99f4019cfa8d54cb4caa7e00975df6467e9725a9f/nvidia_cuda_nvrtc_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a178759ebb095827bd30ef56598ec182b85547f1508941a3d560eb7ea1fbf338", size = 24640306 },
|
| 1376 |
]
|
| 1377 |
|
|
|
|
| 1380 |
version = "12.4.127"
|
| 1381 |
source = { registry = "https://pypi.org/simple" }
|
| 1382 |
wheels = [
|
|
|
|
| 1383 |
{ url = "https://files.pythonhosted.org/packages/ea/27/1795d86fe88ef397885f2e580ac37628ed058a92ed2c39dc8eac3adf0619/nvidia_cuda_runtime_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:64403288fa2136ee8e467cdc9c9427e0434110899d07c779f25b5c068934faa5", size = 883737 },
|
| 1384 |
]
|
| 1385 |
|
|
|
|
| 1402 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1403 |
]
|
| 1404 |
wheels = [
|
|
|
|
| 1405 |
{ url = "https://files.pythonhosted.org/packages/27/94/3266821f65b92b3138631e9c8e7fe1fb513804ac934485a8d05776e1dd43/nvidia_cufft_cu12-11.2.1.3-py3-none-manylinux2014_x86_64.whl", hash = "sha256:f083fc24912aa410be21fa16d157fed2055dab1cc4b6934a0e03cba69eb242b9", size = 211459117 },
|
| 1406 |
]
|
| 1407 |
|
|
|
|
| 1410 |
version = "10.3.5.147"
|
| 1411 |
source = { registry = "https://pypi.org/simple" }
|
| 1412 |
wheels = [
|
|
|
|
| 1413 |
{ url = "https://files.pythonhosted.org/packages/8a/6d/44ad094874c6f1b9c654f8ed939590bdc408349f137f9b98a3a23ccec411/nvidia_curand_cu12-10.3.5.147-py3-none-manylinux2014_x86_64.whl", hash = "sha256:a88f583d4e0bb643c49743469964103aa59f7f708d862c3ddb0fc07f851e3b8b", size = 56305206 },
|
| 1414 |
]
|
| 1415 |
|
|
|
|
| 1423 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1424 |
]
|
| 1425 |
wheels = [
|
|
|
|
| 1426 |
{ url = "https://files.pythonhosted.org/packages/3a/e1/5b9089a4b2a4790dfdea8b3a006052cfecff58139d5a4e34cb1a51df8d6f/nvidia_cusolver_cu12-11.6.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:19e33fa442bcfd085b3086c4ebf7e8debc07cfe01e11513cc6d332fd918ac260", size = 127936057 },
|
| 1427 |
]
|
| 1428 |
|
|
|
|
| 1434 |
{ name = "nvidia-nvjitlink-cu12", marker = "(platform_machine != 'aarch64' and sys_platform == 'linux') or (sys_platform != 'darwin' and sys_platform != 'linux' and sys_platform != 'win32')" },
|
| 1435 |
]
|
| 1436 |
wheels = [
|
|
|
|
| 1437 |
{ url = "https://files.pythonhosted.org/packages/db/f7/97a9ea26ed4bbbfc2d470994b8b4f338ef663be97b8f677519ac195e113d/nvidia_cusparse_cu12-12.3.1.170-py3-none-manylinux2014_x86_64.whl", hash = "sha256:ea4f11a2904e2a8dc4b1833cc1b5181cde564edd0d5cd33e3c168eff2d1863f1", size = 207454763 },
|
| 1438 |
]
|
| 1439 |
|
|
|
|
| 1450 |
version = "12.4.127"
|
| 1451 |
source = { registry = "https://pypi.org/simple" }
|
| 1452 |
wheels = [
|
|
|
|
| 1453 |
{ url = "https://files.pythonhosted.org/packages/ff/ff/847841bacfbefc97a00036e0fce5a0f086b640756dc38caea5e1bb002655/nvidia_nvjitlink_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:06b3b9b25bf3f8af351d664978ca26a16d2c5127dbd53c0497e28d1fb9611d57", size = 21066810 },
|
| 1454 |
]
|
| 1455 |
|
|
|
|
| 1458 |
version = "12.4.127"
|
| 1459 |
source = { registry = "https://pypi.org/simple" }
|
| 1460 |
wheels = [
|
|
|
|
| 1461 |
{ url = "https://files.pythonhosted.org/packages/87/20/199b8713428322a2f22b722c62b8cc278cc53dffa9705d744484b5035ee9/nvidia_nvtx_cu12-12.4.127-py3-none-manylinux2014_x86_64.whl", hash = "sha256:781e950d9b9f60d8241ccea575b32f5105a5baf4c2351cab5256a24869f12a1a", size = 99144 },
|
| 1462 |
]
|
| 1463 |
|