Spaces:
Running
on
T4
Running
on
T4
amlpai04
commited on
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 |
|