kreemyyyy commited on
Commit
826a51f
Β·
verified Β·
1 Parent(s): bfda577

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -30
app.py CHANGED
@@ -1,48 +1,46 @@
1
  import pandas as pd
2
  import gradio as gr
3
 
 
4
  def convert_schedule(file, direction):
5
- # Read the uploaded Excel file; use the first column as index
6
- df = pd.read_excel(file.name if hasattr(file, 'name') else file, index_col=0)
7
 
8
  if direction == "A to B":
9
- # A->B: models in rows, texters in cells -> texters as rows, models as cell values
10
- df_reset = df.reset_index()
11
- model_col = df_reset.columns[0]
12
- df_melt = df_reset.melt(id_vars=[model_col], var_name='Header', value_name='Texter')
13
- df_melt = df_melt.dropna(subset=['Texter'])
14
- df_pivot = df_melt.pivot(index='Texter', columns='Header', values=model_col)
15
- df_pivot = df_pivot.reindex(columns=df.columns).fillna("")
16
- result = df_pivot
 
17
  else:
18
- # B->A: texters in rows, models in cells -> models as rows, texters as cell values
19
- df_reset = df.reset_index()
20
- texter_col = df_reset.columns[0]
21
- df_melt = df_reset.melt(id_vars=[texter_col], var_name='Header', value_name='Model')
22
- df_melt = df_melt.dropna(subset=['Model'])
23
- df_pivot = df_melt.pivot(index='Model', columns='Header', values=texter_col)
24
- df_pivot = df_pivot.reindex(columns=df.columns).fillna("")
25
- result = df_pivot
 
26
 
27
- # Save to Excel for download
28
- out_file = "converted_schedule.xlsx"
29
- result.to_excel(out_file)
30
- return result, out_file
31
 
32
  # Build Gradio interface
33
  iface = gr.Interface(
34
  fn=convert_schedule,
35
  inputs=[
36
- gr.File(label="Upload Schedule Excel (Format A or B)"),
37
  gr.Radio(["A to B", "B to A"], label="Conversion Direction")
38
  ],
39
- outputs=[
40
- gr.Dataframe(label="Converted Schedule"),
41
- gr.File(label="Download Converted Excel")
42
- ],
43
- title="Schedule Format Converter",
44
- description="Dynamically convert between two schedule formats: models-as-rows ↔ texters-as-rows."
45
  )
46
 
47
  if __name__ == "__main__":
48
- iface.launch()
 
 
1
  import pandas as pd
2
  import gradio as gr
3
 
4
+ # Core conversion logic
5
  def convert_schedule(file, direction):
6
+ # Read the uploaded Excel file (first sheet) with first column as index
7
+ df = pd.read_excel(file.name, index_col=0)
8
 
9
  if direction == "A to B":
10
+ # Models in rows β†’ Texters as rows
11
+ df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: "Model"})
12
+ df_melt = df_reset.melt(id_vars=["Model"], var_name="Header", value_name="Texter")
13
+ df_melt = df_melt.dropna(subset=["Texter"])
14
+ # Use pivot_table to handle duplicate entries gracefully
15
+ pivot = df_melt.pivot_table(
16
+ index="Texter", columns="Header", values="Model", aggfunc="first"
17
+ )
18
+ result = pivot.reindex(columns=df.columns).fillna("")
19
  else:
20
+ # Texters in rows β†’ Models as rows
21
+ df_reset = df.reset_index().rename(columns={df.index.name or df.columns[0]: "Texter"})
22
+ df_melt = df_reset.melt(id_vars=["Texter"], var_name="Header", value_name="Model")
23
+ df_melt = df_melt.dropna(subset=["Model"])
24
+ # Use pivot_table to handle duplicate entries gracefully
25
+ pivot = df_melt.pivot_table(
26
+ index="Model", columns="Header", values="Texter", aggfunc="first"
27
+ )
28
+ result = pivot.reindex(columns=df.columns).fillna("")
29
 
30
+ return result
 
 
 
31
 
32
  # Build Gradio interface
33
  iface = gr.Interface(
34
  fn=convert_schedule,
35
  inputs=[
36
+ gr.File(label="Upload Schedule (.xlsx)", file_count="single", type="file"),
37
  gr.Radio(["A to B", "B to A"], label="Conversion Direction")
38
  ],
39
+ outputs=gr.Dataframe(label="Converted Schedule"),
40
+ title="Dynamic Schedule Converter",
41
+ description="Upload an Excel file in Format A or B and convert between models-as-rows ↔ texters-as-rows."
 
 
 
42
  )
43
 
44
  if __name__ == "__main__":
45
+ # Ensure compatibility with Hugging Face Spaces
46
+ iface.launch(server_name="0.0.0.0", server_port=7860)