Metadata-Version: 2.4
Name: prismnote
Version: 1.9.0
Summary: Data science notebook with support for 15+ programming languages, SQL execution across 9+ databases, multi-terminal splits, and intelligent code assistance.
Author-email: Georgi Mammen Mullassery <mullassery@gmail.com>
Maintainer-email: Georgi Mammen Mullassery <mullassery@gmail.com>
License: Proprietary
Project-URL: Homepage, https://github.com/Mullassery/prismnote
Project-URL: Repository, https://github.com/Mullassery/prismnote
Project-URL: Documentation, https://github.com/Mullassery/prismnote#readme
Project-URL: Bug Tracker, https://github.com/Mullassery/prismnote/issues
Project-URL: Changelog, https://github.com/Mullassery/prismnote/releases
Project-URL: Source Code, https://github.com/Mullassery/prismnote/tree/main
Project-URL: Discussions, https://github.com/Mullassery/prismnote/discussions
Keywords: jupyter,notebook,data-science,sql-notebook,data-analytics,python-notebook,spark,bigquery,snowflake,redshift,postgres,mysql,cloud-warehouse,ide,code-editor,rust-performance,react-ui,web-app,collaboration,data-exploration,exploratory-analysis,analytics-platform,query-builder,ai-assistant,ml-development
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: System :: Shells
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Office/Business :: News/Diary
Classifier: Environment :: Web Environment
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: ipykernel==6.0
Requires-Dist: jupyter==1.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Provides-Extra: sql
Requires-Dist: duckdb==0.9; extra == "sql"
Requires-Dist: pg8000==1.30; extra == "sql"
Requires-Dist: pymysql==1.0; extra == "sql"
Provides-Extra: postgres
Requires-Dist: pg8000==1.30; extra == "postgres"
Provides-Extra: mysql
Requires-Dist: pymysql==1.0; extra == "mysql"
Provides-Extra: duckdb
Requires-Dist: duckdb==0.9; extra == "duckdb"
Provides-Extra: cloud
Requires-Dist: snowflake-connector-python[pandas]==3.0; extra == "cloud"
Requires-Dist: google-cloud-bigquery==3.0; extra == "cloud"
Requires-Dist: db-dtypes==1.0; extra == "cloud"
Requires-Dist: redshift_connector==2.0; extra == "cloud"
Requires-Dist: databricks-sql-connector==2.0; extra == "cloud"
Requires-Dist: pyathena==3.0; extra == "cloud"
Requires-Dist: trino==0.328; extra == "cloud"
Provides-Extra: ai
Requires-Dist: anthropic==0.7; extra == "ai"
Provides-Extra: openai
Requires-Dist: openai==1.0; extra == "openai"
Provides-Extra: spark
Requires-Dist: pyspark==3.0; extra == "spark"
Requires-Dist: pyarrow==10; extra == "spark"
Dynamic: license-file

# PrismNote

**SQL analytics notebooks that run offline. On your computer. No cloud required.**

Write SQL queries in a notebook that saves locally, switch between 8 warehouses (Snowflake, BigQuery, Redshift, Postgres, MySQL, DuckDB, Spark, ClickHouse) without changing code, and execute everything offline. Built for data scientists and engineers who want control.

[![PyPI](https://img.shields.io/pypi/v/prismnote)](https://pypi.org/project/prismnote)
[![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue)](https://www.python.org)
[![Tests Passing](https://img.shields.io/badge/tests-passing-success)](./tests)
[![License: Proprietary](https://img.shields.io/badge/License-Proprietary-blue.svg)](./LICENSE)

---

## 30-Second Start

```python
from prismnote import Notebook

# Create notebook (saved locally)
nb = Notebook("my_analysis.pnb")

# Connect to any warehouse
nb.connect("snowflake", account="xy12345", warehouse="compute_wh")

# Write SQL directly
result = nb.query("""
    SELECT customer_id, COUNT(*) as purchases
    FROM orders
    GROUP BY customer_id
    ORDER BY purchases DESC
""")

# Results in Python
print(result)
```

---

## Why PrismNote?

**The Problem:**
- Jupyter notebooks for SQL are clunky (no syntax highlighting, no auto-complete)
- Cloud notebooks (Colab, Databricks) lock your data in the cloud
- Switching between databases requires rewriting code
- No offline support (can't work on the plane)

**The Solution:**
- Native SQL notebooks with full IDE features
- Runs completely offline (no data leaves your machine)
- Switch warehouses without changing a line of code
- Version control your analysis (plain text format)

---

## Key Features

- **8 Warehouse Support:** Snowflake, BigQuery, Redshift, Postgres, MySQL, DuckDB, Spark, ClickHouse
- **Local-First:** Notebooks saved on your computer, not the cloud
- **Offline Execution:** Run queries without internet connection (for local databases)
- **SQL + Python:** Mix SQL queries with Python for analysis
- **Auto-Complete:** Full SQL syntax highlighting and warehouse-aware suggestions
- **Result Visualization:** Built-in charts, tables, and statistical summaries
- **Export Ready:** Save results as CSV, Parquet, JSON

---

## Real-World Use Cases

**Data Exploration:**
```python
# Quickly explore a new dataset
nb = Notebook("exploration.pnb")
nb.connect("bigquery", project="my-project")

# Instant feedback, no context switching
nb.query("SELECT * FROM dataset LIMIT 100")
```

**Cross-Warehouse Analysis:**
```python
# Pull from two different databases
results_snowflake = nb.query_snowflake("SELECT * FROM sales")
results_postgres = nb.query_postgres("SELECT * FROM products")

# Combine in Python
merged = pd.merge(results_snowflake, results_postgres, on='id')
```

**Offline Analysis:**
```python
# DuckDB for local, offline data science
nb = Notebook("offline_analysis.pnb")
nb.connect("duckdb", path="local.db")
nb.query("SELECT * FROM my_local_data")  # Works on airplane
```

---

## Warehouse Support Matrix

| Warehouse | Status | Auth | Notes |
|-----------|--------|------|-------|
| Snowflake | ✅ | Username/Key | Full support |
| BigQuery | ✅ | Service Account | Full support |
| Redshift | ✅ | Username/Password | Full support |
| PostgreSQL | ✅ | Connection String | Full support |
| MySQL | ✅ | Connection String | Full support |
| DuckDB | ✅ | Local File | Offline support |
| Apache Spark | ✅ | PySpark Session | Full support |
| ClickHouse | ✅ | Connection String | Full support |

---

## Installation

```bash
pip install prismnote
# or with uv
uv pip install prismnote
```

---

## Documentation

- [Quick Start Guide](docs/QUICKSTART.md) — Get running in 5 minutes
- [Warehouse Guide](docs/WAREHOUSES.md) — Connect to your database
- [SQL Reference](docs/SQL.md) — Warehouse-specific SQL features
- [Examples](examples/) — Real-world notebooks

---

## License

Proprietary License - Free to use with explicit attribution. See [LICENSE](LICENSE).

---

**PrismNote v2.0.0** | Local-first SQL notebooks | Python 3.10+
