pydataui 0.2.1__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 (76) hide show
  1. pydataui-0.2.1/LICENSE +21 -0
  2. pydataui-0.2.1/PKG-INFO +390 -0
  3. pydataui-0.2.1/README.md +345 -0
  4. pydataui-0.2.1/pydataui/__init__.py +49 -0
  5. pydataui-0.2.1/pydataui/api.py +247 -0
  6. pydataui-0.2.1/pydataui/app.py +799 -0
  7. pydataui-0.2.1/pydataui/auth/__init__.py +21 -0
  8. pydataui-0.2.1/pydataui/auth/components.py +191 -0
  9. pydataui-0.2.1/pydataui/auth/decorators.py +61 -0
  10. pydataui-0.2.1/pydataui/auth/manager.py +369 -0
  11. pydataui-0.2.1/pydataui/auth/models.py +44 -0
  12. pydataui-0.2.1/pydataui/auth/state.py +57 -0
  13. pydataui-0.2.1/pydataui/cli/__init__.py +5 -0
  14. pydataui-0.2.1/pydataui/cli/main.py +234 -0
  15. pydataui-0.2.1/pydataui/cli/templates.py +319 -0
  16. pydataui-0.2.1/pydataui/compiler/__init__.py +4 -0
  17. pydataui-0.2.1/pydataui/compiler/renderer.py +48 -0
  18. pydataui-0.2.1/pydataui/compiler/templates.py +459 -0
  19. pydataui-0.2.1/pydataui/components/__init__.py +41 -0
  20. pydataui-0.2.1/pydataui/components/base.py +233 -0
  21. pydataui-0.2.1/pydataui/components/charts.py +141 -0
  22. pydataui-0.2.1/pydataui/components/data_display.py +275 -0
  23. pydataui-0.2.1/pydataui/components/data_science.py +609 -0
  24. pydataui-0.2.1/pydataui/components/feedback.py +172 -0
  25. pydataui-0.2.1/pydataui/components/forms.py +363 -0
  26. pydataui-0.2.1/pydataui/components/html.py +232 -0
  27. pydataui-0.2.1/pydataui/components/layout.py +138 -0
  28. pydataui-0.2.1/pydataui/components/media.py +92 -0
  29. pydataui-0.2.1/pydataui/components/navigation.py +212 -0
  30. pydataui-0.2.1/pydataui/components/overlay.py +205 -0
  31. pydataui-0.2.1/pydataui/components/shadcn.py +588 -0
  32. pydataui-0.2.1/pydataui/components/typography.py +127 -0
  33. pydataui-0.2.1/pydataui/config.py +77 -0
  34. pydataui-0.2.1/pydataui/event.py +77 -0
  35. pydataui-0.2.1/pydataui/exceptions.py +40 -0
  36. pydataui-0.2.1/pydataui/html.py +30 -0
  37. pydataui-0.2.1/pydataui/middleware/__init__.py +1 -0
  38. pydataui-0.2.1/pydataui/middleware/logging.py +43 -0
  39. pydataui-0.2.1/pydataui/middleware/security.py +50 -0
  40. pydataui-0.2.1/pydataui/middleware/session.py +29 -0
  41. pydataui-0.2.1/pydataui/page.py +38 -0
  42. pydataui-0.2.1/pydataui/request.py +12 -0
  43. pydataui-0.2.1/pydataui/session.py +249 -0
  44. pydataui-0.2.1/pydataui/state.py +490 -0
  45. pydataui-0.2.1/pydataui/storage.py +712 -0
  46. pydataui-0.2.1/pydataui/styling/__init__.py +4 -0
  47. pydataui-0.2.1/pydataui/styling/css/pydataui.css +409 -0
  48. pydataui-0.2.1/pydataui/styling/js/htmx.min.js +1 -0
  49. pydataui-0.2.1/pydataui/styling/style.py +92 -0
  50. pydataui-0.2.1/pydataui/styling/theme.py +143 -0
  51. pydataui-0.2.1/pydataui/tunnel.py +168 -0
  52. pydataui-0.2.1/pydataui/types.py +22 -0
  53. pydataui-0.2.1/pydataui/utils.py +68 -0
  54. pydataui-0.2.1/pydataui.egg-info/PKG-INFO +390 -0
  55. pydataui-0.2.1/pydataui.egg-info/SOURCES.txt +74 -0
  56. pydataui-0.2.1/pydataui.egg-info/dependency_links.txt +1 -0
  57. pydataui-0.2.1/pydataui.egg-info/entry_points.txt +2 -0
  58. pydataui-0.2.1/pydataui.egg-info/requires.txt +26 -0
  59. pydataui-0.2.1/pydataui.egg-info/top_level.txt +1 -0
  60. pydataui-0.2.1/pyproject.toml +64 -0
  61. pydataui-0.2.1/setup.cfg +4 -0
  62. pydataui-0.2.1/setup.py +2 -0
  63. pydataui-0.2.1/tests/test_app.py +27 -0
  64. pydataui-0.2.1/tests/test_auth.py +149 -0
  65. pydataui-0.2.1/tests/test_bff_and_events.py +119 -0
  66. pydataui-0.2.1/tests/test_browser_security.py +104 -0
  67. pydataui-0.2.1/tests/test_cli.py +40 -0
  68. pydataui-0.2.1/tests/test_components.py +97 -0
  69. pydataui-0.2.1/tests/test_concurrency_and_cluster.py +236 -0
  70. pydataui-0.2.1/tests/test_customization.py +132 -0
  71. pydataui-0.2.1/tests/test_data_science.py +97 -0
  72. pydataui-0.2.1/tests/test_http_server.py +93 -0
  73. pydataui-0.2.1/tests/test_security_regressions.py +387 -0
  74. pydataui-0.2.1/tests/test_shadcn.py +86 -0
  75. pydataui-0.2.1/tests/test_state.py +34 -0
  76. pydataui-0.2.1/tests/test_storage.py +173 -0
pydataui-0.2.1/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Boopathi Raj
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,390 @@
1
+ Metadata-Version: 2.4
2
+ Name: pydataui
3
+ Version: 0.2.1
4
+ Summary: A full-stack Python framework for data and AI applications.
5
+ Author-email: Boopathi Raj <rajboopathiking@gmail.com>
6
+ License: MIT
7
+ Classifier: Development Status :: 4 - Beta
8
+ Classifier: Intended Audience :: Science/Research
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
11
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
12
+ Classifier: Topic :: Software Development :: Build Tools
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: pyrustapi<2,>=1.8.9
24
+ Requires-Dist: PyJWT<3,>=2.8.0
25
+ Requires-Dist: pydantic<3,>=2.0.0
26
+ Provides-Extra: browser
27
+ Requires-Dist: playwright<2,>=1.49; extra == "browser"
28
+ Provides-Extra: data
29
+ Requires-Dist: pandas>=1.5.0; extra == "data"
30
+ Requires-Dist: plotly>=5.0.0; extra == "data"
31
+ Requires-Dist: pyarrow; extra == "data"
32
+ Provides-Extra: tunnel
33
+ Requires-Dist: pyngrok>=7.0.0; extra == "tunnel"
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
36
+ Requires-Dist: anyio>=4.0.0; extra == "dev"
37
+ Requires-Dist: pandas>=1.5.0; extra == "dev"
38
+ Requires-Dist: plotly>=5.0.0; extra == "dev"
39
+ Provides-Extra: all
40
+ Requires-Dist: pandas>=1.5.0; extra == "all"
41
+ Requires-Dist: plotly>=5.0.0; extra == "all"
42
+ Requires-Dist: pyarrow; extra == "all"
43
+ Requires-Dist: pyngrok>=7.0.0; extra == "all"
44
+ Dynamic: license-file
45
+
46
+ # ⚡ PyDataUI
47
+
48
+ <div align="center">
49
+
50
+ ![Python Version](https://img.shields.io/badge/python-3.9%2B-blue.svg)
51
+ ![License](https://img.shields.io/badge/license-MIT-green.svg)
52
+ ![Rust Core](https://img.shields.io/badge/backend-pyrustapi%20(Rust%2FTokio)-orange.svg)
53
+ ![UI Engine](https://img.shields.io/badge/styling-Tailwind%20CSS%20%2B%20shadcn%2Fui-38bdf8.svg)
54
+ ![Reactivity](https://img.shields.io/badge/reactivity-HTMX-3b82f6.svg)
55
+
56
+
57
+ **A Full-Stack Python Framework for Data and AI Applications.**
58
+ *Data Engineers • Data Analysts • AI/ML Engineers • Python Developers*
59
+
60
+ Write pure Python → get reactive web applications, automatic REST APIs, and a Rust HTTP backend.
61
+ **Zero JavaScript required.**
62
+
63
+ [Quick Start](#-quick-start) • [Why PyDataUI?](#-why-pydataui) • [Components](#-components) • [Authentication](#-authentication--api-keys) • [Port Forwarding](#-port-forwarding-sharetrue) • [Benchmarks](#-performance-benchmarks) • [Documentation](docs/README.md)
64
+
65
+ </div>
66
+
67
+ ---
68
+
69
+ ## 🎯 Built Specifically for Data Roles
70
+
71
+ Build dashboards, dataset explorers, model evaluation interfaces, and data
72
+ workflows using Python UI components and server-side logic.
73
+
74
+ **0.2.1 security source update:** see [the migration guide](docs/MIGRATION_0_2_1.md)
75
+ for protected routes, API permissions, CSRF, and session behavior. This checkout
76
+ has not been published to PyPI by this change.
77
+
78
+ **PyDataUI solves this:**
79
+ - 🐍 **100% Python Code**: Build UI, reactive state, and server logic in clean, typed Python.
80
+ - 🦀 **Rust-Powered HTTP Core (`pyrustapi`)**: Tokio/Hyper HTTP backend; application performance needs workload-specific measurement.
81
+ - 🎨 **Tailwind CSS + shadcn/ui**: Modern, accessible UI design system with built-in dark mode and CSS variables.
82
+ - ⚡ **Reactive SSR via HTMX**: Server re-renders the current page fragment on state mutation — seamless browser updates with no user-authored JavaScript for common interactions.
83
+ - 🔌 **Automatic REST API**: Eligible `State` classes expose OpenAPI documentation and CRUD endpoints at `/api/{State}`.
84
+ - 🔒 **Auth & API Keys**: JWT authentication, role-based access control (RBAC), and `pdu_live_...` API keys for ETL automation.
85
+ - 🌐 **One-Click Sharing (`share=True`)**: Create public internet tunnels for demos and stakeholders instantly, like Gradio.
86
+
87
+ ---
88
+
89
+ ## ⚡ Quick Start
90
+
91
+ ### Installation
92
+
93
+ ```bash
94
+ pip install pydataui
95
+ ```
96
+
97
+ Optional dependencies for data science and port forwarding:
98
+ ```bash
99
+ pip install "pydataui[all]" # includes pandas, plotly, pyngrok, pyarrow
100
+ ```
101
+
102
+ ### 1. Minimal Reactive Counter (30 seconds)
103
+
104
+ ```python
105
+ from pydataui import App, State
106
+ from pydataui.components import Container, Card, Flex, Button, Heading, Divider
107
+
108
+ class CounterState(State):
109
+ count: int = 0
110
+ def increment(self): self.count += 1
111
+ def decrement(self): self.count -= 1
112
+ def reset(self): self.count = 0
113
+
114
+ app = App(title="PyDataUI Counter")
115
+
116
+ @app.page("/")
117
+ def home():
118
+ return Container(
119
+ Card(
120
+ title="Reactive Counter",
121
+ children=[
122
+ Flex(
123
+ Button("-", on_click=CounterState.decrement, variant="danger"),
124
+ Heading(CounterState.count, level=2),
125
+ Button("+", on_click=CounterState.increment, variant="success"),
126
+ align="center", justify="center", gap="lg",
127
+ ),
128
+ Divider(),
129
+ Button("Reset", on_click=CounterState.reset, variant="outline", full_width=True),
130
+ ]
131
+ ),
132
+ max_width="md",
133
+ padding="lg",
134
+ )
135
+
136
+ if __name__ == "__main__":
137
+ app.run()
138
+ ```
139
+
140
+ Run it:
141
+ ```bash
142
+ python app.py
143
+ ```
144
+ - 🌐 **Web UI:** `http://127.0.0.1:8000`
145
+ - 📖 **Swagger UI:** `http://127.0.0.1:8000/docs`
146
+ - 📡 **REST API Catalog:** `http://127.0.0.1:8000/api`
147
+
148
+ ---
149
+
150
+ ## 🤖 Machine Learning Dashboard Example
151
+
152
+ PyDataUI includes native components for model evaluation:
153
+
154
+ ```python
155
+ from pydataui import App
156
+ from pydataui.components import Container, Heading, Grid
157
+ from pydataui.components.data_science import ModelMetrics, ConfusionMatrix, FeatureImportance
158
+
159
+ app = App(title="Fraud Detection Model v3")
160
+
161
+ @app.page("/")
162
+ def dashboard():
163
+ return Container(
164
+ Heading("Production XGBoost Model Evaluation", level=1, margin_bottom="lg"),
165
+ ModelMetrics(
166
+ metrics={
167
+ "Accuracy": 0.9642,
168
+ "Precision": 0.9410,
169
+ "Recall": 0.9780,
170
+ "ROC-AUC": 0.9891
171
+ }
172
+ ),
173
+ Grid(
174
+ ConfusionMatrix(
175
+ matrix=[[1450, 42], [28, 1380]],
176
+ labels=["Legitimate", "Fraud"]
177
+ ),
178
+ FeatureImportance(
179
+ features={
180
+ "velocity_1h": 0.34,
181
+ "avg_amount_ratio": 0.28,
182
+ "device_fingerprint_entropy": 0.18,
183
+ "geo_distance_anomaly": 0.12,
184
+ "is_international": 0.08
185
+ },
186
+ title="Top Predictive Features"
187
+ ),
188
+ columns=2, gap="lg", margin_top="lg"
189
+ ),
190
+ padding="lg"
191
+ )
192
+
193
+ if __name__ == "__main__":
194
+ app.run()
195
+ ```
196
+
197
+ ---
198
+
199
+ ## 🔒 Authentication, Roles & API Keys
200
+
201
+ Secure your application for enterprise data workflows:
202
+
203
+ ```python
204
+ from pydataui import App
205
+ from pydataui.components import Container, Heading, Flex
206
+ from pydataui.auth import (
207
+ AuthManager, LoginPage, UserMenu, APIKeyManager,
208
+ require_auth, require_role, Role, current_user
209
+ )
210
+
211
+ app = App(title="Secure Analytics Portal")
212
+ auth = AuthManager() # Configure PYDATAUI_AUTH_SECRET for deployment
213
+
214
+ # Register users with roles
215
+ admin = auth.add_user("lead_eng", "password123", roles=[Role.ADMIN, Role.DATA_ENGINEER])
216
+ analyst = auth.add_user("analyst_jane", "password456", roles=[Role.DATA_ANALYST])
217
+
218
+ # Wire up auth routes (/api/auth/login, /api/auth/me, /api/auth/keys)
219
+ app.setup_auth(auth)
220
+
221
+ @app.page("/login")
222
+ def login_route():
223
+ return LoginPage(title="Analytics Portal", subtitle="Sign in with your corporate credentials")
224
+
225
+ @app.page("/")
226
+ def dashboard():
227
+ user = current_user.get()
228
+ return Container(
229
+ Flex(
230
+ Heading("Data Warehouse Control Center", level=1),
231
+ UserMenu(user),
232
+ justify="space-between", align="center"
233
+ ),
234
+ APIKeyManager(keys=auth.list_api_keys(user.id) if user else []),
235
+ padding="lg"
236
+ )
237
+
238
+ # Protected API endpoint with API key requirement
239
+ @app.api("/data/export", method="GET")
240
+ def export_data(request):
241
+ user = auth.require_auth_middleware(request)
242
+ if not user:
243
+ return {"error": "Unauthorized"}
244
+ return {"status": "ok", "records": 100000}
245
+
246
+ if __name__ == "__main__":
247
+ app.run()
248
+ ```
249
+
250
+ ### Automated API Key Authentication (ETL & Airflow)
251
+ Automate ingestion pipelines by passing the generated key:
252
+ ```bash
253
+ curl -H "Authorization: Bearer pdu_live_819dd41a93870327fdc57311d0080755" \
254
+ http://localhost:8000/data/export
255
+ ```
256
+
257
+ ---
258
+
259
+ ## 🌐 Port Forwarding (`share=True`)
260
+
261
+ Share your application with remote stakeholders, clients, or team members with a single flag:
262
+
263
+ ```python
264
+ # In your Python code:
265
+ app.run(share=True)
266
+ ```
267
+ Or via CLI:
268
+ ```bash
269
+ pydataui run app.py --share
270
+ ```
271
+ Output:
272
+ ```
273
+ PyDataUI v0.2.0
274
+ Running on http://127.0.0.1:8000
275
+ Public URL: https://abc123.ngrok.app
276
+ API docs at http://127.0.0.1:8000/docs
277
+ REST API root at http://127.0.0.1:8000/api
278
+ ```
279
+
280
+ ---
281
+
282
+ ## 📊 Performance
283
+
284
+ The backend uses pyrustapi. This repository does not yet contain a reproducible
285
+ benchmark suite establishing throughput, P99 latency, or memory superiority over
286
+ other frameworks. Evaluate equivalent real applications on the same hardware;
287
+ HTTP hello-world throughput does not establish data-application performance.
288
+
289
+ ---
290
+
291
+ ## 🧩 Comprehensive Component Library (80+ Components)
292
+
293
+ PyDataUI includes modern Tailwind and shadcn/ui components:
294
+
295
+ ### 🔬 Data & Machine Learning
296
+ - `DataFrameTable`: Interactive table with automatic pandas integration
297
+ - `PlotlyChart`: Native Plotly figure embedding
298
+ - `MetricCard`: KPI card with delta percentage and trend indicators
299
+ - `ModelMetrics`: Evaluation grid (Accuracy, Precision, Recall, AUC, F1)
300
+ - `ConfusionMatrix`: Heat-mapped confusion matrix
301
+ - `FeatureImportance`: Horizontal bar chart for predictive features
302
+ - `PipelineStatus`: Step-by-step DAG execution tracker
303
+ - `DataTimeline`: Run history and audit event timeline
304
+ - `SchemaViewer`: Inspect table schemas, dtypes, nulls, and uniques
305
+ - `SQLEditor`: SQL query editor with inline Run button
306
+ - `JSONViewer`: Pretty-printed, collapsible JSON display
307
+ - `FileDownload`: In-browser data export to CSV/JSON
308
+
309
+ ### 🎨 shadcn/ui Styled Components
310
+ - `ShadButton`, `ShadCard`, `ShadBadge`, `ShadAlert`, `ShadSeparator`
311
+ - `ShadProgress`, `ShadSkeleton`, `ShadSwitch`, `ShadTable`, `ShadSelect`
312
+ - `ShadTextarea`, `ShadLabel`, `ShadDialog` (Modal), `ShadScrollArea`
313
+ - `ShadTabs`, `ShadToast`, `ShadAvatar`, `ShadHoverCard`, `ShadAccordion`, `ShadSheet` (Drawer)
314
+
315
+ ### 📐 Classic Layout & Forms
316
+ - `Container`, `Flex`, `Grid`, `Stack`, `HStack`, `VStack`, `Box`, `Center`, `Divider`
317
+ - `Heading`, `Text`, `Paragraph`, `Link`, `Code`, `Blockquote`
318
+ - `Button`, `Input`, `TextArea`, `Select`, `Checkbox`, `Radio`, `Switch`, `Slider`, `FileUpload`
319
+ - `Table`, `DataTable`, `Badge`, `Stat`, `Progress`, `Spinner`, `Modal`, `Drawer`
320
+ - `BarChart`, `LineChart`, `PieChart`, `DoughnutChart`, `Sparkline`
321
+
322
+ ---
323
+
324
+ ### 💼 Commercial SaaS Application Example
325
+
326
+ Experience an enterprise-grade AI gateway and subscription billing platform built entirely with PyDataUI:
327
+
328
+ ```bash
329
+ python examples/commercial_saas_app.py
330
+ ```
331
+
332
+ * **Executive Observability**: Live KPI cards (MRR, Token Volume, P99 Latency), time-window filters (`24h`, `7d`, `30d`), and pipeline step tracking.
333
+ * **Model Observatory**: Multi-model routing matrix (Claude 3.5 Sonnet, GPT-4o, Gemini 1.5 Pro, Llama 3 70B) with pricing and quality benchmarks.
334
+ * **Tiered Subscription Billing**: Interactive plan cards (Starter, Growth, Enterprise Scale) with usage quota progress and automated invoice history.
335
+ * **API Key Gateway**: Provision scoped production tokens (`pdu_live_...`) for automated pipelines.
336
+ * **Production Persistence**: Backed by SQLite WAL cross-process storage supporting multi-worker execution out of the box.
337
+
338
+ ## 🛠️ Powerful CLI
339
+
340
+ Create, run, and containerize PyDataUI projects with zero boilerplate:
341
+
342
+ ```bash
343
+ # 1. Create a project from starter templates
344
+ pydataui new analytics_hub --template dashboard
345
+ # Available templates: basic, dashboard, crud, ml-dashboard, data-pipeline, auth
346
+
347
+ # 2. Run local development with hot reload
348
+ pydataui dev app.py --port 8000 --reload
349
+
350
+ # 3. Run production server with public tunnel
351
+ pydataui run app.py --workers 1 --share
352
+
353
+ # 4. Check syntax and route definitions
354
+ pydataui check app.py
355
+
356
+ # 5. Generate secure API key for scripts
357
+ pydataui generate key --name "AirflowSync"
358
+
359
+ # 6. One-command containerization build
360
+ pydataui build app.py --output dist/
361
+ # Generates Dockerfile, docker-compose.yml, bundled static assets, and app.py
362
+ ```
363
+
364
+ ---
365
+
366
+ ## 📚 In-Depth Guides
367
+
368
+ - 📘 [Full Documentation](docs/README.md)
369
+ - 🎨 [UI Customization Guide (Tailwind, shadcn & HTML)](docs/CUSTOMIZATION.md)
370
+ - 🛠️ [Troubleshooting & Architecture Guide](docs/TROUBLESHOOTING.md)
371
+ - 🔒 [Authentication & Security Guide](docs/AUTHENTICATION.md)
372
+ - 📊 [Data Science & Engineering Components](docs/DATA_COMPONENTS.md)
373
+ - 📖 [Complete API Reference](docs/API_REFERENCE.md)
374
+ - 🚀 [Production & Cloud Deployment](docs/DEPLOYMENT.md)
375
+ - 🛡️ [Production Readiness Assessment](docs/PRODUCTION_READINESS.md)
376
+ - ⚡ [Quick Reference Card](docs/QUICKREF.md)
377
+
378
+ ---
379
+
380
+ ## 🤝 Contributing
381
+
382
+ We welcome contributions from the data science, AI/ML, and Python web development communities!
383
+ Please see our [CONTRIBUTING.md](CONTRIBUTING.md) for local environment setup, testing, and pull request guidelines.
384
+
385
+ ---
386
+
387
+ ## 📄 License
388
+
389
+ PyDataUI is licensed under the [MIT License](LICENSE).
390
+ Copyright (c) 2024 Boopathi Raj.