ps1811 commited on
Commit
6b96fd7
·
verified ·
1 Parent(s): 5b764dc
Files changed (1) hide show
  1. app.py +8 -16
app.py CHANGED
@@ -1,9 +1,7 @@
 
 
1
  import gradio as gr
2
  import pandas as pd
3
- # from dotenv import load_dotenv
4
- # load_dotenv()
5
-
6
- # becoz of deployment on hf space - above 2 lines replaced as below:
7
  import os
8
 
9
  from app.db.repo import init_db
@@ -13,24 +11,25 @@ from app.controller.session_loader import load_google_ads_data
13
  from app.ads1.ads_analyst import run_ads_analyst_card
14
  from app.ads1.budget_optimizer import run_budget_optimizer_card
15
 
16
-
17
  init_db()
18
 
19
  # HELPERS
20
  def on_campaign_select(campaign_name):
21
  dfs = load_google_ads_data()
22
-
23
  filtered = dfs.copy()
24
  filtered["campaigns"] = dfs["campaigns"][
25
  dfs["campaigns"]["name"] == campaign_name
26
  ]
27
  return filtered
28
 
 
 
29
  def run_ads_card(state):
30
  if not state:
31
  return "⚠️ Please select a campaign from the Dashboard first."
32
  return run_ads_analyst_card(state["dfs"])
33
 
 
34
  def run_budget_card(state):
35
  if not state:
36
  return "⚠️ Please select a campaign from the Dashboard first."
@@ -40,7 +39,6 @@ def campaign_row_selected(evt: gr.SelectData):
40
  """
41
  Triggered when user clicks a row in the dashboard table
42
  """
43
-
44
  df = load_dashboard()[4] # campaign table returned by load_dashboard()
45
  campaign_name = df.iloc[evt.index[0]]["Campaign"]
46
  dfs = on_campaign_select(campaign_name)
@@ -55,27 +53,20 @@ def campaign_row_selected(evt: gr.SelectData):
55
 
56
  # GRADIO APP
57
  with gr.Blocks(title="Ads Assistant") as demo:
58
-
59
  campaign_state = gr.State()
60
  gr.Markdown("# 🎯 Preschool Ads Dashboard")
61
 
62
  # TAB 1: DASHBOARD
63
- # -------------------------
64
  with gr.Tab("Dashboard"):
65
-
66
  campaign_table = build_dashboard()
67
 
68
  # TAB 2: CAMPAIGN ANALYSIS
69
- # -------------------------
70
  with gr.Tab("Campaign Analysis"):
71
-
72
  selected_campaign = gr.Markdown(
73
  "👈 Select a campaign from the Dashboard tab"
74
  )
75
-
76
  analyst_btn = gr.Button("Run Ads Analysis")
77
  budget_btn = gr.Button("Run Budget Optimization")
78
-
79
  output = gr.Markdown()
80
 
81
  analyst_btn.click(
@@ -91,7 +82,6 @@ with gr.Blocks(title="Ads Assistant") as demo:
91
  )
92
 
93
  # CONNECT TABLE CLICK → STATE
94
- # -------------------------
95
  campaign_table.select(
96
  fn=campaign_row_selected,
97
  outputs=[
@@ -100,4 +90,6 @@ with gr.Blocks(title="Ads Assistant") as demo:
100
  ]
101
  )
102
 
103
- demo.launch(server_name="0.0.0.0", server_port=7860)
 
 
 
1
+ # STEP 1: MUST BE THE FIRST MACHINE LEARNING IMPORT
2
+ import spaces
3
  import gradio as gr
4
  import pandas as pd
 
 
 
 
5
  import os
6
 
7
  from app.db.repo import init_db
 
11
  from app.ads1.ads_analyst import run_ads_analyst_card
12
  from app.ads1.budget_optimizer import run_budget_optimizer_card
13
 
 
14
  init_db()
15
 
16
  # HELPERS
17
  def on_campaign_select(campaign_name):
18
  dfs = load_google_ads_data()
 
19
  filtered = dfs.copy()
20
  filtered["campaigns"] = dfs["campaigns"][
21
  dfs["campaigns"]["name"] == campaign_name
22
  ]
23
  return filtered
24
 
25
+ # STEP 2: DECORATE THE GPU-INTENSIVE FUNCTIONS
26
+ @spaces.GPU()
27
  def run_ads_card(state):
28
  if not state:
29
  return "⚠️ Please select a campaign from the Dashboard first."
30
  return run_ads_analyst_card(state["dfs"])
31
 
32
+ @spaces.GPU()
33
  def run_budget_card(state):
34
  if not state:
35
  return "⚠️ Please select a campaign from the Dashboard first."
 
39
  """
40
  Triggered when user clicks a row in the dashboard table
41
  """
 
42
  df = load_dashboard()[4] # campaign table returned by load_dashboard()
43
  campaign_name = df.iloc[evt.index[0]]["Campaign"]
44
  dfs = on_campaign_select(campaign_name)
 
53
 
54
  # GRADIO APP
55
  with gr.Blocks(title="Ads Assistant") as demo:
 
56
  campaign_state = gr.State()
57
  gr.Markdown("# 🎯 Preschool Ads Dashboard")
58
 
59
  # TAB 1: DASHBOARD
 
60
  with gr.Tab("Dashboard"):
 
61
  campaign_table = build_dashboard()
62
 
63
  # TAB 2: CAMPAIGN ANALYSIS
 
64
  with gr.Tab("Campaign Analysis"):
 
65
  selected_campaign = gr.Markdown(
66
  "👈 Select a campaign from the Dashboard tab"
67
  )
 
68
  analyst_btn = gr.Button("Run Ads Analysis")
69
  budget_btn = gr.Button("Run Budget Optimization")
 
70
  output = gr.Markdown()
71
 
72
  analyst_btn.click(
 
82
  )
83
 
84
  # CONNECT TABLE CLICK → STATE
 
85
  campaign_table.select(
86
  fn=campaign_row_selected,
87
  outputs=[
 
90
  ]
91
  )
92
 
93
+ # STEP 3: CLEAN LAUNCH FOR HUGGING FACE
94
+ # Do not specify server_name or server_port; HF manages this automatically.
95
+ demo.launch()