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"]