diff --git a/.gitignore b/.gitignore index 655ef216..d2b34df5 100644 --- a/.gitignore +++ b/.gitignore @@ -133,12 +133,12 @@ cython_debug/ */data-pipeline/.secrets.* # ignore data -*/data-pipeline/data -*/data-pipeline/data/census -*/data-pipeline/data/tiles -*/data-pipeline/data/tmp -*/data-pipeline/data/dataset -*/data-pipeline/data/score +*/data-pipeline/data_pipeline/data +*/data-pipeline/data_pipeline/data/census +*/data-pipeline/data_pipeline/data/tiles +*/data-pipeline/data_pipeline/data/tmp +*/data-pipeline/data_pipeline/data/dataset +*/data-pipeline/data_pipeline/data/score # node node_modules diff --git a/data/data-pipeline/README.md b/data/data-pipeline/README.md index ca8333f5..f70bb961 100644 --- a/data/data-pipeline/README.md +++ b/data/data-pipeline/README.md @@ -5,23 +5,25 @@ -- [About this application](#about-this-application) - - [Score comparison workflow](#score-comparison-workflow) - - [Workflow Diagram](#workflow-diagram) - - [Step 0: Set up your environment](#step-0-set-up-your-environment) - - [Step 1: Run the ETL script for each data source](#step-1-run-the-etl-script-for-each-data-source) - - [Step 2: Calculate the Justice40 score experiments](#step-2-calculate-the-justice40-score-experiments) - - [Step 3: Compare the Justice40 score experiments to other indices](#step-3-compare-the-justice40-score-experiments-to-other-indices) - - [Data Sources](#data-sources) -- [Running using Docker](#running-using-docker) -- [Log visualization](#log-visualization) -- [Local development](#local-development) - - [Downloading Census Block Groups GeoJSON and Generating CBG CSVs](#downloading-census-block-groups-geojson-and-generating-cbg-csvs) - - [Generating mbtiles](#generating-mbtiles) - - [Serve the map locally](#serve-the-map-locally) - - [Running Jupyter notebooks](#running-jupyter-notebooks) - - [Activating variable-enabled Markdown for Jupyter notebooks](#activating-variable-enabled-markdown-for-jupyter-notebooks) -- [Miscellaneous](#miscellaneous) +- [Justice 40 Score application](#justice-40-score-application) + - [About this application](#about-this-application) + - [Score comparison workflow](#score-comparison-workflow) + - [Workflow Diagram](#workflow-diagram) + - [Step 0: Set up your environment](#step-0-set-up-your-environment) + - [Step 1: Run the ETL script for each data source](#step-1-run-the-etl-script-for-each-data-source) + - [Step 2: Calculate the Justice40 score experiments](#step-2-calculate-the-justice40-score-experiments) + - [Step 3: Compare the Justice40 score experiments to other indices](#step-3-compare-the-justice40-score-experiments-to-other-indices) + - [Data Sources](#data-sources) + - [Running using Docker](#running-using-docker) + - [Local development](#local-development) + - [Windows Users](#windows-users) + - [Setting up Poetry](#setting-up-poetry) + - [Downloading Census Block Groups GeoJSON and Generating CBG CSVs](#downloading-census-block-groups-geojson-and-generating-cbg-csvs) + - [Generating mbtiles](#generating-mbtiles) + - [Serve the map locally](#serve-the-map-locally) + - [Running Jupyter notebooks](#running-jupyter-notebooks) + - [Activating variable-enabled Markdown for Jupyter notebooks](#activating-variable-enabled-markdown-for-jupyter-notebooks) + - [Miscellaneous](#miscellaneous) @@ -33,8 +35,12 @@ This application is used to compare experimental versions of the Justice40 score _**NOTE:** These scores **do not** represent final versions of the Justice40 scores and are merely used for comparative purposes. As a result, the specific input columns and formulas used to calculate them are likely to change over time._ +<<<<<<< Updated upstream ### Score generation and comparison workflow +======= +### Score comparison workflow +>>>>>>> Stashed changes The descriptions below provide a more detailed outline of what happens at each step of ETL and score calculation workflow. @@ -44,11 +50,14 @@ TODO add mermaid diagram #### Step 0: Set up your environment +<<<<<<< Updated upstream 1. After cloning the project locally, change to this directory: `cd data/data-pipeline` +======= +1. After cloning the project locally, change to this directory: `cd data` +>>>>>>> Stashed changes 1. Choose whether you'd like to run this application using Docker or if you'd like to install the dependencies locally so you can contribute to the project. - - **With Docker:** Follow these [installation instructions](https://docs.docker.com/get-docker/) and skip down to the [Running with Docker section](#running-with-docker) for more information - - **For Local Development:** Skip down to the [Local Development section](#local-development) for more detailed installation instructions - + - **With Docker:** Follow these [installation instructions](https://docs.docker.com/get-docker/) and skip down to the [Running with Docker section](#running-with-docker) for more information + - **For Local Development:** Skip down to the [Local Development section](#local-development) for more detailed installation instructions #### Step 1: Run the ETL script for each data source @@ -68,8 +77,8 @@ _For example: `poetry run python application.py etl-run -d ejscreen` would only - With Poetry: `poetry run python application.py score-run` 1. The `score-run` command will execute the `etl/score/etl.py` script which loads the data from each of the source files added to the `data/dataset/` directory by the ETL scripts in Step 1. 1. These data sets are merged into a single dataframe using their Census Block Group GEOID as a common key, and the data in each of the columns is standardized in two ways: - - Their [percentile rank](https://en.wikipedia.org/wiki/Percentile_rank) is calculated, which tells us what percentage of other Census Block Groups have a lower value for that particular column. - - They are normalized using [min-max normalization](https://en.wikipedia.org/wiki/Feature_scaling), which adjusts the scale of the data so that the Census Block Group with the highest value for that column is set to 1, the Census Block Group with the lowest value is set to 0, and all of the other values are adjusted to fit within that range based on how close they were to the highest or lowest value. + - Their [percentile rank](https://en.wikipedia.org/wiki/Percentile_rank) is calculated, which tells us what percentage of other Census Block Groups have a lower value for that particular column. + - They are normalized using [min-max normalization](https://en.wikipedia.org/wiki/Feature_scaling), which adjusts the scale of the data so that the Census Block Group with the highest value for that column is set to 1, the Census Block Group with the lowest value is set to 0, and all of the other values are adjusted to fit within that range based on how close they were to the highest or lowest value. 1. The standardized columns are then used to calculate each of the Justice40 score experiments described in greater detail below, and the results are exported to a `.csv` file in [`data/score/csv`](data/score/csv) #### Step 3: Compare the Justice40 score experiments to other indices @@ -110,7 +119,6 @@ To run this comparison tool: - **[HUD Recap](etl/sources/hud_recap):** TODO Add description of data source - **[CalEnviroScreen](etl/scores/calenviroscreen):** TODO Add description of data source - ## Running using Docker We use Docker to install the necessary libraries in a container that can be run in any operating system. @@ -136,6 +144,7 @@ Here's a list of commands: You can run the Python code locally without Docker to develop, using Poetry. However, to generate the census data you will need the [GDAL library](https://github.com/OSGeo/gdal) installed locally. Also to generate tiles for a local map, you will need [Mapbox tippeanoe](https://github.com/mapbox/tippecanoe). Please refer to the repos for specific instructions for your OS. ### Windows Users + - If you want to download Census data or run tile generation, please install TippeCanoe [following these instrcutions](https://github.com/GISupportICRC/ArcGIS2Mapbox#installing-tippecanoe-on-windows). - If you want to generate tiles, you need some pre-requisites for Geopandas as specified in the Poetry requirements. Please follow [these instructions](https://stackoverflow.com/questions/56958421/pip-install-geopandas-on-windows) to install the Geopandas dependency locally. diff --git a/data/data-pipeline/data/census/csv/fips_states_2010.csv b/data/data-pipeline/data/census/csv/fips_states_2010.csv deleted file mode 100644 index 006a2dac..00000000 --- a/data/data-pipeline/data/census/csv/fips_states_2010.csv +++ /dev/null @@ -1,53 +0,0 @@ -fips,state_name,state_abbreviation,region,division -01,Alabama,AL,South,East South Central -02,Alaska,AK,West,Pacific -04,Arizona,AZ,West,Mountain -05,Arkansas,AR,South,West South Central -06,California,CA,West,Pacific -08,Colorado,CO,West,Mountain -09,Connecticut,CT,Northeast,New England -10,Delaware,DE,South,South Atlantic -11,District of Columbia,DC,South,South Atlantic -12,Florida,FL,South,South Atlantic -13,Georgia,GA,South,South Atlantic -15,Hawaii,HI,West,Pacific -16,Idaho,ID,West,Mountain -17,Illinois,IL,Midwest,East North Central -18,Indiana,IN,Midwest,East North Central -19,Iowa,IA,Midwest,West North Central -20,Kansas,KS,Midwest,West North Central -21,Kentucky,KY,South,East South Central -22,Louisiana,LA,South,West South Central -23,Maine,ME,Northeast,New England -24,Maryland,MD,South,South Atlantic -25,Massachusetts,MA,Northeast,New England -26,Michigan,MI,Midwest,East North Central -27,Minnesota,MN,Midwest,West North Central -28,Mississippi,MS,South,East South Central -29,Missouri,MO,Midwest,West North Central -30,Montana,MT,West,Mountain -31,Nebraska,NE,Midwest,West North Central -32,Nevada,NV,West,Mountain -33,New Hampshire,NH,Northeast,New England -34,New Jersey,NJ,Northeast,Middle Atlantic -35,New Mexico,NM,West,Mountain -36,New York,NY,Northeast,Middle Atlantic -37,North Carolina,NC,South,South Atlantic -38,North Dakota,ND,Midwest,West North Central -39,Ohio,OH,Midwest,East North Central -40,Oklahoma,OK,South,West South Central -41,Oregon,OR,West,Pacific -42,Pennsylvania,PA,Northeast,Middle Atlantic -44,Rhode Island,RI,Northeast,New England -45,South Carolina,SC,South,South Atlantic -46,South Dakota,SD,Midwest,West North Central -47,Tennessee,TN,South,East South Central -48,Texas,TX,South,West South Central -49,Utah,UT,West,Mountain -50,Vermont,VT,Northeast,New England -51,Virginia,VA,South,South Atlantic -53,Washington,WA,West,Pacific -54,West Virginia,WV,South,South Atlantic -55,Wisconsin,WI,Midwest,East North Central -56,Wyoming,WY,West,Mountain -72,Puerto Rico,PR,Puerto Rico,Puerto Rico diff --git a/data/data-pipeline/__init__.py b/data/data-pipeline/data_pipeline/__init__.py similarity index 100% rename from data/data-pipeline/__init__.py rename to data/data-pipeline/data_pipeline/__init__.py diff --git a/data/data-pipeline/application.py b/data/data-pipeline/data_pipeline/application.py similarity index 87% rename from data/data-pipeline/application.py rename to data/data-pipeline/data_pipeline/application.py index 426fd9db..53dd9edb 100644 --- a/data/data-pipeline/application.py +++ b/data/data-pipeline/data_pipeline/application.py @@ -1,16 +1,16 @@ import click -from config import settings -from utils import ( - get_module_logger, +from .config import settings +from .etl.runner import etl_runner, score_generate, score_geo +from .etl.sources.census.etl import download_census_csvs +from .etl.sources.census.etl_utils import reset_data_directories as census_reset +from .tile.generate import generate_tiles +from .utils import ( data_folder_cleanup, + get_module_logger, score_folder_cleanup, temp_folder_cleanup, ) -from etl.sources.census.etl import download_census_csvs -from etl.sources.census.etl_utils import reset_data_directories as census_reset -from etl.runner import etl_runner, score_generate, score_geo -from tile.generate import generate_tiles logger = get_module_logger(__name__) diff --git a/data/data-pipeline/config.py b/data/data-pipeline/data_pipeline/config.py similarity index 76% rename from data/data-pipeline/config.py rename to data/data-pipeline/data_pipeline/config.py index b3effbef..6b8d956f 100644 --- a/data/data-pipeline/config.py +++ b/data/data-pipeline/data_pipeline/config.py @@ -1,4 +1,5 @@ from pathlib import Path +from importlib.resources import path from dynaconf import Dynaconf @@ -9,7 +10,8 @@ settings = Dynaconf( ) # set root dir -settings.APP_ROOT = Path.cwd() +with path(__package__, ".") as p: + settings.APP_ROOT = p # To set an environment use: # Linux/OSX: export ENV_FOR_DYNACONF=staging diff --git a/data/data-pipeline/data/census/__init__.py b/data/data-pipeline/data_pipeline/data/census/__init__.py similarity index 100% rename from data/data-pipeline/data/census/__init__.py rename to data/data-pipeline/data_pipeline/data/census/__init__.py diff --git a/data/data-pipeline/data/census/csv/__init__.py b/data/data-pipeline/data_pipeline/data/census/csv/__init__.py similarity index 100% rename from data/data-pipeline/data/census/csv/__init__.py rename to data/data-pipeline/data_pipeline/data/census/csv/__init__.py diff --git a/data/data-pipeline/data/census/geojson/__init__.py b/data/data-pipeline/data_pipeline/data/census/geojson/__init__.py similarity index 100% rename from data/data-pipeline/data/census/geojson/__init__.py rename to data/data-pipeline/data_pipeline/data/census/geojson/__init__.py diff --git a/data/data-pipeline/data/census/shp/__init__.py b/data/data-pipeline/data_pipeline/data/census/shp/__init__.py similarity index 100% rename from data/data-pipeline/data/census/shp/__init__.py rename to data/data-pipeline/data_pipeline/data/census/shp/__init__.py diff --git a/data/data-pipeline/data/dataset/__init__.py b/data/data-pipeline/data_pipeline/data/dataset/__init__.py similarity index 100% rename from data/data-pipeline/data/dataset/__init__.py rename to data/data-pipeline/data_pipeline/data/dataset/__init__.py diff --git a/data/data-pipeline/data/score/csv/__init__.py b/data/data-pipeline/data_pipeline/data/score/csv/__init__.py similarity index 100% rename from data/data-pipeline/data/score/csv/__init__.py rename to data/data-pipeline/data_pipeline/data/score/csv/__init__.py diff --git a/data/data-pipeline/data/score/geojson/__init__.py b/data/data-pipeline/data_pipeline/data/score/geojson/__init__.py similarity index 100% rename from data/data-pipeline/data/score/geojson/__init__.py rename to data/data-pipeline/data_pipeline/data/score/geojson/__init__.py diff --git a/data/data-pipeline/data/score/tiles/__init__.py b/data/data-pipeline/data_pipeline/data/tiles/__init__.py similarity index 100% rename from data/data-pipeline/data/score/tiles/__init__.py rename to data/data-pipeline/data_pipeline/data/tiles/__init__.py diff --git a/data/data-pipeline/data/tiles/__init__.py b/data/data-pipeline/data_pipeline/data/tmp/__init__.py similarity index 100% rename from data/data-pipeline/data/tiles/__init__.py rename to data/data-pipeline/data_pipeline/data/tmp/__init__.py diff --git a/data/data-pipeline/data/tmp/__init__.py b/data/data-pipeline/data_pipeline/etl/__init__.py similarity index 100% rename from data/data-pipeline/data/tmp/__init__.py rename to data/data-pipeline/data_pipeline/etl/__init__.py diff --git a/data/data-pipeline/etl/base.py b/data/data-pipeline/data_pipeline/etl/base.py similarity index 94% rename from data/data-pipeline/etl/base.py rename to data/data-pipeline/data_pipeline/etl/base.py index 313223ef..25470099 100644 --- a/data/data-pipeline/etl/base.py +++ b/data/data-pipeline/data_pipeline/etl/base.py @@ -1,7 +1,7 @@ from pathlib import Path -from config import settings -from utils import unzip_file_from_url, remove_all_from_dir +from data_pipeline.config import settings +from data_pipeline.utils import unzip_file_from_url, remove_all_from_dir class ExtractTransformLoad: diff --git a/data/data-pipeline/etl/runner.py b/data/data-pipeline/data_pipeline/etl/runner.py similarity index 90% rename from data/data-pipeline/etl/runner.py rename to data/data-pipeline/data_pipeline/etl/runner.py index e1015c86..093012de 100644 --- a/data/data-pipeline/etl/runner.py +++ b/data/data-pipeline/data_pipeline/etl/runner.py @@ -1,8 +1,8 @@ import importlib -from etl.score.etl_score import ScoreETL -from etl.score.etl_score_post import PostScoreETL -from etl.score.etl_score_geo import GeoScoreETL +from data_pipeline.etl.score.etl_score import ScoreETL +from data_pipeline.etl.score.etl_score_geo import GeoScoreETL +from data_pipeline.etl.score.etl_score_post import PostScoreETL def etl_runner(dataset_to_run: str = None) -> None: @@ -67,7 +67,9 @@ def etl_runner(dataset_to_run: str = None) -> None: # Run the ETLs for the dataset_list for dataset in dataset_list: - etl_module = importlib.import_module(f"etl.sources.{dataset['module_dir']}.etl") + etl_module = importlib.import_module( + f"data_pipeline.etl.sources.{dataset['module_dir']}.etl" + ) etl_class = getattr(etl_module, dataset["class_name"]) etl_instance = etl_class() diff --git a/data/data-pipeline/etl/__init__.py b/data/data-pipeline/data_pipeline/etl/score/__init__.py similarity index 100% rename from data/data-pipeline/etl/__init__.py rename to data/data-pipeline/data_pipeline/etl/score/__init__.py diff --git a/data/data-pipeline/etl/score/etl_score.py b/data/data-pipeline/data_pipeline/etl/score/etl_score.py similarity index 99% rename from data/data-pipeline/etl/score/etl_score.py rename to data/data-pipeline/data_pipeline/etl/score/etl_score.py index c4d7de64..98e61260 100644 --- a/data/data-pipeline/etl/score/etl_score.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score.py @@ -1,9 +1,9 @@ import collections import functools -import pandas as pd -from etl.base import ExtractTransformLoad -from utils import get_module_logger +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/score/etl_score_geo.py b/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py similarity index 97% rename from data/data-pipeline/etl/score/etl_score_geo.py rename to data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py index a5b9ddde..ead15fe0 100644 --- a/data/data-pipeline/etl/score/etl_score_geo.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score_geo.py @@ -3,8 +3,8 @@ import math import pandas as pd import geopandas as gpd -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) @@ -156,4 +156,4 @@ class GeoScoreETL(ExtractTransformLoad): logger.info("Writing usa-low (~9 minutes)") self.geojson_score_usa_low.to_file(self.SCORE_LOW_GEOJSON, driver="GeoJSON") - logger.info("Completed writing usa-low") + logger.info("Completed writing usa-low") \ No newline at end of file diff --git a/data/data-pipeline/etl/score/etl_score_post.py b/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py similarity index 97% rename from data/data-pipeline/etl/score/etl_score_post.py rename to data/data-pipeline/data_pipeline/etl/score/etl_score_post.py index 3b5dff8e..9f3365f8 100644 --- a/data/data-pipeline/etl/score/etl_score_post.py +++ b/data/data-pipeline/data_pipeline/etl/score/etl_score_post.py @@ -1,7 +1,7 @@ import pandas as pd -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/score/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/__init__.py similarity index 100% rename from data/data-pipeline/etl/score/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/__init__.py diff --git a/data/data-pipeline/etl/sources/calenviroscreen/README.md b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/README.md similarity index 100% rename from data/data-pipeline/etl/sources/calenviroscreen/README.md rename to data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/README.md diff --git a/data/data-pipeline/etl/sources/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/__init__.py diff --git a/data/data-pipeline/etl/sources/calenviroscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py similarity index 96% rename from data/data-pipeline/etl/sources/calenviroscreen/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py index db3ab31b..63a40f62 100644 --- a/data/data-pipeline/etl/sources/calenviroscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/calenviroscreen/etl.py @@ -1,7 +1,7 @@ import pandas as pd -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/census/README.md b/data/data-pipeline/data_pipeline/etl/sources/census/README.md similarity index 100% rename from data/data-pipeline/etl/sources/census/README.md rename to data/data-pipeline/data_pipeline/etl/sources/census/README.md diff --git a/data/data-pipeline/etl/sources/calenviroscreen/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/census/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/calenviroscreen/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/census/__init__.py diff --git a/data/data-pipeline/etl/sources/census/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census/etl.py similarity index 98% rename from data/data-pipeline/etl/sources/census/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/census/etl.py index 38c3ce37..5e70dbd9 100644 --- a/data/data-pipeline/etl/sources/census/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census/etl.py @@ -1,11 +1,11 @@ -import os import csv import json +import os from pathlib import Path import geopandas as gpd +from data_pipeline.utils import get_module_logger, unzip_file_from_url -from utils import unzip_file_from_url, get_module_logger from .etl_utils import get_state_fips_codes logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/census/etl_utils.py b/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py similarity index 96% rename from data/data-pipeline/etl/sources/census/etl_utils.py rename to data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py index 625cd923..786cd4ab 100644 --- a/data/data-pipeline/etl/sources/census/etl_utils.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census/etl_utils.py @@ -1,15 +1,14 @@ -import os import csv - +import os from pathlib import Path -import pandas as pd -from config import settings -from utils import ( - remove_files_from_dir, - remove_all_dirs_from_dir, - unzip_file_from_url, +import pandas as pd +from data_pipeline.config import settings +from data_pipeline.utils import ( get_module_logger, + remove_all_dirs_from_dir, + remove_files_from_dir, + unzip_file_from_url, ) logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/census_acs/README.md b/data/data-pipeline/data_pipeline/etl/sources/census_acs/README.md similarity index 100% rename from data/data-pipeline/etl/sources/census_acs/README.md rename to data/data-pipeline/data_pipeline/etl/sources/census_acs/README.md diff --git a/data/data-pipeline/etl/sources/census/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/census/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/census_acs/__init__.py diff --git a/data/data-pipeline/etl/sources/census_acs/etl.py b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py similarity index 94% rename from data/data-pipeline/etl/sources/census_acs/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py index cb967365..dd7e37f9 100644 --- a/data/data-pipeline/etl/sources/census_acs/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/census_acs/etl.py @@ -1,9 +1,9 @@ import pandas as pd import censusdata -from etl.base import ExtractTransformLoad -from etl.sources.census.etl_utils import get_state_fips_codes -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/ejscreen/README.md b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/README.md similarity index 100% rename from data/data-pipeline/etl/sources/ejscreen/README.md rename to data/data-pipeline/data_pipeline/etl/sources/ejscreen/README.md diff --git a/data/data-pipeline/etl/sources/census_acs/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/census_acs/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/ejscreen/__init__.py diff --git a/data/data-pipeline/etl/sources/ejscreen/etl.py b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py similarity index 91% rename from data/data-pipeline/etl/sources/ejscreen/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py index cbea6ff5..fd69f3ec 100644 --- a/data/data-pipeline/etl/sources/ejscreen/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/ejscreen/etl.py @@ -1,7 +1,7 @@ import pandas as pd -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/housing_and_transportation/README.md b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/README.md similarity index 100% rename from data/data-pipeline/etl/sources/housing_and_transportation/README.md rename to data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/README.md diff --git a/data/data-pipeline/etl/sources/ejscreen/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/ejscreen/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/__init__.py diff --git a/data/data-pipeline/etl/sources/housing_and_transportation/etl.py b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py similarity index 89% rename from data/data-pipeline/etl/sources/housing_and_transportation/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py index a346d932..911a2048 100644 --- a/data/data-pipeline/etl/sources/housing_and_transportation/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/housing_and_transportation/etl.py @@ -1,8 +1,8 @@ import pandas as pd -from etl.base import ExtractTransformLoad -from etl.sources.census.etl_utils import get_state_fips_codes -from utils import get_module_logger, unzip_file_from_url +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes +from data_pipeline.utils import get_module_logger, unzip_file_from_url logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/hud_housing/README.md b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/README.md similarity index 100% rename from data/data-pipeline/etl/sources/hud_housing/README.md rename to data/data-pipeline/data_pipeline/etl/sources/hud_housing/README.md diff --git a/data/data-pipeline/etl/sources/housing_and_transportation/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/housing_and_transportation/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/hud_housing/__init__.py diff --git a/data/data-pipeline/etl/sources/hud_housing/etl.py b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py similarity index 98% rename from data/data-pipeline/etl/sources/hud_housing/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py index 8d4e4f7a..3cc2f2af 100644 --- a/data/data-pipeline/etl/sources/hud_housing/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/hud_housing/etl.py @@ -1,7 +1,6 @@ import pandas as pd - -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/hud_recap/README.md b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/README.md similarity index 100% rename from data/data-pipeline/etl/sources/hud_recap/README.md rename to data/data-pipeline/data_pipeline/etl/sources/hud_recap/README.md diff --git a/data/data-pipeline/etl/sources/hud_housing/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/hud_housing/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/hud_recap/__init__.py diff --git a/data/data-pipeline/etl/sources/hud_recap/etl.py b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py similarity index 95% rename from data/data-pipeline/etl/sources/hud_recap/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py index 701b91cd..e40abbfd 100644 --- a/data/data-pipeline/etl/sources/hud_recap/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/hud_recap/etl.py @@ -1,8 +1,8 @@ import pandas as pd import requests -from etl.base import ExtractTransformLoad -from utils import get_module_logger +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/etl/sources/tree_equity_score/README.md b/data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/README.md similarity index 100% rename from data/data-pipeline/etl/sources/tree_equity_score/README.md rename to data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/README.md diff --git a/data/data-pipeline/etl/sources/hud_recap/__init__.py b/data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/hud_recap/__init__.py rename to data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/__init__.py diff --git a/data/data-pipeline/etl/sources/tree_equity_score/etl.py b/data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/etl.py similarity index 95% rename from data/data-pipeline/etl/sources/tree_equity_score/etl.py rename to data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/etl.py index e080710a..a4351bf8 100644 --- a/data/data-pipeline/etl/sources/tree_equity_score/etl.py +++ b/data/data-pipeline/data_pipeline/etl/sources/tree_equity_score/etl.py @@ -1,8 +1,7 @@ -import pandas as pd import geopandas as gpd - -from etl.base import ExtractTransformLoad -from utils import get_module_logger +import pandas as pd +from data_pipeline.etl.base import ExtractTransformLoad +from data_pipeline.utils import get_module_logger logger = get_module_logger(__name__) diff --git a/data/data-pipeline/ipython/ACS Validate.ipynb b/data/data-pipeline/data_pipeline/ipython/ACS Validate.ipynb similarity index 100% rename from data/data-pipeline/ipython/ACS Validate.ipynb rename to data/data-pipeline/data_pipeline/ipython/ACS Validate.ipynb diff --git a/data/data-pipeline/ipython/EJScreen Validate.ipynb b/data/data-pipeline/data_pipeline/ipython/EJScreen Validate.ipynb similarity index 100% rename from data/data-pipeline/ipython/EJScreen Validate.ipynb rename to data/data-pipeline/data_pipeline/ipython/EJScreen Validate.ipynb diff --git a/data/data-pipeline/ipython/Score Validate.ipynb b/data/data-pipeline/data_pipeline/ipython/Score Validate.ipynb similarity index 100% rename from data/data-pipeline/ipython/Score Validate.ipynb rename to data/data-pipeline/data_pipeline/ipython/Score Validate.ipynb diff --git a/data/data-pipeline/ipython/Score_Dissolve_Script.ipynb b/data/data-pipeline/data_pipeline/ipython/Score_Dissolve_Script.ipynb similarity index 100% rename from data/data-pipeline/ipython/Score_Dissolve_Script.ipynb rename to data/data-pipeline/data_pipeline/ipython/Score_Dissolve_Script.ipynb diff --git a/data/data-pipeline/ipython/county_lookup.ipynb b/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb similarity index 85% rename from data/data-pipeline/ipython/county_lookup.ipynb rename to data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb index 8c4dd6f7..5cc1ab1a 100644 --- a/data/data-pipeline/ipython/county_lookup.ipynb +++ b/data/data-pipeline/data_pipeline/ipython/county_lookup.ipynb @@ -3,38 +3,33 @@ { "cell_type": "code", "execution_count": null, - "id": "7185e18d", - "metadata": {}, - "outputs": [], "source": [ "import pandas as pd\n", "import csv\n", "from pathlib import Path\n", "import os\n", "import sys" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "174bbd09", - "metadata": {}, - "outputs": [], "source": [ "module_path = os.path.abspath(os.path.join(\"..\"))\n", "if module_path not in sys.path:\n", " sys.path.append(module_path)\n", " \n", - "from utils import unzip_file_from_url\n", - "from etl.sources.census.etl_utils import get_state_fips_codes" - ] + "from data_pipeline.utils import unzip_file_from_url\n", + "from data_pipeline.etl.sources.census.etl_utils import get_state_fips_codes" + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "dd090fcc", - "metadata": {}, - "outputs": [], "source": [ "DATA_PATH = Path.cwd().parent / \"data\"\n", "TMP_PATH: Path = DATA_PATH / \"tmp\"\n", @@ -43,98 +38,92 @@ "COUNTY_SCORE_CSV = DATA_PATH / \"score\" / \"csv\" / \"usa-county.csv\"\n", "CENSUS_COUNTIES_ZIP_URL = \"https://www2.census.gov/geo/docs/maps-data/data/gazetteer/2020_Gazetteer/2020_Gaz_counties_national.zip\"\n", "CENSUS_COUNTIES_TXT = TMP_PATH / \"2020_Gaz_counties_national.txt\"" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "cf2e266b", - "metadata": { - "scrolled": true - }, - "outputs": [], "source": [ "unzip_file_from_url(CENSUS_COUNTIES_ZIP_URL, TMP_PATH, TMP_PATH)" - ] + ], + "outputs": [], + "metadata": { + "scrolled": true + } }, { "cell_type": "code", "execution_count": null, - "id": "9ff96da8", - "metadata": {}, - "outputs": [], "source": [ "counties_df = pd.read_csv(CENSUS_COUNTIES_TXT, sep=\"\\t\", dtype={\"GEOID\": \"string\", \"USPS\": \"string\"}, low_memory=False)\n", "counties_df = counties_df[['USPS', 'GEOID', 'NAME']]\n", "counties_df.rename(columns={\"USPS\": \"State Abbreviation\", \"NAME\": \"County Name\"}, inplace=True)\n", "counties_df.head()" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "5af103da", - "metadata": {}, - "outputs": [], "source": [ "states_df = pd.read_csv(STATE_CSV, dtype={\"fips\": \"string\", \"state_abbreviation\": \"string\"})\n", "states_df.rename(columns={\"fips\": \"State Code\", \"state_name\": \"State Name\", \"state_abbreviation\": \"State Abbreviation\"}, inplace=True)\n", "states_df.head()" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "c8680258", - "metadata": {}, - "outputs": [], "source": [ "county_state_merged = counties_df.join(states_df, rsuffix=' Other')\n", "del county_state_merged[\"State Abbreviation Other\"]\n", "county_state_merged.head()" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "58dca55a", - "metadata": {}, - "outputs": [], "source": [ "score_df = pd.read_csv(SCORE_CSV, dtype={\"GEOID10\": \"string\"})\n", "score_df[\"GEOID\"] = score_df.GEOID10.str[:5]\n", "score_df.head()" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "45e04d42", - "metadata": {}, - "outputs": [], "source": [ "score_county_state_merged = score_df.join(county_state_merged, rsuffix='_OTHER')\n", "del score_county_state_merged[\"GEOID_OTHER\"]\n", "score_county_state_merged.head()" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "a5a0b32b", - "metadata": {}, - "outputs": [], "source": [ "score_county_state_merged.to_csv(COUNTY_SCORE_CSV, index=False)" - ] + ], + "outputs": [], + "metadata": {} }, { "cell_type": "code", "execution_count": null, - "id": "b690937e", - "metadata": {}, + "source": [], "outputs": [], - "source": [] + "metadata": {} } ], "metadata": { @@ -158,4 +147,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/data/data-pipeline/ipython/scoring_comparison.ipynb b/data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb similarity index 100% rename from data/data-pipeline/ipython/scoring_comparison.ipynb rename to data/data-pipeline/data_pipeline/ipython/scoring_comparison.ipynb diff --git a/data/data-pipeline/etl/sources/tree_equity_score/__init__.py b/data/data-pipeline/data_pipeline/tile/__init__.py similarity index 100% rename from data/data-pipeline/etl/sources/tree_equity_score/__init__.py rename to data/data-pipeline/data_pipeline/tile/__init__.py diff --git a/data/data-pipeline/tile/generate.py b/data/data-pipeline/data_pipeline/tile/generate.py similarity index 96% rename from data/data-pipeline/tile/generate.py rename to data/data-pipeline/data_pipeline/tile/generate.py index 788bb1c0..4710bc8d 100644 --- a/data/data-pipeline/tile/generate.py +++ b/data/data-pipeline/data_pipeline/tile/generate.py @@ -1,9 +1,8 @@ -from pathlib import Path import os +from pathlib import Path from subprocess import call -from utils import remove_all_from_dir -from utils import get_module_logger +from data_pipeline.utils import get_module_logger, remove_all_from_dir logger = get_module_logger(__name__) diff --git a/data/data-pipeline/utils.py b/data/data-pipeline/data_pipeline/utils.py similarity index 99% rename from data/data-pipeline/utils.py rename to data/data-pipeline/data_pipeline/utils.py index 44f4c283..807d9ebe 100644 --- a/data/data-pipeline/utils.py +++ b/data/data-pipeline/data_pipeline/utils.py @@ -1,13 +1,13 @@ -from pathlib import Path -import os import logging +import os import shutil import zipfile -import urllib3 +from pathlib import Path import requests +import urllib3 -from config import settings +from .config import settings def get_module_logger(module_name: str) -> logging.Logger: diff --git a/data/data-pipeline/poetry.lock b/data/data-pipeline/poetry.lock index 9b9e10ad..eafd0657 100644 --- a/data/data-pipeline/poetry.lock +++ b/data/data-pipeline/poetry.lock @@ -33,7 +33,7 @@ tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pytest"] [[package]] name = "astroid" -version = "2.6.5" +version = "2.6.6" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -53,6 +53,14 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "atomicwrites" +version = "1.4.0" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + [[package]] name = "attrs" version = "21.2.0" @@ -116,11 +124,11 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "3.3.1" +version = "4.0.0" description = "An easy safelist-based HTML-sanitizing tool." category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" [package.dependencies] packaging = "*" @@ -129,7 +137,7 @@ webencodings = "*" [[package]] name = "censusdata" -version = "1.13" +version = "1.14" description = "Download data from U.S. Census API" category = "main" optional = false @@ -160,7 +168,7 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.3" +version = "2.0.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false @@ -231,7 +239,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pyt [[package]] name = "debugpy" -version = "1.4.0" +version = "1.4.1" description = "An implementation of the Debug Adapter Protocol for Python" category = "main" optional = false @@ -385,6 +393,14 @@ zipp = ">=0.5" docs = ["sphinx", "jaraco.packaging (>=8.2)", "rst.linker (>=1.9)"] testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.0.1)", "packaging", "pep517", "pyfakefs", "flufl.flake8", "pytest-black (>=0.3.7)", "pytest-mypy", "importlib-resources (>=1.3)"] +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "ipykernel" version = "6.0.3" @@ -408,7 +424,7 @@ test = ["pytest (!=5.3.4)", "pytest-cov", "flaky", "nose", "ipyparallel"] [[package]] name = "ipython" -version = "7.25.0" +version = "7.26.0" description = "IPython: Productive Interactive Computing" category = "main" optional = false @@ -932,7 +948,7 @@ pyparsing = ">=2.0.2" [[package]] name = "pandas" -version = "1.3.0" +version = "1.3.1" description = "Powerful data structures for data analysis, time series, and statistics" category = "main" optional = false @@ -995,11 +1011,15 @@ python-versions = "*" [[package]] name = "platformdirs" -version = "2.0.2" +version = "2.2.0" description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.6" + +[package.extras] +docs = ["Sphinx (>=4)", "furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)"] +test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"] [[package]] name = "pluggy" @@ -1127,6 +1147,28 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "pytest" +version = "6.2.4" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<1.0.0a1" +py = ">=1.8.2" +toml = "*" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + [[package]] name = "python-dateutil" version = "2.8.2" @@ -1172,7 +1214,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" [[package]] name = "pyzmq" -version = "22.1.0" +version = "22.2.0" description = "Python bindings for 0MQ" category = "main" optional = false @@ -1214,7 +1256,7 @@ python-versions = "*" [[package]] name = "regex" -version = "2021.7.6" +version = "2021.8.3" description = "Alternative regular expression module, to replace re." category = "dev" optional = false @@ -1329,7 +1371,7 @@ python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" [[package]] name = "tomli" -version = "1.1.0" +version = "1.2.0" description = "A lil' TOML parser" category = "dev" optional = false @@ -1345,7 +1387,7 @@ python-versions = ">= 3.5" [[package]] name = "tox" -version = "3.24.0" +version = "3.24.1" description = "tox is a generic virtualenv management and test command line tool" category = "dev" optional = false @@ -1390,7 +1432,7 @@ python-versions = "*" [[package]] name = "types-requests" -version = "2.25.0" +version = "2.25.2" description = "Typing stubs for requests" category = "main" optional = false @@ -1419,7 +1461,7 @@ socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "virtualenv" -version = "20.6.0" +version = "20.7.0" description = "Virtual Python Environment builder" category = "dev" optional = false @@ -1435,7 +1477,7 @@ six = ">=1.9.0,<2" [package.extras] docs = ["proselint (>=0.10.2)", "sphinx (>=3)", "sphinx-argparse (>=0.2.5)", "sphinx-rtd-theme (>=0.4.3)", "towncrier (>=19.9.0rc1)"] -testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)", "xonsh (>=0.9.16)"] +testing = ["coverage (>=4)", "coverage-enable-subprocess (>=1)", "flaky (>=3)", "pytest (>=4)", "pytest-env (>=0.6.2)", "pytest-freezegun (>=0.4.1)", "pytest-mock (>=2)", "pytest-randomly (>=1)", "pytest-timeout (>=1)", "packaging (>=20.0)"] [[package]] name = "wcwidth" @@ -1487,7 +1529,7 @@ testing = ["pytest (>=4.6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytes [metadata] lock-version = "1.1" python-versions = "^3.7.1" -content-hash = "705b0cf25d9ecd3028ba5b71581b5139608cb3b0b4d13c4817b4f3a49643308c" +content-hash = "6fcf0825ce80c30181c920385d4e9b5e79ac6930b9a59526a916703795977f76" [metadata.files] appdirs = [ @@ -1523,13 +1565,17 @@ argon2-cffi = [ {file = "argon2_cffi-20.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:36320372133a003374ef4275fbfce78b7ab581440dfca9f9471be3dd9a522428"}, ] astroid = [ - {file = "astroid-2.6.5-py3-none-any.whl", hash = "sha256:7b963d1c590d490f60d2973e57437115978d3a2529843f160b5003b721e1e925"}, - {file = "astroid-2.6.5.tar.gz", hash = "sha256:83e494b02d75d07d4e347b27c066fd791c0c74fc96c613d1ea3de0c82c48168f"}, + {file = "astroid-2.6.6-py3-none-any.whl", hash = "sha256:ab7f36e8a78b8e54a62028ba6beef7561db4cdb6f2a5009ecc44a6f42b5697ef"}, + {file = "astroid-2.6.6.tar.gz", hash = "sha256:3975a0bd5373bdce166e60c851cfcbaf21ee96de80ec518c1f4cb3e94c3fb334"}, ] async-generator = [ {file = "async_generator-1.10-py3-none-any.whl", hash = "sha256:01c7bf666359b4967d2cda0000cc2e4af16a0ae098cbffcb8472fb9e8ad6585b"}, {file = "async_generator-1.10.tar.gz", hash = "sha256:6ebb3d106c12920aaae42ccb6f787ef5eefdcdd166ea3d628fa8476abe712144"}, ] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] attrs = [ {file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, {file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, @@ -1547,11 +1593,11 @@ black = [ {file = "black-21.7b0.tar.gz", hash = "sha256:c8373c6491de9362e39271630b65b964607bc5c79c83783547d76c839b3aa219"}, ] bleach = [ - {file = "bleach-3.3.1-py2.py3-none-any.whl", hash = "sha256:ae976d7174bba988c0b632def82fdc94235756edfb14e6558a9c5be555c9fb78"}, - {file = "bleach-3.3.1.tar.gz", hash = "sha256:306483a5a9795474160ad57fce3ddd1b50551e981eed8e15a582d34cef28aafa"}, + {file = "bleach-4.0.0-py2.py3-none-any.whl", hash = "sha256:c1685a132e6a9a38bf93752e5faab33a9517a6c0bb2f37b785e47bf253bdb51d"}, + {file = "bleach-4.0.0.tar.gz", hash = "sha256:ffa9221c6ac29399cc50fcc33473366edd0cf8d5e2cbbbb63296dc327fb67cc8"}, ] censusdata = [ - {file = "CensusData-1.13.tar.gz", hash = "sha256:c2cc6ea93cb704f84fe4dda84925884c220bdf5dc8e5dd1a4b63a068f6a16ba8"}, + {file = "CensusData-1.14.tar.gz", hash = "sha256:fd7bf06c797070d23df98cbaa60897ee98b265724e6d582b421b25f0f4cfcff6"}, ] certifi = [ {file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"}, @@ -1565,11 +1611,6 @@ cffi = [ {file = "cffi-1.14.6-cp27-cp27m-win_amd64.whl", hash = "sha256:7bcac9a2b4fdbed2c16fa5681356d7121ecabf041f18d97ed5b8e0dd38a80224"}, {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:ed38b924ce794e505647f7c331b22a693bee1538fdf46b0222c4717b42f744e7"}, {file = "cffi-1.14.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:e22dcb48709fc51a7b58a927391b23ab37eb3737a98ac4338e2448bef8559b33"}, - {file = "cffi-1.14.6-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:aedb15f0a5a5949ecb129a82b72b19df97bbbca024081ed2ef88bd5c0a610534"}, - {file = "cffi-1.14.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:48916e459c54c4a70e52745639f1db524542140433599e13911b2f329834276a"}, - {file = "cffi-1.14.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:f627688813d0a4140153ff532537fbe4afea5a3dffce1f9deb7f91f848a832b5"}, - {file = "cffi-1.14.6-cp35-cp35m-win32.whl", hash = "sha256:f0010c6f9d1a4011e429109fda55a225921e3206e7f62a0c22a35344bfd13cca"}, - {file = "cffi-1.14.6-cp35-cp35m-win_amd64.whl", hash = "sha256:57e555a9feb4a8460415f1aac331a2dc833b1115284f7ded7278b54afc5bd218"}, {file = "cffi-1.14.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e8c6a99be100371dbb046880e7a282152aa5d6127ae01783e37662ef73850d8f"}, {file = "cffi-1.14.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:19ca0dbdeda3b2615421d54bef8985f72af6e0c47082a8d26122adac81a95872"}, {file = "cffi-1.14.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d950695ae4381ecd856bcaf2b1e866720e4ab9a1498cba61c602e56630ca7195"}, @@ -1605,8 +1646,8 @@ cffi = [ {file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.3.tar.gz", hash = "sha256:c46c3ace2d744cfbdebceaa3c19ae691f53ae621b39fd7570f59d14fb7f2fd12"}, - {file = "charset_normalizer-2.0.3-py3-none-any.whl", hash = "sha256:88fce3fa5b1a84fdcb3f603d889f723d1dd89b26059d0123ca435570e848d5e1"}, + {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"}, + {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"}, ] click = [ {file = "click-8.0.1-py3-none-any.whl", hash = "sha256:fba402a4a47334742d782209a7c79bc448911afe1149d07bdabdf480b3e2f4b6"}, @@ -1629,62 +1670,62 @@ configparser = [ {file = "configparser-5.0.2.tar.gz", hash = "sha256:85d5de102cfe6d14a5172676f09d19c465ce63d6019cf0a4ef13385fc535e828"}, ] debugpy = [ - {file = "debugpy-1.4.0-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:55d12ee03b3b705af5250b8344a87fbd9bb720d00bd9d281d2998dbf9f60c8d3"}, - {file = "debugpy-1.4.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:712ef6a4be1ee4b9a954c6f36788ac12686dc1d5eeef501e0b81e1c89c16484d"}, - {file = "debugpy-1.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:93596f34a3a27b0023fdb5313600cf25035739e246864d1d6c60d16e2a337e36"}, - {file = "debugpy-1.4.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:651696be9ca40384dd17f048ada32fba9049dec15e7d12be24b0452fd211ea80"}, - {file = "debugpy-1.4.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:07f93fa6c6162e199c4f168619c87ae5f5bca1c1331f46399684bfb38d307fd9"}, - {file = "debugpy-1.4.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d3130bec374b2a07edeeb21b7bd3a88a8b83a37b4adc4c13468c5f40f503825d"}, - {file = "debugpy-1.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:8d77d4a0ab72c5a60df0618385be0562b938f6f5844a7f2f3031fa832167392c"}, - {file = "debugpy-1.4.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:26902ed6f3c794b1e810d03937e269769b950a52427baf8d598b831f347988ea"}, - {file = "debugpy-1.4.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:6644b5fc52ce5ab9ff8396b0d20ae2ea5d8fa4c8f42dd5a3f0355d1fffcb6f40"}, - {file = "debugpy-1.4.0-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:22fc360e62cc3a05aff0540384de877b2fa1697a0f2d02feda33e2ce6c3a0895"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:467410cd8f63a607cc7477a5988f23b6bfdc3f89efd7426e86139df27fc42a9b"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:8f350372d073bf8dc444770f22cdd10eb2bef5eb22ed62e1c8a07412fcdc5989"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:640a6f7e986b30f376be95375d14fd827145b391d2b55f4f5254f36480683861"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:a23a76357dbf085fd0e4c06bf524844eb10741111d652fb481fbf123a871a81d"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:7d97064025052cc1ac6b7bca2525aad2338e7806d197d37a0a142b88b19ea5f5"}, - {file = "debugpy-1.4.0-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:4269df53524fe86d0f12a5e9a944dfbba5d59d0a7ceccfac3d94e59f70c694f7"}, - {file = "debugpy-1.4.0-cp35-cp35m-win32.whl", hash = "sha256:e53601997dff35856ccd0a9815795a28893227f251681aad76b79d696a8c4d79"}, - {file = "debugpy-1.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:6cb41e54fc5f26655c44ad98224297d152fce723e0974aaa3d511061098fb2c3"}, - {file = "debugpy-1.4.0-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:c33dd64172bbf6f07c0549b1a17c822dba564c633ce911579c72cbbf9842b86b"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:d35db1e5e9e0a17c78b5367674abbcc42768fc90e3a3b440407f82eb425485ad"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:5a0bbede84c8e67e3da4214b25780a5ad2f3e68aa50b6f317cf94303e42562bb"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:827df66e4c66afaf12a59bc4e1de104c7064445a24e36e93ae62bff1242d6bc5"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:0e5f07fffcf3b7763fec78f74cf69d91ee95fe012da266cc62ed874e6b702848"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:169c8ac3f21919707ce29d879ae2e03c63f07676c90efef470f520556295e6ab"}, - {file = "debugpy-1.4.0-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:c9fc6cf27b033fef2dcb106793d929da3d617dd80432395705ec4f29ee80510c"}, - {file = "debugpy-1.4.0-cp36-cp36m-win32.whl", hash = "sha256:75d8291688dc753eef3fcfed747f65425454163c82ff32c09de5f70840ea5fe9"}, - {file = "debugpy-1.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d03181a40cb31468165426421d2015c4e30e72b67e463a16e3e62e4276c7e3ee"}, - {file = "debugpy-1.4.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:909fb7212ce59bb126c5844c42c4ae6535c36803bf4d8edcc9e81b457da22bd9"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ecf8f405c78029b1adb6e49f3672dc448e48f1d21b79c8e8ca199cc5290a0b89"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:79199eeab37241d3c9665bdb4d77c725060bd8970c8adbdc6d3a1f361cf729a5"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:3a3a1efc0465502c961193e946d445ed6c7f34a4f23c39fcbe14d888e88eb8cc"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:00cd8bd26511ccf5943c01def9aa8f454acab10fb3dc0067f394d713c1e5ea5c"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:7964a36d6a101b138efe6de920243b9df8e3ea7089dfb68881bd7a10f3badbd8"}, - {file = "debugpy-1.4.0-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:bf3e4a603ef6ffec622ab77b0f8ddfb9c03bbec440e0b154d4374615d88fe44b"}, - {file = "debugpy-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:5ac3151097636a4ae08efaf307dc91d1bea2fad2ceb75df5f9bcae038b48b6b3"}, - {file = "debugpy-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d61cad58a0efb22b74c5e0748f730a25028e5bb7aa1b72299edb035091cb6526"}, - {file = "debugpy-1.4.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a0b7246b9ef6921f5af95fded6664fd6539b215ec43645abbb0da5815f61faba"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux1_i686.whl", hash = "sha256:aef32550cf10ea3bdaf4c57c1c0b512a4b662a9c5533376574544e3b70fae958"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:a17225ed3a13476779692ff1ee4cdd15bde9ac6740e887a248577046c5e6579a"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:6acf7a141de07c60031873be6388cf41782c21c4a19eca4916cfcc86fb3d7ce6"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:bed2c4170907ca2e23d1880f1326d8c9fb99d88104b90c5060a1af884e720792"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:4a96eb7e352cdcfb6506a22743e6e4813a6b306eee1e78c0881324f73c56a971"}, - {file = "debugpy-1.4.0-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:b65ed04d21b48846457a2809f28ec4cf3bf2878441bab5ae6a728bc03067e607"}, - {file = "debugpy-1.4.0-cp38-cp38-win32.whl", hash = "sha256:f3a2a81c5d62795c5fa6b974f103be99dc8ff6944e762437332fb44e54d6e93a"}, - {file = "debugpy-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:ba5e75037b078542d3bc62a16ecde68ee2a9b49479d34725c4d2be36570a41ac"}, - {file = "debugpy-1.4.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:658068983541ec4dea7408fdf9cf79308e0990b287bd915ed737094afcb83ed8"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux1_i686.whl", hash = "sha256:7fa3b046970bfc468f5b9dc67e56068b009b4f069b5e5fd1bfeba5764b229f62"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:6d6aed4ad8bd867b1fa165290fd0c99f00c1db77c95f75664d68d575a72de146"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:b6f7e6a397f3e64e282a5dedce8752b2f122eb55d3c9116834f06ecd3a04af6b"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:c8e6322520c1f9c2b5e9d6b226c718cc12ea69c4901fd2be62e5b782197de798"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:54b119c055e2a77e9a0a6b7c5e4fd6552c1ec701d1da1f491bd9e7dc3d010628"}, - {file = "debugpy-1.4.0-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:5f6433ba97378ac67f4f5b40793490ee82b4b67bd77e11f3c8fbabfa69d91fef"}, - {file = "debugpy-1.4.0-cp39-cp39-win32.whl", hash = "sha256:097be575dcd5e8452e048cebd7dd0d249551a8b663d329cb3e5a76448225ef31"}, - {file = "debugpy-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:e373c3a6819895f47ad87341b8efa9d74b584bce20e9e26be4b5ee1c56ddd8ea"}, - {file = "debugpy-1.4.0-py2.py3-none-any.whl", hash = "sha256:5893abf46c88068b0a12ef385d746b060a711364e3bf4a40d508ed24af3abe52"}, - {file = "debugpy-1.4.0.zip", hash = "sha256:32fbfb79b94f7efedef20207ea59fabe897de072e5a58d084f63f366055e78f5"}, + {file = "debugpy-1.4.1-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:a2c5a1c49239707ed5bc8e97d8f9252fb392d9e13c79c7b477593d7dde4ae24a"}, + {file = "debugpy-1.4.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:ebc241351791595796864a960892e1cd58627064feda939d0377edd0730bbff2"}, + {file = "debugpy-1.4.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:939c94d516e6ed5433cc3ba12d9d0d8108499587158ae5f76f6db18d49e21b5b"}, + {file = "debugpy-1.4.1-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e47c42bc1a68ead3c39d9a658d3ccf311bc45dc84f3c90fa5cb7de1796243f47"}, + {file = "debugpy-1.4.1-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:3756cd421be701d06490635372327ebd1ccb44b37d59682c994f6bd59e040a91"}, + {file = "debugpy-1.4.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:a4368c79a2c4458d5a0540381a32f8fdc02b3c9ba9dd413a49b42929297b29b3"}, + {file = "debugpy-1.4.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:c96e82d863db97d3eb498cc8e55773004724bdeaa58fb0eb7ee7d5a21d240d6a"}, + {file = "debugpy-1.4.1-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:71e67d352cabdc6a3f4dc3e39a1d2d1e76763a2102a276904e3495ede48a9832"}, + {file = "debugpy-1.4.1-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:959d39f3d724d25b7ab79278f032e33df03c6376d51b3517abaf2f8e83594ee0"}, + {file = "debugpy-1.4.1-cp35-cp35m-macosx_10_14_x86_64.whl", hash = "sha256:9d559bd0e4c288487349e0723bc70ff06390638446ee8087d4d5711486119643"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:7376bd8f4272ab01342940bd020955f021e26954e1f0df91cfa8bf1fa4451b56"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:dea62527a4a2770a0d12ce46564636d892bba29baaf5dba5bfe98bb55bf17a11"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux2010_i686.whl", hash = "sha256:12cb415e7394c6738527cbc482935aa9414e9b4cc87dd040015d0e5cb8b4471a"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux2010_x86_64.whl", hash = "sha256:3a6dee475102d0169732162b735878e8787500719ccb4d54b1458afe992a4c4d"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux2014_i686.whl", hash = "sha256:7e12e94aa2c9a0017c0a84cd475063108d06e305360b69c933bde17a6a527f80"}, + {file = "debugpy-1.4.1-cp35-cp35m-manylinux2014_x86_64.whl", hash = "sha256:2bfda2721046fb43a7074d475a12adcd55a65bfd23a1ff675427b09a01ba40cc"}, + {file = "debugpy-1.4.1-cp35-cp35m-win32.whl", hash = "sha256:732ac8bb79694cb4127c08bfc6128274f3dee9e6fd2ddde7bf026a40efeb202d"}, + {file = "debugpy-1.4.1-cp35-cp35m-win_amd64.whl", hash = "sha256:bad668e9edb21199017ab31f52a05e14506ad6566110560796d2a8f258e0b819"}, + {file = "debugpy-1.4.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:cd36e75c0f71a924f4b4cdb5f74b3321952cf636aadf70e0f85fd9cd2edfc1d0"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:eee2224ce547d2958ffc0d63cd280a9cc6377043f32ce370cfe4ca6be4e05476"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:e6711106aafc26ecb78e43c4be0a49bd0ae4a1f3e1aa502de151e38f4717b2a2"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:768f393ffaa66a3b3ed92b06e21912a5df3e01f18fb531bcbba2f94cad1725a7"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:ab37f189b1dd0d8420545c9f3d066bd1601a1ae85b26de38f5c1ccb96cf0b042"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:00f9d14da52b87e98e26f5c3c8f1937cc496915b38f8ccb7b329336b21898678"}, + {file = "debugpy-1.4.1-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:1bc8e835a48ef23280cbaf2b70a5a2b629b9ee79685b64d974bfb8d467f4aa67"}, + {file = "debugpy-1.4.1-cp36-cp36m-win32.whl", hash = "sha256:309909b6c85f89aea3fa10fc256b52fef3c25fee4d00e1b5f5db1ace57203a2c"}, + {file = "debugpy-1.4.1-cp36-cp36m-win_amd64.whl", hash = "sha256:67d496890d1cada5ce924cb30178684e7b82a36b80b8868beb148db54fd9e44c"}, + {file = "debugpy-1.4.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:595170ac17567773b546d40a0ff002dc350cfcd95c9233f65e79370954fb9a01"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:c5e771fcd12727f734caf2a10ff92966ae9857db0ccb6bebd1a4f776c54186a8"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:2d4c4ab934fbe1c7095d19b3d4246afe119396b49540ca5d5ad34ef01b27bd2a"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:4655824321b36b353b12d1617a29c79320412f085ecabf54524603b4c0c791e8"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:399b2c60c8e67a5d30c6e4522129e8be8d484e6064286f8ba3ce857a3927312a"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:8e63585c372873cd88c2380c0b3c4815c724a9713f5b86d1b3a1f1ac30df079e"}, + {file = "debugpy-1.4.1-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:52920ccb4acdbb2a9a42e0a4d60a7bbc4a34bf16fd23c674b280f8e9a8cacbd6"}, + {file = "debugpy-1.4.1-cp37-cp37m-win32.whl", hash = "sha256:7b332ce0d1a46f0f4200d59ee78428f18301d1fb85d07402723b94e1de96951c"}, + {file = "debugpy-1.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a19def91a0a166877c2a26b611c1ad0473ce85b1df61ae5276197375d574228b"}, + {file = "debugpy-1.4.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:9a0cd73d7a76222fbc9f9180612ccb4ad7d7f7e4f26e55ef1fbd459c0f2f5322"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:86cd13162b752664e8ef048287a6973c8fba0a71f396b31cf36394880ec2a6bf"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:89d53d57001e54a3854489e898c697aafb2d6bb81fca596da2400f3fd7fd397c"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:7b4e399790a301c83ad6b153452233695b2f15450d78956a6d297859eb44d185"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:fece69933d17e0918b73ddeb5e23bcf789edd2a6eb0d438b09c40d51e76b9c74"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:4e0d57a8c35b20b4e363db943b909aa83f12594e2f34070a1db5fa9b7213336b"}, + {file = "debugpy-1.4.1-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:f77406f33760e6f13a7ff0ac375d9c8856844b61cd95f7502b57116858f0cfe1"}, + {file = "debugpy-1.4.1-cp38-cp38-win32.whl", hash = "sha256:3d92cb2e8b4f9591f6d6e17ccf8c1a55a58857949d9a5aae0ff37b64faaa3b80"}, + {file = "debugpy-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:ac2d1cdd3279806dab2119937c0769f11dee13166650aaa84b6700b30a845d10"}, + {file = "debugpy-1.4.1-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:e7e049a4e8e362183a5a5b4ad058a1543211970819d0c11011c87c3a9dec2eaf"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:cf6b26f26f97ef3033008db7b3df7233363407d7b6cacd4bc4f8e02ce8e11df4"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:8a2be4e5d696ad39be6c6c37dc580993d04aad7d893fd6e449e1a055d7b5dddb"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:d89ab3bd51d6a3f13b093bc3881a827d8f6c9588d9a493bddb3b47f9d078fd1d"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f20a07ac5fb0deee9be1ad1a9a124d858a8b79c66c7ec5e1767d78aa964f86c4"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:6bb62615b3ad3d7202b7b7eb85f3d000aa17a61303af5f11eab048c91a1f30a6"}, + {file = "debugpy-1.4.1-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:a9f582203af34c6978bffaba77425662e949251998276e9dece113862e753459"}, + {file = "debugpy-1.4.1-cp39-cp39-win32.whl", hash = "sha256:129312b01ec46ab303a8c0667d559a0de0bed1a394cc128039b6f008f1c376b7"}, + {file = "debugpy-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:1762908202b0b0b481ec44125edb625d136d16c4991d3a7c1310c85672ffe5ba"}, + {file = "debugpy-1.4.1-py2.py3-none-any.whl", hash = "sha256:84ff51b8b5c847d5421324ca419db1eec813a4dd2bbf19dbbbe132e2ab2b2fc6"}, + {file = "debugpy-1.4.1.zip", hash = "sha256:889316de0b8ff3732927cb058cfbd3371e4cd0002ecc170d34c755ad289c867c"}, ] decorator = [ {file = "decorator-5.0.9-py3-none-any.whl", hash = "sha256:6e5c199c16f7a9f0e3a61a4a54b3d27e7dad0dbdde92b944426cb20914376323"}, @@ -1741,13 +1782,17 @@ importlib-metadata = [ {file = "importlib_metadata-3.10.1-py3-none-any.whl", hash = "sha256:2ec0faae539743ae6aaa84b49a169670a465f7f5d64e6add98388cc29fd1f2f6"}, {file = "importlib_metadata-3.10.1.tar.gz", hash = "sha256:c9356b657de65c53744046fa8f7358afe0714a1af7d570c00c3835c2d724a7c1"}, ] +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 = [ {file = "ipykernel-6.0.3-py3-none-any.whl", hash = "sha256:9f9f41a14caf2fde2b7802446adf83885afcbf50585a46d6c687292599a3c3af"}, {file = "ipykernel-6.0.3.tar.gz", hash = "sha256:0df34a78c7e1422800d6078cde65ccdcdb859597046c338c759db4dbc535c58f"}, ] ipython = [ - {file = "ipython-7.25.0-py3-none-any.whl", hash = "sha256:aa21412f2b04ad1a652e30564fff6b4de04726ce875eab222c8430edc6db383a"}, - {file = "ipython-7.25.0.tar.gz", hash = "sha256:54bbd1fe3882457aaf28ae060a5ccdef97f212a741754e420028d4ec5c2291dc"}, + {file = "ipython-7.26.0-py3-none-any.whl", hash = "sha256:892743b65c21ed72b806a3a602cca408520b3200b89d1924f4b3d2cdb3692362"}, + {file = "ipython-7.26.0.tar.gz", hash = "sha256:0cff04bb042800129348701f7bd68a430a844e8fb193979c08f6c99f28bb735e"}, ] ipython-genutils = [ {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, @@ -2028,25 +2073,25 @@ packaging = [ {file = "packaging-21.0.tar.gz", hash = "sha256:7dc96269f53a4ccec5c0670940a4281106dd0bb343f47b7471f779df49c2fbe7"}, ] pandas = [ - {file = "pandas-1.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c81b8d91e9ae861eb4406b4e0f8d4dabbc105b9c479b3d1e921fba1d35b5b62a"}, - {file = "pandas-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08eeff3da6a188e24db7f292b39a8ca9e073bf841fbbeadb946b3ad5c19d843e"}, - {file = "pandas-1.3.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:88864c1e28353b958b1f30e4193818519624ad9a1776921622a6a2a016d5d807"}, - {file = "pandas-1.3.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:872aa91e0f9ca913046ab639d4181a899f5e592030d954d28c2529b88756a736"}, - {file = "pandas-1.3.0-cp37-cp37m-win32.whl", hash = "sha256:92835113a67cbd34747c198d41f09f4b63f6fe11ca5643baebc7ab1e30e89e95"}, - {file = "pandas-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7d3cd2c99faa94d717ca00ea489264a291ad7209453dffbf059bfb7971fd3a61"}, - {file = "pandas-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:823737830364d0e2af8c3912a28ba971296181a07950873492ed94e12d28c405"}, - {file = "pandas-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c746876cdd8380be0c3e70966d4566855901ac9aaa5e4b9ccaa5ca5311457d11"}, - {file = "pandas-1.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe7a549d10ca534797095586883a5c17d140d606747591258869c56e14d1b457"}, - {file = "pandas-1.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:f058c786e7b0a9e7fa5e0b9f4422e0ccdd3bf3aa3053c18d77ed2a459bd9a45a"}, - {file = "pandas-1.3.0-cp38-cp38-win32.whl", hash = "sha256:98efc2d4983d5bb47662fe2d97b2c81b91566cb08b266490918b9c7d74a5ef64"}, - {file = "pandas-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:e6b75091fa54a53db3927b4d1bc997c23c5ba6f87acdfe1ee5a92c38c6b2ed6a"}, - {file = "pandas-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1ff13eed501e07e7fb26a4ea18a846b6e5d7de549b497025601fd9ccb7c1d123"}, - {file = "pandas-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:798675317d0e4863a92a9a6bc5bd2490b5f6fef8c17b95f29e2e33f28bef9eca"}, - {file = "pandas-1.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ed4fc66f23fe17c93a5d439230ca2d6b5f8eac7154198d327dbe8a16d98f3f10"}, - {file = "pandas-1.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:522bfea92f3ef6207cadc7428bda1e7605dae0383b8065030e7b5d0266717b48"}, - {file = "pandas-1.3.0-cp39-cp39-win32.whl", hash = "sha256:7897326cae660eee69d501cbfa950281a193fcf407393965e1bc07448e1cc35a"}, - {file = "pandas-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b10d7910ae9d7920a5ff7816d794d99acbc361f7b16a0f017d4fa83ced8cb55e"}, - {file = "pandas-1.3.0.tar.gz", hash = "sha256:c554e6c9cf2d5ea1aba5979cc837b3649539ced0e18ece186f055450c86622e2"}, + {file = "pandas-1.3.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:1ee8418d0f936ff2216513aa03e199657eceb67690995d427a4a7ecd2e68f442"}, + {file = "pandas-1.3.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5d9acfca191140a518779d1095036d842d5e5bc8e8ad8b5eaad1aff90fe1870d"}, + {file = "pandas-1.3.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e323028ab192fcfe1e8999c012a0fa96d066453bb354c7e7a4a267b25e73d3c8"}, + {file = "pandas-1.3.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9d06661c6eb741ae633ee1c57e8c432bb4203024e263fe1a077fa3fda7817fdb"}, + {file = "pandas-1.3.1-cp37-cp37m-win32.whl", hash = "sha256:23c7452771501254d2ae23e9e9dac88417de7e6eff3ce64ee494bb94dc88c300"}, + {file = "pandas-1.3.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7150039e78a81eddd9f5a05363a11cadf90a4968aac6f086fd83e66cf1c8d1d6"}, + {file = "pandas-1.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5c09a2538f0fddf3895070579082089ff4ae52b6cb176d8ec7a4dacf7e3676c1"}, + {file = "pandas-1.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:905fc3e0fcd86b0a9f1f97abee7d36894698d2592b22b859f08ea5a8fe3d3aab"}, + {file = "pandas-1.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ee927c70794e875a59796fab8047098aa59787b1be680717c141cd7873818ae"}, + {file = "pandas-1.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c976e023ed580e60a82ccebdca8e1cc24d8b1fbb28175eb6521025c127dab66"}, + {file = "pandas-1.3.1-cp38-cp38-win32.whl", hash = "sha256:22f3fcc129fb482ef44e7df2a594f0bd514ac45aabe50da1a10709de1b0f9d84"}, + {file = "pandas-1.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:45656cd59ae9745a1a21271a62001df58342b59c66d50754390066db500a8362"}, + {file = "pandas-1.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:114c6789d15862508900a25cb4cb51820bfdd8595ea306bab3b53cd19f990b65"}, + {file = "pandas-1.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:527c43311894aff131dea99cf418cd723bfd4f0bcf3c3da460f3b57e52a64da5"}, + {file = "pandas-1.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb3b33dde260b1766ea4d3c6b8fbf6799cee18d50a2a8bc534cf3550b7c819a"}, + {file = "pandas-1.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c28760932283d2c9f6fa5e53d2f77a514163b9e67fd0ee0879081be612567195"}, + {file = "pandas-1.3.1-cp39-cp39-win32.whl", hash = "sha256:be12d77f7e03c40a2466ed00ccd1a5f20a574d3c622fe1516037faa31aa448aa"}, + {file = "pandas-1.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:9e1fe6722cbe27eb5891c1977bca62d456c19935352eea64d33956db46139364"}, + {file = "pandas-1.3.1.tar.gz", hash = "sha256:341935a594db24f3ff07d1b34d1d231786aa9adfa84b76eab10bf42907c8aed3"}, ] pandocfilters = [ {file = "pandocfilters-1.4.3.tar.gz", hash = "sha256:bc63fbb50534b4b1f8ebe1860889289e8af94a23bff7445259592df25a3906eb"}, @@ -2068,8 +2113,8 @@ pickleshare = [ {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, ] platformdirs = [ - {file = "platformdirs-2.0.2-py2.py3-none-any.whl", hash = "sha256:0b9547541f599d3d242078ae60b927b3e453f0ad52f58b4d4bc3be86aed3ec41"}, - {file = "platformdirs-2.0.2.tar.gz", hash = "sha256:3b00d081227d9037bbbca521a5787796b5ef5000faea1e43fd76f1d44b06fcfa"}, + {file = "platformdirs-2.2.0-py3-none-any.whl", hash = "sha256:4666d822218db6a262bdfdc9c39d21f23b4cfdb08af331a81e92751daf6c866c"}, + {file = "platformdirs-2.2.0.tar.gz", hash = "sha256:632daad3ab546bd8e6af0537d09805cec458dce201bccfe23012df73332e181e"}, ] pluggy = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, @@ -2159,6 +2204,10 @@ pyrsistent = [ {file = "pyrsistent-0.18.0-cp39-cp39-win_amd64.whl", hash = "sha256:404e1f1d254d314d55adb8d87f4f465c8693d6f902f67eb6ef5b4526dc58e6ea"}, {file = "pyrsistent-0.18.0.tar.gz", hash = "sha256:773c781216f8c2900b42a7b638d5b517bb134ae1acbebe4d1e8f1f41ea60eb4b"}, ] +pytest = [ + {file = "pytest-6.2.4-py3-none-any.whl", hash = "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"}, + {file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"}, +] 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"}, @@ -2218,38 +2267,36 @@ pyyaml = [ {file = "PyYAML-5.4.1.tar.gz", hash = "sha256:607774cbba28732bfa802b54baa7484215f530991055bb562efbed5b2f20a45e"}, ] pyzmq = [ - {file = "pyzmq-22.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:4e9b9a2f6944acdaf57316436c1acdcb30b8df76726bcf570ad9342bc5001654"}, - {file = "pyzmq-22.1.0-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:24fb5bb641f0b2aa25fc3832f4b6fc62430f14a7d328229fe994b2bcdc07c93a"}, - {file = "pyzmq-22.1.0-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:c4674004ed64685a38bee222cd75afa769424ec603f9329f0dd4777138337f48"}, - {file = "pyzmq-22.1.0-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:461ed80d741692d9457ab820b1cc057ba9c37c394e67b647b639f623c8b321f6"}, - {file = "pyzmq-22.1.0-cp36-cp36m-win32.whl", hash = "sha256:de5806be66c9108e4dcdaced084e8ceae14100aa559e2d57b4f0cceb98c462de"}, - {file = "pyzmq-22.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a1c77796f395804d6002ff56a6a8168c1f98579896897ad7e35665a9b4a9eec5"}, - {file = "pyzmq-22.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c6a81c9e6754465d09a87e3acd74d9bb1f0039b2d785c6899622f0afdb41d760"}, - {file = "pyzmq-22.1.0-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:0f0f27eaab9ba7b92d73d71c51d1a04464a1da6097a252d007922103253d2313"}, - {file = "pyzmq-22.1.0-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:4b8fb1b3174b56fd020e4b10232b1764e52cf7f3babcfb460c5253bdc48adad0"}, - {file = "pyzmq-22.1.0-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:c8fff75af4c7af92dce9f81fa2a83ed009c3e1f33ee8b5222db2ef80b94e242e"}, - {file = "pyzmq-22.1.0-cp37-cp37m-win32.whl", hash = "sha256:cb9f9fe1305ef69b65794655fd89b2209b11bff3e837de981820a8aa051ef914"}, - {file = "pyzmq-22.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:bf80b2cec42d96117248b99d3c86e263a00469c840a778e6cb52d916f4fdf82c"}, - {file = "pyzmq-22.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0ea7f4237991b0f745a4432c63e888450840bf8cb6c48b93fb7d62864f455529"}, - {file = "pyzmq-22.1.0-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:12ffcf33db6ba7c0e5aaf901e65517f5e2b719367b80bcbfad692f546a297c7a"}, - {file = "pyzmq-22.1.0-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:d3ecfee2ee8d91ab2e08d2d8e89302c729b244e302bbc39c5b5dde42306ff003"}, - {file = "pyzmq-22.1.0-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:68e2c4505992ab5b89f976f89a9135742b18d60068f761bef994a6805f1cae0c"}, - {file = "pyzmq-22.1.0-cp38-cp38-win32.whl", hash = "sha256:285514956c08c7830da9d94e01f5414661a987831bd9f95e4d89cc8aaae8da10"}, - {file = "pyzmq-22.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d5e5be93e1714a59a535bbbc086b9e4fd2448c7547c5288548f6fd86353cad9e"}, - {file = "pyzmq-22.1.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:b2f707b52e09098a7770503e39294ca6e22ae5138ffa1dd36248b6436d23d78e"}, - {file = "pyzmq-22.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:18dd2ca4540c476558099891c129e6f94109971d110b549db2a9775c817cedbd"}, - {file = "pyzmq-22.1.0-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:c6d0c32532a0519997e1ded767e184ebb8543bdb351f8eff8570bd461e874efc"}, - {file = "pyzmq-22.1.0-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:9ee48413a2d3cd867fd836737b4c89c24cea1150a37f4856d82d20293fa7519f"}, - {file = "pyzmq-22.1.0-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:4c4fe69c7dc0d13d4ae180ad650bb900854367f3349d3c16f0569f6c6447f698"}, - {file = "pyzmq-22.1.0-cp39-cp39-win32.whl", hash = "sha256:fc712a90401bcbf3fa25747f189d6dcfccbecc32712701cad25c6355589dac57"}, - {file = "pyzmq-22.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:68be16107f41563b9f67d93dff1c9f5587e0f76aa8fd91dc04c83d813bcdab1f"}, - {file = "pyzmq-22.1.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:734ea6565c71fc2d03d5b8c7d0d7519c96bb5567e0396da1b563c24a4ac66f0c"}, - {file = "pyzmq-22.1.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:1389b615917d4196962a9b469e947ba862a8ec6f5094a47da5e7a8d404bc07a4"}, - {file = "pyzmq-22.1.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:41049cff5265e9cd75606aa2c90a76b9c80b98d8fe70ee08cf4af3cedb113358"}, - {file = "pyzmq-22.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f49755684a963731479ff3035d45a8185545b4c9f662d368bd349c419839886d"}, - {file = "pyzmq-22.1.0-pp37-pypy37_pp73-manylinux2010_x86_64.whl", hash = "sha256:6355f81947e1fe6e7bb9e123aeb3067264391d3ebe8402709f824ef8673fa6f3"}, - {file = "pyzmq-22.1.0-pp37-pypy37_pp73-win32.whl", hash = "sha256:089b974ec04d663b8685ac90e86bfe0e4da9d911ff3cf52cb765ff22408b102d"}, - {file = "pyzmq-22.1.0.tar.gz", hash = "sha256:7040d6dd85ea65703904d023d7f57fab793d7ffee9ba9e14f3b897f34ff2415d"}, + {file = "pyzmq-22.2.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:127b8727911331377af63f014c334059a440f9543f03305d244faaf281c9f108"}, + {file = "pyzmq-22.2.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0130c3596782b3a8a0522cc8bfaff6472fdd09e7e2ef99476029f9788896888"}, + {file = "pyzmq-22.2.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9aba658e4f2e975a9a7ec6f090a5e35a57591720bd6c192e5d3ab1789e1c57b4"}, + {file = "pyzmq-22.2.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec916dadd5709e875925bef5c811c87ffc0188a16333c1cce3b6a13b088b37a7"}, + {file = "pyzmq-22.2.0-cp36-cp36m-win32.whl", hash = "sha256:6a138dad866ee34957806f99f2cf59bc016db7a0be5eae27cfbde1c3a78294e6"}, + {file = "pyzmq-22.2.0-cp36-cp36m-win_amd64.whl", hash = "sha256:6bd3e6506a5fad7d6edefbf0237581f1d775b0722fa2079cae346270f7b8f5e4"}, + {file = "pyzmq-22.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:69866d133c60c865b74406f332d23de1d69963efaa676453ab9c870a73c62240"}, + {file = "pyzmq-22.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:229916a3bf2bb04833e79fa5dda135f852bd13e66562b4945628dd3d6e88a7ee"}, + {file = "pyzmq-22.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1c35f9c938af2d665af9f2e89b04c5d2218ab2dca14d549cdf54c5f673c70a65"}, + {file = "pyzmq-22.2.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:50f6b89dc518b8dddfc3419fe85179bc9cba363f6c1c6efd11b4107914230dbb"}, + {file = "pyzmq-22.2.0-cp37-cp37m-win32.whl", hash = "sha256:5cd2141bcba00d0f13f89ef48024d7482aaf21302dc57de049b90be648819caf"}, + {file = "pyzmq-22.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:af291a9ffb25a3e14f44dc4f5127d59fbfb5ef68333df9af630126fc4cb92000"}, + {file = "pyzmq-22.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8663aa3d058ba9cd9ade9655b94b8d836052a29189f6dcf78735eeec19f4d5f1"}, + {file = "pyzmq-22.2.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:50a463a2d72773cf5f601bdb562cd1d8fd63e68a7eeda9ba4f3748d71ff385bd"}, + {file = "pyzmq-22.2.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:198d2c691c0cee06714a5fdb904fa42f19fa62822d24b4037e8198775e8d2a6d"}, + {file = "pyzmq-22.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6a0c468bf60392cf1eb025f8bb5d7dfe2c8898fcfdef6c098ca369a57e65028f"}, + {file = "pyzmq-22.2.0-cp38-cp38-win32.whl", hash = "sha256:6266a3d62d9ffbe81ab786b4ee079fd0a43620b009a14879afd094dd551c1a6e"}, + {file = "pyzmq-22.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:206c9366ba308dba68be19cd187b2550bc4cea1b80d2aa19cb1356a1c2c173f6"}, + {file = "pyzmq-22.2.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:78bfa1dddf623294165e7647bf6378dd8d7c1945c8dfb8535c74eef6a5841b89"}, + {file = "pyzmq-22.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c4840a8ba94c65a44fabf439d8d9973f8e130fe4dd2cb722fd786c8c1f034754"}, + {file = "pyzmq-22.2.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2dd9a7472069ca2b0865a8a2aea80e31f9c8e49193afbf4f929900e491122418"}, + {file = "pyzmq-22.2.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e04af13ee1b34146b05273cafe7b8367dd2f39a58fcd4956dcc7263018fc7074"}, + {file = "pyzmq-22.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9445f44b51fe3a3f138bc2e13ac5a1f1875df6bb3445ae2044d69962bbf69acd"}, + {file = "pyzmq-22.2.0-cp39-cp39-win32.whl", hash = "sha256:7d042f1e58779d0301cc0efbe462ad818f1ff01e13992d08b0b9167c170f713c"}, + {file = "pyzmq-22.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:f2943ad121f880f4b89be952d3a49c3ea39ba6e02abe6d3c8029331602a33b91"}, + {file = "pyzmq-22.2.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1068ab72e78a1279a2b8c1607234d0999f90773d9981e7c80ed35e3bf2f4ccfc"}, + {file = "pyzmq-22.2.0-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2776ccc2f693cc9d5e89e4432e2e0c067499bf6621aec6961a5d894dd0f042be"}, + {file = "pyzmq-22.2.0-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:37513cb842e2fd3e7c15141ef4e4152ef94c0a35269a62cabf6f2aaef3a59b30"}, + {file = "pyzmq-22.2.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:daf87bc30e4a00aca33b1b1e10414246f4f5714c39db04be0e498fae1ab1e767"}, + {file = "pyzmq-22.2.0.tar.gz", hash = "sha256:ff6454bd8067463380ea992a7cbe623bd61aeb83a8f19d47eb221eec3f798080"}, ] qtconsole = [ {file = "qtconsole-5.1.1-py3-none-any.whl", hash = "sha256:73994105b0369bb99f4164df4a131010f3c7b33a7b5169c37366358d8744675b"}, @@ -2260,47 +2307,39 @@ qtpy = [ {file = "QtPy-1.9.0.tar.gz", hash = "sha256:2db72c44b55d0fe1407be8fba35c838ad0d6d3bb81f23007886dc1fc0f459c8d"}, ] regex = [ - {file = "regex-2021.7.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e6a1e5ca97d411a461041d057348e578dc344ecd2add3555aedba3b408c9f874"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:6afe6a627888c9a6cfbb603d1d017ce204cebd589d66e0703309b8048c3b0854"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:ccb3d2190476d00414aab36cca453e4596e8f70a206e2aa8db3d495a109153d2"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:ed693137a9187052fc46eedfafdcb74e09917166362af4cc4fddc3b31560e93d"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:99d8ab206a5270c1002bfcf25c51bf329ca951e5a169f3b43214fdda1f0b5f0d"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_i686.whl", hash = "sha256:b85ac458354165405c8a84725de7bbd07b00d9f72c31a60ffbf96bb38d3e25fa"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux2014_x86_64.whl", hash = "sha256:3f5716923d3d0bfb27048242a6e0f14eecdb2e2a7fac47eda1d055288595f222"}, - {file = "regex-2021.7.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5983c19d0beb6af88cb4d47afb92d96751fb3fa1784d8785b1cdf14c6519407"}, - {file = "regex-2021.7.6-cp36-cp36m-win32.whl", hash = "sha256:c92831dac113a6e0ab28bc98f33781383fe294df1a2c3dfd1e850114da35fd5b"}, - {file = "regex-2021.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:791aa1b300e5b6e5d597c37c346fb4d66422178566bbb426dd87eaae475053fb"}, - {file = "regex-2021.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:59506c6e8bd9306cd8a41511e32d16d5d1194110b8cfe5a11d102d8b63cf945d"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:564a4c8a29435d1f2256ba247a0315325ea63335508ad8ed938a4f14c4116a5d"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:59c00bb8dd8775473cbfb967925ad2c3ecc8886b3b2d0c90a8e2707e06c743f0"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:9a854b916806c7e3b40e6616ac9e85d3cdb7649d9e6590653deb5b341a736cec"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:db2b7df831c3187a37f3bb80ec095f249fa276dbe09abd3d35297fc250385694"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_i686.whl", hash = "sha256:173bc44ff95bc1e96398c38f3629d86fa72e539c79900283afa895694229fe6a"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:15dddb19823f5147e7517bb12635b3c82e6f2a3a6b696cc3e321522e8b9308ad"}, - {file = "regex-2021.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ddeabc7652024803666ea09f32dd1ed40a0579b6fbb2a213eba590683025895"}, - {file = "regex-2021.7.6-cp37-cp37m-win32.whl", hash = "sha256:f080248b3e029d052bf74a897b9d74cfb7643537fbde97fe8225a6467fb559b5"}, - {file = "regex-2021.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:d8bbce0c96462dbceaa7ac4a7dfbbee92745b801b24bce10a98d2f2b1ea9432f"}, - {file = "regex-2021.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:edd1a68f79b89b0c57339bce297ad5d5ffcc6ae7e1afdb10f1947706ed066c9c"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:422dec1e7cbb2efbbe50e3f1de36b82906def93ed48da12d1714cabcd993d7f0"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:cbe23b323988a04c3e5b0c387fe3f8f363bf06c0680daf775875d979e376bd26"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:0eb2c6e0fcec5e0f1d3bcc1133556563222a2ffd2211945d7b1480c1b1a42a6f"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:1c78780bf46d620ff4fff40728f98b8afd8b8e35c3efd638c7df67be2d5cddbf"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux2014_i686.whl", hash = "sha256:bc84fb254a875a9f66616ed4538542fb7965db6356f3df571d783f7c8d256edd"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:598c0a79b4b851b922f504f9f39a863d83ebdfff787261a5ed061c21e67dd761"}, - {file = "regex-2021.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:875c355360d0f8d3d827e462b29ea7682bf52327d500a4f837e934e9e4656068"}, - {file = "regex-2021.7.6-cp38-cp38-win32.whl", hash = "sha256:e586f448df2bbc37dfadccdb7ccd125c62b4348cb90c10840d695592aa1b29e0"}, - {file = "regex-2021.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:2fe5e71e11a54e3355fa272137d521a40aace5d937d08b494bed4529964c19c4"}, - {file = "regex-2021.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6110bab7eab6566492618540c70edd4d2a18f40ca1d51d704f1d81c52d245026"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:4f64fc59fd5b10557f6cd0937e1597af022ad9b27d454e182485f1db3008f417"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:89e5528803566af4df368df2d6f503c84fbfb8249e6631c7b025fe23e6bd0cde"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:2366fe0479ca0e9afa534174faa2beae87847d208d457d200183f28c74eaea59"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:f9392a4555f3e4cb45310a65b403d86b589adc773898c25a39184b1ba4db8985"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux2014_i686.whl", hash = "sha256:2bceeb491b38225b1fee4517107b8491ba54fba77cf22a12e996d96a3c55613d"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:f98dc35ab9a749276f1a4a38ab3e0e2ba1662ce710f6530f5b0a6656f1c32b58"}, - {file = "regex-2021.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:319eb2a8d0888fa6f1d9177705f341bc9455a2c8aca130016e52c7fe8d6c37a3"}, - {file = "regex-2021.7.6-cp39-cp39-win32.whl", hash = "sha256:eaf58b9e30e0e546cdc3ac06cf9165a1ca5b3de8221e9df679416ca667972035"}, - {file = "regex-2021.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:4c9c3155fe74269f61e27617529b7f09552fbb12e44b1189cebbdb24294e6e1c"}, - {file = "regex-2021.7.6.tar.gz", hash = "sha256:8394e266005f2d8c6f0bc6780001f7afa3ef81a7a2111fa35058ded6fce79e4d"}, + {file = "regex-2021.8.3-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:8764a78c5464ac6bde91a8c87dd718c27c1cabb7ed2b4beaf36d3e8e390567f9"}, + {file = "regex-2021.8.3-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4551728b767f35f86b8e5ec19a363df87450c7376d7419c3cac5b9ceb4bce576"}, + {file = "regex-2021.8.3-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:577737ec3d4c195c4aef01b757905779a9e9aee608fa1cf0aec16b5576c893d3"}, + {file = "regex-2021.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c856ec9b42e5af4fe2d8e75970fcc3a2c15925cbcc6e7a9bcb44583b10b95e80"}, + {file = "regex-2021.8.3-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3835de96524a7b6869a6c710b26c90e94558c31006e96ca3cf6af6751b27dca1"}, + {file = "regex-2021.8.3-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cea56288eeda8b7511d507bbe7790d89ae7049daa5f51ae31a35ae3c05408531"}, + {file = "regex-2021.8.3-cp36-cp36m-win32.whl", hash = "sha256:a4eddbe2a715b2dd3849afbdeacf1cc283160b24e09baf64fa5675f51940419d"}, + {file = "regex-2021.8.3-cp36-cp36m-win_amd64.whl", hash = "sha256:57fece29f7cc55d882fe282d9de52f2f522bb85290555b49394102f3621751ee"}, + {file = "regex-2021.8.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a5c6dbe09aff091adfa8c7cfc1a0e83fdb8021ddb2c183512775a14f1435fe16"}, + {file = "regex-2021.8.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff4a8ad9638b7ca52313d8732f37ecd5fd3c8e3aff10a8ccb93176fd5b3812f6"}, + {file = "regex-2021.8.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b63e3571b24a7959017573b6455e05b675050bbbea69408f35f3cb984ec54363"}, + {file = "regex-2021.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:fbc20975eee093efa2071de80df7f972b7b35e560b213aafabcec7c0bd00bd8c"}, + {file = "regex-2021.8.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:14caacd1853e40103f59571f169704367e79fb78fac3d6d09ac84d9197cadd16"}, + {file = "regex-2021.8.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:bb350eb1060591d8e89d6bac4713d41006cd4d479f5e11db334a48ff8999512f"}, + {file = "regex-2021.8.3-cp37-cp37m-win32.whl", hash = "sha256:18fdc51458abc0a974822333bd3a932d4e06ba2a3243e9a1da305668bd62ec6d"}, + {file = "regex-2021.8.3-cp37-cp37m-win_amd64.whl", hash = "sha256:026beb631097a4a3def7299aa5825e05e057de3c6d72b139c37813bfa351274b"}, + {file = "regex-2021.8.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:16d9eaa8c7e91537516c20da37db975f09ac2e7772a0694b245076c6d68f85da"}, + {file = "regex-2021.8.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3905c86cc4ab6d71635d6419a6f8d972cab7c634539bba6053c47354fd04452c"}, + {file = "regex-2021.8.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:937b20955806381e08e54bd9d71f83276d1f883264808521b70b33d98e4dec5d"}, + {file = "regex-2021.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:28e8af338240b6f39713a34e337c3813047896ace09d51593d6907c66c0708ba"}, + {file = "regex-2021.8.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c09d88a07483231119f5017904db8f60ad67906efac3f1baa31b9b7f7cca281"}, + {file = "regex-2021.8.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:85f568892422a0e96235eb8ea6c5a41c8ccbf55576a2260c0160800dbd7c4f20"}, + {file = "regex-2021.8.3-cp38-cp38-win32.whl", hash = "sha256:bf6d987edd4a44dd2fa2723fca2790f9442ae4de2c8438e53fcb1befdf5d823a"}, + {file = "regex-2021.8.3-cp38-cp38-win_amd64.whl", hash = "sha256:8fe58d9f6e3d1abf690174fd75800fda9bdc23d2a287e77758dc0e8567e38ce6"}, + {file = "regex-2021.8.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7976d410e42be9ae7458c1816a416218364e06e162b82e42f7060737e711d9ce"}, + {file = "regex-2021.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9569da9e78f0947b249370cb8fadf1015a193c359e7e442ac9ecc585d937f08d"}, + {file = "regex-2021.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:459bbe342c5b2dec5c5223e7c363f291558bc27982ef39ffd6569e8c082bdc83"}, + {file = "regex-2021.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:4f421e3cdd3a273bace013751c345f4ebeef08f05e8c10757533ada360b51a39"}, + {file = "regex-2021.8.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea212df6e5d3f60341aef46401d32fcfded85593af1d82b8b4a7a68cd67fdd6b"}, + {file = "regex-2021.8.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a3b73390511edd2db2d34ff09aa0b2c08be974c71b4c0505b4a048d5dc128c2b"}, + {file = "regex-2021.8.3-cp39-cp39-win32.whl", hash = "sha256:f35567470ee6dbfb946f069ed5f5615b40edcbb5f1e6e1d3d2b114468d505fc6"}, + {file = "regex-2021.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:bfa6a679410b394600eafd16336b2ce8de43e9b13f7fb9247d84ef5ad2b45e91"}, + {file = "regex-2021.8.3.tar.gz", hash = "sha256:8935937dad2c9b369c3d932b0edbc52a62647c2afb2fafc0c280f14a8bf56a6a"}, ] requests = [ {file = "requests-2.26.0-py2.py3-none-any.whl", hash = "sha256:6c1246513ecd5ecd4528a0906f910e8f0f9c6b8ec72030dc9fd154dc1a6efd24"}, @@ -2360,8 +2399,8 @@ toml = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] tomli = [ - {file = "tomli-1.1.0-py3-none-any.whl", hash = "sha256:f4a182048010e89cbec0ae4686b21f550a7f2903f665e34a6de58ec15424f919"}, - {file = "tomli-1.1.0.tar.gz", hash = "sha256:33d7984738f8bb699c9b0a816eb646a8178a69eaa792d258486776a5d21b8ca5"}, + {file = "tomli-1.2.0-py3-none-any.whl", hash = "sha256:056f0376bf5a6b182c513f9582c1e5b0487265eb6c48842b69aa9ca1cd5f640a"}, + {file = "tomli-1.2.0.tar.gz", hash = "sha256:d60e681734099207a6add7a10326bc2ddd1fdc36c1b0f547d00ef73ac63739c2"}, ] tornado = [ {file = "tornado-6.1-cp35-cp35m-macosx_10_9_x86_64.whl", hash = "sha256:d371e811d6b156d82aa5f9a4e08b58debf97c302a35714f6f45e35139c332e32"}, @@ -2407,8 +2446,8 @@ tornado = [ {file = "tornado-6.1.tar.gz", hash = "sha256:33c6e81d7bd55b468d2e793517c909b139960b6c790a60b7991b9b6b76fb9791"}, ] tox = [ - {file = "tox-3.24.0-py2.py3-none-any.whl", hash = "sha256:c990028355f0d0b681e3db9baa89dd9f839a6e999c320029339f6a6b36160591"}, - {file = "tox-3.24.0.tar.gz", hash = "sha256:67636634df6569e450c4bc18fdfd8b84d7903b3902d5c65416eb6735f3d4afb8"}, + {file = "tox-3.24.1-py2.py3-none-any.whl", hash = "sha256:60eda26fa47b7130e6fc1145620b1fd897963af521093c3685c3f63d1c394029"}, + {file = "tox-3.24.1.tar.gz", hash = "sha256:9850daeb96d21b4abf049bc5f197426123039e383ebfed201764e9355fc5a880"}, ] traitlets = [ {file = "traitlets-5.0.5-py3-none-any.whl", hash = "sha256:69ff3f9d5351f31a7ad80443c2674b7099df13cc41fc5fa6e2f6d3b0330b0426"}, @@ -2447,8 +2486,8 @@ typed-ast = [ {file = "typed_ast-1.4.3.tar.gz", hash = "sha256:fb1bbeac803adea29cedd70781399c99138358c26d05fcbd23c13016b7f5ec65"}, ] types-requests = [ - {file = "types-requests-2.25.0.tar.gz", hash = "sha256:ee0d0c507210141b7d5b8639cc43eaa726084178775db2a5fb06fbf85c185808"}, - {file = "types_requests-2.25.0-py3-none-any.whl", hash = "sha256:fa5c1e5e832ff6193507d8da7e1159281383908ee193a2f4b37bc08140b51844"}, + {file = "types-requests-2.25.2.tar.gz", hash = "sha256:03122b582f5300ec35ac6692f2634207c467e602dc9ba46b5811a9f6ce0b0bc2"}, + {file = "types_requests-2.25.2-py3-none-any.whl", hash = "sha256:a4c03c654527957a70002079ca48669b53d82eac4811abf140ea93847b65529b"}, ] typing-extensions = [ {file = "typing_extensions-3.10.0.0-py2-none-any.whl", hash = "sha256:0ac0f89795dd19de6b97debb0c6af1c70987fd80a2d62d1958f7e56fcc31b497"}, @@ -2460,8 +2499,8 @@ urllib3 = [ {file = "urllib3-1.26.6.tar.gz", hash = "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"}, ] virtualenv = [ - {file = "virtualenv-20.6.0-py2.py3-none-any.whl", hash = "sha256:e4fc84337dce37ba34ef520bf2d4392b392999dbe47df992870dc23230f6b758"}, - {file = "virtualenv-20.6.0.tar.gz", hash = "sha256:51df5d8a2fad5d1b13e088ff38a433475768ff61f202356bb9812c454c20ae45"}, + {file = "virtualenv-20.7.0-py2.py3-none-any.whl", hash = "sha256:fdfdaaf0979ac03ae7f76d5224a05b58165f3c804f8aa633f3dd6f22fbd435d5"}, + {file = "virtualenv-20.7.0.tar.gz", hash = "sha256:97066a978431ec096d163e72771df5357c5c898ffdd587048f45e0aecc228094"}, ] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, diff --git a/data/data-pipeline/pyproject.toml b/data/data-pipeline/pyproject.toml index 1d144cf1..b14ff025 100644 --- a/data/data-pipeline/pyproject.toml +++ b/data/data-pipeline/pyproject.toml @@ -1,11 +1,11 @@ [tool.poetry] authors = ["Your Name "] description = "ETL and Generation of Justice 40 Score" -name = "score" -version = "0.1.0" +name = "data-pipeline" packages = [ - { include = "etl" }, # required for poetry packaging to install in tox + {include = "etl"}, # required for poetry packaging to install in tox ] +version = "0.1.0" [tool.poetry.dependencies] CensusData = "^1.13" @@ -23,12 +23,13 @@ types-requests = "^2.25.0" [tool.poetry.dev-dependencies] black = {version = "^21.6b0", allow-prereleases = true} -mypy = "^0.910" -tox = "^3.24.0" flake8 = "^3.9.2" -pylint = "^2.9.6" liccheck = "^0.6.2" +mypy = "^0.910" +pylint = "^2.9.6" +pytest = "^6.2.4" safety = "^1.10.3" +tox = "^3.24.0" [build-system] build-backend = "poetry.core.masonry.api" @@ -38,66 +39,69 @@ requires = ["poetry-core>=1.0.0"] [tool.pylint."MESSAGE CONTROL"] disable = [ - "C0114", # Disables module docstrings - "R0201", # Disables method could have been a function - "R0903", # Disables too few public methods - "C0103", # Disables name case styling - "W0511", # Disables FIXME warning - "W1203", # Disables f-string interpolation for logging warning - # Errors temporarily ignored for further discussion - "W0107", # Disables unnecessary pass - "W0221", # Disables arguments differ - "R0902", # Disables too many instance attributes - "R0914", # Disables too many local variables - "W0621", # Disables redefined outer name - "C0302", # Disables too many lines in module - "R1732", # Disables consider using "with" - "R1720", # Disables unnecessary "else" after "raise" - "C0206", # Disables consider iteratig with ".items()" - "C0200", # Disables consider using "enumerate" instead of "range" + "len" - "W0612", # Disables unused variable - "W0613", # Disables unused argument - "C0116", # Disables missing function or method docstring - "C0115", # Disables missing class docstring + "C0114", # Disables module docstrings + "R0201", # Disables method could have been a function + "R0903", # Disables too few public methods + "C0103", # Disables name case styling + "W0511", # Disables FIXME warning + "W1203", # Disables f-string interpolation for logging warning # Errors temporarily ignored for further discussion + "W0107", # Disables unnecessary pass + "W0221", # Disables arguments differ + "R0902", # Disables too many instance attributes + "R0914", # Disables too many local variables + "W0621", # Disables redefined outer name + "C0302", # Disables too many lines in module + "R1732", # Disables consider using "with" + "R1720", # Disables unnecessary "else" after "raise" + "C0206", # Disables consider iteratig with ".items()" + "C0200", # Disables consider using "enumerate" instead of "range" + "len" + "W0612", # Disables unused variable + "W0613", # Disables unused argument + "C0116", # Disables missing function or method docstring + "C0115", # Disables missing class docstring ] [tool.pylint.FORMAT] -max-line-length=150 +max-line-length = 150 [tool.pylint.SIMILARITIES] # Configures how pylint detects repetitive code -min-similarity-lines = 4 ignore-comments = "yes" ignore-docstrings = "yes" ignore-imports = "yes" +min-similarity-lines = 4 [tool.liccheck] # Authorized and unauthorized licenses in LOWER CASE authorized_licenses = [ - "bsd", - "new bsd", - "bsd license", - "bsd 3-clause", - "new bsd license", - "simplified bsd", - "apache", - "apache 2.0", - "apache license 2.0", - "apache software license", - "apache software", - "gnu lgpl", - "gnu lesser general public license v2 (lgplv2)", - "gnu general public license v2 (gplv2)", - "gnu library or lesser general public license (lgpl)", - "lgpl with exceptions or zpl", - "isc license", - "isc license (iscl)", - "mit", - "mit license", - "mozilla public license 2.0 (mpl 2.0)", - "public domain", - "python software foundation license", - "python software foundation", - "zpl 2.1", - "gpl v3" + "bsd", + "new bsd", + "bsd license", + "bsd 3-clause", + "new bsd license", + "simplified bsd", + "apache", + "apache 2.0", + "apache license 2.0", + "apache software license", + "apache software", + "gnu lgpl", + "gnu lesser general public license v2 (lgplv2)", + "gnu general public license v2 (gplv2)", + "gnu library or lesser general public license (lgpl)", + "lgpl with exceptions or zpl", + "isc license", + "isc license (iscl)", + "mit", + "mit license", + "mozilla public license 2.0 (mpl 2.0)", + "public domain", + "python software foundation license", + "python software foundation", + "zpl 2.1", + "gpl v3", ] + +[tool.poetry.scripts] +etl = 'data_pipeline.application:etl_run' +score = 'data_pipeline.application:score_run' diff --git a/data/data-pipeline/tile/__init__.py b/data/data-pipeline/tile/__init__.py deleted file mode 100644 index e69de29b..00000000