fullscript.spellbook 2.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.
- fullscript_spellbook-2.1/LICENSE +21 -0
- fullscript_spellbook-2.1/MANIFEST.in +1 -0
- fullscript_spellbook-2.1/PKG-INFO +208 -0
- fullscript_spellbook-2.1/README.md +88 -0
- fullscript_spellbook-2.1/fullscript.spellbook.egg-info/PKG-INFO +208 -0
- fullscript_spellbook-2.1/fullscript.spellbook.egg-info/SOURCES.txt +27 -0
- fullscript_spellbook-2.1/fullscript.spellbook.egg-info/dependency_links.txt +1 -0
- fullscript_spellbook-2.1/fullscript.spellbook.egg-info/requires.txt +111 -0
- fullscript_spellbook-2.1/fullscript.spellbook.egg-info/top_level.txt +1 -0
- fullscript_spellbook-2.1/pyproject.toml +141 -0
- fullscript_spellbook-2.1/setup.cfg +4 -0
- fullscript_spellbook-2.1/spellbook/__init__.py +0 -0
- fullscript_spellbook-2.1/spellbook/db_magic.py +266 -0
- fullscript_spellbook-2.1/spellbook/drive_magic.py +266 -0
- fullscript_spellbook-2.1/spellbook/sheet_magic.py +181 -0
- fullscript_spellbook-2.1/spellbook/stats_magic.py +211 -0
- fullscript_spellbook-2.1/spellbook/utils.py +93 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard1.txt +11 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard10.txt +18 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard11.txt +14 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard12.txt +13 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard2.txt +2 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard3.txt +2 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard4.txt +7 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard5.txt +4 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard6.txt +3 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard7.txt +4 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard8.txt +22 -0
- fullscript_spellbook-2.1/spellbook/wizards/wizard9.txt +24 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Fullscript
|
|
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 @@
|
|
|
1
|
+
include wizards/*.txt
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: fullscript.spellbook
|
|
3
|
+
Version: 2.1
|
|
4
|
+
Summary: A simple package to make your life easier.
|
|
5
|
+
Author: Gui Chagas, David King, Meinhard Mare, Karsten Melchers
|
|
6
|
+
Author-email: Thomas Edwards <thomas.edwards@fullscript.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: homepage, https://git.fullscript.io/data/spellbook
|
|
9
|
+
Requires-Python: <3.12,>=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: appnope==0.1.4
|
|
13
|
+
Requires-Dist: asn1crypto==1.5.1
|
|
14
|
+
Requires-Dist: asttokens==2.4.1
|
|
15
|
+
Requires-Dist: snowflake-sqlalchemy==1.7.0
|
|
16
|
+
Requires-Dist: certifi==2024.8.30
|
|
17
|
+
Requires-Dist: cffi==1.17.1
|
|
18
|
+
Requires-Dist: charset-normalizer==3.4.0
|
|
19
|
+
Requires-Dist: cloudpickle==2.2.1
|
|
20
|
+
Requires-Dist: comm==0.2.2
|
|
21
|
+
Requires-Dist: cryptography==43.0.3
|
|
22
|
+
Requires-Dist: debugpy==1.8.8
|
|
23
|
+
Requires-Dist: decorator==5.1.1
|
|
24
|
+
Requires-Dist: executing==2.1.0
|
|
25
|
+
Requires-Dist: filelock==3.16.1
|
|
26
|
+
Requires-Dist: idna==3.10
|
|
27
|
+
Requires-Dist: ipykernel==6.29.5
|
|
28
|
+
Requires-Dist: ipython==8.29.0
|
|
29
|
+
Requires-Dist: jedi==0.19.2
|
|
30
|
+
Requires-Dist: jupyter_client==8.6.3
|
|
31
|
+
Requires-Dist: jupyter_core==5.7.2
|
|
32
|
+
Requires-Dist: matplotlib-inline==0.1.7
|
|
33
|
+
Requires-Dist: nest-asyncio==1.6.0
|
|
34
|
+
Requires-Dist: numpy==2.1.3
|
|
35
|
+
Requires-Dist: packaging==24.2
|
|
36
|
+
Requires-Dist: pandas==2.2.3
|
|
37
|
+
Requires-Dist: parso==0.8.4
|
|
38
|
+
Requires-Dist: pexpect==4.9.0
|
|
39
|
+
Requires-Dist: platformdirs==4.3.6
|
|
40
|
+
Requires-Dist: prompt_toolkit==3.0.48
|
|
41
|
+
Requires-Dist: protobuf==5.28.3
|
|
42
|
+
Requires-Dist: psutil==6.1.0
|
|
43
|
+
Requires-Dist: ptyprocess==0.7.0
|
|
44
|
+
Requires-Dist: pure_eval==0.2.3
|
|
45
|
+
Requires-Dist: pyarrow==18.0.0
|
|
46
|
+
Requires-Dist: pycparser==2.22
|
|
47
|
+
Requires-Dist: Pygments==2.18.0
|
|
48
|
+
Requires-Dist: PyJWT==2.9.0
|
|
49
|
+
Requires-Dist: pyOpenSSL==24.2.1
|
|
50
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
51
|
+
Requires-Dist: pytz==2024.2
|
|
52
|
+
Requires-Dist: PyYAML==6.0.2
|
|
53
|
+
Requires-Dist: pyzmq==26.2.0
|
|
54
|
+
Requires-Dist: requests==2.32.3
|
|
55
|
+
Requires-Dist: six==1.16.0
|
|
56
|
+
Requires-Dist: snowflake-connector-python==3.12.3
|
|
57
|
+
Requires-Dist: snowflake-snowpark-python==1.25.0
|
|
58
|
+
Requires-Dist: sortedcontainers==2.4.0
|
|
59
|
+
Requires-Dist: SQLAlchemy==2.0.36
|
|
60
|
+
Requires-Dist: stack-data==0.6.3
|
|
61
|
+
Requires-Dist: tomlkit==0.13.2
|
|
62
|
+
Requires-Dist: tornado==6.4.1
|
|
63
|
+
Requires-Dist: traitlets==5.14.3
|
|
64
|
+
Requires-Dist: typing_extensions==4.12.2
|
|
65
|
+
Requires-Dist: tzdata==2024.2
|
|
66
|
+
Requires-Dist: tzlocal==5.2
|
|
67
|
+
Requires-Dist: urllib3==2.2.3
|
|
68
|
+
Requires-Dist: wcwidth==0.2.13
|
|
69
|
+
Provides-Extra: drivemagic
|
|
70
|
+
Requires-Dist: cachetools==5.5.0; extra == "drivemagic"
|
|
71
|
+
Requires-Dist: google-api-core==2.23.0; extra == "drivemagic"
|
|
72
|
+
Requires-Dist: google-api-python-client==2.153.0; extra == "drivemagic"
|
|
73
|
+
Requires-Dist: google-auth==2.36.0; extra == "drivemagic"
|
|
74
|
+
Requires-Dist: google-auth-httplib2==0.2.0; extra == "drivemagic"
|
|
75
|
+
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "drivemagic"
|
|
76
|
+
Requires-Dist: googleapis-common-protos==1.66.0; extra == "drivemagic"
|
|
77
|
+
Requires-Dist: httplib2==0.22.0; extra == "drivemagic"
|
|
78
|
+
Requires-Dist: oauthlib==3.2.2; extra == "drivemagic"
|
|
79
|
+
Requires-Dist: proto-plus==1.25.0; extra == "drivemagic"
|
|
80
|
+
Requires-Dist: pyasn1==0.6.1; extra == "drivemagic"
|
|
81
|
+
Requires-Dist: pyasn1_modules==0.4.1; extra == "drivemagic"
|
|
82
|
+
Requires-Dist: pyparsing==3.2.0; extra == "drivemagic"
|
|
83
|
+
Requires-Dist: requests-oauthlib==2.0.0; extra == "drivemagic"
|
|
84
|
+
Requires-Dist: rsa==4.9; extra == "drivemagic"
|
|
85
|
+
Requires-Dist: uritemplate==4.1.1; extra == "drivemagic"
|
|
86
|
+
Provides-Extra: sheetmagic
|
|
87
|
+
Requires-Dist: cachetools==5.5.0; extra == "sheetmagic"
|
|
88
|
+
Requires-Dist: google-api-core==2.23.0; extra == "sheetmagic"
|
|
89
|
+
Requires-Dist: google-api-python-client==2.153.0; extra == "sheetmagic"
|
|
90
|
+
Requires-Dist: google-auth==2.36.0; extra == "sheetmagic"
|
|
91
|
+
Requires-Dist: google-auth-httplib2==0.2.0; extra == "sheetmagic"
|
|
92
|
+
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "sheetmagic"
|
|
93
|
+
Requires-Dist: googleapis-common-protos==1.66.0; extra == "sheetmagic"
|
|
94
|
+
Requires-Dist: httplib2==0.22.0; extra == "sheetmagic"
|
|
95
|
+
Requires-Dist: oauthlib==3.2.2; extra == "sheetmagic"
|
|
96
|
+
Requires-Dist: pyasn1==0.6.1; extra == "sheetmagic"
|
|
97
|
+
Requires-Dist: pyasn1_modules==0.4.1; extra == "sheetmagic"
|
|
98
|
+
Requires-Dist: Pygments==2.18.0; extra == "sheetmagic"
|
|
99
|
+
Requires-Dist: pygsheets==2.0.6; extra == "sheetmagic"
|
|
100
|
+
Requires-Dist: pyparsing==3.2.0; extra == "sheetmagic"
|
|
101
|
+
Requires-Dist: requests-oauthlib==2.0.0; extra == "sheetmagic"
|
|
102
|
+
Requires-Dist: rsa==4.9; extra == "sheetmagic"
|
|
103
|
+
Requires-Dist: uritemplate==4.1.1; extra == "sheetmagic"
|
|
104
|
+
Provides-Extra: statsmagic
|
|
105
|
+
Requires-Dist: contourpy==1.3.1; extra == "statsmagic"
|
|
106
|
+
Requires-Dist: cycler==0.12.1; extra == "statsmagic"
|
|
107
|
+
Requires-Dist: fonttools==4.55.0; extra == "statsmagic"
|
|
108
|
+
Requires-Dist: kiwisolver==1.4.7; extra == "statsmagic"
|
|
109
|
+
Requires-Dist: matplotlib==3.9.2; extra == "statsmagic"
|
|
110
|
+
Requires-Dist: patsy==1.0.1; extra == "statsmagic"
|
|
111
|
+
Requires-Dist: pillow==11.0.0; extra == "statsmagic"
|
|
112
|
+
Requires-Dist: pyparsing==3.2.0; extra == "statsmagic"
|
|
113
|
+
Requires-Dist: python-dateutil==2.9.0.post0; extra == "statsmagic"
|
|
114
|
+
Requires-Dist: pytz==2024.2; extra == "statsmagic"
|
|
115
|
+
Requires-Dist: scikit-posthocs==0.10.0; extra == "statsmagic"
|
|
116
|
+
Requires-Dist: scipy==1.14.1; extra == "statsmagic"
|
|
117
|
+
Requires-Dist: seaborn==0.13.2; extra == "statsmagic"
|
|
118
|
+
Requires-Dist: six==1.16.0; extra == "statsmagic"
|
|
119
|
+
Requires-Dist: statsmodels==0.14.4; extra == "statsmagic"
|
|
120
|
+
|
|
121
|
+
# Spellbook
|
|
122
|
+
|
|
123
|
+
Helping data scientists and engineers save time by making it simple to connect to databases, work with spreadsheets,
|
|
124
|
+
manage files, and run analyses. With Spellbook, they can focus on finding insights and solving problems instead of
|
|
125
|
+
dealing with complicated tools.
|
|
126
|
+
|
|
127
|
+
With Spellbook, you can:
|
|
128
|
+
* Seamlessly connect to Snowflake and MySQL databases, for secure querying and effortless data retrieval.
|
|
129
|
+
* Work with Google Sheets, making it easy to read, write, and update spreadsheets.
|
|
130
|
+
* Manage Google Drive, creating folders and saving files with ease.
|
|
131
|
+
* Perform statistical analyses, helping you run A/B tests and extract actionable insights.
|
|
132
|
+
|
|
133
|
+
Spellbook is built to simplify your workflows and supercharge your data exploration, so you can focus on turning insights into action!
|
|
134
|
+
|
|
135
|
+
## Table of Contents
|
|
136
|
+
|
|
137
|
+
- [Features](#features)
|
|
138
|
+
- [Installation](#installation)
|
|
139
|
+
- [Configuration](#configuration)
|
|
140
|
+
- [Contributing](#contributing)
|
|
141
|
+
- [License](#license)
|
|
142
|
+
|
|
143
|
+
## Features
|
|
144
|
+
|
|
145
|
+
- Effortless Database Connections and query execution
|
|
146
|
+
- Read/ Write to Google worksheets
|
|
147
|
+
- Manage Google Drive
|
|
148
|
+
- Perform statistical analyses
|
|
149
|
+
|
|
150
|
+
For feature methods and examples, please refer to the [Wiki Page](https://git.fullscript.io/data/spellbook/-/wikis/home).
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
## Installation
|
|
154
|
+
|
|
155
|
+
Spellbook requires Python 3.11 or higher. Use the following steps to install:
|
|
156
|
+
> Note: At the time relase, Snowpark does not support versions of Python higher than 3.11
|
|
157
|
+
|
|
158
|
+
1. Pip install:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
pip install git+https://git.fullscript.io/data/spellbook.git
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Configuration
|
|
165
|
+
Effortlessly and securely manage your connections and configurations! Simply add database types and connection
|
|
166
|
+
credentials to your [spellbook_config.yaml](spellbook_config.yaml) file, or include your Google service account details for seamless access to
|
|
167
|
+
Google services. For added security, Spellbook supports storing credentials in environment variables
|
|
168
|
+
or in a configuration file that references those variables, keeping your sensitive information safe and sound.
|
|
169
|
+
|
|
170
|
+
You must have a `spellbook_config.yaml` file in your root directory or in your project directory.
|
|
171
|
+
An example of the `spellbook_config.yaml` file is shown below:
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
databases:
|
|
175
|
+
# Snowflake Database Connection
|
|
176
|
+
- name: alias_of_your_connection
|
|
177
|
+
type: snowflake
|
|
178
|
+
account: your_account
|
|
179
|
+
user: snowflake_user_name # Optional for private key auth
|
|
180
|
+
password: snowflake_password # Optional, used if private key is not present
|
|
181
|
+
private_key: snowflake_pk # Base64-encoded private key
|
|
182
|
+
private_key_passphrase: snowflake_pk_phrase # Optional
|
|
183
|
+
role: snowflake_role
|
|
184
|
+
warehouse: snowflake_warehouse
|
|
185
|
+
database: snowflake_database
|
|
186
|
+
schema: snowflake_schema
|
|
187
|
+
|
|
188
|
+
google_accounts:
|
|
189
|
+
# Google Sheets Service Account 1
|
|
190
|
+
- name: google_sheets_service_account_1
|
|
191
|
+
service_account: "your_base64_encoded_service_account_credentials_here" # Add your Base64-encoded service account JSON here
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Contributing
|
|
195
|
+
|
|
196
|
+
We welcome contributions! Please follow these steps:
|
|
197
|
+
|
|
198
|
+
1. Fork this repository.
|
|
199
|
+
2. Create a new branch: `git checkout -b feature-name`.
|
|
200
|
+
3. Commit your changes: `git commit -m 'Add some feature'`.
|
|
201
|
+
4. Push to the branch: `git push origin feature-name`.
|
|
202
|
+
5. Open a pull request.
|
|
203
|
+
|
|
204
|
+
## License
|
|
205
|
+
|
|
206
|
+
Spellbook is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
|
|
207
|
+
|
|
208
|
+
---
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Spellbook
|
|
2
|
+
|
|
3
|
+
Helping data scientists and engineers save time by making it simple to connect to databases, work with spreadsheets,
|
|
4
|
+
manage files, and run analyses. With Spellbook, they can focus on finding insights and solving problems instead of
|
|
5
|
+
dealing with complicated tools.
|
|
6
|
+
|
|
7
|
+
With Spellbook, you can:
|
|
8
|
+
* Seamlessly connect to Snowflake and MySQL databases, for secure querying and effortless data retrieval.
|
|
9
|
+
* Work with Google Sheets, making it easy to read, write, and update spreadsheets.
|
|
10
|
+
* Manage Google Drive, creating folders and saving files with ease.
|
|
11
|
+
* Perform statistical analyses, helping you run A/B tests and extract actionable insights.
|
|
12
|
+
|
|
13
|
+
Spellbook is built to simplify your workflows and supercharge your data exploration, so you can focus on turning insights into action!
|
|
14
|
+
|
|
15
|
+
## Table of Contents
|
|
16
|
+
|
|
17
|
+
- [Features](#features)
|
|
18
|
+
- [Installation](#installation)
|
|
19
|
+
- [Configuration](#configuration)
|
|
20
|
+
- [Contributing](#contributing)
|
|
21
|
+
- [License](#license)
|
|
22
|
+
|
|
23
|
+
## Features
|
|
24
|
+
|
|
25
|
+
- Effortless Database Connections and query execution
|
|
26
|
+
- Read/ Write to Google worksheets
|
|
27
|
+
- Manage Google Drive
|
|
28
|
+
- Perform statistical analyses
|
|
29
|
+
|
|
30
|
+
For feature methods and examples, please refer to the [Wiki Page](https://git.fullscript.io/data/spellbook/-/wikis/home).
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Installation
|
|
34
|
+
|
|
35
|
+
Spellbook requires Python 3.11 or higher. Use the following steps to install:
|
|
36
|
+
> Note: At the time relase, Snowpark does not support versions of Python higher than 3.11
|
|
37
|
+
|
|
38
|
+
1. Pip install:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install git+https://git.fullscript.io/data/spellbook.git
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Configuration
|
|
45
|
+
Effortlessly and securely manage your connections and configurations! Simply add database types and connection
|
|
46
|
+
credentials to your [spellbook_config.yaml](spellbook_config.yaml) file, or include your Google service account details for seamless access to
|
|
47
|
+
Google services. For added security, Spellbook supports storing credentials in environment variables
|
|
48
|
+
or in a configuration file that references those variables, keeping your sensitive information safe and sound.
|
|
49
|
+
|
|
50
|
+
You must have a `spellbook_config.yaml` file in your root directory or in your project directory.
|
|
51
|
+
An example of the `spellbook_config.yaml` file is shown below:
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
databases:
|
|
55
|
+
# Snowflake Database Connection
|
|
56
|
+
- name: alias_of_your_connection
|
|
57
|
+
type: snowflake
|
|
58
|
+
account: your_account
|
|
59
|
+
user: snowflake_user_name # Optional for private key auth
|
|
60
|
+
password: snowflake_password # Optional, used if private key is not present
|
|
61
|
+
private_key: snowflake_pk # Base64-encoded private key
|
|
62
|
+
private_key_passphrase: snowflake_pk_phrase # Optional
|
|
63
|
+
role: snowflake_role
|
|
64
|
+
warehouse: snowflake_warehouse
|
|
65
|
+
database: snowflake_database
|
|
66
|
+
schema: snowflake_schema
|
|
67
|
+
|
|
68
|
+
google_accounts:
|
|
69
|
+
# Google Sheets Service Account 1
|
|
70
|
+
- name: google_sheets_service_account_1
|
|
71
|
+
service_account: "your_base64_encoded_service_account_credentials_here" # Add your Base64-encoded service account JSON here
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Contributing
|
|
75
|
+
|
|
76
|
+
We welcome contributions! Please follow these steps:
|
|
77
|
+
|
|
78
|
+
1. Fork this repository.
|
|
79
|
+
2. Create a new branch: `git checkout -b feature-name`.
|
|
80
|
+
3. Commit your changes: `git commit -m 'Add some feature'`.
|
|
81
|
+
4. Push to the branch: `git push origin feature-name`.
|
|
82
|
+
5. Open a pull request.
|
|
83
|
+
|
|
84
|
+
## License
|
|
85
|
+
|
|
86
|
+
Spellbook is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
|
|
87
|
+
|
|
88
|
+
---
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: fullscript.spellbook
|
|
3
|
+
Version: 2.1
|
|
4
|
+
Summary: A simple package to make your life easier.
|
|
5
|
+
Author: Gui Chagas, David King, Meinhard Mare, Karsten Melchers
|
|
6
|
+
Author-email: Thomas Edwards <thomas.edwards@fullscript.com>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: homepage, https://git.fullscript.io/data/spellbook
|
|
9
|
+
Requires-Python: <3.12,>=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Dist: appnope==0.1.4
|
|
13
|
+
Requires-Dist: asn1crypto==1.5.1
|
|
14
|
+
Requires-Dist: asttokens==2.4.1
|
|
15
|
+
Requires-Dist: snowflake-sqlalchemy==1.7.0
|
|
16
|
+
Requires-Dist: certifi==2024.8.30
|
|
17
|
+
Requires-Dist: cffi==1.17.1
|
|
18
|
+
Requires-Dist: charset-normalizer==3.4.0
|
|
19
|
+
Requires-Dist: cloudpickle==2.2.1
|
|
20
|
+
Requires-Dist: comm==0.2.2
|
|
21
|
+
Requires-Dist: cryptography==43.0.3
|
|
22
|
+
Requires-Dist: debugpy==1.8.8
|
|
23
|
+
Requires-Dist: decorator==5.1.1
|
|
24
|
+
Requires-Dist: executing==2.1.0
|
|
25
|
+
Requires-Dist: filelock==3.16.1
|
|
26
|
+
Requires-Dist: idna==3.10
|
|
27
|
+
Requires-Dist: ipykernel==6.29.5
|
|
28
|
+
Requires-Dist: ipython==8.29.0
|
|
29
|
+
Requires-Dist: jedi==0.19.2
|
|
30
|
+
Requires-Dist: jupyter_client==8.6.3
|
|
31
|
+
Requires-Dist: jupyter_core==5.7.2
|
|
32
|
+
Requires-Dist: matplotlib-inline==0.1.7
|
|
33
|
+
Requires-Dist: nest-asyncio==1.6.0
|
|
34
|
+
Requires-Dist: numpy==2.1.3
|
|
35
|
+
Requires-Dist: packaging==24.2
|
|
36
|
+
Requires-Dist: pandas==2.2.3
|
|
37
|
+
Requires-Dist: parso==0.8.4
|
|
38
|
+
Requires-Dist: pexpect==4.9.0
|
|
39
|
+
Requires-Dist: platformdirs==4.3.6
|
|
40
|
+
Requires-Dist: prompt_toolkit==3.0.48
|
|
41
|
+
Requires-Dist: protobuf==5.28.3
|
|
42
|
+
Requires-Dist: psutil==6.1.0
|
|
43
|
+
Requires-Dist: ptyprocess==0.7.0
|
|
44
|
+
Requires-Dist: pure_eval==0.2.3
|
|
45
|
+
Requires-Dist: pyarrow==18.0.0
|
|
46
|
+
Requires-Dist: pycparser==2.22
|
|
47
|
+
Requires-Dist: Pygments==2.18.0
|
|
48
|
+
Requires-Dist: PyJWT==2.9.0
|
|
49
|
+
Requires-Dist: pyOpenSSL==24.2.1
|
|
50
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
51
|
+
Requires-Dist: pytz==2024.2
|
|
52
|
+
Requires-Dist: PyYAML==6.0.2
|
|
53
|
+
Requires-Dist: pyzmq==26.2.0
|
|
54
|
+
Requires-Dist: requests==2.32.3
|
|
55
|
+
Requires-Dist: six==1.16.0
|
|
56
|
+
Requires-Dist: snowflake-connector-python==3.12.3
|
|
57
|
+
Requires-Dist: snowflake-snowpark-python==1.25.0
|
|
58
|
+
Requires-Dist: sortedcontainers==2.4.0
|
|
59
|
+
Requires-Dist: SQLAlchemy==2.0.36
|
|
60
|
+
Requires-Dist: stack-data==0.6.3
|
|
61
|
+
Requires-Dist: tomlkit==0.13.2
|
|
62
|
+
Requires-Dist: tornado==6.4.1
|
|
63
|
+
Requires-Dist: traitlets==5.14.3
|
|
64
|
+
Requires-Dist: typing_extensions==4.12.2
|
|
65
|
+
Requires-Dist: tzdata==2024.2
|
|
66
|
+
Requires-Dist: tzlocal==5.2
|
|
67
|
+
Requires-Dist: urllib3==2.2.3
|
|
68
|
+
Requires-Dist: wcwidth==0.2.13
|
|
69
|
+
Provides-Extra: drivemagic
|
|
70
|
+
Requires-Dist: cachetools==5.5.0; extra == "drivemagic"
|
|
71
|
+
Requires-Dist: google-api-core==2.23.0; extra == "drivemagic"
|
|
72
|
+
Requires-Dist: google-api-python-client==2.153.0; extra == "drivemagic"
|
|
73
|
+
Requires-Dist: google-auth==2.36.0; extra == "drivemagic"
|
|
74
|
+
Requires-Dist: google-auth-httplib2==0.2.0; extra == "drivemagic"
|
|
75
|
+
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "drivemagic"
|
|
76
|
+
Requires-Dist: googleapis-common-protos==1.66.0; extra == "drivemagic"
|
|
77
|
+
Requires-Dist: httplib2==0.22.0; extra == "drivemagic"
|
|
78
|
+
Requires-Dist: oauthlib==3.2.2; extra == "drivemagic"
|
|
79
|
+
Requires-Dist: proto-plus==1.25.0; extra == "drivemagic"
|
|
80
|
+
Requires-Dist: pyasn1==0.6.1; extra == "drivemagic"
|
|
81
|
+
Requires-Dist: pyasn1_modules==0.4.1; extra == "drivemagic"
|
|
82
|
+
Requires-Dist: pyparsing==3.2.0; extra == "drivemagic"
|
|
83
|
+
Requires-Dist: requests-oauthlib==2.0.0; extra == "drivemagic"
|
|
84
|
+
Requires-Dist: rsa==4.9; extra == "drivemagic"
|
|
85
|
+
Requires-Dist: uritemplate==4.1.1; extra == "drivemagic"
|
|
86
|
+
Provides-Extra: sheetmagic
|
|
87
|
+
Requires-Dist: cachetools==5.5.0; extra == "sheetmagic"
|
|
88
|
+
Requires-Dist: google-api-core==2.23.0; extra == "sheetmagic"
|
|
89
|
+
Requires-Dist: google-api-python-client==2.153.0; extra == "sheetmagic"
|
|
90
|
+
Requires-Dist: google-auth==2.36.0; extra == "sheetmagic"
|
|
91
|
+
Requires-Dist: google-auth-httplib2==0.2.0; extra == "sheetmagic"
|
|
92
|
+
Requires-Dist: google-auth-oauthlib==1.2.1; extra == "sheetmagic"
|
|
93
|
+
Requires-Dist: googleapis-common-protos==1.66.0; extra == "sheetmagic"
|
|
94
|
+
Requires-Dist: httplib2==0.22.0; extra == "sheetmagic"
|
|
95
|
+
Requires-Dist: oauthlib==3.2.2; extra == "sheetmagic"
|
|
96
|
+
Requires-Dist: pyasn1==0.6.1; extra == "sheetmagic"
|
|
97
|
+
Requires-Dist: pyasn1_modules==0.4.1; extra == "sheetmagic"
|
|
98
|
+
Requires-Dist: Pygments==2.18.0; extra == "sheetmagic"
|
|
99
|
+
Requires-Dist: pygsheets==2.0.6; extra == "sheetmagic"
|
|
100
|
+
Requires-Dist: pyparsing==3.2.0; extra == "sheetmagic"
|
|
101
|
+
Requires-Dist: requests-oauthlib==2.0.0; extra == "sheetmagic"
|
|
102
|
+
Requires-Dist: rsa==4.9; extra == "sheetmagic"
|
|
103
|
+
Requires-Dist: uritemplate==4.1.1; extra == "sheetmagic"
|
|
104
|
+
Provides-Extra: statsmagic
|
|
105
|
+
Requires-Dist: contourpy==1.3.1; extra == "statsmagic"
|
|
106
|
+
Requires-Dist: cycler==0.12.1; extra == "statsmagic"
|
|
107
|
+
Requires-Dist: fonttools==4.55.0; extra == "statsmagic"
|
|
108
|
+
Requires-Dist: kiwisolver==1.4.7; extra == "statsmagic"
|
|
109
|
+
Requires-Dist: matplotlib==3.9.2; extra == "statsmagic"
|
|
110
|
+
Requires-Dist: patsy==1.0.1; extra == "statsmagic"
|
|
111
|
+
Requires-Dist: pillow==11.0.0; extra == "statsmagic"
|
|
112
|
+
Requires-Dist: pyparsing==3.2.0; extra == "statsmagic"
|
|
113
|
+
Requires-Dist: python-dateutil==2.9.0.post0; extra == "statsmagic"
|
|
114
|
+
Requires-Dist: pytz==2024.2; extra == "statsmagic"
|
|
115
|
+
Requires-Dist: scikit-posthocs==0.10.0; extra == "statsmagic"
|
|
116
|
+
Requires-Dist: scipy==1.14.1; extra == "statsmagic"
|
|
117
|
+
Requires-Dist: seaborn==0.13.2; extra == "statsmagic"
|
|
118
|
+
Requires-Dist: six==1.16.0; extra == "statsmagic"
|
|
119
|
+
Requires-Dist: statsmodels==0.14.4; extra == "statsmagic"
|
|
120
|
+
|
|
121
|
+
# Spellbook
|
|
122
|
+
|
|
123
|
+
Helping data scientists and engineers save time by making it simple to connect to databases, work with spreadsheets,
|
|
124
|
+
manage files, and run analyses. With Spellbook, they can focus on finding insights and solving problems instead of
|
|
125
|
+
dealing with complicated tools.
|
|
126
|
+
|
|
127
|
+
With Spellbook, you can:
|
|
128
|
+
* Seamlessly connect to Snowflake and MySQL databases, for secure querying and effortless data retrieval.
|
|
129
|
+
* Work with Google Sheets, making it easy to read, write, and update spreadsheets.
|
|
130
|
+
* Manage Google Drive, creating folders and saving files with ease.
|
|
131
|
+
* Perform statistical analyses, helping you run A/B tests and extract actionable insights.
|
|
132
|
+
|
|
133
|
+
Spellbook is built to simplify your workflows and supercharge your data exploration, so you can focus on turning insights into action!
|
|
134
|
+
|
|
135
|
+
## Table of Contents
|
|
136
|
+
|
|
137
|
+
- [Features](#features)
|
|
138
|
+
- [Installation](#installation)
|
|
139
|
+
- [Configuration](#configuration)
|
|
140
|
+
- [Contributing](#contributing)
|
|
141
|
+
- [License](#license)
|
|
142
|
+
|
|
143
|
+
## Features
|
|
144
|
+
|
|
145
|
+
- Effortless Database Connections and query execution
|
|
146
|
+
- Read/ Write to Google worksheets
|
|
147
|
+
- Manage Google Drive
|
|
148
|
+
- Perform statistical analyses
|
|
149
|
+
|
|
150
|
+
For feature methods and examples, please refer to the [Wiki Page](https://git.fullscript.io/data/spellbook/-/wikis/home).
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
## Installation
|
|
154
|
+
|
|
155
|
+
Spellbook requires Python 3.11 or higher. Use the following steps to install:
|
|
156
|
+
> Note: At the time relase, Snowpark does not support versions of Python higher than 3.11
|
|
157
|
+
|
|
158
|
+
1. Pip install:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
pip install git+https://git.fullscript.io/data/spellbook.git
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Configuration
|
|
165
|
+
Effortlessly and securely manage your connections and configurations! Simply add database types and connection
|
|
166
|
+
credentials to your [spellbook_config.yaml](spellbook_config.yaml) file, or include your Google service account details for seamless access to
|
|
167
|
+
Google services. For added security, Spellbook supports storing credentials in environment variables
|
|
168
|
+
or in a configuration file that references those variables, keeping your sensitive information safe and sound.
|
|
169
|
+
|
|
170
|
+
You must have a `spellbook_config.yaml` file in your root directory or in your project directory.
|
|
171
|
+
An example of the `spellbook_config.yaml` file is shown below:
|
|
172
|
+
|
|
173
|
+
```yaml
|
|
174
|
+
databases:
|
|
175
|
+
# Snowflake Database Connection
|
|
176
|
+
- name: alias_of_your_connection
|
|
177
|
+
type: snowflake
|
|
178
|
+
account: your_account
|
|
179
|
+
user: snowflake_user_name # Optional for private key auth
|
|
180
|
+
password: snowflake_password # Optional, used if private key is not present
|
|
181
|
+
private_key: snowflake_pk # Base64-encoded private key
|
|
182
|
+
private_key_passphrase: snowflake_pk_phrase # Optional
|
|
183
|
+
role: snowflake_role
|
|
184
|
+
warehouse: snowflake_warehouse
|
|
185
|
+
database: snowflake_database
|
|
186
|
+
schema: snowflake_schema
|
|
187
|
+
|
|
188
|
+
google_accounts:
|
|
189
|
+
# Google Sheets Service Account 1
|
|
190
|
+
- name: google_sheets_service_account_1
|
|
191
|
+
service_account: "your_base64_encoded_service_account_credentials_here" # Add your Base64-encoded service account JSON here
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Contributing
|
|
195
|
+
|
|
196
|
+
We welcome contributions! Please follow these steps:
|
|
197
|
+
|
|
198
|
+
1. Fork this repository.
|
|
199
|
+
2. Create a new branch: `git checkout -b feature-name`.
|
|
200
|
+
3. Commit your changes: `git commit -m 'Add some feature'`.
|
|
201
|
+
4. Push to the branch: `git push origin feature-name`.
|
|
202
|
+
5. Open a pull request.
|
|
203
|
+
|
|
204
|
+
## License
|
|
205
|
+
|
|
206
|
+
Spellbook is licensed under the MIT License. See the [LICENSE](LICENSE) file for more details.
|
|
207
|
+
|
|
208
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
MANIFEST.in
|
|
3
|
+
README.md
|
|
4
|
+
pyproject.toml
|
|
5
|
+
fullscript.spellbook.egg-info/PKG-INFO
|
|
6
|
+
fullscript.spellbook.egg-info/SOURCES.txt
|
|
7
|
+
fullscript.spellbook.egg-info/dependency_links.txt
|
|
8
|
+
fullscript.spellbook.egg-info/requires.txt
|
|
9
|
+
fullscript.spellbook.egg-info/top_level.txt
|
|
10
|
+
spellbook/__init__.py
|
|
11
|
+
spellbook/db_magic.py
|
|
12
|
+
spellbook/drive_magic.py
|
|
13
|
+
spellbook/sheet_magic.py
|
|
14
|
+
spellbook/stats_magic.py
|
|
15
|
+
spellbook/utils.py
|
|
16
|
+
spellbook/wizards/wizard1.txt
|
|
17
|
+
spellbook/wizards/wizard10.txt
|
|
18
|
+
spellbook/wizards/wizard11.txt
|
|
19
|
+
spellbook/wizards/wizard12.txt
|
|
20
|
+
spellbook/wizards/wizard2.txt
|
|
21
|
+
spellbook/wizards/wizard3.txt
|
|
22
|
+
spellbook/wizards/wizard4.txt
|
|
23
|
+
spellbook/wizards/wizard5.txt
|
|
24
|
+
spellbook/wizards/wizard6.txt
|
|
25
|
+
spellbook/wizards/wizard7.txt
|
|
26
|
+
spellbook/wizards/wizard8.txt
|
|
27
|
+
spellbook/wizards/wizard9.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
appnope==0.1.4
|
|
2
|
+
asn1crypto==1.5.1
|
|
3
|
+
asttokens==2.4.1
|
|
4
|
+
snowflake-sqlalchemy==1.7.0
|
|
5
|
+
certifi==2024.8.30
|
|
6
|
+
cffi==1.17.1
|
|
7
|
+
charset-normalizer==3.4.0
|
|
8
|
+
cloudpickle==2.2.1
|
|
9
|
+
comm==0.2.2
|
|
10
|
+
cryptography==43.0.3
|
|
11
|
+
debugpy==1.8.8
|
|
12
|
+
decorator==5.1.1
|
|
13
|
+
executing==2.1.0
|
|
14
|
+
filelock==3.16.1
|
|
15
|
+
idna==3.10
|
|
16
|
+
ipykernel==6.29.5
|
|
17
|
+
ipython==8.29.0
|
|
18
|
+
jedi==0.19.2
|
|
19
|
+
jupyter_client==8.6.3
|
|
20
|
+
jupyter_core==5.7.2
|
|
21
|
+
matplotlib-inline==0.1.7
|
|
22
|
+
nest-asyncio==1.6.0
|
|
23
|
+
numpy==2.1.3
|
|
24
|
+
packaging==24.2
|
|
25
|
+
pandas==2.2.3
|
|
26
|
+
parso==0.8.4
|
|
27
|
+
pexpect==4.9.0
|
|
28
|
+
platformdirs==4.3.6
|
|
29
|
+
prompt_toolkit==3.0.48
|
|
30
|
+
protobuf==5.28.3
|
|
31
|
+
psutil==6.1.0
|
|
32
|
+
ptyprocess==0.7.0
|
|
33
|
+
pure_eval==0.2.3
|
|
34
|
+
pyarrow==18.0.0
|
|
35
|
+
pycparser==2.22
|
|
36
|
+
Pygments==2.18.0
|
|
37
|
+
PyJWT==2.9.0
|
|
38
|
+
pyOpenSSL==24.2.1
|
|
39
|
+
python-dateutil==2.9.0.post0
|
|
40
|
+
pytz==2024.2
|
|
41
|
+
PyYAML==6.0.2
|
|
42
|
+
pyzmq==26.2.0
|
|
43
|
+
requests==2.32.3
|
|
44
|
+
six==1.16.0
|
|
45
|
+
snowflake-connector-python==3.12.3
|
|
46
|
+
snowflake-snowpark-python==1.25.0
|
|
47
|
+
sortedcontainers==2.4.0
|
|
48
|
+
SQLAlchemy==2.0.36
|
|
49
|
+
stack-data==0.6.3
|
|
50
|
+
tomlkit==0.13.2
|
|
51
|
+
tornado==6.4.1
|
|
52
|
+
traitlets==5.14.3
|
|
53
|
+
typing_extensions==4.12.2
|
|
54
|
+
tzdata==2024.2
|
|
55
|
+
tzlocal==5.2
|
|
56
|
+
urllib3==2.2.3
|
|
57
|
+
wcwidth==0.2.13
|
|
58
|
+
|
|
59
|
+
[drivemagic]
|
|
60
|
+
cachetools==5.5.0
|
|
61
|
+
google-api-core==2.23.0
|
|
62
|
+
google-api-python-client==2.153.0
|
|
63
|
+
google-auth==2.36.0
|
|
64
|
+
google-auth-httplib2==0.2.0
|
|
65
|
+
google-auth-oauthlib==1.2.1
|
|
66
|
+
googleapis-common-protos==1.66.0
|
|
67
|
+
httplib2==0.22.0
|
|
68
|
+
oauthlib==3.2.2
|
|
69
|
+
proto-plus==1.25.0
|
|
70
|
+
pyasn1==0.6.1
|
|
71
|
+
pyasn1_modules==0.4.1
|
|
72
|
+
pyparsing==3.2.0
|
|
73
|
+
requests-oauthlib==2.0.0
|
|
74
|
+
rsa==4.9
|
|
75
|
+
uritemplate==4.1.1
|
|
76
|
+
|
|
77
|
+
[sheetmagic]
|
|
78
|
+
cachetools==5.5.0
|
|
79
|
+
google-api-core==2.23.0
|
|
80
|
+
google-api-python-client==2.153.0
|
|
81
|
+
google-auth==2.36.0
|
|
82
|
+
google-auth-httplib2==0.2.0
|
|
83
|
+
google-auth-oauthlib==1.2.1
|
|
84
|
+
googleapis-common-protos==1.66.0
|
|
85
|
+
httplib2==0.22.0
|
|
86
|
+
oauthlib==3.2.2
|
|
87
|
+
pyasn1==0.6.1
|
|
88
|
+
pyasn1_modules==0.4.1
|
|
89
|
+
Pygments==2.18.0
|
|
90
|
+
pygsheets==2.0.6
|
|
91
|
+
pyparsing==3.2.0
|
|
92
|
+
requests-oauthlib==2.0.0
|
|
93
|
+
rsa==4.9
|
|
94
|
+
uritemplate==4.1.1
|
|
95
|
+
|
|
96
|
+
[statsmagic]
|
|
97
|
+
contourpy==1.3.1
|
|
98
|
+
cycler==0.12.1
|
|
99
|
+
fonttools==4.55.0
|
|
100
|
+
kiwisolver==1.4.7
|
|
101
|
+
matplotlib==3.9.2
|
|
102
|
+
patsy==1.0.1
|
|
103
|
+
pillow==11.0.0
|
|
104
|
+
pyparsing==3.2.0
|
|
105
|
+
python-dateutil==2.9.0.post0
|
|
106
|
+
pytz==2024.2
|
|
107
|
+
scikit-posthocs==0.10.0
|
|
108
|
+
scipy==1.14.1
|
|
109
|
+
seaborn==0.13.2
|
|
110
|
+
six==1.16.0
|
|
111
|
+
statsmodels==0.14.4
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
spellbook
|