prismnote 0.3.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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Georgi Mammen Mullassery
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,543 @@
1
+ Metadata-Version: 2.4
2
+ Name: prismnote
3
+ Version: 0.3.1
4
+ Summary: Modern, open-source Jupyter-compatible data science notebook with Rust performance
5
+ Author-email: Georgi Mammen Mullassery <mullassery@gmail.com>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/Mullassery/prismnote
8
+ Project-URL: Repository, https://github.com/Mullassery/prismnote
9
+ Project-URL: Documentation, https://github.com/Mullassery/prismnote#readme
10
+ Project-URL: Bug Tracker, https://github.com/Mullassery/prismnote/issues
11
+ Keywords: notebook,jupyter,data-science,sql,python,rust
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.8
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Topic :: Scientific/Engineering
23
+ Classifier: Topic :: Software Development :: Libraries
24
+ Classifier: Environment :: Web Environment
25
+ Requires-Python: >=3.8
26
+ Description-Content-Type: text/markdown
27
+ License-File: LICENSE
28
+ Requires-Dist: ipykernel>=6.0
29
+ Requires-Dist: jupyter>=1.0
30
+ Provides-Extra: sql
31
+ Requires-Dist: psycopg2-binary>=2.9; extra == "sql"
32
+ Requires-Dist: pymysql>=1.0; extra == "sql"
33
+ Provides-Extra: postgres
34
+ Requires-Dist: psycopg2-binary>=2.9; extra == "postgres"
35
+ Provides-Extra: mysql
36
+ Requires-Dist: pymysql>=1.0; extra == "mysql"
37
+ Provides-Extra: cloud
38
+ Requires-Dist: snowflake-connector-python>=3.0; extra == "cloud"
39
+ Requires-Dist: google-cloud-bigquery>=3.0; extra == "cloud"
40
+ Requires-Dist: amazon-redshift-python-driver>=1.0; extra == "cloud"
41
+ Requires-Dist: databricks-sql-connector>=1.0; extra == "cloud"
42
+ Provides-Extra: ai
43
+ Requires-Dist: anthropic>=0.7; extra == "ai"
44
+ Provides-Extra: openai
45
+ Requires-Dist: openai>=1.0; extra == "openai"
46
+ Provides-Extra: spark
47
+ Requires-Dist: pyspark>=3.0; extra == "spark"
48
+ Requires-Dist: pyarrow>=10; extra == "spark"
49
+ Provides-Extra: dev
50
+ Requires-Dist: pytest>=7.0; extra == "dev"
51
+ Requires-Dist: black>=22.0; extra == "dev"
52
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
53
+ Dynamic: license-file
54
+
55
+ # PrismNote v0.3
56
+
57
+ **Modern, open-source Jupyter-compatible notebook platform with Python code execution, SQL support, and cloud warehouse integration.**
58
+
59
+ **License:** MIT | **Status:** Beta (v0.3) | **Latest:** 2026-06-20
60
+
61
+ ---
62
+
63
+ ## What is PrismNote?
64
+
65
+ PrismNote is a modern alternative to Jupyter with a focus on **simplicity, speed, and reproducibility**. Write Python code, execute SQL queries, and manage data workflows all in one beautiful, responsive notebook.
66
+
67
+ **Best for:**
68
+ - Data scientists and analysts who want a modern Jupyter replacement
69
+ - Teams building SQL-based data workflows
70
+ - Users who need Python notebooks with better UX
71
+ - Projects requiring dark mode and keyboard-driven workflows
72
+
73
+ ---
74
+
75
+ ## What Works Right Now (v0.3)
76
+
77
+ ### ✓ Core Notebook Features
78
+ - **Python code cells** with Jupyter kernel (ipykernel required)
79
+ - **Markdown cells** with syntax highlighting
80
+ - **Cell execution** with Shift+Enter (run) or Ctrl+Enter (run and stay)
81
+ - **Dark/Light theme** with smooth switching
82
+ - **Modern, responsive UI** (WCAG 2.1 AA accessible)
83
+ - **Auto-save** (5-second interval)
84
+ - **Mobile-friendly** design for tablets
85
+ - **.ipynb format** (100% Jupyter compatible)
86
+
87
+ ### ✓ Code Execution
88
+ - Python 3.8+ with full library support
89
+ - Real-time code output (text, HTML, images, tables)
90
+ - Rich output rendering (pandas DataFrames, matplotlib, plotly)
91
+ - Execution history tracking
92
+ - Cell execution statistics
93
+
94
+ ### ✓ SQL & Data Features
95
+ - **SQL cells** with `--sql` marker support
96
+ - PostgreSQL and MySQL connections
97
+ - Basic query results as tables
98
+ - Simple query optimization suggestions
99
+
100
+ ### ✓ Search & Discovery
101
+ - **Global search (Cmd+K)** across all notebooks and cells (NEW - v0.3)
102
+ - 8 search categories: notebooks, files, tables, variables, history, comments, chat, connections
103
+ - Real-time fuzzy matching with relevance scoring
104
+ - Keyboard navigation (arrow keys, Enter to select)
105
+
106
+ ### ✓ Cloud Data Warehouse Foundation
107
+ - **API framework** for 8 cloud platforms (Snowflake, BigQuery, Redshift, Azure Synapse, Databricks, Athena, Presto, Trino)
108
+ - Connection management interface
109
+ - Test connection endpoints
110
+ - *Note: Full integration requires additional setup; see [CLOUD_WAREHOUSES.md](CLOUD_WAREHOUSES.md)*
111
+
112
+ ### ✓ AI Code Assistance
113
+ - **Code explanation** via Claude API
114
+ - **Error fixing** suggestions
115
+ - **Code completion** with context awareness
116
+ - Optional (requires ANTHROPIC_API_KEY)
117
+
118
+ ### ✓ Theme & Customization
119
+ - Dark mode enabled by default
120
+ - Light mode available
121
+ - Design system with 30+ CSS variables
122
+ - Responsive typography (10-20px font sizes)
123
+ - Cross-platform font support
124
+
125
+ ---
126
+
127
+ ## What Doesn't Work Yet (Planned for v0.4+)
128
+
129
+ **These features have framework code but are not yet integrated:**
130
+
131
+ - ❌ Real-time collaborative editing
132
+ - ❌ File upload/download UI (framework exists, not integrated)
133
+ - ❌ Cloud storage browser (S3, GCS, Azure)
134
+ - ❌ Enterprise authentication (AAD, LDAP, SAML) - framework only
135
+ - ❌ RBAC enforcement - framework exists, not enforced
136
+ - ❌ Audit logging - framework exists, not logging events
137
+ - ❌ Variable inspector - UI component exists, not tracking variables
138
+ - ❌ Notebook versioning - module exists, not integrated
139
+ - ❌ Docker code execution - framework only
140
+ - ❌ Spark session management - module exists, not tested
141
+ - ❌ Scheduling/cron jobs - framework only
142
+
143
+ **These are coming in v0.4-v1.0.**
144
+
145
+ ---
146
+
147
+ ## Quick Start (5 Minutes)
148
+
149
+ ### Requirements
150
+ - Python 3.8+
151
+ - ipykernel: `pip install ipykernel`
152
+ - macOS, Linux, or Windows (WSL2)
153
+
154
+ ### Installation
155
+
156
+ **Build from Source (Only method in v0.3):**
157
+ ```bash
158
+ git clone https://github.com/Mullassery/prismnote.git
159
+ cd prismnote
160
+
161
+ # Build Rust backend
162
+ cargo build --release
163
+
164
+ # Build React frontend
165
+ cd frontend
166
+ npm install
167
+ npm run build
168
+
169
+ # Start
170
+ cargo run --release
171
+ ```
172
+
173
+ **Access:** http://localhost:8000
174
+
175
+ *Note: Pre-built packages (pip, brew, Docker) coming in v0.5*
176
+
177
+ ### Create Your First Notebook
178
+
179
+ 1. Open http://localhost:8000
180
+ 2. Click "Create Notebook"
181
+ 3. Enter code in the first cell:
182
+ ```python
183
+ import pandas as pd
184
+
185
+ data = pd.DataFrame({
186
+ 'name': ['Alice', 'Bob', 'Charlie'],
187
+ 'age': [25, 30, 35]
188
+ })
189
+
190
+ print(data)
191
+ ```
192
+ 4. Press **Shift+Enter** to execute
193
+ 5. See output below the cell
194
+
195
+ ### Global Search (New in v0.3)
196
+
197
+ Press **Cmd+K** (Mac) or **Ctrl+K** (Windows/Linux) to:
198
+ - Search across all notebooks
199
+ - Search cell contents
200
+ - Filter by category
201
+ - Get instant results
202
+
203
+ ---
204
+
205
+ ## Features in Detail
206
+
207
+ ### Global Search (Cmd+K)
208
+ - 8 searchable categories
209
+ - Real-time fuzzy matching
210
+ - Keyboard navigation (↑↓ arrows, Enter to select, Esc to close)
211
+ - Execution time < 100ms
212
+ - Dark mode support
213
+
214
+ ### SQL Cells
215
+ Mark cells with `--sql` to execute SQL queries:
216
+ ```sql
217
+ --sql
218
+ SELECT COUNT(*) as users FROM database_table
219
+ ```
220
+
221
+ ### AI Assistance (Requires ANTHROPIC_API_KEY)
222
+ ```bash
223
+ export ANTHROPIC_API_KEY=sk-your-key-here
224
+ ```
225
+
226
+ Then in the UI:
227
+ - Select code
228
+ - Use AI explain/fix buttons
229
+ - Get suggestions from Claude
230
+
231
+ ### Dark Mode
232
+ Enabled by default. Toggle in theme selector (top right).
233
+
234
+ ### Responsive Design
235
+ Works on:
236
+ - Desktop (1920px+)
237
+ - Laptop (1366px-1920px)
238
+ - Tablet (768px-1024px)
239
+ - Mobile (< 768px)
240
+
241
+ ---
242
+
243
+ ## API Reference
244
+
245
+ **Available in v0.3:**
246
+
247
+ ### Notebooks
248
+ ```
249
+ GET /api/notebooks List all notebooks
250
+ POST /api/notebooks Create notebook
251
+ GET /api/notebooks/:id Get notebook
252
+ PUT /api/notebooks/:id Update notebook
253
+ DELETE /api/notebooks/:id Delete notebook
254
+ POST /api/notebooks/:id/execute Execute cell
255
+ ```
256
+
257
+ ### Search
258
+ ```
259
+ POST /api/search Global search across notebooks
260
+ ```
261
+
262
+ ### SQL
263
+ ```
264
+ POST /api/sql/execute Execute SQL query
265
+ POST /api/sql/optimize Get optimization suggestions
266
+ ```
267
+
268
+ ### AI Features
269
+ ```
270
+ POST /api/ai/explain Explain code
271
+ POST /api/ai/fix Fix error
272
+ POST /api/ai/complete Complete code
273
+ ```
274
+
275
+ ### Display Settings
276
+ ```
277
+ GET /api/settings/display Get display settings
278
+ PUT /api/settings/display Update settings
279
+ ```
280
+
281
+ **Coming in v0.4+:** Collaboration, file upload, cloud storage, GitHub sync, and more.
282
+
283
+ ---
284
+
285
+ ## Configuration
286
+
287
+ ### Environment Variables
288
+
289
+ **Core:**
290
+ ```bash
291
+ PRISMNOTE_DIR=~/.prismnote # Notebook storage location
292
+ PRISMNOTE_PORT=8000 # Server port
293
+ RUST_LOG=info # Log level
294
+ ```
295
+
296
+ **AI Features (Optional):**
297
+ ```bash
298
+ ANTHROPIC_API_KEY=sk-your-key # Enable Claude AI assistance
299
+ ```
300
+
301
+ **Cloud Warehouses (Coming in v0.4):**
302
+ ```bash
303
+ PRISMNOTE_SNOWFLAKE_ACCOUNT=your-account
304
+ PRISMNOTE_BIGQUERY_PROJECT=your-project
305
+ # ... more in CLOUD_WAREHOUSES.md
306
+ ```
307
+
308
+ ### User Settings
309
+ ~/.prismnote/config.json:
310
+ ```json
311
+ {
312
+ "theme": "dark",
313
+ "auto_save_interval_seconds": 5,
314
+ "cell_timeout_seconds": 30,
315
+ "font_family": "Roboto Mono",
316
+ "font_size": 14
317
+ }
318
+ ```
319
+
320
+ ---
321
+
322
+ ## Keyboard Shortcuts
323
+
324
+ ### Navigation
325
+ - **Shift+Enter** - Execute cell
326
+ - **Ctrl+Enter** - Execute cell (in-place, don't move)
327
+ - **Cmd+K / Ctrl+K** - Open global search
328
+ - **Escape** - Close search / dialogs
329
+
330
+ ### Editing
331
+ - **Cmd+/ / Ctrl+/** - Toggle comment
332
+ - **Tab** - Indent
333
+ - **Shift+Tab** - Unindent
334
+
335
+ ### Notebook
336
+ - **A** - Insert cell above (coming v0.4)
337
+ - **B** - Insert cell below (coming v0.4)
338
+ - **D, D** - Delete cell (coming v0.4)
339
+
340
+ ---
341
+
342
+ ## Architecture
343
+
344
+ ```
345
+ Browser (React 18 + TypeScript)
346
+ ↓ REST API + WebSocket
347
+ Rust Backend (Axum + Tokio)
348
+ ├── Cell Executor
349
+ ├── Notebook Manager
350
+ ├── Search Engine
351
+ ├── SQL Executor
352
+ └── AI Integration
353
+
354
+ Jupyter Kernel (ipykernel)
355
+
356
+ Python Runtime
357
+ ```
358
+
359
+ ### Development
360
+
361
+ **Terminal 1 - Rust Backend:**
362
+ ```bash
363
+ cargo watch -x 'run --release'
364
+ ```
365
+
366
+ **Terminal 2 - React Frontend:**
367
+ ```bash
368
+ cd frontend
369
+ npm run dev
370
+ ```
371
+
372
+ **Browser:** http://localhost:5173
373
+
374
+ ---
375
+
376
+ ## Known Limitations (v0.3)
377
+
378
+ 1. **Single-user only** - Real-time collaboration coming in v0.4
379
+ 2. **Local storage only** - Cloud storage mounting coming in v0.4
380
+ 3. **Basic SQL support** - PostgreSQL and MySQL only
381
+ 4. **No enterprise auth** - Framework exists, will be implemented in v0.4
382
+ 5. **No Spark integration yet** - Framework exists, needs testing
383
+ 6. **Output size limit** - 10MB per cell (prevents memory issues)
384
+ 7. **No notebook branching** - Version tracking framework exists, not implemented
385
+ 8. **No scheduled execution** - Framework exists, not integrated
386
+
387
+ **Full roadmap:** See [ROADMAP](#roadmap)
388
+
389
+ ---
390
+
391
+ ## Troubleshooting
392
+
393
+ ### "Module 'ipykernel' not found"
394
+ ```bash
395
+ pip install ipykernel
396
+ # Restart PrismNote
397
+ ```
398
+
399
+ ### "Port 8000 already in use"
400
+ ```bash
401
+ PRISMNOTE_PORT=9000 cargo run --release
402
+ ```
403
+
404
+ ### Notebooks not saving
405
+ ```bash
406
+ mkdir -p ~/.prismnote/notebooks
407
+ chmod 755 ~/.prismnote
408
+ ```
409
+
410
+ ### Slow execution
411
+ - Use smaller notebooks (< 100 cells)
412
+ - Disable auto-save if not needed: `"auto_save_interval_seconds": 0`
413
+ - Check disk space: `df ~/.prismnote`
414
+
415
+ ### Global search returns no results
416
+ - Check search is enabled (it is by default)
417
+ - Try broader search terms
418
+ - Notebook must be saved before appearing in search
419
+
420
+ ---
421
+
422
+ ## Roadmap
423
+
424
+ ### v0.3 ✓ (Current)
425
+ - [x] Python code cells with Jupyter kernel
426
+ - [x] Markdown cells
427
+ - [x] Dark/light theme
428
+ - [x] Modern UI (WCAG 2.1 AA)
429
+ - [x] Global search (Cmd+K)
430
+ - [x] SQL cells (PostgreSQL, MySQL)
431
+ - [x] AI code assistance (Claude API)
432
+ - [x] Responsive design (mobile-friendly)
433
+
434
+ ### v0.4 (August 2026 - Planned)
435
+ - [ ] Real-time collaborative editing
436
+ - [ ] File upload/download UI
437
+ - [ ] Cloud storage browser (S3, GCS, Azure)
438
+ - [ ] Variable inspector
439
+ - [ ] Notebook versioning
440
+ - [ ] Spark session management
441
+ - [ ] Enterprise authentication framework
442
+
443
+ ### v0.5 (November 2026 - Planned)
444
+ - [ ] GitHub notebook sync
445
+ - [ ] Pre-built packages (pip, brew, Docker)
446
+ - [ ] Display settings UI
447
+ - [ ] Extended keyboard shortcuts
448
+ - [ ] Plugin system foundation
449
+
450
+ ### v1.0 (Q1 2027 - Planned)
451
+ - [ ] Kubernetes deployment
452
+ - [ ] dbt integration
453
+ - [ ] Airflow support
454
+ - [ ] Enterprise audit logging (enforced)
455
+ - [ ] Multi-tenant support with RBAC enforcement
456
+
457
+ ---
458
+
459
+ ## System Requirements
460
+
461
+ **Minimum:**
462
+ - Python 3.8+
463
+ - 2GB RAM
464
+ - 500MB disk space
465
+ - Modern web browser
466
+
467
+ **Recommended:**
468
+ - Python 3.10+
469
+ - 4GB+ RAM
470
+ - 2GB disk space for notebooks
471
+ - Chrome, Firefox, Safari, or Edge (latest version)
472
+
473
+ **For SQL features:**
474
+ - PostgreSQL 10+ OR MySQL 5.7+ (optional)
475
+
476
+ **For AI assistance:**
477
+ - Active Anthropic API key with credit balance
478
+
479
+ ---
480
+
481
+ ## Contributing
482
+
483
+ We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for:
484
+ - How to report bugs
485
+ - How to submit feature requests
486
+ - How to set up development environment
487
+ - Code style guidelines
488
+
489
+ ---
490
+
491
+ ## Support
492
+
493
+ **Free Community Support:**
494
+ - 🐛 Report bugs on [GitHub Issues](https://github.com/Mullassery/prismnote/issues)
495
+ - 💬 Ask questions on [GitHub Discussions](https://github.com/Mullassery/prismnote/discussions)
496
+ - 📚 Check [documentation files](./docs/)
497
+
498
+ **Commercial Support:**
499
+ - Coming soon (contact: support@prismnote.dev)
500
+
501
+ ---
502
+
503
+ ## License & Attribution
504
+
505
+ **License:** MIT (free for personal, commercial, and educational use)
506
+
507
+ **Built with:**
508
+ - Rust (Axum, Tokio, Serde)
509
+ - React 18 (TypeScript, Vite)
510
+ - Python (Jupyter kernel protocol)
511
+
512
+ **Thanks to:**
513
+ - Jupyter project for the notebook format and kernel protocol
514
+ - Open-source Rust and JavaScript communities
515
+ - All contributors and users!
516
+
517
+ ---
518
+
519
+ ## Project Status
520
+
521
+ - **Latest Release:** v0.3 (2026-06-20)
522
+ - **Phase:** Beta
523
+ - **Actively Maintained:** Yes
524
+ - **Production Ready:** For single-user data science workflows (v1.0 for enterprises)
525
+
526
+ ---
527
+
528
+ **Made with Rust + React | Open Source | MIT Licensed**
529
+
530
+ ⭐ **If you find PrismNote useful, please star us on [GitHub](https://github.com/Mullassery/prismnote)!**
531
+
532
+ ---
533
+
534
+ ## Quick Links
535
+
536
+ - [GitHub Repository](https://github.com/Mullassery/prismnote)
537
+ - [GitHub Issues](https://github.com/Mullassery/prismnote/issues)
538
+ - [GitHub Discussions](https://github.com/Mullassery/prismnote/discussions)
539
+ - [Contributing Guide](CONTRIBUTING.md)
540
+
541
+ ---
542
+
543
+ **Questions?** Open an issue on GitHub or start a discussion. We're here to help!