diff --git a/README.md b/README.md
index 616c9514..244a1d30 100644
--- a/README.md
+++ b/README.md
@@ -45,7 +45,8 @@ Python 3.8+
## Start using the toolkit
```console
-// Login to Deep Search, see https://ds4sd.github.io/deepsearch-toolkit/getting_started/authentication/
+// Login to Deep Search,
+// see https://ds4sd.github.io/deepsearch-toolkit/getting_started/#authentication
$ deepsearch login
...
@@ -53,9 +54,6 @@ $ deepsearch login
// Convert a document
// for more details, see https://ds4sd.github.io/deepsearch-toolkit/guide/convert_doc/
$ deepsearch documents convert -p 1234567890abcdefghijklmnopqrstvwyz123456 -u https://arxiv.org/pdf/2206.00785.pdf
---------------------------------------------------------------------------------------
- Welcome to the Deep Search Toolkit
---------------------------------------------------------------------------------------
Submitting input: 100%|█████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.23s/it]
Converting input: 100%|█████████████████████████████████████████████████████████████| 1/1 [00:25<00:00, 25.61s/it]
Downloading result: 100%|█████████████████████████████████████████████████████████████| 1/1 [00:01<00:00, 1.50s/it]
diff --git a/deepsearch/cli.py b/deepsearch/cli.py
index 0c118cad..ef52bde3 100644
--- a/deepsearch/cli.py
+++ b/deepsearch/cli.py
@@ -1,6 +1,5 @@
import typer
-
from deepsearch.core.cli.main import app
from deepsearch.core.cli.plugins import get_cli_groups
from deepsearch.cps.cli.main import app as cps_app
diff --git a/deepsearch/cps/cli/data_indices_typer.py b/deepsearch/cps/cli/data_indices_typer.py
index 371afb8c..46a21b89 100644
--- a/deepsearch/cps/cli/data_indices_typer.py
+++ b/deepsearch/cps/cli/data_indices_typer.py
@@ -6,7 +6,7 @@
from deepsearch.core.util.cli_output import OutputEnum, OutputOption, cli_output
from deepsearch.cps.apis.public.rest import ApiException
-from deepsearch.cps.cli.cli_options import INDEX_KEY, SOURCE_PATH, PROJ_KEY, URL
+from deepsearch.cps.cli.cli_options import INDEX_KEY, PROJ_KEY, SOURCE_PATH, URL
from deepsearch.cps.client.api import CpsApi
from deepsearch.cps.client.components.elastic import ElasticProjectDataCollectionSource
from deepsearch.cps.data_indices import utils
diff --git a/deepsearch/cps/client/components/documents.py b/deepsearch/cps/client/components/documents.py
index 5dbcf455..6168883f 100644
--- a/deepsearch/cps/client/components/documents.py
+++ b/deepsearch/cps/client/components/documents.py
@@ -1,14 +1,15 @@
-from pathlib import Path
import os
+from pathlib import Path
+from typing import List, Optional
+
import urllib3
-from typing import List, Optional
+from deepsearch.cps.client.api import CpsApi
from deepsearch.documents.core.convert import (
- get_download_url,
download_converted_documents,
+ get_download_url,
)
from deepsearch.documents.core.create_report import report_docs, report_urls
-from deepsearch.cps.client.api import CpsApi
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
@@ -45,8 +46,9 @@ def download_all(self, result_dir: Path, progress_bar=False):
progress_bar: boolean, optional (default = False)
shows progress bar is True
"""
- if not os.path.isdir(result_dir):
- os.makedirs(result_dir)
+
+ result_dir = Path(result_dir)
+ result_dir.mkdir(parents=True, exist_ok=True)
urls = get_download_url(
cps_proj_key=self.proj_key, task_ids=self.task_ids, api=self._api
@@ -64,18 +66,18 @@ def generate_report(
Saves a csv report file for detailed information about the document conversion job.
Returns a dictionary object containing counts of files/urls converted.
"""
- if not os.path.isdir(result_dir):
- os.makedirs(result_dir)
- if self._source_urls == None:
+ result_dir = Path(result_dir)
+ result_dir.mkdir(parents=True, exist_ok=True)
+
+ if self._source_path is not None:
info = report_docs(
result_dir=result_dir,
task_ids=self.task_ids,
statuses=self.statuses,
source_path=self._source_path,
)
-
- if self._source_path == None:
+ elif self._source_urls is not None:
info = report_urls(
result_dir=result_dir,
urls=self._source_urls,
diff --git a/deepsearch/cps/data_indices/utils.py b/deepsearch/cps/data_indices/utils.py
index 0ec02822..69afd010 100644
--- a/deepsearch/cps/data_indices/utils.py
+++ b/deepsearch/cps/data_indices/utils.py
@@ -3,6 +3,7 @@
import os
from pathlib import Path
from typing import Any, List, Optional, Union
+
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
@@ -18,6 +19,7 @@
success_message,
)
from deepsearch.documents.core.create_report import report_docs, report_urls
+from deepsearch.documents.core.utils import cleanup, create_root_dir
logger = logging.getLogger(__name__)
@@ -68,7 +70,7 @@ def process_url_input(
Individual urls are uploaded for conversion and storage in data index.
"""
- root_dir = input_process.create_root_dir()
+ root_dir = create_root_dir()
# container list for task_ids
task_ids = []
@@ -76,10 +78,10 @@ def process_url_input(
count_urls = len(urls)
with tqdm(
total=count_urls,
- desc=f"{'Submitting input:': <{progressbar['padding']}}",
+ desc=f"{'Submitting input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
for url in urls:
payload = {"file_url": url}
@@ -92,7 +94,7 @@ def process_url_input(
api=api, cps_proj_key=coords.proj_key, task_ids=task_ids
)
print(success_message)
- report_urls(root_dir=root_dir, urls=urls, task_ids=task_ids, statuses=statuses)
+ report_urls(result_dir=root_dir, urls=urls, task_ids=task_ids, statuses=statuses)
return
@@ -108,7 +110,7 @@ def process_local_file(
"""
# process multiple files from local directory
- root_dir = input_process.create_root_dir()
+ root_dir = create_root_dir()
# batch individual pdfs into zips and add them to root_dir
batched_files = input_process.batch_single_files(
source_path=local_file, root_dir=root_dir
@@ -136,10 +138,10 @@ def process_local_file(
# start loop
with tqdm(
total=count_total_files,
- desc=f"{'Submitting input:': <{progressbar['padding']}}",
+ desc=f"{'Submitting input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
# loop over all files
for single_zip in files_zip:
@@ -158,11 +160,10 @@ def process_local_file(
)
print(success_message)
report_docs(
- root_dir=root_dir,
- batched_files=batched_files,
+ result_dir=root_dir,
task_ids=task_ids,
statuses=statuses,
source_path=local_file,
)
- input_process.cleanup(root_dir=root_dir)
+ cleanup(root_dir=root_dir)
return
diff --git a/deepsearch/documents/cli/main.py b/deepsearch/documents/cli/main.py
index 3d7ff88d..20a1fa9c 100644
--- a/deepsearch/documents/cli/main.py
+++ b/deepsearch/documents/cli/main.py
@@ -1,14 +1,16 @@
+import urllib
from pathlib import Path
-import urllib3, urllib
+
+import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
import typer
-from deepsearch.cps.cli.cli_options import SOURCE_PATH, PROJ_KEY, URL, PROGRESS_BAR
+from deepsearch.cps.cli.cli_options import PROGRESS_BAR, PROJ_KEY, SOURCE_PATH, URL
+from deepsearch.cps.client.api import CpsApi
from deepsearch.documents.core.main import convert_documents
from deepsearch.documents.core.utils import create_root_dir, get_urls
-from deepsearch.cps.client.api import CpsApi
app = typer.Typer(no_args_is_help=True)
@@ -43,15 +45,16 @@ def convert(
"""
api = CpsApi.default_from_env()
+ input_urls = None
if urls is not None:
if urllib.parse.urlparse(urls).scheme in ("http", "https"):
- urls = [urls]
+ input_urls = [urls]
else:
- urls = get_urls(Path(urls))
+ input_urls = get_urls(Path(urls))
result = convert_documents(
proj_key=proj_key,
- urls=urls,
+ urls=input_urls,
source_path=source_path,
progress_bar=progress_bar,
api=api,
diff --git a/deepsearch/documents/core/common_routines.py b/deepsearch/documents/core/common_routines.py
index fe794a30..2e9d182f 100644
--- a/deepsearch/documents/core/common_routines.py
+++ b/deepsearch/documents/core/common_routines.py
@@ -1,11 +1,18 @@
+from dataclasses import dataclass
+
dashes = f"{'-'*86}"
WELCOME = f"{dashes}\n{'':>26}Welcome to the Deep Search Toolkit\n{dashes}"
ERROR_MSG = f"{dashes}\nSuggestion:\n(1) Check your input.\n(2) Contact Deep Search developers if problem persists.\n{dashes}"
# setup for progress bars
progressbar_length = 30
-progressbar = {
- "padding": 22,
- "colour": "#0f62fe",
- "bar_format": "{l_bar}{bar:%d}{r_bar}{bar:-10b}" % (progressbar_length),
-}
+
+
+@dataclass
+class ProgressBarParameters:
+ padding = 22
+ colour = "#0f62fe"
+ bar_format = "{l_bar}{bar:%d}{r_bar}{bar:-10b}" % (progressbar_length)
+
+
+progressbar = ProgressBarParameters()
success_message = "Whoa... it is done. Until next time, Ciao!"
diff --git a/deepsearch/documents/core/convert.py b/deepsearch/documents/core/convert.py
index 75d680fd..3df6776f 100644
--- a/deepsearch/documents/core/convert.py
+++ b/deepsearch/documents/core/convert.py
@@ -1,9 +1,10 @@
import glob
+import logging
import os
import pathlib
from pathlib import Path
from typing import Any, List, Optional
-import logging
+
import requests
import urllib3
from tqdm import tqdm
@@ -15,7 +16,7 @@
from deepsearch.cps.client.api import CpsApi
from .common_routines import ERROR_MSG, progressbar
-from .utils import download_url, URLNavigator
+from .utils import URLNavigator, download_url
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
logger = logging.getLogger(__name__)
@@ -128,10 +129,10 @@ def send_files_for_conversion(
# start loop
with tqdm(
total=count_total_files,
- desc=f"{'Submitting input:': <{progressbar['padding']}}",
+ desc=f"{'Submitting input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
# loop over all files
for single_zip in files_zip:
@@ -167,10 +168,10 @@ def check_status_running_tasks(
with tqdm(
total=count_total,
- desc=f"{'Converting input:': <{progressbar['padding']}}",
+ desc=f"{'Converting input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
for task_id in task_ids:
request_status = check_single_task_status(
@@ -231,10 +232,10 @@ def download_converted_documents(
with tqdm(
total=len(download_urls),
- desc=f"{'Downloading result:': <{progressbar['padding']}}",
+ desc=f"{'Downloading result:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
count = 1
for url in download_urls:
@@ -279,10 +280,10 @@ def send_urls_for_conversion(
task_ids = []
with tqdm(
total=count_urls,
- desc=f"{'Submitting input:': <{progressbar['padding']}}",
+ desc=f"{'Submitting input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
for url in urls:
task_id = submit_url_for_conversion(
diff --git a/deepsearch/documents/core/create_report.py b/deepsearch/documents/core/create_report.py
index c42deaaf..2c23eb2f 100644
--- a/deepsearch/documents/core/create_report.py
+++ b/deepsearch/documents/core/create_report.py
@@ -42,7 +42,9 @@ def report_docs(
report_name = os.path.join(result_dir, "report.csv")
with tempfile.TemporaryDirectory() as tmpdir:
- batched_files = batch_single_files(source_path=source_path, root_dir=tmpdir)
+ batched_files = batch_single_files(
+ source_path=source_path, root_dir=Path(tmpdir)
+ )
# batched_files only contains information about single pdfs
# user zips are collected again
diff --git a/deepsearch/documents/core/input_process.py b/deepsearch/documents/core/input_process.py
index d812c660..b16193a8 100644
--- a/deepsearch/documents/core/input_process.py
+++ b/deepsearch/documents/core/input_process.py
@@ -1,4 +1,3 @@
-import logging
import os
import tempfile
from pathlib import Path
@@ -6,9 +5,9 @@
import urllib3
-
from deepsearch.cps.client.api import CpsApi
from deepsearch.cps.client.components.documents import DocumentConversionResult
+
from .utils import batch_single_files
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
@@ -19,8 +18,6 @@
send_urls_for_conversion,
)
-logger = logging.getLogger(__name__)
-
def process_local_input(
api: CpsApi, cps_proj_key: str, source_path: Path, progress_bar=False
@@ -29,7 +26,7 @@ def process_local_input(
Classify the user provided local input and take appropriate action.
"""
if not os.path.exists(source_path):
- logger.error("Error: File not found. Check input.")
+ raise ValueError("File not found. Check input.")
else:
with tempfile.TemporaryDirectory() as tmpdir:
batched_files = batch_single_files(
diff --git a/deepsearch/documents/core/main.py b/deepsearch/documents/core/main.py
index 471f4551..2bd62622 100644
--- a/deepsearch/documents/core/main.py
+++ b/deepsearch/documents/core/main.py
@@ -1,6 +1,9 @@
+import urllib
from pathlib import Path
from typing import List, Optional, Union
-import urllib, urllib3
+
+import urllib3
+
from deepsearch.cps.client.api import CpsApi
from deepsearch.documents.core.input_process import (
process_local_input,
@@ -12,7 +15,7 @@
def convert_documents(
proj_key: str,
- api: CpsApi = None,
+ api: CpsApi,
urls: Optional[Union[str, List[str]]] = None,
source_path: Optional[Path] = None,
progress_bar=False,
diff --git a/deepsearch/documents/core/utils.py b/deepsearch/documents/core/utils.py
index 4bf0b51d..74dfc43d 100644
--- a/deepsearch/documents/core/utils.py
+++ b/deepsearch/documents/core/utils.py
@@ -1,15 +1,18 @@
import datetime
-import requests
-from tqdm import tqdm
-import zipfile as z
import glob
import os
-from pathlib import Path
import pathlib
+import urllib
+import zipfile as z
+from pathlib import Path
from typing import Any, List
-from .common_routines import progressbar
+
+import requests
+from tqdm import tqdm
+
from deepsearch.cps.client.api import CpsApi
-import urllib
+
+from .common_routines import progressbar
class URLNavigator:
@@ -67,10 +70,10 @@ def batch_single_files(
if len(files_pdf) != 0:
with tqdm(
total=len(files_pdf),
- desc=f"{'Processing input:': <{progressbar['padding']}}",
+ desc=f"{'Processing input:': <{progressbar.padding}}",
disable=not (progress_bar),
- colour=progressbar["colour"],
- bar_format=progressbar["bar_format"],
+ colour=progressbar.colour,
+ bar_format=progressbar.bar_format,
) as progress:
# loop over pdfs
for single_doc in files_pdf:
@@ -106,9 +109,7 @@ def create_root_dir() -> Path:
# get timestamp
ts = datetime.datetime.now().strftime("%Y-%m-%d_%Hh%Mm%Ss")
root_dir = Path(f"./results_{ts}/")
-
- if not os.path.isdir(root_dir):
- os.makedirs(root_dir)
+ root_dir.mkdir(parents=True)
return root_dir
diff --git a/docs/getting_started/authentication.md b/docs/getting_started/authentication.md
deleted file mode 100644
index 355e6a8e..00000000
--- a/docs/getting_started/authentication.md
+++ /dev/null
@@ -1,73 +0,0 @@
-### Authentication
-
-After registering with [Deep Search](https://ds4sd.github.io/), you can obtain your login information by clicking on API in the top-right corner. Your login information consists of your `USER-EMAIL` (User name as shown below) and an `API-KEY`.
-
-![Deep Search Authentication Info](../images/deepsearch-auth-info.png)
-
-
----
-### Configure
-
-=== "CLI"
- Using the [`deepsearch login`](../cli-reference.md#login) command:
-
-
- ```console
- $ deepsearch login
-
- Host [https://deepsearch-experience.res.ibm.com]: #(1)
- Email: #(2)
- Api key: #(3)
- ```
-
-
-
- 1. Press Enter/Return for using default host. Otherwise, input the Deep Search deployment host to use.
- 2. Enter your login `USER-EMAIL`.
- 3. Enter your login `API-KEY`.
-
-
-=== "Python"
- ```python
- import deepsearch as ds
-
- # API key authorization
- auth = ds.DeepSearchKeyAuth(
- username="USER-EMAIL",
- api_key="API-KEY",
- )
- # In case you have already a valid temporary access_token
- # auth = DeepSearchAuth(bearer_token="TOKEN")
-
- config = ds.DeepSearchConfig(
- host="https://deepsearch-experience.res.ibm.com",
- auth=auth,
- )
-
- client = ds.CpsApiClient(config)
- api = ds.CpsApi(client)
- ```
-
----
-
-### Verify Login
-
-All capabilities of the toolkit can only occur after a successful login configuration. Here, we verify our login configurations by checking the version Deep Search Toolkit. In addition, we recommend trying some simple operations like [listing your projects](../guide/projects.md#listprojects).
-
-=== "CLI"
- Using the [`deepsearch version`](../cli-reference.md#version) command
-
-
-
- ```console
- $ deepsearch version
- ```
-
-
-
-
-=== "Python"
- ```python
- import deepsearch as ds
- versions = ds.version()
- ```
diff --git a/docs/getting_started/index.md b/docs/getting_started/index.md
index e69de29b..827e119c 100644
--- a/docs/getting_started/index.md
+++ b/docs/getting_started/index.md
@@ -0,0 +1,99 @@
+### Authentication
+
+After registering with [Deep Search](https://ds4sd.github.io/), you can obtain your login information by clicking on API in the top-right corner. Your login information consists of your `USER-EMAIL` (User name as shown below) and an `API-KEY`.
+
+![Deep Search Authentication Info](../images/deepsearch-auth-info.png)
+
+
+---
+### Configure
+
+=== "CLI"
+ Using the [`deepsearch login`](../cli-reference.md#login) command:
+
+
+ ```console
+ $ deepsearch login
+
+ Host [https://deepsearch-experience.res.ibm.com]: #(1)
+ Email: #(2)
+ Api key: #(3)
+ ```
+
+
+
+ 1. Press Enter/Return for using default host. Otherwise, input the Deep Search deployment host to use.
+ 2. Enter your login `USER-EMAIL`.
+ 3. Enter your login `API-KEY`.
+
+
+=== "Python"
+ ```python
+ import deepsearch as ds
+
+ # API key authorization
+ auth = ds.DeepSearchKeyAuth(
+ username="USER-EMAIL",
+ api_key="API-KEY",
+ )
+ # In case you have already a valid temporary access_token
+ # auth = DeepSearchAuth(bearer_token="TOKEN")
+
+ config = ds.DeepSearchConfig(
+ host="https://deepsearch-experience.res.ibm.com",
+ auth=auth,
+ )
+
+ client = ds.CpsApiClient(config)
+ api = ds.CpsApi(client)
+ ```
+
+---
+
+### Verify Login
+
+All capabilities of the toolkit can only occur after a successful login configuration. Here, we verify our login configurations by checking the version Deep Search Toolkit. In addition, we recommend trying some simple operations like [listing your projects](../guide/projects.md#listprojects) or [converting a document](../guide/convert_doc.md) as shown below.
+
+=== "CLI"
+ Using the [`deepsearch version`](../cli-reference.md#version) command
+
+
+
+ ```console
+ $ deepsearch version
+ ```
+
+
+
+
+=== "Python"
+ ```python
+ import deepsearch as ds
+ versions = ds.version()
+ ```
+
+---
+
+### Convert Documents
+
+Here, we show a simple way to convert documents using [Deep Search](https://ds4sd.github.io/). See the guide on [document conversion](../guide/convert_doc.md) for more details. Let `PATH_DOCS` be the path to a PDF document or a ZIP file or a directory in your local machine:
+
+=== "CLI"
+
+
+ ```console
+ $ deepsearch documents convert -p PROJ_KEY -i PATH_DOCS
+ ```
+
+
+
+=== "Python"
+ ```python
+ import deepsearch as ds
+ documents = ds.convert_documents(api=api, proj_key=PROJ_KEY, source_path=PATH_DOCS)
+
+ # Let's download all the converted documents locally in RESULT_DIR
+ documents.download_all(result_dir=RESULT_DIR)
+ ```
+
+---
\ No newline at end of file
diff --git a/docs/guide/convert_doc.md b/docs/guide/convert_doc.md
index 2d9c1aa8..07d71105 100644
--- a/docs/guide/convert_doc.md
+++ b/docs/guide/convert_doc.md
@@ -1,6 +1,6 @@
This page shows how to convert documents and download the converted `.json` files. Instead of downloading the converted `.json` files, if you'd like to add the converted document to your project see [Adding documents in a project](../guide/data_indices.md#adding-documents-in-a-project).
-For the tasks on this page, you are required to identify your project within Deep Search via a `PROJ_KEY`. [Listing projects](projects.md#listing-projects-listprojects) shows the `PROJ_KEY` for all of your projects.
+For the tasks on this page, you are required to identify your project within Deep Search via a `PROJ_KEY`. [Listing projects](projects.md#listing-projects-listprojects) shows the `PROJ_KEY` for all of your projects.
## Converting local documents
@@ -32,7 +32,10 @@ Let `PATH_DOCS` be the path to a PDF document or a ZIP file or a directory in yo
=== "Python"
```python
import deepsearch as ds
- documents = ds.convert_documents(proj_key=PROJ_KEY, local_file=PATH_DOCS)
+ documents = ds.convert_documents(api=api, proj_key=PROJ_KEY, source_path=PATH_DOCS)
+
+ # Let's download all the converted documents locally in RESULT_DIR
+ documents.download_all(result_dir = RESULT_DIR)
```
---
@@ -56,13 +59,19 @@ Let `URL` be the web address for an online document.
=== "Python"
```python
import deepsearch as ds
- documents = ds.convert_documents(proj_key=PROJ_KEY, url=URL)
+ documents = ds.convert_documents(api=api,proj_key=PROJ_KEY, urls=URL)
+
+ # Let's download all the converted documents locally in RESULT_DIR
+ documents.download_all(result_dir = RESULT_DIR)
```
---
### Multiple URLs
+Multiple online documents can also be conveniently converted.
+
+- For CLI:
Create a text file containing the web addresses for online documents, separated by empty lines. For example, the contents of `ONLINE-DOCS.txt` could be:
```text
@@ -70,9 +79,11 @@ URL1
URL2
URL3
```
-
Let `PATH_ONLINE_DOCS` be the path to this text file.
+- For python:
+Simply pass a python list object containing multiple urls. Let `URL` be a list containing several URLs.
+
=== "CLI"
@@ -86,9 +97,9 @@ Let `PATH_ONLINE_DOCS` be the path to this text file.
=== "Python"
```python
import deepsearch as ds
- # load the urls from the file to a list
- input_urls = open(PATH_ONLINE_DOCS).readlines()
- # or, define a list directly
- #input_urls = ["https:///URL1", "https://URL2", "https://URL3"]
- documents = ds.convert_documents(proj_key=PROJ_KEY, url=input_urls)
+ URL = ["https:///URL1", "https://URL2", "https://URL3"]
+ documents = ds.convert_documents(api=api,proj_key=PROJ_KEY, urls=URL)
+
+ # Let's download all the converted documents locally in RESULT_DIR
+ documents.download_all(result_dir = RESULT_DIR)
```
diff --git a/docs/guide/projects.md b/docs/guide/projects.md
index eb2de79a..3226c368 100644
--- a/docs/guide/projects.md
+++ b/docs/guide/projects.md
@@ -19,7 +19,7 @@ Collaborators may be added to a project as `owners`, `editors` or `viewers`. Bel
## Listing projects
!!! info
- Please [configure your login](../getting_started/authentication.md) before trying these examples.
+ Please [configure your login](../getting_started/index.md#authentication) before trying these examples.
=== "CLI"
@@ -41,7 +41,7 @@ Collaborators may be added to a project as `owners`, `editors` or `viewers`. Bel
=== "Python"
- After you have generated the api object (from [login configuration](../getting_started/authentication.md)), listing projects is very easy.
+ After you have generated the api object (from [login configuration](../getting_started/#authentication)), listing projects is very easy.
```python
projects = api.projects.list() # returns list of projects
diff --git a/docs/images/deepsearch-auth-info.png b/docs/images/deepsearch-auth-info.png
index 774e0090..72656179 100644
Binary files a/docs/images/deepsearch-auth-info.png and b/docs/images/deepsearch-auth-info.png differ
diff --git a/docs/index.md b/docs/index.md
index cb1fbde1..535555f0 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -49,16 +49,13 @@ $ pip install deepsearch-toolkit
```console
-// Login to Deep Search, see
authentication.
+// Login to Deep Search, see
authentication.
$ deepsearch login
...
// Convert a document
// for more details, see
document conversion.
$ deepsearch documents convert -p 1234567890abcdefghijklmnopqrstvwyz123456 -u https://arxiv.org/pdf/2206.00785.pdf
-----------------------------------------------------------------------
- Welcome to the Deep Search Toolkit
-----------------------------------------------------------------------
Submitting input: 100%|█████████████████████████████████████████████| 1/1 [00:01<00:00, 1.23s/it]
Converting input: 100%|█████████████████████████████████████████████| 1/1 [00:25<00:00, 25.61s/it]
Downloading result: 100%|█████████████████████████████████████████████| 1/1 [00:01<00:00, 1.50s/it]
diff --git a/examples/README.md b/examples/README.md
index 708d805a..3153a57c 100644
--- a/examples/README.md
+++ b/examples/README.md
@@ -28,7 +28,7 @@ The example notebooks load the authentication credentials from a file called `cp
}
```
-More details on how to retrieve the API credentials are available in the [documentation](https://ds4sd.github.io/deepsearch-toolkit/getting_started/authentication).
+More details on how to retrieve the API credentials are available in the [documentation](https://ds4sd.github.io/deepsearch-toolkit/getting_started/#authentication).
## Query notebooks
diff --git a/examples/notebooks/Convert_Documents.ipynb b/examples/notebooks/Convert_Documents.ipynb
index 04f8f274..8c2db2bb 100644
--- a/examples/notebooks/Convert_Documents.ipynb
+++ b/examples/notebooks/Convert_Documents.ipynb
@@ -21,8 +21,7 @@
"id": "37d96e78",
"metadata": {},
"source": [
- "# IBM Deep Search Document Conversion\n",
- "# Minimum Working Example"
+ "# IBM Deep Search Document Conversion"
]
},
{
@@ -30,6 +29,8 @@
"id": "4edb626f",
"metadata": {},
"source": [
+ "## Getting started\n",
+ "\n",
"The [Deep Search Toolkit](https://ds4sd.github.io/deepsearch-toolkit/) allows document conversion with the following few lines of code. It's that simple! For more info or step-by-step guide:\n",
"- Visit https://ds4sd.github.io/deepsearch-toolkit/guide/convert_doc/\n",
"- Follow this example notebook"
@@ -37,10 +38,27 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"id": "ec83eb0b",
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Processing input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:00<00:00, 297.70it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:04<00:00, 4.43s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [01:56<00:00, 116.96s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "{'Total files (pdf+zip)': 1, 'Total batches': 1, 'Successfully converted batches': 1}\n"
+ ]
+ }
+ ],
"source": [
"host = \"https://deepsearch-experience.res.ibm.com\"\n",
"proj = \"1234567890abcdefghijklmnopqrstvwyz123456\"\n",
@@ -53,24 +71,18 @@
"client = ds.CpsApiClient(config)\n",
"api = ds.CpsApi(client)\n",
"\n",
- "documents = ds.convert_documents(api=api, \n",
- " proj_key=proj, \n",
- " source_path=
, \n",
- " progress_bar=True) \n",
+ "documents = ds.convert_documents(\n",
+ " api=api,\n",
+ " proj_key=proj,\n",
+ " source_path=\"\",\n",
+ " progress_bar=True\n",
+ ")\n",
"info = documents.generate_report(result_dir=\"./converted_docs\")\n",
"print(info) \n",
"\n",
"documents.download_all(result_dir=\"./converted_docs\")"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "5b32bbaa",
- "metadata": {},
- "outputs": [],
- "source": []
- },
{
"cell_type": "markdown",
"id": "b9a511c9",
@@ -124,7 +136,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 3,
"id": "0e5d3ca1",
"metadata": {
"ExecuteTime": {
@@ -159,7 +171,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 4,
"id": "1c4af8ef",
"metadata": {},
"outputs": [],
@@ -177,7 +189,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 5,
"id": "c61d9bdb",
"metadata": {
"ExecuteTime": {
@@ -191,8 +203,8 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.67s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:29<00:00, 29.13s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.60s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:26<00:00, 26.32s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
@@ -205,7 +217,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"id": "3c68c2f5",
"metadata": {
"ExecuteTime": {
@@ -223,8 +235,8 @@
}
],
"source": [
- "# Let's check what happened. \n",
- "# We generate a csv report about the conversion task and store it locally\n",
+ "# let's check what happened. \n",
+ "# we generate a csv report about the conversion task and store it locally\n",
"result_dir = './converted_docs/'\n",
"info = documents.generate_report(result_dir=result_dir)\n",
"print(info)"
@@ -240,7 +252,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"id": "2dc1847e",
"metadata": {
"ExecuteTime": {
@@ -253,28 +265,28 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:00<00:00, 1.02it/s]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.11s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
"source": [
"# let's download all the converted documents:\n",
- "documents.download_all(result_dir=result_dir,progress_bar=True)"
+ "documents.download_all(result_dir=result_dir, progress_bar=True)"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"id": "39538b8a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "(['SUCCESS'], ['1766eaec-1caf-4952-8d88-0f478bb4eba9'])"
+ "(['SUCCESS'], ['70fad3f0-d497-4302-a0c9-6e5415148b62'])"
]
},
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
@@ -294,7 +306,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"id": "f7c6202f",
"metadata": {},
"outputs": [],
@@ -305,7 +317,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"id": "7126c7b1",
"metadata": {
"ExecuteTime": {
@@ -318,22 +330,24 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:01<00:00, 1.23it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:44<00:00, 22.10s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:02<00:00, 1.14s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:39<00:00, 19.87s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
"source": [
"# Process multiple urls\n",
- "documents = ds.convert_documents(api=api, \n",
- " proj_key=PROJ_KEY, \n",
- " urls= urls, \n",
- " progress_bar=True)"
+ "documents = ds.convert_documents(\n",
+ " api=api, \n",
+ " proj_key=PROJ_KEY, \n",
+ " urls= urls, \n",
+ " progress_bar=True\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 11,
"id": "e630e1e3",
"metadata": {
"ExecuteTime": {
@@ -346,15 +360,15 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.59s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.00s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.08s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:01<00:00, 1.08s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
"source": [
"# as before we can use the documents object to download all jsons. We can also iterate over them individually.\n",
"for doc in documents:\n",
- " doc.download(result_dir=result_dir,progress_bar=True)"
+ " doc.download(result_dir=result_dir, progress_bar=True)"
]
},
{
@@ -367,7 +381,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 12,
"id": "72a81849",
"metadata": {
"ExecuteTime": {
@@ -380,17 +394,19 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Processing input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:00<00:00, 146.39it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:04<00:00, 4.32s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:21<00:00, 21.62s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Processing input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:00<00:00, 164.40it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:03<00:00, 3.31s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:29<00:00, 29.49s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
"source": [
- "documents = ds.convert_documents(api=api, \n",
- " proj_key=PROJ_KEY, \n",
- " source_path=\"/Users/mis/Downloads/IEEE_CLOUD_2022_paper_20.pdf\", \n",
- " progress_bar=True)"
+ "documents = ds.convert_documents(\n",
+ " api=api, \n",
+ " proj_key=PROJ_KEY, \n",
+ " source_path=\"/Users/dol/Downloads/IEEE_Cloud_2022_Paper.pdf\", \n",
+ " progress_bar=True\n",
+ ")"
]
},
{
@@ -403,7 +419,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 13,
"id": "7dc33e5d",
"metadata": {
"ExecuteTime": {
@@ -416,22 +432,24 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Processing input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:00<00:00, 61.75it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:06<00:00, 3.10s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
- "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:31<00:00, 15.65s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Processing input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:00<00:00, 221.11it/s]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Submitting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [00:04<00:00, 4.98s/it]\u001b[38;2;15;98;254m \u001b[0m\n",
+ "Converting input: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 1/1 [01:09<00:00, 69.98s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
"source": [
- "documents = ds.convert_documents(api=api, \n",
- " proj_key=PROJ_KEY, \n",
- " source_path=\"/Users/mis/LM/Documents/pdf_docs/test/\", \n",
- " progress_bar=True)"
+ "documents = ds.convert_documents(\n",
+ " api=api, \n",
+ " proj_key=PROJ_KEY, \n",
+ " source_path=\"/Users/dol/Downloads/redbooks-xsmall/\", \n",
+ " progress_bar=True\n",
+ ")"
]
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 14,
"id": "03d11356",
"metadata": {
"ExecuteTime": {
@@ -444,7 +462,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "{'Total files (pdf+zip)': 3, 'Total batches': 2, 'Successfully converted batches': 2}\n"
+ "{'Total files (pdf+zip)': 2, 'Total batches': 1, 'Successfully converted batches': 1}\n"
]
}
],
@@ -455,7 +473,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 15,
"id": "192ea2e7",
"metadata": {},
"outputs": [
@@ -463,7 +481,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 3/3 [00:03<00:00, 1.06s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
+ "Downloading result: : 100%|\u001b[38;2;15;98;254m██████████████████████████████\u001b[0m| 2/2 [00:02<00:00, 1.31s/it]\u001b[38;2;15;98;254m \u001b[0m\n"
]
}
],
@@ -479,14 +497,6 @@
"metadata": {},
"outputs": [],
"source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "68849c06",
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
@@ -505,7 +515,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.9.7"
+ "version": "3.10.2"
},
"toc": {
"base_numbering": 1,
diff --git a/mkdocs.yml b/mkdocs.yml
index 50dd1a06..f2ef8d27 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -50,7 +50,7 @@ theme:
nav:
- Home: index.md
- - Getting started: getting_started/authentication.md
+ - Getting started: getting_started/index.md
- User guide:
- "guide/index.md"
- Document Conversion: guide/convert_doc.md
diff --git a/poetry.lock b/poetry.lock
index dc698972..b8eae686 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -1541,14 +1541,6 @@ notebook = ["ipywidgets (>=6)"]
slack = ["slack-sdk"]
telegram = ["requests"]
-[[package]]
-name = "tqdm-stubs"
-version = "0.2.1"
-description = "Stub type files for tqdm"
-category = "main"
-optional = false
-python-versions = ">=3.7,<4.0"
-
[[package]]
name = "traitlets"
version = "5.3.0"
@@ -1596,6 +1588,14 @@ category = "dev"
optional = false
python-versions = "*"
+[[package]]
+name = "types-tqdm"
+version = "4.64.1"
+description = "Typing stubs for tqdm"
+category = "dev"
+optional = false
+python-versions = "*"
+
[[package]]
name = "types-urllib3"
version = "1.26.16"
@@ -1707,24 +1707,58 @@ examples = ["numpy", "jupyter", "pandas", "ipython-blocking", "ipywidgets"]
[metadata]
lock-version = "1.1"
python-versions = "^3.8"
-content-hash = "3500dc23d1187e9111e8cc77a52a96269e8cb50aff33549a69406e455e236031"
+content-hash = "9ac95246febb82eb93a9e3563118292eca14c76def2d92c9adc380de10e8654d"
[metadata.files]
appdirs = [
{file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
{file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"},
]
-appnope = []
-argon2-cffi = []
-argon2-cffi-bindings = []
+appnope = [
+ {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"},
+ {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"},
+]
+argon2-cffi = [
+ {file = "argon2-cffi-21.3.0.tar.gz", hash = "sha256:d384164d944190a7dd7ef22c6aa3ff197da12962bd04b17f64d4e93d934dba5b"},
+ {file = "argon2_cffi-21.3.0-py3-none-any.whl", hash = "sha256:8c976986f2c5c0e5000919e6de187906cfd81fb1c72bf9d88c01177e77da7f80"},
+]
+argon2-cffi-bindings = [
+ {file = "argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae"},
+ {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"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082"},
+ {file = "argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f"},
+ {file = "argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3e385d1c39c520c08b53d63300c3ecc28622f076f4c2b0e6d7e796e9f6502194"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3e3cc67fdb7d82c4718f19b4e7a87123caf8a93fde7e23cf66ac0337d3cb3f"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a22ad9800121b71099d0fb0a65323810a15f2e292f2ba450810a7316e128ee5"},
+ {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"},
+ {file = "argon2_cffi_bindings-21.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:93f9bf70084f97245ba10ee36575f0c3f1e7d7724d67d8e5b08e61787c320ed7"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:3b9ef65804859d335dc6b31582cad2c5166f0c3e7975f324d9ffaa34ee7e6583"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4966ef5848d820776f5f562a7d45fdd70c2f330c961d0d745b784034bd9f48d"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20ef543a89dee4db46a1a6e206cd015360e5a75822f76df533845c3cbaf72670"},
+ {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"},
+ {file = "argon2_cffi_bindings-21.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5e00316dabdaea0b2dd82d141cc66889ced0cdcbfa599e8b471cf22c620c329a"},
+]
astroid = []
-asttokens = []
+asttokens = [
+ {file = "asttokens-2.0.5-py2.py3-none-any.whl", hash = "sha256:0844691e88552595a6f4a4281a9f7f79b8dd45ca4ccea82e5e05b4bbdb76705c"},
+ {file = "asttokens-2.0.5.tar.gz", hash = "sha256:9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"},
+]
atomicwrites = []
attrs = [
{file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
{file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
]
-backcall = []
+backcall = [
+ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"},
+ {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"},
+]
beautifulsoup4 = [
{file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"},
{file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"},
@@ -1740,24 +1774,21 @@ cfgv = [
{file = "cfgv-3.3.1-py2.py3-none-any.whl", hash = "sha256:c6a0883f3917a037485059700b9e75da2464e6c27051014ad85ba6aaa5884426"},
{file = "cfgv-3.3.1.tar.gz", hash = "sha256:f5a830efb9ce7a445376bb66ec94c638a9787422f96264c98edc6bdeed8ab736"},
]
-charset-normalizer = [
- {file = "charset-normalizer-2.1.0.tar.gz", hash = "sha256:575e708016ff3a5e3681541cb9d79312c416835686d054a23accb873b254f413"},
- {file = "charset_normalizer-2.1.0-py3-none-any.whl", hash = "sha256:5189b6f22b01957427f35b6a08d9a0bc45b46d3788ef5a92e978433c7a35f8a5"},
-]
+charset-normalizer = []
click = [
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
]
-colorama = [
- {file = "colorama-0.4.5-py2.py3-none-any.whl", hash = "sha256:854bf444933e37f5824ae7bfc1e98d5bce2ebe4160d46b5edf346a89358e99da"},
- {file = "colorama-0.4.5.tar.gz", hash = "sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4"},
-]
+colorama = []
debugpy = []
decorator = [
{file = "decorator-5.1.1-py3-none-any.whl", hash = "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186"},
{file = "decorator-5.1.1.tar.gz", hash = "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330"},
]
-defusedxml = []
+defusedxml = [
+ {file = "defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61"},
+ {file = "defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69"},
+]
dill = [
{file = "dill-0.3.5.1-py2.py3-none-any.whl", hash = "sha256:33501d03270bbe410c72639b350e941882a8b0fd55357580fbc873fba0c59302"},
{file = "dill-0.3.5.1.tar.gz", hash = "sha256:d75e41f3eff1eee599d738e76ba8f4ad98ea229db8b085318aa2b3333a208c86"},
@@ -1767,14 +1798,26 @@ distlib = [
{file = "distlib-0.3.4.zip", hash = "sha256:e4b58818180336dc9c529bfb9a0b58728ffc09ad92027a3f30b7cd91e3458579"},
]
ecdsa = []
-entrypoints = []
-executing = []
-fastjsonschema = []
+entrypoints = [
+ {file = "entrypoints-0.4-py3-none-any.whl", hash = "sha256:f174b5ff827504fd3cd97cc3f8649f3693f51538c7e4bdf3ef002c8429d42f9f"},
+ {file = "entrypoints-0.4.tar.gz", hash = "sha256:b706eddaa9218a19ebcd67b56818f05bb27589b1ca9e8d797b74affad4ccacd4"},
+]
+executing = [
+ {file = "executing-0.8.3-py2.py3-none-any.whl", hash = "sha256:d1eef132db1b83649a3905ca6dd8897f71ac6f8cac79a7e58a1a09cf137546c9"},
+ {file = "executing-0.8.3.tar.gz", hash = "sha256:c6554e21c6b060590a6d3be4b82fb78f8f0194d809de5ea7df1c093763311501"},
+]
+fastjsonschema = [
+ {file = "fastjsonschema-2.15.3-py3-none-any.whl", hash = "sha256:ddb0b1d8243e6e3abb822bd14e447a89f4ab7439342912d590444831fa00b6a0"},
+ {file = "fastjsonschema-2.15.3.tar.gz", hash = "sha256:0a572f0836962d844c1fc435e200b2e4f4677e4e6611a2e3bdd01ba697c275ec"},
+]
filelock = [
{file = "filelock-3.7.1-py3-none-any.whl", hash = "sha256:37def7b658813cda163b56fc564cdc75e86d338246458c4c28ae84cabefa2404"},
{file = "filelock-3.7.1.tar.gz", hash = "sha256:3a0fd85166ad9dbab54c9aec96737b744106dc5f15c0b09a6744a445299fcf04"},
]
-ghp-import = []
+ghp-import = [
+ {file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"},
+ {file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"},
+]
griffe = []
identify = [
{file = "identify-2.5.1-py2.py3-none-any.whl", hash = "sha256:0dca2ea3e4381c435ef9c33ba100a78a9b40c0bab11189c7cf121f75815efeaa"},
@@ -1784,32 +1827,54 @@ idna = [
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
]
-importlib-metadata = [
- {file = "importlib_metadata-4.12.0-py3-none-any.whl", hash = "sha256:7401a975809ea1fdc658c3aa4f78cc2195a0e019c5cbc4c06122884e9ae80c23"},
- {file = "importlib_metadata-4.12.0.tar.gz", hash = "sha256:637245b8bab2b6502fcbc752cc4b7a6f6243bb02b31c5c26156ad103d3d45670"},
-]
+importlib-metadata = []
importlib-resources = []
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
]
ipykernel = []
-ipython = []
-ipython-blocking = []
-ipython-genutils = []
+ipython = [
+ {file = "ipython-8.4.0-py3-none-any.whl", hash = "sha256:7ca74052a38fa25fe9bedf52da0be7d3fdd2fb027c3b778ea78dfe8c212937d1"},
+ {file = "ipython-8.4.0.tar.gz", hash = "sha256:f2db3a10254241d9b447232cec8b424847f338d9d36f9a577a6192c332a46abd"},
+]
+ipython-blocking = [
+ {file = "ipython_blocking-0.3.1-py3-none-any.whl", hash = "sha256:ac17ac5e42fad1647a055abd6aa47d99d88eef3c4bf882a96565b794e6df72c0"},
+ {file = "ipython_blocking-0.3.1.tar.gz", hash = "sha256:0770f83b0f66abdee691836ce04dd039722e286592d301feb2e5fa511dad2a94"},
+]
+ipython-genutils = [
+ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"},
+ {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"},
+]
ipywidgets = []
isort = [
{file = "isort-5.10.1-py3-none-any.whl", hash = "sha256:6f62d78e2f89b4500b080fe3a81690850cd254227f27f75c3a0c491a1f351ba7"},
{file = "isort-5.10.1.tar.gz", hash = "sha256:e8443a5e7a020e9d7f97f1d7d9cd17c88bcb3bc7e218bf9cf5095fe550be2951"},
]
-jedi = []
-jinja2 = []
+jedi = [
+ {file = "jedi-0.18.1-py2.py3-none-any.whl", hash = "sha256:637c9635fcf47945ceb91cd7f320234a7be540ded6f3e99a50cb6febdfd1ba8d"},
+ {file = "jedi-0.18.1.tar.gz", hash = "sha256:74137626a64a99c8eb6ae5832d99b3bdd7d29a3850fe2aa80a4126b2a7d949ab"},
+]
+jinja2 = [
+ {file = "Jinja2-3.0.3-py3-none-any.whl", hash = "sha256:077ce6014f7b40d03b47d1f1ca4b0fc8328a692bd284016f806ed0eaca390ad8"},
+ {file = "Jinja2-3.0.3.tar.gz", hash = "sha256:611bb273cd68f3b993fabdc4064fc858c5b47a973cb5aa7999ec1ba405c87cd7"},
+]
jsonschema = []
-jupyter = []
-jupyter-client = []
+jupyter = [
+ {file = "jupyter-1.0.0-py2.py3-none-any.whl", hash = "sha256:5b290f93b98ffbc21c0c7e749f054b3267782166d72fa5e3ed1ed4eaf34a2b78"},
+ {file = "jupyter-1.0.0.tar.gz", hash = "sha256:d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f"},
+ {file = "jupyter-1.0.0.zip", hash = "sha256:3e1f86076bbb7c8c207829390305a2b1fe836d471ed54be66a3b8c41e7f46cc7"},
+]
+jupyter-client = [
+ {file = "jupyter_client-7.3.4-py3-none-any.whl", hash = "sha256:17d74b0d0a7b24f1c8c527b24fcf4607c56bee542ffe8e3418e50b21e514b621"},
+ {file = "jupyter_client-7.3.4.tar.gz", hash = "sha256:aa9a6c32054b290374f95f73bb0cae91455c58dfb84f65c8591912b8f65e6d56"},
+]
jupyter-console = []
jupyter-core = []
-jupyterlab-pygments = []
+jupyterlab-pygments = [
+ {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"},
+ {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"},
+]
jupyterlab-widgets = []
lazy-object-proxy = [
{file = "lazy-object-proxy-1.7.1.tar.gz", hash = "sha256:d609c75b986def706743cdebe5e47553f4a5a1da9c5ff66d76013ef396b5a8a4"},
@@ -1896,70 +1961,114 @@ markupsafe = [
{file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
{file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
]
-matplotlib-inline = []
+matplotlib-inline = [
+ {file = "matplotlib-inline-0.1.3.tar.gz", hash = "sha256:a04bfba22e0d1395479f866853ec1ee28eea1485c1d69a6faf00dc3e24ff34ee"},
+ {file = "matplotlib_inline-0.1.3-py3-none-any.whl", hash = "sha256:aed605ba3b72462d64d475a21a9296f400a19c4f74a31b59103d2a99ffd5aa5c"},
+]
mccabe = [
{file = "mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e"},
{file = "mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325"},
]
-mergedeep = []
-mistune = []
-mkdocs = []
-mkdocs-autorefs = []
+mergedeep = [
+ {file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
+ {file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
+]
+mistune = [
+ {file = "mistune-0.8.4-py2.py3-none-any.whl", hash = "sha256:88a1051873018da288eee8538d476dffe1262495144b33ecb586c4ab266bb8d4"},
+ {file = "mistune-0.8.4.tar.gz", hash = "sha256:59a3429db53c50b5c6bcc8a07f8848cb00d7dc8bdb431a4ab41920d201d4756e"},
+]
+mkdocs = [
+ {file = "mkdocs-1.3.0-py3-none-any.whl", hash = "sha256:26bd2b03d739ac57a3e6eed0b7bcc86168703b719c27b99ad6ca91dc439aacde"},
+ {file = "mkdocs-1.3.0.tar.gz", hash = "sha256:b504405b04da38795fec9b2e5e28f6aa3a73bb0960cb6d5d27ead28952bd35ea"},
+]
+mkdocs-autorefs = [
+ {file = "mkdocs-autorefs-0.4.1.tar.gz", hash = "sha256:70748a7bd025f9ecd6d6feeba8ba63f8e891a1af55f48e366d6d6e78493aba84"},
+ {file = "mkdocs_autorefs-0.4.1-py3-none-any.whl", hash = "sha256:a2248a9501b29dc0cc8ba4c09f4f47ff121945f6ce33d760f145d6f89d313f5b"},
+]
mkdocs-material = []
-mkdocs-material-extensions = []
-mkdocs-typer = []
-mkdocstrings = []
+mkdocs-material-extensions = [
+ {file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"},
+ {file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"},
+]
+mkdocs-typer = [
+ {file = "mkdocs_typer-0.0.2-py3-none-any.whl", hash = "sha256:24d88407b458403db47a953621a31a29f37e781015925d929e783a4719203991"},
+ {file = "mkdocs_typer-0.0.2.tar.gz", hash = "sha256:150e1320a02cff86deea55a173da1d72728a9801742b2deba2926d1a33d36c07"},
+]
+mkdocstrings = [
+ {file = "mkdocstrings-0.19.0-py3-none-any.whl", hash = "sha256:3217d510d385c961f69385a670b2677e68e07b5fea4a504d86bf54c006c87c7d"},
+ {file = "mkdocstrings-0.19.0.tar.gz", hash = "sha256:efa34a67bad11229d532d89f6836a8a215937548623b64f3698a1df62e01cc3e"},
+]
mkdocstrings-python = []
-mypy = []
+mypy = [
+ {file = "mypy-0.931-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3c5b42d0815e15518b1f0990cff7a705805961613e701db60387e6fb663fe78a"},
+ {file = "mypy-0.931-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c89702cac5b302f0c5d33b172d2b55b5df2bede3344a2fbed99ff96bddb2cf00"},
+ {file = "mypy-0.931-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:300717a07ad09525401a508ef5d105e6b56646f7942eb92715a1c8d610149714"},
+ {file = "mypy-0.931-cp310-cp310-win_amd64.whl", hash = "sha256:7b3f6f557ba4afc7f2ce6d3215d5db279bcf120b3cfd0add20a5d4f4abdae5bc"},
+ {file = "mypy-0.931-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1bf752559797c897cdd2c65f7b60c2b6969ffe458417b8d947b8340cc9cec08d"},
+ {file = "mypy-0.931-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4365c60266b95a3f216a3047f1d8e3f895da6c7402e9e1ddfab96393122cc58d"},
+ {file = "mypy-0.931-cp36-cp36m-win_amd64.whl", hash = "sha256:1b65714dc296a7991000b6ee59a35b3f550e0073411ac9d3202f6516621ba66c"},
+ {file = "mypy-0.931-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e839191b8da5b4e5d805f940537efcaa13ea5dd98418f06dc585d2891d228cf0"},
+ {file = "mypy-0.931-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:50c7346a46dc76a4ed88f3277d4959de8a2bd0a0fa47fa87a4cde36fe247ac05"},
+ {file = "mypy-0.931-cp37-cp37m-win_amd64.whl", hash = "sha256:d8f1ff62f7a879c9fe5917b3f9eb93a79b78aad47b533911b853a757223f72e7"},
+ {file = "mypy-0.931-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f9fe20d0872b26c4bba1c1be02c5340de1019530302cf2dcc85c7f9fc3252ae0"},
+ {file = "mypy-0.931-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1b06268df7eb53a8feea99cbfff77a6e2b205e70bf31743e786678ef87ee8069"},
+ {file = "mypy-0.931-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8c11003aaeaf7cc2d0f1bc101c1cc9454ec4cc9cb825aef3cafff8a5fdf4c799"},
+ {file = "mypy-0.931-cp38-cp38-win_amd64.whl", hash = "sha256:d9d2b84b2007cea426e327d2483238f040c49405a6bf4074f605f0156c91a47a"},
+ {file = "mypy-0.931-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ff3bf387c14c805ab1388185dd22d6b210824e164d4bb324b195ff34e322d166"},
+ {file = "mypy-0.931-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5b56154f8c09427bae082b32275a21f500b24d93c88d69a5e82f3978018a0266"},
+ {file = "mypy-0.931-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8ca7f8c4b1584d63c9a0f827c37ba7a47226c19a23a753d52e5b5eddb201afcd"},
+ {file = "mypy-0.931-cp39-cp39-win_amd64.whl", hash = "sha256:74f7eccbfd436abe9c352ad9fb65872cc0f1f0a868e9d9c44db0893440f0c697"},
+ {file = "mypy-0.931-py3-none-any.whl", hash = "sha256:1171f2e0859cfff2d366da2c7092b06130f232c636a3f7301e3feb8b41f6377d"},
+ {file = "mypy-0.931.tar.gz", hash = "sha256:0038b21890867793581e4cb0d810829f5fd4441aa75796b53033af3aa30430ce"},
+]
mypy-extensions = [
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
nbclient = []
-nbconvert = []
-nbformat = []
-nest-asyncio = []
-nodeenv = [
- {file = "nodeenv-1.7.0-py2.py3-none-any.whl", hash = "sha256:27083a7b96a25f2f5e1d8cb4b6317ee8aeda3bdd121394e5ac54e498028a042e"},
- {file = "nodeenv-1.7.0.tar.gz", hash = "sha256:e0e7f7dfb85fc5394c6fe1e8fa98131a2473e04311a45afb6508f7cf1836fa2b"},
-]
-notebook = []
+nbconvert = [
+ {file = "nbconvert-6.5.0-py3-none-any.whl", hash = "sha256:c56dd0b8978a1811a5654f74c727ff16ca87dd5a43abd435a1c49b840fcd8360"},
+ {file = "nbconvert-6.5.0.tar.gz", hash = "sha256:223e46e27abe8596b8aed54301fadbba433b7ffea8196a68fd7b1ff509eee99d"},
+]
+nbformat = [
+ {file = "nbformat-5.4.0-py3-none-any.whl", hash = "sha256:0d6072aaec95dddc39735c144ee8bbc6589c383fb462e4058abc855348152dad"},
+ {file = "nbformat-5.4.0.tar.gz", hash = "sha256:44ba5ca6acb80c5d5a500f1e5b83ede8cbe364d5a495c4c8cf60aaf1ba656501"},
+]
+nest-asyncio = [
+ {file = "nest_asyncio-1.5.5-py3-none-any.whl", hash = "sha256:b98e3ec1b246135e4642eceffa5a6c23a3ab12c82ff816a92c612d68205813b2"},
+ {file = "nest_asyncio-1.5.5.tar.gz", hash = "sha256:e442291cd942698be619823a17a86a5759eabe1f8613084790de189fe9e16d65"},
+]
+nodeenv = []
+notebook = [
+ {file = "notebook-6.4.12-py3-none-any.whl", hash = "sha256:8c07a3bb7640e371f8a609bdbb2366a1976c6a2589da8ef917f761a61e3ad8b1"},
+ {file = "notebook-6.4.12.tar.gz", hash = "sha256:6268c9ec9048cff7a45405c990c29ac9ca40b0bc3ec29263d218c5e01f2b4e86"},
+]
numpy = []
packaging = [
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
]
-pandas = [
- {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d51674ed8e2551ef7773820ef5dab9322be0828629f2cbf8d1fc31a0c4fed640"},
- {file = "pandas-1.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:16ad23db55efcc93fa878f7837267973b61ea85d244fc5ff0ccbcfa5638706c5"},
- {file = "pandas-1.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:958a0588149190c22cdebbc0797e01972950c927a11a900fe6c2296f207b1d6f"},
- {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e48fbb64165cda451c06a0f9e4c7a16b534fcabd32546d531b3c240ce2844112"},
- {file = "pandas-1.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f803320c9da732cc79210d7e8cc5c8019aad512589c910c66529eb1b1818230"},
- {file = "pandas-1.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:2893e923472a5e090c2d5e8db83e8f907364ec048572084c7d10ef93546be6d1"},
- {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:24ea75f47bbd5574675dae21d51779a4948715416413b30614c1e8b480909f81"},
- {file = "pandas-1.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5ebc990bd34f4ac3c73a2724c2dcc9ee7bf1ce6cf08e87bb25c6ad33507e318"},
- {file = "pandas-1.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d6c0106415ff1a10c326c49bc5dd9ea8b9897a6ca0c8688eb9c30ddec49535ef"},
- {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78b00429161ccb0da252229bcda8010b445c4bf924e721265bec5a6e96a92e92"},
- {file = "pandas-1.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6dfbf16b1ea4f4d0ee11084d9c026340514d1d30270eaa82a9f1297b6c8ecbf0"},
- {file = "pandas-1.4.3-cp38-cp38-win32.whl", hash = "sha256:48350592665ea3cbcd07efc8c12ff12d89be09cd47231c7925e3b8afada9d50d"},
- {file = "pandas-1.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:605d572126eb4ab2eadf5c59d5d69f0608df2bf7bcad5c5880a47a20a0699e3e"},
- {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3924692160e3d847e18702bb048dc38e0e13411d2b503fecb1adf0fcf950ba4"},
- {file = "pandas-1.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:07238a58d7cbc8a004855ade7b75bbd22c0db4b0ffccc721556bab8a095515f6"},
- {file = "pandas-1.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:755679c49460bd0d2f837ab99f0a26948e68fa0718b7e42afbabd074d945bf84"},
- {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41fc406e374590a3d492325b889a2686b31e7a7780bec83db2512988550dadbf"},
- {file = "pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d9382f72a4f0e93909feece6fef5500e838ce1c355a581b3d8f259839f2ea76"},
- {file = "pandas-1.4.3-cp39-cp39-win32.whl", hash = "sha256:0daf876dba6c622154b2e6741f29e87161f844e64f84801554f879d27ba63c0d"},
- {file = "pandas-1.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:721a3dd2f06ef942f83a819c0f3f6a648b2830b191a72bbe9451bcd49c3bd42e"},
- {file = "pandas-1.4.3.tar.gz", hash = "sha256:2ff7788468e75917574f080cd4681b27e1a7bf36461fe968b49a87b5a54d007c"},
-]
-pandocfilters = []
-parso = []
+pandas = []
+pandocfilters = [
+ {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"},
+ {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"},
+]
+parso = [
+ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"},
+ {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"},
+]
pathspec = [
{file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
{file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
]
-pexpect = []
-pickleshare = []
+pexpect = [
+ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"},
+ {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"},
+]
+pickleshare = [
+ {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"},
+ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"},
+]
platformdirs = [
{file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
{file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
@@ -1972,7 +2081,10 @@ pre-commit = [
{file = "pre_commit-2.19.0-py2.py3-none-any.whl", hash = "sha256:10c62741aa5704faea2ad69cb550ca78082efe5697d6f04e5710c3c229afdd10"},
{file = "pre_commit-2.19.0.tar.gz", hash = "sha256:4233a1e38621c87d9dda9808c6606d7e7ba0e087cd56d3fe03202a01d2919615"},
]
-prometheus-client = []
+prometheus-client = [
+ {file = "prometheus_client-0.14.1-py3-none-any.whl", hash = "sha256:522fded625282822a89e2773452f42df14b5a8e84a86433e3f8a189c1d54dc01"},
+ {file = "prometheus_client-0.14.1.tar.gz", hash = "sha256:5459c427624961076277fdc6dc50540e2bacb98eebde99886e59ec55ed92093a"},
+]
prompt-toolkit = []
psutil = [
{file = "psutil-5.9.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:799759d809c31aab5fe4579e50addf84565e71c1dc9f1c31258f159ff70d3f87"},
@@ -2008,8 +2120,14 @@ psutil = [
{file = "psutil-5.9.1-cp39-cp39-win_amd64.whl", hash = "sha256:f65f9a46d984b8cd9b3750c2bdb419b2996895b005aefa6cbaba9a143b1ce2c5"},
{file = "psutil-5.9.1.tar.gz", hash = "sha256:57f1819b5d9e95cdfb0c881a8a5b7d542ed0b7c522d575706a80bedc848c8954"},
]
-ptyprocess = []
-pure-eval = []
+ptyprocess = [
+ {file = "ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35"},
+ {file = "ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220"},
+]
+pure-eval = [
+ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"},
+ {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"},
+]
py = [
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
@@ -2070,12 +2188,15 @@ pydantic = [
{file = "pydantic-1.9.1-py3-none-any.whl", hash = "sha256:4988c0f13c42bfa9ddd2fe2f569c9d54646ce84adc5de84228cfe83396f3bd58"},
{file = "pydantic-1.9.1.tar.gz", hash = "sha256:1ed987c3ff29fff7fd8c3ea3a3ea877ad310aae2ef9889a119e22d3f2db0691a"},
]
-pygments = []
-pylint = [
- {file = "pylint-2.14.4-py3-none-any.whl", hash = "sha256:89b61867db16eefb7b3c5b84afc94081edaf11544189e2b238154677529ad69f"},
- {file = "pylint-2.14.4.tar.gz", hash = "sha256:47705453aa9dce520e123a7d51843d5f0032cbfa06870f89f00927aa1f735a4a"},
+pygments = [
+ {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
+ {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
+]
+pylint = []
+pymdown-extensions = [
+ {file = "pymdown_extensions-9.5-py3-none-any.whl", hash = "sha256:ec141c0f4983755349f0c8710416348d1a13753976c028186ed14f190c8061c4"},
+ {file = "pymdown_extensions-9.5.tar.gz", hash = "sha256:3ef2d998c0d5fa7eb09291926d90d69391283561cf6306f85cd588a5eb5befa0"},
]
-pymdown-extensions = []
pyparsing = [
{file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
@@ -2103,17 +2224,38 @@ pyrsistent = [
{file = "pyrsistent-0.18.1-cp39-cp39-win_amd64.whl", hash = "sha256:e24a828f57e0c337c8d8bb9f6b12f09dfdf0273da25fda9e314f0b684b415a07"},
{file = "pyrsistent-0.18.1.tar.gz", hash = "sha256:d4d61f8b993a7255ba714df3aca52700f8125289f84f704cf80916517c46eb96"},
]
-pytest = []
+pytest = [
+ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"},
+ {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"},
+]
python-dateutil = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
-python-jose = []
+python-jose = [
+ {file = "python-jose-3.3.0.tar.gz", hash = "sha256:55779b5e6ad599c6336191246e95eb2293a9ddebd555f796a65f838f07e5d78a"},
+ {file = "python_jose-3.3.0-py2.py3-none-any.whl", hash = "sha256:9b1376b023f8b298536eedd47ae1089bcdb848f1535ab30555cd92002d78923a"},
+]
pytz = [
{file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"},
{file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"},
]
-pywin32 = []
+pywin32 = [
+ {file = "pywin32-304-cp310-cp310-win32.whl", hash = "sha256:3c7bacf5e24298c86314f03fa20e16558a4e4138fc34615d7de4070c23e65af3"},
+ {file = "pywin32-304-cp310-cp310-win_amd64.whl", hash = "sha256:4f32145913a2447736dad62495199a8e280a77a0ca662daa2332acf849f0be48"},
+ {file = "pywin32-304-cp310-cp310-win_arm64.whl", hash = "sha256:d3ee45adff48e0551d1aa60d2ec066fec006083b791f5c3527c40cd8aefac71f"},
+ {file = "pywin32-304-cp311-cp311-win32.whl", hash = "sha256:30c53d6ce44c12a316a06c153ea74152d3b1342610f1b99d40ba2795e5af0269"},
+ {file = "pywin32-304-cp311-cp311-win_amd64.whl", hash = "sha256:7ffa0c0fa4ae4077e8b8aa73800540ef8c24530057768c3ac57c609f99a14fd4"},
+ {file = "pywin32-304-cp311-cp311-win_arm64.whl", hash = "sha256:cbbe34dad39bdbaa2889a424d28752f1b4971939b14b1bb48cbf0182a3bcfc43"},
+ {file = "pywin32-304-cp36-cp36m-win32.whl", hash = "sha256:be253e7b14bc601718f014d2832e4c18a5b023cbe72db826da63df76b77507a1"},
+ {file = "pywin32-304-cp36-cp36m-win_amd64.whl", hash = "sha256:de9827c23321dcf43d2f288f09f3b6d772fee11e809015bdae9e69fe13213988"},
+ {file = "pywin32-304-cp37-cp37m-win32.whl", hash = "sha256:f64c0377cf01b61bd5e76c25e1480ca8ab3b73f0c4add50538d332afdf8f69c5"},
+ {file = "pywin32-304-cp37-cp37m-win_amd64.whl", hash = "sha256:bb2ea2aa81e96eee6a6b79d87e1d1648d3f8b87f9a64499e0b92b30d141e76df"},
+ {file = "pywin32-304-cp38-cp38-win32.whl", hash = "sha256:94037b5259701988954931333aafd39cf897e990852115656b014ce72e052e96"},
+ {file = "pywin32-304-cp38-cp38-win_amd64.whl", hash = "sha256:ead865a2e179b30fb717831f73cf4373401fc62fbc3455a0889a7ddac848f83e"},
+ {file = "pywin32-304-cp39-cp39-win32.whl", hash = "sha256:25746d841201fd9f96b648a248f731c1dec851c9a08b8e33da8b56148e4c65cc"},
+ {file = "pywin32-304-cp39-cp39-win_amd64.whl", hash = "sha256:d24a3382f013b21aa24a5cfbfad5a2cd9926610c0affde3e8ab5b3d7dbcf4ac9"},
+]
pywinpty = []
pyyaml = [
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
@@ -2150,19 +2292,28 @@ pyyaml = [
{file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
]
-pyyaml-env-tag = []
+pyyaml-env-tag = [
+ {file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"},
+ {file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
+]
pyzmq = []
-qtconsole = []
-qtpy = []
-requests = [
- {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"},
- {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"},
+qtconsole = [
+ {file = "qtconsole-5.3.1-py3-none-any.whl", hash = "sha256:d364592d7ede3257f1e17fcdbfd339c26e2cc638ca4fa4ee56a724e26ea13c81"},
+ {file = "qtconsole-5.3.1.tar.gz", hash = "sha256:b73723fac43938b684dcb237a88510dc7721c43a726cea8ade179a2927c0a2f3"},
+]
+qtpy = [
+ {file = "QtPy-2.1.0-py3-none-any.whl", hash = "sha256:aee0586081f943029312becece9f63977b0a9e3788f77a6ac8cc74802bb173d6"},
+ {file = "QtPy-2.1.0.tar.gz", hash = "sha256:ca8cd4217175186344299ee4c0f7e7adcf362c70852ba35b255a534077025c06"},
]
+requests = []
rsa = [
{file = "rsa-4.8-py3-none-any.whl", hash = "sha256:95c5d300c4e879ee69708c428ba566c59478fd653cc3a22243eeb8ed846950bb"},
{file = "rsa-4.8.tar.gz", hash = "sha256:5c6bd9dc7a543b7fe4304a631f8a8a3b674e2bbfc49c2ae96200cdbe55df6b17"},
]
-send2trash = []
+send2trash = [
+ {file = "Send2Trash-1.8.0-py3-none-any.whl", hash = "sha256:f20eaadfdb517eaca5ce077640cb261c7d2698385a6a0f072a4a5447fd49fa08"},
+ {file = "Send2Trash-1.8.0.tar.gz", hash = "sha256:d2c24762fd3759860a0aff155e45871447ea58d2be6bdd39b5c8f966a0c99c2d"},
+]
six = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
@@ -2172,43 +2323,51 @@ soupsieve = [
{file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"},
]
stack-data = []
-tabulate = [
- {file = "tabulate-0.8.10-py3-none-any.whl", hash = "sha256:0ba055423dbaa164b9e456abe7920c5e8ed33fcc16f6d1b2f2d152c8e1e8b4fc"},
- {file = "tabulate-0.8.10-py3.8.egg", hash = "sha256:436f1c768b424654fce8597290d2764def1eea6a77cfa5c33be00b1bc0f4f63d"},
- {file = "tabulate-0.8.10.tar.gz", hash = "sha256:6c57f3f3dd7ac2782770155f3adb2db0b1a269637e42f27599925e64b114f519"},
-]
-terminado = []
-tinycss2 = []
-tokenize-rt = []
+tabulate = []
+terminado = [
+ {file = "terminado-0.15.0-py3-none-any.whl", hash = "sha256:0d5f126fbfdb5887b25ae7d9d07b0d716b1cc0ccaacc71c1f3c14d228e065197"},
+ {file = "terminado-0.15.0.tar.gz", hash = "sha256:ab4eeedccfcc1e6134bfee86106af90852c69d602884ea3a1e8ca6d4486e9bfe"},
+]
+tinycss2 = [
+ {file = "tinycss2-1.1.1-py3-none-any.whl", hash = "sha256:fe794ceaadfe3cf3e686b22155d0da5780dd0e273471a51846d0a02bc204fec8"},
+ {file = "tinycss2-1.1.1.tar.gz", hash = "sha256:b2e44dd8883c360c35dd0d1b5aad0b610e5156c2cb3b33434634e539ead9d8bf"},
+]
+tokenize-rt = [
+ {file = "tokenize_rt-4.2.1-py2.py3-none-any.whl", hash = "sha256:08a27fa032a81cf45e8858d0ac706004fcd523e8463415ddf1442be38e204ea8"},
+ {file = "tokenize_rt-4.2.1.tar.gz", hash = "sha256:0d4f69026fed520f8a1e0103aa36c406ef4661417f20ca643f913e33531b3b94"},
+]
toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
-tomli = []
+tomli = [
+ {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
+ {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
+]
tomlkit = []
tornado = []
tqdm = [
{file = "tqdm-4.64.0-py2.py3-none-any.whl", hash = "sha256:74a2cdefe14d11442cedf3ba4e21a3b84ff9a2dbdc6cfae2c34addb2a14a5ea6"},
{file = "tqdm-4.64.0.tar.gz", hash = "sha256:40be55d30e200777a307a7585aee69e4eabb46b4ec6a4b4a5f2d9f11e7d5408d"},
]
-tqdm-stubs = []
traitlets = []
typer = []
types-requests = []
types-tabulate = []
+types-tqdm = []
types-urllib3 = []
typing-extensions = []
urllib3 = []
-virtualenv = [
- {file = "virtualenv-20.15.1-py2.py3-none-any.whl", hash = "sha256:b30aefac647e86af6d82bfc944c556f8f1a9c90427b2fb4e3bfbf338cb82becf"},
- {file = "virtualenv-20.15.1.tar.gz", hash = "sha256:288171134a2ff3bfb1a2f54f119e77cd1b81c29fc1265a2356f3e8d14c7d58c4"},
-]
+virtualenv = []
watchdog = []
wcwidth = [
{file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"},
{file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"},
]
-webencodings = []
+webencodings = [
+ {file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
+ {file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
+]
widgetsnbextension = []
wrapt = [
{file = "wrapt-1.14.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:1b376b3f4896e7930f1f772ac4b064ac12598d1c38d04907e696cc4d794b43d3"},
diff --git a/pyproject.toml b/pyproject.toml
index 49769a65..c5ee2451 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -50,7 +50,6 @@ appdirs = "^1.4.4"
tabulate = "^0.8.9"
pluggy = "^1.0.0"
tqdm = "^4.64.0"
-tqdm-stubs = "^0.2.0"
numpy = {version = "^1.22.4", optional = true}
jupyter = {version = "^1.0.0", optional = true}
pandas = {version = "^1.4.2", optional = true}
@@ -74,6 +73,7 @@ mkdocs-typer = "^0.0.2"
# Types for packages.
types-requests = "^2.27.10"
types-tabulate = "^0.8.5"
+types-tqdm = "^4.64.1"
[build-system]
requires = ["poetry-core>=1.0.0"]