├── .github
└── workflows
│ └── push.yml
├── .gitignore
├── LICENSE
├── README.md
├── docker-compose.yml
├── infra
├── createbuckets-entrypoint.sh
├── hive-metastore-init.sql
├── hive-site.xml
└── pyspark.Dockerfile
├── notebooks
└── example.ipynb
├── poetry.lock
├── pyproject.toml
├── src
└── connections_utils.py
└── test
├── __init__.py
├── test_pytest_example.py
└── test_unittest_example.py
/.github/workflows/push.yml:
--------------------------------------------------------------------------------
1 | name: Testing on push
2 | on: push
3 | jobs:
4 | test:
5 | runs-on: ubuntu-latest
6 | steps:
7 | - uses: actions/checkout@v2
8 | - name: Build the stack
9 | run: docker-compose up -d
10 | - name: Test
11 | run: docker exec spark-node pytest ./
12 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 emmc15
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.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Pyspark Testing Env
2 |
3 | 
4 |
5 | Example Repo to have full end-to-end pyspark testing via docker-compose that allows for the following:
6 |
7 | - Quick and Easy setup for local testing and development environment and abstracting the complexity of setting up a pyspark environment
8 | - Full Pyspark Implementation
9 | - Full S3 like implementation with Minio
10 | - Read and write data to S3 and access them as tables in Spark through metastore
11 | - Ability to run pytest on the pyspark container
12 | - Read and write with delta format
13 | - Consistent environment for testing and development with docker-compose and poetry
14 | - Ability to run tests on push with github actions
15 |
16 |
17 |
18 | *NOTE*: This repo is not intended to be used in production. It is only intended to be used for testing purposes only.
19 |
20 |
21 | ## Quickstart
22 |
23 | ```
24 | docker-compose build
25 | docker-compose up -d
26 | docker exec -it spark-node pytest .
27 | ```
28 |
29 | ## Folder Layout
30 |
31 | **infra**: Contains the docker-compose file and the dockerfiles for the spark and minio containers
32 |
33 | **src**: Contains the python code
34 |
35 | **tests**: Contains the example tests used for working with pyspark with either pytest or unittest
36 |
37 | **.github**: Contains the github actions workflow for running the tests on push
38 |
39 |
40 | ## What is `connection_utils.py`?
41 |
42 | `connection_utils.py` is a utility file that contains the logic for connecting to the spark cluster and minio s3 cluster/node. It provides functions with sensible defaults for when running tests and accessing services locally with the docker-compose. When running tests it is highly recommeneded to use them, as without them you will need to pass in the connection information for the spark cluster and minio s3 cluster/node. This is not recommended as it will make the tests less portable and more difficult to run locally. The functions in `connection_utils.py` are as follows:
43 |
44 | - `create_docker_spark_builder`: Creates a spark builder that is configured to connect to the spark cluster running in docker-compose
45 | - `create_docker_s3_resource`: Creates a boto3 s3 resource that is configured to connect to the minio s3 cluster/node running in docker-compose
46 | - `create_docker_s3_client`: Creates a boto3 s3 client that is configured to connect to the minio s3 cluster/node running in docker-compose
47 |
48 |
49 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: "3"
2 |
3 | services:
4 | mariadb:
5 | container_name: mariadb-hive
6 | image: mariadb:10.9.4
7 | ports:
8 | - 3036:3306
9 | environment:
10 | MYSQL_ROOT_PASSWORD: admin
11 | MYSQL_USER: admin
12 | MYSQL_PASSWORD: admin
13 | MYSQL_DATABASE: metastore_db
14 | volumes:
15 | - ./infra/hive-metastore-init.sql:/docker-entrypoint-initdb.d/hive-metastore-init.sql
16 |
17 | minio:
18 | container_name: minio
19 | image: minio/minio:latest
20 | environment:
21 | - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-accesskey}
22 | - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-secretkey}
23 | ports:
24 | - 9000:9000 # api port
25 | - 35703:35703 # console page port
26 | command: server /data
27 |
28 | createbuckets:
29 | image: minio/mc
30 | environment:
31 | - MINIO_ACCESS_KEY=${MINIO_ACCESS_KEY:-accesskey}
32 | - MINIO_SECRET_KEY=${MINIO_SECRET_KEY:-secretkey}
33 | volumes:
34 | - ./infra/createbuckets-entrypoint.sh:/usr/bin/entrypoint.sh
35 | entrypoint: /bin/sh /usr/bin/entrypoint.sh
36 | depends_on:
37 | - minio
38 |
39 | spark-node:
40 | container_name: spark-node
41 | image: spark-node:latest
42 | build:
43 | context: .
44 | dockerfile: ./infra/pyspark.Dockerfile
45 | volumes:
46 | - .:/workspace
47 | ports:
48 | - 8888:8888
49 | depends_on:
50 | - mariadb
51 | - minio
52 |
--------------------------------------------------------------------------------
/infra/createbuckets-entrypoint.sh:
--------------------------------------------------------------------------------
1 | #/bin/bash
2 |
3 |
4 | /usr/bin/mc config host add local http://minio:9000 ${MINIO_ACCESS_KEY} ${MINIO_SECRET_KEY}
5 | /usr/bin/mc mb local/spark/warehouse
6 | /usr/bin/mc policy download local/spark/warehouse
7 | exit 0
--------------------------------------------------------------------------------
/infra/hive-metastore-init.sql:
--------------------------------------------------------------------------------
1 | -- SOURCE: https://github.com/apache/hive/blob/master/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-3.0.0.mysql.sql
2 |
3 | -- MySQL dump 10.13 Distrib 5.5.25, for osx10.6 (i386)
4 | --
5 | -- Host: localhost Database: test
6 | -- ------------------------------------------------------
7 | -- Server version 5.5.25
8 |
9 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
10 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
11 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
12 | /*!40101 SET NAMES utf8 */;
13 | /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
14 | /*!40103 SET TIME_ZONE='+00:00' */;
15 | /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
16 | /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
17 | /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
18 | /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
19 |
20 | --
21 | -- Table structure for table `BUCKETING_COLS`
22 | --
23 |
24 | CREATE DATABASE IF NOT EXISTS metastore_db;
25 | USE metastore_db;
26 |
27 |
28 | /*!40101 SET @saved_cs_client = @@character_set_client */;
29 | /*!40101 SET character_set_client = utf8 */;
30 | CREATE TABLE IF NOT EXISTS `BUCKETING_COLS` (
31 | `SD_ID` bigint(20) NOT NULL,
32 | `BUCKET_COL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
33 | `INTEGER_IDX` int(11) NOT NULL,
34 | PRIMARY KEY (`SD_ID`,`INTEGER_IDX`),
35 | KEY `BUCKETING_COLS_N49` (`SD_ID`),
36 | CONSTRAINT `BUCKETING_COLS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
37 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
38 | /*!40101 SET character_set_client = @saved_cs_client */;
39 |
40 | --
41 | -- Table structure for table `CDS`
42 | --
43 |
44 | /*!40101 SET @saved_cs_client = @@character_set_client */;
45 | /*!40101 SET character_set_client = utf8 */;
46 | CREATE TABLE IF NOT EXISTS `CDS` (
47 | `CD_ID` bigint(20) NOT NULL,
48 | PRIMARY KEY (`CD_ID`)
49 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
50 | /*!40101 SET character_set_client = @saved_cs_client */;
51 |
52 | --
53 | -- Table structure for table `COLUMNS_V2`
54 | --
55 |
56 | /*!40101 SET @saved_cs_client = @@character_set_client */;
57 | /*!40101 SET character_set_client = utf8 */;
58 | CREATE TABLE IF NOT EXISTS `COLUMNS_V2` (
59 | `CD_ID` bigint(20) NOT NULL,
60 | `COMMENT` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
61 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
62 | `TYPE_NAME` MEDIUMTEXT DEFAULT NULL,
63 | `INTEGER_IDX` int(11) NOT NULL,
64 | PRIMARY KEY (`CD_ID`,`COLUMN_NAME`),
65 | KEY `COLUMNS_V2_N49` (`CD_ID`),
66 | CONSTRAINT `COLUMNS_V2_FK1` FOREIGN KEY (`CD_ID`) REFERENCES `CDS` (`CD_ID`)
67 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
68 | /*!40101 SET character_set_client = @saved_cs_client */;
69 |
70 | --
71 | -- Table structure for table `DATABASE_PARAMS`
72 | --
73 |
74 | /*!40101 SET @saved_cs_client = @@character_set_client */;
75 | /*!40101 SET character_set_client = utf8 */;
76 | CREATE TABLE IF NOT EXISTS `DATABASE_PARAMS` (
77 | `DB_ID` bigint(20) NOT NULL,
78 | `PARAM_KEY` varchar(180) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
79 | `PARAM_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
80 | PRIMARY KEY (`DB_ID`,`PARAM_KEY`),
81 | KEY `DATABASE_PARAMS_N49` (`DB_ID`),
82 | CONSTRAINT `DATABASE_PARAMS_FK1` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
83 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
84 | /*!40101 SET character_set_client = @saved_cs_client */;
85 |
86 | CREATE TABLE `CTLGS` (
87 | `CTLG_ID` BIGINT PRIMARY KEY,
88 | `NAME` VARCHAR(256),
89 | `DESC` VARCHAR(4000),
90 | `LOCATION_URI` VARCHAR(4000) NOT NULL,
91 | UNIQUE KEY `UNIQUE_CATALOG` (`NAME`)
92 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
93 |
94 | -- Insert a default value. The location is TBD. Hive will fix this when it starts
95 | INSERT INTO `CTLGS` VALUES (1, 'hive', 'Default catalog for Hive', 'TBD');
96 |
97 | --
98 | -- Table structure for table `DBS`
99 | --
100 |
101 | /*!40101 SET @saved_cs_client = @@character_set_client */;
102 | /*!40101 SET character_set_client = utf8 */;
103 | CREATE TABLE IF NOT EXISTS `DBS` (
104 | `DB_ID` bigint(20) NOT NULL,
105 | `DESC` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
106 | `DB_LOCATION_URI` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
107 | `NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
108 | `OWNER_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
109 | `OWNER_TYPE` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
110 | `CTLG_NAME` varchar(256) NOT NULL DEFAULT 'hive',
111 | PRIMARY KEY (`DB_ID`),
112 | UNIQUE KEY `UNIQUE_DATABASE` (`NAME`, `CTLG_NAME`),
113 | CONSTRAINT `CTLG_FK1` FOREIGN KEY (`CTLG_NAME`) REFERENCES `CTLGS` (`NAME`)
114 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
115 | /*!40101 SET character_set_client = @saved_cs_client */;
116 |
117 | --
118 | -- Table structure for table `DB_PRIVS`
119 | --
120 |
121 | /*!40101 SET @saved_cs_client = @@character_set_client */;
122 | /*!40101 SET character_set_client = utf8 */;
123 | CREATE TABLE IF NOT EXISTS `DB_PRIVS` (
124 | `DB_GRANT_ID` bigint(20) NOT NULL,
125 | `CREATE_TIME` int(11) NOT NULL,
126 | `DB_ID` bigint(20) DEFAULT NULL,
127 | `GRANT_OPTION` smallint(6) NOT NULL,
128 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
129 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
130 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
131 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
132 | `DB_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
133 | PRIMARY KEY (`DB_GRANT_ID`),
134 | UNIQUE KEY `DBPRIVILEGEINDEX` (`DB_ID`,`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`DB_PRIV`,`GRANTOR`,`GRANTOR_TYPE`),
135 | KEY `DB_PRIVS_N49` (`DB_ID`),
136 | CONSTRAINT `DB_PRIVS_FK1` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
137 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
138 | /*!40101 SET character_set_client = @saved_cs_client */;
139 |
140 | --
141 | -- Table structure for table `GLOBAL_PRIVS`
142 | --
143 |
144 | /*!40101 SET @saved_cs_client = @@character_set_client */;
145 | /*!40101 SET character_set_client = utf8 */;
146 | CREATE TABLE IF NOT EXISTS `GLOBAL_PRIVS` (
147 | `USER_GRANT_ID` bigint(20) NOT NULL,
148 | `CREATE_TIME` int(11) NOT NULL,
149 | `GRANT_OPTION` smallint(6) NOT NULL,
150 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
151 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
152 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
153 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
154 | `USER_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
155 | PRIMARY KEY (`USER_GRANT_ID`),
156 | UNIQUE KEY `GLOBALPRIVILEGEINDEX` (`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`USER_PRIV`,`GRANTOR`,`GRANTOR_TYPE`)
157 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
158 | /*!40101 SET character_set_client = @saved_cs_client */;
159 |
160 | --
161 | -- Table structure for table `IDXS`
162 | --
163 |
164 | /*!40101 SET @saved_cs_client = @@character_set_client */;
165 | /*!40101 SET character_set_client = utf8 */;
166 | CREATE TABLE IF NOT EXISTS `IDXS` (
167 | `INDEX_ID` bigint(20) NOT NULL,
168 | `CREATE_TIME` int(11) NOT NULL,
169 | `DEFERRED_REBUILD` bit(1) NOT NULL,
170 | `INDEX_HANDLER_CLASS` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
171 | `INDEX_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
172 | `INDEX_TBL_ID` bigint(20) DEFAULT NULL,
173 | `LAST_ACCESS_TIME` int(11) NOT NULL,
174 | `ORIG_TBL_ID` bigint(20) DEFAULT NULL,
175 | `SD_ID` bigint(20) DEFAULT NULL,
176 | PRIMARY KEY (`INDEX_ID`),
177 | UNIQUE KEY `UNIQUEINDEX` (`INDEX_NAME`,`ORIG_TBL_ID`),
178 | KEY `IDXS_N51` (`SD_ID`),
179 | KEY `IDXS_N50` (`INDEX_TBL_ID`),
180 | KEY `IDXS_N49` (`ORIG_TBL_ID`),
181 | CONSTRAINT `IDXS_FK1` FOREIGN KEY (`ORIG_TBL_ID`) REFERENCES `TBLS` (`TBL_ID`),
182 | CONSTRAINT `IDXS_FK2` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`),
183 | CONSTRAINT `IDXS_FK3` FOREIGN KEY (`INDEX_TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
184 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
185 | /*!40101 SET character_set_client = @saved_cs_client */;
186 |
187 | --
188 | -- Table structure for table `INDEX_PARAMS`
189 | --
190 |
191 | /*!40101 SET @saved_cs_client = @@character_set_client */;
192 | /*!40101 SET character_set_client = utf8 */;
193 | CREATE TABLE IF NOT EXISTS `INDEX_PARAMS` (
194 | `INDEX_ID` bigint(20) NOT NULL,
195 | `PARAM_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
196 | `PARAM_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
197 | PRIMARY KEY (`INDEX_ID`,`PARAM_KEY`),
198 | KEY `INDEX_PARAMS_N49` (`INDEX_ID`),
199 | CONSTRAINT `INDEX_PARAMS_FK1` FOREIGN KEY (`INDEX_ID`) REFERENCES `IDXS` (`INDEX_ID`)
200 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
201 | /*!40101 SET character_set_client = @saved_cs_client */;
202 |
203 | --
204 | -- Table structure for table `NUCLEUS_TABLES`
205 | --
206 |
207 | /*!40101 SET @saved_cs_client = @@character_set_client */;
208 | /*!40101 SET character_set_client = utf8 */;
209 | CREATE TABLE IF NOT EXISTS `NUCLEUS_TABLES` (
210 | `CLASS_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
211 | `TABLE_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
212 | `TYPE` varchar(4) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
213 | `OWNER` varchar(2) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
214 | `VERSION` varchar(20) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
215 | `INTERFACE_NAME` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
216 | PRIMARY KEY (`CLASS_NAME`)
217 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
218 | /*!40101 SET character_set_client = @saved_cs_client */;
219 |
220 | --
221 | -- Table structure for table `PARTITIONS`
222 | --
223 |
224 | /*!40101 SET @saved_cs_client = @@character_set_client */;
225 | /*!40101 SET character_set_client = utf8 */;
226 | CREATE TABLE IF NOT EXISTS `PARTITIONS` (
227 | `PART_ID` bigint(20) NOT NULL,
228 | `CREATE_TIME` int(11) NOT NULL,
229 | `LAST_ACCESS_TIME` int(11) NOT NULL,
230 | `PART_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
231 | `SD_ID` bigint(20) DEFAULT NULL,
232 | `TBL_ID` bigint(20) DEFAULT NULL,
233 | PRIMARY KEY (`PART_ID`),
234 | UNIQUE KEY `UNIQUEPARTITION` (`PART_NAME`,`TBL_ID`),
235 | KEY `PARTITIONS_N49` (`TBL_ID`),
236 | KEY `PARTITIONS_N50` (`SD_ID`),
237 | CONSTRAINT `PARTITIONS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`),
238 | CONSTRAINT `PARTITIONS_FK2` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
239 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
240 | /*!40101 SET character_set_client = @saved_cs_client */;
241 |
242 | --
243 | -- Table structure for table `PARTITION_EVENTS`
244 | --
245 |
246 | /*!40101 SET @saved_cs_client = @@character_set_client */;
247 | /*!40101 SET character_set_client = utf8 */;
248 | CREATE TABLE IF NOT EXISTS `PARTITION_EVENTS` (
249 | `PART_NAME_ID` bigint(20) NOT NULL,
250 | `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
251 | `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
252 | `EVENT_TIME` bigint(20) NOT NULL,
253 | `EVENT_TYPE` int(11) NOT NULL,
254 | `PARTITION_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
255 | `TBL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
256 | PRIMARY KEY (`PART_NAME_ID`),
257 | KEY `PARTITIONEVENTINDEX` (`PARTITION_NAME`)
258 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
259 | /*!40101 SET character_set_client = @saved_cs_client */;
260 |
261 | --
262 | -- Table structure for table `PARTITION_KEYS`
263 | --
264 |
265 | /*!40101 SET @saved_cs_client = @@character_set_client */;
266 | /*!40101 SET character_set_client = utf8 */;
267 | CREATE TABLE IF NOT EXISTS `PARTITION_KEYS` (
268 | `TBL_ID` bigint(20) NOT NULL,
269 | `PKEY_COMMENT` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
270 | `PKEY_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
271 | `PKEY_TYPE` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
272 | `INTEGER_IDX` int(11) NOT NULL,
273 | PRIMARY KEY (`TBL_ID`,`PKEY_NAME`),
274 | KEY `PARTITION_KEYS_N49` (`TBL_ID`),
275 | CONSTRAINT `PARTITION_KEYS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
276 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
277 | /*!40101 SET character_set_client = @saved_cs_client */;
278 |
279 | --
280 | -- Table structure for table `PARTITION_KEY_VALS`
281 | --
282 |
283 | /*!40101 SET @saved_cs_client = @@character_set_client */;
284 | /*!40101 SET character_set_client = utf8 */;
285 | CREATE TABLE IF NOT EXISTS `PARTITION_KEY_VALS` (
286 | `PART_ID` bigint(20) NOT NULL,
287 | `PART_KEY_VAL` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
288 | `INTEGER_IDX` int(11) NOT NULL,
289 | PRIMARY KEY (`PART_ID`,`INTEGER_IDX`),
290 | KEY `PARTITION_KEY_VALS_N49` (`PART_ID`),
291 | CONSTRAINT `PARTITION_KEY_VALS_FK1` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
292 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
293 | /*!40101 SET character_set_client = @saved_cs_client */;
294 |
295 | --
296 | -- Table structure for table `PARTITION_PARAMS`
297 | --
298 |
299 | /*!40101 SET @saved_cs_client = @@character_set_client */;
300 | /*!40101 SET character_set_client = utf8 */;
301 | CREATE TABLE IF NOT EXISTS `PARTITION_PARAMS` (
302 | `PART_ID` bigint(20) NOT NULL,
303 | `PARAM_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
304 | `PARAM_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
305 | PRIMARY KEY (`PART_ID`,`PARAM_KEY`),
306 | KEY `PARTITION_PARAMS_N49` (`PART_ID`),
307 | CONSTRAINT `PARTITION_PARAMS_FK1` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
308 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
309 | /*!40101 SET character_set_client = @saved_cs_client */;
310 |
311 | --
312 | -- Table structure for table `PART_COL_PRIVS`
313 | --
314 |
315 | /*!40101 SET @saved_cs_client = @@character_set_client */;
316 | /*!40101 SET character_set_client = utf8 */;
317 | CREATE TABLE IF NOT EXISTS `PART_COL_PRIVS` (
318 | `PART_COLUMN_GRANT_ID` bigint(20) NOT NULL,
319 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
320 | `CREATE_TIME` int(11) NOT NULL,
321 | `GRANT_OPTION` smallint(6) NOT NULL,
322 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
323 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
324 | `PART_ID` bigint(20) DEFAULT NULL,
325 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
326 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
327 | `PART_COL_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
328 | PRIMARY KEY (`PART_COLUMN_GRANT_ID`),
329 | KEY `PART_COL_PRIVS_N49` (`PART_ID`),
330 | KEY `PARTITIONCOLUMNPRIVILEGEINDEX` (`PART_ID`,`COLUMN_NAME`,`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`PART_COL_PRIV`,`GRANTOR`,`GRANTOR_TYPE`),
331 | CONSTRAINT `PART_COL_PRIVS_FK1` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
332 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
333 | /*!40101 SET character_set_client = @saved_cs_client */;
334 |
335 | --
336 | -- Table structure for table `PART_PRIVS`
337 | --
338 |
339 | /*!40101 SET @saved_cs_client = @@character_set_client */;
340 | /*!40101 SET character_set_client = utf8 */;
341 | CREATE TABLE IF NOT EXISTS `PART_PRIVS` (
342 | `PART_GRANT_ID` bigint(20) NOT NULL,
343 | `CREATE_TIME` int(11) NOT NULL,
344 | `GRANT_OPTION` smallint(6) NOT NULL,
345 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
346 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
347 | `PART_ID` bigint(20) DEFAULT NULL,
348 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
349 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
350 | `PART_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
351 | PRIMARY KEY (`PART_GRANT_ID`),
352 | KEY `PARTPRIVILEGEINDEX` (`PART_ID`,`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`PART_PRIV`,`GRANTOR`,`GRANTOR_TYPE`),
353 | KEY `PART_PRIVS_N49` (`PART_ID`),
354 | CONSTRAINT `PART_PRIVS_FK1` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
355 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
356 | /*!40101 SET character_set_client = @saved_cs_client */;
357 |
358 | --
359 | -- Table structure for table `ROLES`
360 | --
361 |
362 | /*!40101 SET @saved_cs_client = @@character_set_client */;
363 | /*!40101 SET character_set_client = utf8 */;
364 | CREATE TABLE IF NOT EXISTS `ROLES` (
365 | `ROLE_ID` bigint(20) NOT NULL,
366 | `CREATE_TIME` int(11) NOT NULL,
367 | `OWNER_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
368 | `ROLE_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
369 | PRIMARY KEY (`ROLE_ID`),
370 | UNIQUE KEY `ROLEENTITYINDEX` (`ROLE_NAME`)
371 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
372 | /*!40101 SET character_set_client = @saved_cs_client */;
373 |
374 | --
375 | -- Table structure for table `ROLE_MAP`
376 | --
377 |
378 | /*!40101 SET @saved_cs_client = @@character_set_client */;
379 | /*!40101 SET character_set_client = utf8 */;
380 | CREATE TABLE IF NOT EXISTS `ROLE_MAP` (
381 | `ROLE_GRANT_ID` bigint(20) NOT NULL,
382 | `ADD_TIME` int(11) NOT NULL,
383 | `GRANT_OPTION` smallint(6) NOT NULL,
384 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
385 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
386 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
387 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
388 | `ROLE_ID` bigint(20) DEFAULT NULL,
389 | PRIMARY KEY (`ROLE_GRANT_ID`),
390 | UNIQUE KEY `USERROLEMAPINDEX` (`PRINCIPAL_NAME`,`ROLE_ID`,`GRANTOR`,`GRANTOR_TYPE`),
391 | KEY `ROLE_MAP_N49` (`ROLE_ID`),
392 | CONSTRAINT `ROLE_MAP_FK1` FOREIGN KEY (`ROLE_ID`) REFERENCES `ROLES` (`ROLE_ID`)
393 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
394 | /*!40101 SET character_set_client = @saved_cs_client */;
395 |
396 | --
397 | -- Table structure for table `SDS`
398 | --
399 |
400 | /*!40101 SET @saved_cs_client = @@character_set_client */;
401 | /*!40101 SET character_set_client = utf8 */;
402 | CREATE TABLE IF NOT EXISTS `SDS` (
403 | `SD_ID` bigint(20) NOT NULL,
404 | `CD_ID` bigint(20) DEFAULT NULL,
405 | `INPUT_FORMAT` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
406 | `IS_COMPRESSED` bit(1) NOT NULL,
407 | `IS_STOREDASSUBDIRECTORIES` bit(1) NOT NULL,
408 | `LOCATION` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
409 | `NUM_BUCKETS` int(11) NOT NULL,
410 | `OUTPUT_FORMAT` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
411 | `SERDE_ID` bigint(20) DEFAULT NULL,
412 | PRIMARY KEY (`SD_ID`),
413 | KEY `SDS_N49` (`SERDE_ID`),
414 | KEY `SDS_N50` (`CD_ID`),
415 | CONSTRAINT `SDS_FK1` FOREIGN KEY (`SERDE_ID`) REFERENCES `SERDES` (`SERDE_ID`),
416 | CONSTRAINT `SDS_FK2` FOREIGN KEY (`CD_ID`) REFERENCES `CDS` (`CD_ID`)
417 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
418 | /*!40101 SET character_set_client = @saved_cs_client */;
419 |
420 | --
421 | -- Table structure for table `SD_PARAMS`
422 | --
423 |
424 | /*!40101 SET @saved_cs_client = @@character_set_client */;
425 | /*!40101 SET character_set_client = utf8 */;
426 | CREATE TABLE IF NOT EXISTS `SD_PARAMS` (
427 | `SD_ID` bigint(20) NOT NULL,
428 | `PARAM_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
429 | `PARAM_VALUE` MEDIUMTEXT CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
430 | PRIMARY KEY (`SD_ID`,`PARAM_KEY`),
431 | KEY `SD_PARAMS_N49` (`SD_ID`),
432 | CONSTRAINT `SD_PARAMS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
433 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
434 | /*!40101 SET character_set_client = @saved_cs_client */;
435 |
436 | --
437 | -- Table structure for table `SEQUENCE_TABLE`
438 | --
439 |
440 | /*!40101 SET @saved_cs_client = @@character_set_client */;
441 | /*!40101 SET character_set_client = utf8 */;
442 | CREATE TABLE IF NOT EXISTS `SEQUENCE_TABLE` (
443 | `SEQUENCE_NAME` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
444 | `NEXT_VAL` bigint(20) NOT NULL,
445 | PRIMARY KEY (`SEQUENCE_NAME`)
446 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
447 | /*!40101 SET character_set_client = @saved_cs_client */;
448 |
449 | INSERT INTO `SEQUENCE_TABLE` (`SEQUENCE_NAME`, `NEXT_VAL`) VALUES ('org.apache.hadoop.hive.metastore.model.MNotificationLog', 1);
450 |
451 | --
452 | -- Table structure for table `SERDES`
453 | --
454 |
455 | /*!40101 SET @saved_cs_client = @@character_set_client */;
456 | /*!40101 SET character_set_client = utf8 */;
457 | CREATE TABLE IF NOT EXISTS `SERDES` (
458 | `SERDE_ID` bigint(20) NOT NULL,
459 | `NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
460 | `SLIB` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
461 | `DESCRIPTION` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
462 | `SERIALIZER_CLASS` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
463 | `DESERIALIZER_CLASS` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
464 | `SERDE_TYPE` integer,
465 | PRIMARY KEY (`SERDE_ID`)
466 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
467 | /*!40101 SET character_set_client = @saved_cs_client */;
468 |
469 | --
470 | -- Table structure for table `SERDE_PARAMS`
471 | --
472 |
473 | /*!40101 SET @saved_cs_client = @@character_set_client */;
474 | /*!40101 SET character_set_client = utf8 */;
475 | CREATE TABLE IF NOT EXISTS `SERDE_PARAMS` (
476 | `SERDE_ID` bigint(20) NOT NULL,
477 | `PARAM_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
478 | `PARAM_VALUE` MEDIUMTEXT CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
479 | PRIMARY KEY (`SERDE_ID`,`PARAM_KEY`),
480 | KEY `SERDE_PARAMS_N49` (`SERDE_ID`),
481 | CONSTRAINT `SERDE_PARAMS_FK1` FOREIGN KEY (`SERDE_ID`) REFERENCES `SERDES` (`SERDE_ID`)
482 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
483 | /*!40101 SET character_set_client = @saved_cs_client */;
484 |
485 | --
486 | -- Table structure for table `SKEWED_COL_NAMES`
487 | --
488 |
489 | /*!40101 SET @saved_cs_client = @@character_set_client */;
490 | /*!40101 SET character_set_client = utf8 */;
491 | CREATE TABLE IF NOT EXISTS `SKEWED_COL_NAMES` (
492 | `SD_ID` bigint(20) NOT NULL,
493 | `SKEWED_COL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
494 | `INTEGER_IDX` int(11) NOT NULL,
495 | PRIMARY KEY (`SD_ID`,`INTEGER_IDX`),
496 | KEY `SKEWED_COL_NAMES_N49` (`SD_ID`),
497 | CONSTRAINT `SKEWED_COL_NAMES_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
498 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
499 | /*!40101 SET character_set_client = @saved_cs_client */;
500 |
501 | --
502 | -- Table structure for table `SKEWED_COL_VALUE_LOC_MAP`
503 | --
504 |
505 | /*!40101 SET @saved_cs_client = @@character_set_client */;
506 | /*!40101 SET character_set_client = utf8 */;
507 | CREATE TABLE IF NOT EXISTS `SKEWED_COL_VALUE_LOC_MAP` (
508 | `SD_ID` bigint(20) NOT NULL,
509 | `STRING_LIST_ID_KID` bigint(20) NOT NULL,
510 | `LOCATION` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
511 | PRIMARY KEY (`SD_ID`,`STRING_LIST_ID_KID`),
512 | KEY `SKEWED_COL_VALUE_LOC_MAP_N49` (`STRING_LIST_ID_KID`),
513 | KEY `SKEWED_COL_VALUE_LOC_MAP_N50` (`SD_ID`),
514 | CONSTRAINT `SKEWED_COL_VALUE_LOC_MAP_FK2` FOREIGN KEY (`STRING_LIST_ID_KID`) REFERENCES `SKEWED_STRING_LIST` (`STRING_LIST_ID`),
515 | CONSTRAINT `SKEWED_COL_VALUE_LOC_MAP_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
516 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
517 | /*!40101 SET character_set_client = @saved_cs_client */;
518 |
519 | --
520 | -- Table structure for table `SKEWED_STRING_LIST`
521 | --
522 |
523 | /*!40101 SET @saved_cs_client = @@character_set_client */;
524 | /*!40101 SET character_set_client = utf8 */;
525 | CREATE TABLE IF NOT EXISTS `SKEWED_STRING_LIST` (
526 | `STRING_LIST_ID` bigint(20) NOT NULL,
527 | PRIMARY KEY (`STRING_LIST_ID`)
528 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
529 | /*!40101 SET character_set_client = @saved_cs_client */;
530 |
531 | --
532 | -- Table structure for table `SKEWED_STRING_LIST_VALUES`
533 | --
534 |
535 | /*!40101 SET @saved_cs_client = @@character_set_client */;
536 | /*!40101 SET character_set_client = utf8 */;
537 | CREATE TABLE IF NOT EXISTS `SKEWED_STRING_LIST_VALUES` (
538 | `STRING_LIST_ID` bigint(20) NOT NULL,
539 | `STRING_LIST_VALUE` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
540 | `INTEGER_IDX` int(11) NOT NULL,
541 | PRIMARY KEY (`STRING_LIST_ID`,`INTEGER_IDX`),
542 | KEY `SKEWED_STRING_LIST_VALUES_N49` (`STRING_LIST_ID`),
543 | CONSTRAINT `SKEWED_STRING_LIST_VALUES_FK1` FOREIGN KEY (`STRING_LIST_ID`) REFERENCES `SKEWED_STRING_LIST` (`STRING_LIST_ID`)
544 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
545 | /*!40101 SET character_set_client = @saved_cs_client */;
546 |
547 | --
548 | -- Table structure for table `SKEWED_VALUES`
549 | --
550 |
551 | /*!40101 SET @saved_cs_client = @@character_set_client */;
552 | /*!40101 SET character_set_client = utf8 */;
553 | CREATE TABLE IF NOT EXISTS `SKEWED_VALUES` (
554 | `SD_ID_OID` bigint(20) NOT NULL,
555 | `STRING_LIST_ID_EID` bigint(20) NOT NULL,
556 | `INTEGER_IDX` int(11) NOT NULL,
557 | PRIMARY KEY (`SD_ID_OID`,`INTEGER_IDX`),
558 | KEY `SKEWED_VALUES_N50` (`SD_ID_OID`),
559 | KEY `SKEWED_VALUES_N49` (`STRING_LIST_ID_EID`),
560 | CONSTRAINT `SKEWED_VALUES_FK2` FOREIGN KEY (`STRING_LIST_ID_EID`) REFERENCES `SKEWED_STRING_LIST` (`STRING_LIST_ID`),
561 | CONSTRAINT `SKEWED_VALUES_FK1` FOREIGN KEY (`SD_ID_OID`) REFERENCES `SDS` (`SD_ID`)
562 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
563 | /*!40101 SET character_set_client = @saved_cs_client */;
564 |
565 | --
566 | -- Table structure for table `SORT_COLS`
567 | --
568 |
569 | /*!40101 SET @saved_cs_client = @@character_set_client */;
570 | /*!40101 SET character_set_client = utf8 */;
571 | CREATE TABLE IF NOT EXISTS `SORT_COLS` (
572 | `SD_ID` bigint(20) NOT NULL,
573 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
574 | `ORDER` int(11) NOT NULL,
575 | `INTEGER_IDX` int(11) NOT NULL,
576 | PRIMARY KEY (`SD_ID`,`INTEGER_IDX`),
577 | KEY `SORT_COLS_N49` (`SD_ID`),
578 | CONSTRAINT `SORT_COLS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`)
579 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
580 | /*!40101 SET character_set_client = @saved_cs_client */;
581 |
582 | --
583 | -- Table structure for table `TABLE_PARAMS`
584 | --
585 |
586 | /*!40101 SET @saved_cs_client = @@character_set_client */;
587 | /*!40101 SET character_set_client = utf8 */;
588 | CREATE TABLE IF NOT EXISTS `TABLE_PARAMS` (
589 | `TBL_ID` bigint(20) NOT NULL,
590 | `PARAM_KEY` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
591 | `PARAM_VALUE` MEDIUMTEXT CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
592 | PRIMARY KEY (`TBL_ID`,`PARAM_KEY`),
593 | KEY `TABLE_PARAMS_N49` (`TBL_ID`),
594 | CONSTRAINT `TABLE_PARAMS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
595 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
596 | /*!40101 SET character_set_client = @saved_cs_client */;
597 |
598 | --
599 | -- Table structure for table `MV_CREATION_METADATA`
600 | --
601 |
602 | /*!40101 SET @saved_cs_client = @@character_set_client */;
603 | /*!40101 SET character_set_client = utf8 */;
604 | CREATE TABLE IF NOT EXISTS `MV_CREATION_METADATA` (
605 | `MV_CREATION_METADATA_ID` bigint(20) NOT NULL,
606 | `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
607 | `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
608 | `TBL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
609 | `TXN_LIST` TEXT DEFAULT NULL,
610 | PRIMARY KEY (`MV_CREATION_METADATA_ID`)
611 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
612 | /*!40101 SET character_set_client = @saved_cs_client */;
613 |
614 | CREATE INDEX MV_UNIQUE_TABLE ON MV_CREATION_METADATA (TBL_NAME, DB_NAME) USING BTREE;
615 |
616 | --
617 | -- Table structure for table `TBLS`
618 | --
619 |
620 | /*!40101 SET @saved_cs_client = @@character_set_client */;
621 | /*!40101 SET character_set_client = utf8 */;
622 | CREATE TABLE IF NOT EXISTS `TBLS` (
623 | `TBL_ID` bigint(20) NOT NULL,
624 | `CREATE_TIME` int(11) NOT NULL,
625 | `DB_ID` bigint(20) DEFAULT NULL,
626 | `LAST_ACCESS_TIME` int(11) NOT NULL,
627 | `OWNER` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
628 | `OWNER_TYPE` varchar(10) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
629 | `RETENTION` int(11) NOT NULL,
630 | `SD_ID` bigint(20) DEFAULT NULL,
631 | `TBL_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
632 | `TBL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
633 | `VIEW_EXPANDED_TEXT` mediumtext,
634 | `VIEW_ORIGINAL_TEXT` mediumtext,
635 | `IS_REWRITE_ENABLED` bit(1) NOT NULL DEFAULT 0,
636 | PRIMARY KEY (`TBL_ID`),
637 | UNIQUE KEY `UNIQUETABLE` (`TBL_NAME`,`DB_ID`),
638 | KEY `TBLS_N50` (`SD_ID`),
639 | KEY `TBLS_N49` (`DB_ID`),
640 | CONSTRAINT `TBLS_FK1` FOREIGN KEY (`SD_ID`) REFERENCES `SDS` (`SD_ID`),
641 | CONSTRAINT `TBLS_FK2` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
642 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
643 | /*!40101 SET character_set_client = @saved_cs_client */;
644 |
645 | --
646 | -- Table structure for table `MV_TABLES_USED`
647 | --
648 |
649 | /*!40101 SET @saved_cs_client = @@character_set_client */;
650 | /*!40101 SET character_set_client = utf8 */;
651 | CREATE TABLE IF NOT EXISTS `MV_TABLES_USED` (
652 | `MV_CREATION_METADATA_ID` bigint(20) NOT NULL,
653 | `TBL_ID` bigint(20) NOT NULL,
654 | CONSTRAINT `MV_TABLES_USED_FK1` FOREIGN KEY (`MV_CREATION_METADATA_ID`) REFERENCES `MV_CREATION_METADATA` (`MV_CREATION_METADATA_ID`),
655 | CONSTRAINT `MV_TABLES_USED_FK2` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
656 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
657 | /*!40101 SET character_set_client = @saved_cs_client */;
658 |
659 | --
660 | -- Table structure for table `TBL_COL_PRIVS`
661 | --
662 |
663 | /*!40101 SET @saved_cs_client = @@character_set_client */;
664 | /*!40101 SET character_set_client = utf8 */;
665 | CREATE TABLE IF NOT EXISTS `TBL_COL_PRIVS` (
666 | `TBL_COLUMN_GRANT_ID` bigint(20) NOT NULL,
667 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
668 | `CREATE_TIME` int(11) NOT NULL,
669 | `GRANT_OPTION` smallint(6) NOT NULL,
670 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
671 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
672 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
673 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
674 | `TBL_COL_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
675 | `TBL_ID` bigint(20) DEFAULT NULL,
676 | PRIMARY KEY (`TBL_COLUMN_GRANT_ID`),
677 | KEY `TABLECOLUMNPRIVILEGEINDEX` (`TBL_ID`,`COLUMN_NAME`,`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`TBL_COL_PRIV`,`GRANTOR`,`GRANTOR_TYPE`),
678 | KEY `TBL_COL_PRIVS_N49` (`TBL_ID`),
679 | CONSTRAINT `TBL_COL_PRIVS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
680 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
681 | /*!40101 SET character_set_client = @saved_cs_client */;
682 |
683 | --
684 | -- Table structure for table `TBL_PRIVS`
685 | --
686 |
687 | /*!40101 SET @saved_cs_client = @@character_set_client */;
688 | /*!40101 SET character_set_client = utf8 */;
689 | CREATE TABLE IF NOT EXISTS `TBL_PRIVS` (
690 | `TBL_GRANT_ID` bigint(20) NOT NULL,
691 | `CREATE_TIME` int(11) NOT NULL,
692 | `GRANT_OPTION` smallint(6) NOT NULL,
693 | `GRANTOR` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
694 | `GRANTOR_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
695 | `PRINCIPAL_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
696 | `PRINCIPAL_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
697 | `TBL_PRIV` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
698 | `TBL_ID` bigint(20) DEFAULT NULL,
699 | PRIMARY KEY (`TBL_GRANT_ID`),
700 | KEY `TBL_PRIVS_N49` (`TBL_ID`),
701 | KEY `TABLEPRIVILEGEINDEX` (`TBL_ID`,`PRINCIPAL_NAME`,`PRINCIPAL_TYPE`,`TBL_PRIV`,`GRANTOR`,`GRANTOR_TYPE`),
702 | CONSTRAINT `TBL_PRIVS_FK1` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
703 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
704 | /*!40101 SET character_set_client = @saved_cs_client */;
705 |
706 | --
707 | -- Table structure for table `TAB_COL_STATS`
708 | --
709 | CREATE TABLE IF NOT EXISTS `TAB_COL_STATS` (
710 | `CS_ID` bigint(20) NOT NULL,
711 | `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
712 | `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
713 | `TABLE_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
714 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
715 | `COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
716 | `TBL_ID` bigint(20) NOT NULL,
717 | `LONG_LOW_VALUE` bigint(20),
718 | `LONG_HIGH_VALUE` bigint(20),
719 | `DOUBLE_HIGH_VALUE` double(53,4),
720 | `DOUBLE_LOW_VALUE` double(53,4),
721 | `BIG_DECIMAL_LOW_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
722 | `BIG_DECIMAL_HIGH_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
723 | `NUM_NULLS` bigint(20) NOT NULL,
724 | `NUM_DISTINCTS` bigint(20),
725 | `BIT_VECTOR` blob,
726 | `AVG_COL_LEN` double(53,4),
727 | `MAX_COL_LEN` bigint(20),
728 | `NUM_TRUES` bigint(20),
729 | `NUM_FALSES` bigint(20),
730 | `LAST_ANALYZED` bigint(20) NOT NULL,
731 | PRIMARY KEY (`CS_ID`),
732 | CONSTRAINT `TAB_COL_STATS_FK` FOREIGN KEY (`TBL_ID`) REFERENCES `TBLS` (`TBL_ID`)
733 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
734 |
735 | --
736 | -- Table structure for table `PART_COL_STATS`
737 | --
738 | CREATE TABLE IF NOT EXISTS `PART_COL_STATS` (
739 | `CS_ID` bigint(20) NOT NULL,
740 | `CAT_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
741 | `DB_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
742 | `TABLE_NAME` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
743 | `PARTITION_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
744 | `COLUMN_NAME` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
745 | `COLUMN_TYPE` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
746 | `PART_ID` bigint(20) NOT NULL,
747 | `LONG_LOW_VALUE` bigint(20),
748 | `LONG_HIGH_VALUE` bigint(20),
749 | `DOUBLE_HIGH_VALUE` double(53,4),
750 | `DOUBLE_LOW_VALUE` double(53,4),
751 | `BIG_DECIMAL_LOW_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
752 | `BIG_DECIMAL_HIGH_VALUE` varchar(4000) CHARACTER SET latin1 COLLATE latin1_bin,
753 | `NUM_NULLS` bigint(20) NOT NULL,
754 | `NUM_DISTINCTS` bigint(20),
755 | `BIT_VECTOR` blob,
756 | `AVG_COL_LEN` double(53,4),
757 | `MAX_COL_LEN` bigint(20),
758 | `NUM_TRUES` bigint(20),
759 | `NUM_FALSES` bigint(20),
760 | `LAST_ANALYZED` bigint(20) NOT NULL,
761 | PRIMARY KEY (`CS_ID`),
762 | CONSTRAINT `PART_COL_STATS_FK` FOREIGN KEY (`PART_ID`) REFERENCES `PARTITIONS` (`PART_ID`)
763 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
764 |
765 | CREATE INDEX PCS_STATS_IDX ON PART_COL_STATS (CAT_NAME, DB_NAME,TABLE_NAME,COLUMN_NAME,PARTITION_NAME) USING BTREE;
766 |
767 | --
768 | -- Table structure for table `TYPES`
769 | --
770 |
771 | /*!40101 SET @saved_cs_client = @@character_set_client */;
772 | /*!40101 SET character_set_client = utf8 */;
773 | CREATE TABLE IF NOT EXISTS `TYPES` (
774 | `TYPES_ID` bigint(20) NOT NULL,
775 | `TYPE_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
776 | `TYPE1` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
777 | `TYPE2` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
778 | PRIMARY KEY (`TYPES_ID`),
779 | UNIQUE KEY `UNIQUE_TYPE` (`TYPE_NAME`)
780 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
781 | /*!40101 SET character_set_client = @saved_cs_client */;
782 |
783 | --
784 | -- Table structure for table `TYPE_FIELDS`
785 | --
786 |
787 | /*!40101 SET @saved_cs_client = @@character_set_client */;
788 | /*!40101 SET character_set_client = utf8 */;
789 | CREATE TABLE IF NOT EXISTS `TYPE_FIELDS` (
790 | `TYPE_NAME` bigint(20) NOT NULL,
791 | `COMMENT` varchar(256) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
792 | `FIELD_NAME` varchar(128) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
793 | `FIELD_TYPE` varchar(767) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
794 | `INTEGER_IDX` int(11) NOT NULL,
795 | PRIMARY KEY (`TYPE_NAME`,`FIELD_NAME`),
796 | KEY `TYPE_FIELDS_N49` (`TYPE_NAME`),
797 | CONSTRAINT `TYPE_FIELDS_FK1` FOREIGN KEY (`TYPE_NAME`) REFERENCES `TYPES` (`TYPES_ID`)
798 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
799 |
800 | -- Table `MASTER_KEYS` for classes [org.apache.hadoop.hive.metastore.model.MMasterKey]
801 | CREATE TABLE IF NOT EXISTS `MASTER_KEYS`
802 | (
803 | `KEY_ID` INTEGER NOT NULL AUTO_INCREMENT,
804 | `MASTER_KEY` VARCHAR(767) BINARY NULL,
805 | PRIMARY KEY (`KEY_ID`)
806 | ) ENGINE=INNODB DEFAULT CHARSET=latin1;
807 |
808 | -- Table `DELEGATION_TOKENS` for classes [org.apache.hadoop.hive.metastore.model.MDelegationToken]
809 | CREATE TABLE IF NOT EXISTS `DELEGATION_TOKENS`
810 | (
811 | `TOKEN_IDENT` VARCHAR(767) BINARY NOT NULL,
812 | `TOKEN` VARCHAR(767) BINARY NULL,
813 | PRIMARY KEY (`TOKEN_IDENT`)
814 | ) ENGINE=INNODB DEFAULT CHARSET=latin1;
815 |
816 | --
817 | -- Table structure for VERSION
818 | --
819 | CREATE TABLE IF NOT EXISTS `VERSION` (
820 | `VER_ID` BIGINT NOT NULL,
821 | `SCHEMA_VERSION` VARCHAR(127) NOT NULL,
822 | `VERSION_COMMENT` VARCHAR(255),
823 | PRIMARY KEY (`VER_ID`)
824 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
825 |
826 | --
827 | -- Table structure for table FUNCS
828 | --
829 | CREATE TABLE IF NOT EXISTS `FUNCS` (
830 | `FUNC_ID` BIGINT(20) NOT NULL,
831 | `CLASS_NAME` VARCHAR(4000) CHARACTER SET latin1 COLLATE latin1_bin,
832 | `CREATE_TIME` INT(11) NOT NULL,
833 | `DB_ID` BIGINT(20),
834 | `FUNC_NAME` VARCHAR(128) CHARACTER SET latin1 COLLATE latin1_bin,
835 | `FUNC_TYPE` INT(11) NOT NULL,
836 | `OWNER_NAME` VARCHAR(128) CHARACTER SET latin1 COLLATE latin1_bin,
837 | `OWNER_TYPE` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_bin,
838 | PRIMARY KEY (`FUNC_ID`),
839 | UNIQUE KEY `UNIQUEFUNCTION` (`FUNC_NAME`, `DB_ID`),
840 | KEY `FUNCS_N49` (`DB_ID`),
841 | CONSTRAINT `FUNCS_FK1` FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`)
842 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
843 |
844 | --
845 | -- Table structure for table FUNC_RU
846 | --
847 | CREATE TABLE IF NOT EXISTS `FUNC_RU` (
848 | `FUNC_ID` BIGINT(20) NOT NULL,
849 | `RESOURCE_TYPE` INT(11) NOT NULL,
850 | `RESOURCE_URI` VARCHAR(4000) CHARACTER SET latin1 COLLATE latin1_bin,
851 | `INTEGER_IDX` INT(11) NOT NULL,
852 | PRIMARY KEY (`FUNC_ID`, `INTEGER_IDX`),
853 | CONSTRAINT `FUNC_RU_FK1` FOREIGN KEY (`FUNC_ID`) REFERENCES `FUNCS` (`FUNC_ID`)
854 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
855 |
856 | CREATE TABLE IF NOT EXISTS `NOTIFICATION_LOG`
857 | (
858 | `NL_ID` BIGINT(20) NOT NULL,
859 | `EVENT_ID` BIGINT(20) NOT NULL,
860 | `EVENT_TIME` INT(11) NOT NULL,
861 | `EVENT_TYPE` varchar(32) NOT NULL,
862 | `CAT_NAME` varchar(256),
863 | `DB_NAME` varchar(128),
864 | `TBL_NAME` varchar(256),
865 | `MESSAGE` longtext,
866 | `MESSAGE_FORMAT` varchar(16),
867 | PRIMARY KEY (`NL_ID`)
868 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
869 |
870 | CREATE TABLE IF NOT EXISTS `NOTIFICATION_SEQUENCE`
871 | (
872 | `NNI_ID` BIGINT(20) NOT NULL,
873 | `NEXT_EVENT_ID` BIGINT(20) NOT NULL,
874 | PRIMARY KEY (`NNI_ID`)
875 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
876 |
877 | INSERT INTO `NOTIFICATION_SEQUENCE` (`NNI_ID`, `NEXT_EVENT_ID`) SELECT * from (select 1 as `NNI_ID`, 1 as `NOTIFICATION_SEQUENCE`) a WHERE (SELECT COUNT(*) FROM `NOTIFICATION_SEQUENCE`) = 0;
878 |
879 | CREATE TABLE IF NOT EXISTS `KEY_CONSTRAINTS`
880 | (
881 | `CHILD_CD_ID` BIGINT,
882 | `CHILD_INTEGER_IDX` INT(11),
883 | `CHILD_TBL_ID` BIGINT,
884 | `PARENT_CD_ID` BIGINT,
885 | `PARENT_INTEGER_IDX` INT(11) NOT NULL,
886 | `PARENT_TBL_ID` BIGINT NOT NULL,
887 | `POSITION` BIGINT NOT NULL,
888 | `CONSTRAINT_NAME` VARCHAR(400) NOT NULL,
889 | `CONSTRAINT_TYPE` SMALLINT(6) NOT NULL,
890 | `UPDATE_RULE` SMALLINT(6),
891 | `DELETE_RULE` SMALLINT(6),
892 | `ENABLE_VALIDATE_RELY` SMALLINT(6) NOT NULL,
893 | `DEFAULT_VALUE` VARCHAR(400),
894 | PRIMARY KEY (`CONSTRAINT_NAME`, `POSITION`)
895 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
896 |
897 | CREATE INDEX `CONSTRAINTS_PARENT_TABLE_ID_INDEX` ON KEY_CONSTRAINTS (`PARENT_TBL_ID`) USING BTREE;
898 |
899 | CREATE INDEX `CONSTRAINTS_CONSTRAINT_TYPE_INDEX` ON KEY_CONSTRAINTS (`CONSTRAINT_TYPE`) USING BTREE;
900 |
901 | -- -----------------------------
902 | -- Metastore DB Properties table
903 | -- -----------------------------
904 | CREATE TABLE IF NOT EXISTS `METASTORE_DB_PROPERTIES` (
905 | `PROPERTY_KEY` varchar(255) NOT NULL,
906 | `PROPERTY_VALUE` varchar(1000) NOT NULL,
907 | `DESCRIPTION` varchar(1000),
908 | PRIMARY KEY(`PROPERTY_KEY`)
909 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
910 |
911 |
912 | -- ---------------------
913 | -- Resource plan tables.
914 | -- ---------------------
915 | CREATE TABLE IF NOT EXISTS WM_RESOURCEPLAN (
916 | `RP_ID` bigint(20) NOT NULL,
917 | `NAME` varchar(128) NOT NULL,
918 | `QUERY_PARALLELISM` int(11),
919 | `STATUS` varchar(20) NOT NULL,
920 | `DEFAULT_POOL_ID` bigint(20),
921 | PRIMARY KEY (`RP_ID`),
922 | UNIQUE KEY `UNIQUE_WM_RESOURCEPLAN` (`NAME`)
923 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
924 |
925 | CREATE TABLE IF NOT EXISTS WM_POOL
926 | (
927 | `POOL_ID` bigint(20) NOT NULL,
928 | `RP_ID` bigint(20) NOT NULL,
929 | `PATH` varchar(767) NOT NULL,
930 | `ALLOC_FRACTION` DOUBLE,
931 | `QUERY_PARALLELISM` int(11),
932 | `SCHEDULING_POLICY` varchar(767),
933 | PRIMARY KEY (`POOL_ID`),
934 | UNIQUE KEY `UNIQUE_WM_POOL` (`RP_ID`, `PATH`),
935 | CONSTRAINT `WM_POOL_FK1` FOREIGN KEY (`RP_ID`) REFERENCES `WM_RESOURCEPLAN` (`RP_ID`)
936 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
937 |
938 | ALTER TABLE `WM_RESOURCEPLAN` ADD CONSTRAINT `WM_RESOURCEPLAN_FK1` FOREIGN KEY (`DEFAULT_POOL_ID`) REFERENCES `WM_POOL`(`POOL_ID`);
939 |
940 | CREATE TABLE IF NOT EXISTS WM_TRIGGER
941 | (
942 | `TRIGGER_ID` bigint(20) NOT NULL,
943 | `RP_ID` bigint(20) NOT NULL,
944 | `NAME` varchar(128) NOT NULL,
945 | `TRIGGER_EXPRESSION` varchar(1024),
946 | `ACTION_EXPRESSION` varchar(1024),
947 | `IS_IN_UNMANAGED` bit(1) NOT NULL DEFAULT 0,
948 | PRIMARY KEY (`TRIGGER_ID`),
949 | UNIQUE KEY `UNIQUE_WM_TRIGGER` (`RP_ID`, `NAME`),
950 | CONSTRAINT `WM_TRIGGER_FK1` FOREIGN KEY (`RP_ID`) REFERENCES `WM_RESOURCEPLAN` (`RP_ID`)
951 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
952 |
953 | CREATE TABLE IF NOT EXISTS WM_POOL_TO_TRIGGER
954 | (
955 | `POOL_ID` bigint(20) NOT NULL,
956 | `TRIGGER_ID` bigint(20) NOT NULL,
957 | PRIMARY KEY (`POOL_ID`, `TRIGGER_ID`),
958 | CONSTRAINT `WM_POOL_TO_TRIGGER_FK1` FOREIGN KEY (`POOL_ID`) REFERENCES `WM_POOL` (`POOL_ID`),
959 | CONSTRAINT `WM_POOL_TO_TRIGGER_FK2` FOREIGN KEY (`TRIGGER_ID`) REFERENCES `WM_TRIGGER` (`TRIGGER_ID`)
960 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
961 |
962 | CREATE TABLE IF NOT EXISTS WM_MAPPING
963 | (
964 | `MAPPING_ID` bigint(20) NOT NULL,
965 | `RP_ID` bigint(20) NOT NULL,
966 | `ENTITY_TYPE` varchar(128) NOT NULL,
967 | `ENTITY_NAME` varchar(128) NOT NULL,
968 | `POOL_ID` bigint(20),
969 | `ORDERING` int,
970 | PRIMARY KEY (`MAPPING_ID`),
971 | UNIQUE KEY `UNIQUE_WM_MAPPING` (`RP_ID`, `ENTITY_TYPE`, `ENTITY_NAME`),
972 | CONSTRAINT `WM_MAPPING_FK1` FOREIGN KEY (`RP_ID`) REFERENCES `WM_RESOURCEPLAN` (`RP_ID`),
973 | CONSTRAINT `WM_MAPPING_FK2` FOREIGN KEY (`POOL_ID`) REFERENCES `WM_POOL` (`POOL_ID`)
974 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
975 |
976 | -- ----------------------------
977 | -- Transaction and Lock Tables
978 | -- ----------------------------
979 | CREATE TABLE TXNS (
980 | TXN_ID bigint PRIMARY KEY,
981 | TXN_STATE char(1) NOT NULL,
982 | TXN_STARTED bigint NOT NULL,
983 | TXN_LAST_HEARTBEAT bigint NOT NULL,
984 | TXN_USER varchar(128) NOT NULL,
985 | TXN_HOST varchar(128) NOT NULL,
986 | TXN_AGENT_INFO varchar(128),
987 | TXN_META_INFO varchar(128),
988 | TXN_HEARTBEAT_COUNT int
989 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
990 |
991 | CREATE TABLE TXN_COMPONENTS (
992 | TC_TXNID bigint NOT NULL,
993 | TC_DATABASE varchar(128) NOT NULL,
994 | TC_TABLE varchar(128),
995 | TC_PARTITION varchar(767),
996 | TC_OPERATION_TYPE char(1) NOT NULL,
997 | TC_WRITEID bigint,
998 | FOREIGN KEY (TC_TXNID) REFERENCES TXNS (TXN_ID)
999 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1000 |
1001 | CREATE INDEX TC_TXNID_INDEX ON TXN_COMPONENTS (TC_TXNID);
1002 |
1003 | CREATE TABLE COMPLETED_TXN_COMPONENTS (
1004 | CTC_TXNID bigint NOT NULL,
1005 | CTC_DATABASE varchar(128) NOT NULL,
1006 | CTC_TABLE varchar(256),
1007 | CTC_PARTITION varchar(767),
1008 | CTC_TIMESTAMP timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
1009 | CTC_WRITEID bigint
1010 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1011 |
1012 | CREATE INDEX COMPLETED_TXN_COMPONENTS_IDX ON COMPLETED_TXN_COMPONENTS (CTC_DATABASE, CTC_TABLE, CTC_PARTITION) USING BTREE;
1013 |
1014 | CREATE TABLE NEXT_TXN_ID (
1015 | NTXN_NEXT bigint NOT NULL
1016 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1017 | INSERT INTO NEXT_TXN_ID VALUES(1);
1018 |
1019 | CREATE TABLE HIVE_LOCKS (
1020 | HL_LOCK_EXT_ID bigint NOT NULL,
1021 | HL_LOCK_INT_ID bigint NOT NULL,
1022 | HL_TXNID bigint NOT NULL,
1023 | HL_DB varchar(128) NOT NULL,
1024 | HL_TABLE varchar(128),
1025 | HL_PARTITION varchar(767),
1026 | HL_LOCK_STATE char(1) not null,
1027 | HL_LOCK_TYPE char(1) not null,
1028 | HL_LAST_HEARTBEAT bigint NOT NULL,
1029 | HL_ACQUIRED_AT bigint,
1030 | HL_USER varchar(128) NOT NULL,
1031 | HL_HOST varchar(128) NOT NULL,
1032 | HL_HEARTBEAT_COUNT int,
1033 | HL_AGENT_INFO varchar(128),
1034 | HL_BLOCKEDBY_EXT_ID bigint,
1035 | HL_BLOCKEDBY_INT_ID bigint,
1036 | PRIMARY KEY(HL_LOCK_EXT_ID, HL_LOCK_INT_ID),
1037 | KEY HIVE_LOCK_TXNID_INDEX (HL_TXNID)
1038 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1039 |
1040 | CREATE INDEX HL_TXNID_IDX ON HIVE_LOCKS (HL_TXNID);
1041 |
1042 | CREATE TABLE NEXT_LOCK_ID (
1043 | NL_NEXT bigint NOT NULL
1044 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1045 | INSERT INTO NEXT_LOCK_ID VALUES(1);
1046 |
1047 | CREATE TABLE COMPACTION_QUEUE (
1048 | CQ_ID bigint PRIMARY KEY,
1049 | CQ_DATABASE varchar(128) NOT NULL,
1050 | CQ_TABLE varchar(128) NOT NULL,
1051 | CQ_PARTITION varchar(767),
1052 | CQ_STATE char(1) NOT NULL,
1053 | CQ_TYPE char(1) NOT NULL,
1054 | CQ_TBLPROPERTIES varchar(2048),
1055 | CQ_WORKER_ID varchar(128),
1056 | CQ_START bigint,
1057 | CQ_RUN_AS varchar(128),
1058 | CQ_HIGHEST_WRITE_ID bigint,
1059 | CQ_META_INFO varbinary(2048),
1060 | CQ_HADOOP_JOB_ID varchar(32)
1061 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1062 |
1063 | CREATE TABLE COMPLETED_COMPACTIONS (
1064 | CC_ID bigint PRIMARY KEY,
1065 | CC_DATABASE varchar(128) NOT NULL,
1066 | CC_TABLE varchar(128) NOT NULL,
1067 | CC_PARTITION varchar(767),
1068 | CC_STATE char(1) NOT NULL,
1069 | CC_TYPE char(1) NOT NULL,
1070 | CC_TBLPROPERTIES varchar(2048),
1071 | CC_WORKER_ID varchar(128),
1072 | CC_START bigint,
1073 | CC_END bigint,
1074 | CC_RUN_AS varchar(128),
1075 | CC_HIGHEST_WRITE_ID bigint,
1076 | CC_META_INFO varbinary(2048),
1077 | CC_HADOOP_JOB_ID varchar(32)
1078 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1079 |
1080 | CREATE TABLE NEXT_COMPACTION_QUEUE_ID (
1081 | NCQ_NEXT bigint NOT NULL
1082 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1083 | INSERT INTO NEXT_COMPACTION_QUEUE_ID VALUES(1);
1084 |
1085 | CREATE TABLE AUX_TABLE (
1086 | MT_KEY1 varchar(128) NOT NULL,
1087 | MT_KEY2 bigint NOT NULL,
1088 | MT_COMMENT varchar(255),
1089 | PRIMARY KEY(MT_KEY1, MT_KEY2)
1090 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1091 |
1092 | CREATE TABLE WRITE_SET (
1093 | WS_DATABASE varchar(128) NOT NULL,
1094 | WS_TABLE varchar(128) NOT NULL,
1095 | WS_PARTITION varchar(767),
1096 | WS_TXNID bigint NOT NULL,
1097 | WS_COMMIT_ID bigint NOT NULL,
1098 | WS_OPERATION_TYPE char(1) NOT NULL
1099 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1100 |
1101 | CREATE TABLE TXN_TO_WRITE_ID (
1102 | T2W_TXNID bigint NOT NULL,
1103 | T2W_DATABASE varchar(128) NOT NULL,
1104 | T2W_TABLE varchar(256) NOT NULL,
1105 | T2W_WRITEID bigint NOT NULL
1106 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1107 |
1108 | CREATE UNIQUE INDEX TBL_TO_TXN_ID_IDX ON TXN_TO_WRITE_ID (T2W_DATABASE, T2W_TABLE, T2W_TXNID);
1109 | CREATE UNIQUE INDEX TBL_TO_WRITE_ID_IDX ON TXN_TO_WRITE_ID (T2W_DATABASE, T2W_TABLE, T2W_WRITEID);
1110 |
1111 | CREATE TABLE NEXT_WRITE_ID (
1112 | NWI_DATABASE varchar(128) NOT NULL,
1113 | NWI_TABLE varchar(256) NOT NULL,
1114 | NWI_NEXT bigint NOT NULL
1115 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1116 |
1117 | CREATE UNIQUE INDEX NEXT_WRITE_ID_IDX ON NEXT_WRITE_ID (NWI_DATABASE, NWI_TABLE);
1118 |
1119 | CREATE TABLE MIN_HISTORY_LEVEL (
1120 | MHL_TXNID bigint NOT NULL,
1121 | MHL_MIN_OPEN_TXNID bigint NOT NULL,
1122 | PRIMARY KEY(MHL_TXNID)
1123 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1124 |
1125 | CREATE INDEX MIN_HISTORY_LEVEL_IDX ON MIN_HISTORY_LEVEL (MHL_MIN_OPEN_TXNID);
1126 |
1127 | CREATE TABLE `I_SCHEMA` (
1128 | `SCHEMA_ID` BIGINT PRIMARY KEY,
1129 | `SCHEMA_TYPE` INTEGER NOT NULL,
1130 | `NAME` VARCHAR(256),
1131 | `DB_ID` BIGINT,
1132 | `COMPATIBILITY` INTEGER NOT NULL,
1133 | `VALIDATION_LEVEL` INTEGER NOT NULL,
1134 | `CAN_EVOLVE` bit(1) NOT NULL,
1135 | `SCHEMA_GROUP` VARCHAR(256),
1136 | `DESCRIPTION` VARCHAR(4000),
1137 | FOREIGN KEY (`DB_ID`) REFERENCES `DBS` (`DB_ID`),
1138 | KEY `UNIQUE_NAME` (`NAME`)
1139 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1140 |
1141 | CREATE TABLE `SCHEMA_VERSION` (
1142 | `SCHEMA_VERSION_ID` bigint primary key,
1143 | `SCHEMA_ID` BIGINT,
1144 | `VERSION` INTEGER NOT NULL,
1145 | `CREATED_AT` BIGINT NOT NULL,
1146 | `CD_ID` BIGINT,
1147 | `STATE` INTEGER NOT NULL,
1148 | `DESCRIPTION` VARCHAR(4000),
1149 | `SCHEMA_TEXT` mediumtext,
1150 | `FINGERPRINT` VARCHAR(256),
1151 | `SCHEMA_VERSION_NAME` VARCHAR(256),
1152 | `SERDE_ID` bigint,
1153 | FOREIGN KEY (`SCHEMA_ID`) REFERENCES `I_SCHEMA` (`SCHEMA_ID`),
1154 | FOREIGN KEY (`CD_ID`) REFERENCES `CDS` (`CD_ID`),
1155 | FOREIGN KEY (`SERDE_ID`) REFERENCES `SERDES` (`SERDE_ID`),
1156 | KEY `UNIQUE_VERSION` (`SCHEMA_ID`, `VERSION`)
1157 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1158 |
1159 | CREATE TABLE REPL_TXN_MAP (
1160 | RTM_REPL_POLICY varchar(256) NOT NULL,
1161 | RTM_SRC_TXN_ID bigint NOT NULL,
1162 | RTM_TARGET_TXN_ID bigint NOT NULL,
1163 | PRIMARY KEY (RTM_REPL_POLICY, RTM_SRC_TXN_ID)
1164 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1165 |
1166 | CREATE TABLE RUNTIME_STATS (
1167 | RS_ID bigint primary key,
1168 | CREATE_TIME bigint NOT NULL,
1169 | WEIGHT bigint NOT NULL,
1170 | PAYLOAD blob
1171 | ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
1172 |
1173 | CREATE INDEX IDX_RUNTIME_STATS_CREATE_TIME ON RUNTIME_STATS(CREATE_TIME);
1174 |
1175 | -- -----------------------------------------------------------------
1176 | -- Record schema version. Should be the last step in the init script
1177 | -- -----------------------------------------------------------------
1178 | INSERT INTO VERSION (VER_ID, SCHEMA_VERSION, VERSION_COMMENT) VALUES (1, '3.0.0', 'Hive release version 3.0.0');
1179 |
1180 | /*!40101 SET character_set_client = @saved_cs_client */;
1181 | /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
1182 |
1183 | /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
1184 | /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
1185 | /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
1186 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
1187 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
1188 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
1189 | /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
1190 |
1191 | -- Dump completed on 2012-08-23 0:56:31
1192 |
--------------------------------------------------------------------------------
/infra/hive-site.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | metastore.warehouse.dir
6 | s3a://spark/warehouse/
7 |
8 |
9 | javax.jdo.option.ConnectionDriverName
10 | com.mysql.cj.jdbc.Driver
11 |
12 |
13 | javax.jdo.option.ConnectionURL
14 | jdbc:mysql://mariadb-hive:3306/metastore_db
15 |
16 |
17 | javax.jdo.option.ConnectionUserName
18 | admin
19 |
20 |
21 | javax.jdo.option.ConnectionPassword
22 | admin
23 |
24 |
25 | fs.s3a.access.key
26 | accesskey
27 |
28 |
29 | fs.s3a.secret.key
30 | secretkey
31 |
32 |
33 | fs.s3a.endpoint
34 | http://minio:9000
35 |
36 |
37 | fs.s3a.path.style.access
38 | true
39 |
40 |
--------------------------------------------------------------------------------
/infra/pyspark.Dockerfile:
--------------------------------------------------------------------------------
1 | FROM apache/spark-py:3.3.1
2 |
3 | ARG HADOOP_VERSION=3.3.4
4 | ARG AWS_JAVA_SDK_VERSION=1.12.339
5 | ARG PYTHON_VERSION=3.9
6 | ARG PYSPARK_JAR_PATH=/opt/spark/jars/
7 |
8 | # Switch to root user
9 | USER 0:0
10 |
11 | # Meta Store Connection Jar
12 | ADD https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.19/mysql-connector-java-8.0.19.jar ${PYSPARK_JAR_PATH}
13 |
14 | # S3 Related Jars
15 | ADD https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/${HADOOP_VERSION}/hadoop-aws-${HADOOP_VERSION}.jar ${PYSPARK_JAR_PATH}
16 | ADD https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/${AWS_JAVA_SDK_VERSION}/aws-java-sdk-bundle-${AWS_JAVA_SDK_VERSION}.jar ${PYSPARK_JAR_PATH}
17 |
18 | # Delta Lake Related Jars, versions might change if delta-spark python package is updated
19 | ADD https://repo1.maven.org/maven2/io/delta/delta-core_2.12/2.2.0/delta-core_2.12-2.2.0.jar ${PYSPARK_JAR_PATH}
20 | ADD https://repo1.maven.org/maven2/io/delta/delta-storage/2.2.0/delta-storage-2.2.0.jar ${PYSPARK_JAR_PATH}
21 | ADD https://repo1.maven.org/maven2/org/antlr/antlr4-runtime/4.8/antlr4-runtime-4.8.jar ${PYSPARK_JAR_PATH}
22 | COPY ./infra/hive-site.xml /opt/spark/conf/hive-site.xml
23 |
24 | WORKDIR /workspace
25 |
26 | COPY poetry.lock pyproject.toml ./
27 |
28 | RUN pip install poetry ; \
29 | poetry config virtualenvs.create false && poetry install
30 |
31 | COPY . ./
32 |
33 | ENV PYTHONPATH "/usr/local/lib/python${PYTHON_VERSION}/dist-packages:/usr/lib/python${PYTHON_VERSION}/site-packages:/usr/lib/python3/dist-packages"
34 | ENTRYPOINT [ "jupyter-lab", "--allow-root", "--ip=0.0.0.0"]
--------------------------------------------------------------------------------
/notebooks/example.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": null,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import src.connections_utils as connections"
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": null,
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "spark_session = connections.create_docker_spark_builder().getOrCreate()"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": null,
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "import pandas as pd\n",
28 | "\n",
29 | "sample_data = pd.DataFrame({\"a\": [1, 2, 3], \"b\": [4, 5, 6]})\n",
30 | "\n",
31 | "spark_data = spark_session.createDataFrame(sample_data)"
32 | ]
33 | },
34 | {
35 | "cell_type": "code",
36 | "execution_count": null,
37 | "metadata": {},
38 | "outputs": [],
39 | "source": [
40 | "spark_data.write.format(\"delta\").mode(\"overwrite\").saveAsTable(\"test_table\")"
41 | ]
42 | }
43 | ],
44 | "metadata": {
45 | "kernelspec": {
46 | "display_name": "Python 3",
47 | "language": "python",
48 | "name": "python3"
49 | },
50 | "language_info": {
51 | "name": "python",
52 | "version": "3.8.10 (default, Nov 14 2022, 12:59:47) \n[GCC 9.4.0]"
53 | },
54 | "orig_nbformat": 4,
55 | "vscode": {
56 | "interpreter": {
57 | "hash": "8a5edab282632443219e051e4ade2d1d5bbc671c781051bf1437897cbdfea0f1"
58 | }
59 | }
60 | },
61 | "nbformat": 4,
62 | "nbformat_minor": 2
63 | }
64 |
--------------------------------------------------------------------------------
/poetry.lock:
--------------------------------------------------------------------------------
1 | # This file is automatically @generated by Poetry and should not be changed by hand.
2 |
3 | [[package]]
4 | name = "anyio"
5 | version = "3.6.2"
6 | description = "High level compatibility layer for multiple asynchronous event loop implementations"
7 | category = "dev"
8 | optional = false
9 | python-versions = ">=3.6.2"
10 | files = [
11 | {file = "anyio-3.6.2-py3-none-any.whl", hash = "sha256:fbbe32bd270d2a2ef3ed1c5d45041250284e31fc0a4df4a5a6071842051a51e3"},
12 | {file = "anyio-3.6.2.tar.gz", hash = "sha256:25ea0d673ae30af41a0c442f81cf3b38c7e79fdc7b60335a4c14e05eb0947421"},
13 | ]
14 |
15 | [package.dependencies]
16 | idna = ">=2.8"
17 | sniffio = ">=1.1"
18 |
19 | [package.extras]
20 | doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"]
21 | test = ["contextlib2", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (<0.15)", "uvloop (>=0.15)"]
22 | trio = ["trio (>=0.16,<0.22)"]
23 |
24 | [[package]]
25 | name = "appnope"
26 | version = "0.1.3"
27 | description = "Disable App Nap on macOS >= 10.9"
28 | category = "dev"
29 | optional = false
30 | python-versions = "*"
31 | files = [
32 | {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
33 | {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
34 | ]
35 |
36 | [[package]]
37 | name = "argon2-cffi"
38 | version = "21.3.0"
39 | description = "The secure Argon2 password hashing algorithm."
40 | category = "dev"
41 | optional = false
42 | python-versions = ">=3.6"
43 | files = [
44 | {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"},
45 | {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"},
46 | ]
47 |
48 | [package.dependencies]
49 | argon2-cffi-bindings = "*"
50 |
51 | [package.extras]
52 | dev = ["cogapp", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "pre-commit", "pytest", "sphinx", "sphinx-notfound-page", "tomli"]
53 | docs = ["furo", "sphinx", "sphinx-notfound-page"]
54 | tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"]
55 |
56 | [[package]]
57 | name = "argon2-cffi-bindings"
58 | version = "21.2.0"
59 | description = "Low-level CFFI bindings for Argon2"
60 | category = "dev"
61 | optional = false
62 | python-versions = ">=3.6"
63 | files = [
64 | {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
65 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
66 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
67 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
68 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c"},
69 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
70 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
71 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
72 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
73 | {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
74 | {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
75 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
76 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
77 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
78 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9f8b450ed0547e3d473fdc8612083fd08dd2120d6ac8f73828df9b7d45bb351"},
79 | {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
80 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
81 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
82 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
83 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ed2937d286e2ad0cc79a7087d3c272832865f779430e0cc2b4f3718d3159b0cb"},
84 | {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
85 | ]
86 |
87 | [package.dependencies]
88 | cffi = ">=1.0.1"
89 |
90 | [package.extras]
91 | dev = ["cogapp", "pre-commit", "pytest", "wheel"]
92 | tests = ["pytest"]
93 |
94 | [[package]]
95 | name = "arrow"
96 | version = "1.2.3"
97 | description = "Better dates & times for Python"
98 | category = "dev"
99 | optional = false
100 | python-versions = ">=3.6"
101 | files = [
102 | {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"},
103 | {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"},
104 | ]
105 |
106 | [package.dependencies]
107 | python-dateutil = ">=2.7.0"
108 |
109 | [[package]]
110 | name = "astroid"
111 | version = "2.13.2"
112 | description = "An abstract syntax tree for Python with inference support."
113 | category = "dev"
114 | optional = false
115 | python-versions = ">=3.7.2"
116 | files = [
117 | {file = "astroid-2.13.2-py3-none-any.whl", hash = "sha256:8f6a8d40c4ad161d6fc419545ae4b2f275ed86d1c989c97825772120842ee0d2"},
118 | {file = "astroid-2.13.2.tar.gz", hash = "sha256:3bc7834720e1a24ca797fd785d77efb14f7a28ee8e635ef040b6e2d80ccb3303"},
119 | ]
120 |
121 | [package.dependencies]
122 | lazy-object-proxy = ">=1.4.0"
123 | typing-extensions = ">=4.0.0"
124 | wrapt = [
125 | {version = ">=1.11,<2", markers = "python_version < \"3.11\""},
126 | {version = ">=1.14,<2", markers = "python_version >= \"3.11\""},
127 | ]
128 |
129 | [[package]]
130 | name = "asttokens"
131 | version = "2.2.1"
132 | description = "Annotate AST trees with source code positions"
133 | category = "dev"
134 | optional = false
135 | python-versions = "*"
136 | files = [
137 | {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"},
138 | {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"},
139 | ]
140 |
141 | [package.dependencies]
142 | six = "*"
143 |
144 | [package.extras]
145 | test = ["astroid", "pytest"]
146 |
147 | [[package]]
148 | name = "attrs"
149 | version = "22.2.0"
150 | description = "Classes Without Boilerplate"
151 | category = "dev"
152 | optional = false
153 | python-versions = ">=3.6"
154 | files = [
155 | {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"},
156 | {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"},
157 | ]
158 |
159 | [package.extras]
160 | cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"]
161 | dev = ["attrs[docs,tests]"]
162 | docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"]
163 | tests = ["attrs[tests-no-zope]", "zope.interface"]
164 | tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"]
165 |
166 | [[package]]
167 | name = "babel"
168 | version = "2.11.0"
169 | description = "Internationalization utilities"
170 | category = "dev"
171 | optional = false
172 | python-versions = ">=3.6"
173 | files = [
174 | {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"},
175 | {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"},
176 | ]
177 |
178 | [package.dependencies]
179 | pytz = ">=2015.7"
180 |
181 | [[package]]
182 | name = "backcall"
183 | version = "0.2.0"
184 | description = "Specifications for callback functions passed in to an API"
185 | category = "dev"
186 | optional = false
187 | python-versions = "*"
188 | files = [
189 | {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
190 | {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
191 | ]
192 |
193 | [[package]]
194 | name = "beautifulsoup4"
195 | version = "4.11.1"
196 | description = "Screen-scraping library"
197 | category = "dev"
198 | optional = false
199 | python-versions = ">=3.6.0"
200 | files = [
201 | {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"},
202 | {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"},
203 | ]
204 |
205 | [package.dependencies]
206 | soupsieve = ">1.2"
207 |
208 | [package.extras]
209 | html5lib = ["html5lib"]
210 | lxml = ["lxml"]
211 |
212 | [[package]]
213 | name = "black"
214 | version = "22.12.0"
215 | description = "The uncompromising code formatter."
216 | category = "dev"
217 | optional = false
218 | python-versions = ">=3.7"
219 | files = [
220 | {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"},
221 | {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"},
222 | {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"},
223 | {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"},
224 | {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"},
225 | {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"},
226 | {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"},
227 | {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"},
228 | {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"},
229 | {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"},
230 | {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"},
231 | {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"},
232 | ]
233 |
234 | [package.dependencies]
235 | click = ">=8.0.0"
236 | mypy-extensions = ">=0.4.3"
237 | pathspec = ">=0.9.0"
238 | platformdirs = ">=2"
239 | tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""}
240 | typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
241 |
242 | [package.extras]
243 | colorama = ["colorama (>=0.4.3)"]
244 | d = ["aiohttp (>=3.7.4)"]
245 | jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
246 | uvloop = ["uvloop (>=0.15.2)"]
247 |
248 | [[package]]
249 | name = "bleach"
250 | version = "5.0.1"
251 | description = "An easy safelist-based HTML-sanitizing tool."
252 | category = "dev"
253 | optional = false
254 | python-versions = ">=3.7"
255 | files = [
256 | {file = "bleach-5.0.1-py3-none-any.whl", hash = "sha256:085f7f33c15bd408dd9b17a4ad77c577db66d76203e5984b1bd59baeee948b2a"},
257 | {file = "bleach-5.0.1.tar.gz", hash = "sha256:0d03255c47eb9bd2f26aa9bb7f2107732e7e8fe195ca2f64709fcf3b0a4a085c"},
258 | ]
259 |
260 | [package.dependencies]
261 | six = ">=1.9.0"
262 | webencodings = "*"
263 |
264 | [package.extras]
265 | css = ["tinycss2 (>=1.1.0,<1.2)"]
266 | dev = ["Sphinx (==4.3.2)", "black (==22.3.0)", "build (==0.8.0)", "flake8 (==4.0.1)", "hashin (==0.17.0)", "mypy (==0.961)", "pip-tools (==6.6.2)", "pytest (==7.1.2)", "tox (==3.25.0)", "twine (==4.0.1)", "wheel (==0.37.1)"]
267 |
268 | [[package]]
269 | name = "boto3"
270 | version = "1.26.50"
271 | description = "The AWS SDK for Python"
272 | category = "main"
273 | optional = false
274 | python-versions = ">= 3.7"
275 | files = [
276 | {file = "boto3-1.26.50-py3-none-any.whl", hash = "sha256:9c434bcd02c527485c89d6efbd38b7c205e06ab06abe80e5dbf9a8be836c77c2"},
277 | {file = "boto3-1.26.50.tar.gz", hash = "sha256:3737d8a506f50065bb2366a6b8e7545d88034f4771527790a125e0abd307d8e8"},
278 | ]
279 |
280 | [package.dependencies]
281 | botocore = ">=1.29.50,<1.30.0"
282 | jmespath = ">=0.7.1,<2.0.0"
283 | s3transfer = ">=0.6.0,<0.7.0"
284 |
285 | [package.extras]
286 | crt = ["botocore[crt] (>=1.21.0,<2.0a0)"]
287 |
288 | [[package]]
289 | name = "botocore"
290 | version = "1.29.50"
291 | description = "Low-level, data-driven core of boto 3."
292 | category = "main"
293 | optional = false
294 | python-versions = ">= 3.7"
295 | files = [
296 | {file = "botocore-1.29.50-py3-none-any.whl", hash = "sha256:0e9ab19787ad7a079c00d3e40b16bc66423e54bc0e8a203b70b543bd8854d5ad"},
297 | {file = "botocore-1.29.50.tar.gz", hash = "sha256:5cc68b78a48217550c18b4639420b7c3b48ed9e09e749343143acbfa423ceec5"},
298 | ]
299 |
300 | [package.dependencies]
301 | jmespath = ">=0.7.1,<2.0.0"
302 | python-dateutil = ">=2.1,<3.0.0"
303 | urllib3 = ">=1.25.4,<1.27"
304 |
305 | [package.extras]
306 | crt = ["awscrt (==0.15.3)"]
307 |
308 | [[package]]
309 | name = "certifi"
310 | version = "2022.12.7"
311 | description = "Python package for providing Mozilla's CA Bundle."
312 | category = "dev"
313 | optional = false
314 | python-versions = ">=3.6"
315 | files = [
316 | {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
317 | {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
318 | ]
319 |
320 | [[package]]
321 | name = "cffi"
322 | version = "1.15.1"
323 | description = "Foreign Function Interface for Python calling C code."
324 | category = "dev"
325 | optional = false
326 | python-versions = "*"
327 | files = [
328 | {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"},
329 | {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"},
330 | {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"},
331 | {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"},
332 | {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"},
333 | {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"},
334 | {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"},
335 | {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"},
336 | {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"},
337 | {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"},
338 | {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"},
339 | {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"},
340 | {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"},
341 | {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"},
342 | {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"},
343 | {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"},
344 | {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"},
345 | {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"},
346 | {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"},
347 | {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"},
348 | {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"},
349 | {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"},
350 | {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"},
351 | {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"},
352 | {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"},
353 | {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"},
354 | {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"},
355 | {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"},
356 | {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"},
357 | {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"},
358 | {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"},
359 | {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"},
360 | {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"},
361 | {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"},
362 | {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"},
363 | {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"},
364 | {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"},
365 | {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"},
366 | {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"},
367 | {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"},
368 | {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"},
369 | {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"},
370 | {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"},
371 | {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"},
372 | {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"},
373 | {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"},
374 | {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"},
375 | {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"},
376 | {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"},
377 | {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"},
378 | {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"},
379 | {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"},
380 | {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"},
381 | {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"},
382 | {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"},
383 | {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"},
384 | {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"},
385 | {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"},
386 | {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"},
387 | {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"},
388 | {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"},
389 | {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"},
390 | {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"},
391 | {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"},
392 | ]
393 |
394 | [package.dependencies]
395 | pycparser = "*"
396 |
397 | [[package]]
398 | name = "charset-normalizer"
399 | version = "2.1.1"
400 | description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
401 | category = "dev"
402 | optional = false
403 | python-versions = ">=3.6.0"
404 | files = [
405 | {file = "charset-normalizer-2.1.1.tar.gz", hash = "sha256:5a3d016c7c547f69d6f81fb0db9449ce888b418b5b9952cc5e6e66843e9dd845"},
406 | {file = "charset_normalizer-2.1.1-py3-none-any.whl", hash = "sha256:83e9a75d1911279afd89352c68b45348559d1fc0506b054b346651b5e7fee29f"},
407 | ]
408 |
409 | [package.extras]
410 | unicode-backport = ["unicodedata2"]
411 |
412 | [[package]]
413 | name = "click"
414 | version = "8.1.3"
415 | description = "Composable command line interface toolkit"
416 | category = "dev"
417 | optional = false
418 | python-versions = ">=3.7"
419 | files = [
420 | {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
421 | {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
422 | ]
423 |
424 | [package.dependencies]
425 | colorama = {version = "*", markers = "platform_system == \"Windows\""}
426 |
427 | [[package]]
428 | name = "colorama"
429 | version = "0.4.6"
430 | description = "Cross-platform colored terminal text."
431 | category = "dev"
432 | optional = false
433 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7"
434 | files = [
435 | {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"},
436 | {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
437 | ]
438 |
439 | [[package]]
440 | name = "comm"
441 | version = "0.1.2"
442 | description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc."
443 | category = "dev"
444 | optional = false
445 | python-versions = ">=3.6"
446 | files = [
447 | {file = "comm-0.1.2-py3-none-any.whl", hash = "sha256:9f3abf3515112fa7c55a42a6a5ab358735c9dccc8b5910a9d8e3ef5998130666"},
448 | {file = "comm-0.1.2.tar.gz", hash = "sha256:3e2f5826578e683999b93716285b3b1f344f157bf75fa9ce0a797564e742f062"},
449 | ]
450 |
451 | [package.dependencies]
452 | traitlets = ">=5.3"
453 |
454 | [package.extras]
455 | test = ["pytest"]
456 |
457 | [[package]]
458 | name = "debugpy"
459 | version = "1.6.5"
460 | description = "An implementation of the Debug Adapter Protocol for Python"
461 | category = "dev"
462 | optional = false
463 | python-versions = ">=3.7"
464 | files = [
465 | {file = "debugpy-1.6.5-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:696165f021a6a17da08163eaae84f3faf5d8be68fb78cd78488dd347e625279c"},
466 | {file = "debugpy-1.6.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17039e392d6f38388a68bd02c5f823b32a92142a851e96ba3ec52aeb1ce9d900"},
467 | {file = "debugpy-1.6.5-cp310-cp310-win32.whl", hash = "sha256:62a06eb78378292ba6c427d861246574dc8b84471904973797b29dd33c7c2495"},
468 | {file = "debugpy-1.6.5-cp310-cp310-win_amd64.whl", hash = "sha256:9984fc00ab372c97f63786c400107f54224663ea293daab7b365a5b821d26309"},
469 | {file = "debugpy-1.6.5-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:048368f121c08b00bbded161e8583817af5055982d2722450a69efe2051621c2"},
470 | {file = "debugpy-1.6.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74e4eca42055759032e3f1909d1374ba1d729143e0c2729bb8cb5e8b5807c458"},
471 | {file = "debugpy-1.6.5-cp37-cp37m-win32.whl", hash = "sha256:0f9afcc8cad6424695f3356dc9a7406d5b18e37ee2e73f34792881a44b02cc50"},
472 | {file = "debugpy-1.6.5-cp37-cp37m-win_amd64.whl", hash = "sha256:b5a74ecebe5253344501d9b23f74459c46428b30437fa9254cfb8cb129943242"},
473 | {file = "debugpy-1.6.5-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:9e809ef787802c808995e5b6ade714a25fa187f892b41a412d418a15a9c4a432"},
474 | {file = "debugpy-1.6.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:947c686e8adb46726f3d5f19854f6aebf66c2edb91225643c7f44b40b064a235"},
475 | {file = "debugpy-1.6.5-cp38-cp38-win32.whl", hash = "sha256:377391341c4b86f403d93e467da8e2d05c22b683f08f9af3e16d980165b06b90"},
476 | {file = "debugpy-1.6.5-cp38-cp38-win_amd64.whl", hash = "sha256:286ae0c2def18ee0dc8a61fa76d51039ca8c11485b6ed3ef83e3efe8a23926ae"},
477 | {file = "debugpy-1.6.5-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:500dd4a9ff818f5c52dddb4a608c7de5371c2d7d905c505eb745556c579a9f11"},
478 | {file = "debugpy-1.6.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f3fab217fe7e2acb2d90732af1a871947def4e2b6654945ba1ebd94bd0bea26"},
479 | {file = "debugpy-1.6.5-cp39-cp39-win32.whl", hash = "sha256:15bc5febe0edc79726517b1f8d57d7ac7c784567b5ba804aab8b1c9d07a57018"},
480 | {file = "debugpy-1.6.5-cp39-cp39-win_amd64.whl", hash = "sha256:7e84d9e4420122384cb2cc762a00b4e17cbf998022890f89b195ce178f78ff47"},
481 | {file = "debugpy-1.6.5-py2.py3-none-any.whl", hash = "sha256:8116e40a1cd0593bd2aba01d4d560ee08f018da8e8fbd4cbd24ff09b5f0e41ef"},
482 | {file = "debugpy-1.6.5.zip", hash = "sha256:5e55e6c79e215239dd0794ee0bf655412b934735a58e9d705e5c544f596f1603"},
483 | ]
484 |
485 | [[package]]
486 | name = "decorator"
487 | version = "5.1.1"
488 | description = "Decorators for Humans"
489 | category = "dev"
490 | optional = false
491 | python-versions = ">=3.5"
492 | files = [
493 | {file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
494 | {file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
495 | ]
496 |
497 | [[package]]
498 | name = "defusedxml"
499 | version = "0.7.1"
500 | description = "XML bomb protection for Python stdlib modules"
501 | category = "dev"
502 | optional = false
503 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
504 | files = [
505 | {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
506 | {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
507 | ]
508 |
509 | [[package]]
510 | name = "delta-spark"
511 | version = "2.2.0"
512 | description = "Python APIs for using Delta Lake with Apache Spark"
513 | category = "main"
514 | optional = false
515 | python-versions = ">=3.6"
516 | files = [
517 | {file = "delta-spark-2.2.0.tar.gz", hash = "sha256:8a22b75c21aafe0d5d05e38be012b932d48441465a19c49ac658136afdee0933"},
518 | {file = "delta_spark-2.2.0-py3-none-any.whl", hash = "sha256:0d3194ac5ff91746c7f8d480fd99211e7edfab6e9b7b5f464527702d34cd427b"},
519 | ]
520 |
521 | [package.dependencies]
522 | importlib-metadata = ">=1.0.0"
523 | pyspark = ">=3.3.0,<3.4.0"
524 |
525 | [[package]]
526 | name = "dill"
527 | version = "0.3.6"
528 | description = "serialize all of python"
529 | category = "dev"
530 | optional = false
531 | python-versions = ">=3.7"
532 | files = [
533 | {file = "dill-0.3.6-py3-none-any.whl", hash = "sha256:a07ffd2351b8c678dfc4a856a3005f8067aea51d6ba6c700796a4d9e280f39f0"},
534 | {file = "dill-0.3.6.tar.gz", hash = "sha256:e5db55f3687856d8fbdab002ed78544e1c4559a130302693d839dfe8f93f2373"},
535 | ]
536 |
537 | [package.extras]
538 | graph = ["objgraph (>=1.7.2)"]
539 |
540 | [[package]]
541 | name = "entrypoints"
542 | version = "0.4"
543 | description = "Discover and load entry points from installed packages."
544 | category = "dev"
545 | optional = false
546 | python-versions = ">=3.6"
547 | files = [
548 | {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
549 | {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
550 | ]
551 |
552 | [[package]]
553 | name = "exceptiongroup"
554 | version = "1.1.0"
555 | description = "Backport of PEP 654 (exception groups)"
556 | category = "dev"
557 | optional = false
558 | python-versions = ">=3.7"
559 | files = [
560 | {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"},
561 | {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"},
562 | ]
563 |
564 | [package.extras]
565 | test = ["pytest (>=6)"]
566 |
567 | [[package]]
568 | name = "executing"
569 | version = "1.2.0"
570 | description = "Get the currently executing AST node of a frame, and other information"
571 | category = "dev"
572 | optional = false
573 | python-versions = "*"
574 | files = [
575 | {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"},
576 | {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"},
577 | ]
578 |
579 | [package.extras]
580 | tests = ["asttokens", "littleutils", "pytest", "rich"]
581 |
582 | [[package]]
583 | name = "fastjsonschema"
584 | version = "2.16.2"
585 | description = "Fastest Python implementation of JSON schema"
586 | category = "dev"
587 | optional = false
588 | python-versions = "*"
589 | files = [
590 | {file = "fastjsonschema-2.16.2-py3-none-any.whl", hash = "sha256:21f918e8d9a1a4ba9c22e09574ba72267a6762d47822db9add95f6454e51cc1c"},
591 | {file = "fastjsonschema-2.16.2.tar.gz", hash = "sha256:01e366f25d9047816fe3d288cbfc3e10541daf0af2044763f3d0ade42476da18"},
592 | ]
593 |
594 | [package.extras]
595 | devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benchmark", "pytest-cache", "validictory"]
596 |
597 | [[package]]
598 | name = "flake8"
599 | version = "6.0.0"
600 | description = "the modular source code checker: pep8 pyflakes and co"
601 | category = "dev"
602 | optional = false
603 | python-versions = ">=3.8.1"
604 | files = [
605 | {file = "flake8-6.0.0-py2.py3-none-any.whl", hash = "sha256:3833794e27ff64ea4e9cf5d410082a8b97ff1a06c16aa3d2027339cd0f1195c7"},
606 | {file = "flake8-6.0.0.tar.gz", hash = "sha256:c61007e76655af75e6785a931f452915b371dc48f56efd765247c8fe68f2b181"},
607 | ]
608 |
609 | [package.dependencies]
610 | mccabe = ">=0.7.0,<0.8.0"
611 | pycodestyle = ">=2.10.0,<2.11.0"
612 | pyflakes = ">=3.0.0,<3.1.0"
613 |
614 | [[package]]
615 | name = "fqdn"
616 | version = "1.5.1"
617 | description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers"
618 | category = "dev"
619 | optional = false
620 | python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4"
621 | files = [
622 | {file = "fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014"},
623 | {file = "fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f"},
624 | ]
625 |
626 | [[package]]
627 | name = "idna"
628 | version = "3.4"
629 | description = "Internationalized Domain Names in Applications (IDNA)"
630 | category = "dev"
631 | optional = false
632 | python-versions = ">=3.5"
633 | files = [
634 | {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"},
635 | {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"},
636 | ]
637 |
638 | [[package]]
639 | name = "importlib-metadata"
640 | version = "6.0.0"
641 | description = "Read metadata from Python packages"
642 | category = "main"
643 | optional = false
644 | python-versions = ">=3.7"
645 | files = [
646 | {file = "importlib_metadata-6.0.0-py3-none-any.whl", hash = "sha256:7efb448ec9a5e313a57655d35aa54cd3e01b7e1fbcf72dce1bf06119420f5bad"},
647 | {file = "importlib_metadata-6.0.0.tar.gz", hash = "sha256:e354bedeb60efa6affdcc8ae121b73544a7aa74156d047311948f6d711cd378d"},
648 | ]
649 |
650 | [package.dependencies]
651 | zipp = ">=0.5"
652 |
653 | [package.extras]
654 | docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
655 | perf = ["ipython"]
656 | testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
657 |
658 | [[package]]
659 | name = "importlib-resources"
660 | version = "5.10.2"
661 | description = "Read resources from Python packages"
662 | category = "dev"
663 | optional = false
664 | python-versions = ">=3.7"
665 | files = [
666 | {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"},
667 | {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"},
668 | ]
669 |
670 | [package.dependencies]
671 | zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""}
672 |
673 | [package.extras]
674 | docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
675 | testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
676 |
677 | [[package]]
678 | name = "iniconfig"
679 | version = "2.0.0"
680 | description = "brain-dead simple config-ini parsing"
681 | category = "dev"
682 | optional = false
683 | python-versions = ">=3.7"
684 | files = [
685 | {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"},
686 | {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"},
687 | ]
688 |
689 | [[package]]
690 | name = "ipykernel"
691 | version = "6.20.1"
692 | description = "IPython Kernel for Jupyter"
693 | category = "dev"
694 | optional = false
695 | python-versions = ">=3.8"
696 | files = [
697 | {file = "ipykernel-6.20.1-py3-none-any.whl", hash = "sha256:a314e6782a4f9e277783382976b3a93608a3787cd70a235b558b47f875134be1"},
698 | {file = "ipykernel-6.20.1.tar.gz", hash = "sha256:f6016ecbf581d0ea6e29ba16cee6cc1a9bbde3835900c46c6571a791692f4139"},
699 | ]
700 |
701 | [package.dependencies]
702 | appnope = {version = "*", markers = "platform_system == \"Darwin\""}
703 | comm = ">=0.1.1"
704 | debugpy = ">=1.0"
705 | ipython = ">=7.23.1"
706 | jupyter-client = ">=6.1.12"
707 | matplotlib-inline = ">=0.1"
708 | nest-asyncio = "*"
709 | packaging = "*"
710 | psutil = "*"
711 | pyzmq = ">=17"
712 | tornado = ">=6.1"
713 | traitlets = ">=5.4.0"
714 |
715 | [package.extras]
716 | cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"]
717 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"]
718 | pyqt5 = ["pyqt5"]
719 | pyside6 = ["pyside6"]
720 | test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"]
721 |
722 | [[package]]
723 | name = "ipython"
724 | version = "8.8.0"
725 | description = "IPython: Productive Interactive Computing"
726 | category = "dev"
727 | optional = false
728 | python-versions = ">=3.8"
729 | files = [
730 | {file = "ipython-8.8.0-py3-none-any.whl", hash = "sha256:da01e6df1501e6e7c32b5084212ddadd4ee2471602e2cf3e0190f4de6b0ea481"},
731 | {file = "ipython-8.8.0.tar.gz", hash = "sha256:f3bf2c08505ad2c3f4ed5c46ae0331a8547d36bf4b21a451e8ae80c0791db95b"},
732 | ]
733 |
734 | [package.dependencies]
735 | appnope = {version = "*", markers = "sys_platform == \"darwin\""}
736 | backcall = "*"
737 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
738 | decorator = "*"
739 | jedi = ">=0.16"
740 | matplotlib-inline = "*"
741 | pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""}
742 | pickleshare = "*"
743 | prompt-toolkit = ">=3.0.11,<3.1.0"
744 | pygments = ">=2.4.0"
745 | stack-data = "*"
746 | traitlets = ">=5"
747 |
748 | [package.extras]
749 | all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.20)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"]
750 | black = ["black"]
751 | doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"]
752 | kernel = ["ipykernel"]
753 | nbconvert = ["nbconvert"]
754 | nbformat = ["nbformat"]
755 | notebook = ["ipywidgets", "notebook"]
756 | parallel = ["ipyparallel"]
757 | qtconsole = ["qtconsole"]
758 | test = ["pytest (<7.1)", "pytest-asyncio", "testpath"]
759 | test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.20)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"]
760 |
761 | [[package]]
762 | name = "ipython-genutils"
763 | version = "0.2.0"
764 | description = "Vestigial utilities from IPython"
765 | category = "dev"
766 | optional = false
767 | python-versions = "*"
768 | files = [
769 | {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
770 | {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
771 | ]
772 |
773 | [[package]]
774 | name = "isoduration"
775 | version = "20.11.0"
776 | description = "Operations with ISO 8601 durations"
777 | category = "dev"
778 | optional = false
779 | python-versions = ">=3.7"
780 | files = [
781 | {file = "isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042"},
782 | {file = "isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9"},
783 | ]
784 |
785 | [package.dependencies]
786 | arrow = ">=0.15.0"
787 |
788 | [[package]]
789 | name = "isort"
790 | version = "5.11.4"
791 | description = "A Python utility / library to sort Python imports."
792 | category = "dev"
793 | optional = false
794 | python-versions = ">=3.7.0"
795 | files = [
796 | {file = "isort-5.11.4-py3-none-any.whl", hash = "sha256:c033fd0edb91000a7f09527fe5c75321878f98322a77ddcc81adbd83724afb7b"},
797 | {file = "isort-5.11.4.tar.gz", hash = "sha256:6db30c5ded9815d813932c04c2f85a360bcdd35fed496f4d8f35495ef0a261b6"},
798 | ]
799 |
800 | [package.extras]
801 | colors = ["colorama (>=0.4.3,<0.5.0)"]
802 | pipfile-deprecated-finder = ["pipreqs", "requirementslib"]
803 | plugins = ["setuptools"]
804 | requirements-deprecated-finder = ["pip-api", "pipreqs"]
805 |
806 | [[package]]
807 | name = "jedi"
808 | version = "0.18.2"
809 | description = "An autocompletion tool for Python that can be used for text editors."
810 | category = "dev"
811 | optional = false
812 | python-versions = ">=3.6"
813 | files = [
814 | {file = "jedi-0.18.2-py2.py3-none-any.whl", hash = "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e"},
815 | {file = "jedi-0.18.2.tar.gz", hash = "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612"},
816 | ]
817 |
818 | [package.dependencies]
819 | parso = ">=0.8.0,<0.9.0"
820 |
821 | [package.extras]
822 | docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"]
823 | qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
824 | testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"]
825 |
826 | [[package]]
827 | name = "jinja2"
828 | version = "3.1.2"
829 | description = "A very fast and expressive template engine."
830 | category = "dev"
831 | optional = false
832 | python-versions = ">=3.7"
833 | files = [
834 | {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
835 | {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
836 | ]
837 |
838 | [package.dependencies]
839 | MarkupSafe = ">=2.0"
840 |
841 | [package.extras]
842 | i18n = ["Babel (>=2.7)"]
843 |
844 | [[package]]
845 | name = "jmespath"
846 | version = "1.0.1"
847 | description = "JSON Matching Expressions"
848 | category = "main"
849 | optional = false
850 | python-versions = ">=3.7"
851 | files = [
852 | {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"},
853 | {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"},
854 | ]
855 |
856 | [[package]]
857 | name = "json5"
858 | version = "0.9.11"
859 | description = "A Python implementation of the JSON5 data format."
860 | category = "dev"
861 | optional = false
862 | python-versions = "*"
863 | files = [
864 | {file = "json5-0.9.11-py2.py3-none-any.whl", hash = "sha256:1aa54b80b5e507dfe31d12b7743a642e2ffa6f70bf73b8e3d7d1d5fba83d99bd"},
865 | {file = "json5-0.9.11.tar.gz", hash = "sha256:4f1e196acc55b83985a51318489f345963c7ba84aa37607e49073066c562e99b"},
866 | ]
867 |
868 | [package.extras]
869 | dev = ["hypothesis"]
870 |
871 | [[package]]
872 | name = "jsonpointer"
873 | version = "2.3"
874 | description = "Identify specific nodes in a JSON document (RFC 6901)"
875 | category = "dev"
876 | optional = false
877 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
878 | files = [
879 | {file = "jsonpointer-2.3-py2.py3-none-any.whl", hash = "sha256:51801e558539b4e9cd268638c078c6c5746c9ac96bc38152d443400e4f3793e9"},
880 | {file = "jsonpointer-2.3.tar.gz", hash = "sha256:97cba51526c829282218feb99dab1b1e6bdf8efd1c43dc9d57be093c0d69c99a"},
881 | ]
882 |
883 | [[package]]
884 | name = "jsonschema"
885 | version = "4.17.3"
886 | description = "An implementation of JSON Schema validation for Python"
887 | category = "dev"
888 | optional = false
889 | python-versions = ">=3.7"
890 | files = [
891 | {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"},
892 | {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"},
893 | ]
894 |
895 | [package.dependencies]
896 | attrs = ">=17.4.0"
897 | fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
898 | idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
899 | importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""}
900 | isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
901 | jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""}
902 | pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""}
903 | pyrsistent = ">=0.14.0,<0.17.0 || >0.17.0,<0.17.1 || >0.17.1,<0.17.2 || >0.17.2"
904 | rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
905 | rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""}
906 | uri-template = {version = "*", optional = true, markers = "extra == \"format-nongpl\""}
907 | webcolors = {version = ">=1.11", optional = true, markers = "extra == \"format-nongpl\""}
908 |
909 | [package.extras]
910 | format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"]
911 | format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"]
912 |
913 | [[package]]
914 | name = "jupyter-client"
915 | version = "7.4.8"
916 | description = "Jupyter protocol implementation and client libraries"
917 | category = "dev"
918 | optional = false
919 | python-versions = ">=3.7"
920 | files = [
921 | {file = "jupyter_client-7.4.8-py3-none-any.whl", hash = "sha256:d4a67ae86ee014bcb96bd8190714f6af921f2b0f52f4208b086aa5acfd9f8d65"},
922 | {file = "jupyter_client-7.4.8.tar.gz", hash = "sha256:109a3c33b62a9cf65aa8325850a0999a795fac155d9de4f7555aef5f310ee35a"},
923 | ]
924 |
925 | [package.dependencies]
926 | entrypoints = "*"
927 | jupyter-core = ">=4.9.2"
928 | nest-asyncio = ">=1.5.4"
929 | python-dateutil = ">=2.8.2"
930 | pyzmq = ">=23.0"
931 | tornado = ">=6.2"
932 | traitlets = "*"
933 |
934 | [package.extras]
935 | doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
936 | test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"]
937 |
938 | [[package]]
939 | name = "jupyter-core"
940 | version = "5.1.3"
941 | description = "Jupyter core package. A base package on which Jupyter projects rely."
942 | category = "dev"
943 | optional = false
944 | python-versions = ">=3.8"
945 | files = [
946 | {file = "jupyter_core-5.1.3-py3-none-any.whl", hash = "sha256:d23ab7db81ca1759f13780cd6b65f37f59bf8e0186ac422d5ca4982cc7d56716"},
947 | {file = "jupyter_core-5.1.3.tar.gz", hash = "sha256:82e1cff0ef804c38677eff7070d5ff1d45037fef01a2d9ba9e6b7b8201831e9f"},
948 | ]
949 |
950 | [package.dependencies]
951 | platformdirs = ">=2.5"
952 | pywin32 = {version = ">=1.0", markers = "sys_platform == \"win32\" and platform_python_implementation != \"PyPy\""}
953 | traitlets = ">=5.3"
954 |
955 | [package.extras]
956 | docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"]
957 | test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"]
958 |
959 | [[package]]
960 | name = "jupyter-events"
961 | version = "0.6.0"
962 | description = "Jupyter Event System library"
963 | category = "dev"
964 | optional = false
965 | python-versions = ">=3.7"
966 | files = [
967 | {file = "jupyter_events-0.6.0-py3-none-any.whl", hash = "sha256:587f3055fe965f023b23b9929b22d2070e8b5c79ef0a42e37bdb12199862f63c"},
968 | {file = "jupyter_events-0.6.0.tar.gz", hash = "sha256:bee793d06e124c5a80da3346f96f17aec5e0f28b632a514682b2a18ff548c69a"},
969 | ]
970 |
971 | [package.dependencies]
972 | jsonschema = {version = ">=4.3.0", extras = ["format-nongpl"]}
973 | python-json-logger = ">=2.0.4"
974 | pyyaml = ">=6.0"
975 | traitlets = ">=5.3"
976 |
977 | [package.extras]
978 | cli = ["click", "rich"]
979 | docs = ["jupyterlite-sphinx", "myst-parser", "pydata-sphinx-theme", "sphinxcontrib-spelling"]
980 | test = ["click", "coverage", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "pytest-console-scripts", "pytest-cov", "rich"]
981 |
982 | [[package]]
983 | name = "jupyter-server"
984 | version = "2.0.6"
985 | description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications."
986 | category = "dev"
987 | optional = false
988 | python-versions = ">=3.8"
989 | files = [
990 | {file = "jupyter_server-2.0.6-py3-none-any.whl", hash = "sha256:6a4c9a3f9fa8679015954586944a568b911a98d7480ae1d56ff55a6a4f055254"},
991 | {file = "jupyter_server-2.0.6.tar.gz", hash = "sha256:8dd75992e90b7ca556794a1ed5cca51263c697abc6d0df561af574aa1c0a033f"},
992 | ]
993 |
994 | [package.dependencies]
995 | anyio = ">=3.1.0,<4"
996 | argon2-cffi = "*"
997 | jinja2 = "*"
998 | jupyter-client = ">=7.4.4"
999 | jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
1000 | jupyter-events = ">=0.4.0"
1001 | jupyter-server-terminals = "*"
1002 | nbconvert = ">=6.4.4"
1003 | nbformat = ">=5.3.0"
1004 | packaging = "*"
1005 | prometheus-client = "*"
1006 | pywinpty = {version = "*", markers = "os_name == \"nt\""}
1007 | pyzmq = ">=24"
1008 | send2trash = "*"
1009 | terminado = ">=0.8.3"
1010 | tornado = ">=6.2.0"
1011 | traitlets = ">=5.6.0"
1012 | websocket-client = "*"
1013 |
1014 | [package.extras]
1015 | docs = ["docutils (<0.20)", "ipykernel", "jinja2", "jupyter-client", "jupyter-server", "mistune (<1.0.0)", "myst-parser", "nbformat", "prometheus-client", "pydata-sphinx-theme", "send2trash", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
1016 | test = ["ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-scripts", "pytest-jupyter[server] (>=0.4)", "pytest-timeout", "requests"]
1017 |
1018 | [[package]]
1019 | name = "jupyter-server-terminals"
1020 | version = "0.4.4"
1021 | description = "A Jupyter Server Extension Providing Terminals."
1022 | category = "dev"
1023 | optional = false
1024 | python-versions = ">=3.8"
1025 | files = [
1026 | {file = "jupyter_server_terminals-0.4.4-py3-none-any.whl", hash = "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36"},
1027 | {file = "jupyter_server_terminals-0.4.4.tar.gz", hash = "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d"},
1028 | ]
1029 |
1030 | [package.dependencies]
1031 | pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""}
1032 | terminado = ">=0.8.3"
1033 |
1034 | [package.extras]
1035 | docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"]
1036 | test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"]
1037 |
1038 | [[package]]
1039 | name = "jupyterlab"
1040 | version = "3.5.2"
1041 | description = "JupyterLab computational environment"
1042 | category = "dev"
1043 | optional = false
1044 | python-versions = ">=3.7"
1045 | files = [
1046 | {file = "jupyterlab-3.5.2-py3-none-any.whl", hash = "sha256:16e9b8320dcec469c70bb883e993e0bb84c4ea1a734063731f66922cf72add1b"},
1047 | {file = "jupyterlab-3.5.2.tar.gz", hash = "sha256:10ac094215ffb872ddffbe2982bf1c039a79fecc326e191e7cc5efd84f331dad"},
1048 | ]
1049 |
1050 | [package.dependencies]
1051 | ipython = "*"
1052 | jinja2 = ">=2.1"
1053 | jupyter-core = "*"
1054 | jupyter-server = ">=1.16.0,<3"
1055 | jupyterlab-server = ">=2.10,<3.0"
1056 | nbclassic = "*"
1057 | notebook = "<7"
1058 | packaging = "*"
1059 | tomli = "*"
1060 | tornado = ">=6.1.0"
1061 |
1062 | [package.extras]
1063 | test = ["check-manifest", "coverage", "jupyterlab-server[test]", "pre-commit", "pytest (>=6.0)", "pytest-check-links (>=0.5)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.6.0)", "pytest-tornasync", "requests", "requests-cache", "virtualenv"]
1064 |
1065 | [[package]]
1066 | name = "jupyterlab-pygments"
1067 | version = "0.2.2"
1068 | description = "Pygments theme using JupyterLab CSS variables"
1069 | category = "dev"
1070 | optional = false
1071 | python-versions = ">=3.7"
1072 | files = [
1073 | {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"},
1074 | {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"},
1075 | ]
1076 |
1077 | [[package]]
1078 | name = "jupyterlab-server"
1079 | version = "2.18.0"
1080 | description = "A set of server components for JupyterLab and JupyterLab like applications."
1081 | category = "dev"
1082 | optional = false
1083 | python-versions = ">=3.7"
1084 | files = [
1085 | {file = "jupyterlab_server-2.18.0-py3-none-any.whl", hash = "sha256:2ce377afe6c5f762e933de1d942cad1ec07a1fbace4b586cd7a905fd57892695"},
1086 | {file = "jupyterlab_server-2.18.0.tar.gz", hash = "sha256:7830f085debc9417a72ebf482dc5cb477d6bf76884826c73182fa457c7829df4"},
1087 | ]
1088 |
1089 | [package.dependencies]
1090 | babel = ">=2.10"
1091 | importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""}
1092 | jinja2 = ">=3.0.3"
1093 | json5 = ">=0.9.0"
1094 | jsonschema = ">=4.17.3"
1095 | jupyter-server = ">=1.21,<3"
1096 | packaging = ">=21.3"
1097 | requests = ">=2.28"
1098 |
1099 | [package.extras]
1100 | docs = ["autodoc-traits", "docutils (<0.20)", "jinja2 (<3.2.0)", "mistune (<3)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi"]
1101 | openapi = ["openapi-core (>=0.16.1)", "ruamel-yaml"]
1102 | test = ["codecov", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"]
1103 |
1104 | [[package]]
1105 | name = "lazy-object-proxy"
1106 | version = "1.9.0"
1107 | description = "A fast and thorough lazy object proxy."
1108 | category = "dev"
1109 | optional = false
1110 | python-versions = ">=3.7"
1111 | files = [
1112 | {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"},
1113 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"},
1114 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"},
1115 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"},
1116 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"},
1117 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"},
1118 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"},
1119 | {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"},
1120 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"},
1121 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"},
1122 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"},
1123 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"},
1124 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"},
1125 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"},
1126 | {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"},
1127 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"},
1128 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"},
1129 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"},
1130 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"},
1131 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"},
1132 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"},
1133 | {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"},
1134 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"},
1135 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"},
1136 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"},
1137 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"},
1138 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"},
1139 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"},
1140 | {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"},
1141 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"},
1142 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"},
1143 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"},
1144 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"},
1145 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"},
1146 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"},
1147 | {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"},
1148 | ]
1149 |
1150 | [[package]]
1151 | name = "markupsafe"
1152 | version = "2.1.1"
1153 | description = "Safely add untrusted strings to HTML/XML markup."
1154 | category = "dev"
1155 | optional = false
1156 | python-versions = ">=3.7"
1157 | files = [
1158 | {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
1159 | {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
1160 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
1161 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
1162 | {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
1163 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
1164 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
1165 | {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
1166 | {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
1167 | {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
1168 | {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
1169 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
1170 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
1171 | {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
1172 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
1173 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
1174 | {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
1175 | {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
1176 | {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
1177 | {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
1178 | {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
1179 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
1180 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
1181 | {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
1182 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
1183 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
1184 | {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
1185 | {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
1186 | {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
1187 | {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
1188 | {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
1189 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
1190 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
1191 | {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
1192 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
1193 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
1194 | {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
1195 | {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
1196 | {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
1197 | {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
1198 | ]
1199 |
1200 | [[package]]
1201 | name = "matplotlib-inline"
1202 | version = "0.1.6"
1203 | description = "Inline Matplotlib backend for Jupyter"
1204 | category = "dev"
1205 | optional = false
1206 | python-versions = ">=3.5"
1207 | files = [
1208 | {file = "matplotlib-inline-0.1.6.tar.gz", hash = "sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304"},
1209 | {file = "matplotlib_inline-0.1.6-py3-none-any.whl", hash = "sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311"},
1210 | ]
1211 |
1212 | [package.dependencies]
1213 | traitlets = "*"
1214 |
1215 | [[package]]
1216 | name = "mccabe"
1217 | version = "0.7.0"
1218 | description = "McCabe checker, plugin for flake8"
1219 | category = "dev"
1220 | optional = false
1221 | python-versions = ">=3.6"
1222 | files = [
1223 | {file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
1224 | {file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
1225 | ]
1226 |
1227 | [[package]]
1228 | name = "mistune"
1229 | version = "2.0.4"
1230 | description = "A sane Markdown parser with useful plugins and renderers"
1231 | category = "dev"
1232 | optional = false
1233 | python-versions = "*"
1234 | files = [
1235 | {file = "mistune-2.0.4-py2.py3-none-any.whl", hash = "sha256:182cc5ee6f8ed1b807de6b7bb50155df7b66495412836b9a74c8fbdfc75fe36d"},
1236 | {file = "mistune-2.0.4.tar.gz", hash = "sha256:9ee0a66053e2267aba772c71e06891fa8f1af6d4b01d5e84e267b4570d4d9808"},
1237 | ]
1238 |
1239 | [[package]]
1240 | name = "mypy-extensions"
1241 | version = "0.4.3"
1242 | description = "Experimental type system extensions for programs checked with the mypy typechecker."
1243 | category = "dev"
1244 | optional = false
1245 | python-versions = "*"
1246 | files = [
1247 | {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
1248 | {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
1249 | ]
1250 |
1251 | [[package]]
1252 | name = "nbclassic"
1253 | version = "0.4.8"
1254 | description = "A web-based notebook environment for interactive computing"
1255 | category = "dev"
1256 | optional = false
1257 | python-versions = ">=3.7"
1258 | files = [
1259 | {file = "nbclassic-0.4.8-py3-none-any.whl", hash = "sha256:cbf05df5842b420d5cece0143462380ea9d308ff57c2dc0eb4d6e035b18fbfb3"},
1260 | {file = "nbclassic-0.4.8.tar.gz", hash = "sha256:c74d8a500f8e058d46b576a41e5bc640711e1032cf7541dde5f73ea49497e283"},
1261 | ]
1262 |
1263 | [package.dependencies]
1264 | argon2-cffi = "*"
1265 | ipykernel = "*"
1266 | ipython-genutils = "*"
1267 | jinja2 = "*"
1268 | jupyter-client = ">=6.1.1"
1269 | jupyter-core = ">=4.6.1"
1270 | jupyter-server = ">=1.8"
1271 | nbconvert = ">=5"
1272 | nbformat = "*"
1273 | nest-asyncio = ">=1.5"
1274 | notebook-shim = ">=0.1.0"
1275 | prometheus-client = "*"
1276 | pyzmq = ">=17"
1277 | Send2Trash = ">=1.8.0"
1278 | terminado = ">=0.8.3"
1279 | tornado = ">=6.1"
1280 | traitlets = ">=4.2.1"
1281 |
1282 | [package.extras]
1283 | docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
1284 | json-logging = ["json-logging"]
1285 | test = ["coverage", "nbval", "pytest", "pytest-cov", "pytest-playwright", "pytest-tornasync", "requests", "requests-unixsocket", "testpath"]
1286 |
1287 | [[package]]
1288 | name = "nbclient"
1289 | version = "0.7.2"
1290 | description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor."
1291 | category = "dev"
1292 | optional = false
1293 | python-versions = ">=3.7.0"
1294 | files = [
1295 | {file = "nbclient-0.7.2-py3-none-any.whl", hash = "sha256:d97ac6257de2794f5397609df754fcbca1a603e94e924eb9b99787c031ae2e7c"},
1296 | {file = "nbclient-0.7.2.tar.gz", hash = "sha256:884a3f4a8c4fc24bb9302f263e0af47d97f0d01fe11ba714171b320c8ac09547"},
1297 | ]
1298 |
1299 | [package.dependencies]
1300 | jupyter-client = ">=6.1.12"
1301 | jupyter-core = ">=4.12,<5.0.0 || >=5.1.0"
1302 | nbformat = ">=5.1"
1303 | traitlets = ">=5.3"
1304 |
1305 | [package.extras]
1306 | dev = ["pre-commit"]
1307 | docs = ["autodoc-traits", "mock", "moto", "myst-parser", "nbclient[test]", "sphinx (>=1.7)", "sphinx-book-theme"]
1308 | test = ["ipykernel", "ipython", "ipywidgets", "nbconvert (>=7.0.0)", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov (>=4.0)", "testpath", "xmltodict"]
1309 |
1310 | [[package]]
1311 | name = "nbconvert"
1312 | version = "7.2.7"
1313 | description = "Converting Jupyter Notebooks"
1314 | category = "dev"
1315 | optional = false
1316 | python-versions = ">=3.7"
1317 | files = [
1318 | {file = "nbconvert-7.2.7-py3-none-any.whl", hash = "sha256:e057f1f87a6ac50629b724d9a46b40e2ba394d6f20ee7f33f4acef1928a15af3"},
1319 | {file = "nbconvert-7.2.7.tar.gz", hash = "sha256:8b727b0503bf4e0ff3907c8bea030d3fc4015fbee8669ac6ac2a5a6668b49d5e"},
1320 | ]
1321 |
1322 | [package.dependencies]
1323 | beautifulsoup4 = "*"
1324 | bleach = "*"
1325 | defusedxml = "*"
1326 | importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""}
1327 | jinja2 = ">=3.0"
1328 | jupyter-core = ">=4.7"
1329 | jupyterlab-pygments = "*"
1330 | markupsafe = ">=2.0"
1331 | mistune = ">=2.0.3,<3"
1332 | nbclient = ">=0.5.0"
1333 | nbformat = ">=5.1"
1334 | packaging = "*"
1335 | pandocfilters = ">=1.4.1"
1336 | pygments = ">=2.4.1"
1337 | tinycss2 = "*"
1338 | traitlets = ">=5.0"
1339 |
1340 | [package.extras]
1341 | all = ["nbconvert[docs,qtpdf,serve,test,webpdf]"]
1342 | docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sphinx-theme", "sphinx (==5.0.2)"]
1343 | qtpdf = ["nbconvert[qtpng]"]
1344 | qtpng = ["pyqtwebengine (>=5.15)"]
1345 | serve = ["tornado (>=6.1)"]
1346 | test = ["ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"]
1347 | webpdf = ["pyppeteer (>=1,<1.1)"]
1348 |
1349 | [[package]]
1350 | name = "nbformat"
1351 | version = "5.7.1"
1352 | description = "The Jupyter Notebook format"
1353 | category = "dev"
1354 | optional = false
1355 | python-versions = ">=3.7"
1356 | files = [
1357 | {file = "nbformat-5.7.1-py3-none-any.whl", hash = "sha256:e52ab802ce7f7a2863861e914642f021b9d7c23ad9726d14c36df92a79acd754"},
1358 | {file = "nbformat-5.7.1.tar.gz", hash = "sha256:3810a0130453ed031970521d20989b8a592f3c2e73283a8280ae34ae1f75b3f8"},
1359 | ]
1360 |
1361 | [package.dependencies]
1362 | fastjsonschema = "*"
1363 | jsonschema = ">=2.6"
1364 | jupyter-core = "*"
1365 | traitlets = ">=5.1"
1366 |
1367 | [package.extras]
1368 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinxcontrib-github-alt"]
1369 | test = ["pep440", "pre-commit", "pytest", "testpath"]
1370 |
1371 | [[package]]
1372 | name = "nest-asyncio"
1373 | version = "1.5.6"
1374 | description = "Patch asyncio to allow nested event loops"
1375 | category = "dev"
1376 | optional = false
1377 | python-versions = ">=3.5"
1378 | files = [
1379 | {file = "nest_asyncio-1.5.6-py3-none-any.whl", hash = "sha256:b9a953fb40dceaa587d109609098db21900182b16440652454a146cffb06e8b8"},
1380 | {file = "nest_asyncio-1.5.6.tar.gz", hash = "sha256:d267cc1ff794403f7df692964d1d2a3fa9418ffea2a3f6859a439ff482fef290"},
1381 | ]
1382 |
1383 | [[package]]
1384 | name = "notebook"
1385 | version = "6.5.2"
1386 | description = "A web-based notebook environment for interactive computing"
1387 | category = "dev"
1388 | optional = false
1389 | python-versions = ">=3.7"
1390 | files = [
1391 | {file = "notebook-6.5.2-py3-none-any.whl", hash = "sha256:e04f9018ceb86e4fa841e92ea8fb214f8d23c1cedfde530cc96f92446924f0e4"},
1392 | {file = "notebook-6.5.2.tar.gz", hash = "sha256:c1897e5317e225fc78b45549a6ab4b668e4c996fd03a04e938fe5e7af2bfffd0"},
1393 | ]
1394 |
1395 | [package.dependencies]
1396 | argon2-cffi = "*"
1397 | ipykernel = "*"
1398 | ipython-genutils = "*"
1399 | jinja2 = "*"
1400 | jupyter-client = ">=5.3.4"
1401 | jupyter-core = ">=4.6.1"
1402 | nbclassic = ">=0.4.7"
1403 | nbconvert = ">=5"
1404 | nbformat = "*"
1405 | nest-asyncio = ">=1.5"
1406 | prometheus-client = "*"
1407 | pyzmq = ">=17"
1408 | Send2Trash = ">=1.8.0"
1409 | terminado = ">=0.8.3"
1410 | tornado = ">=6.1"
1411 | traitlets = ">=4.2.1"
1412 |
1413 | [package.extras]
1414 | docs = ["myst-parser", "nbsphinx", "sphinx", "sphinx-rtd-theme", "sphinxcontrib-github-alt"]
1415 | json-logging = ["json-logging"]
1416 | test = ["coverage", "nbval", "pytest", "pytest-cov", "requests", "requests-unixsocket", "selenium (==4.1.5)", "testpath"]
1417 |
1418 | [[package]]
1419 | name = "notebook-shim"
1420 | version = "0.2.2"
1421 | description = "A shim layer for notebook traits and config"
1422 | category = "dev"
1423 | optional = false
1424 | python-versions = ">=3.7"
1425 | files = [
1426 | {file = "notebook_shim-0.2.2-py3-none-any.whl", hash = "sha256:9c6c30f74c4fbea6fce55c1be58e7fd0409b1c681b075dcedceb005db5026949"},
1427 | {file = "notebook_shim-0.2.2.tar.gz", hash = "sha256:090e0baf9a5582ff59b607af523ca2db68ff216da0c69956b62cab2ef4fc9c3f"},
1428 | ]
1429 |
1430 | [package.dependencies]
1431 | jupyter-server = ">=1.8,<3"
1432 |
1433 | [package.extras]
1434 | test = ["pytest", "pytest-console-scripts", "pytest-tornasync"]
1435 |
1436 | [[package]]
1437 | name = "numpy"
1438 | version = "1.24.1"
1439 | description = "Fundamental package for array computing in Python"
1440 | category = "main"
1441 | optional = false
1442 | python-versions = ">=3.8"
1443 | files = [
1444 | {file = "numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7"},
1445 | {file = "numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9"},
1446 | {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7"},
1447 | {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398"},
1448 | {file = "numpy-1.24.1-cp310-cp310-win32.whl", hash = "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2"},
1449 | {file = "numpy-1.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2"},
1450 | {file = "numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8"},
1451 | {file = "numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032"},
1452 | {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1"},
1453 | {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9"},
1454 | {file = "numpy-1.24.1-cp311-cp311-win32.whl", hash = "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36"},
1455 | {file = "numpy-1.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51"},
1456 | {file = "numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407"},
1457 | {file = "numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954"},
1458 | {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36"},
1459 | {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7"},
1460 | {file = "numpy-1.24.1-cp38-cp38-win32.whl", hash = "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1"},
1461 | {file = "numpy-1.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c"},
1462 | {file = "numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6"},
1463 | {file = "numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7"},
1464 | {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700"},
1465 | {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf"},
1466 | {file = "numpy-1.24.1-cp39-cp39-win32.whl", hash = "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f"},
1467 | {file = "numpy-1.24.1-cp39-cp39-win_amd64.whl", hash = "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e"},
1468 | {file = "numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d"},
1469 | {file = "numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086"},
1470 | {file = "numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566"},
1471 | {file = "numpy-1.24.1.tar.gz", hash = "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2"},
1472 | ]
1473 |
1474 | [[package]]
1475 | name = "packaging"
1476 | version = "23.0"
1477 | description = "Core utilities for Python packages"
1478 | category = "dev"
1479 | optional = false
1480 | python-versions = ">=3.7"
1481 | files = [
1482 | {file = "packaging-23.0-py3-none-any.whl", hash = "sha256:714ac14496c3e68c99c29b00845f7a2b85f3bb6f1078fd9f72fd20f0570002b2"},
1483 | {file = "packaging-23.0.tar.gz", hash = "sha256:b6ad297f8907de0fa2fe1ccbd26fdaf387f5f47c7275fedf8cce89f99446cf97"},
1484 | ]
1485 |
1486 | [[package]]
1487 | name = "pandas"
1488 | version = "1.5.2"
1489 | description = "Powerful data structures for data analysis, time series, and statistics"
1490 | category = "main"
1491 | optional = false
1492 | python-versions = ">=3.8"
1493 | files = [
1494 | {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e9dbacd22555c2d47f262ef96bb4e30880e5956169741400af8b306bbb24a273"},
1495 | {file = "pandas-1.5.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e2b83abd292194f350bb04e188f9379d36b8dfac24dd445d5c87575f3beaf789"},
1496 | {file = "pandas-1.5.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2552bffc808641c6eb471e55aa6899fa002ac94e4eebfa9ec058649122db5824"},
1497 | {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fc87eac0541a7d24648a001d553406f4256e744d92df1df8ebe41829a915028"},
1498 | {file = "pandas-1.5.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d8fd58df5d17ddb8c72a5075d87cd80d71b542571b5f78178fb067fa4e9c72"},
1499 | {file = "pandas-1.5.2-cp310-cp310-win_amd64.whl", hash = "sha256:4aed257c7484d01c9a194d9a94758b37d3d751849c05a0050c087a358c41ad1f"},
1500 | {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:375262829c8c700c3e7cbb336810b94367b9c4889818bbd910d0ecb4e45dc261"},
1501 | {file = "pandas-1.5.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cc3cd122bea268998b79adebbb8343b735a5511ec14efb70a39e7acbc11ccbdc"},
1502 | {file = "pandas-1.5.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b4f5a82afa4f1ff482ab8ded2ae8a453a2cdfde2001567b3ca24a4c5c5ca0db3"},
1503 | {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8092a368d3eb7116e270525329a3e5c15ae796ccdf7ccb17839a73b4f5084a39"},
1504 | {file = "pandas-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6257b314fc14958f8122779e5a1557517b0f8e500cfb2bd53fa1f75a8ad0af2"},
1505 | {file = "pandas-1.5.2-cp311-cp311-win_amd64.whl", hash = "sha256:82ae615826da838a8e5d4d630eb70c993ab8636f0eff13cb28aafc4291b632b5"},
1506 | {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:457d8c3d42314ff47cc2d6c54f8fc0d23954b47977b2caed09cd9635cb75388b"},
1507 | {file = "pandas-1.5.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c009a92e81ce836212ce7aa98b219db7961a8b95999b97af566b8dc8c33e9519"},
1508 | {file = "pandas-1.5.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:71f510b0efe1629bf2f7c0eadb1ff0b9cf611e87b73cd017e6b7d6adb40e2b3a"},
1509 | {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a40dd1e9f22e01e66ed534d6a965eb99546b41d4d52dbdb66565608fde48203f"},
1510 | {file = "pandas-1.5.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ae7e989f12628f41e804847a8cc2943d362440132919a69429d4dea1f164da0"},
1511 | {file = "pandas-1.5.2-cp38-cp38-win32.whl", hash = "sha256:530948945e7b6c95e6fa7aa4be2be25764af53fba93fe76d912e35d1c9ee46f5"},
1512 | {file = "pandas-1.5.2-cp38-cp38-win_amd64.whl", hash = "sha256:73f219fdc1777cf3c45fde7f0708732ec6950dfc598afc50588d0d285fddaefc"},
1513 | {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9608000a5a45f663be6af5c70c3cbe634fa19243e720eb380c0d378666bc7702"},
1514 | {file = "pandas-1.5.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:315e19a3e5c2ab47a67467fc0362cb36c7c60a93b6457f675d7d9615edad2ebe"},
1515 | {file = "pandas-1.5.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e18bc3764cbb5e118be139b3b611bc3fbc5d3be42a7e827d1096f46087b395eb"},
1516 | {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0183cb04a057cc38fde5244909fca9826d5d57c4a5b7390c0cc3fa7acd9fa883"},
1517 | {file = "pandas-1.5.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344021ed3e639e017b452aa8f5f6bf38a8806f5852e217a7594417fb9bbfa00e"},
1518 | {file = "pandas-1.5.2-cp39-cp39-win32.whl", hash = "sha256:e7469271497960b6a781eaa930cba8af400dd59b62ec9ca2f4d31a19f2f91090"},
1519 | {file = "pandas-1.5.2-cp39-cp39-win_amd64.whl", hash = "sha256:c218796d59d5abd8780170c937b812c9637e84c32f8271bbf9845970f8c1351f"},
1520 | {file = "pandas-1.5.2.tar.gz", hash = "sha256:220b98d15cee0b2cd839a6358bd1f273d0356bf964c1a1aeb32d47db0215488b"},
1521 | ]
1522 |
1523 | [package.dependencies]
1524 | numpy = [
1525 | {version = ">=1.20.3", markers = "python_version < \"3.10\""},
1526 | {version = ">=1.21.0", markers = "python_version >= \"3.10\""},
1527 | {version = ">=1.23.2", markers = "python_version >= \"3.11\""},
1528 | ]
1529 | python-dateutil = ">=2.8.1"
1530 | pytz = ">=2020.1"
1531 |
1532 | [package.extras]
1533 | test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"]
1534 |
1535 | [[package]]
1536 | name = "pandocfilters"
1537 | version = "1.5.0"
1538 | description = "Utilities for writing pandoc filters in python"
1539 | category = "dev"
1540 | optional = false
1541 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
1542 | files = [
1543 | {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"},
1544 | {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"},
1545 | ]
1546 |
1547 | [[package]]
1548 | name = "parso"
1549 | version = "0.8.3"
1550 | description = "A Python Parser"
1551 | category = "dev"
1552 | optional = false
1553 | python-versions = ">=3.6"
1554 | files = [
1555 | {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
1556 | {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
1557 | ]
1558 |
1559 | [package.extras]
1560 | qa = ["flake8 (==3.8.3)", "mypy (==0.782)"]
1561 | testing = ["docopt", "pytest (<6.0.0)"]
1562 |
1563 | [[package]]
1564 | name = "pathspec"
1565 | version = "0.10.3"
1566 | description = "Utility library for gitignore style pattern matching of file paths."
1567 | category = "dev"
1568 | optional = false
1569 | python-versions = ">=3.7"
1570 | files = [
1571 | {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"},
1572 | {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"},
1573 | ]
1574 |
1575 | [[package]]
1576 | name = "pexpect"
1577 | version = "4.8.0"
1578 | description = "Pexpect allows easy control of interactive console applications."
1579 | category = "dev"
1580 | optional = false
1581 | python-versions = "*"
1582 | files = [
1583 | {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
1584 | {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
1585 | ]
1586 |
1587 | [package.dependencies]
1588 | ptyprocess = ">=0.5"
1589 |
1590 | [[package]]
1591 | name = "pickleshare"
1592 | version = "0.7.5"
1593 | description = "Tiny 'shelve'-like database with concurrency support"
1594 | category = "dev"
1595 | optional = false
1596 | python-versions = "*"
1597 | files = [
1598 | {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
1599 | {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
1600 | ]
1601 |
1602 | [[package]]
1603 | name = "pkgutil-resolve-name"
1604 | version = "1.3.10"
1605 | description = "Resolve a name to an object."
1606 | category = "dev"
1607 | optional = false
1608 | python-versions = ">=3.6"
1609 | files = [
1610 | {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"},
1611 | {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"},
1612 | ]
1613 |
1614 | [[package]]
1615 | name = "platformdirs"
1616 | version = "2.6.2"
1617 | description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
1618 | category = "dev"
1619 | optional = false
1620 | python-versions = ">=3.7"
1621 | files = [
1622 | {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"},
1623 | {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"},
1624 | ]
1625 |
1626 | [package.extras]
1627 | docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"]
1628 | test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"]
1629 |
1630 | [[package]]
1631 | name = "pluggy"
1632 | version = "1.0.0"
1633 | description = "plugin and hook calling mechanisms for python"
1634 | category = "dev"
1635 | optional = false
1636 | python-versions = ">=3.6"
1637 | files = [
1638 | {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"},
1639 | {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"},
1640 | ]
1641 |
1642 | [package.extras]
1643 | dev = ["pre-commit", "tox"]
1644 | testing = ["pytest", "pytest-benchmark"]
1645 |
1646 | [[package]]
1647 | name = "prometheus-client"
1648 | version = "0.15.0"
1649 | description = "Python client for the Prometheus monitoring system."
1650 | category = "dev"
1651 | optional = false
1652 | python-versions = ">=3.6"
1653 | files = [
1654 | {file = "prometheus_client-0.15.0-py3-none-any.whl", hash = "sha256:db7c05cbd13a0f79975592d112320f2605a325969b270a94b71dcabc47b931d2"},
1655 | {file = "prometheus_client-0.15.0.tar.gz", hash = "sha256:be26aa452490cfcf6da953f9436e95a9f2b4d578ca80094b4458930e5f584ab1"},
1656 | ]
1657 |
1658 | [package.extras]
1659 | twisted = ["twisted"]
1660 |
1661 | [[package]]
1662 | name = "prompt-toolkit"
1663 | version = "3.0.36"
1664 | description = "Library for building powerful interactive command lines in Python"
1665 | category = "dev"
1666 | optional = false
1667 | python-versions = ">=3.6.2"
1668 | files = [
1669 | {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"},
1670 | {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"},
1671 | ]
1672 |
1673 | [package.dependencies]
1674 | wcwidth = "*"
1675 |
1676 | [[package]]
1677 | name = "psutil"
1678 | version = "5.9.4"
1679 | description = "Cross-platform lib for process and system monitoring in Python."
1680 | category = "dev"
1681 | optional = false
1682 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
1683 | files = [
1684 | {file = "psutil-5.9.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:c1ca331af862803a42677c120aff8a814a804e09832f166f226bfd22b56feee8"},
1685 | {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:68908971daf802203f3d37e78d3f8831b6d1014864d7a85937941bb35f09aefe"},
1686 | {file = "psutil-5.9.4-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3ff89f9b835100a825b14c2808a106b6fdcc4b15483141482a12c725e7f78549"},
1687 | {file = "psutil-5.9.4-cp27-cp27m-win32.whl", hash = "sha256:852dd5d9f8a47169fe62fd4a971aa07859476c2ba22c2254d4a1baa4e10b95ad"},
1688 | {file = "psutil-5.9.4-cp27-cp27m-win_amd64.whl", hash = "sha256:9120cd39dca5c5e1c54b59a41d205023d436799b1c8c4d3ff71af18535728e94"},
1689 | {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:6b92c532979bafc2df23ddc785ed116fced1f492ad90a6830cf24f4d1ea27d24"},
1690 | {file = "psutil-5.9.4-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:efeae04f9516907be44904cc7ce08defb6b665128992a56957abc9b61dca94b7"},
1691 | {file = "psutil-5.9.4-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:54d5b184728298f2ca8567bf83c422b706200bcbbfafdc06718264f9393cfeb7"},
1692 | {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:16653106f3b59386ffe10e0bad3bb6299e169d5327d3f187614b1cb8f24cf2e1"},
1693 | {file = "psutil-5.9.4-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54c0d3d8e0078b7666984e11b12b88af2db11d11249a8ac8920dd5ef68a66e08"},
1694 | {file = "psutil-5.9.4-cp36-abi3-win32.whl", hash = "sha256:149555f59a69b33f056ba1c4eb22bb7bf24332ce631c44a319cec09f876aaeff"},
1695 | {file = "psutil-5.9.4-cp36-abi3-win_amd64.whl", hash = "sha256:fd8522436a6ada7b4aad6638662966de0d61d241cb821239b2ae7013d41a43d4"},
1696 | {file = "psutil-5.9.4-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:6001c809253a29599bc0dfd5179d9f8a5779f9dffea1da0f13c53ee568115e1e"},
1697 | {file = "psutil-5.9.4.tar.gz", hash = "sha256:3d7f9739eb435d4b1338944abe23f49584bde5395f27487d2ee25ad9a8774a62"},
1698 | ]
1699 |
1700 | [package.extras]
1701 | test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"]
1702 |
1703 | [[package]]
1704 | name = "ptyprocess"
1705 | version = "0.7.0"
1706 | description = "Run a subprocess in a pseudo terminal"
1707 | category = "dev"
1708 | optional = false
1709 | python-versions = "*"
1710 | files = [
1711 | {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
1712 | {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
1713 | ]
1714 |
1715 | [[package]]
1716 | name = "pure-eval"
1717 | version = "0.2.2"
1718 | description = "Safely evaluate AST nodes without side effects"
1719 | category = "dev"
1720 | optional = false
1721 | python-versions = "*"
1722 | files = [
1723 | {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
1724 | {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
1725 | ]
1726 |
1727 | [package.extras]
1728 | tests = ["pytest"]
1729 |
1730 | [[package]]
1731 | name = "py"
1732 | version = "1.11.0"
1733 | description = "library with cross-python path, ini-parsing, io, code, log facilities"
1734 | category = "dev"
1735 | optional = false
1736 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
1737 | files = [
1738 | {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
1739 | {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
1740 | ]
1741 |
1742 | [[package]]
1743 | name = "py4j"
1744 | version = "0.10.9.5"
1745 | description = "Enables Python programs to dynamically access arbitrary Java objects"
1746 | category = "main"
1747 | optional = false
1748 | python-versions = "*"
1749 | files = [
1750 | {file = "py4j-0.10.9.5-py2.py3-none-any.whl", hash = "sha256:52d171a6a2b031d8a5d1de6efe451cf4f5baff1a2819aabc3741c8406539ba04"},
1751 | {file = "py4j-0.10.9.5.tar.gz", hash = "sha256:276a4a3c5a2154df1860ef3303a927460e02e97b047dc0a47c1c3fb8cce34db6"},
1752 | ]
1753 |
1754 | [[package]]
1755 | name = "pycodestyle"
1756 | version = "2.10.0"
1757 | description = "Python style guide checker"
1758 | category = "dev"
1759 | optional = false
1760 | python-versions = ">=3.6"
1761 | files = [
1762 | {file = "pycodestyle-2.10.0-py2.py3-none-any.whl", hash = "sha256:8a4eaf0d0495c7395bdab3589ac2db602797d76207242c17d470186815706610"},
1763 | {file = "pycodestyle-2.10.0.tar.gz", hash = "sha256:347187bdb476329d98f695c213d7295a846d1152ff4fe9bacb8a9590b8ee7053"},
1764 | ]
1765 |
1766 | [[package]]
1767 | name = "pycparser"
1768 | version = "2.21"
1769 | description = "C parser in Python"
1770 | category = "dev"
1771 | optional = false
1772 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
1773 | files = [
1774 | {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"},
1775 | {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"},
1776 | ]
1777 |
1778 | [[package]]
1779 | name = "pyflakes"
1780 | version = "3.0.1"
1781 | description = "passive checker of Python programs"
1782 | category = "dev"
1783 | optional = false
1784 | python-versions = ">=3.6"
1785 | files = [
1786 | {file = "pyflakes-3.0.1-py2.py3-none-any.whl", hash = "sha256:ec55bf7fe21fff7f1ad2f7da62363d749e2a470500eab1b555334b67aa1ef8cf"},
1787 | {file = "pyflakes-3.0.1.tar.gz", hash = "sha256:ec8b276a6b60bd80defed25add7e439881c19e64850afd9b346283d4165fd0fd"},
1788 | ]
1789 |
1790 | [[package]]
1791 | name = "pygments"
1792 | version = "2.14.0"
1793 | description = "Pygments is a syntax highlighting package written in Python."
1794 | category = "dev"
1795 | optional = false
1796 | python-versions = ">=3.6"
1797 | files = [
1798 | {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"},
1799 | {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"},
1800 | ]
1801 |
1802 | [package.extras]
1803 | plugins = ["importlib-metadata"]
1804 |
1805 | [[package]]
1806 | name = "pylint"
1807 | version = "2.15.10"
1808 | description = "python code static checker"
1809 | category = "dev"
1810 | optional = false
1811 | python-versions = ">=3.7.2"
1812 | files = [
1813 | {file = "pylint-2.15.10-py3-none-any.whl", hash = "sha256:9df0d07e8948a1c3ffa3b6e2d7e6e63d9fb457c5da5b961ed63106594780cc7e"},
1814 | {file = "pylint-2.15.10.tar.gz", hash = "sha256:b3dc5ef7d33858f297ac0d06cc73862f01e4f2e74025ec3eff347ce0bc60baf5"},
1815 | ]
1816 |
1817 | [package.dependencies]
1818 | astroid = ">=2.12.13,<=2.14.0-dev0"
1819 | colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""}
1820 | dill = [
1821 | {version = ">=0.2", markers = "python_version < \"3.11\""},
1822 | {version = ">=0.3.6", markers = "python_version >= \"3.11\""},
1823 | ]
1824 | isort = ">=4.2.5,<6"
1825 | mccabe = ">=0.6,<0.8"
1826 | platformdirs = ">=2.2.0"
1827 | tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
1828 | tomlkit = ">=0.10.1"
1829 | typing-extensions = {version = ">=3.10.0", markers = "python_version < \"3.10\""}
1830 |
1831 | [package.extras]
1832 | spelling = ["pyenchant (>=3.2,<4.0)"]
1833 | testutils = ["gitpython (>3)"]
1834 |
1835 | [[package]]
1836 | name = "pyrsistent"
1837 | version = "0.19.3"
1838 | description = "Persistent/Functional/Immutable data structures"
1839 | category = "dev"
1840 | optional = false
1841 | python-versions = ">=3.7"
1842 | files = [
1843 | {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"},
1844 | {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"},
1845 | {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"},
1846 | {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"},
1847 | {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"},
1848 | {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"},
1849 | {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"},
1850 | {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"},
1851 | {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"},
1852 | {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"},
1853 | {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"},
1854 | {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"},
1855 | {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"},
1856 | {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"},
1857 | {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"},
1858 | {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"},
1859 | {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"},
1860 | {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"},
1861 | {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"},
1862 | {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"},
1863 | {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"},
1864 | {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"},
1865 | {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"},
1866 | {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"},
1867 | {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"},
1868 | {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"},
1869 | {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"},
1870 | ]
1871 |
1872 | [[package]]
1873 | name = "pyspark"
1874 | version = "3.3.1"
1875 | description = "Apache Spark Python API"
1876 | category = "main"
1877 | optional = false
1878 | python-versions = ">=3.7"
1879 | files = [
1880 | {file = "pyspark-3.3.1.tar.gz", hash = "sha256:e99fa7de92be406884bfd831c32b9306a3a99de44cfc39a2eefb6ed07445d5fa"},
1881 | ]
1882 |
1883 | [package.dependencies]
1884 | py4j = "0.10.9.5"
1885 |
1886 | [package.extras]
1887 | ml = ["numpy (>=1.15)"]
1888 | mllib = ["numpy (>=1.15)"]
1889 | pandas-on-spark = ["numpy (>=1.15)", "pandas (>=1.0.5)", "pyarrow (>=1.0.0)"]
1890 | sql = ["pandas (>=1.0.5)", "pyarrow (>=1.0.0)"]
1891 |
1892 | [[package]]
1893 | name = "pytest"
1894 | version = "7.2.0"
1895 | description = "pytest: simple powerful testing with Python"
1896 | category = "dev"
1897 | optional = false
1898 | python-versions = ">=3.7"
1899 | files = [
1900 | {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"},
1901 | {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"},
1902 | ]
1903 |
1904 | [package.dependencies]
1905 | attrs = ">=19.2.0"
1906 | colorama = {version = "*", markers = "sys_platform == \"win32\""}
1907 | exceptiongroup = {version = ">=1.0.0rc8", markers = "python_version < \"3.11\""}
1908 | iniconfig = "*"
1909 | packaging = "*"
1910 | pluggy = ">=0.12,<2.0"
1911 | tomli = {version = ">=1.0.0", markers = "python_version < \"3.11\""}
1912 |
1913 | [package.extras]
1914 | testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"]
1915 |
1916 | [[package]]
1917 | name = "python-dateutil"
1918 | version = "2.8.2"
1919 | description = "Extensions to the standard Python datetime module"
1920 | category = "main"
1921 | optional = false
1922 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
1923 | files = [
1924 | {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
1925 | {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
1926 | ]
1927 |
1928 | [package.dependencies]
1929 | six = ">=1.5"
1930 |
1931 | [[package]]
1932 | name = "python-json-logger"
1933 | version = "2.0.4"
1934 | description = "A python library adding a json log formatter"
1935 | category = "dev"
1936 | optional = false
1937 | python-versions = ">=3.5"
1938 | files = [
1939 | {file = "python-json-logger-2.0.4.tar.gz", hash = "sha256:764d762175f99fcc4630bd4853b09632acb60a6224acb27ce08cd70f0b1b81bd"},
1940 | {file = "python_json_logger-2.0.4-py3-none-any.whl", hash = "sha256:3b03487b14eb9e4f77e4fc2a023358b5394b82fd89cecf5586259baed57d8c6f"},
1941 | ]
1942 |
1943 | [[package]]
1944 | name = "pytz"
1945 | version = "2022.7"
1946 | description = "World timezone definitions, modern and historical"
1947 | category = "main"
1948 | optional = false
1949 | python-versions = "*"
1950 | files = [
1951 | {file = "pytz-2022.7-py2.py3-none-any.whl", hash = "sha256:93007def75ae22f7cd991c84e02d434876818661f8df9ad5df9e950ff4e52cfd"},
1952 | {file = "pytz-2022.7.tar.gz", hash = "sha256:7ccfae7b4b2c067464a6733c6261673fdb8fd1be905460396b97a073e9fa683a"},
1953 | ]
1954 |
1955 | [[package]]
1956 | name = "pywin32"
1957 | version = "305"
1958 | description = "Python for Window Extensions"
1959 | category = "dev"
1960 | optional = false
1961 | python-versions = "*"
1962 | files = [
1963 | {file = "pywin32-305-cp310-cp310-win32.whl", hash = "sha256:421f6cd86e84bbb696d54563c48014b12a23ef95a14e0bdba526be756d89f116"},
1964 | {file = "pywin32-305-cp310-cp310-win_amd64.whl", hash = "sha256:73e819c6bed89f44ff1d690498c0a811948f73777e5f97c494c152b850fad478"},
1965 | {file = "pywin32-305-cp310-cp310-win_arm64.whl", hash = "sha256:742eb905ce2187133a29365b428e6c3b9001d79accdc30aa8969afba1d8470f4"},
1966 | {file = "pywin32-305-cp311-cp311-win32.whl", hash = "sha256:19ca459cd2e66c0e2cc9a09d589f71d827f26d47fe4a9d09175f6aa0256b51c2"},
1967 | {file = "pywin32-305-cp311-cp311-win_amd64.whl", hash = "sha256:326f42ab4cfff56e77e3e595aeaf6c216712bbdd91e464d167c6434b28d65990"},
1968 | {file = "pywin32-305-cp311-cp311-win_arm64.whl", hash = "sha256:4ecd404b2c6eceaca52f8b2e3e91b2187850a1ad3f8b746d0796a98b4cea04db"},
1969 | {file = "pywin32-305-cp36-cp36m-win32.whl", hash = "sha256:48d8b1659284f3c17b68587af047d110d8c44837736b8932c034091683e05863"},
1970 | {file = "pywin32-305-cp36-cp36m-win_amd64.whl", hash = "sha256:13362cc5aa93c2beaf489c9c9017c793722aeb56d3e5166dadd5ef82da021fe1"},
1971 | {file = "pywin32-305-cp37-cp37m-win32.whl", hash = "sha256:a55db448124d1c1484df22fa8bbcbc45c64da5e6eae74ab095b9ea62e6d00496"},
1972 | {file = "pywin32-305-cp37-cp37m-win_amd64.whl", hash = "sha256:109f98980bfb27e78f4df8a51a8198e10b0f347257d1e265bb1a32993d0c973d"},
1973 | {file = "pywin32-305-cp38-cp38-win32.whl", hash = "sha256:9dd98384da775afa009bc04863426cb30596fd78c6f8e4e2e5bbf4edf8029504"},
1974 | {file = "pywin32-305-cp38-cp38-win_amd64.whl", hash = "sha256:56d7a9c6e1a6835f521788f53b5af7912090674bb84ef5611663ee1595860fc7"},
1975 | {file = "pywin32-305-cp39-cp39-win32.whl", hash = "sha256:9d968c677ac4d5cbdaa62fd3014ab241718e619d8e36ef8e11fb930515a1e918"},
1976 | {file = "pywin32-305-cp39-cp39-win_amd64.whl", hash = "sha256:50768c6b7c3f0b38b7fb14dd4104da93ebced5f1a50dc0e834594bff6fbe1271"},
1977 | ]
1978 |
1979 | [[package]]
1980 | name = "pywinpty"
1981 | version = "2.0.10"
1982 | description = "Pseudo terminal support for Windows from Python."
1983 | category = "dev"
1984 | optional = false
1985 | python-versions = ">=3.7"
1986 | files = [
1987 | {file = "pywinpty-2.0.10-cp310-none-win_amd64.whl", hash = "sha256:4c7d06ad10f6e92bc850a467f26d98f4f30e73d2fe5926536308c6ae0566bc16"},
1988 | {file = "pywinpty-2.0.10-cp311-none-win_amd64.whl", hash = "sha256:7ffbd66310b83e42028fc9df7746118978d94fba8c1ebf15a7c1275fdd80b28a"},
1989 | {file = "pywinpty-2.0.10-cp37-none-win_amd64.whl", hash = "sha256:38cb924f2778b5751ef91a75febd114776b3af0ae411bc667be45dd84fc881d3"},
1990 | {file = "pywinpty-2.0.10-cp38-none-win_amd64.whl", hash = "sha256:902d79444b29ad1833b8d5c3c9aabdfd428f4f068504430df18074007c8c0de8"},
1991 | {file = "pywinpty-2.0.10-cp39-none-win_amd64.whl", hash = "sha256:3c46aef80dd50979aff93de199e4a00a8ee033ba7a03cadf0a91fed45f0c39d7"},
1992 | {file = "pywinpty-2.0.10.tar.gz", hash = "sha256:cdbb5694cf8c7242c2ecfaca35c545d31fa5d5814c3d67a4e628f803f680ebea"},
1993 | ]
1994 |
1995 | [[package]]
1996 | name = "pyyaml"
1997 | version = "6.0"
1998 | description = "YAML parser and emitter for Python"
1999 | category = "dev"
2000 | optional = false
2001 | python-versions = ">=3.6"
2002 | files = [
2003 | {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
2004 | {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
2005 | {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
2006 | {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
2007 | {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
2008 | {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
2009 | {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
2010 | {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
2011 | {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
2012 | {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
2013 | {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
2014 | {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
2015 | {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
2016 | {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
2017 | {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
2018 | {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
2019 | {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
2020 | {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
2021 | {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
2022 | {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
2023 | {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
2024 | {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
2025 | {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
2026 | {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
2027 | {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
2028 | {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
2029 | {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
2030 | {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
2031 | {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
2032 | {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
2033 | {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
2034 | {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
2035 | {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
2036 | {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
2037 | {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
2038 | {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
2039 | {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
2040 | {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
2041 | {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
2042 | {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
2043 | ]
2044 |
2045 | [[package]]
2046 | name = "pyzmq"
2047 | version = "24.0.1"
2048 | description = "Python bindings for 0MQ"
2049 | category = "dev"
2050 | optional = false
2051 | python-versions = ">=3.6"
2052 | files = [
2053 | {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"},
2054 | {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"},
2055 | {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"},
2056 | {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"},
2057 | {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"},
2058 | {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"},
2059 | {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"},
2060 | {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"},
2061 | {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"},
2062 | {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"},
2063 | {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"},
2064 | {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"},
2065 | {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"},
2066 | {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"},
2067 | {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"},
2068 | {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"},
2069 | {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"},
2070 | {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"},
2071 | {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"},
2072 | {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"},
2073 | {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"},
2074 | {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"},
2075 | {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"},
2076 | {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"},
2077 | {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"},
2078 | {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"},
2079 | {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"},
2080 | {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"},
2081 | {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"},
2082 | {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"},
2083 | {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"},
2084 | {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"},
2085 | {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"},
2086 | {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"},
2087 | {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"},
2088 | {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"},
2089 | {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"},
2090 | {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"},
2091 | {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"},
2092 | {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"},
2093 | {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"},
2094 | {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"},
2095 | {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"},
2096 | {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"},
2097 | {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"},
2098 | {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"},
2099 | {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"},
2100 | {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"},
2101 | {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"},
2102 | {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"},
2103 | {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"},
2104 | {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"},
2105 | {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"},
2106 | {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"},
2107 | {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"},
2108 | {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"},
2109 | {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"},
2110 | {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"},
2111 | {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"},
2112 | {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"},
2113 | {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"},
2114 | {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"},
2115 | {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"},
2116 | {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"},
2117 | {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"},
2118 | {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"},
2119 | {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"},
2120 | {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"},
2121 | {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"},
2122 | {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"},
2123 | {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"},
2124 | {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"},
2125 | {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"},
2126 | {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"},
2127 | ]
2128 |
2129 | [package.dependencies]
2130 | cffi = {version = "*", markers = "implementation_name == \"pypy\""}
2131 | py = {version = "*", markers = "implementation_name == \"pypy\""}
2132 |
2133 | [[package]]
2134 | name = "requests"
2135 | version = "2.28.1"
2136 | description = "Python HTTP for Humans."
2137 | category = "dev"
2138 | optional = false
2139 | python-versions = ">=3.7, <4"
2140 | files = [
2141 | {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
2142 | {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
2143 | ]
2144 |
2145 | [package.dependencies]
2146 | certifi = ">=2017.4.17"
2147 | charset-normalizer = ">=2,<3"
2148 | idna = ">=2.5,<4"
2149 | urllib3 = ">=1.21.1,<1.27"
2150 |
2151 | [package.extras]
2152 | socks = ["PySocks (>=1.5.6,!=1.5.7)"]
2153 | use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
2154 |
2155 | [[package]]
2156 | name = "rfc3339-validator"
2157 | version = "0.1.4"
2158 | description = "A pure python RFC3339 validator"
2159 | category = "dev"
2160 | optional = false
2161 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
2162 | files = [
2163 | {file = "rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa"},
2164 | {file = "rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b"},
2165 | ]
2166 |
2167 | [package.dependencies]
2168 | six = "*"
2169 |
2170 | [[package]]
2171 | name = "rfc3986-validator"
2172 | version = "0.1.1"
2173 | description = "Pure python rfc3986 validator"
2174 | category = "dev"
2175 | optional = false
2176 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
2177 | files = [
2178 | {file = "rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9"},
2179 | {file = "rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055"},
2180 | ]
2181 |
2182 | [[package]]
2183 | name = "s3transfer"
2184 | version = "0.6.0"
2185 | description = "An Amazon S3 Transfer Manager"
2186 | category = "main"
2187 | optional = false
2188 | python-versions = ">= 3.7"
2189 | files = [
2190 | {file = "s3transfer-0.6.0-py3-none-any.whl", hash = "sha256:06176b74f3a15f61f1b4f25a1fc29a4429040b7647133a463da8fa5bd28d5ecd"},
2191 | {file = "s3transfer-0.6.0.tar.gz", hash = "sha256:2ed07d3866f523cc561bf4a00fc5535827981b117dd7876f036b0c1aca42c947"},
2192 | ]
2193 |
2194 | [package.dependencies]
2195 | botocore = ">=1.12.36,<2.0a.0"
2196 |
2197 | [package.extras]
2198 | crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"]
2199 |
2200 | [[package]]
2201 | name = "send2trash"
2202 | version = "1.8.0"
2203 | description = "Send file to trash natively under Mac OS X, Windows and Linux."
2204 | category = "dev"
2205 | optional = false
2206 | python-versions = "*"
2207 | files = [
2208 | {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"},
2209 | {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"},
2210 | ]
2211 |
2212 | [package.extras]
2213 | nativelib = ["pyobjc-framework-Cocoa", "pywin32"]
2214 | objc = ["pyobjc-framework-Cocoa"]
2215 | win32 = ["pywin32"]
2216 |
2217 | [[package]]
2218 | name = "six"
2219 | version = "1.16.0"
2220 | description = "Python 2 and 3 compatibility utilities"
2221 | category = "main"
2222 | optional = false
2223 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
2224 | files = [
2225 | {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
2226 | {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
2227 | ]
2228 |
2229 | [[package]]
2230 | name = "sniffio"
2231 | version = "1.3.0"
2232 | description = "Sniff out which async library your code is running under"
2233 | category = "dev"
2234 | optional = false
2235 | python-versions = ">=3.7"
2236 | files = [
2237 | {file = "sniffio-1.3.0-py3-none-any.whl", hash = "sha256:eecefdce1e5bbfb7ad2eeaabf7c1eeb404d7757c379bd1f7e5cce9d8bf425384"},
2238 | {file = "sniffio-1.3.0.tar.gz", hash = "sha256:e60305c5e5d314f5389259b7f22aaa33d8f7dee49763119234af3755c55b9101"},
2239 | ]
2240 |
2241 | [[package]]
2242 | name = "soupsieve"
2243 | version = "2.3.2.post1"
2244 | description = "A modern CSS selector implementation for Beautiful Soup."
2245 | category = "dev"
2246 | optional = false
2247 | python-versions = ">=3.6"
2248 | files = [
2249 | {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"},
2250 | {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"},
2251 | ]
2252 |
2253 | [[package]]
2254 | name = "stack-data"
2255 | version = "0.6.2"
2256 | description = "Extract data from python stack frames and tracebacks for informative displays"
2257 | category = "dev"
2258 | optional = false
2259 | python-versions = "*"
2260 | files = [
2261 | {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"},
2262 | {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"},
2263 | ]
2264 |
2265 | [package.dependencies]
2266 | asttokens = ">=2.1.0"
2267 | executing = ">=1.2.0"
2268 | pure-eval = "*"
2269 |
2270 | [package.extras]
2271 | tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"]
2272 |
2273 | [[package]]
2274 | name = "terminado"
2275 | version = "0.17.1"
2276 | description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library."
2277 | category = "dev"
2278 | optional = false
2279 | python-versions = ">=3.7"
2280 | files = [
2281 | {file = "terminado-0.17.1-py3-none-any.whl", hash = "sha256:8650d44334eba354dd591129ca3124a6ba42c3d5b70df5051b6921d506fdaeae"},
2282 | {file = "terminado-0.17.1.tar.gz", hash = "sha256:6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333"},
2283 | ]
2284 |
2285 | [package.dependencies]
2286 | ptyprocess = {version = "*", markers = "os_name != \"nt\""}
2287 | pywinpty = {version = ">=1.1.0", markers = "os_name == \"nt\""}
2288 | tornado = ">=6.1.0"
2289 |
2290 | [package.extras]
2291 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
2292 | test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"]
2293 |
2294 | [[package]]
2295 | name = "tinycss2"
2296 | version = "1.2.1"
2297 | description = "A tiny CSS parser"
2298 | category = "dev"
2299 | optional = false
2300 | python-versions = ">=3.7"
2301 | files = [
2302 | {file = "tinycss2-1.2.1-py3-none-any.whl", hash = "sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847"},
2303 | {file = "tinycss2-1.2.1.tar.gz", hash = "sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627"},
2304 | ]
2305 |
2306 | [package.dependencies]
2307 | webencodings = ">=0.4"
2308 |
2309 | [package.extras]
2310 | doc = ["sphinx", "sphinx_rtd_theme"]
2311 | test = ["flake8", "isort", "pytest"]
2312 |
2313 | [[package]]
2314 | name = "tomli"
2315 | version = "2.0.1"
2316 | description = "A lil' TOML parser"
2317 | category = "dev"
2318 | optional = false
2319 | python-versions = ">=3.7"
2320 | files = [
2321 | {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
2322 | {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
2323 | ]
2324 |
2325 | [[package]]
2326 | name = "tomlkit"
2327 | version = "0.11.6"
2328 | description = "Style preserving TOML library"
2329 | category = "dev"
2330 | optional = false
2331 | python-versions = ">=3.6"
2332 | files = [
2333 | {file = "tomlkit-0.11.6-py3-none-any.whl", hash = "sha256:07de26b0d8cfc18f871aec595fda24d95b08fef89d147caa861939f37230bf4b"},
2334 | {file = "tomlkit-0.11.6.tar.gz", hash = "sha256:71b952e5721688937fb02cf9d354dbcf0785066149d2855e44531ebdd2b65d73"},
2335 | ]
2336 |
2337 | [[package]]
2338 | name = "tornado"
2339 | version = "6.2"
2340 | description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed."
2341 | category = "dev"
2342 | optional = false
2343 | python-versions = ">= 3.7"
2344 | files = [
2345 | {file = "tornado-6.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:20f638fd8cc85f3cbae3c732326e96addff0a15e22d80f049e00121651e82e72"},
2346 | {file = "tornado-6.2-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:87dcafae3e884462f90c90ecc200defe5e580a7fbbb4365eda7c7c1eb809ebc9"},
2347 | {file = "tornado-6.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba09ef14ca9893954244fd872798b4ccb2367c165946ce2dd7376aebdde8e3ac"},
2348 | {file = "tornado-6.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8150f721c101abdef99073bf66d3903e292d851bee51910839831caba341a75"},
2349 | {file = "tornado-6.2-cp37-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d3a2f5999215a3a06a4fc218026cd84c61b8b2b40ac5296a6db1f1451ef04c1e"},
2350 | {file = "tornado-6.2-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:5f8c52d219d4995388119af7ccaa0bcec289535747620116a58d830e7c25d8a8"},
2351 | {file = "tornado-6.2-cp37-abi3-musllinux_1_1_i686.whl", hash = "sha256:6fdfabffd8dfcb6cf887428849d30cf19a3ea34c2c248461e1f7d718ad30b66b"},
2352 | {file = "tornado-6.2-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:1d54d13ab8414ed44de07efecb97d4ef7c39f7438cf5e976ccd356bebb1b5fca"},
2353 | {file = "tornado-6.2-cp37-abi3-win32.whl", hash = "sha256:5c87076709343557ef8032934ce5f637dbb552efa7b21d08e89ae7619ed0eb23"},
2354 | {file = "tornado-6.2-cp37-abi3-win_amd64.whl", hash = "sha256:e5f923aa6a47e133d1cf87d60700889d7eae68988704e20c75fb2d65677a8e4b"},
2355 | {file = "tornado-6.2.tar.gz", hash = "sha256:9b630419bde84ec666bfd7ea0a4cb2a8a651c2d5cccdbdd1972a0c859dfc3c13"},
2356 | ]
2357 |
2358 | [[package]]
2359 | name = "traitlets"
2360 | version = "5.8.1"
2361 | description = "Traitlets Python configuration system"
2362 | category = "dev"
2363 | optional = false
2364 | python-versions = ">=3.7"
2365 | files = [
2366 | {file = "traitlets-5.8.1-py3-none-any.whl", hash = "sha256:a1ca5df6414f8b5760f7c5f256e326ee21b581742114545b462b35ffe3f04861"},
2367 | {file = "traitlets-5.8.1.tar.gz", hash = "sha256:32500888f5ff7bbf3b9267ea31748fa657aaf34d56d85e60f91dda7dc7f5785b"},
2368 | ]
2369 |
2370 | [package.extras]
2371 | docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"]
2372 | test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"]
2373 |
2374 | [[package]]
2375 | name = "typing-extensions"
2376 | version = "4.4.0"
2377 | description = "Backported and Experimental Type Hints for Python 3.7+"
2378 | category = "dev"
2379 | optional = false
2380 | python-versions = ">=3.7"
2381 | files = [
2382 | {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"},
2383 | {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"},
2384 | ]
2385 |
2386 | [[package]]
2387 | name = "uri-template"
2388 | version = "1.2.0"
2389 | description = "RFC 6570 URI Template Processor"
2390 | category = "dev"
2391 | optional = false
2392 | python-versions = ">=3.6"
2393 | files = [
2394 | {file = "uri_template-1.2.0-py3-none-any.whl", hash = "sha256:f1699c77b73b925cf4937eae31ab282a86dc885c333f2e942513f08f691fc7db"},
2395 | {file = "uri_template-1.2.0.tar.gz", hash = "sha256:934e4d09d108b70eb8a24410af8615294d09d279ce0e7cbcdaef1bd21f932b06"},
2396 | ]
2397 |
2398 | [package.extras]
2399 | dev = ["flake8 (<4.0.0)", "flake8-annotations", "flake8-bugbear", "flake8-commas", "flake8-comprehensions", "flake8-continuation", "flake8-datetimez", "flake8-docstrings", "flake8-import-order", "flake8-literal", "flake8-noqa", "flake8-requirements", "flake8-type-annotations", "flake8-use-fstring", "mypy", "pep8-naming"]
2400 |
2401 | [[package]]
2402 | name = "urllib3"
2403 | version = "1.26.13"
2404 | description = "HTTP library with thread-safe connection pooling, file post, and more."
2405 | category = "main"
2406 | optional = false
2407 | python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
2408 | files = [
2409 | {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"},
2410 | {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"},
2411 | ]
2412 |
2413 | [package.extras]
2414 | brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
2415 | secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"]
2416 | socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
2417 |
2418 | [[package]]
2419 | name = "wcwidth"
2420 | version = "0.2.5"
2421 | description = "Measures the displayed width of unicode strings in a terminal"
2422 | category = "dev"
2423 | optional = false
2424 | python-versions = "*"
2425 | files = [
2426 | {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
2427 | {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
2428 | ]
2429 |
2430 | [[package]]
2431 | name = "webcolors"
2432 | version = "1.12"
2433 | description = "A library for working with color names and color values formats defined by HTML and CSS."
2434 | category = "dev"
2435 | optional = false
2436 | python-versions = ">=3.7"
2437 | files = [
2438 | {file = "webcolors-1.12-py3-none-any.whl", hash = "sha256:d98743d81d498a2d3eaf165196e65481f0d2ea85281463d856b1e51b09f62dce"},
2439 | {file = "webcolors-1.12.tar.gz", hash = "sha256:16d043d3a08fd6a1b1b7e3e9e62640d09790dce80d2bdd4792a175b35fe794a9"},
2440 | ]
2441 |
2442 | [[package]]
2443 | name = "webencodings"
2444 | version = "0.5.1"
2445 | description = "Character encoding aliases for legacy web content"
2446 | category = "dev"
2447 | optional = false
2448 | python-versions = "*"
2449 | files = [
2450 | {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
2451 | {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
2452 | ]
2453 |
2454 | [[package]]
2455 | name = "websocket-client"
2456 | version = "1.4.2"
2457 | description = "WebSocket client for Python with low level API options"
2458 | category = "dev"
2459 | optional = false
2460 | python-versions = ">=3.7"
2461 | files = [
2462 | {file = "websocket-client-1.4.2.tar.gz", hash = "sha256:d6e8f90ca8e2dd4e8027c4561adeb9456b54044312dba655e7cae652ceb9ae59"},
2463 | {file = "websocket_client-1.4.2-py3-none-any.whl", hash = "sha256:d6b06432f184438d99ac1f456eaf22fe1ade524c3dd16e661142dc54e9cba574"},
2464 | ]
2465 |
2466 | [package.extras]
2467 | docs = ["Sphinx (>=3.4)", "sphinx-rtd-theme (>=0.5)"]
2468 | optional = ["python-socks", "wsaccel"]
2469 | test = ["websockets"]
2470 |
2471 | [[package]]
2472 | name = "wrapt"
2473 | version = "1.14.1"
2474 | description = "Module for decorators, wrappers and monkey patching."
2475 | category = "dev"
2476 | optional = false
2477 | python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
2478 | files = [
2479 | {file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
2480 | {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:903500616422a40a98a5a3c4ff4ed9d0066f3b4c951fa286018ecdf0750194ef"},
2481 | {file = "wrapt-1.14.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:5a9a0d155deafd9448baff28c08e150d9b24ff010e899311ddd63c45c2445e28"},
2482 | {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ddaea91abf8b0d13443f6dac52e89051a5063c7d014710dcb4d4abb2ff811a59"},
2483 | {file = "wrapt-1.14.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:36f582d0c6bc99d5f39cd3ac2a9062e57f3cf606ade29a0a0d6b323462f4dd87"},
2484 | {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:7ef58fb89674095bfc57c4069e95d7a31cfdc0939e2a579882ac7d55aadfd2a1"},
2485 | {file = "wrapt-1.14.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e2f83e18fe2f4c9e7db597e988f72712c0c3676d337d8b101f6758107c42425b"},
2486 | {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ee2b1b1769f6707a8a445162ea16dddf74285c3964f605877a20e38545c3c462"},
2487 | {file = "wrapt-1.14.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:833b58d5d0b7e5b9832869f039203389ac7cbf01765639c7309fd50ef619e0b1"},
2488 | {file = "wrapt-1.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:80bb5c256f1415f747011dc3604b59bc1f91c6e7150bd7db03b19170ee06b320"},
2489 | {file = "wrapt-1.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:07f7a7d0f388028b2df1d916e94bbb40624c59b48ecc6cbc232546706fac74c2"},
2490 | {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02b41b633c6261feff8ddd8d11c711df6842aba629fdd3da10249a53211a72c4"},
2491 | {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2fe803deacd09a233e4762a1adcea5db5d31e6be577a43352936179d14d90069"},
2492 | {file = "wrapt-1.14.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:257fd78c513e0fb5cdbe058c27a0624c9884e735bbd131935fd49e9fe719d310"},
2493 | {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4fcc4649dc762cddacd193e6b55bc02edca674067f5f98166d7713b193932b7f"},
2494 | {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:11871514607b15cfeb87c547a49bca19fde402f32e2b1c24a632506c0a756656"},
2495 | {file = "wrapt-1.14.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8ad85f7f4e20964db4daadcab70b47ab05c7c1cf2a7c1e51087bfaa83831854c"},
2496 | {file = "wrapt-1.14.1-cp310-cp310-win32.whl", hash = "sha256:a9a52172be0b5aae932bef82a79ec0a0ce87288c7d132946d645eba03f0ad8a8"},
2497 | {file = "wrapt-1.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:6d323e1554b3d22cfc03cd3243b5bb815a51f5249fdcbb86fda4bf62bab9e164"},
2498 | {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:43ca3bbbe97af00f49efb06e352eae40434ca9d915906f77def219b88e85d907"},
2499 | {file = "wrapt-1.14.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:6b1a564e6cb69922c7fe3a678b9f9a3c54e72b469875aa8018f18b4d1dd1adf3"},
2500 | {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:00b6d4ea20a906c0ca56d84f93065b398ab74b927a7a3dbd470f6fc503f95dc3"},
2501 | {file = "wrapt-1.14.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a85d2b46be66a71bedde836d9e41859879cc54a2a04fad1191eb50c2066f6e9d"},
2502 | {file = "wrapt-1.14.1-cp35-cp35m-win32.whl", hash = "sha256:dbcda74c67263139358f4d188ae5faae95c30929281bc6866d00573783c422b7"},
2503 | {file = "wrapt-1.14.1-cp35-cp35m-win_amd64.whl", hash = "sha256:b21bb4c09ffabfa0e85e3a6b623e19b80e7acd709b9f91452b8297ace2a8ab00"},
2504 | {file = "wrapt-1.14.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:9e0fd32e0148dd5dea6af5fee42beb949098564cc23211a88d799e434255a1f4"},
2505 | {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9736af4641846491aedb3c3f56b9bc5568d92b0692303b5a305301a95dfd38b1"},
2506 | {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b02d65b9ccf0ef6c34cba6cf5bf2aab1bb2f49c6090bafeecc9cd81ad4ea1c1"},
2507 | {file = "wrapt-1.14.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21ac0156c4b089b330b7666db40feee30a5d52634cc4560e1905d6529a3897ff"},
2508 | {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:9f3e6f9e05148ff90002b884fbc2a86bd303ae847e472f44ecc06c2cd2fcdb2d"},
2509 | {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:6e743de5e9c3d1b7185870f480587b75b1cb604832e380d64f9504a0535912d1"},
2510 | {file = "wrapt-1.14.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:d79d7d5dc8a32b7093e81e97dad755127ff77bcc899e845f41bf71747af0c569"},
2511 | {file = "wrapt-1.14.1-cp36-cp36m-win32.whl", hash = "sha256:81b19725065dcb43df02b37e03278c011a09e49757287dca60c5aecdd5a0b8ed"},
2512 | {file = "wrapt-1.14.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b014c23646a467558be7da3d6b9fa409b2c567d2110599b7cf9a0c5992b3b471"},
2513 | {file = "wrapt-1.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:88bd7b6bd70a5b6803c1abf6bca012f7ed963e58c68d76ee20b9d751c74a3248"},
2514 | {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5901a312f4d14c59918c221323068fad0540e34324925c8475263841dbdfe68"},
2515 | {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d77c85fedff92cf788face9bfa3ebaa364448ebb1d765302e9af11bf449ca36d"},
2516 | {file = "wrapt-1.14.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d649d616e5c6a678b26d15ece345354f7c2286acd6db868e65fcc5ff7c24a77"},
2517 | {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7d2872609603cb35ca513d7404a94d6d608fc13211563571117046c9d2bcc3d7"},
2518 | {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ee6acae74a2b91865910eef5e7de37dc6895ad96fa23603d1d27ea69df545015"},
2519 | {file = "wrapt-1.14.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2b39d38039a1fdad98c87279b48bc5dce2c0ca0d73483b12cb72aa9609278e8a"},
2520 | {file = "wrapt-1.14.1-cp37-cp37m-win32.whl", hash = "sha256:60db23fa423575eeb65ea430cee741acb7c26a1365d103f7b0f6ec412b893853"},
2521 | {file = "wrapt-1.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:709fe01086a55cf79d20f741f39325018f4df051ef39fe921b1ebe780a66184c"},
2522 | {file = "wrapt-1.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8c0ce1e99116d5ab21355d8ebe53d9460366704ea38ae4d9f6933188f327b456"},
2523 | {file = "wrapt-1.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e3fb1677c720409d5f671e39bac6c9e0e422584e5f518bfd50aa4cbbea02433f"},
2524 | {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:642c2e7a804fcf18c222e1060df25fc210b9c58db7c91416fb055897fc27e8cc"},
2525 | {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7b7c050ae976e286906dd3f26009e117eb000fb2cf3533398c5ad9ccc86867b1"},
2526 | {file = "wrapt-1.14.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef3f72c9666bba2bab70d2a8b79f2c6d2c1a42a7f7e2b0ec83bb2f9e383950af"},
2527 | {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:01c205616a89d09827986bc4e859bcabd64f5a0662a7fe95e0d359424e0e071b"},
2528 | {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5a0f54ce2c092aaf439813735584b9537cad479575a09892b8352fea5e988dc0"},
2529 | {file = "wrapt-1.14.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2cf71233a0ed05ccdabe209c606fe0bac7379fdcf687f39b944420d2a09fdb57"},
2530 | {file = "wrapt-1.14.1-cp38-cp38-win32.whl", hash = "sha256:aa31fdcc33fef9eb2552cbcbfee7773d5a6792c137b359e82879c101e98584c5"},
2531 | {file = "wrapt-1.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:d1967f46ea8f2db647c786e78d8cc7e4313dbd1b0aca360592d8027b8508e24d"},
2532 | {file = "wrapt-1.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3232822c7d98d23895ccc443bbdf57c7412c5a65996c30442ebe6ed3df335383"},
2533 | {file = "wrapt-1.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:988635d122aaf2bdcef9e795435662bcd65b02f4f4c1ae37fbee7401c440b3a7"},
2534 | {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cca3c2cdadb362116235fdbd411735de4328c61425b0aa9f872fd76d02c4e86"},
2535 | {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d52a25136894c63de15a35bc0bdc5adb4b0e173b9c0d07a2be9d3ca64a332735"},
2536 | {file = "wrapt-1.14.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40e7bc81c9e2b2734ea4bc1aceb8a8f0ceaac7c5299bc5d69e37c44d9081d43b"},
2537 | {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b9b7a708dd92306328117d8c4b62e2194d00c365f18eff11a9b53c6f923b01e3"},
2538 | {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6a9a25751acb379b466ff6be78a315e2b439d4c94c1e99cb7266d40a537995d3"},
2539 | {file = "wrapt-1.14.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:34aa51c45f28ba7f12accd624225e2b1e5a3a45206aa191f6f9aac931d9d56fe"},
2540 | {file = "wrapt-1.14.1-cp39-cp39-win32.whl", hash = "sha256:dee0ce50c6a2dd9056c20db781e9c1cfd33e77d2d569f5d1d9321c641bb903d5"},
2541 | {file = "wrapt-1.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:dee60e1de1898bde3b238f18340eec6148986da0455d8ba7848d50470a7a32fb"},
2542 | {file = "wrapt-1.14.1.tar.gz", hash = "sha256:380a85cf89e0e69b7cfbe2ea9f765f004ff419f34194018a6827ac0e3edfed4d"},
2543 | ]
2544 |
2545 | [[package]]
2546 | name = "zipp"
2547 | version = "3.11.0"
2548 | description = "Backport of pathlib-compatible object wrapper for zip files"
2549 | category = "main"
2550 | optional = false
2551 | python-versions = ">=3.7"
2552 | files = [
2553 | {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"},
2554 | {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"},
2555 | ]
2556 |
2557 | [package.extras]
2558 | docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"]
2559 | testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
2560 |
2561 | [metadata]
2562 | lock-version = "2.0"
2563 | python-versions = "^3.8.1"
2564 | content-hash = "842d241d61b94b2e112949b93773609bf664a6b8b8399858657df8b980d2fa78"
2565 |
--------------------------------------------------------------------------------
/pyproject.toml:
--------------------------------------------------------------------------------
1 | [tool.poetry]
2 | name = "pyspark-testing-env"
3 | version = "0.1.0"
4 | description = "Example of a pyspark testing environment with poetry"
5 | authors = ["emmc15 "]
6 | readme = "README.md"
7 | license = "MIT"
8 |
9 | [tool.poetry.dependencies]
10 | python = "^3.8.1"
11 | pyspark = "^3.3.1"
12 | delta-spark = "^2.2.0"
13 | pandas = "^1.5.2"
14 | numpy = "^1.24.1"
15 | boto3 = "^1.26.50"
16 |
17 |
18 | [tool.poetry.group.dev.dependencies]
19 | pylint = "^2.15.10"
20 | black = "^22.12.0"
21 | flake8 = "^6.0.0"
22 | pytest = "^7.2.0"
23 | jupyterlab = "^3.5.2"
24 |
25 | [build-system]
26 | requires = ["poetry-core"]
27 | build-backend = "poetry.core.masonry.api"
28 |
--------------------------------------------------------------------------------
/src/connections_utils.py:
--------------------------------------------------------------------------------
1 | """
2 |
3 | """
4 | import boto3
5 | from delta import configure_spark_with_delta_pip
6 | from pyspark.sql import SparkSession
7 |
8 |
9 | def create_docker_spark_builder(session_name: str="test") -> SparkSession.Builder:
10 | """
11 | Creates a SparkSession.Builder with the settings needed to run in a docker container
12 |
13 | Args:
14 | session_name (str): Name of session
15 |
16 | Returns:
17 | SparkSession.Builder: _description_
18 | """
19 |
20 | builder = (
21 | SparkSession.builder
22 | # Settings to manage performance and speed for testing in local mode
23 | .master("local[1]")
24 | .config("spark.driver.host", "127.0.0.1")
25 | .config("spark.sql.shuffle.partitions", "1")
26 | .config("spark.ui.enabled", "false")
27 | .config("spark.driver.memory", "2g")
28 | # hive-metastore connection settings
29 | .config("spark.sql.legacy.createHiveTableByDefault", "false")
30 | # .config("hive.metastore.uris", "thrift://hive-metastore:9083")
31 | #.config("spark.sql.catalogImplementation", "hive")
32 | .config("spark.hadoop.hive.hmshandler.retry.interval", "60")
33 | .config("spark.hadoop.hive.hmshandler.retry.attempts", "3")
34 | .config("spark.sql.warehouse.dir", "s3a://spark/warehouse/")
35 | # s3 connection settings
36 | .config("spark.hadoop.fs.s3a.access.key", "accesskey")
37 | .config("spark.hadoop.fs.s3a.secret.key", "secretkey")
38 | .config("spark.hadoop.fs.s3a.endpoint", "http://minio:9000")
39 | .config("spark.hadoop.fs.s3a.connection.ssl.enabled", "false")
40 | .config("spark.hadoop.fs.s3a.path.style.access", "true")
41 | .config("spark.hadoop.fs.s3a.impl", "org.apache.hadoop.fs.s3a.S3AFileSystem")
42 | .config("spark.hadoop.fs.s3a.attempts.maximum", "0")
43 | # Delta Config
44 | .config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension")
45 | .config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog")
46 | # name of session
47 | .appName(session_name)
48 | )
49 |
50 | builder = configure_spark_with_delta_pip(spark_session_builder = builder)
51 |
52 | return builder
53 |
54 |
55 | def create_docker_s3_resource():
56 | """
57 | Returns default docker s3 resource for minio
58 | """
59 |
60 | s3_resource = boto3.resource(
61 | "s3",
62 | endpoint_url="http://minio:9000",
63 | aws_access_key_id="accesskey",
64 | aws_secret_access_key="secretkey",
65 | verify=False,
66 | )
67 | return s3_resource
68 |
69 |
70 | def create_docker_s3_client():
71 | """
72 | Returns default docker s3 client for minio
73 | """
74 | s3_client = boto3.client(
75 | "s3",
76 | endpoint_url="http://minio:9000",
77 | aws_access_key_id="accesskey",
78 | aws_secret_access_key="secretkey",
79 | verify=False,
80 | )
81 |
82 | return s3_client
--------------------------------------------------------------------------------
/test/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/emmc15/pyspark-testing-env/651e15e106193f5e2544867ac7427d98403d9dbc/test/__init__.py
--------------------------------------------------------------------------------
/test/test_pytest_example.py:
--------------------------------------------------------------------------------
1 | """
2 | Example of usng pytest to write data using delta to s3 locally with minio
3 | """
4 | import pytest
5 | import pandas as pd
6 |
7 | from src import connections_utils
8 |
9 | @pytest.fixture(scope="session")
10 | def spark_session():
11 | spark_session = connections_utils.create_docker_spark_builder("tests").getOrCreate()
12 | yield spark_session
13 | spark_session.sql("DROP TABLE IF EXISTS test_table")
14 | spark_session.stop()
15 |
16 | def test_write_delta(spark_session):
17 | df = spark_session.createDataFrame([{"a": 1}, {"a": 2}])
18 | df.write.format("delta").mode("overwrite").saveAsTable("test_table")
19 | actual_df = spark_session.sql("SELECT * FROM test_table").toPandas()
20 | expected_df = pd.DataFrame({"a": [1, 2]})
21 | pd.testing.assert_frame_equal(actual_df, expected_df)
--------------------------------------------------------------------------------
/test/test_unittest_example.py:
--------------------------------------------------------------------------------
1 | """
2 | Example of usng unittest to write data using delta to s3 locally with minio
3 | """
4 | import unittest
5 | import pandas as pd
6 |
7 | from src import connections_utils
8 |
9 | class TestDeltaWrite(unittest.TestCase):
10 |
11 | @classmethod
12 | def setUpClass(cls):
13 | cls.spark_session = connections_utils.create_docker_spark_builder("tests").getOrCreate()
14 |
15 | @classmethod
16 | def tearDownClass(cls):
17 | cls.spark_session.sql("DROP TABLE IF EXISTS test_table")
18 | cls.spark_session.stop()
19 |
20 |
21 | def test_write_delta(self):
22 | df = self.spark_session.createDataFrame([{"a": 1}, {"a": 2}])
23 | df.write.format("delta").mode("overwrite").saveAsTable("test_table")
24 | actual_df = self.spark_session.sql("SELECT * FROM test_table").toPandas()
25 | expected_df = pd.DataFrame({"a": [1, 2]})
26 | pd.testing.assert_frame_equal(actual_df, expected_df)
--------------------------------------------------------------------------------