Metadata-Version: 2.4
Name: deepnote-toolkit
Version: 1.0.0
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.13,!=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: 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.5,<3)
Requires-Dist: dill (==0.3.8)
Requires-Dist: dnspython (>=2.6.1,<2.7)
Requires-Dist: duckdb (>=1.1.0) ; python_version >= "3.12"
Requires-Dist: duckdb (>=1.1.0,<2.0.0) ; python_version < "3.12"
Requires-Dist: google-cloud-bigquery-storage (==2.16.2)
Requires-Dist: ipykernel (>6.22.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: pandas (>=1.2.5,<2.2) ; python_version < "3.12"
Requires-Dist: pandas (>=2.1.0,<2.3) ; python_version >= "3.12"
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.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: pyathena[sqlalchemy] (==3.9.0)
Requires-Dist: pydantic (>=1.10.0,<3)
Requires-Dist: pydantic (>=1.10.0,<3) ; extra == "server"
Requires-Dist: pymongo (>=4.6.3,<4.10)
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: 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-sqlalchemy (>=1.6.0,<1.8)
Requires-Dist: sqlalchemy (<2) ; python_version <= "3.11"
Requires-Dist: sqlalchemy-bigquery (>1.6.1,<1.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) ; 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: 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 Toolkit cover image](https://landing-assets.deepnote.com/deepnote-toolkit-cover-image.png)

[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) • [Blog](https://deepnote.com/blog?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)

[![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)

</div>

Deepnote Toolkit is a set of tools to power [Deepnote data workspaces](https://deepnote.com/docs/workspaces).
It is responsible for starting and managing servers (Jupyter, Streamlit, LSP), as well as providing runtime integrations for a hassle-free experience when it comes to all your data needs.

## Features

- **Python kernel with scientific computing libraries preinstalled**, allowing you to focus on work instead of fighting with Python dependencies
- **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 are listed in [documentation](https://deepnote.com/docs/getting-started))*
- Native **Deepnote component library** including beautiful `DataFrame` rendering and interactive inputs
- **Visualize data with Vega**, along with additional support for Altair and Plotly
- Run multiple **interactive applications built with Streamlit**
- Language Server Protocol integration for code completion and intelligence
- Git integration with SSH/HTTPS authentication

## Installation

Although Deepnote Toolkit can be run as a Python package via the CLI, we highly recommend first trying Deepnote via our [OSS offerings](https://github.com/deepnote/deepnote) including our VS Code, Cursor and Windsurf extensions or registering for the SaaS version at [deepnote.com](https://deepnote.com).

To start Deepnote Toolkit locally, first install it 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]
```


## CLI quickstart

To run Toolkit locally 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.

## Contributing

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

## License

Apache License 2.0 (see [LICENSE](LICENSE) for details)

## Support

- **Documentation**: [docs.deepnote.com](https://docs.deepnote.com)
- **Issues**: [GitHub Issues](https://github.com/deepnote/deepnote-toolkit/issues)
- **Security**: See [security guideline](SECURITY.md) for reporting vulnerabilities


<hr>
<div align="center">

Built with 💙 by the Deepnote team

</div>

