Metadata-Version: 2.4
Name: deepnote-toolkit
Version: 1.1.2
Summary: Essential Python toolkit for Deepnote environments
License: Apache-2.0
License-File: LICENSE
Keywords: deepnote,jupyter,notebooks,data-science,analytics,sql,visualization,streamlit
Author: Deepnote Engineering
Author-email: developers@deepnote.com
Maintainer: Deepnote Engineering
Maintainer-email: developers@deepnote.com
Requires-Python: >=3.9.0,<3.14,!=3.9.7
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Programming Language :: Python :: 3
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: Operating System :: OS Independent
Classifier: Environment :: Console
Classifier: Framework :: Jupyter
Provides-Extra: server
Requires-Dist: clickhouse-sqlalchemy (>0,<0.4)
Requires-Dist: cryptography (>=43.0.1,<44) ; python_version == "3.9"
Requires-Dist: cryptography (>=44.0.1,<45) ; python_version >= "3.10"
Requires-Dist: db-dtypes (>=1.2.0,<1.4)
Requires-Dist: deepnote-python-lsp-server (==1.13.1rc2) ; extra == "server"
Requires-Dist: deepnote-sqlalchemy-redshift (==0.8.17)
Requires-Dist: deepnote-vegafusion (>=2.0.8,<3)
Requires-Dist: dill (>=0.3.8,<=0.4) ; python_version <= "3.12"
Requires-Dist: dill (>=0.3.9,<=0.4) ; python_version >= "3.13"
Requires-Dist: dnspython (>=2.6.1,<2.7) ; python_version < "3.13"
Requires-Dist: dnspython (>=2.7.0,<3.0) ; python_version >= "3.13"
Requires-Dist: duckdb (>=1.1.0,<2.0.0) ; python_version < "3.12"
Requires-Dist: duckdb (>=1.1.0,<2.0.0) ; python_version >= "3.12"
Requires-Dist: duckdb (>=1.4.1,<2.0.0) ; python_version >= "3.13"
Requires-Dist: google-cloud-bigquery-storage (==2.16.2) ; python_version < "3.13"
Requires-Dist: google-cloud-bigquery-storage (>=2.33.1,<3) ; python_version >= "3.13"
Requires-Dist: greenlet (>=3.1.0) ; python_version >= "3.13"
Requires-Dist: grpcio (>=1.66.2) ; python_version >= "3.13"
Requires-Dist: ipykernel (>6.30.0)
Requires-Dist: jinja2 (>=3.1.6,<4)
Requires-Dist: jupyter-core (>=5.8.1,<6)
Requires-Dist: jupyter-resource-usage (>=1.1.0,<2.0.0) ; extra == "server"
Requires-Dist: jupyter-server (==2.17.0) ; extra == "server"
Requires-Dist: jupyter-server-terminals (==0.5.3) ; extra == "server"
Requires-Dist: nbformat (>=5.10.4,<6)
Requires-Dist: numpy (>=1.21,<2) ; python_version == "3.9"
Requires-Dist: numpy (>=1.23,<2) ; python_version == "3.10"
Requires-Dist: numpy (>=1.24,<2) ; python_version == "3.11"
Requires-Dist: numpy (>=1.26.0,<2) ; python_version == "3.12"
Requires-Dist: numpy (>=2.1.0,<3) ; python_version >= "3.13"
Requires-Dist: pandas (>=1.2.5,<2.2) ; python_version < "3.12"
Requires-Dist: pandas (>=2.1.0,<2.3) ; python_version >= "3.12"
Requires-Dist: pandas (>=2.2.3,<2.4) ; python_version >= "3.13"
Requires-Dist: paramiko (>=3.4.0,<3.6)
Requires-Dist: pg8000 (==1.31.5)
Requires-Dist: protobuf (>=4.25.8,<6)
Requires-Dist: psycopg2-binary (>=2.9.10,<3) ; python_version >= "3.13"
Requires-Dist: psycopg2-binary (>=2.9.4,<2.10) ; sys_platform != "darwin" or python_version >= "3.10"
Requires-Dist: psycopg2-binary (>=2.9.4,<2.9.10) ; sys_platform == "darwin" and python_version == "3.9"
Requires-Dist: pyarrow (>=10.0.0,<=17.0.0) ; python_version >= "3.9" and python_version < "3.11" and sys_platform != "darwin"
Requires-Dist: pyarrow (>=13.0.0,<=17.0.0) ; python_version == "3.11" and sys_platform != "darwin"
Requires-Dist: pyarrow (>=14.0.1) ; python_version >= "3.12"
Requires-Dist: pyarrow (>=16.0.0,<18.0.0) ; python_version >= "3.9" and python_version < "3.11" and sys_platform == "darwin"
Requires-Dist: pyarrow (>=16.0.0,<=18.0.0) ; python_version == "3.11" and sys_platform == "darwin"
Requires-Dist: pyarrow (>=18.0.0,<22.0) ; python_version >= "3.13"
Requires-Dist: pyathena[sqlalchemy] (==3.9.0)
Requires-Dist: pyathena[sqlalchemy] (>=3.9.0,<4) ; python_version >= "3.13"
Requires-Dist: pydantic (>=1.10.0,<3)
Requires-Dist: pydantic (>=1.10.0,<3) ; extra == "server"
Requires-Dist: pydantic (>=2.8.0,<3) ; (python_version >= "3.13") and (extra == "server")
Requires-Dist: pydantic (>=2.8.0,<3) ; python_version >= "3.13"
Requires-Dist: pymongo (>=4.6.3,<4.10) ; python_version < "3.13"
Requires-Dist: pymongo (>=4.9.0,<5) ; python_version >= "3.13"
Requires-Dist: pymssql (>=2.2.9,<2.4) ; python_version >= "3.9" and python_version < "3.12" and sys_platform != "darwin"
Requires-Dist: pymssql (>=2.3.0,<2.4) ; python_version >= "3.12" and sys_platform != "darwin"
Requires-Dist: pymssql (>=2.3.5,<2.4) ; python_version >= "3.9" and sys_platform == "darwin"
Requires-Dist: pymssql (>=2.3.8,<2.4) ; python_version >= "3.13"
Requires-Dist: pymysql (>=1.1.1,<1.2)
Requires-Dist: pyyaml (>=6,<7)
Requires-Dist: pyyaml (>=6,<7) ; extra == "server"
Requires-Dist: requests (>=2.32.4,<3)
Requires-Dist: snowflake-connector-python (>=3.13.1)
Requires-Dist: snowflake-connector-python (>=3.16.0,<5) ; python_version >= "3.13"
Requires-Dist: snowflake-sqlalchemy (>=1.6.0,<1.8)
Requires-Dist: sqlalchemy (<2) ; python_version <= "3.11"
Requires-Dist: sqlalchemy (>=2.0.31,<3) ; python_version >= "3.13"
Requires-Dist: sqlalchemy-bigquery (>1.6.1,<1.13) ; python_version < "3.13"
Requires-Dist: sqlalchemy-bigquery (>=1.15.0,<1.20) ; python_version >= "3.13"
Requires-Dist: sqlalchemy-dremio (>=3.0.3,<3.1)
Requires-Dist: sqlalchemy-spanner (>=1.6.2,<2)
Requires-Dist: sqlparse (>=0.4.4,<0.6)
Requires-Dist: sshtunnel (==0.4.0)
Requires-Dist: streamlit (>=1.40.0,<2.0.0) ; extra == "server"
Requires-Dist: toml (>=0.10.0,<1.0.0)
Requires-Dist: toml (>=0.10.0,<1.0.0)
Requires-Dist: toml (>=0.10.0,<1.0.0) ; extra == "server"
Requires-Dist: tomli (>=2,<3) ; (python_version < "3.11") and (extra == "server")
Requires-Dist: tomli (>=2,<3) ; python_version < "3.11"
Requires-Dist: tornado (>=6.5,<7)
Requires-Dist: trino[sqlalchemy] (>=0.327.0,<=0.330.0)
Requires-Dist: trino[sqlalchemy] (>=0.329.0,<=0.336.0) ; python_version >= "3.13"
Requires-Dist: typing-extensions (>=4.12.2,<5.0.0)
Requires-Dist: urllib3 (>=2.5.0,<3) ; python_version >= "3.10"
Requires-Dist: vl-convert-python (==1.7.0)
Requires-Dist: wrapt (>=1.12.0)
Requires-Dist: zstd (>1.5.5.1) ; python_version < "3.11"
Requires-Dist: zstd (>1.5.7.0) ; python_version == "3.11"
Requires-Dist: zstd (>1.5.7.0) ; python_version >= "3.12"
Project-URL: Documentation, https://docs.deepnote.com
Project-URL: Homepage, https://deepnote.com
Project-URL: Issues, https://github.com/deepnote/deepnote-toolkit/issues
Project-URL: Repository, https://github.com/deepnote/deepnote-toolkit
Description-Content-Type: text/markdown

<div align="center">

![Deepnote cover image](./assets/deepnote-cover-image.png)

[![CI](https://github.com/deepnote/deepnote-toolkit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/deepnote/deepnote-toolkit/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/deepnote/deepnote-toolkit/graph/badge.svg?token=JCRUJP2BB9)](https://codecov.io/gh/deepnote/deepnote-toolkit)

[Website](https://deepnote.com/?utm_source=github&utm_medium=github&utm_campaign=github&utm_content=readme_main) • [Docs](https://deepnote.com/docs?utm_source=github&utm_medium=github&utm_campaign=github&utm_content=readme_main) • [Changelog](https://deepnote.com/changelog?utm_source=github&utm_medium=github&utm_campaign=github&utm_content=readme_main) • [X](https://x.com/DeepnoteHQ) • [Examples](https://deepnote.com/explore?utm_source=github&utm_medium=github&utm_campaign=github&utm_content=readme_main) • [Community](https://github.com/deepnote/deepnote/discussions)


</div>

# Deepnote Toolkit: SQL, charts, and notebook utilities

Deepnote Toolkit powers [Deepnote Cloud](https://deepnote.com) and [Deepnote Open Source](https://github.com/deepnote/deepnote).
It starts and manages Jupyter, Streamlit, and LSP servers, and provides runtime integrations for fast and reliable experience.

## Features

- **First-class SQL authoring and execution** without overhead of database connectors and SDKs (all supported integrations with data warehouses, databases, cloud storages, and many other tools listed in [documentation](https://deepnote.com/docs?utm_source=github&utm_medium=github&utm_campaign=github&utm_content=readme_main))
- **Visualize data with chart blocks**, using Vega, along with additional support for Altair and Plotly
- Native **Deepnote component library** including beautiful `DataFrame` rendering and interactive inputs
- **Python kernel with curated set of libraries preinstalled**, allowing you to focus on work instead of fighting with Python dependencies
- Run multiple **interactive applications built with Streamlit**
- Language Server Protocol integration for code completion and intelligence
- Git integration with SSH/HTTPS authentication

## How to install Deepnote Toolkit

Deepnote Toolkit can be run as a Python package via the CLI, you can also try Deepnote via our [open sourced repositories](https://github.com/deepnote/) including our VS Code, Cursor and Windsurf extensions or via [Deepnote Cloud](https://deepnote.com).

To start Deepnote Toolkit locally, install via `pip` or your favorite package manager:

```sh
pip install deepnote-toolkit
```

To use server components (Jupyter, Streamlit, LSP), add `server` extras bundle:

```sh
pip install deepnote-toolkit[server]
```


## How to run Deepnote Toolkit

To run Deepnote Toolkit after installation use:

```bash
# show all available commands
deepnote-toolkit --help

# start Jupyter server on default port (8888)
deepnote-toolkit server

# start with custom configuration
deepnote-toolkit server --jupyter-port 9000

# view and modify configuration
deepnote-toolkit config show
deepnote-toolkit config set server.jupyter_port 9000
```

**Security note**: The CLI will warn if Jupyter runs without authentication. For local development only. Set `DEEPNOTE_JUPYTER_TOKEN` for shared environments.

## Need help?

- Join our [Community](https://github.com/deepnote/deepnote/discussions)!
- [Open an issue](https://github.com/deepnote/deepnote-toolkit/issues) for bug reports or feature requests
- Check out our [documentation](https://deepnote.com/docs)
- Learn how to report security vulnerabilities via [security](SECURITY.md)
- Want a low-code experience? Visit [Deepnote Cloud](https://deepnote.com) together with Deepnote AI agent

## Contributing

For more details on how to set up the local development environment and contribute,
see [contributing guide](./CONTRIBUTING.md).

---
<div align="center">

Built with 💙

</div>

