simone-papicchio franceth commited on
Commit
a394efd
·
verified ·
1 Parent(s): 8af502e

Uploading new App version (#10)

Browse files

- Uploading new App version (c4035fd99ba4319a2dfa1a6c24ed97bc30369e26)


Co-authored-by: Francesco Giannuzzo <[email protected]>

Files changed (4) hide show
  1. app.py +0 -0
  2. evaluation_p_metrics.csv +0 -0
  3. style.css +28 -8
  4. utilities.py +66 -11
app.py CHANGED
The diff for this file is too large to render. See raw diff
 
evaluation_p_metrics.csv ADDED
The diff for this file is too large to render. See raw diff
 
style.css CHANGED
@@ -1,19 +1,18 @@
 
1
  .prose h1 {
2
- font-family: 'Poppins', sans-serif;
3
  font-size: 3rem;
4
- font-weight: 700;
5
- text-transform: uppercase;
6
- letter-spacing: 2px;
7
  text-align: center;
8
- color: #222;
9
- background: linear-gradient(45deg, #d4c9cc, #c4b8bb);
10
- -webkit-background-clip: text;
11
- -webkit-text-fill-color: transparent;
12
  padding: 20px;
13
  margin: 20px 0;
14
  position: relative;
15
  }
16
 
 
17
  .prose h1::after {
18
  content: "";
19
  width: 60px;
@@ -24,6 +23,23 @@
24
  border-radius: 2px;
25
  }
26
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  #bar_plot, #line_plot {
28
  width: 100% !important;
29
  max-width: none !important;
@@ -45,6 +61,7 @@
45
  margin: 20px 0;
46
  position: center;
47
  }
 
48
  .fish{
49
  font-family: 'Poppins', sans-serif;
50
  font-size: 1.5rem;
@@ -75,11 +92,13 @@
75
  /*margin: 20px 0;*/
76
  position: center;
77
  }
 
78
  .barcontainer {
79
  display: flex;
80
  justify-content: center;
81
  align-items: center;
82
  }
 
83
  .leftarrow, .rightarrow {
84
  display: flex;
85
  justify-content: center;
@@ -87,6 +106,7 @@
87
  font-size: 2.7rem;
88
  color: #1d60dd;
89
  }
 
90
  .leftarrow {
91
  transform: rotate(-270deg);
92
  }
 
1
+ /* Titoli principali h1 */
2
  .prose h1 {
3
+ font-family: 'Playfair Display', serif;
4
  font-size: 3rem;
5
+ font-weight: 600;
6
+ text-transform: none;
7
+ letter-spacing: 0.5px;
8
  text-align: center;
9
+ color: #ffffff;
 
 
 
10
  padding: 20px;
11
  margin: 20px 0;
12
  position: relative;
13
  }
14
 
15
+ /* Linea decorativa sotto l'h1 */
16
  .prose h1::after {
17
  content: "";
18
  width: 60px;
 
23
  border-radius: 2px;
24
  }
25
 
26
+ /* Titoli secondari h2 */
27
+ .prose h2 {
28
+ font-family: 'Playfair Display', serif;
29
+ font-size: 2.2rem;
30
+ font-weight: 500;
31
+ letter-spacing: 0.3px;
32
+ color: #ffffff;
33
+ text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
34
+ padding: 10px 0;
35
+ margin: 10px 0 20px 0;
36
+ text-align: left;
37
+ }
38
+
39
+ body, label, button, span, li, p, .prose {
40
+ font-family: 'Playfair Display', serif;
41
+ }
42
+
43
  #bar_plot, #line_plot {
44
  width: 100% !important;
45
  max-width: none !important;
 
61
  margin: 20px 0;
62
  position: center;
63
  }
64
+
65
  .fish{
66
  font-family: 'Poppins', sans-serif;
67
  font-size: 1.5rem;
 
92
  /*margin: 20px 0;*/
93
  position: center;
94
  }
95
+
96
  .barcontainer {
97
  display: flex;
98
  justify-content: center;
99
  align-items: center;
100
  }
101
+
102
  .leftarrow, .rightarrow {
103
  display: flex;
104
  justify-content: center;
 
106
  font-size: 2.7rem;
107
  color: #1d60dd;
108
  }
109
+
110
  .leftarrow {
111
  transform: rotate(-270deg);
112
  }
utilities.py CHANGED
@@ -1,32 +1,35 @@
1
  import csv
 
2
  import pandas as pd
3
  import sqlite3
4
  import gradio as gr
5
  import os
6
  from qatch.connectors.sqlite_connector import SqliteConnector
7
-
8
- def carica_sqlite(file_path, db_id):
9
  conn = sqlite3.connect(file_path)
10
  cursor = conn.cursor()
11
  cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
12
  tabelle = cursor.fetchall()
13
  tabelle = [tabella for tabella in tabelle if tabella[0] != 'sqlite_sequence']
14
-
 
 
 
 
15
  dfs = {}
16
  for tabella in tabelle:
17
  nome_tabella = tabella[0]
18
  df = pd.read_sql_query(f"SELECT * FROM {nome_tabella}", conn)
19
  dfs[nome_tabella] = df
20
  conn.close()
21
- data_output = {'data_frames': dfs,'db': None}
22
- # data_output['db'] = SqliteConnector(
23
- # relative_db_path=file_path,
24
- # db_name=db_id,
25
- # )
26
  return data_output
27
 
28
  # Funzione per leggere un file CSV
29
- def carica_csv(file):
30
  df = pd.read_csv(file)
31
  return df
32
 
@@ -44,7 +47,7 @@ def load_data(data_path : str, db_name : str):
44
  if data_path.endswith(".sqlite") :
45
  data_output = carica_sqlite(data_path, db_name)
46
  elif data_path.endswith(".csv"):
47
- data_output['data_frames'] = {f"{table_name}_table" : carica_csv(data_path)}
48
  elif data_path.endswith(".xlsx"):
49
  data_output['data_frames'] = carica_excel(data_path)
50
  else:
@@ -74,4 +77,56 @@ def csv_to_dict(file_path):
74
  if "price" in row:
75
  row["price"] = float(row["price"])
76
  data.append(row)
77
- return data
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import csv
2
+ import re
3
  import pandas as pd
4
  import sqlite3
5
  import gradio as gr
6
  import os
7
  from qatch.connectors.sqlite_connector import SqliteConnector
8
+ def extract_tables(file_path):
 
9
  conn = sqlite3.connect(file_path)
10
  cursor = conn.cursor()
11
  cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
12
  tabelle = cursor.fetchall()
13
  tabelle = [tabella for tabella in tabelle if tabella[0] != 'sqlite_sequence']
14
+ return tabelle
15
+
16
+ def extract_dataframes(file_path):
17
+ conn = sqlite3.connect(file_path)
18
+ tabelle = extract_tables(file_path)
19
  dfs = {}
20
  for tabella in tabelle:
21
  nome_tabella = tabella[0]
22
  df = pd.read_sql_query(f"SELECT * FROM {nome_tabella}", conn)
23
  dfs[nome_tabella] = df
24
  conn.close()
25
+ return dfs
26
+
27
+ def carica_sqlite(file_path, db_id):
28
+ data_output = {'data_frames': extract_dataframes(file_path),'db':SqliteConnector(relative_db_path=file_path, db_name=db_id)}
 
29
  return data_output
30
 
31
  # Funzione per leggere un file CSV
32
+ def load_csv(file):
33
  df = pd.read_csv(file)
34
  return df
35
 
 
47
  if data_path.endswith(".sqlite") :
48
  data_output = carica_sqlite(data_path, db_name)
49
  elif data_path.endswith(".csv"):
50
+ data_output['data_frames'] = {f"{table_name}_table" : load_csv(data_path)}
51
  elif data_path.endswith(".xlsx"):
52
  data_output['data_frames'] = carica_excel(data_path)
53
  else:
 
77
  if "price" in row:
78
  row["price"] = float(row["price"])
79
  data.append(row)
80
+ return data
81
+
82
+
83
+ def increment_filename(filename):
84
+ base, ext = os.path.splitext(filename)
85
+ numbers = re.findall(r'\d+', base)
86
+
87
+ if numbers:
88
+ max_num = max(map(int, numbers)) + 1
89
+ new_base = re.sub(r'(\d+)', lambda m: str(max_num) if int(m.group(1)) == max(map(int, numbers)) else m.group(1), base)
90
+ else:
91
+ new_base = base + '1'
92
+
93
+ return new_base + ext
94
+
95
+ def prepare_prompt(prompt, question, schema, samples):
96
+ prompt = prompt.replace("{schema}", schema).replace("{question}", question)
97
+ prompt += f" Some istanze: {samples}"
98
+ return prompt
99
+
100
+ def generate_some_samples(connector, tbl_name):
101
+ samples = []
102
+ query = f"SELECT * FROM {tbl_name} LIMIT 3"
103
+ try:
104
+ sample_data = connector.execute_query(query)
105
+ samples.append(str(sample_data))
106
+ except Exception as e:
107
+ samples.append(f"Error: {e}")
108
+ return samples
109
+ def extract_tables_dict(pnp_path):
110
+ tables_dict = {}
111
+ # df = pd.read_csv(pnp_path)
112
+ # with open(pnp_path, mode='r', encoding='utf-8') as file:
113
+ # reader = csv.DictReader(file)
114
+ # for row in reader:
115
+ # tbl_name = row.get("tbl_name")
116
+ # db_path = row.get("db_path")
117
+ # if tbl_name and db_path:
118
+ # print(db_path, tbl_name)
119
+ # connector = SqliteConnector(relative_db_path=db_path, db_name=os.path.basename(db_path))
120
+ # instances = generate_some_samples(connector, tbl_name)
121
+ # if tbl_name not in tables_dict:
122
+ # tables_dict[tbl_name] = []
123
+ # tables_dict[tbl_name].extend(instances)
124
+
125
+ with open(pnp_path, mode='r', encoding='utf-8') as file:
126
+ reader = csv.DictReader(file)
127
+ for row in reader:
128
+ tbl_name = row.get("tbl_name")
129
+ if tbl_name not in tables_dict:
130
+ tables_dict[tbl_name] = []
131
+ #tables_dict[tbl_name].append(row)
132
+ return tables_dict