Metadata-Version: 2.2
Name: fullscript.spellbook
Version: 2.1.2
Summary: A simple package to make your life easier.
Author-email: Thomas Edwards <thomas.edwards@fullscript.com>, Gui Chagas <gui.chagas@fullscript.com>, David King <david.king@fullscript.com>, Meinhard Mare <meinhard.mare@fullscript.com>, Karsten Melchers <karsten.melchers@fullscript.com>
License: MIT
Project-URL: homepage, https://git.fullscript.io/data/spellbook
Requires-Python: <3.12,>=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: appnope==0.1.4
Requires-Dist: asn1crypto==1.5.1
Requires-Dist: asttokens==2.4.1
Requires-Dist: snowflake-sqlalchemy==1.7.0
Requires-Dist: certifi==2024.8.30
Requires-Dist: cffi==1.17.1
Requires-Dist: charset-normalizer==3.4.0
Requires-Dist: cloudpickle==2.2.1
Requires-Dist: comm==0.2.2
Requires-Dist: cryptography==43.0.3
Requires-Dist: debugpy==1.8.8
Requires-Dist: decorator==5.1.1
Requires-Dist: executing==2.1.0
Requires-Dist: filelock==3.16.1
Requires-Dist: idna==3.10
Requires-Dist: ipykernel==6.29.5
Requires-Dist: ipython==8.29.0
Requires-Dist: jedi==0.19.2
Requires-Dist: jupyter_client==8.6.3
Requires-Dist: jupyter_core==5.7.2
Requires-Dist: matplotlib-inline==0.1.7
Requires-Dist: nest-asyncio==1.6.0
Requires-Dist: numpy==2.1.3
Requires-Dist: packaging==24.2
Requires-Dist: pandas==2.2.3
Requires-Dist: parso==0.8.4
Requires-Dist: pexpect==4.9.0
Requires-Dist: platformdirs==4.3.6
Requires-Dist: prompt_toolkit==3.0.48
Requires-Dist: protobuf==5.28.3
Requires-Dist: psutil==6.1.0
Requires-Dist: ptyprocess==0.7.0
Requires-Dist: pure_eval==0.2.3
Requires-Dist: pyarrow==18.0.0
Requires-Dist: pycparser==2.22
Requires-Dist: Pygments==2.18.0
Requires-Dist: PyJWT==2.9.0
Requires-Dist: pyOpenSSL==24.2.1
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: pytz==2024.2
Requires-Dist: PyYAML==6.0.2
Requires-Dist: pyzmq==26.2.0
Requires-Dist: requests==2.32.3
Requires-Dist: six==1.16.0
Requires-Dist: snowflake-connector-python==3.12.3
Requires-Dist: snowflake-snowpark-python==1.25.0
Requires-Dist: sortedcontainers==2.4.0
Requires-Dist: SQLAlchemy==2.0.36
Requires-Dist: stack-data==0.6.3
Requires-Dist: tomlkit==0.13.2
Requires-Dist: tornado==6.4.1
Requires-Dist: traitlets==5.14.3
Requires-Dist: typing_extensions==4.12.2
Requires-Dist: tzdata==2024.2
Requires-Dist: tzlocal==5.2
Requires-Dist: urllib3==2.2.3
Requires-Dist: wcwidth==0.2.13
Provides-Extra: drivemagic
Requires-Dist: cachetools==5.5.0; extra == "drivemagic"
Requires-Dist: google-api-core==2.23.0; extra == "drivemagic"
Requires-Dist: google-api-python-client==2.153.0; extra == "drivemagic"
Requires-Dist: google-auth==2.36.0; extra == "drivemagic"
Requires-Dist: google-auth-httplib2==0.2.0; extra == "drivemagic"
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "drivemagic"
Requires-Dist: googleapis-common-protos==1.66.0; extra == "drivemagic"
Requires-Dist: httplib2==0.22.0; extra == "drivemagic"
Requires-Dist: oauthlib==3.2.2; extra == "drivemagic"
Requires-Dist: proto-plus==1.25.0; extra == "drivemagic"
Requires-Dist: pyasn1==0.6.1; extra == "drivemagic"
Requires-Dist: pyasn1_modules==0.4.1; extra == "drivemagic"
Requires-Dist: pyparsing==3.2.0; extra == "drivemagic"
Requires-Dist: requests-oauthlib==2.0.0; extra == "drivemagic"
Requires-Dist: rsa==4.9; extra == "drivemagic"
Requires-Dist: uritemplate==4.1.1; extra == "drivemagic"
Provides-Extra: sheetmagic
Requires-Dist: cachetools==5.5.0; extra == "sheetmagic"
Requires-Dist: google-api-core==2.23.0; extra == "sheetmagic"
Requires-Dist: google-api-python-client==2.153.0; extra == "sheetmagic"
Requires-Dist: google-auth==2.36.0; extra == "sheetmagic"
Requires-Dist: google-auth-httplib2==0.2.0; extra == "sheetmagic"
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "sheetmagic"
Requires-Dist: googleapis-common-protos==1.66.0; extra == "sheetmagic"
Requires-Dist: httplib2==0.22.0; extra == "sheetmagic"
Requires-Dist: oauthlib==3.2.2; extra == "sheetmagic"
Requires-Dist: pyasn1==0.6.1; extra == "sheetmagic"
Requires-Dist: pyasn1_modules==0.4.1; extra == "sheetmagic"
Requires-Dist: Pygments==2.18.0; extra == "sheetmagic"
Requires-Dist: pygsheets==2.0.6; extra == "sheetmagic"
Requires-Dist: pyparsing==3.2.0; extra == "sheetmagic"
Requires-Dist: requests-oauthlib==2.0.0; extra == "sheetmagic"
Requires-Dist: rsa==4.9; extra == "sheetmagic"
Requires-Dist: uritemplate==4.1.1; extra == "sheetmagic"
Provides-Extra: statsmagic
Requires-Dist: contourpy==1.3.1; extra == "statsmagic"
Requires-Dist: cycler==0.12.1; extra == "statsmagic"
Requires-Dist: fonttools==4.55.0; extra == "statsmagic"
Requires-Dist: kiwisolver==1.4.7; extra == "statsmagic"
Requires-Dist: matplotlib==3.9.2; extra == "statsmagic"
Requires-Dist: patsy==1.0.1; extra == "statsmagic"
Requires-Dist: pillow==11.0.0; extra == "statsmagic"
Requires-Dist: pyparsing==3.2.0; extra == "statsmagic"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "statsmagic"
Requires-Dist: pytz==2024.2; extra == "statsmagic"
Requires-Dist: scikit-posthocs==0.10.0; extra == "statsmagic"
Requires-Dist: scipy==1.14.1; extra == "statsmagic"
Requires-Dist: seaborn==0.13.2; extra == "statsmagic"
Requires-Dist: six==1.16.0; extra == "statsmagic"
Requires-Dist: statsmodels==0.14.4; extra == "statsmagic"

# Spellbook

Helping data scientists and engineers save time by making it simple to connect to databases, work with spreadsheets, 
manage files, and run analyses. With Spellbook, they can focus on finding insights and solving problems instead of 
dealing with complicated tools.

With Spellbook, you can:
* Seamlessly connect to Snowflake and MySQL databases, for secure querying and effortless data retrieval.
* Work with Google Sheets, making it easy to read, write, and update spreadsheets.
* Manage Google Drive, creating folders and saving files with ease. 
* Perform statistical analyses, helping you run A/B tests and extract actionable insights.

Spellbook is built to simplify your workflows and supercharge your data exploration, so you can focus on turning insights into action!

## Table of Contents

- [Features](#features)
- [Installation](#installation)
- [Configuration](#configuration)
- [Contributing](#contributing)
- [License](#license)

## Features

- Effortless Database Connections and query execution
- Read/ Write to Google worksheets
- Manage Google Drive
- Perform statistical analyses

For feature methods and examples, please refer to the [Wiki Page](https://git.fullscript.io/data/spellbook/-/wikis/home).


## Installation

Spellbook requires Python 3.11 or higher. Use the following steps to install:
> Note: At the time relase, Snowpark does not support versions of Python higher than 3.11

1. Pip install:

```bash
pip install git+https://git.fullscript.io/data/spellbook.git
```

## Configuration
Effortlessly and securely manage your connections and configurations! Simply add database types and connection 
credentials to your [spellbook_config.yaml](spellbook_config.yaml) file, or include your Google service account details for seamless access to 
Google services. For added security, Spellbook supports storing credentials in environment variables 
or in a configuration file that references those variables, keeping your sensitive information safe and sound.

You must have a `spellbook_config.yaml` file in your root directory or in your project directory.
An example of the `spellbook_config.yaml` file is shown below:

```yaml
databases:
  # Snowflake Database Connection
  - name: alias_of_your_connection
    type: snowflake
    account: your_account
    user: snowflake_user_name # Optional for private key auth
    password: snowflake_password # Optional, used if private key is not present
    private_key: snowflake_pk # Base64-encoded private key
    private_key_passphrase: snowflake_pk_phrase # Optional
    role: snowflake_role
    warehouse: snowflake_warehouse
    database: snowflake_database
    schema: snowflake_schema

google_accounts:
  # Google Sheets Service Account 1
  - name: google_sheets_service_account_1
    service_account: "your_base64_encoded_service_account_credentials_here"  # Add your Base64-encoded service account JSON here
```

## Contributing

We welcome contributions! Please follow these steps:

1. Fork this repository.
2. Create a new branch: `git checkout -b feature-name`.
3. Commit your changes: `git commit -m 'Add some feature'`.
4. Push to the branch: `git push origin feature-name`.
5. Open a pull request.

## License

Spellbook is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.

---
