viewx 0.2.2__tar.gz → 0.2.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. {viewx-0.2.2 → viewx-0.2.4}/PKG-INFO +40 -69
  2. {viewx-0.2.2 → viewx-0.2.4}/README.md +39 -67
  3. {viewx-0.2.2 → viewx-0.2.4}/setup.py +2 -3
  4. {viewx-0.2.2 → viewx-0.2.4}/tests/test1.py +14 -16
  5. viewx-0.2.4/tests/test8_slides_auto.py +15 -0
  6. viewx-0.2.4/tests/test9_report_auto.py +22 -0
  7. viewx-0.2.4/viewx/DataMatrix/__init__.py +30 -0
  8. viewx-0.2.4/viewx/DataMatrix/analyzers.py +325 -0
  9. viewx-0.2.4/viewx/DataMatrix/bibliometrics.py +143 -0
  10. viewx-0.2.4/viewx/DataMatrix/datamatrix_engine.py +1348 -0
  11. viewx-0.2.4/viewx/DataMatrix/explorer.py +87 -0
  12. viewx-0.2.4/viewx/DataMatrix/visualizer.py +511 -0
  13. {viewx-0.2.2 → viewx-0.2.4}/viewx/HTML/html_engine.py +408 -167
  14. viewx-0.2.4/viewx/Report/auto_builder.py +187 -0
  15. {viewx-0.2.2 → viewx-0.2.4}/viewx/Report/report_engine.py +30 -1
  16. {viewx-0.2.2 → viewx-0.2.4}/viewx/Slides/__init__.py +1 -0
  17. viewx-0.2.4/viewx/Slides/auto_builder.py +171 -0
  18. {viewx-0.2.2 → viewx-0.2.4}/viewx/Slides/slides_engine.py +125 -49
  19. {viewx-0.2.2 → viewx-0.2.4}/viewx/__init__.py +5 -5
  20. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/__init__.py +20 -14
  21. viewx-0.2.4/viewx/shared/__init__.py +20 -0
  22. viewx-0.2.4/viewx/shared/a11y.py +24 -0
  23. viewx-0.2.4/viewx/shared/explorer_runtime.py +523 -0
  24. viewx-0.2.4/viewx/shared/insights.py +121 -0
  25. viewx-0.2.4/viewx/shared/plotly_bundle.py +28 -0
  26. viewx-0.2.4/viewx/shared/runtime.py +237 -0
  27. {viewx-0.2.2 → viewx-0.2.4}/viewx.egg-info/PKG-INFO +40 -69
  28. {viewx-0.2.2 → viewx-0.2.4}/viewx.egg-info/SOURCES.txt +13 -2
  29. {viewx-0.2.2 → viewx-0.2.4}/viewx.egg-info/requires.txt +0 -1
  30. viewx-0.2.2/tests/test2.py +0 -39
  31. viewx-0.2.2/viewx/DataMatrix/__init__.py +0 -3
  32. viewx-0.2.2/viewx/DataMatrix/bibliometrics.py +0 -52
  33. viewx-0.2.2/viewx/DataMatrix/datamatrix_engine.py +0 -184
  34. viewx-0.2.2/viewx/DataMatrix/visualizer.py +0 -75
  35. {viewx-0.2.2 → viewx-0.2.4}/setup.cfg +0 -0
  36. {viewx-0.2.2 → viewx-0.2.4}/tests/test3.py +0 -0
  37. {viewx-0.2.2 → viewx-0.2.4}/tests/test4.py +0 -0
  38. {viewx-0.2.2 → viewx-0.2.4}/tests/test5.py +0 -0
  39. {viewx-0.2.2 → viewx-0.2.4}/tests/test6.py +0 -0
  40. {viewx-0.2.2 → viewx-0.2.4}/tests/test7.py +0 -0
  41. {viewx-0.2.2 → viewx-0.2.4}/viewx/HTML/__init__.py +0 -0
  42. {viewx-0.2.2 → viewx-0.2.4}/viewx/Report/__init__.py +0 -0
  43. {viewx-0.2.2 → viewx-0.2.4}/viewx/Slides/charts.py +0 -0
  44. {viewx-0.2.2 → viewx-0.2.4}/viewx/Slides/components.py +0 -0
  45. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/course_completion.csv +0 -0
  46. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/iris.csv +0 -0
  47. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/penguins.csv +0 -0
  48. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/sp500_companies.csv +0 -0
  49. {viewx-0.2.2 → viewx-0.2.4}/viewx/datasets/titanic.csv +0 -0
  50. {viewx-0.2.2 → viewx-0.2.4}/viewx.egg-info/dependency_links.txt +0 -0
  51. {viewx-0.2.2 → viewx-0.2.4}/viewx.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: viewx
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Librería de visualización adaptable para HTML, Dashboards y PDFs en Python
5
5
  Home-page: https://github.com/GhostAnalyst30/ViewX
6
6
  Author: Emmanuel Ascendra Perez
@@ -25,7 +25,6 @@ Requires-Dist: matplotlib>=3.8.0
25
25
  Requires-Dist: pylatex>=1.4.2
26
26
  Requires-Dist: seaborn>=0.12.2
27
27
  Requires-Dist: plotly>=6.0.0
28
- Requires-Dist: streamlit>=1.32.0
29
28
  Provides-Extra: streamlit
30
29
  Requires-Dist: streamlit>=1.32.0; extra == "streamlit"
31
30
  Provides-Extra: dash
@@ -52,7 +51,7 @@ Dynamic: requires-dist
52
51
  Dynamic: requires-python
53
52
  Dynamic: summary
54
53
 
55
- # ViewX — v2.2
54
+ # ViewX — v2.4
56
55
 
57
56
  **ViewX** es un paquete moderno de Python diseñado para generar **páginas HTML interactivas**, **dashboards dinámicos** y **visualizaciones inteligentes** que se adaptan automáticamente a los objetos agregados por el usuario.
58
57
 
@@ -78,81 +77,53 @@ pip install viewx
78
77
 
79
78
  ## Ejemplo rápido
80
79
 
81
- ### Crear una página HTML
80
+ ### Crear un DashBoard HTML
82
81
  ```python
83
- import pandas as pd
84
- from viewx.HTML import HTML
85
-
86
- # 1. Crear datos de ejemplo
87
- df_ventas = pd.DataFrame({
88
- 'Mes': ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
89
- 'Ventas': [120, 135, 148, 170, 195, 210, 245, 268, 290, 310, 335, 400],
90
- 'Beneficio': [30, 35, 42, 51, 58, 63, 73, 80, 87, 93, 100, 120],
91
- 'Clientes': [45, 48, 52, 58, 65, 72, 80, 88, 95, 102, 110, 125]
92
- })
93
-
94
- # Datos para gráfico de barras
95
- df_productos = pd.DataFrame({
96
- 'Producto': ['Producto A', 'Producto B', 'Producto C', 'Producto D', 'Producto E'],
97
- 'Ventas': [450, 320, 280, 190, 150]
82
+ df = pd.DataFrame({
83
+ "date": dates, "region": regions, "product": products,
84
+ "revenue": revenue_str, "costs": costs.round(2),
85
+ "units": units, "rating": rating, "returned": returned,
98
86
  })
99
-
100
- # Datos para scatter
101
- df_clientes = pd.DataFrame({
102
- 'Edad': [25, 32, 28, 45, 38, 29, 51, 42, 35, 30],
103
- 'Gasto': [120, 200, 150, 300, 250, 180, 400, 320, 220, 160],
104
- 'Segmento': ['Joven', 'Adulto', 'Joven', 'Senior', 'Adulto', 'Joven', 'Senior', 'Adulto', 'Adulto', 'Joven']
105
- })
106
-
107
- # 2. Configurar el dashboard
108
- dashboard = HTML(
109
- title="📊 Dashboard Ejecutivo - Demo",
110
- theme="corporate_blue", # Temas: corporate_blue, dark_enterprise, modern_green, void_indigo, glass_ocean, cyberpunk_neon
111
- cols=12, # Grid de 12 columnas
112
- rows=12, # 12 filas de altura
113
- gap=16,
114
- padding=20,
115
- navbar={
116
- "title": "📈 ViewX PRO",
117
- "items": [
118
- {"label": "Inicio", "link": "#"},
119
- {"label": "Ventas", "link": "#"},
120
- {"label": "Clientes", "link": "#"},
121
- {"label": "Reportes", "link": "#"}
122
- ]
123
- }
87
+ df["revenue"] = pd.to_numeric(
88
+ df["revenue"].str.replace(r"[$,]", "", regex=True), errors="coerce"
124
89
  )
125
90
 
126
- # 3. Añadir componentes (row, col, height, width)
127
- # Fila 1: KPIs
128
- dashboard.add_valuebox("Ventas Totales", "$2.8M", "💰", row=1, col=1, height=2, width=3)
129
- dashboard.add_valuebox("Beneficio Neto", "$942K", "📈", "#00A86B", row=1, col=4, height=2, width=3)
130
- dashboard.add_valuebox("Clientes Activos", "1,247", "👥", "#FF6B35", row=1, col=7, height=2, width=3)
131
- dashboard.add_valuebox("Tasa Conversión", "24.5%", "🎯", "#9B59B6", row=1, col=10, height=2, width=3)
132
-
133
- # Fila 2-5: Gráfico de líneas (ventas mensuales) - Método sencillo con datos
134
- dashboard.add_chart(
135
- data=df_ventas,
136
- chart_type="line",
137
- x="Mes",
138
- y="Ventas",
139
- title="📈 Evolución de Ventas 2024",
140
- row=3, col=1, height=10, width=6
91
+ fig_bar = px.bar(
92
+ df.groupby("region")["revenue"].sum().reset_index().sort_values("revenue"),
93
+ x="revenue", y="region", orientation="h", color="region",
94
+ color_discrete_sequence=["#059669", "#10B981", "#34D399", "#6EE7B7"],
141
95
  )
96
+ fig_bar.update_layout(showlegend=False)
142
97
 
143
- # Fila 2-5: Gráfico de barras (productos) - Otro ejemplo sencillo
144
- dashboard.add_chart(
145
- data=df_productos,
146
- chart_type="bar",
147
- x="Producto",
148
- y="Ventas",
149
- title="🏷️ Ventas por Producto",
150
- row=3, col=7, height=10, width=6
98
+ fig_line = px.line(
99
+ df.groupby("date")["revenue"].sum().reset_index(),
100
+ x="date", y="revenue", color_discrete_sequence=["#059669"],
151
101
  )
152
102
 
153
- # 4. Generar el archivo
154
- dashboard.generate("mi_dashboard.html")
103
+ dash = HTML(
104
+ title="Manual Dashboard", theme="modern_green",
105
+ cols=12, rows=9, gap=14, padding=20,
106
+ navbar={"title": "Manual Dashboard",
107
+ "items": [{"label": "Home", "link": "#"}, {"label": "Analytics", "link": "#"}]},
108
+ authors=[{"name": "Data Team", "email": "data@acme.com"}],
109
+ data_button=True, df=df,
110
+ )
155
111
 
112
+ dash.add_valuebox("Total Revenue", "$2.4M", icon_key="dollar", row=1, col=1, height=2, width=3)
113
+ dash.add_valuebox("Total Units", "18.4K", icon_key="box", row=1, col=4, height=2, width=3)
114
+ dash.add_valuebox("Avg Rating", "4.12", icon_key="award", row=1, col=7, height=2, width=3)
115
+ dash.add_valuebox("Return Rate", "12%", icon_key="percent", row=1, col=10, height=2, width=3)
116
+
117
+ dash.add_infobox(df=df, variable="revenue",
118
+ info=["mean", "median", "std", "min", "max", "kurtosis", "skewness", "nulls"],
119
+ title="Revenue Stats", row=3, col=1, height=4, width=3)
120
+ dash.add_chart(fig=fig_bar, title="Revenue by Region",
121
+ row=3, col=4, height=4, width=9, show_info_btn=True,
122
+ _info_stats={"Regions": "4", "Total": "$2.4M"})
123
+ dash.add_chart(fig=fig_line, title="Daily Revenue Trend",
124
+ row=7, col=1, height=3, width=12, show_info_btn=True)
125
+
126
+ dash.generate("demo6_manual.html")
156
127
  ```
157
128
 
158
129
  ![DashBoardViewX](https://raw.githubusercontent.com/GhostAnalyst30/ViewX/main/images_for_git/DashBoard_Example.png
@@ -1,4 +1,4 @@
1
- # ViewX — v2.2
1
+ # ViewX — v2.4
2
2
 
3
3
  **ViewX** es un paquete moderno de Python diseñado para generar **páginas HTML interactivas**, **dashboards dinámicos** y **visualizaciones inteligentes** que se adaptan automáticamente a los objetos agregados por el usuario.
4
4
 
@@ -24,81 +24,53 @@ pip install viewx
24
24
 
25
25
  ## Ejemplo rápido
26
26
 
27
- ### Crear una página HTML
27
+ ### Crear un DashBoard HTML
28
28
  ```python
29
- import pandas as pd
30
- from viewx.HTML import HTML
31
-
32
- # 1. Crear datos de ejemplo
33
- df_ventas = pd.DataFrame({
34
- 'Mes': ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
35
- 'Ventas': [120, 135, 148, 170, 195, 210, 245, 268, 290, 310, 335, 400],
36
- 'Beneficio': [30, 35, 42, 51, 58, 63, 73, 80, 87, 93, 100, 120],
37
- 'Clientes': [45, 48, 52, 58, 65, 72, 80, 88, 95, 102, 110, 125]
38
- })
39
-
40
- # Datos para gráfico de barras
41
- df_productos = pd.DataFrame({
42
- 'Producto': ['Producto A', 'Producto B', 'Producto C', 'Producto D', 'Producto E'],
43
- 'Ventas': [450, 320, 280, 190, 150]
29
+ df = pd.DataFrame({
30
+ "date": dates, "region": regions, "product": products,
31
+ "revenue": revenue_str, "costs": costs.round(2),
32
+ "units": units, "rating": rating, "returned": returned,
44
33
  })
45
-
46
- # Datos para scatter
47
- df_clientes = pd.DataFrame({
48
- 'Edad': [25, 32, 28, 45, 38, 29, 51, 42, 35, 30],
49
- 'Gasto': [120, 200, 150, 300, 250, 180, 400, 320, 220, 160],
50
- 'Segmento': ['Joven', 'Adulto', 'Joven', 'Senior', 'Adulto', 'Joven', 'Senior', 'Adulto', 'Adulto', 'Joven']
51
- })
52
-
53
- # 2. Configurar el dashboard
54
- dashboard = HTML(
55
- title="📊 Dashboard Ejecutivo - Demo",
56
- theme="corporate_blue", # Temas: corporate_blue, dark_enterprise, modern_green, void_indigo, glass_ocean, cyberpunk_neon
57
- cols=12, # Grid de 12 columnas
58
- rows=12, # 12 filas de altura
59
- gap=16,
60
- padding=20,
61
- navbar={
62
- "title": "📈 ViewX PRO",
63
- "items": [
64
- {"label": "Inicio", "link": "#"},
65
- {"label": "Ventas", "link": "#"},
66
- {"label": "Clientes", "link": "#"},
67
- {"label": "Reportes", "link": "#"}
68
- ]
69
- }
34
+ df["revenue"] = pd.to_numeric(
35
+ df["revenue"].str.replace(r"[$,]", "", regex=True), errors="coerce"
70
36
  )
71
37
 
72
- # 3. Añadir componentes (row, col, height, width)
73
- # Fila 1: KPIs
74
- dashboard.add_valuebox("Ventas Totales", "$2.8M", "💰", row=1, col=1, height=2, width=3)
75
- dashboard.add_valuebox("Beneficio Neto", "$942K", "📈", "#00A86B", row=1, col=4, height=2, width=3)
76
- dashboard.add_valuebox("Clientes Activos", "1,247", "👥", "#FF6B35", row=1, col=7, height=2, width=3)
77
- dashboard.add_valuebox("Tasa Conversión", "24.5%", "🎯", "#9B59B6", row=1, col=10, height=2, width=3)
78
-
79
- # Fila 2-5: Gráfico de líneas (ventas mensuales) - Método sencillo con datos
80
- dashboard.add_chart(
81
- data=df_ventas,
82
- chart_type="line",
83
- x="Mes",
84
- y="Ventas",
85
- title="📈 Evolución de Ventas 2024",
86
- row=3, col=1, height=10, width=6
38
+ fig_bar = px.bar(
39
+ df.groupby("region")["revenue"].sum().reset_index().sort_values("revenue"),
40
+ x="revenue", y="region", orientation="h", color="region",
41
+ color_discrete_sequence=["#059669", "#10B981", "#34D399", "#6EE7B7"],
87
42
  )
43
+ fig_bar.update_layout(showlegend=False)
88
44
 
89
- # Fila 2-5: Gráfico de barras (productos) - Otro ejemplo sencillo
90
- dashboard.add_chart(
91
- data=df_productos,
92
- chart_type="bar",
93
- x="Producto",
94
- y="Ventas",
95
- title="🏷️ Ventas por Producto",
96
- row=3, col=7, height=10, width=6
45
+ fig_line = px.line(
46
+ df.groupby("date")["revenue"].sum().reset_index(),
47
+ x="date", y="revenue", color_discrete_sequence=["#059669"],
97
48
  )
98
49
 
99
- # 4. Generar el archivo
100
- dashboard.generate("mi_dashboard.html")
50
+ dash = HTML(
51
+ title="Manual Dashboard", theme="modern_green",
52
+ cols=12, rows=9, gap=14, padding=20,
53
+ navbar={"title": "Manual Dashboard",
54
+ "items": [{"label": "Home", "link": "#"}, {"label": "Analytics", "link": "#"}]},
55
+ authors=[{"name": "Data Team", "email": "data@acme.com"}],
56
+ data_button=True, df=df,
57
+ )
101
58
 
59
+ dash.add_valuebox("Total Revenue", "$2.4M", icon_key="dollar", row=1, col=1, height=2, width=3)
60
+ dash.add_valuebox("Total Units", "18.4K", icon_key="box", row=1, col=4, height=2, width=3)
61
+ dash.add_valuebox("Avg Rating", "4.12", icon_key="award", row=1, col=7, height=2, width=3)
62
+ dash.add_valuebox("Return Rate", "12%", icon_key="percent", row=1, col=10, height=2, width=3)
63
+
64
+ dash.add_infobox(df=df, variable="revenue",
65
+ info=["mean", "median", "std", "min", "max", "kurtosis", "skewness", "nulls"],
66
+ title="Revenue Stats", row=3, col=1, height=4, width=3)
67
+ dash.add_chart(fig=fig_bar, title="Revenue by Region",
68
+ row=3, col=4, height=4, width=9, show_info_btn=True,
69
+ _info_stats={"Regions": "4", "Total": "$2.4M"})
70
+ dash.add_chart(fig=fig_line, title="Daily Revenue Trend",
71
+ row=7, col=1, height=3, width=12, show_info_btn=True)
72
+
73
+ dash.generate("demo6_manual.html")
102
74
  ```
103
75
 
104
76
  ![DashBoardViewX](https://raw.githubusercontent.com/GhostAnalyst30/ViewX/main/images_for_git/DashBoard_Example.png
@@ -9,7 +9,7 @@ except FileNotFoundError:
9
9
 
10
10
  setup(
11
11
  name="viewx",
12
- version="0.2.2",
12
+ version="0.2.4",
13
13
  author="Emmanuel Ascendra Perez",
14
14
  author_email="ascendraemmanuel@gmail.com",
15
15
  description="Librería de visualización adaptable para HTML, Dashboards y PDFs en Python",
@@ -47,8 +47,7 @@ setup(
47
47
  "matplotlib>=3.8.0",
48
48
  "pylatex>=1.4.2", # Para PDFs
49
49
  "seaborn>=0.12.2",
50
- "plotly>=6.0.0",
51
- "streamlit>=1.32.0"
50
+ "plotly>=6.0.0"
52
51
  ],
53
52
 
54
53
  # Dependencias opcionales
@@ -35,6 +35,7 @@ HTML.auto_generate(
35
35
  df,
36
36
  title = "Demo 1 · Auto Layout",
37
37
  filename = "demo1_auto.html",
38
+ show = False,
38
39
  )
39
40
 
40
41
  # ════════════════════════════════════════════════════════════════════════════
@@ -49,7 +50,8 @@ HTML.auto_generate(
49
50
  authors = [
50
51
  {"name": "Ana García", "email": "ana@empresa.com"},
51
52
  {"name": "Luis Torres", "email": "luis@empresa.com"},
52
- ]
53
+ ],
54
+ show = False,
53
55
  )
54
56
 
55
57
  # ════════════════════════════════════════════════════════════════════════════
@@ -63,6 +65,7 @@ HTML.auto_generate(
63
65
  filename = "demo3_kpi_focus.html",
64
66
  layout = "kpi_focus",
65
67
  authors = "Carlos Méndez",
68
+ show = False,
66
69
  )
67
70
 
68
71
  # ════════════════════════════════════════════════════════════════════════════
@@ -75,6 +78,7 @@ HTML.auto_generate(
75
78
  title = "Demo 4 · Chart Focus",
76
79
  filename = "demo4_chart_focus.html",
77
80
  layout = "chart_focus",
81
+ show = False,
78
82
  )
79
83
 
80
84
  # ════════════════════════════════════════════════════════════════════════════
@@ -87,14 +91,11 @@ HTML.auto_generate(
87
91
  title = "Demo 5 · Table First",
88
92
  filename = "demo5_table_first.html",
89
93
  layout = "table_first",
94
+ show = False,
90
95
  )
91
96
 
92
97
  # ════════════════════════════════════════════════════════════════════════════
93
98
  # DEMO 6 — Layout 100% personalizado
94
- # Diseño:
95
- # [KPI ventas] [KPI utilidad] [KPI unidades] | [Chart barras región]
96
- # [Chart línea temporal (ventas) ] | [Chart scatter ]
97
- # [Tabla completa ]
98
99
  # ════════════════════════════════════════════════════════════════════════════
99
100
  HTML.auto_generate(
100
101
  df,
@@ -104,19 +105,15 @@ HTML.auto_generate(
104
105
  filename = "demo6_custom.html",
105
106
  authors = [{"name": "Equipo BI", "email": "bi@empresa.com"}],
106
107
  layout = [
107
- # Fila 1: 3 KPIs a la izquierda + 1 chart a la derecha
108
108
  {"type": "kpi", "index": 0, "row": 1, "col": 1, "height": 2, "width": 3},
109
109
  {"type": "kpi", "index": 1, "row": 1, "col": 4, "height": 2, "width": 3},
110
110
  {"type": "kpi", "index": 2, "row": 1, "col": 7, "height": 2, "width": 3},
111
- {"type": "chart", "index": 1, "row": 1, "col": 10, "height": 7, "width": 3}, # barras región
112
-
113
- # Fila 2: línea temporal grande + scatter
114
- {"type": "chart", "index": 0, "row": 3, "col": 1, "height": 5, "width": 6}, # línea tiempo
115
- {"type": "chart", "index": 2, "row": 3, "col": 7, "height": 5, "width": 3}, # scatter
116
-
117
- # Fila 3: tabla completa
111
+ {"type": "chart", "index": 1, "row": 1, "col": 10, "height": 7, "width": 3},
112
+ {"type": "chart", "index": 0, "row": 3, "col": 1, "height": 5, "width": 6},
113
+ {"type": "chart", "index": 2, "row": 3, "col": 7, "height": 5, "width": 3},
118
114
  {"type": "table", "row": 8, "col": 1, "height": 4, "width": 12},
119
- ]
115
+ ],
116
+ show = False,
120
117
  )
121
118
 
122
119
  # ════════════════════════════════════════════════════════════════════════════
@@ -135,9 +132,10 @@ HTML.auto_generate(
135
132
  template = "corporate_blue",
136
133
  title = "Demo 7 · Parseo Automático de Strings",
137
134
  filename = "demo7_parseo.html",
135
+ show = False,
138
136
  )
139
137
 
140
- print("\n✅ Todos los dashboards generados:")
138
+ print("\nTodos los dashboards generados:")
141
139
  for i, name in enumerate([
142
140
  "demo1_auto.html",
143
141
  "demo2_cols.html",
@@ -147,4 +145,4 @@ for i, name in enumerate([
147
145
  "demo6_custom.html",
148
146
  "demo7_parseo.html",
149
147
  ], 1):
150
- print(f" {i}. {name}")
148
+ print(f" {i}. {name}")
@@ -0,0 +1,15 @@
1
+ """Auto-generated slides from a DataFrame."""
2
+
3
+ from viewx.datasets import load_iris
4
+ from viewx.Slides import Presentation
5
+
6
+ df = load_iris()
7
+
8
+ path = Presentation.auto_generate(
9
+ df,
10
+ title="Iris Dataset Overview",
11
+ theme="ocean",
12
+ filename="output/test8_auto_slides.html",
13
+ show=False,
14
+ )
15
+ print(f"Presentation.auto_generate -> {path}")
@@ -0,0 +1,22 @@
1
+ """Auto-generated PDF quality report from a DataFrame."""
2
+
3
+ import shutil
4
+
5
+ from viewx.datasets import load_iris
6
+ from viewx import Report
7
+
8
+ if not shutil.which("pdflatex"):
9
+ print("SKIP: pdflatex not found — install a LaTeX distribution to run this test.")
10
+ raise SystemExit(0)
11
+
12
+ df = load_iris()
13
+
14
+ path = Report.auto_generate(
15
+ df,
16
+ title="Iris Dataset Quality Report",
17
+ author="ViewX Test",
18
+ filename="test9_auto_report",
19
+ outdir="output",
20
+ include_plots=True,
21
+ )
22
+ print(f"Report.auto_generate -> {path}")
@@ -0,0 +1,30 @@
1
+ from .analyzers import (
2
+ AnalyzerEngine,
3
+ BooleanStrategy,
4
+ CategoricalStrategy,
5
+ ColumnProfile,
6
+ ColumnTypeStrategy,
7
+ DatasetReport,
8
+ DateTimeStrategy,
9
+ NumericStrategy,
10
+ )
11
+ from .bibliometrics import BibliometricsAnalyzer
12
+ from .datamatrix_engine import DataMatrix, ReportTheme
13
+ from .explorer import build_explorer_payload
14
+ from .visualizer import Visualizer
15
+
16
+ __all__ = [
17
+ "DataMatrix",
18
+ "ReportTheme",
19
+ "AnalyzerEngine",
20
+ "Visualizer",
21
+ "BibliometricsAnalyzer",
22
+ "DatasetReport",
23
+ "ColumnProfile",
24
+ "ColumnTypeStrategy",
25
+ "NumericStrategy",
26
+ "CategoricalStrategy",
27
+ "DateTimeStrategy",
28
+ "BooleanStrategy",
29
+ "build_explorer_payload",
30
+ ]