hysts HF Staff commited on
Commit
3d25d95
·
1 Parent(s): aa9de3b
Files changed (4) hide show
  1. app.py +25 -0
  2. pyproject.toml +1 -0
  3. requirements.txt +3 -0
  4. uv.lock +14 -0
app.py CHANGED
@@ -2,6 +2,7 @@
2
 
3
  import gradio as gr
4
  import polars as pl
 
5
 
6
  from app_mcp import demo as demo_mcp
7
  from search import search
@@ -111,6 +112,25 @@ def update_df(
111
  )
112
 
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  with gr.Blocks(css_paths="style.css") as demo:
115
  gr.Markdown(DESCRIPTION)
116
  search_query = gr.Textbox(label="Search", submit_btn=True, show_label=False, placeholder="Search...")
@@ -138,6 +158,11 @@ with gr.Blocks(css_paths="style.css") as demo:
138
  elem_id="table",
139
  column_widths=[COLUMN_INFO[col][1] for col in COLUMN_INFO],
140
  )
 
 
 
 
 
141
 
142
  inputs = [
143
  search_query,
 
2
 
3
  import gradio as gr
4
  import polars as pl
5
+ from gradio_modal import Modal
6
 
7
  from app_mcp import demo as demo_mcp
8
  from search import search
 
112
  )
113
 
114
 
115
+ def df_row_selected(
116
+ evt: gr.SelectData,
117
+ ) -> tuple[
118
+ Modal,
119
+ gr.Textbox, # title
120
+ gr.Textbox, # abstract
121
+ ]:
122
+ if evt.index[1] != 0:
123
+ return Modal(), gr.Textbox(), gr.Textbox()
124
+
125
+ title = evt.row_value[0]
126
+ row = df_main.filter(pl.col("Title") == title)
127
+ return (
128
+ Modal(visible=True),
129
+ gr.Textbox(value=row["Title"].item()), # title
130
+ gr.Textbox(value=row["abstract"].item()), # abstract
131
+ )
132
+
133
+
134
  with gr.Blocks(css_paths="style.css") as demo:
135
  gr.Markdown(DESCRIPTION)
136
  search_query = gr.Textbox(label="Search", submit_btn=True, show_label=False, placeholder="Search...")
 
158
  elem_id="table",
159
  column_widths=[COLUMN_INFO[col][1] for col in COLUMN_INFO],
160
  )
161
+ with Modal(visible=False, elem_id="abstract-modal") as abstract_modal:
162
+ title = gr.Textbox(label="Title")
163
+ abstract = gr.Textbox(label="Abstract")
164
+
165
+ df.select(fn=df_row_selected, outputs=[abstract_modal, title, abstract])
166
 
167
  inputs = [
168
  search_query,
pyproject.toml CHANGED
@@ -7,6 +7,7 @@ requires-python = ">=3.10"
7
  dependencies = [
8
  "datasets>=4.0.0",
9
  "faiss-cpu>=1.11.0.post1",
 
10
  "gradio[mcp]>=5.38.2",
11
  "hf-transfer>=0.1.9",
12
  "loguru>=0.7.3",
 
7
  dependencies = [
8
  "datasets>=4.0.0",
9
  "faiss-cpu>=1.11.0.post1",
10
+ "gradio-modal>=0.0.4",
11
  "gradio[mcp]>=5.38.2",
12
  "hf-transfer>=0.1.9",
13
  "loguru>=0.7.3",
requirements.txt CHANGED
@@ -71,9 +71,12 @@ fsspec==2025.3.0
71
  gradio==5.38.2
72
  # via
73
  # cvpr2025 (pyproject.toml)
 
74
  # spaces
75
  gradio-client==1.11.0
76
  # via gradio
 
 
77
  groovy==0.1.2
78
  # via gradio
79
  h11==0.16.0
 
71
  gradio==5.38.2
72
  # via
73
  # cvpr2025 (pyproject.toml)
74
+ # gradio-modal
75
  # spaces
76
  gradio-client==1.11.0
77
  # via gradio
78
+ gradio-modal==0.0.4
79
+ # via cvpr2025 (pyproject.toml)
80
  groovy==0.1.2
81
  # via gradio
82
  h11==0.16.0
uv.lock CHANGED
@@ -376,6 +376,7 @@ dependencies = [
376
  { name = "datasets" },
377
  { name = "faiss-cpu" },
378
  { name = "gradio", extra = ["mcp"] },
 
379
  { name = "hf-transfer" },
380
  { name = "loguru" },
381
  { name = "polars" },
@@ -389,6 +390,7 @@ requires-dist = [
389
  { name = "datasets", specifier = ">=4.0.0" },
390
  { name = "faiss-cpu", specifier = ">=1.11.0.post1" },
391
  { name = "gradio", extras = ["mcp"], specifier = ">=5.38.2" },
 
392
  { name = "hf-transfer", specifier = ">=0.1.9" },
393
  { name = "loguru", specifier = ">=0.7.3" },
394
  { name = "polars", specifier = ">=1.31.0" },
@@ -692,6 +694,18 @@ wheels = [
692
  { url = "https://files.pythonhosted.org/packages/e0/38/7f50ae95de8fa419276742230f57a34e8c0f47231da0ad54479dd0088972/gradio_client-1.11.0-py3-none-any.whl", hash = "sha256:afb714aea50224f6f04679fe2ce79c1be75011012d0dc3b3ee575610a0dc8eb2", size = 324452, upload-time = "2025-07-17T02:02:44.542Z" },
693
  ]
694
 
 
 
 
 
 
 
 
 
 
 
 
 
695
  [[package]]
696
  name = "groovy"
697
  version = "0.1.2"
 
376
  { name = "datasets" },
377
  { name = "faiss-cpu" },
378
  { name = "gradio", extra = ["mcp"] },
379
+ { name = "gradio-modal" },
380
  { name = "hf-transfer" },
381
  { name = "loguru" },
382
  { name = "polars" },
 
390
  { name = "datasets", specifier = ">=4.0.0" },
391
  { name = "faiss-cpu", specifier = ">=1.11.0.post1" },
392
  { name = "gradio", extras = ["mcp"], specifier = ">=5.38.2" },
393
+ { name = "gradio-modal", specifier = ">=0.0.4" },
394
  { name = "hf-transfer", specifier = ">=0.1.9" },
395
  { name = "loguru", specifier = ">=0.7.3" },
396
  { name = "polars", specifier = ">=1.31.0" },
 
694
  { url = "https://files.pythonhosted.org/packages/e0/38/7f50ae95de8fa419276742230f57a34e8c0f47231da0ad54479dd0088972/gradio_client-1.11.0-py3-none-any.whl", hash = "sha256:afb714aea50224f6f04679fe2ce79c1be75011012d0dc3b3ee575610a0dc8eb2", size = 324452, upload-time = "2025-07-17T02:02:44.542Z" },
695
  ]
696
 
697
+ [[package]]
698
+ name = "gradio-modal"
699
+ version = "0.0.4"
700
+ source = { registry = "https://pypi.org/simple" }
701
+ dependencies = [
702
+ { name = "gradio" },
703
+ ]
704
+ sdist = { url = "https://files.pythonhosted.org/packages/e2/fd/3b383f9ee8d60625e9e26871ba4adcacbedeab132041b94290758e02e543/gradio_modal-0.0.4.tar.gz", hash = "sha256:717ae699072a171648cfa1b84bc153be84e92d04e9ad58c1bc59af68ef332726", size = 1180812, upload-time = "2024-10-15T23:46:06.134Z" }
705
+ wheels = [
706
+ { url = "https://files.pythonhosted.org/packages/05/3d/76f454de84ae1dccbf2b7023e933afb8dde5fdd89e9476786726ef770737/gradio_modal-0.0.4-py3-none-any.whl", hash = "sha256:d96e817d2e934d9e1b835b06474f45fd349b5ccea499d1536bfb4bd38f62dedb", size = 1106241, upload-time = "2024-10-15T23:46:04.13Z" },
707
+ ]
708
+
709
  [[package]]
710
  name = "groovy"
711
  version = "0.1.2"