diff --git a/.dockerignore b/.dockerignore index 4f65c1899ef0a63ef4484ee252f1f911a2649865..c113e1b37ff356aa2b218b51a4b95f09909e9b55 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,3 +6,4 @@ dist .idea .mypy_cache .pytest_cache +!config/example-* \ No newline at end of file diff --git a/README.md b/README.md index 904f6c65f666c8f34c57ff97efbe4fba407be315..a5b452a192352dc0332bf1c90ed5ae053f7ac835 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Lukas Mahler ## License ## References -Docker Image on invenio: https://researchdata.tuwien.ac.at/ -DBRepo: https://dbrepo1.tuwien.ac.at/ -Invenio: https://researchdata.tuwien.ac.at/ +Docker Image on TUWRD: https://researchdata.tuwien.ac.at/ \ +DBRepo: https://dbrepo1.tuwien.ac.at/ \ +Code backup on TUWRD: https://researchdata.tuwien.ac.at/ \ Thesis: https://repositum.tuwien.ac.at/ diff --git a/config/example-config_dbrepo.yml b/config/example-config_dbrepo.yml index a86a8f1a4fac1fb8fc7356225a8d89f4acdd87a4..21013bc6d4dfa7d254c3cdcb727b261ecaab8a3b 100644 --- a/config/example-config_dbrepo.yml +++ b/config/example-config_dbrepo.yml @@ -1,6 +1,5 @@ host: https://dbrepo1.ec.tuwien.ac.at -container-id: <insert id> -database-id: <insert id> +database-id: <insert database id> credentials: username: <insert username from dbrepo> password: <insert password from dbrepo> diff --git a/fairnb/api/dbrepo.py b/fairnb/api/dbrepo.py index cdf3a9fba40083ad6eb1f42aa05498061eda4287..8c2145d58b267009c9214f6b690fd424732f516a 100644 --- a/fairnb/api/dbrepo.py +++ b/fairnb/api/dbrepo.py @@ -1,7 +1,7 @@ import pathlib import logging from tusclient import client -from datetime import datetime +from datetime import datetime, timedelta from functools import wraps from typing import Any, Callable import requests @@ -17,15 +17,16 @@ CHUNK_SIZE = 1024 * 1024 * 100 def re_auth(func: Callable) -> Callable: @wraps(func) def inner(self, *args, **kwargs): - assert self.get_token_age() - age_seconds = (datetime.now() - self.get_token_age()).seconds - - if 60 * 10 < age_seconds < 60 * 25: - LOG.warning(f"Re-authenticating due to almost expired token") - self.refresh_token_keycloak() - if age_seconds >= 60*25: - LOG.warning(f"Re-login due to expired token") - self.authenticate_keycloak() + assert self.get_token_expiry() + seconds_token_expired = (self.get_token_expiry() - datetime.now()).total_seconds() + seconds_refresh_expired = (self.get_refresh_expiry() - datetime.now()).total_seconds() + if seconds_token_expired < 60: + if seconds_refresh_expired > 60: + LOG.warning(f"Re-authenticating due to (almost) expired token") + self.refresh_token_keycloak() + else: + LOG.warning(f"Re-authenticating due to (almost) expired refresh token") + self.authenticate_keycloak() return func(self, *args, **kwargs) return inner @@ -39,17 +40,18 @@ class DBRepoConnector: password: str, client_secret_key: str, host: str, - container_id: str, + # container_id: str, database_id: str): self.__token = None - self.__token_age: datetime = None + self.__token_expiry: datetime = None + self.__refresh_expiry: datetime = None self.__refresh_token: str = None self.headers = None self.host = host self.__username = username self.__password = password self.__client_secret_key = client_secret_key - self.container_id = container_id + # self.container_id = container_id self.database_id = database_id self.__keycloak_openid = KeycloakOpenID( server_url=f"{host}/api/auth/", @@ -61,11 +63,14 @@ class DBRepoConnector: self.tusclient = client.TusClient( f"{self.host}/api/upload/files/", # headers=self.headers - headers={'Content-Type': 'application/offset+octet-stream'} + # headers={'Content-Type': 'application/offset+octet-stream'} ) - def get_token_age(self) -> datetime: - return self.__token_age + def get_token_expiry(self) -> datetime: + return self.__token_expiry + + def get_refresh_expiry(self) -> datetime: + return self.__refresh_expiry @classmethod def from_config(cls, config: dict, credentials: dict): @@ -74,7 +79,7 @@ class DBRepoConnector: credentials["password"], credentials["client_secret_key"], config["host"], - config["container-id"], + # config["container-id"], config["database-id"] ) @@ -110,19 +115,21 @@ class DBRepoConnector: self.__token = token["access_token"] self.__refresh_token = token["refresh_token"] - self.__token_age = datetime.now() + self.__token_expiry = datetime.now() + timedelta(seconds=token["expires_in"]) + self.__refresh_expiry = datetime.now() + timedelta(seconds=token["refresh_expires_in"]) self.headers = {"Authorization": f"Bearer {self.__token}"} return token def refresh_token_keycloak(self, token: str = None): - token = self.__token if token is None else token + # token = self.__token if token is None else token token = self.__keycloak_openid.refresh_token(self.__refresh_token) self.__token = token["access_token"] self.__refresh_token = token["refresh_token"] + self.__token_expiry = datetime.now() + timedelta(seconds=token["expires_in"]) + self.__refresh_expiry = datetime.now() + timedelta(seconds=token["refresh_expires_in"]) self.headers = {"Authorization": f"Bearer {self.__token}"} - self.__token_age = datetime.now() return token @staticmethod @@ -249,26 +256,28 @@ class DBRepoConnector: ) upload_url = uploader.create_url() - uploader.set_url(upload_url.replace('http', 'https')) # FIX: wrong location response + upload_url = upload_url.replace('http', 'https') + uploader.set_url(upload_url) # FIX: wrong location response uploader.upload() response_upload_import = requests.post( f"{self.host}/api/database/{self.database_id}/table/{table_id}/data/import", json={ - "false_element": None, - "location": f"/tmp/{upload_url.split('/')[-1]}", + "false_element": "False", + "location": f"{upload_url.split('/')[-1].split('+')[0]}", "null_element": None, "quote": '"', "separator": ",", "skip_lines": 1, - "true_element": None + "true_element": "True" }, headers=self.headers ) - LOG.debug(response_upload_import) + LOG.debug(f"Uploaded dataframe using tui: {response_upload_import}") if not response_upload_import.ok: LOG.warning(f"Move for table {table_id} failed: {response_upload_import}") + raise Exception(f"Move for table {table_id} failed: {response_upload_import}") @re_auth def delete_all_data(self, table_id: str): diff --git a/fairnb/entity/dbrepo_entity.py b/fairnb/entity/dbrepo_entity.py index b54851f4cadd4b74424854af312de9eb99cef521..e1ab588176d724372a4d0593eef3f44b3c96bece 100644 --- a/fairnb/entity/dbrepo_entity.py +++ b/fairnb/entity/dbrepo_entity.py @@ -1,3 +1,5 @@ +from datetime import datetime + import pandas as pd from dataclasses import dataclass, field from pathlib import Path @@ -11,11 +13,12 @@ class DbRepoEntity(Entity): table_name: str = field(init=True, default=None) table_description: str = field(init=True, default="") table_id: int = field(init=False, default=None) + repository: str = field(init=False, default="https://dbrepo1.ec.tuwien.ac.at/") def __post_init__(self): super().__post_init__() - if self.metadata is not None: # equivalent to: self.id is not None + if self.metadata is not None: # equivalent to: self.id is not None self.table_id = int(self.metadata.uri.split("/")[-1]) else: assert self.table_name is not None # has to exist fot the ability to get table_id @@ -51,9 +54,15 @@ class DbRepoEntity(Entity): df = self.dbrepo_connector.download_table_as_df(str(self.table_id)) df = df[df['entity_id'] == self.id] # save only entity, not whole table - df.to_csv(self.location) + df = df.drop(columns=["entity_id", "id"]) + + # create dir if not exists + self.location.resolve().parent.mkdir(parents=True, exist_ok=True) + df.to_csv(self.location, index=False) - def upload(self, executed_file: Path, dependencies: list[Entity] = None): + def upload(self, executed_file: Path, dependencies: list[Entity] = None, + start_time: datetime = datetime.now(), + end_time: datetime = datetime.now()): df = pd.read_csv(self.location) # add id column to df: @@ -71,10 +80,12 @@ class DbRepoEntity(Entity): self.name, self.description, executed_file=executed_file, - uri=f"{self.dbrepo_connector.host}/api/database/" + uri=f"{self.dbrepo_connector.host}/database/" f"{self.dbrepo_connector.database_id}/table/{self.table_id}", type=self.type, - platform="dbrepo", + platform=self.repository, + started_at=start_time, + ended_at=end_time ) self.upload_provenance(metadata) @@ -91,5 +102,4 @@ class DbRepoEntity(Entity): assert self.id is not None assert self.table_id is not None - df["id"] = self.id # add entity id to df self.dbrepo_connector.upload_data(df, str(self.table_id)) diff --git a/fairnb/entity/entity.py b/fairnb/entity/entity.py index 34675c632bc914bcc39a583a74aeb124ba145138..0875712014842934ad8c281a40ad8df2133060ee 100644 --- a/fairnb/entity/entity.py +++ b/fairnb/entity/entity.py @@ -2,6 +2,7 @@ import copy import logging from abc import ABC, abstractmethod from dataclasses import dataclass, field +from datetime import datetime from pathlib import Path import pandas as pd @@ -10,8 +11,8 @@ from fairnb.api.dbrepo import DBRepoConnector from fairnb.entity.entity_provenance import EntityProvenance -PROVENANCE_TABLE_NAME = "entity_provenance" -DEPENDENCY_TABLE_NAME = "entity_dependencies" +PROVENANCE_TABLE_NAME = "entity_provenance_test3" +DEPENDENCY_TABLE_NAME = "entity_dependencies_test3" LOG = logging.getLogger(__name__) # TODO: Upload Datetime objects as Timestamps instead of str @@ -69,7 +70,7 @@ class Entity(ABC): raise NotImplementedError @abstractmethod - def upload(self, executed_file: Path, dependencies=None): + def upload(self, executed_file: Path, dependencies: list, started_at=datetime.now(), ended_at=datetime.now()): """Upload this Entity""" raise NotImplementedError @@ -125,7 +126,7 @@ class Entity(ABC): # FIXME: create robust version of id retrieval, if possible row = df.iloc[df["id"].idxmax()] # get the newest row, as it should contain the correct data meta = EntityProvenance.from_series(row) - assert meta.creation_time == provenance.creation_time and meta.name == provenance.name + assert meta.started_at == provenance.started_at and meta.name == provenance.name self.id = meta.id self.metadata = meta @@ -139,7 +140,7 @@ class Entity(ABC): df = pd.DataFrame( { "entity_id": pd.Series(dtype="int"), - "depends_on": pd.Series(dtype="int"), + "was_derived_from": pd.Series(dtype="int"), } ) @@ -150,7 +151,7 @@ class Entity(ABC): df = pd.concat([ df, pd.DataFrame([{"entity_id": self.id, - "depends_on": dependency.id}]) + "was_derived_from": dependency.id}]) ]) else: LOG.warning("Dependency has no id, skipping dependency upload") @@ -161,17 +162,17 @@ class Entity(ABC): df = provenance.to_frame().drop("id", axis=1) return self.dbrepo_connector.create_table_if_not_exists( - df, PROVENANCE_TABLE_NAME, "A table containing Provence information on all persisted Entities." + df, PROVENANCE_TABLE_NAME, "Provence information on persisted Entities created by FAIRnb." ) def create_dependency_table_if_not_exists(self): df = pd.DataFrame( { "entity_id": pd.Series(dtype="int"), - "depends_on": pd.Series(dtype="int"), + "was_derived_from": pd.Series(dtype="int"), } ) return self.dbrepo_connector.create_table_if_not_exists( - df, DEPENDENCY_TABLE_NAME, "Entity dependencies on other entities" + df, DEPENDENCY_TABLE_NAME, "Entity dependencies, tracking the lineage of entities, according to wasDerivedFrom relation of PROV-O." ) diff --git a/fairnb/entity/entity_provenance.py b/fairnb/entity/entity_provenance.py index bcd551da7b0263c030ab9aad7583d63341aeb563..9fd0556f42b7469cfdda7b402e6ac945c3c75cf3 100644 --- a/fairnb/entity/entity_provenance.py +++ b/fairnb/entity/entity_provenance.py @@ -23,7 +23,8 @@ class EntityProvenance: branch: str # the branch of the repository, makes manual search of commit easier repo_uri: str # the uri of the repository, used to locate the repository executed_file: str # path to notebook which was executed to create the entity - creation_time: datetime # timestamp of creation time of entity + started_at: datetime # start time of execution where entity was created + ended_at: datetime # end time of execution where entity was created platform: str # platform on which the entity is uploaded (e.g. dbrepo, invenio, ...) @classmethod @@ -35,6 +36,8 @@ class EntityProvenance: type: str, uri: str, platform: str, + started_at: datetime, + ended_at: datetime ): repo = git.Repo(BASE_PATH) @@ -42,14 +45,10 @@ class EntityProvenance: branch = git_branch.name commit = git_branch.repo.commit().hexsha - # TODO: Better way to point to repo instead of ssh / https link - # --> more general approach independent of authentication repo_uri = git_branch.repo.remote().url if repo_uri.startswith("ssh://"): repo_uri = re.sub(":\d+/", "/", f"https://{repo_uri.split('@', 1)[1]}") - creation_time = datetime.now() - executed_file_rel = executed_file.resolve().relative_to(BASE_PATH) return cls( @@ -59,7 +58,8 @@ class EntityProvenance: uri=uri, commit=commit, repo_uri=repo_uri, - creation_time=creation_time, + started_at=started_at, + ended_at=ended_at, branch=branch, executed_file=executed_file_rel.as_posix(), type=type, @@ -74,14 +74,17 @@ class EntityProvenance: description=df["description"], uri=df["uri"], commit=df["commit"], - repo_uri=df["repo_uri"], + repo_uri=df["git_uri"], executed_file=df["executed_file"], - creation_time=datetime.strptime( - df["creation_time"], "%Y-%m-%d %H:%M:%S.%f" + started_at=datetime.strptime( + df["started_at"], "%Y-%m-%d %H:%M:%S.%f" ), # TODO: replace with '%F %T' + ended_at=datetime.strptime( + df["ended_at"], "%Y-%m-%d %H:%M:%S.%f" + ), branch=df["branch"], type=df["type"], - platform=df["platform"], + platform=df["repository"], ) def to_frame(self): @@ -92,11 +95,12 @@ class EntityProvenance: "description": pd.Series(self.description, dtype=str), "uri": pd.Series(self.uri, dtype=str), "commit": pd.Series(self.commit, dtype=str), - "repo_uri": pd.Series(self.repo_uri, dtype=str), + "git_uri": pd.Series(self.repo_uri, dtype=str), "executed_file": pd.Series(self.executed_file, dtype=str), - "creation_time": pd.Series(self.creation_time, dtype=str), + "started_at": pd.Series(self.started_at, dtype=str), + "ended_at": pd.Series(self.ended_at, dtype=str), "branch": pd.Series(self.branch, dtype=str), "type": pd.Series(self.type, dtype=str), - "platform": pd.Series(self.platform, dtype=str), + "repository": pd.Series(self.platform, dtype=str), } ) diff --git a/fairnb/entity/invenio_entity.py b/fairnb/entity/invenio_entity.py index f794105aa49c6ee1cf014d25134de2164d3cf6e1..64a680af93d0d3a1f40369de7c44dfc8e69a6df0 100644 --- a/fairnb/entity/invenio_entity.py +++ b/fairnb/entity/invenio_entity.py @@ -1,4 +1,5 @@ from dataclasses import dataclass, field +from datetime import datetime from pathlib import Path from fairnb.api.dbrepo import DBRepoConnector @@ -12,6 +13,7 @@ class InvenioEntity(Entity): invenio_manager: InvenioManager = field(init=True, default=None) record_metadata: dict = field(init=True, default=None) publish_record: bool = field(init=True, default=False) + platform: str = field(init=False, default="https://doi.org/10.17616/R31NJMYD") @classmethod def new( @@ -60,7 +62,7 @@ class InvenioEntity(Entity): self.invenio_manager.record_id = self.metadata.uri.split('/')[-1] - def upload(self, executed_file: Path, dependencies: list[Entity] = None): + def upload(self, executed_file: Path, dependencies: list[Entity] = None, started_at=datetime.now(), ended_at=datetime.now()): dir_path: Path regex: str @@ -89,9 +91,11 @@ class InvenioEntity(Entity): name=self.name, description=self.description, executed_file=executed_file, - uri=uri, + uri=uri.replace('/api', ''), type=self.type, - platform="invenio", + platform=self.platform, + started_at=started_at, + ended_at=ended_at, ) self.upload_provenance(metadata) diff --git a/fairnb/executor.py b/fairnb/executor.py index 9c859b00aadfa99fd35145ca0ac08a14f26d0359..4b91711480ce2fb840968a19414eeb59fab3d4a4 100644 --- a/fairnb/executor.py +++ b/fairnb/executor.py @@ -1,22 +1,33 @@ +from datetime import datetime + import papermill -from nbconvert.preprocessors import ExecutePreprocessor from fairnb.entity.entity import Entity from fairnb.nb_config import NbConfig class Executor: + @staticmethod def download_dependencies(nb_config: NbConfig, require_download: bool = False): - """ Set up the dependencies to allow for later execution """ + """Set up the dependencies to allow for later execution""" # download dependencies if not already present - [entity.download() for entity in nb_config.dependencies - if (not entity.exists_locally()) or require_download] + [ + entity.download() + for entity in nb_config.dependencies + if (not entity.exists_locally()) or require_download + ] @classmethod - def execute(cls, nb_config: NbConfig, require_download: bool = False, only_local: bool = False, **kwargs): - """ Execute the notebook specified in nb_config by providing nb_config.dependencies + def execute( + cls, + nb_config: NbConfig, + require_download: bool = False, + only_local: bool = False, + **kwargs + ): + """Execute the notebook specified in nb_config by providing nb_config.dependencies and upload the generated Entities if only_local is False. """ @@ -25,7 +36,12 @@ class Executor: if not only_local: cls.download_dependencies(nb_config, require_download) + started_at = datetime.now() cls.execute_notebook(nb_config) + ended_at = datetime.now() + + nb_config.started_at = started_at + nb_config.ended_at = ended_at if not only_local: cls.upload_entities(nb_config) @@ -39,9 +55,15 @@ class Executor: nb_config.nb_location.resolve(), nb_config.nb_location.resolve(), parameters=dict( - INPUT_PATHS={entity.type: entity.location.__str__() for entity in nb_config.dependencies}, - OUTPUT_PATHS={entity.type: entity.location.__str__() for entity in nb_config.entities} - ) + INPUT_PATHS={ + entity.type: entity.location.__str__() + for entity in nb_config.dependencies + }, + OUTPUT_PATHS={ + entity.type: entity.location.__str__() + for entity in nb_config.entities + }, + ), ) @staticmethod @@ -49,36 +71,9 @@ class Executor: # load generated entity and upload it for entity in nb_config.entities: # use inspect to get path of caller - entity.upload(nb_config.nb_location, nb_config.dependencies) - - def reproduce_entity(self, entity: Entity): - pass - - # TODO: additional functionality of executor class - # class ExperimentReproducer: - # def __init__(self): - # pass - # # self.config = self.configure() - # - # def entity(self, creation_func, *args, input_entity: [str] = None, **kwargs): - # """ Saves the created entity which is returned by the creation_func as a DRO """ - # - # if input_entity is not None: - # # TODO: collect input entities - # collected_entities = [] - # for entity in input_entities: - # collected_entities.append(self.collect_entity(entity)) - # - # result = creation_func(args, input_entities, kwargs) - # - # return result - # - # def db_repo_entity(self, function: Callable[..., pd.DataFrame], *args, **kwargs): - # """ Saves the created dataframe to DBRepo while citing the inputs. """ - # df = function(args, kwargs) - # - # # TODO: upload code to DBRepo - # - # def recreate_entity(self, uri: str): - # """ Checkout correct commit, download required artefacts and execute correct artefact code. """ - # pass + entity.upload( + nb_config.nb_location, + nb_config.dependencies, + nb_config.started_at, + nb_config.ended_at + ) diff --git a/fairnb/nb_config.py b/fairnb/nb_config.py index e7f99518113e7ac4921848ed97b684e7ed530ce0..71d8a21ef786241cc8f2276a4a4dff395647e05f 100644 --- a/fairnb/nb_config.py +++ b/fairnb/nb_config.py @@ -1,4 +1,5 @@ from dataclasses import dataclass, field +from datetime import datetime from pathlib import Path from fairnb.entity.entity import Entity @@ -10,6 +11,8 @@ class NbConfig: entities: list[Entity] dependencies: list[Entity] nb_output_location: Path = field(init=True, default=None) + started_at: datetime = field(init=True, default=datetime.now()) + ended_at: datetime = field(init=True, default=datetime.now()) def __post_init__(self): if not self.nb_output_location: diff --git a/notebooks/1_audio_files.ipynb b/notebooks/1_audio_files.ipynb index 14a85d7af5546b9d8dcdf619168915fcb5ad976b..8e1c4d52b4c83ea49c3f70d23499e8662a68f476 100644 --- a/notebooks/1_audio_files.ipynb +++ b/notebooks/1_audio_files.ipynb @@ -9,10 +9,10 @@ "outputs_hidden": false }, "papermill": { - "duration": 0.00365, - "end_time": "2023-10-10T20:19:34.354097", + "duration": 0.011665, + "end_time": "2024-02-14T15:11:50.335199", "exception": false, - "start_time": "2023-10-10T20:19:34.350447", + "start_time": "2024-02-14T15:11:50.323534", "status": "completed" }, "tags": [] @@ -30,19 +30,19 @@ "metadata": { "collapsed": false, "execution": { - "iopub.execute_input": "2023-10-10T20:19:34.369926Z", - "iopub.status.busy": "2023-10-10T20:19:34.368623Z", - "iopub.status.idle": "2023-10-10T20:19:34.394688Z", - "shell.execute_reply": "2023-10-10T20:19:34.393354Z" + "iopub.execute_input": "2024-02-14T15:11:50.362588Z", + "iopub.status.busy": "2024-02-14T15:11:50.361890Z", + "iopub.status.idle": "2024-02-14T15:11:50.376714Z", + "shell.execute_reply": "2024-02-14T15:11:50.375427Z" }, "jupyter": { "outputs_hidden": false }, "papermill": { - "duration": 0.037909, - "end_time": "2023-10-10T20:19:34.398270", + "duration": 0.03707, + "end_time": "2024-02-14T15:11:50.383410", "exception": false, - "start_time": "2023-10-10T20:19:34.360361", + "start_time": "2024-02-14T15:11:50.346340", "status": "completed" }, "tags": [] @@ -62,16 +62,16 @@ "id": "1b4e6b01", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:19:34.412182Z", - "iopub.status.busy": "2023-10-10T20:19:34.410878Z", - "iopub.status.idle": "2023-10-10T20:19:34.418072Z", - "shell.execute_reply": "2023-10-10T20:19:34.416762Z" + "iopub.execute_input": "2024-02-14T15:11:50.393351Z", + "iopub.status.busy": "2024-02-14T15:11:50.392977Z", + "iopub.status.idle": "2024-02-14T15:11:50.398211Z", + "shell.execute_reply": "2024-02-14T15:11:50.396892Z" }, "papermill": { - "duration": 0.0178, - "end_time": "2023-10-10T20:19:34.421245", + "duration": 0.016942, + "end_time": "2024-02-14T15:11:50.404602", "exception": false, - "start_time": "2023-10-10T20:19:34.403445", + "start_time": "2024-02-14T15:11:50.387660", "status": "completed" }, "tags": [ @@ -90,19 +90,19 @@ { "cell_type": "code", "execution_count": 3, - "id": "a0c3731f", + "id": "15dea136", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:19:34.432077Z", - "iopub.status.busy": "2023-10-10T20:19:34.431120Z", - "iopub.status.idle": "2023-10-10T20:19:34.436917Z", - "shell.execute_reply": "2023-10-10T20:19:34.435800Z" + "iopub.execute_input": "2024-02-14T15:11:50.419109Z", + "iopub.status.busy": "2024-02-14T15:11:50.418653Z", + "iopub.status.idle": "2024-02-14T15:11:50.424595Z", + "shell.execute_reply": "2024-02-14T15:11:50.422937Z" }, "papermill": { - "duration": 0.014193, - "end_time": "2023-10-10T20:19:34.439709", + "duration": 0.0277, + "end_time": "2024-02-14T15:11:50.438068", "exception": false, - "start_time": "2023-10-10T20:19:34.425516", + "start_time": "2024-02-14T15:11:50.410368", "status": "completed" }, "tags": [ @@ -114,7 +114,7 @@ "# Parameters\n", "INPUT_PATHS = {}\n", "OUTPUT_PATHS = {\n", - " \"audio_tar\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/1_audio_files/output/emotifymusic.tar.gz\"\n", + " \"audio_tar\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/1_audio_files/output/emotifymusic.tar.gz\"\n", "}\n" ] }, @@ -125,19 +125,19 @@ "metadata": { "collapsed": false, "execution": { - "iopub.execute_input": "2023-10-10T20:19:34.446770Z", - "iopub.status.busy": "2023-10-10T20:19:34.446426Z", - "iopub.status.idle": "2023-10-10T20:19:36.570981Z", - "shell.execute_reply": "2023-10-10T20:19:36.570217Z" + "iopub.execute_input": "2024-02-14T15:11:50.448192Z", + "iopub.status.busy": "2024-02-14T15:11:50.447685Z", + "iopub.status.idle": "2024-02-14T15:11:53.138587Z", + "shell.execute_reply": "2024-02-14T15:11:53.137552Z" }, "jupyter": { "outputs_hidden": false }, "papermill": { - "duration": 2.131337, - "end_time": "2023-10-10T20:19:36.573889", + "duration": 2.702705, + "end_time": "2024-02-14T15:11:53.144011", "exception": false, - "start_time": "2023-10-10T20:19:34.442552", + "start_time": "2024-02-14T15:11:50.441306", "status": "completed" }, "tags": [] @@ -161,19 +161,19 @@ "metadata": { "collapsed": false, "execution": { - "iopub.execute_input": "2023-10-10T20:19:36.590650Z", - "iopub.status.busy": "2023-10-10T20:19:36.590408Z", - "iopub.status.idle": "2023-10-10T20:19:37.253257Z", - "shell.execute_reply": "2023-10-10T20:19:37.252729Z" + "iopub.execute_input": "2024-02-14T15:11:53.158827Z", + "iopub.status.busy": "2024-02-14T15:11:53.157988Z", + "iopub.status.idle": "2024-02-14T15:11:53.901886Z", + "shell.execute_reply": "2024-02-14T15:11:53.901046Z" }, "jupyter": { "outputs_hidden": false }, "papermill": { - "duration": 0.673083, - "end_time": "2023-10-10T20:19:37.254793", + "duration": 0.756802, + "end_time": "2024-02-14T15:11:53.905719", "exception": false, - "start_time": "2023-10-10T20:19:36.581710", + "start_time": "2024-02-14T15:11:53.148917", "status": "completed" }, "tags": [] @@ -195,19 +195,19 @@ "metadata": { "collapsed": false, "execution": { - "iopub.execute_input": "2023-10-10T20:19:37.268248Z", - "iopub.status.busy": "2023-10-10T20:19:37.267971Z", - "iopub.status.idle": "2023-10-10T20:19:50.606898Z", - "shell.execute_reply": "2023-10-10T20:19:50.606324Z" + "iopub.execute_input": "2024-02-14T15:11:53.917905Z", + "iopub.status.busy": "2024-02-14T15:11:53.917362Z", + "iopub.status.idle": "2024-02-14T15:12:08.760320Z", + "shell.execute_reply": "2024-02-14T15:12:08.759100Z" }, "jupyter": { "outputs_hidden": false }, "papermill": { - "duration": 13.347122, - "end_time": "2023-10-10T20:19:50.608576", + "duration": 14.855593, + "end_time": "2024-02-14T15:12:08.766131", "exception": false, - "start_time": "2023-10-10T20:19:37.261454", + "start_time": "2024-02-14T15:11:53.910538", "status": "completed" }, "tags": [] @@ -242,19 +242,19 @@ }, "papermill": { "default_parameters": {}, - "duration": 17.279795, - "end_time": "2023-10-10T20:19:50.829787", + "duration": 19.80674, + "end_time": "2024-02-14T15:12:08.999649", "environment_variables": {}, "exception": null, - "input_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/1_audio_files.ipynb", - "output_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/1_audio_files.ipynb", + "input_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/1_audio_files.ipynb", + "output_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/1_audio_files.ipynb", "parameters": { "INPUT_PATHS": {}, "OUTPUT_PATHS": { - "audio_tar": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/1_audio_files/output/emotifymusic.tar.gz" + "audio_tar": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/1_audio_files/output/emotifymusic.tar.gz" } }, - "start_time": "2023-10-10T20:19:33.549992", + "start_time": "2024-02-14T15:11:49.192909", "version": "2.4.0" } }, diff --git a/notebooks/3_aggregate_features.ipynb b/notebooks/3_aggregate_features.ipynb index 9dfa0965c4ef81176a7dd959dbff279d742479b7..d053984db13890b6e523de2221e2aaac3c3f9486 100644 --- a/notebooks/3_aggregate_features.ipynb +++ b/notebooks/3_aggregate_features.ipynb @@ -5,10 +5,10 @@ "id": "f48a4573", "metadata": { "papermill": { - "duration": 0.005214, - "end_time": "2023-10-10T20:29:39.798977", + "duration": 0.007574, + "end_time": "2024-02-15T15:10:25.602842", "exception": false, - "start_time": "2023-10-10T20:29:39.793763", + "start_time": "2024-02-15T15:10:25.595268", "status": "completed" }, "tags": [] @@ -30,19 +30,19 @@ }, "collapsed": true, "execution": { - "iopub.execute_input": "2023-10-10T20:29:39.811180Z", - "iopub.status.busy": "2023-10-10T20:29:39.810870Z", - "iopub.status.idle": "2023-10-10T20:29:40.112894Z", - "shell.execute_reply": "2023-10-10T20:29:40.112151Z" + "iopub.execute_input": "2024-02-15T15:10:25.622644Z", + "iopub.status.busy": "2024-02-15T15:10:25.621412Z", + "iopub.status.idle": "2024-02-15T15:10:26.300635Z", + "shell.execute_reply": "2024-02-15T15:10:26.298854Z" }, "jupyter": { "outputs_hidden": true }, "papermill": { - "duration": 0.309491, - "end_time": "2023-10-10T20:29:40.114738", + "duration": 0.697649, + "end_time": "2024-02-15T15:10:26.308493", "exception": false, - "start_time": "2023-10-10T20:29:39.805247", + "start_time": "2024-02-15T15:10:25.610844", "status": "completed" }, "tags": [] @@ -61,16 +61,16 @@ "id": "26f640e0", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:40.122700Z", - "iopub.status.busy": "2023-10-10T20:29:40.122309Z", - "iopub.status.idle": "2023-10-10T20:29:40.127330Z", - "shell.execute_reply": "2023-10-10T20:29:40.126502Z" + "iopub.execute_input": "2024-02-15T15:10:26.329340Z", + "iopub.status.busy": "2024-02-15T15:10:26.327934Z", + "iopub.status.idle": "2024-02-15T15:10:26.348148Z", + "shell.execute_reply": "2024-02-15T15:10:26.345286Z" }, "papermill": { - "duration": 0.010905, - "end_time": "2023-10-10T20:29:40.128867", + "duration": 0.050433, + "end_time": "2024-02-15T15:10:26.366702", "exception": false, - "start_time": "2023-10-10T20:29:40.117962", + "start_time": "2024-02-15T15:10:26.316269", "status": "completed" }, "tags": [ @@ -94,19 +94,19 @@ { "cell_type": "code", "execution_count": 3, - "id": "70fd8bf2", + "id": "88ecee07", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:40.134992Z", - "iopub.status.busy": "2023-10-10T20:29:40.134692Z", - "iopub.status.idle": "2023-10-10T20:29:40.138145Z", - "shell.execute_reply": "2023-10-10T20:29:40.137550Z" + "iopub.execute_input": "2024-02-15T15:10:26.382035Z", + "iopub.status.busy": "2024-02-15T15:10:26.381041Z", + "iopub.status.idle": "2024-02-15T15:10:26.389326Z", + "shell.execute_reply": "2024-02-15T15:10:26.387547Z" }, "papermill": { - "duration": 0.008147, - "end_time": "2023-10-10T20:29:40.139591", + "duration": 0.034885, + "end_time": "2024-02-15T15:10:26.405941", "exception": false, - "start_time": "2023-10-10T20:29:40.131444", + "start_time": "2024-02-15T15:10:26.371056", "status": "completed" }, "tags": [ @@ -117,10 +117,10 @@ "source": [ "# Parameters\n", "INPUT_PATHS = {\n", - " \"raw_features\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/3_aggregate_features/input/raw_features.csv\"\n", + " \"raw_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv\"\n", "}\n", "OUTPUT_PATHS = {\n", - " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/3_aggregate_features/output/features.csv\"\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv\"\n", "}\n" ] }, @@ -130,16 +130,16 @@ "id": "c5d9d980", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:40.145046Z", - "iopub.status.busy": "2023-10-10T20:29:40.144752Z", - "iopub.status.idle": "2023-10-10T20:29:44.318757Z", - "shell.execute_reply": "2023-10-10T20:29:44.318022Z" + "iopub.execute_input": "2024-02-15T15:10:26.423067Z", + "iopub.status.busy": "2024-02-15T15:10:26.421685Z", + "iopub.status.idle": "2024-02-15T15:10:39.968586Z", + "shell.execute_reply": "2024-02-15T15:10:39.967418Z" }, "papermill": { - "duration": 4.179755, - "end_time": "2023-10-10T20:29:44.321578", + "duration": 13.561331, + "end_time": "2024-02-15T15:10:39.974046", "exception": false, - "start_time": "2023-10-10T20:29:40.141823", + "start_time": "2024-02-15T15:10:26.412715", "status": "completed" }, "tags": [] @@ -156,16 +156,16 @@ "id": "99f75f47", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:44.327809Z", - "iopub.status.busy": "2023-10-10T20:29:44.327547Z", - "iopub.status.idle": "2023-10-10T20:29:48.186600Z", - "shell.execute_reply": "2023-10-10T20:29:48.186091Z" + "iopub.execute_input": "2024-02-15T15:10:39.992721Z", + "iopub.status.busy": "2024-02-15T15:10:39.992127Z", + "iopub.status.idle": "2024-02-15T15:10:47.425790Z", + "shell.execute_reply": "2024-02-15T15:10:47.423657Z" }, "papermill": { - "duration": 3.865747, - "end_time": "2023-10-10T20:29:48.189794", + "duration": 7.455977, + "end_time": "2024-02-15T15:10:47.436642", "exception": false, - "start_time": "2023-10-10T20:29:44.324047", + "start_time": "2024-02-15T15:10:39.980665", "status": "completed" }, "tags": [] @@ -247,10 +247,10 @@ " <td>-562.85785</td>\n", " <td>-96.164795</td>\n", " <td>-219.259016</td>\n", - " <td>53.561839</td>\n", + " <td>53.561838</td>\n", " <td>-0.772320</td>\n", " <td>0.029056</td>\n", - " <td>259.63272</td>\n", + " <td>259.63270</td>\n", " <td>215.094182</td>\n", " <td>...</td>\n", " <td>-27.458416</td>\n", @@ -258,8 +258,8 @@ " <td>0.484271</td>\n", " <td>8.660648</td>\n", " <td>-0.479016</td>\n", - " <td>-28.989979</td>\n", - " <td>27.533707</td>\n", + " <td>-28.989983</td>\n", + " <td>27.533710</td>\n", " <td>0.952658</td>\n", " <td>10.477735</td>\n", " <td>-0.185771</td>\n", @@ -283,7 +283,7 @@ " <td>8.185075</td>\n", " <td>0.208425</td>\n", " <td>-38.095375</td>\n", - " <td>31.397882</td>\n", + " <td>31.397880</td>\n", " <td>-1.494916</td>\n", " <td>10.917299</td>\n", " <td>0.020985</td>\n", @@ -306,8 +306,8 @@ " <td>-3.781627</td>\n", " <td>9.191043</td>\n", " <td>0.260886</td>\n", - " <td>-22.667439</td>\n", - " <td>50.992905</td>\n", + " <td>-22.667440</td>\n", + " <td>50.992897</td>\n", " <td>1.600777</td>\n", " <td>10.125545</td>\n", " <td>0.595763</td>\n", @@ -323,14 +323,14 @@ " <td>-0.366586</td>\n", " <td>0.000000</td>\n", " <td>194.26416</td>\n", - " <td>148.226648</td>\n", + " <td>148.226647</td>\n", " <td>...</td>\n", - " <td>-44.843815</td>\n", + " <td>-44.843810</td>\n", " <td>28.490644</td>\n", " <td>-6.242015</td>\n", " <td>10.546545</td>\n", " <td>0.341848</td>\n", - " <td>-25.040886</td>\n", + " <td>-25.040888</td>\n", " <td>46.878204</td>\n", " <td>1.844494</td>\n", " <td>11.160392</td>\n", @@ -381,7 +381,7 @@ " <td>-24.712723</td>\n", " <td>23.410387</td>\n", " <td>-4.502398</td>\n", - " <td>6.687983</td>\n", + " <td>6.687984</td>\n", " <td>0.238807</td>\n", " </tr>\n", " <tr>\n", @@ -389,21 +389,21 @@ " <td>rock_96.mp3</td>\n", " <td>rock</td>\n", " <td>-541.23600</td>\n", - " <td>27.163332</td>\n", + " <td>27.163334</td>\n", " <td>-119.113996</td>\n", " <td>58.420684</td>\n", " <td>-0.957699</td>\n", - " <td>-7.415959</td>\n", + " <td>-7.415961</td>\n", " <td>210.49246</td>\n", " <td>125.453699</td>\n", " <td>...</td>\n", " <td>-37.584858</td>\n", - " <td>28.087940</td>\n", + " <td>28.087936</td>\n", " <td>-9.704238</td>\n", " <td>8.447620</td>\n", " <td>0.112760</td>\n", " <td>-38.147890</td>\n", - " <td>21.814400</td>\n", + " <td>21.814402</td>\n", " <td>-8.249507</td>\n", " <td>7.807756</td>\n", " <td>0.071968</td>\n", @@ -427,7 +427,7 @@ " <td>7.727378</td>\n", " <td>0.207489</td>\n", " <td>-29.497524</td>\n", - " <td>25.410656</td>\n", + " <td>25.410654</td>\n", " <td>-3.356614</td>\n", " <td>8.170526</td>\n", " <td>0.160330</td>\n", @@ -442,16 +442,16 @@ " <td>52.444200</td>\n", " <td>-1.705641</td>\n", " <td>0.000000</td>\n", - " <td>187.04272</td>\n", + " <td>187.04274</td>\n", " <td>96.440874</td>\n", " <td>...</td>\n", - " <td>-26.967852</td>\n", - " <td>8.714736</td>\n", + " <td>-26.967848</td>\n", + " <td>8.714737</td>\n", " <td>-9.511491</td>\n", " <td>5.551820</td>\n", " <td>-0.025604</td>\n", - " <td>-23.020082</td>\n", - " <td>13.948639</td>\n", + " <td>-23.020084</td>\n", + " <td>13.948638</td>\n", " <td>-2.664985</td>\n", " <td>5.051498</td>\n", " <td>-0.258407</td>\n", @@ -465,17 +465,17 @@ " <td>-49.380943</td>\n", " <td>54.045627</td>\n", " <td>-0.863093</td>\n", - " <td>-32.930650</td>\n", + " <td>-32.930653</td>\n", " <td>191.73538</td>\n", " <td>93.971242</td>\n", " <td>...</td>\n", " <td>-21.929403</td>\n", " <td>17.050608</td>\n", " <td>-5.296691</td>\n", - " <td>5.894962</td>\n", + " <td>5.894963</td>\n", " <td>0.390705</td>\n", " <td>-20.983192</td>\n", - " <td>29.312021</td>\n", + " <td>29.312023</td>\n", " <td>-0.321836</td>\n", " <td>6.571660</td>\n", " <td>0.384794</td>\n", @@ -494,36 +494,36 @@ "4 classical_12.mp3 classical -562.67523 -148.133560 -270.975406 \n", ".. ... ... ... ... ... \n", "395 rock_95.mp3 rock -553.11010 -5.218835 -193.506047 \n", - "396 rock_96.mp3 rock -541.23600 27.163332 -119.113996 \n", + "396 rock_96.mp3 rock -541.23600 27.163334 -119.113996 \n", "397 rock_97.mp3 rock -518.49500 58.526745 -66.267744 \n", "398 rock_98.mp3 rock -518.64307 53.555115 -45.734517 \n", "399 rock_99.mp3 rock -544.70310 75.612130 -49.380943 \n", "\n", " 0_std 0_skew 1_min 1_max 1_mean ... 38_min \\\n", "0 51.142183 -0.468374 0.000000 178.75162 111.332342 ... -44.098070 \n", - "1 53.561839 -0.772320 0.029056 259.63272 215.094182 ... -27.458416 \n", + "1 53.561838 -0.772320 0.029056 259.63270 215.094182 ... -27.458416 \n", "2 83.381622 -2.587179 0.000000 190.47589 112.471713 ... -27.335688 \n", "3 76.246992 -2.402418 0.000000 159.42575 99.853645 ... -31.774948 \n", - "4 52.191182 -0.366586 0.000000 194.26416 148.226648 ... -44.843815 \n", + "4 52.191182 -0.366586 0.000000 194.26416 148.226647 ... -44.843810 \n", ".. ... ... ... ... ... ... ... \n", "395 76.869437 -0.201055 -89.948746 201.18045 111.724191 ... -27.043941 \n", - "396 58.420684 -0.957699 -7.415959 210.49246 125.453699 ... -37.584858 \n", + "396 58.420684 -0.957699 -7.415961 210.49246 125.453699 ... -37.584858 \n", "397 65.635619 -0.898026 -58.824410 175.20135 99.288265 ... -29.620445 \n", - "398 52.444200 -1.705641 0.000000 187.04272 96.440874 ... -26.967852 \n", - "399 54.045627 -0.863093 -32.930650 191.73538 93.971242 ... -21.929403 \n", + "398 52.444200 -1.705641 0.000000 187.04274 96.440874 ... -26.967848 \n", + "399 54.045627 -0.863093 -32.930653 191.73538 93.971242 ... -21.929403 \n", "\n", " 38_max 38_mean 38_std 38_skew 39_min 39_max 39_mean \\\n", "0 47.308060 -3.713503 16.553984 0.230691 -46.794480 49.352516 -2.282116 \n", - "1 29.811110 0.484271 8.660648 -0.479016 -28.989979 27.533707 0.952658 \n", - "2 27.610388 -0.333233 8.185075 0.208425 -38.095375 31.397882 -1.494916 \n", - "3 31.500881 -3.781627 9.191043 0.260886 -22.667439 50.992905 1.600777 \n", - "4 28.490644 -6.242015 10.546545 0.341848 -25.040886 46.878204 1.844494 \n", + "1 29.811110 0.484271 8.660648 -0.479016 -28.989983 27.533710 0.952658 \n", + "2 27.610388 -0.333233 8.185075 0.208425 -38.095375 31.397880 -1.494916 \n", + "3 31.500881 -3.781627 9.191043 0.260886 -22.667440 50.992897 1.600777 \n", + "4 28.490644 -6.242015 10.546545 0.341848 -25.040888 46.878204 1.844494 \n", ".. ... ... ... ... ... ... ... \n", "395 22.451445 -7.234634 8.471853 0.753855 -24.712723 23.410387 -4.502398 \n", - "396 28.087940 -9.704238 8.447620 0.112760 -38.147890 21.814400 -8.249507 \n", - "397 26.325895 -5.722825 7.727378 0.207489 -29.497524 25.410656 -3.356614 \n", - "398 8.714736 -9.511491 5.551820 -0.025604 -23.020082 13.948639 -2.664985 \n", - "399 17.050608 -5.296691 5.894962 0.390705 -20.983192 29.312021 -0.321836 \n", + "396 28.087936 -9.704238 8.447620 0.112760 -38.147890 21.814402 -8.249507 \n", + "397 26.325895 -5.722825 7.727378 0.207489 -29.497524 25.410654 -3.356614 \n", + "398 8.714737 -9.511491 5.551820 -0.025604 -23.020084 13.948638 -2.664985 \n", + "399 17.050608 -5.296691 5.894963 0.390705 -20.983192 29.312023 -0.321836 \n", "\n", " 39_std 39_skew \n", "0 15.285639 0.171462 \n", @@ -532,7 +532,7 @@ "3 10.125545 0.595763 \n", "4 11.160392 0.503120 \n", ".. ... ... \n", - "395 6.687983 0.238807 \n", + "395 6.687984 0.238807 \n", "396 7.807756 0.071968 \n", "397 8.170526 0.160330 \n", "398 5.051498 -0.258407 \n", @@ -571,16 +571,16 @@ "id": "4ac5c765", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:48.197061Z", - "iopub.status.busy": "2023-10-10T20:29:48.196826Z", - "iopub.status.idle": "2023-10-10T20:29:48.273847Z", - "shell.execute_reply": "2023-10-10T20:29:48.273103Z" + "iopub.execute_input": "2024-02-15T15:10:47.454568Z", + "iopub.status.busy": "2024-02-15T15:10:47.452996Z", + "iopub.status.idle": "2024-02-15T15:10:47.646600Z", + "shell.execute_reply": "2024-02-15T15:10:47.644995Z" }, "papermill": { - "duration": 0.082818, - "end_time": "2023-10-10T20:29:48.275380", + "duration": 0.209091, + "end_time": "2024-02-15T15:10:47.653114", "exception": false, - "start_time": "2023-10-10T20:29:48.192562", + "start_time": "2024-02-15T15:10:47.444023", "status": "completed" }, "tags": [] @@ -617,21 +617,21 @@ }, "papermill": { "default_parameters": {}, - "duration": 9.80761, - "end_time": "2023-10-10T20:29:48.599137", + "duration": 24.653494, + "end_time": "2024-02-15T15:10:48.496631", "environment_variables": {}, "exception": null, - "input_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/3_aggregate_features.ipynb", - "output_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/3_aggregate_features.ipynb", + "input_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/3_aggregate_features.ipynb", + "output_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/3_aggregate_features.ipynb", "parameters": { "INPUT_PATHS": { - "raw_features": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/3_aggregate_features/input/raw_features.csv" + "raw_features": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv" }, "OUTPUT_PATHS": { - "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/3_aggregate_features/output/features.csv" + "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv" } }, - "start_time": "2023-10-10T20:29:38.791527", + "start_time": "2024-02-15T15:10:23.843137", "version": "2.4.0" } }, diff --git a/notebooks/4_split.ipynb b/notebooks/4_split.ipynb index 371f87d8020e8c5e32f3fd71f1815f9d4274225e..1f1b73f21b5eeb7d2191514602fc550b2a8c6d6e 100644 --- a/notebooks/4_split.ipynb +++ b/notebooks/4_split.ipynb @@ -5,10 +5,10 @@ "id": "e92b4fe9", "metadata": { "papermill": { - "duration": 0.005822, - "end_time": "2023-10-10T20:29:52.589509", + "duration": 0.049834, + "end_time": "2024-02-15T10:33:02.348237", "exception": false, - "start_time": "2023-10-10T20:29:52.583687", + "start_time": "2024-02-15T10:33:02.298403", "status": "completed" }, "tags": [] @@ -23,16 +23,16 @@ "id": "5f1fae44", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.604063Z", - "iopub.status.busy": "2023-10-10T20:29:52.602712Z", - "iopub.status.idle": "2023-10-10T20:29:52.903037Z", - "shell.execute_reply": "2023-10-10T20:29:52.902341Z" + "iopub.execute_input": "2024-02-15T10:33:02.466247Z", + "iopub.status.busy": "2024-02-15T10:33:02.465228Z", + "iopub.status.idle": "2024-02-15T10:33:02.788415Z", + "shell.execute_reply": "2024-02-15T10:33:02.786729Z" }, "papermill": { - "duration": 0.310276, - "end_time": "2023-10-10T20:29:52.905670", + "duration": 0.375883, + "end_time": "2024-02-15T10:33:02.792965", "exception": false, - "start_time": "2023-10-10T20:29:52.595394", + "start_time": "2024-02-15T10:33:02.417082", "status": "completed" }, "tags": [] @@ -51,16 +51,16 @@ "metadata": { "collapsed": false, "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.911502Z", - "iopub.status.busy": "2023-10-10T20:29:52.911091Z", - "iopub.status.idle": "2023-10-10T20:29:52.915967Z", - "shell.execute_reply": "2023-10-10T20:29:52.915019Z" + "iopub.execute_input": "2024-02-15T10:33:02.889367Z", + "iopub.status.busy": "2024-02-15T10:33:02.888720Z", + "iopub.status.idle": "2024-02-15T10:33:02.896405Z", + "shell.execute_reply": "2024-02-15T10:33:02.894335Z" }, "papermill": { - "duration": 0.009356, - "end_time": "2023-10-10T20:29:52.917383", + "duration": 0.064899, + "end_time": "2024-02-15T10:33:02.906693", "exception": false, - "start_time": "2023-10-10T20:29:52.908027", + "start_time": "2024-02-15T10:33:02.841794", "status": "completed" }, "tags": [ @@ -83,19 +83,19 @@ { "cell_type": "code", "execution_count": 3, - "id": "d8169758", + "id": "e99ca0ba", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.922218Z", - "iopub.status.busy": "2023-10-10T20:29:52.921930Z", - "iopub.status.idle": "2023-10-10T20:29:52.925542Z", - "shell.execute_reply": "2023-10-10T20:29:52.924834Z" + "iopub.execute_input": "2024-02-15T10:33:03.003765Z", + "iopub.status.busy": "2024-02-15T10:33:03.002863Z", + "iopub.status.idle": "2024-02-15T10:33:03.010409Z", + "shell.execute_reply": "2024-02-15T10:33:03.008249Z" }, "papermill": { - "duration": 0.007457, - "end_time": "2023-10-10T20:29:52.926785", + "duration": 0.069972, + "end_time": "2024-02-15T10:33:03.021426", "exception": false, - "start_time": "2023-10-10T20:29:52.919328", + "start_time": "2024-02-15T10:33:02.951454", "status": "completed" }, "tags": [ @@ -106,10 +106,10 @@ "source": [ "# Parameters\n", "INPUT_PATHS = {\n", - " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/4_split/input/features.csv\"\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv\"\n", "}\n", "OUTPUT_PATHS = {\n", - " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/4_split/output/split.csv\"\n", + " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv\"\n", "}\n" ] }, @@ -119,16 +119,16 @@ "id": "a4cc6800", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.931298Z", - "iopub.status.busy": "2023-10-10T20:29:52.931087Z", - "iopub.status.idle": "2023-10-10T20:29:52.953647Z", - "shell.execute_reply": "2023-10-10T20:29:52.952884Z" + "iopub.execute_input": "2024-02-15T10:33:03.121021Z", + "iopub.status.busy": "2024-02-15T10:33:03.120049Z", + "iopub.status.idle": "2024-02-15T10:33:03.154959Z", + "shell.execute_reply": "2024-02-15T10:33:03.153440Z" }, "papermill": { - "duration": 0.026646, - "end_time": "2023-10-10T20:29:52.955241", + "duration": 0.088636, + "end_time": "2024-02-15T10:33:03.160305", "exception": false, - "start_time": "2023-10-10T20:29:52.928595", + "start_time": "2024-02-15T10:33:03.071669", "status": "completed" }, "tags": [] @@ -149,16 +149,16 @@ "id": "a186d0c4", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.960691Z", - "iopub.status.busy": "2023-10-10T20:29:52.960246Z", - "iopub.status.idle": "2023-10-10T20:29:52.967937Z", - "shell.execute_reply": "2023-10-10T20:29:52.967204Z" + "iopub.execute_input": "2024-02-15T10:33:03.249870Z", + "iopub.status.busy": "2024-02-15T10:33:03.249084Z", + "iopub.status.idle": "2024-02-15T10:33:03.262809Z", + "shell.execute_reply": "2024-02-15T10:33:03.261402Z" }, "papermill": { - "duration": 0.011851, - "end_time": "2023-10-10T20:29:52.969363", + "duration": 0.065106, + "end_time": "2024-02-15T10:33:03.267832", "exception": false, - "start_time": "2023-10-10T20:29:52.957512", + "start_time": "2024-02-15T10:33:03.202726", "status": "completed" }, "tags": [] @@ -188,16 +188,16 @@ "id": "091e0641", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:52.976324Z", - "iopub.status.busy": "2023-10-10T20:29:52.975376Z", - "iopub.status.idle": "2023-10-10T20:29:52.997935Z", - "shell.execute_reply": "2023-10-10T20:29:52.996626Z" + "iopub.execute_input": "2024-02-15T10:33:03.365710Z", + "iopub.status.busy": "2024-02-15T10:33:03.364966Z", + "iopub.status.idle": "2024-02-15T10:33:03.383374Z", + "shell.execute_reply": "2024-02-15T10:33:03.382091Z" }, "papermill": { - "duration": 0.028011, - "end_time": "2023-10-10T20:29:52.999430", + "duration": 0.075745, + "end_time": "2024-02-15T10:33:03.393978", "exception": false, - "start_time": "2023-10-10T20:29:52.971419", + "start_time": "2024-02-15T10:33:03.318233", "status": "completed" }, "tags": [] @@ -262,7 +262,7 @@ " <tr>\n", " <th>395</th>\n", " <td>rock_95.mp3</td>\n", - " <td>True</td>\n", + " <td>False</td>\n", " </tr>\n", " <tr>\n", " <th>396</th>\n", @@ -297,7 +297,7 @@ "3 classical_11.mp3 True\n", "4 classical_12.mp3 True\n", ".. ... ...\n", - "395 rock_95.mp3 True\n", + "395 rock_95.mp3 False\n", "396 rock_96.mp3 True\n", "397 rock_97.mp3 True\n", "398 rock_98.mp3 True\n", @@ -321,16 +321,16 @@ "id": "7b11b8bb", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:53.004736Z", - "iopub.status.busy": "2023-10-10T20:29:53.004384Z", - "iopub.status.idle": "2023-10-10T20:29:53.012049Z", - "shell.execute_reply": "2023-10-10T20:29:53.010855Z" + "iopub.execute_input": "2024-02-15T10:33:03.512610Z", + "iopub.status.busy": "2024-02-15T10:33:03.511609Z", + "iopub.status.idle": "2024-02-15T10:33:03.522435Z", + "shell.execute_reply": "2024-02-15T10:33:03.521210Z" }, "papermill": { - "duration": 0.012188, - "end_time": "2023-10-10T20:29:53.013673", + "duration": 0.075931, + "end_time": "2024-02-15T10:33:03.527902", "exception": false, - "start_time": "2023-10-10T20:29:53.001485", + "start_time": "2024-02-15T10:33:03.451971", "status": "completed" }, "tags": [] @@ -367,21 +367,21 @@ }, "papermill": { "default_parameters": {}, - "duration": 1.731275, - "end_time": "2023-10-10T20:29:53.335011", + "duration": 2.556079, + "end_time": "2024-02-15T10:33:03.912163", "environment_variables": {}, "exception": null, - "input_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/4_split.ipynb", - "output_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/4_split.ipynb", + "input_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/4_split.ipynb", + "output_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/4_split.ipynb", "parameters": { "INPUT_PATHS": { - "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/4_split/input/features.csv" + "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv" }, "OUTPUT_PATHS": { - "split": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/4_split/output/split.csv" + "split": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv" } }, - "start_time": "2023-10-10T20:29:51.603736", + "start_time": "2024-02-15T10:33:01.356084", "version": "2.4.0" } }, diff --git a/notebooks/5_ml_model.ipynb b/notebooks/5_ml_model.ipynb index 03622dbc7d6930b470f9773c2e47dc8d8c66509c..8629a3c6dc7e03d57f31b1ddcefe32307bb70749 100644 --- a/notebooks/5_ml_model.ipynb +++ b/notebooks/5_ml_model.ipynb @@ -5,10 +5,10 @@ "id": "5de30442", "metadata": { "papermill": { - "duration": 0.004501, - "end_time": "2023-10-10T20:29:56.392851", + "duration": 0.012841, + "end_time": "2024-02-15T10:06:43.088855", "exception": false, - "start_time": "2023-10-10T20:29:56.388350", + "start_time": "2024-02-15T10:06:43.076014", "status": "completed" }, "tags": [] @@ -25,16 +25,16 @@ "id": "a2eb8998", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:56.404718Z", - "iopub.status.busy": "2023-10-10T20:29:56.403976Z", - "iopub.status.idle": "2023-10-10T20:29:57.046443Z", - "shell.execute_reply": "2023-10-10T20:29:57.045488Z" + "iopub.execute_input": "2024-02-15T10:06:43.121973Z", + "iopub.status.busy": "2024-02-15T10:06:43.120571Z", + "iopub.status.idle": "2024-02-15T10:06:44.122908Z", + "shell.execute_reply": "2024-02-15T10:06:44.121677Z" }, "papermill": { - "duration": 0.651867, - "end_time": "2023-10-10T20:29:57.049250", + "duration": 1.025788, + "end_time": "2024-02-15T10:06:44.128247", "exception": false, - "start_time": "2023-10-10T20:29:56.397383", + "start_time": "2024-02-15T10:06:43.102459", "status": "completed" }, "tags": [] @@ -61,16 +61,16 @@ "id": "8a8da20f", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.059270Z", - "iopub.status.busy": "2023-10-10T20:29:57.058896Z", - "iopub.status.idle": "2023-10-10T20:29:57.064586Z", - "shell.execute_reply": "2023-10-10T20:29:57.063604Z" + "iopub.execute_input": "2024-02-15T10:06:44.148840Z", + "iopub.status.busy": "2024-02-15T10:06:44.147761Z", + "iopub.status.idle": "2024-02-15T10:06:44.155343Z", + "shell.execute_reply": "2024-02-15T10:06:44.154306Z" }, "papermill": { - "duration": 0.013884, - "end_time": "2023-10-10T20:29:57.067486", + "duration": 0.024917, + "end_time": "2024-02-15T10:06:44.160667", "exception": false, - "start_time": "2023-10-10T20:29:57.053602", + "start_time": "2024-02-15T10:06:44.135750", "status": "completed" }, "tags": [ @@ -96,19 +96,19 @@ { "cell_type": "code", "execution_count": 3, - "id": "dca8296b", + "id": "08b56684", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.076447Z", - "iopub.status.busy": "2023-10-10T20:29:57.075691Z", - "iopub.status.idle": "2023-10-10T20:29:57.080057Z", - "shell.execute_reply": "2023-10-10T20:29:57.079206Z" + "iopub.execute_input": "2024-02-15T10:06:44.178318Z", + "iopub.status.busy": "2024-02-15T10:06:44.177094Z", + "iopub.status.idle": "2024-02-15T10:06:44.183014Z", + "shell.execute_reply": "2024-02-15T10:06:44.181792Z" }, "papermill": { - "duration": 0.012321, - "end_time": "2023-10-10T20:29:57.083555", + "duration": 0.02246, + "end_time": "2024-02-15T10:06:44.190188", "exception": false, - "start_time": "2023-10-10T20:29:57.071234", + "start_time": "2024-02-15T10:06:44.167728", "status": "completed" }, "tags": [ @@ -119,12 +119,12 @@ "source": [ "# Parameters\n", "INPUT_PATHS = {\n", - " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/input/split.csv\",\n", - " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/input/features.csv\",\n", + " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv\",\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv\",\n", "}\n", "OUTPUT_PATHS = {\n", - " \"clf\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/output/ml_model.pickle\",\n", - " \"submission\": \"/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/output/test_result.csv\",\n", + " \"clf\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle\",\n", + " \"submission\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv\",\n", "}\n" ] }, @@ -134,16 +134,16 @@ "id": "6810272a", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.092871Z", - "iopub.status.busy": "2023-10-10T20:29:57.092295Z", - "iopub.status.idle": "2023-10-10T20:29:57.118496Z", - "shell.execute_reply": "2023-10-10T20:29:57.117541Z" + "iopub.execute_input": "2024-02-15T10:06:44.205510Z", + "iopub.status.busy": "2024-02-15T10:06:44.205067Z", + "iopub.status.idle": "2024-02-15T10:06:44.238413Z", + "shell.execute_reply": "2024-02-15T10:06:44.237614Z" }, "papermill": { - "duration": 0.033571, - "end_time": "2023-10-10T20:29:57.120555", + "duration": 0.048143, + "end_time": "2024-02-15T10:06:44.244805", "exception": false, - "start_time": "2023-10-10T20:29:57.086984", + "start_time": "2024-02-15T10:06:44.196662", "status": "completed" }, "tags": [] @@ -161,16 +161,16 @@ "id": "36f06fd6", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.129659Z", - "iopub.status.busy": "2023-10-10T20:29:57.129233Z", - "iopub.status.idle": "2023-10-10T20:29:57.156435Z", - "shell.execute_reply": "2023-10-10T20:29:57.155735Z" + "iopub.execute_input": "2024-02-15T10:06:44.264475Z", + "iopub.status.busy": "2024-02-15T10:06:44.263341Z", + "iopub.status.idle": "2024-02-15T10:06:44.312526Z", + "shell.execute_reply": "2024-02-15T10:06:44.311809Z" }, "papermill": { - "duration": 0.033758, - "end_time": "2023-10-10T20:29:57.158194", + "duration": 0.065042, + "end_time": "2024-02-15T10:06:44.319741", "exception": false, - "start_time": "2023-10-10T20:29:57.124436", + "start_time": "2024-02-15T10:06:44.254699", "status": "completed" }, "tags": [] @@ -256,7 +256,7 @@ " <td>0.000000</td>\n", " <td>178.75162</td>\n", " <td>111.332342</td>\n", - " <td>24.847562</td>\n", + " <td>24.847563</td>\n", " <td>...</td>\n", " <td>47.308060</td>\n", " <td>-3.713503</td>\n", @@ -267,7 +267,7 @@ " <td>-2.282116</td>\n", " <td>15.285639</td>\n", " <td>0.171462</td>\n", - " <td>False</td>\n", + " <td>True</td>\n", " </tr>\n", " <tr>\n", " <th>classical_10.mp3</th>\n", @@ -275,10 +275,10 @@ " <td>-562.85785</td>\n", " <td>-96.164795</td>\n", " <td>-219.259016</td>\n", - " <td>53.561839</td>\n", + " <td>53.561838</td>\n", " <td>-0.772320</td>\n", " <td>0.029056</td>\n", - " <td>259.63272</td>\n", + " <td>259.63270</td>\n", " <td>215.094182</td>\n", " <td>18.388131</td>\n", " <td>...</td>\n", @@ -286,8 +286,8 @@ " <td>0.484271</td>\n", " <td>8.660648</td>\n", " <td>-0.479016</td>\n", - " <td>-28.989979</td>\n", - " <td>27.533707</td>\n", + " <td>-28.989983</td>\n", + " <td>27.533710</td>\n", " <td>0.952658</td>\n", " <td>10.477735</td>\n", " <td>-0.185771</td>\n", @@ -311,11 +311,11 @@ " <td>8.185075</td>\n", " <td>0.208425</td>\n", " <td>-38.095375</td>\n", - " <td>31.397882</td>\n", + " <td>31.397880</td>\n", " <td>-1.494916</td>\n", " <td>10.917299</td>\n", " <td>0.020985</td>\n", - " <td>False</td>\n", + " <td>True</td>\n", " </tr>\n", " <tr>\n", " <th>classical_11.mp3</th>\n", @@ -328,14 +328,14 @@ " <td>0.000000</td>\n", " <td>159.42575</td>\n", " <td>99.853645</td>\n", - " <td>21.916948</td>\n", + " <td>21.916949</td>\n", " <td>...</td>\n", " <td>31.500881</td>\n", " <td>-3.781627</td>\n", " <td>9.191043</td>\n", " <td>0.260886</td>\n", - " <td>-22.667439</td>\n", - " <td>50.992905</td>\n", + " <td>-22.667440</td>\n", + " <td>50.992897</td>\n", " <td>1.600777</td>\n", " <td>10.125545</td>\n", " <td>0.595763</td>\n", @@ -351,19 +351,19 @@ " <td>-0.366586</td>\n", " <td>0.000000</td>\n", " <td>194.26416</td>\n", - " <td>148.226648</td>\n", + " <td>148.226647</td>\n", " <td>19.305008</td>\n", " <td>...</td>\n", " <td>28.490644</td>\n", " <td>-6.242015</td>\n", " <td>10.546545</td>\n", " <td>0.341848</td>\n", - " <td>-25.040886</td>\n", + " <td>-25.040888</td>\n", " <td>46.878204</td>\n", " <td>1.844494</td>\n", " <td>11.160392</td>\n", " <td>0.503120</td>\n", - " <td>True</td>\n", + " <td>False</td>\n", " </tr>\n", " <tr>\n", " <th>...</th>\n", @@ -409,7 +409,7 @@ " <td>-24.712723</td>\n", " <td>23.410387</td>\n", " <td>-4.502398</td>\n", - " <td>6.687983</td>\n", + " <td>6.687984</td>\n", " <td>0.238807</td>\n", " <td>True</td>\n", " </tr>\n", @@ -417,21 +417,21 @@ " <th>rock_96.mp3</th>\n", " <td>rock</td>\n", " <td>-541.23600</td>\n", - " <td>27.163332</td>\n", + " <td>27.163334</td>\n", " <td>-119.113996</td>\n", " <td>58.420684</td>\n", " <td>-0.957699</td>\n", - " <td>-7.415959</td>\n", + " <td>-7.415961</td>\n", " <td>210.49246</td>\n", " <td>125.453699</td>\n", - " <td>31.908870</td>\n", + " <td>31.908869</td>\n", " <td>...</td>\n", - " <td>28.087940</td>\n", + " <td>28.087936</td>\n", " <td>-9.704238</td>\n", " <td>8.447620</td>\n", " <td>0.112760</td>\n", " <td>-38.147890</td>\n", - " <td>21.814400</td>\n", + " <td>21.814402</td>\n", " <td>-8.249507</td>\n", " <td>7.807756</td>\n", " <td>0.071968</td>\n", @@ -448,14 +448,14 @@ " <td>-58.824410</td>\n", " <td>175.20135</td>\n", " <td>99.288265</td>\n", - " <td>25.158417</td>\n", + " <td>25.158416</td>\n", " <td>...</td>\n", " <td>26.325895</td>\n", " <td>-5.722825</td>\n", " <td>7.727378</td>\n", " <td>0.207489</td>\n", " <td>-29.497524</td>\n", - " <td>25.410656</td>\n", + " <td>25.410654</td>\n", " <td>-3.356614</td>\n", " <td>8.170526</td>\n", " <td>0.160330</td>\n", @@ -470,16 +470,16 @@ " <td>52.444200</td>\n", " <td>-1.705641</td>\n", " <td>0.000000</td>\n", - " <td>187.04272</td>\n", + " <td>187.04274</td>\n", " <td>96.440874</td>\n", " <td>24.137702</td>\n", " <td>...</td>\n", - " <td>8.714736</td>\n", + " <td>8.714737</td>\n", " <td>-9.511491</td>\n", " <td>5.551820</td>\n", " <td>-0.025604</td>\n", - " <td>-23.020082</td>\n", - " <td>13.948639</td>\n", + " <td>-23.020084</td>\n", + " <td>13.948638</td>\n", " <td>-2.664985</td>\n", " <td>5.051498</td>\n", " <td>-0.258407</td>\n", @@ -493,17 +493,17 @@ " <td>-49.380943</td>\n", " <td>54.045627</td>\n", " <td>-0.863093</td>\n", - " <td>-32.930650</td>\n", + " <td>-32.930653</td>\n", " <td>191.73538</td>\n", " <td>93.971242</td>\n", " <td>33.410220</td>\n", " <td>...</td>\n", " <td>17.050608</td>\n", " <td>-5.296691</td>\n", - " <td>5.894962</td>\n", + " <td>5.894963</td>\n", " <td>0.390705</td>\n", " <td>-20.983192</td>\n", - " <td>29.312021</td>\n", + " <td>29.312023</td>\n", " <td>-0.321836</td>\n", " <td>6.571660</td>\n", " <td>0.384794</td>\n", @@ -518,58 +518,58 @@ " label 0_min 0_max 0_mean 0_std \\\n", "filename \n", "classical_1.mp3 classical -530.78436 -163.308350 -302.203167 51.142183 \n", - "classical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561839 \n", + "classical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561838 \n", "classical_100.mp3 classical -536.23737 -61.608826 -177.804114 83.381622 \n", "classical_11.mp3 classical -536.45746 -120.429665 -222.126303 76.246992 \n", "classical_12.mp3 classical -562.67523 -148.133560 -270.975406 52.191182 \n", "... ... ... ... ... ... \n", "rock_95.mp3 rock -553.11010 -5.218835 -193.506047 76.869437 \n", - "rock_96.mp3 rock -541.23600 27.163332 -119.113996 58.420684 \n", + "rock_96.mp3 rock -541.23600 27.163334 -119.113996 58.420684 \n", "rock_97.mp3 rock -518.49500 58.526745 -66.267744 65.635619 \n", "rock_98.mp3 rock -518.64307 53.555115 -45.734517 52.444200 \n", "rock_99.mp3 rock -544.70310 75.612130 -49.380943 54.045627 \n", "\n", " 0_skew 1_min 1_max 1_mean 1_std ... \\\n", "filename ... \n", - "classical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847562 ... \n", - "classical_10.mp3 -0.772320 0.029056 259.63272 215.094182 18.388131 ... \n", + "classical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847563 ... \n", + "classical_10.mp3 -0.772320 0.029056 259.63270 215.094182 18.388131 ... \n", "classical_100.mp3 -2.587179 0.000000 190.47589 112.471713 27.277553 ... \n", - "classical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916948 ... \n", - "classical_12.mp3 -0.366586 0.000000 194.26416 148.226648 19.305008 ... \n", + "classical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916949 ... \n", + "classical_12.mp3 -0.366586 0.000000 194.26416 148.226647 19.305008 ... \n", "... ... ... ... ... ... ... \n", "rock_95.mp3 -0.201055 -89.948746 201.18045 111.724191 36.463584 ... \n", - "rock_96.mp3 -0.957699 -7.415959 210.49246 125.453699 31.908870 ... \n", - "rock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158417 ... \n", - "rock_98.mp3 -1.705641 0.000000 187.04272 96.440874 24.137702 ... \n", - "rock_99.mp3 -0.863093 -32.930650 191.73538 93.971242 33.410220 ... \n", + "rock_96.mp3 -0.957699 -7.415961 210.49246 125.453699 31.908869 ... \n", + "rock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158416 ... \n", + "rock_98.mp3 -1.705641 0.000000 187.04274 96.440874 24.137702 ... \n", + "rock_99.mp3 -0.863093 -32.930653 191.73538 93.971242 33.410220 ... \n", "\n", " 38_max 38_mean 38_std 38_skew 39_min \\\n", "filename \n", "classical_1.mp3 47.308060 -3.713503 16.553984 0.230691 -46.794480 \n", - "classical_10.mp3 29.811110 0.484271 8.660648 -0.479016 -28.989979 \n", + "classical_10.mp3 29.811110 0.484271 8.660648 -0.479016 -28.989983 \n", "classical_100.mp3 27.610388 -0.333233 8.185075 0.208425 -38.095375 \n", - "classical_11.mp3 31.500881 -3.781627 9.191043 0.260886 -22.667439 \n", - "classical_12.mp3 28.490644 -6.242015 10.546545 0.341848 -25.040886 \n", + "classical_11.mp3 31.500881 -3.781627 9.191043 0.260886 -22.667440 \n", + "classical_12.mp3 28.490644 -6.242015 10.546545 0.341848 -25.040888 \n", "... ... ... ... ... ... \n", "rock_95.mp3 22.451445 -7.234634 8.471853 0.753855 -24.712723 \n", - "rock_96.mp3 28.087940 -9.704238 8.447620 0.112760 -38.147890 \n", + "rock_96.mp3 28.087936 -9.704238 8.447620 0.112760 -38.147890 \n", "rock_97.mp3 26.325895 -5.722825 7.727378 0.207489 -29.497524 \n", - "rock_98.mp3 8.714736 -9.511491 5.551820 -0.025604 -23.020082 \n", - "rock_99.mp3 17.050608 -5.296691 5.894962 0.390705 -20.983192 \n", + "rock_98.mp3 8.714737 -9.511491 5.551820 -0.025604 -23.020084 \n", + "rock_99.mp3 17.050608 -5.296691 5.894963 0.390705 -20.983192 \n", "\n", " 39_max 39_mean 39_std 39_skew train \n", "filename \n", - "classical_1.mp3 49.352516 -2.282116 15.285639 0.171462 False \n", - "classical_10.mp3 27.533707 0.952658 10.477735 -0.185771 True \n", - "classical_100.mp3 31.397882 -1.494916 10.917299 0.020985 False \n", - "classical_11.mp3 50.992905 1.600777 10.125545 0.595763 True \n", - "classical_12.mp3 46.878204 1.844494 11.160392 0.503120 True \n", + "classical_1.mp3 49.352516 -2.282116 15.285639 0.171462 True \n", + "classical_10.mp3 27.533710 0.952658 10.477735 -0.185771 True \n", + "classical_100.mp3 31.397880 -1.494916 10.917299 0.020985 True \n", + "classical_11.mp3 50.992897 1.600777 10.125545 0.595763 True \n", + "classical_12.mp3 46.878204 1.844494 11.160392 0.503120 False \n", "... ... ... ... ... ... \n", - "rock_95.mp3 23.410387 -4.502398 6.687983 0.238807 True \n", - "rock_96.mp3 21.814400 -8.249507 7.807756 0.071968 True \n", - "rock_97.mp3 25.410656 -3.356614 8.170526 0.160330 True \n", - "rock_98.mp3 13.948639 -2.664985 5.051498 -0.258407 True \n", - "rock_99.mp3 29.312021 -0.321836 6.571660 0.384794 True \n", + "rock_95.mp3 23.410387 -4.502398 6.687984 0.238807 True \n", + "rock_96.mp3 21.814402 -8.249507 7.807756 0.071968 True \n", + "rock_97.mp3 25.410654 -3.356614 8.170526 0.160330 True \n", + "rock_98.mp3 13.948638 -2.664985 5.051498 -0.258407 True \n", + "rock_99.mp3 29.312023 -0.321836 6.571660 0.384794 True \n", "\n", "[400 rows x 202 columns]" ] @@ -590,16 +590,16 @@ "id": "265d042f", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.169022Z", - "iopub.status.busy": "2023-10-10T20:29:57.168524Z", - "iopub.status.idle": "2023-10-10T20:29:57.190644Z", - "shell.execute_reply": "2023-10-10T20:29:57.189670Z" + "iopub.execute_input": "2024-02-15T10:06:44.336608Z", + "iopub.status.busy": "2024-02-15T10:06:44.335579Z", + "iopub.status.idle": "2024-02-15T10:06:44.395183Z", + "shell.execute_reply": "2024-02-15T10:06:44.394252Z" }, "papermill": { - "duration": 0.029559, - "end_time": "2023-10-10T20:29:57.191983", + "duration": 0.076899, + "end_time": "2024-02-15T10:06:44.403881", "exception": false, - "start_time": "2023-10-10T20:29:57.162424", + "start_time": "2024-02-15T10:06:44.326982", "status": "completed" }, "tags": [] @@ -675,15 +675,39 @@ " </thead>\n", " <tbody>\n", " <tr>\n", + " <th>classical_1.mp3</th>\n", + " <td>classical</td>\n", + " <td>-530.78436</td>\n", + " <td>-163.308350</td>\n", + " <td>-302.203167</td>\n", + " <td>51.142183</td>\n", + " <td>-0.468374</td>\n", + " <td>0.000000</td>\n", + " <td>178.75162</td>\n", + " <td>111.332342</td>\n", + " <td>24.847563</td>\n", + " <td>...</td>\n", + " <td>-44.098070</td>\n", + " <td>47.308060</td>\n", + " <td>-3.713503</td>\n", + " <td>16.553984</td>\n", + " <td>0.230691</td>\n", + " <td>-46.794480</td>\n", + " <td>49.352516</td>\n", + " <td>-2.282116</td>\n", + " <td>15.285639</td>\n", + " <td>0.171462</td>\n", + " </tr>\n", + " <tr>\n", " <th>classical_10.mp3</th>\n", " <td>classical</td>\n", " <td>-562.85785</td>\n", " <td>-96.164795</td>\n", " <td>-219.259016</td>\n", - " <td>53.561839</td>\n", + " <td>53.561838</td>\n", " <td>-0.772320</td>\n", " <td>0.029056</td>\n", - " <td>259.63272</td>\n", + " <td>259.63270</td>\n", " <td>215.094182</td>\n", " <td>18.388131</td>\n", " <td>...</td>\n", @@ -692,13 +716,37 @@ " <td>0.484271</td>\n", " <td>8.660648</td>\n", " <td>-0.479016</td>\n", - " <td>-28.989979</td>\n", - " <td>27.533707</td>\n", + " <td>-28.989983</td>\n", + " <td>27.533710</td>\n", " <td>0.952658</td>\n", " <td>10.477735</td>\n", " <td>-0.185771</td>\n", " </tr>\n", " <tr>\n", + " <th>classical_100.mp3</th>\n", + " <td>classical</td>\n", + " <td>-536.23737</td>\n", + " <td>-61.608826</td>\n", + " <td>-177.804114</td>\n", + " <td>83.381622</td>\n", + " <td>-2.587179</td>\n", + " <td>0.000000</td>\n", + " <td>190.47589</td>\n", + " <td>112.471713</td>\n", + " <td>27.277553</td>\n", + " <td>...</td>\n", + " <td>-27.335688</td>\n", + " <td>27.610388</td>\n", + " <td>-0.333233</td>\n", + " <td>8.185075</td>\n", + " <td>0.208425</td>\n", + " <td>-38.095375</td>\n", + " <td>31.397880</td>\n", + " <td>-1.494916</td>\n", + " <td>10.917299</td>\n", + " <td>0.020985</td>\n", + " </tr>\n", + " <tr>\n", " <th>classical_11.mp3</th>\n", " <td>classical</td>\n", " <td>-536.45746</td>\n", @@ -709,44 +757,20 @@ " <td>0.000000</td>\n", " <td>159.42575</td>\n", " <td>99.853645</td>\n", - " <td>21.916948</td>\n", + " <td>21.916949</td>\n", " <td>...</td>\n", " <td>-31.774948</td>\n", " <td>31.500881</td>\n", " <td>-3.781627</td>\n", " <td>9.191043</td>\n", " <td>0.260886</td>\n", - " <td>-22.667439</td>\n", - " <td>50.992905</td>\n", + " <td>-22.667440</td>\n", + " <td>50.992897</td>\n", " <td>1.600777</td>\n", " <td>10.125545</td>\n", " <td>0.595763</td>\n", " </tr>\n", " <tr>\n", - " <th>classical_12.mp3</th>\n", - " <td>classical</td>\n", - " <td>-562.67523</td>\n", - " <td>-148.133560</td>\n", - " <td>-270.975406</td>\n", - " <td>52.191182</td>\n", - " <td>-0.366586</td>\n", - " <td>0.000000</td>\n", - " <td>194.26416</td>\n", - " <td>148.226648</td>\n", - " <td>19.305008</td>\n", - " <td>...</td>\n", - " <td>-44.843815</td>\n", - " <td>28.490644</td>\n", - " <td>-6.242015</td>\n", - " <td>10.546545</td>\n", - " <td>0.341848</td>\n", - " <td>-25.040886</td>\n", - " <td>46.878204</td>\n", - " <td>1.844494</td>\n", - " <td>11.160392</td>\n", - " <td>0.503120</td>\n", - " </tr>\n", - " <tr>\n", " <th>classical_13.mp3</th>\n", " <td>classical</td>\n", " <td>-637.72064</td>\n", @@ -757,44 +781,20 @@ " <td>0.000000</td>\n", " <td>257.16284</td>\n", " <td>211.556558</td>\n", - " <td>20.347035</td>\n", + " <td>20.347034</td>\n", " <td>...</td>\n", " <td>-24.728806</td>\n", - " <td>18.424034</td>\n", + " <td>18.424036</td>\n", " <td>-0.275736</td>\n", " <td>7.026148</td>\n", " <td>-0.640964</td>\n", " <td>-24.319565</td>\n", - " <td>18.439264</td>\n", + " <td>18.439262</td>\n", " <td>-2.147022</td>\n", " <td>8.171929</td>\n", " <td>0.009566</td>\n", " </tr>\n", " <tr>\n", - " <th>classical_14.mp3</th>\n", - " <td>classical</td>\n", - " <td>-531.04944</td>\n", - " <td>-100.790540</td>\n", - " <td>-188.970758</td>\n", - " <td>58.287371</td>\n", - " <td>-3.246618</td>\n", - " <td>0.000000</td>\n", - " <td>157.94792</td>\n", - " <td>86.563928</td>\n", - " <td>17.911136</td>\n", - " <td>...</td>\n", - " <td>-36.261150</td>\n", - " <td>38.335830</td>\n", - " <td>-5.770759</td>\n", - " <td>12.254058</td>\n", - " <td>0.805707</td>\n", - " <td>-40.597336</td>\n", - " <td>32.816467</td>\n", - " <td>-0.543406</td>\n", - " <td>11.467829</td>\n", - " <td>-0.187037</td>\n", - " </tr>\n", - " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", @@ -839,29 +839,29 @@ " <td>-24.712723</td>\n", " <td>23.410387</td>\n", " <td>-4.502398</td>\n", - " <td>6.687983</td>\n", + " <td>6.687984</td>\n", " <td>0.238807</td>\n", " </tr>\n", " <tr>\n", " <th>rock_96.mp3</th>\n", " <td>rock</td>\n", " <td>-541.23600</td>\n", - " <td>27.163332</td>\n", + " <td>27.163334</td>\n", " <td>-119.113996</td>\n", " <td>58.420684</td>\n", " <td>-0.957699</td>\n", - " <td>-7.415959</td>\n", + " <td>-7.415961</td>\n", " <td>210.49246</td>\n", " <td>125.453699</td>\n", - " <td>31.908870</td>\n", + " <td>31.908869</td>\n", " <td>...</td>\n", " <td>-37.584858</td>\n", - " <td>28.087940</td>\n", + " <td>28.087936</td>\n", " <td>-9.704238</td>\n", " <td>8.447620</td>\n", " <td>0.112760</td>\n", " <td>-38.147890</td>\n", - " <td>21.814400</td>\n", + " <td>21.814402</td>\n", " <td>-8.249507</td>\n", " <td>7.807756</td>\n", " <td>0.071968</td>\n", @@ -877,7 +877,7 @@ " <td>-58.824410</td>\n", " <td>175.20135</td>\n", " <td>99.288265</td>\n", - " <td>25.158417</td>\n", + " <td>25.158416</td>\n", " <td>...</td>\n", " <td>-29.620445</td>\n", " <td>26.325895</td>\n", @@ -885,7 +885,7 @@ " <td>7.727378</td>\n", " <td>0.207489</td>\n", " <td>-29.497524</td>\n", - " <td>25.410656</td>\n", + " <td>25.410654</td>\n", " <td>-3.356614</td>\n", " <td>8.170526</td>\n", " <td>0.160330</td>\n", @@ -899,17 +899,17 @@ " <td>52.444200</td>\n", " <td>-1.705641</td>\n", " <td>0.000000</td>\n", - " <td>187.04272</td>\n", + " <td>187.04274</td>\n", " <td>96.440874</td>\n", " <td>24.137702</td>\n", " <td>...</td>\n", - " <td>-26.967852</td>\n", - " <td>8.714736</td>\n", + " <td>-26.967848</td>\n", + " <td>8.714737</td>\n", " <td>-9.511491</td>\n", " <td>5.551820</td>\n", " <td>-0.025604</td>\n", - " <td>-23.020082</td>\n", - " <td>13.948639</td>\n", + " <td>-23.020084</td>\n", + " <td>13.948638</td>\n", " <td>-2.664985</td>\n", " <td>5.051498</td>\n", " <td>-0.258407</td>\n", @@ -922,7 +922,7 @@ " <td>-49.380943</td>\n", " <td>54.045627</td>\n", " <td>-0.863093</td>\n", - " <td>-32.930650</td>\n", + " <td>-32.930653</td>\n", " <td>191.73538</td>\n", " <td>93.971242</td>\n", " <td>33.410220</td>\n", @@ -930,10 +930,10 @@ " <td>-21.929403</td>\n", " <td>17.050608</td>\n", " <td>-5.296691</td>\n", - " <td>5.894962</td>\n", + " <td>5.894963</td>\n", " <td>0.390705</td>\n", " <td>-20.983192</td>\n", - " <td>29.312021</td>\n", + " <td>29.312023</td>\n", " <td>-0.321836</td>\n", " <td>6.571660</td>\n", " <td>0.384794</td>\n", @@ -944,61 +944,61 @@ "</div>" ], "text/plain": [ - " label 0_min 0_max 0_mean 0_std \\\n", - "filename \n", - "classical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561839 \n", - "classical_11.mp3 classical -536.45746 -120.429665 -222.126303 76.246992 \n", - "classical_12.mp3 classical -562.67523 -148.133560 -270.975406 52.191182 \n", - "classical_13.mp3 classical -637.72064 -177.713960 -361.834032 71.310080 \n", - "classical_14.mp3 classical -531.04944 -100.790540 -188.970758 58.287371 \n", - "... ... ... ... ... ... \n", - "rock_95.mp3 rock -553.11010 -5.218835 -193.506047 76.869437 \n", - "rock_96.mp3 rock -541.23600 27.163332 -119.113996 58.420684 \n", - "rock_97.mp3 rock -518.49500 58.526745 -66.267744 65.635619 \n", - "rock_98.mp3 rock -518.64307 53.555115 -45.734517 52.444200 \n", - "rock_99.mp3 rock -544.70310 75.612130 -49.380943 54.045627 \n", + " label 0_min 0_max 0_mean 0_std \\\n", + "filename \n", + "classical_1.mp3 classical -530.78436 -163.308350 -302.203167 51.142183 \n", + "classical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561838 \n", + "classical_100.mp3 classical -536.23737 -61.608826 -177.804114 83.381622 \n", + "classical_11.mp3 classical -536.45746 -120.429665 -222.126303 76.246992 \n", + "classical_13.mp3 classical -637.72064 -177.713960 -361.834032 71.310080 \n", + "... ... ... ... ... ... \n", + "rock_95.mp3 rock -553.11010 -5.218835 -193.506047 76.869437 \n", + "rock_96.mp3 rock -541.23600 27.163334 -119.113996 58.420684 \n", + "rock_97.mp3 rock -518.49500 58.526745 -66.267744 65.635619 \n", + "rock_98.mp3 rock -518.64307 53.555115 -45.734517 52.444200 \n", + "rock_99.mp3 rock -544.70310 75.612130 -49.380943 54.045627 \n", "\n", - " 0_skew 1_min 1_max 1_mean 1_std ... \\\n", - "filename ... \n", - "classical_10.mp3 -0.772320 0.029056 259.63272 215.094182 18.388131 ... \n", - "classical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916948 ... \n", - "classical_12.mp3 -0.366586 0.000000 194.26416 148.226648 19.305008 ... \n", - "classical_13.mp3 0.008325 0.000000 257.16284 211.556558 20.347035 ... \n", - "classical_14.mp3 -3.246618 0.000000 157.94792 86.563928 17.911136 ... \n", - "... ... ... ... ... ... ... \n", - "rock_95.mp3 -0.201055 -89.948746 201.18045 111.724191 36.463584 ... \n", - "rock_96.mp3 -0.957699 -7.415959 210.49246 125.453699 31.908870 ... \n", - "rock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158417 ... \n", - "rock_98.mp3 -1.705641 0.000000 187.04272 96.440874 24.137702 ... \n", - "rock_99.mp3 -0.863093 -32.930650 191.73538 93.971242 33.410220 ... \n", + " 0_skew 1_min 1_max 1_mean 1_std ... \\\n", + "filename ... \n", + "classical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847563 ... \n", + "classical_10.mp3 -0.772320 0.029056 259.63270 215.094182 18.388131 ... \n", + "classical_100.mp3 -2.587179 0.000000 190.47589 112.471713 27.277553 ... \n", + "classical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916949 ... \n", + "classical_13.mp3 0.008325 0.000000 257.16284 211.556558 20.347034 ... \n", + "... ... ... ... ... ... ... \n", + "rock_95.mp3 -0.201055 -89.948746 201.18045 111.724191 36.463584 ... \n", + "rock_96.mp3 -0.957699 -7.415961 210.49246 125.453699 31.908869 ... \n", + "rock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158416 ... \n", + "rock_98.mp3 -1.705641 0.000000 187.04274 96.440874 24.137702 ... \n", + "rock_99.mp3 -0.863093 -32.930653 191.73538 93.971242 33.410220 ... \n", "\n", - " 38_min 38_max 38_mean 38_std 38_skew \\\n", - "filename \n", - "classical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \n", - "classical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \n", - "classical_12.mp3 -44.843815 28.490644 -6.242015 10.546545 0.341848 \n", - "classical_13.mp3 -24.728806 18.424034 -0.275736 7.026148 -0.640964 \n", - "classical_14.mp3 -36.261150 38.335830 -5.770759 12.254058 0.805707 \n", - "... ... ... ... ... ... \n", - "rock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \n", - "rock_96.mp3 -37.584858 28.087940 -9.704238 8.447620 0.112760 \n", - "rock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \n", - "rock_98.mp3 -26.967852 8.714736 -9.511491 5.551820 -0.025604 \n", - "rock_99.mp3 -21.929403 17.050608 -5.296691 5.894962 0.390705 \n", + " 38_min 38_max 38_mean 38_std 38_skew \\\n", + "filename \n", + "classical_1.mp3 -44.098070 47.308060 -3.713503 16.553984 0.230691 \n", + "classical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \n", + "classical_100.mp3 -27.335688 27.610388 -0.333233 8.185075 0.208425 \n", + "classical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \n", + "classical_13.mp3 -24.728806 18.424036 -0.275736 7.026148 -0.640964 \n", + "... ... ... ... ... ... \n", + "rock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \n", + "rock_96.mp3 -37.584858 28.087936 -9.704238 8.447620 0.112760 \n", + "rock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \n", + "rock_98.mp3 -26.967848 8.714737 -9.511491 5.551820 -0.025604 \n", + "rock_99.mp3 -21.929403 17.050608 -5.296691 5.894963 0.390705 \n", "\n", - " 39_min 39_max 39_mean 39_std 39_skew \n", - "filename \n", - "classical_10.mp3 -28.989979 27.533707 0.952658 10.477735 -0.185771 \n", - "classical_11.mp3 -22.667439 50.992905 1.600777 10.125545 0.595763 \n", - "classical_12.mp3 -25.040886 46.878204 1.844494 11.160392 0.503120 \n", - "classical_13.mp3 -24.319565 18.439264 -2.147022 8.171929 0.009566 \n", - "classical_14.mp3 -40.597336 32.816467 -0.543406 11.467829 -0.187037 \n", - "... ... ... ... ... ... \n", - "rock_95.mp3 -24.712723 23.410387 -4.502398 6.687983 0.238807 \n", - "rock_96.mp3 -38.147890 21.814400 -8.249507 7.807756 0.071968 \n", - "rock_97.mp3 -29.497524 25.410656 -3.356614 8.170526 0.160330 \n", - "rock_98.mp3 -23.020082 13.948639 -2.664985 5.051498 -0.258407 \n", - "rock_99.mp3 -20.983192 29.312021 -0.321836 6.571660 0.384794 \n", + " 39_min 39_max 39_mean 39_std 39_skew \n", + "filename \n", + "classical_1.mp3 -46.794480 49.352516 -2.282116 15.285639 0.171462 \n", + "classical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \n", + "classical_100.mp3 -38.095375 31.397880 -1.494916 10.917299 0.020985 \n", + "classical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \n", + "classical_13.mp3 -24.319565 18.439262 -2.147022 8.171929 0.009566 \n", + "... ... ... ... ... ... \n", + "rock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \n", + "rock_96.mp3 -38.147890 21.814402 -8.249507 7.807756 0.071968 \n", + "rock_97.mp3 -29.497524 25.410654 -3.356614 8.170526 0.160330 \n", + "rock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \n", + "rock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \n", "\n", "[320 rows x 201 columns]" ] @@ -1019,16 +1019,16 @@ "id": "1649ce52", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.201997Z", - "iopub.status.busy": "2023-10-10T20:29:57.201308Z", - "iopub.status.idle": "2023-10-10T20:29:57.222303Z", - "shell.execute_reply": "2023-10-10T20:29:57.221426Z" + "iopub.execute_input": "2024-02-15T10:06:44.427558Z", + "iopub.status.busy": "2024-02-15T10:06:44.425949Z", + "iopub.status.idle": "2024-02-15T10:06:44.460574Z", + "shell.execute_reply": "2024-02-15T10:06:44.459420Z" }, "papermill": { - "duration": 0.027584, - "end_time": "2023-10-10T20:29:57.223599", + "duration": 0.056625, + "end_time": "2024-02-15T10:06:44.469300", "exception": false, - "start_time": "2023-10-10T20:29:57.196015", + "start_time": "2024-02-15T10:06:44.412675", "status": "completed" }, "tags": [] @@ -1104,91 +1104,43 @@ " </thead>\n", " <tbody>\n", " <tr>\n", - " <th>classical_1.mp3</th>\n", - " <td>classical</td>\n", - " <td>-530.78436</td>\n", - " <td>-163.308350</td>\n", - " <td>-302.203167</td>\n", - " <td>51.142183</td>\n", - " <td>-0.468374</td>\n", - " <td>0.000000</td>\n", - " <td>178.75162</td>\n", - " <td>111.332342</td>\n", - " <td>24.847562</td>\n", - " <td>...</td>\n", - " <td>-44.098070</td>\n", - " <td>47.308060</td>\n", - " <td>-3.713503</td>\n", - " <td>16.553984</td>\n", - " <td>0.230691</td>\n", - " <td>-46.794480</td>\n", - " <td>49.352516</td>\n", - " <td>-2.282116</td>\n", - " <td>15.285639</td>\n", - " <td>0.171462</td>\n", - " </tr>\n", - " <tr>\n", - " <th>classical_100.mp3</th>\n", + " <th>classical_12.mp3</th>\n", " <td>classical</td>\n", - " <td>-536.23737</td>\n", - " <td>-61.608826</td>\n", - " <td>-177.804114</td>\n", - " <td>83.381622</td>\n", - " <td>-2.587179</td>\n", + " <td>-562.67523</td>\n", + " <td>-148.133560</td>\n", + " <td>-270.975406</td>\n", + " <td>52.191182</td>\n", + " <td>-0.366586</td>\n", " <td>0.000000</td>\n", - " <td>190.47589</td>\n", - " <td>112.471713</td>\n", - " <td>27.277553</td>\n", + " <td>194.26416</td>\n", + " <td>148.226647</td>\n", + " <td>19.305008</td>\n", " <td>...</td>\n", - " <td>-27.335688</td>\n", - " <td>27.610388</td>\n", - " <td>-0.333233</td>\n", - " <td>8.185075</td>\n", - " <td>0.208425</td>\n", - " <td>-38.095375</td>\n", - " <td>31.397882</td>\n", - " <td>-1.494916</td>\n", - " <td>10.917299</td>\n", - " <td>0.020985</td>\n", - " </tr>\n", - " <tr>\n", - " <th>classical_16.mp3</th>\n", - " <td>classical</td>\n", - " <td>-602.36770</td>\n", - " <td>-92.236810</td>\n", - " <td>-246.956152</td>\n", - " <td>58.781397</td>\n", - " <td>-1.276496</td>\n", - " <td>0.000000</td>\n", - " <td>242.02734</td>\n", - " <td>207.742183</td>\n", - " <td>15.827642</td>\n", - " <td>...</td>\n", - " <td>-38.999924</td>\n", - " <td>20.457050</td>\n", - " <td>-3.002113</td>\n", - " <td>8.130004</td>\n", - " <td>-1.282625</td>\n", - " <td>-32.711815</td>\n", - " <td>23.339695</td>\n", - " <td>-6.099672</td>\n", - " <td>8.291237</td>\n", - " <td>0.088775</td>\n", + " <td>-44.843810</td>\n", + " <td>28.490644</td>\n", + " <td>-6.242015</td>\n", + " <td>10.546545</td>\n", + " <td>0.341848</td>\n", + " <td>-25.040888</td>\n", + " <td>46.878204</td>\n", + " <td>1.844494</td>\n", + " <td>11.160392</td>\n", + " <td>0.503120</td>\n", " </tr>\n", " <tr>\n", " <th>classical_2.mp3</th>\n", " <td>classical</td>\n", " <td>-549.40650</td>\n", " <td>-192.532060</td>\n", - " <td>-293.008970</td>\n", - " <td>27.207027</td>\n", + " <td>-293.008969</td>\n", + " <td>27.207028</td>\n", " <td>-0.426848</td>\n", " <td>0.000000</td>\n", - " <td>231.03737</td>\n", - " <td>198.662515</td>\n", + " <td>231.03738</td>\n", + " <td>198.662514</td>\n", " <td>14.957660</td>\n", " <td>...</td>\n", - " <td>-25.912935</td>\n", + " <td>-25.912933</td>\n", " <td>24.293318</td>\n", " <td>0.746096</td>\n", " <td>8.240027</td>\n", @@ -1208,7 +1160,7 @@ " <td>49.157298</td>\n", " <td>-0.856221</td>\n", " <td>0.000000</td>\n", - " <td>191.92674</td>\n", + " <td>191.92676</td>\n", " <td>141.393817</td>\n", " <td>17.754779</td>\n", " <td>...</td>\n", @@ -1217,13 +1169,61 @@ " <td>-2.274261</td>\n", " <td>9.671005</td>\n", " <td>0.719436</td>\n", - " <td>-30.311796</td>\n", - " <td>29.272333</td>\n", + " <td>-30.311798</td>\n", + " <td>29.272330</td>\n", " <td>0.289613</td>\n", " <td>9.590299</td>\n", " <td>-0.244191</td>\n", " </tr>\n", " <tr>\n", + " <th>classical_27.mp3</th>\n", + " <td>classical</td>\n", + " <td>-595.41895</td>\n", + " <td>-78.118810</td>\n", + " <td>-265.344461</td>\n", + " <td>104.892303</td>\n", + " <td>-0.526604</td>\n", + " <td>0.000000</td>\n", + " <td>200.61633</td>\n", + " <td>144.208488</td>\n", + " <td>25.198761</td>\n", + " <td>...</td>\n", + " <td>-28.797087</td>\n", + " <td>20.897750</td>\n", + " <td>-5.761607</td>\n", + " <td>7.108055</td>\n", + " <td>0.360305</td>\n", + " <td>-39.705540</td>\n", + " <td>25.803795</td>\n", + " <td>-2.736776</td>\n", + " <td>10.101577</td>\n", + " <td>-0.463730</td>\n", + " </tr>\n", + " <tr>\n", + " <th>classical_39.mp3</th>\n", + " <td>classical</td>\n", + " <td>-578.84720</td>\n", + " <td>-55.479320</td>\n", + " <td>-183.753039</td>\n", + " <td>69.140628</td>\n", + " <td>-0.577055</td>\n", + " <td>0.000000</td>\n", + " <td>193.84949</td>\n", + " <td>127.058496</td>\n", + " <td>29.295691</td>\n", + " <td>...</td>\n", + " <td>-48.678460</td>\n", + " <td>24.566566</td>\n", + " <td>-7.810246</td>\n", + " <td>11.568188</td>\n", + " <td>-0.106704</td>\n", + " <td>-24.328775</td>\n", + " <td>40.172250</td>\n", + " <td>-0.078006</td>\n", + " <td>10.646963</td>\n", + " <td>0.492488</td>\n", + " </tr>\n", + " <tr>\n", " <th>...</th>\n", " <td>...</td>\n", " <td>...</td>\n", @@ -1248,100 +1248,52 @@ " <td>...</td>\n", " </tr>\n", " <tr>\n", - " <th>rock_61.mp3</th>\n", - " <td>rock</td>\n", - " <td>-581.70320</td>\n", - " <td>-4.784650</td>\n", - " <td>-195.795774</td>\n", - " <td>49.129890</td>\n", - " <td>-0.593109</td>\n", - " <td>0.000000</td>\n", - " <td>277.18048</td>\n", - " <td>218.884291</td>\n", - " <td>32.386435</td>\n", - " <td>...</td>\n", - " <td>-16.274982</td>\n", - " <td>10.830383</td>\n", - " <td>-1.030385</td>\n", - " <td>3.743717</td>\n", - " <td>-0.558987</td>\n", - " <td>-12.881446</td>\n", - " <td>9.897078</td>\n", - " <td>-1.491518</td>\n", - " <td>3.449319</td>\n", - " <td>-0.126638</td>\n", - " </tr>\n", - " <tr>\n", - " <th>rock_70.mp3</th>\n", + " <th>rock_85.mp3</th>\n", " <td>rock</td>\n", - " <td>-560.31934</td>\n", - " <td>-65.886696</td>\n", - " <td>-201.773601</td>\n", - " <td>62.077689</td>\n", - " <td>-0.576726</td>\n", - " <td>-29.625122</td>\n", - " <td>185.52118</td>\n", - " <td>121.034730</td>\n", - " <td>28.852134</td>\n", - " <td>...</td>\n", - " <td>-26.226246</td>\n", - " <td>27.198473</td>\n", - " <td>-3.917270</td>\n", - " <td>8.094776</td>\n", - " <td>0.075448</td>\n", - " <td>-26.580010</td>\n", - " <td>26.222483</td>\n", - " <td>-5.732453</td>\n", - " <td>7.377854</td>\n", - " <td>0.551676</td>\n", + " <td>-556.08203</td>\n", + " <td>44.890602</td>\n", + " <td>-72.618399</td>\n", + " <td>80.272023</td>\n", + " <td>-2.269420</td>\n", + " <td>-13.219891</td>\n", + " <td>205.14955</td>\n", + " <td>96.863927</td>\n", + " <td>38.352424</td>\n", + " <td>...</td>\n", + " <td>-22.633102</td>\n", + " <td>13.513550</td>\n", + " <td>-3.126545</td>\n", + " <td>5.035097</td>\n", + " <td>-0.035805</td>\n", + " <td>-19.814285</td>\n", + " <td>18.576450</td>\n", + " <td>-1.172361</td>\n", + " <td>6.078238</td>\n", + " <td>-0.048851</td>\n", " </tr>\n", " <tr>\n", - " <th>rock_72.mp3</th>\n", + " <th>rock_86.mp3</th>\n", " <td>rock</td>\n", - " <td>-521.43176</td>\n", - " <td>53.568966</td>\n", - " <td>-33.458666</td>\n", - " <td>33.954524</td>\n", - " <td>-1.231794</td>\n", - " <td>8.941433</td>\n", - " <td>163.98274</td>\n", - " <td>96.094286</td>\n", - " <td>22.254676</td>\n", - " <td>...</td>\n", - " <td>-27.532902</td>\n", - " <td>7.778494</td>\n", - " <td>-7.521854</td>\n", - " <td>6.528954</td>\n", - " <td>-0.366071</td>\n", - " <td>-20.847164</td>\n", - " <td>18.145725</td>\n", - " <td>-2.035525</td>\n", - " <td>5.567113</td>\n", - " <td>0.051207</td>\n", - " </tr>\n", - " <tr>\n", - " <th>rock_83.mp3</th>\n", - " <td>rock</td>\n", - " <td>-525.08470</td>\n", - " <td>53.723972</td>\n", - " <td>-179.776997</td>\n", - " <td>88.419631</td>\n", - " <td>-0.274074</td>\n", - " <td>-58.428825</td>\n", - " <td>195.01112</td>\n", - " <td>94.848780</td>\n", - " <td>32.757511</td>\n", - " <td>...</td>\n", - " <td>-30.588310</td>\n", - " <td>33.064934</td>\n", - " <td>3.921451</td>\n", - " <td>7.783732</td>\n", - " <td>0.054672</td>\n", - " <td>-25.112260</td>\n", - " <td>29.217503</td>\n", - " <td>5.763236</td>\n", - " <td>7.981292</td>\n", - " <td>-0.062040</td>\n", + " <td>-534.40650</td>\n", + " <td>42.919650</td>\n", + " <td>-93.601685</td>\n", + " <td>62.192619</td>\n", + " <td>-0.869415</td>\n", + " <td>0.000000</td>\n", + " <td>206.32501</td>\n", + " <td>128.047509</td>\n", + " <td>30.374850</td>\n", + " <td>...</td>\n", + " <td>-30.471783</td>\n", + " <td>20.564953</td>\n", + " <td>-3.383356</td>\n", + " <td>6.405211</td>\n", + " <td>-0.185147</td>\n", + " <td>-28.917618</td>\n", + " <td>26.702751</td>\n", + " <td>-1.950565</td>\n", + " <td>6.725107</td>\n", + " <td>-0.253487</td>\n", " </tr>\n", " <tr>\n", " <th>rock_88.mp3</th>\n", @@ -1367,67 +1319,115 @@ " <td>6.544117</td>\n", " <td>0.184718</td>\n", " </tr>\n", + " <tr>\n", + " <th>rock_92.mp3</th>\n", + " <td>rock</td>\n", + " <td>-532.89110</td>\n", + " <td>13.948147</td>\n", + " <td>-206.891688</td>\n", + " <td>80.812274</td>\n", + " <td>0.090286</td>\n", + " <td>-47.724570</td>\n", + " <td>179.76506</td>\n", + " <td>109.954998</td>\n", + " <td>37.880477</td>\n", + " <td>...</td>\n", + " <td>-37.614220</td>\n", + " <td>21.420666</td>\n", + " <td>-8.287362</td>\n", + " <td>7.851784</td>\n", + " <td>-0.080285</td>\n", + " <td>-41.547260</td>\n", + " <td>25.628895</td>\n", + " <td>-9.046777</td>\n", + " <td>8.779821</td>\n", + " <td>0.071449</td>\n", + " </tr>\n", + " <tr>\n", + " <th>rock_93.mp3</th>\n", + " <td>rock</td>\n", + " <td>-570.46650</td>\n", + " <td>-26.067888</td>\n", + " <td>-302.483118</td>\n", + " <td>96.569376</td>\n", + " <td>0.159026</td>\n", + " <td>-89.999680</td>\n", + " <td>211.88910</td>\n", + " <td>103.686365</td>\n", + " <td>40.373592</td>\n", + " <td>...</td>\n", + " <td>-28.903786</td>\n", + " <td>35.712753</td>\n", + " <td>2.073339</td>\n", + " <td>10.995769</td>\n", + " <td>0.249798</td>\n", + " <td>-30.178170</td>\n", + " <td>30.612560</td>\n", + " <td>-4.677735</td>\n", + " <td>8.877041</td>\n", + " <td>0.149639</td>\n", + " </tr>\n", " </tbody>\n", "</table>\n", "<p>80 rows × 201 columns</p>\n", "</div>" ], "text/plain": [ - " label 0_min 0_max 0_mean 0_std \\\n", + " label 0_min 0_max 0_mean 0_std \\\n", "filename \n", - "classical_1.mp3 classical -530.78436 -163.308350 -302.203167 51.142183 \n", - "classical_100.mp3 classical -536.23737 -61.608826 -177.804114 83.381622 \n", - "classical_16.mp3 classical -602.36770 -92.236810 -246.956152 58.781397 \n", - "classical_2.mp3 classical -549.40650 -192.532060 -293.008970 27.207027 \n", - "classical_20.mp3 classical -605.99150 -161.119310 -263.483084 49.157298 \n", - "... ... ... ... ... ... \n", - "rock_61.mp3 rock -581.70320 -4.784650 -195.795774 49.129890 \n", - "rock_70.mp3 rock -560.31934 -65.886696 -201.773601 62.077689 \n", - "rock_72.mp3 rock -521.43176 53.568966 -33.458666 33.954524 \n", - "rock_83.mp3 rock -525.08470 53.723972 -179.776997 88.419631 \n", - "rock_88.mp3 rock -539.97880 44.375150 -126.955020 88.140999 \n", + "classical_12.mp3 classical -562.67523 -148.133560 -270.975406 52.191182 \n", + "classical_2.mp3 classical -549.40650 -192.532060 -293.008969 27.207028 \n", + "classical_20.mp3 classical -605.99150 -161.119310 -263.483084 49.157298 \n", + "classical_27.mp3 classical -595.41895 -78.118810 -265.344461 104.892303 \n", + "classical_39.mp3 classical -578.84720 -55.479320 -183.753039 69.140628 \n", + "... ... ... ... ... ... \n", + "rock_85.mp3 rock -556.08203 44.890602 -72.618399 80.272023 \n", + "rock_86.mp3 rock -534.40650 42.919650 -93.601685 62.192619 \n", + "rock_88.mp3 rock -539.97880 44.375150 -126.955020 88.140999 \n", + "rock_92.mp3 rock -532.89110 13.948147 -206.891688 80.812274 \n", + "rock_93.mp3 rock -570.46650 -26.067888 -302.483118 96.569376 \n", "\n", - " 0_skew 1_min 1_max 1_mean 1_std ... \\\n", - "filename ... \n", - "classical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847562 ... \n", - "classical_100.mp3 -2.587179 0.000000 190.47589 112.471713 27.277553 ... \n", - "classical_16.mp3 -1.276496 0.000000 242.02734 207.742183 15.827642 ... \n", - "classical_2.mp3 -0.426848 0.000000 231.03737 198.662515 14.957660 ... \n", - "classical_20.mp3 -0.856221 0.000000 191.92674 141.393817 17.754779 ... \n", - "... ... ... ... ... ... ... \n", - "rock_61.mp3 -0.593109 0.000000 277.18048 218.884291 32.386435 ... \n", - "rock_70.mp3 -0.576726 -29.625122 185.52118 121.034730 28.852134 ... \n", - "rock_72.mp3 -1.231794 8.941433 163.98274 96.094286 22.254676 ... \n", - "rock_83.mp3 -0.274074 -58.428825 195.01112 94.848780 32.757511 ... \n", - "rock_88.mp3 -1.700578 -19.007393 201.99960 99.760978 32.572320 ... \n", - "\n", - " 38_min 38_max 38_mean 38_std 38_skew \\\n", - "filename \n", - "classical_1.mp3 -44.098070 47.308060 -3.713503 16.553984 0.230691 \n", - "classical_100.mp3 -27.335688 27.610388 -0.333233 8.185075 0.208425 \n", - "classical_16.mp3 -38.999924 20.457050 -3.002113 8.130004 -1.282625 \n", - "classical_2.mp3 -25.912935 24.293318 0.746096 8.240027 -0.022513 \n", - "classical_20.mp3 -24.911243 38.551230 -2.274261 9.671005 0.719436 \n", - "... ... ... ... ... ... \n", - "rock_61.mp3 -16.274982 10.830383 -1.030385 3.743717 -0.558987 \n", - "rock_70.mp3 -26.226246 27.198473 -3.917270 8.094776 0.075448 \n", - "rock_72.mp3 -27.532902 7.778494 -7.521854 6.528954 -0.366071 \n", - "rock_83.mp3 -30.588310 33.064934 3.921451 7.783732 0.054672 \n", - "rock_88.mp3 -34.726500 26.706833 -5.827121 8.260717 0.275225 \n", + " 0_skew 1_min 1_max 1_mean 1_std ... \\\n", + "filename ... \n", + "classical_12.mp3 -0.366586 0.000000 194.26416 148.226647 19.305008 ... \n", + "classical_2.mp3 -0.426848 0.000000 231.03738 198.662514 14.957660 ... \n", + "classical_20.mp3 -0.856221 0.000000 191.92676 141.393817 17.754779 ... \n", + "classical_27.mp3 -0.526604 0.000000 200.61633 144.208488 25.198761 ... \n", + "classical_39.mp3 -0.577055 0.000000 193.84949 127.058496 29.295691 ... \n", + "... ... ... ... ... ... ... \n", + "rock_85.mp3 -2.269420 -13.219891 205.14955 96.863927 38.352424 ... \n", + "rock_86.mp3 -0.869415 0.000000 206.32501 128.047509 30.374850 ... \n", + "rock_88.mp3 -1.700578 -19.007393 201.99960 99.760978 32.572320 ... \n", + "rock_92.mp3 0.090286 -47.724570 179.76506 109.954998 37.880477 ... \n", + "rock_93.mp3 0.159026 -89.999680 211.88910 103.686365 40.373592 ... \n", "\n", - " 39_min 39_max 39_mean 39_std 39_skew \n", + " 38_min 38_max 38_mean 38_std 38_skew \\\n", "filename \n", - "classical_1.mp3 -46.794480 49.352516 -2.282116 15.285639 0.171462 \n", - "classical_100.mp3 -38.095375 31.397882 -1.494916 10.917299 0.020985 \n", - "classical_16.mp3 -32.711815 23.339695 -6.099672 8.291237 0.088775 \n", - "classical_2.mp3 -18.561390 23.484133 3.115819 7.220346 0.242364 \n", - "classical_20.mp3 -30.311796 29.272333 0.289613 9.590299 -0.244191 \n", - "... ... ... ... ... ... \n", - "rock_61.mp3 -12.881446 9.897078 -1.491518 3.449319 -0.126638 \n", - "rock_70.mp3 -26.580010 26.222483 -5.732453 7.377854 0.551676 \n", - "rock_72.mp3 -20.847164 18.145725 -2.035525 5.567113 0.051207 \n", - "rock_83.mp3 -25.112260 29.217503 5.763236 7.981292 -0.062040 \n", - "rock_88.mp3 -31.036520 27.423218 -4.715363 6.544117 0.184718 \n", + "classical_12.mp3 -44.843810 28.490644 -6.242015 10.546545 0.341848 \n", + "classical_2.mp3 -25.912933 24.293318 0.746096 8.240027 -0.022513 \n", + "classical_20.mp3 -24.911243 38.551230 -2.274261 9.671005 0.719436 \n", + "classical_27.mp3 -28.797087 20.897750 -5.761607 7.108055 0.360305 \n", + "classical_39.mp3 -48.678460 24.566566 -7.810246 11.568188 -0.106704 \n", + "... ... ... ... ... ... \n", + "rock_85.mp3 -22.633102 13.513550 -3.126545 5.035097 -0.035805 \n", + "rock_86.mp3 -30.471783 20.564953 -3.383356 6.405211 -0.185147 \n", + "rock_88.mp3 -34.726500 26.706833 -5.827121 8.260717 0.275225 \n", + "rock_92.mp3 -37.614220 21.420666 -8.287362 7.851784 -0.080285 \n", + "rock_93.mp3 -28.903786 35.712753 2.073339 10.995769 0.249798 \n", + "\n", + " 39_min 39_max 39_mean 39_std 39_skew \n", + "filename \n", + "classical_12.mp3 -25.040888 46.878204 1.844494 11.160392 0.503120 \n", + "classical_2.mp3 -18.561390 23.484133 3.115819 7.220346 0.242364 \n", + "classical_20.mp3 -30.311798 29.272330 0.289613 9.590299 -0.244191 \n", + "classical_27.mp3 -39.705540 25.803795 -2.736776 10.101577 -0.463730 \n", + "classical_39.mp3 -24.328775 40.172250 -0.078006 10.646963 0.492488 \n", + "... ... ... ... ... ... \n", + "rock_85.mp3 -19.814285 18.576450 -1.172361 6.078238 -0.048851 \n", + "rock_86.mp3 -28.917618 26.702751 -1.950565 6.725107 -0.253487 \n", + "rock_88.mp3 -31.036520 27.423218 -4.715363 6.544117 0.184718 \n", + "rock_92.mp3 -41.547260 25.628895 -9.046777 8.779821 0.071449 \n", + "rock_93.mp3 -30.178170 30.612560 -4.677735 8.877041 0.149639 \n", "\n", "[80 rows x 201 columns]" ] @@ -1448,16 +1448,16 @@ "id": "1e904bf3", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.234538Z", - "iopub.status.busy": "2023-10-10T20:29:57.234101Z", - "iopub.status.idle": "2023-10-10T20:29:57.254502Z", - "shell.execute_reply": "2023-10-10T20:29:57.253465Z" + "iopub.execute_input": "2024-02-15T10:06:44.488261Z", + "iopub.status.busy": "2024-02-15T10:06:44.487823Z", + "iopub.status.idle": "2024-02-15T10:06:44.517426Z", + "shell.execute_reply": "2024-02-15T10:06:44.515955Z" }, "papermill": { - "duration": 0.027966, - "end_time": "2023-10-10T20:29:57.256285", + "duration": 0.048656, + "end_time": "2024-02-15T10:06:44.527636", "exception": false, - "start_time": "2023-10-10T20:29:57.228319", + "start_time": "2024-02-15T10:06:44.478980", "status": "completed" }, "tags": [] @@ -1466,75 +1466,75 @@ { "data": { "text/plain": [ - "( 0_min 0_max 0_mean 0_std 0_skew \\\n", - " filename \n", - " classical_10.mp3 -562.85785 -96.164795 -219.259016 53.561839 -0.772320 \n", - " classical_11.mp3 -536.45746 -120.429665 -222.126303 76.246992 -2.402418 \n", - " classical_12.mp3 -562.67523 -148.133560 -270.975406 52.191182 -0.366586 \n", - " classical_13.mp3 -637.72064 -177.713960 -361.834032 71.310080 0.008325 \n", - " classical_14.mp3 -531.04944 -100.790540 -188.970758 58.287371 -3.246618 \n", - " ... ... ... ... ... ... \n", - " rock_95.mp3 -553.11010 -5.218835 -193.506047 76.869437 -0.201055 \n", - " rock_96.mp3 -541.23600 27.163332 -119.113996 58.420684 -0.957699 \n", - " rock_97.mp3 -518.49500 58.526745 -66.267744 65.635619 -0.898026 \n", - " rock_98.mp3 -518.64307 53.555115 -45.734517 52.444200 -1.705641 \n", - " rock_99.mp3 -544.70310 75.612130 -49.380943 54.045627 -0.863093 \n", + "( 0_min 0_max 0_mean 0_std 0_skew \\\n", + " filename \n", + " classical_1.mp3 -530.78436 -163.308350 -302.203167 51.142183 -0.468374 \n", + " classical_10.mp3 -562.85785 -96.164795 -219.259016 53.561838 -0.772320 \n", + " classical_100.mp3 -536.23737 -61.608826 -177.804114 83.381622 -2.587179 \n", + " classical_11.mp3 -536.45746 -120.429665 -222.126303 76.246992 -2.402418 \n", + " classical_13.mp3 -637.72064 -177.713960 -361.834032 71.310080 0.008325 \n", + " ... ... ... ... ... ... \n", + " rock_95.mp3 -553.11010 -5.218835 -193.506047 76.869437 -0.201055 \n", + " rock_96.mp3 -541.23600 27.163334 -119.113996 58.420684 -0.957699 \n", + " rock_97.mp3 -518.49500 58.526745 -66.267744 65.635619 -0.898026 \n", + " rock_98.mp3 -518.64307 53.555115 -45.734517 52.444200 -1.705641 \n", + " rock_99.mp3 -544.70310 75.612130 -49.380943 54.045627 -0.863093 \n", " \n", - " 1_min 1_max 1_mean 1_std 1_skew ... \\\n", - " filename ... \n", - " classical_10.mp3 0.029056 259.63272 215.094182 18.388131 -1.528751 ... \n", - " classical_11.mp3 0.000000 159.42575 99.853645 21.916948 -1.176922 ... \n", - " classical_12.mp3 0.000000 194.26416 148.226648 19.305008 -0.533255 ... \n", - " classical_13.mp3 0.000000 257.16284 211.556558 20.347035 -1.050119 ... \n", - " classical_14.mp3 0.000000 157.94792 86.563928 17.911136 0.244244 ... \n", - " ... ... ... ... ... ... ... \n", - " rock_95.mp3 -89.948746 201.18045 111.724191 36.463584 -0.443224 ... \n", - " rock_96.mp3 -7.415959 210.49246 125.453699 31.908870 -0.547469 ... \n", - " rock_97.mp3 -58.824410 175.20135 99.288265 25.158417 -0.568057 ... \n", - " rock_98.mp3 0.000000 187.04272 96.440874 24.137702 -0.145217 ... \n", - " rock_99.mp3 -32.930650 191.73538 93.971242 33.410220 0.040113 ... \n", + " 1_min 1_max 1_mean 1_std 1_skew ... \\\n", + " filename ... \n", + " classical_1.mp3 0.000000 178.75162 111.332342 24.847563 -0.402642 ... \n", + " classical_10.mp3 0.029056 259.63270 215.094182 18.388131 -1.528751 ... \n", + " classical_100.mp3 0.000000 190.47589 112.471713 27.277553 -1.318523 ... \n", + " classical_11.mp3 0.000000 159.42575 99.853645 21.916949 -1.176922 ... \n", + " classical_13.mp3 0.000000 257.16284 211.556558 20.347034 -1.050119 ... \n", + " ... ... ... ... ... ... ... \n", + " rock_95.mp3 -89.948746 201.18045 111.724191 36.463584 -0.443224 ... \n", + " rock_96.mp3 -7.415961 210.49246 125.453699 31.908869 -0.547469 ... \n", + " rock_97.mp3 -58.824410 175.20135 99.288265 25.158416 -0.568057 ... \n", + " rock_98.mp3 0.000000 187.04274 96.440874 24.137702 -0.145217 ... \n", + " rock_99.mp3 -32.930653 191.73538 93.971242 33.410220 0.040113 ... \n", " \n", - " 38_min 38_max 38_mean 38_std 38_skew \\\n", - " filename \n", - " classical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \n", - " classical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \n", - " classical_12.mp3 -44.843815 28.490644 -6.242015 10.546545 0.341848 \n", - " classical_13.mp3 -24.728806 18.424034 -0.275736 7.026148 -0.640964 \n", - " classical_14.mp3 -36.261150 38.335830 -5.770759 12.254058 0.805707 \n", - " ... ... ... ... ... ... \n", - " rock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \n", - " rock_96.mp3 -37.584858 28.087940 -9.704238 8.447620 0.112760 \n", - " rock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \n", - " rock_98.mp3 -26.967852 8.714736 -9.511491 5.551820 -0.025604 \n", - " rock_99.mp3 -21.929403 17.050608 -5.296691 5.894962 0.390705 \n", + " 38_min 38_max 38_mean 38_std 38_skew \\\n", + " filename \n", + " classical_1.mp3 -44.098070 47.308060 -3.713503 16.553984 0.230691 \n", + " classical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \n", + " classical_100.mp3 -27.335688 27.610388 -0.333233 8.185075 0.208425 \n", + " classical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \n", + " classical_13.mp3 -24.728806 18.424036 -0.275736 7.026148 -0.640964 \n", + " ... ... ... ... ... ... \n", + " rock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \n", + " rock_96.mp3 -37.584858 28.087936 -9.704238 8.447620 0.112760 \n", + " rock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \n", + " rock_98.mp3 -26.967848 8.714737 -9.511491 5.551820 -0.025604 \n", + " rock_99.mp3 -21.929403 17.050608 -5.296691 5.894963 0.390705 \n", " \n", - " 39_min 39_max 39_mean 39_std 39_skew \n", - " filename \n", - " classical_10.mp3 -28.989979 27.533707 0.952658 10.477735 -0.185771 \n", - " classical_11.mp3 -22.667439 50.992905 1.600777 10.125545 0.595763 \n", - " classical_12.mp3 -25.040886 46.878204 1.844494 11.160392 0.503120 \n", - " classical_13.mp3 -24.319565 18.439264 -2.147022 8.171929 0.009566 \n", - " classical_14.mp3 -40.597336 32.816467 -0.543406 11.467829 -0.187037 \n", - " ... ... ... ... ... ... \n", - " rock_95.mp3 -24.712723 23.410387 -4.502398 6.687983 0.238807 \n", - " rock_96.mp3 -38.147890 21.814400 -8.249507 7.807756 0.071968 \n", - " rock_97.mp3 -29.497524 25.410656 -3.356614 8.170526 0.160330 \n", - " rock_98.mp3 -23.020082 13.948639 -2.664985 5.051498 -0.258407 \n", - " rock_99.mp3 -20.983192 29.312021 -0.321836 6.571660 0.384794 \n", + " 39_min 39_max 39_mean 39_std 39_skew \n", + " filename \n", + " classical_1.mp3 -46.794480 49.352516 -2.282116 15.285639 0.171462 \n", + " classical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \n", + " classical_100.mp3 -38.095375 31.397880 -1.494916 10.917299 0.020985 \n", + " classical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \n", + " classical_13.mp3 -24.319565 18.439262 -2.147022 8.171929 0.009566 \n", + " ... ... ... ... ... ... \n", + " rock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \n", + " rock_96.mp3 -38.147890 21.814402 -8.249507 7.807756 0.071968 \n", + " rock_97.mp3 -29.497524 25.410654 -3.356614 8.170526 0.160330 \n", + " rock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \n", + " rock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \n", " \n", " [320 rows x 200 columns],\n", " array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", - " 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", - " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3,\n", - " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n", " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n", " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n", " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]))" @@ -1572,16 +1572,16 @@ "id": "32e5e889", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.267361Z", - "iopub.status.busy": "2023-10-10T20:29:57.266781Z", - "iopub.status.idle": "2023-10-10T20:29:57.277169Z", - "shell.execute_reply": "2023-10-10T20:29:57.276232Z" + "iopub.execute_input": "2024-02-15T10:06:44.553627Z", + "iopub.status.busy": "2024-02-15T10:06:44.552466Z", + "iopub.status.idle": "2024-02-15T10:06:44.565787Z", + "shell.execute_reply": "2024-02-15T10:06:44.564546Z" }, "papermill": { - "duration": 0.017882, - "end_time": "2023-10-10T20:29:57.279051", + "duration": 0.042899, + "end_time": "2024-02-15T10:06:44.582227", "exception": false, - "start_time": "2023-10-10T20:29:57.261169", + "start_time": "2024-02-15T10:06:44.539328", "status": "completed" }, "tags": [] @@ -1599,9 +1599,9 @@ { "data": { "text/plain": [ - "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,\n", - " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,\n", + "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n", " 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])" ] }, @@ -1627,16 +1627,16 @@ "id": "e165922f", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.290898Z", - "iopub.status.busy": "2023-10-10T20:29:57.290575Z", - "iopub.status.idle": "2023-10-10T20:29:57.300558Z", - "shell.execute_reply": "2023-10-10T20:29:57.299316Z" + "iopub.execute_input": "2024-02-15T10:06:44.600958Z", + "iopub.status.busy": "2024-02-15T10:06:44.600601Z", + "iopub.status.idle": "2024-02-15T10:06:44.616543Z", + "shell.execute_reply": "2024-02-15T10:06:44.614861Z" }, "papermill": { - "duration": 0.018174, - "end_time": "2023-10-10T20:29:57.302443", + "duration": 0.030524, + "end_time": "2024-02-15T10:06:44.621802", "exception": false, - "start_time": "2023-10-10T20:29:57.284269", + "start_time": "2024-02-15T10:06:44.591278", "status": "completed" }, "tags": [] @@ -1645,19 +1645,19 @@ { "data": { "text/plain": [ - "array([[-0.4346809 , -1.00382224, -0.46537335, ..., 0.27980735,\n", - " 1.37909073, -0.85772004],\n", - " [ 0.31629337, -1.32218065, -0.49704394, ..., 0.47491861,\n", - " 1.22562585, 1.40610938],\n", - " [-0.42948617, -1.68565954, -1.03660633, ..., 0.54828747,\n", - " 1.67655505, 1.13775631],\n", + "array([[ 0.38209988, -1.79901606, -1.34294124, ..., -0.7312519 ,\n", + " 3.4358529 , 0.11530124],\n", + " [-0.42728837, -0.93236007, -0.41652953, ..., 0.22563011,\n", + " 1.37555438, -0.86835549],\n", + " [ 0.24449084, -0.48632861, 0.04648451, ..., -0.49838941,\n", + " 1.56391778, -0.29904453],\n", " ...,\n", - " [ 0.82724587, 1.02575192, 1.22449058, ..., -1.0174661 ,\n", - " 0.37373553, 0.14481522],\n", - " [ 0.82303394, 0.96052345, 1.45129017, ..., -0.80925654,\n", - " -0.98536595, -1.06811973],\n", - " [ 0.0817414 , 1.24991451, 1.41101361, ..., -0.10386926,\n", - " -0.32296274, 0.79500701]])" + " [ 0.69222714, 1.06432227, 1.29224565, ..., -1.0491004 ,\n", + " 0.38686173, 0.08464998],\n", + " [ 0.68849053, 1.00015092, 1.52158336, ..., -0.84450893,\n", + " -0.94971424, -1.06836048],\n", + " [ 0.03085452, 1.28485202, 1.48085606, ..., -0.15137928,\n", + " -0.29828957, 0.70271937]])" ] }, "execution_count": 10, @@ -1680,16 +1680,16 @@ "id": "d389fd70", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.314140Z", - "iopub.status.busy": "2023-10-10T20:29:57.313383Z", - "iopub.status.idle": "2023-10-10T20:29:57.356956Z", - "shell.execute_reply": "2023-10-10T20:29:57.356347Z" + "iopub.execute_input": "2024-02-15T10:06:44.641936Z", + "iopub.status.busy": "2024-02-15T10:06:44.641290Z", + "iopub.status.idle": "2024-02-15T10:06:44.692096Z", + "shell.execute_reply": "2024-02-15T10:06:44.690837Z" }, "papermill": { - "duration": 0.051607, - "end_time": "2023-10-10T20:29:57.358807", + "duration": 0.070334, + "end_time": "2024-02-15T10:06:44.700812", "exception": false, - "start_time": "2023-10-10T20:29:57.307200", + "start_time": "2024-02-15T10:06:44.630478", "status": "completed" }, "tags": [] @@ -1699,7 +1699,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.8559039083956931\n", + "0.8557392011152061\n", "(320, 50)\n", "(80, 50)\n", "(320,)\n" @@ -1724,16 +1724,16 @@ "id": "aa1d9036", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.374172Z", - "iopub.status.busy": "2023-10-10T20:29:57.373818Z", - "iopub.status.idle": "2023-10-10T20:29:57.420690Z", - "shell.execute_reply": "2023-10-10T20:29:57.420109Z" + "iopub.execute_input": "2024-02-15T10:06:44.764588Z", + "iopub.status.busy": "2024-02-15T10:06:44.764242Z", + "iopub.status.idle": "2024-02-15T10:06:44.838160Z", + "shell.execute_reply": "2024-02-15T10:06:44.837012Z" }, "papermill": { - "duration": 0.056577, - "end_time": "2023-10-10T20:29:57.422309", + "duration": 0.115738, + "end_time": "2024-02-15T10:06:44.842730", "exception": false, - "start_time": "2023-10-10T20:29:57.365732", + "start_time": "2024-02-15T10:06:44.726992", "status": "completed" }, "tags": [] @@ -1743,21 +1743,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.78125\n", - "[[ 2.51466268e+00 -2.15621261e+00 -3.30158585e+00 ... 4.19121104e-01\n", - " 1.29879394e+00 -4.20651709e-01]\n", - " [ 5.36944848e+00 -3.08147501e+00 -2.42702032e+00 ... -1.12031872e+00\n", - " 6.35422293e-03 -2.86513090e-01]\n", - " [-4.71341815e+00 -1.57184343e+00 -4.14689505e+00 ... -4.98565924e-01\n", - " -3.20266226e-01 2.67524977e-01]\n", + "0.6875\n", + "[[-4.64558613 3.08838305 -1.47175688 ... -1.24828691 -0.70095473\n", + " 0.01689286]\n", + " [ 5.85968202 -2.1047151 -3.35419664 ... -1.48822402 1.00205068\n", + " -0.98882563]\n", + " [ 6.52471238 -2.88386219 -5.91379963 ... 0.08618421 0.03366275\n", + " -0.55189302]\n", " ...\n", - " [-3.32602874e+00 3.13612558e+00 2.81880947e-01 ... -8.85331612e-01\n", - " -5.94016091e-01 2.01951459e-01]\n", - " [-4.31744551e+00 -1.49880110e+00 4.63139496e+00 ... -7.03178147e-01\n", - " -4.77496275e-01 -1.66621655e+00]\n", - " [ 1.94703563e+00 -4.04312963e+00 6.67944207e+00 ... 1.31036789e-01\n", - " 1.00110120e+00 -1.92368461e+00]]\n", - "[3 0 3 2 3 0 1 2 0 3 0 0 0 1 2 1 2 3 2 1 1 0 3 0 0 0 3 1 1 3 3 2 3 1 2 1 0\n", + " [ 5.3496866 3.90245458 -4.07128854 ... -0.82356091 -0.7968544\n", + " 0.26045289]\n", + " [ 6.68981697 -1.18340439 -0.12267599 ... 1.33593613 -2.8015435\n", + " 0.5028293 ]\n", + " [-4.78063681 -7.16377441 4.09506551 ... -1.0308011 0.83671387\n", + " -0.07027211]]\n", + "[3 0 3 2 3 0 1 2 0 3 0 0 0 1 2 1 2 3 1 1 1 0 3 0 0 0 3 1 1 3 3 2 3 1 2 1 0\n", " 1 0 1 3 0 0 0 0 3 3 3 0 3 3 3 1 2 2 0 1 2 1 2 3 2 1 0]\n" ] } @@ -1781,16 +1781,16 @@ "id": "fc48c86e", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:57.441081Z", - "iopub.status.busy": "2023-10-10T20:29:57.440621Z", - "iopub.status.idle": "2023-10-10T20:29:59.162266Z", - "shell.execute_reply": "2023-10-10T20:29:59.161265Z" + "iopub.execute_input": "2024-02-15T10:06:44.862363Z", + "iopub.status.busy": "2024-02-15T10:06:44.861486Z", + "iopub.status.idle": "2024-02-15T10:06:46.923607Z", + "shell.execute_reply": "2024-02-15T10:06:46.922543Z" }, "papermill": { - "duration": 1.734451, - "end_time": "2023-10-10T20:29:59.165225", + "duration": 2.081139, + "end_time": "2024-02-15T10:06:46.932532", "exception": false, - "start_time": "2023-10-10T20:29:57.430774", + "start_time": "2024-02-15T10:06:44.851393", "status": "completed" }, "tags": [] @@ -1800,10 +1800,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.7421568627450981\n", + "0.7343891402714932\n", "{'C': 3, 'gamma': 0.01}\n", "SVC(C=3, gamma=0.01)\n", - "0.8125\n" + "0.78125\n" ] } ], @@ -1829,16 +1829,16 @@ "id": "7cf87469", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.177207Z", - "iopub.status.busy": "2023-10-10T20:29:59.176983Z", - "iopub.status.idle": "2023-10-10T20:29:59.207985Z", - "shell.execute_reply": "2023-10-10T20:29:59.207100Z" + "iopub.execute_input": "2024-02-15T10:06:46.952751Z", + "iopub.status.busy": "2024-02-15T10:06:46.952327Z", + "iopub.status.idle": "2024-02-15T10:06:46.997919Z", + "shell.execute_reply": "2024-02-15T10:06:46.996989Z" }, "papermill": { - "duration": 0.03941, - "end_time": "2023-10-10T20:29:59.210579", + "duration": 0.064398, + "end_time": "2024-02-15T10:06:47.003632", "exception": false, - "start_time": "2023-10-10T20:29:59.171169", + "start_time": "2024-02-15T10:06:46.939234", "status": "completed" }, "tags": [] @@ -1848,7 +1848,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.796875\n" + "0.78125\n" ] } ], @@ -1867,16 +1867,16 @@ "id": "5a754cd1", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.221662Z", - "iopub.status.busy": "2023-10-10T20:29:59.221450Z", - "iopub.status.idle": "2023-10-10T20:29:59.269780Z", - "shell.execute_reply": "2023-10-10T20:29:59.268894Z" + "iopub.execute_input": "2024-02-15T10:06:47.039860Z", + "iopub.status.busy": "2024-02-15T10:06:47.038736Z", + "iopub.status.idle": "2024-02-15T10:06:47.137886Z", + "shell.execute_reply": "2024-02-15T10:06:47.137031Z" }, "papermill": { - "duration": 0.056512, - "end_time": "2023-10-10T20:29:59.272289", + "duration": 0.123554, + "end_time": "2024-02-15T10:06:47.144511", "exception": false, - "start_time": "2023-10-10T20:29:59.215777", + "start_time": "2024-02-15T10:06:47.020957", "status": "completed" }, "tags": [] @@ -1886,87 +1886,87 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.75\n", - "[[3.80912063e-01 4.82919652e-01 9.85214848e-02 3.76468003e-02]\n", - " [9.98695097e-01 6.31049704e-04 3.29020824e-04 3.44832778e-04]\n", - " [7.36266115e-01 2.08135786e-01 3.08713900e-02 2.47267089e-02]\n", - " [9.92107881e-01 4.88540640e-03 1.46965938e-03 1.53705282e-03]\n", - " [9.95185286e-01 1.80748647e-04 1.08320567e-03 3.55075956e-03]\n", - " [9.80406429e-01 4.01129372e-03 1.18218425e-02 3.76043463e-03]\n", - " [9.11421727e-01 5.61353333e-02 2.31412354e-02 9.30170476e-03]\n", - " [9.95054225e-01 2.58986422e-03 1.31981443e-03 1.03609627e-03]\n", - " [7.86094573e-01 4.61973283e-03 1.46800123e-01 6.24855717e-02]\n", - " [9.90948622e-01 3.55729078e-03 3.10620131e-03 2.38788546e-03]\n", - " [9.98288118e-01 9.33456938e-04 5.76541747e-04 2.01883361e-04]\n", - " [9.99209353e-01 3.05959781e-04 3.35511812e-04 1.49175764e-04]\n", - " [9.90505840e-01 1.71720185e-03 2.82030284e-03 4.95665556e-03]\n", - " [9.58006492e-01 2.81210475e-02 6.62275509e-03 7.24970528e-03]\n", - " [8.15419665e-01 1.47546102e-01 1.45722448e-02 2.24619875e-02]\n", - " [6.40781237e-01 1.67037300e-01 1.56105931e-01 3.60755316e-02]\n", - " [9.99704874e-01 1.46132720e-04 1.03874709e-04 4.51188740e-05]\n", - " [9.87992560e-01 9.85448561e-03 1.44616128e-03 7.06792747e-04]\n", - " [9.68442566e-01 1.30183429e-02 1.47145547e-02 3.82453634e-03]\n", - " [9.97597318e-01 1.49425506e-03 3.60393318e-04 5.48033821e-04]\n", - " [9.99817340e-01 7.07439595e-05 7.89523468e-05 3.29635251e-05]\n", - " [7.40548619e-01 1.93147660e-01 4.86705399e-02 1.76331813e-02]\n", - " [5.46358653e-03 9.48155165e-01 3.88303278e-02 7.55092040e-03]\n", - " [6.93645706e-03 7.04185725e-01 1.91956439e-01 9.69213790e-02]\n", - " [7.54082420e-01 1.74918772e-01 4.24096836e-02 2.85891248e-02]\n", - " [6.71844628e-01 1.90984894e-01 1.25222882e-01 1.19475962e-02]\n", - " [9.78682202e-02 8.14440589e-01 6.77954387e-02 1.98957517e-02]\n", - " [2.67557505e-01 1.83899883e-01 3.27445968e-01 2.21096644e-01]\n", - " [3.74884314e-04 9.44525404e-01 6.47642757e-03 4.86232845e-02]\n", - " [7.01170418e-01 2.25402258e-01 5.02633402e-02 2.31639835e-02]\n", - " [7.09566525e-03 8.80644199e-01 7.73881454e-02 3.48719899e-02]\n", - " [2.48796897e-03 4.91326690e-01 6.62526685e-02 4.39932673e-01]\n", - " [2.59830866e-03 9.10155104e-01 1.21605028e-02 7.50860849e-02]\n", - " [1.19395410e-02 9.45201823e-01 3.27464466e-02 1.01121891e-02]\n", - " [4.40334634e-02 8.54861701e-01 6.06035992e-02 4.05012361e-02]\n", - " [4.88431768e-01 4.30502616e-02 3.75551021e-01 9.29669495e-02]\n", - " [6.96287734e-03 9.77190086e-01 1.00740652e-02 5.77297169e-03]\n", - " [5.48040762e-03 8.41655395e-01 7.07918425e-02 8.20723552e-02]\n", - " [1.01150220e-03 7.95574856e-01 1.73377553e-02 1.86075886e-01]\n", - " [9.19839445e-02 7.39411604e-01 1.02113037e-01 6.64914148e-02]\n", - " [2.35401286e-02 6.17916731e-01 2.08761482e-01 1.49781658e-01]\n", - " [3.72109733e-03 9.82810078e-01 9.05550342e-03 4.41332078e-03]\n", - " [1.45472374e-03 9.39792811e-01 5.25338921e-02 6.21857267e-03]\n", - " [4.04598939e-02 2.43914518e-01 2.89510817e-01 4.26114771e-01]\n", - " [3.84918061e-03 4.86344098e-03 6.48282347e-01 3.43005031e-01]\n", - " [4.27868060e-03 8.45365051e-03 8.47482036e-01 1.39785633e-01]\n", - " [7.04160925e-02 8.79452817e-01 2.84676081e-02 2.16634820e-02]\n", - " [9.08417555e-03 4.72441898e-01 4.40548839e-01 7.79250868e-02]\n", - " [1.34552901e-03 1.67821231e-02 2.62985419e-01 7.18886929e-01]\n", - " [1.19071800e-03 1.82314153e-03 8.57575175e-01 1.39410965e-01]\n", - " [8.05070967e-03 1.59416974e-02 6.07230449e-01 3.68777143e-01]\n", - " [1.81435348e-03 4.27986188e-01 5.35101250e-01 3.50982082e-02]\n", - " [1.12166547e-01 1.19301801e-01 3.96312133e-01 3.72219520e-01]\n", - " [5.12312418e-04 2.88372924e-03 9.50257986e-01 4.63459726e-02]\n", - " [1.73558211e-03 8.00339752e-03 1.86767450e-01 8.03493570e-01]\n", - " [5.06983704e-04 8.34130437e-01 1.22451421e-01 4.29111580e-02]\n", - " [1.27980769e-02 8.22165530e-03 8.09084193e-01 1.69896075e-01]\n", - " [4.41959343e-03 3.95974889e-02 6.90132944e-01 2.65849974e-01]\n", - " [2.67944164e-03 5.00574781e-02 7.48920432e-01 1.98342648e-01]\n", - " [3.51787074e-02 1.17672267e-01 6.83713699e-01 1.63435326e-01]\n", - " [7.02938677e-04 9.54674258e-03 2.87579938e-01 7.02170381e-01]\n", - " [1.21049078e-01 1.78826344e-01 2.76662544e-01 4.23462034e-01]\n", - " [1.43666852e-02 3.77313102e-02 8.88026928e-01 5.98750768e-02]\n", - " [4.62334624e-03 1.21723877e-02 9.00828490e-01 8.23757766e-02]\n", - " [7.99078715e-03 6.21737555e-02 7.09032167e-01 2.20803291e-01]\n", - " [1.28861552e-02 9.48482830e-02 2.46873258e-01 6.45392304e-01]\n", - " [4.13239983e-04 5.76197056e-03 3.00543861e-02 9.63770403e-01]\n", - " [1.96419929e-03 6.54361019e-02 2.90574475e-01 6.42025224e-01]\n", - " [1.68115518e-02 4.67009927e-01 2.00577964e-01 3.15600557e-01]\n", - " [5.22503725e-03 6.22120779e-02 4.12234616e-01 5.20328269e-01]\n", - " [3.12117877e-03 3.20361827e-02 1.52730993e-01 8.12111646e-01]\n", - " [3.90408642e-03 7.27792629e-01 1.54150568e-01 1.14152717e-01]\n", - " [2.18257178e-04 3.17944125e-03 8.65883614e-01 1.30718687e-01]\n", - " [3.04376537e-02 2.13526226e-02 3.06695380e-01 6.41514343e-01]\n", - " [4.33716745e-03 4.29931512e-01 5.78609106e-02 5.07870410e-01]\n", - " [7.40887737e-03 9.42427181e-01 2.52891459e-02 2.48747956e-02]\n", - " [7.71170681e-04 1.09014050e-03 6.79981335e-02 9.30140555e-01]\n", - " [9.73290281e-04 3.45995961e-03 3.30529078e-02 9.62513842e-01]\n", - " [8.08830674e-04 5.20843803e-03 2.98570366e-01 6.95412366e-01]\n", - " [2.34979538e-02 3.62172050e-02 3.25031347e-01 6.15253494e-01]]\n" + "0.8\n", + "[[9.60125451e-01 2.54410379e-02 1.00183548e-02 4.41515609e-03]\n", + " [9.93544791e-01 4.04634019e-03 1.20649558e-03 1.20237342e-03]\n", + " [9.97430192e-01 1.76800719e-04 5.38565546e-04 1.85444214e-03]\n", + " [9.79967977e-01 6.86113735e-03 9.68497114e-03 3.48591496e-03]\n", + " [9.91884967e-01 5.17290348e-03 1.26266158e-03 1.67946793e-03]\n", + " [9.85578464e-01 9.44992493e-03 3.75086068e-03 1.22075036e-03]\n", + " [2.04862989e-01 4.53621014e-01 1.34373358e-01 2.07142639e-01]\n", + " [9.99181855e-01 4.86945868e-04 2.22608725e-04 1.08590413e-04]\n", + " [9.92658119e-01 3.47218548e-03 2.74696376e-03 1.12273207e-03]\n", + " [9.99656357e-01 1.12727916e-04 1.43400994e-04 8.75138776e-05]\n", + " [8.47319131e-01 4.69014094e-02 7.09411516e-02 3.48383077e-02]\n", + " [1.28380278e-01 3.67332428e-01 3.59429595e-01 1.44857699e-01]\n", + " [9.96413445e-01 2.75890076e-03 4.65504357e-04 3.62150045e-04]\n", + " [9.98826125e-01 7.62447290e-04 3.01490088e-04 1.09937383e-04]\n", + " [9.99401836e-01 8.67850526e-05 3.74373911e-04 1.37005308e-04]\n", + " [9.97955498e-01 1.69931669e-03 1.73626292e-04 1.71558652e-04]\n", + " [8.45643860e-01 1.33426916e-02 9.97412359e-02 4.12722121e-02]\n", + " [9.82092462e-01 1.15346135e-02 3.19973757e-03 3.17318740e-03]\n", + " [9.83213850e-01 1.24420959e-02 3.26304918e-03 1.08100527e-03]\n", + " [9.99642856e-01 7.19184901e-05 1.55316717e-04 1.29908898e-04]\n", + " [9.97979494e-01 1.76870557e-03 1.31807873e-04 1.19992584e-04]\n", + " [4.92333515e-04 9.38096306e-01 2.10469538e-02 4.03644064e-02]\n", + " [9.45551189e-03 4.32699483e-01 4.16341606e-01 1.41503399e-01]\n", + " [9.13893710e-03 4.44229440e-01 3.15860710e-01 2.30770912e-01]\n", + " [6.79828415e-02 6.71681498e-01 2.09457159e-01 5.08785014e-02]\n", + " [1.68076034e-04 9.71769830e-01 2.24441690e-03 2.58176775e-02]\n", + " [5.73737808e-02 8.61494512e-02 5.86365884e-01 2.70110884e-01]\n", + " [1.18603200e-01 5.68582627e-01 2.33418558e-01 7.93956149e-02]\n", + " [1.11117289e-02 9.36048570e-01 2.07419839e-02 3.20977167e-02]\n", + " [4.27128683e-03 2.53015466e-01 4.52073691e-01 2.90639556e-01]\n", + " [8.49595708e-03 6.37021927e-01 1.52099758e-01 2.02382358e-01]\n", + " [9.29855946e-04 8.43628458e-01 1.67412440e-02 1.38700442e-01]\n", + " [5.75440080e-02 6.65893968e-01 1.18869183e-01 1.57692841e-01]\n", + " [7.28891949e-02 6.97755501e-01 1.23916666e-01 1.05438637e-01]\n", + " [1.00364172e-01 3.05951082e-01 4.02534596e-01 1.91150150e-01]\n", + " [2.71956862e-04 5.43067021e-01 1.43066793e-02 4.42354343e-01]\n", + " [8.60586155e-02 8.06134589e-02 6.12157762e-01 2.21170163e-01]\n", + " [4.54205646e-02 3.77922605e-02 7.46222645e-01 1.70564530e-01]\n", + " [2.60732219e-02 1.78887893e-01 3.03253706e-01 4.91785179e-01]\n", + " [1.76685545e-01 1.49702306e-01 5.30947449e-01 1.42664700e-01]\n", + " [2.10423538e-02 3.16261307e-02 6.86655601e-01 2.60675914e-01]\n", + " [5.10365555e-03 9.06077798e-03 3.10609892e-01 6.75225674e-01]\n", + " [1.85590659e-04 4.20187052e-01 2.54067881e-01 3.25559476e-01]\n", + " [1.84121015e-03 1.49368051e-03 5.94696830e-01 4.01968279e-01]\n", + " [9.94756099e-03 1.98337895e-02 6.10189918e-01 3.60028732e-01]\n", + " [1.06218859e-02 5.83443846e-02 4.09385718e-01 5.21648011e-01]\n", + " [2.51610276e-01 1.06475171e-01 4.02323327e-01 2.39591226e-01]\n", + " [1.05739190e-03 4.80039248e-03 7.84298209e-01 2.09844007e-01]\n", + " [1.20304373e-03 2.49929289e-03 4.25498367e-01 5.70799297e-01]\n", + " [5.17165422e-04 2.44187897e-03 7.70942808e-01 2.26098148e-01]\n", + " [1.48279902e-01 4.34212254e-01 3.33486768e-01 8.40210765e-02]\n", + " [6.49493657e-03 2.03203941e-03 6.76591245e-01 3.14881779e-01]\n", + " [1.42643647e-03 3.00507802e-02 7.66466942e-01 2.02055842e-01]\n", + " [2.71205953e-04 1.64674206e-03 5.18908081e-01 4.79173971e-01]\n", + " [6.18460044e-04 8.65733199e-03 7.31160871e-01 2.59563337e-01]\n", + " [5.99851686e-04 9.88068783e-03 3.18075020e-01 6.71444441e-01]\n", + " [8.92857719e-05 2.49912334e-03 8.22928402e-01 1.74483188e-01]\n", + " [4.08821963e-03 4.01685411e-03 2.22308630e-01 7.69586296e-01]\n", + " [3.85280110e-04 4.28844983e-03 4.38873417e-01 5.56452853e-01]\n", + " [7.77946831e-04 9.39309422e-03 1.89573855e-01 8.00255104e-01]\n", + " [1.07826925e-03 4.48667610e-03 1.68966113e-01 8.25468942e-01]\n", + " [4.32984844e-03 3.71263242e-02 1.74061879e-01 7.84481948e-01]\n", + " [8.91964233e-04 4.60229508e-03 2.56203571e-01 7.38302169e-01]\n", + " [1.53170345e-04 2.66905629e-03 8.05893086e-01 1.91284687e-01]\n", + " [3.76678169e-04 2.66687172e-02 1.35691366e-01 8.37263238e-01]\n", + " [1.87189571e-03 2.95477730e-02 1.83614398e-01 7.84965933e-01]\n", + " [3.65699757e-04 4.65723230e-02 1.96467002e-01 7.56594975e-01]\n", + " [3.91020418e-03 2.21215837e-02 3.46096170e-01 6.27872042e-01]\n", + " [3.53128321e-04 1.26062549e-03 4.04030924e-01 5.94355323e-01]\n", + " [3.85531972e-04 1.67060179e-03 5.14520249e-01 4.83423617e-01]\n", + " [4.01176053e-04 1.39364758e-03 5.62411421e-01 4.35793755e-01]\n", + " [2.19890976e-02 4.13933530e-01 3.17505597e-01 2.46571775e-01]\n", + " [2.63540892e-03 1.60423321e-02 1.69895446e-01 8.11426813e-01]\n", + " [5.95478507e-04 7.12069104e-04 9.01272706e-02 9.08565182e-01]\n", + " [2.56904495e-04 3.92709426e-03 3.41668674e-01 6.54147328e-01]\n", + " [3.34122792e-04 5.02991556e-03 3.01652248e-01 6.92983714e-01]\n", + " [1.74105457e-03 1.54657507e-02 2.27888902e-01 7.54904293e-01]\n", + " [3.34518377e-02 5.51052761e-02 3.32962366e-01 5.78480520e-01]\n", + " [1.16808056e-03 1.31231889e-03 1.63219289e-01 8.34300311e-01]\n", + " [8.88813523e-02 1.55465620e-01 3.86988580e-01 3.68664447e-01]]\n" ] } ], @@ -1984,16 +1984,16 @@ "id": "bbd99cb8", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.284845Z", - "iopub.status.busy": "2023-10-10T20:29:59.284598Z", - "iopub.status.idle": "2023-10-10T20:29:59.288730Z", - "shell.execute_reply": "2023-10-10T20:29:59.287939Z" + "iopub.execute_input": "2024-02-15T10:06:47.183458Z", + "iopub.status.busy": "2024-02-15T10:06:47.182273Z", + "iopub.status.idle": "2024-02-15T10:06:47.189844Z", + "shell.execute_reply": "2024-02-15T10:06:47.188149Z" }, "papermill": { - "duration": 0.013431, - "end_time": "2023-10-10T20:29:59.291504", + "duration": 0.030742, + "end_time": "2024-02-15T10:06:47.201582", "exception": false, - "start_time": "2023-10-10T20:29:59.278073", + "start_time": "2024-02-15T10:06:47.170840", "status": "completed" }, "tags": [] @@ -2018,16 +2018,16 @@ "id": "af3c36d2", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.308349Z", - "iopub.status.busy": "2023-10-10T20:29:59.308060Z", - "iopub.status.idle": "2023-10-10T20:29:59.373037Z", - "shell.execute_reply": "2023-10-10T20:29:59.372087Z" + "iopub.execute_input": "2024-02-15T10:06:47.226325Z", + "iopub.status.busy": "2024-02-15T10:06:47.225952Z", + "iopub.status.idle": "2024-02-15T10:06:47.310314Z", + "shell.execute_reply": "2024-02-15T10:06:47.309263Z" }, "papermill": { - "duration": 0.077343, - "end_time": "2023-10-10T20:29:59.375697", + "duration": 0.101143, + "end_time": "2024-02-15T10:06:47.316068", "exception": false, - "start_time": "2023-10-10T20:29:59.298354", + "start_time": "2024-02-15T10:06:47.214925", "status": "completed" }, "tags": [] @@ -2037,88 +2037,88 @@ "name": "stdout", "output_type": "stream", "text": [ - " label pred1 pred2 pred3 pred4\n", - "filename \n", - "classical_1.mp3 classical electronic classical pop rock\n", - "classical_100.mp3 classical classical electronic rock pop\n", - "classical_16.mp3 classical classical electronic pop rock\n", - "classical_2.mp3 classical classical electronic rock pop\n", - "classical_20.mp3 classical classical rock pop electronic\n", - "classical_24.mp3 classical classical pop rock electronic\n", - "classical_33.mp3 classical classical electronic pop rock\n", - "classical_35.mp3 classical classical electronic pop rock\n", - "classical_38.mp3 classical classical pop rock electronic\n", - "classical_42.mp3 classical classical electronic pop rock\n", - "classical_46.mp3 classical classical electronic pop rock\n", - "classical_48.mp3 classical classical pop electronic rock\n", - "classical_51.mp3 classical classical rock pop electronic\n", - "classical_59.mp3 classical classical electronic rock pop\n", - "classical_64.mp3 classical classical electronic rock pop\n", - "classical_68.mp3 classical classical electronic pop rock\n", - "classical_7.mp3 classical classical electronic pop rock\n", - "classical_80.mp3 classical classical electronic pop rock\n", - "classical_87.mp3 classical classical pop electronic rock\n", - "classical_93.mp3 classical classical electronic rock pop\n", - "classical_96.mp3 classical classical pop electronic rock\n", - "classical_99.mp3 classical classical electronic pop rock\n", - "electronic_100.mp3 electronic electronic pop rock classical\n", - "electronic_14.mp3 electronic electronic pop rock classical\n", - "electronic_19.mp3 electronic classical electronic pop rock\n", - "electronic_24.mp3 electronic classical electronic pop rock\n", - "electronic_32.mp3 electronic electronic classical pop rock\n", - "electronic_41.mp3 electronic pop classical rock electronic\n", - "electronic_43.mp3 electronic electronic rock pop classical\n", - "electronic_47.mp3 electronic classical electronic pop rock\n", - "electronic_52.mp3 electronic electronic pop rock classical\n", - "electronic_54.mp3 electronic electronic rock pop classical\n", - "electronic_59.mp3 electronic electronic rock pop classical\n", - "electronic_6.mp3 electronic electronic pop rock classical\n", - "electronic_61.mp3 electronic electronic pop rock classical\n", - "electronic_66.mp3 electronic classical pop rock electronic\n", - "electronic_73.mp3 electronic electronic pop rock classical\n", - "electronic_8.mp3 electronic electronic rock pop classical\n", - "electronic_81.mp3 electronic electronic rock pop classical\n", - "electronic_90.mp3 electronic electronic pop classical rock\n", - "electronic_92.mp3 electronic electronic pop rock classical\n", - "electronic_93.mp3 electronic electronic pop rock classical\n", - "electronic_98.mp3 electronic electronic pop rock classical\n", - "pop_100.mp3 pop rock pop electronic classical\n", - "pop_14.mp3 pop pop rock electronic classical\n", - "pop_17.mp3 pop pop rock electronic classical\n", - "pop_19.mp3 pop electronic classical pop rock\n", - "pop_28.mp3 pop electronic pop rock classical\n", - "pop_31.mp3 pop rock pop electronic classical\n", - "pop_50.mp3 pop pop rock electronic classical\n", - "pop_53.mp3 pop pop rock electronic classical\n", - "pop_54.mp3 pop pop electronic rock classical\n", - "pop_61.mp3 pop pop rock electronic classical\n", - "pop_66.mp3 pop pop rock electronic classical\n", - "pop_68.mp3 pop rock pop electronic classical\n", - "pop_71.mp3 pop electronic pop rock classical\n", - "pop_72.mp3 pop pop rock classical electronic\n", - "pop_8.mp3 pop pop rock electronic classical\n", - "pop_80.mp3 pop pop rock electronic classical\n", - "pop_83.mp3 pop pop rock electronic classical\n", - "pop_87.mp3 pop rock pop electronic classical\n", - "pop_93.mp3 pop rock pop electronic classical\n", - "pop_96.mp3 pop pop rock electronic classical\n", - "pop_99.mp3 pop pop rock electronic classical\n", - "rock_17.mp3 rock pop rock electronic classical\n", - "rock_20.mp3 rock rock pop electronic classical\n", - "rock_22.mp3 rock rock pop electronic classical\n", - "rock_26.mp3 rock rock pop electronic classical\n", - "rock_29.mp3 rock electronic rock pop classical\n", - "rock_34.mp3 rock rock pop electronic classical\n", - "rock_37.mp3 rock rock pop electronic classical\n", - "rock_41.mp3 rock electronic pop rock classical\n", - "rock_48.mp3 rock pop rock electronic classical\n", - "rock_5.mp3 rock rock pop classical electronic\n", - "rock_58.mp3 rock rock electronic pop classical\n", - "rock_61.mp3 rock electronic pop rock classical\n", - "rock_70.mp3 rock rock pop electronic classical\n", - "rock_72.mp3 rock rock pop electronic classical\n", - "rock_83.mp3 rock rock pop electronic classical\n", - "rock_88.mp3 rock rock pop electronic classical\n" + " label pred1 pred2 pred3 pred4\n", + "filename \n", + "classical_12.mp3 classical classical electronic pop rock\n", + "classical_2.mp3 classical classical electronic pop rock\n", + "classical_20.mp3 classical classical rock pop electronic\n", + "classical_27.mp3 classical classical pop electronic rock\n", + "classical_39.mp3 classical classical electronic rock pop\n", + "classical_4.mp3 classical classical electronic pop rock\n", + "classical_40.mp3 classical electronic rock classical pop\n", + "classical_46.mp3 classical classical electronic pop rock\n", + "classical_47.mp3 classical classical electronic pop rock\n", + "classical_48.mp3 classical classical pop electronic rock\n", + "classical_49.mp3 classical classical pop electronic rock\n", + "classical_52.mp3 classical electronic pop rock classical\n", + "classical_54.mp3 classical classical electronic pop rock\n", + "classical_6.mp3 classical classical electronic pop rock\n", + "classical_62.mp3 classical classical pop rock electronic\n", + "classical_67.mp3 classical classical electronic pop rock\n", + "classical_69.mp3 classical classical pop rock electronic\n", + "classical_82.mp3 classical classical electronic pop rock\n", + "classical_9.mp3 classical classical electronic pop rock\n", + "classical_92.mp3 classical classical pop rock electronic\n", + "classical_94.mp3 classical classical electronic pop rock\n", + "electronic_11.mp3 electronic electronic rock pop classical\n", + "electronic_20.mp3 electronic electronic pop rock classical\n", + "electronic_21.mp3 electronic electronic pop rock classical\n", + "electronic_3.mp3 electronic electronic pop classical rock\n", + "electronic_35.mp3 electronic electronic rock pop classical\n", + "electronic_36.mp3 electronic pop rock electronic classical\n", + "electronic_38.mp3 electronic electronic pop classical rock\n", + "electronic_44.mp3 electronic electronic rock pop classical\n", + "electronic_49.mp3 electronic pop rock electronic classical\n", + "electronic_55.mp3 electronic electronic rock pop classical\n", + "electronic_59.mp3 electronic electronic rock pop classical\n", + "electronic_61.mp3 electronic electronic rock pop classical\n", + "electronic_62.mp3 electronic electronic pop rock classical\n", + "electronic_63.mp3 electronic pop electronic rock classical\n", + "electronic_81.mp3 electronic electronic rock pop classical\n", + "pop_1.mp3 pop pop rock electronic classical\n", + "pop_10.mp3 pop pop rock classical electronic\n", + "pop_100.mp3 pop rock pop electronic classical\n", + "pop_25.mp3 pop pop classical electronic rock\n", + "pop_32.mp3 pop pop rock electronic classical\n", + "pop_38.mp3 pop rock pop electronic classical\n", + "pop_39.mp3 pop electronic rock pop classical\n", + "pop_50.mp3 pop pop rock classical electronic\n", + "pop_53.mp3 pop pop rock electronic classical\n", + "pop_58.mp3 pop rock pop electronic classical\n", + "pop_61.mp3 pop pop rock classical electronic\n", + "pop_62.mp3 pop pop rock electronic classical\n", + "pop_64.mp3 pop rock pop electronic classical\n", + "pop_65.mp3 pop pop rock electronic classical\n", + "pop_70.mp3 pop electronic pop classical rock\n", + "pop_79.mp3 pop pop rock classical electronic\n", + "pop_80.mp3 pop pop rock electronic classical\n", + "pop_82.mp3 pop pop rock electronic classical\n", + "pop_85.mp3 pop pop rock electronic classical\n", + "pop_91.mp3 pop rock pop electronic classical\n", + "pop_98.mp3 pop pop rock electronic classical\n", + "rock_18.mp3 rock rock pop electronic classical\n", + "rock_2.mp3 rock rock pop electronic classical\n", + "rock_23.mp3 rock rock pop electronic classical\n", + "rock_32.mp3 rock rock pop electronic classical\n", + "rock_45.mp3 rock rock pop electronic classical\n", + "rock_46.mp3 rock rock pop electronic classical\n", + "rock_48.mp3 rock pop rock electronic classical\n", + "rock_51.mp3 rock rock pop electronic classical\n", + "rock_52.mp3 rock rock pop electronic classical\n", + "rock_57.mp3 rock rock pop electronic classical\n", + "rock_6.mp3 rock rock pop electronic classical\n", + "rock_62.mp3 rock rock pop electronic classical\n", + "rock_63.mp3 rock pop rock electronic classical\n", + "rock_66.mp3 rock pop rock electronic classical\n", + "rock_73.mp3 rock electronic pop rock classical\n", + "rock_75.mp3 rock rock pop electronic classical\n", + "rock_78.mp3 rock rock pop electronic classical\n", + "rock_80.mp3 rock rock pop electronic classical\n", + "rock_85.mp3 rock rock pop electronic classical\n", + "rock_86.mp3 rock rock pop electronic classical\n", + "rock_88.mp3 rock rock pop electronic classical\n", + "rock_92.mp3 rock rock pop electronic classical\n", + "rock_93.mp3 rock pop rock electronic classical\n" ] } ], @@ -2157,16 +2157,16 @@ "id": "4a32007a", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.404777Z", - "iopub.status.busy": "2023-10-10T20:29:59.404554Z", - "iopub.status.idle": "2023-10-10T20:29:59.409685Z", - "shell.execute_reply": "2023-10-10T20:29:59.409125Z" + "iopub.execute_input": "2024-02-15T10:06:47.339543Z", + "iopub.status.busy": "2024-02-15T10:06:47.339176Z", + "iopub.status.idle": "2024-02-15T10:06:47.348577Z", + "shell.execute_reply": "2024-02-15T10:06:47.347603Z" }, "papermill": { - "duration": 0.022785, - "end_time": "2023-10-10T20:29:59.411911", + "duration": 0.026838, + "end_time": "2024-02-15T10:06:47.354585", "exception": false, - "start_time": "2023-10-10T20:29:59.389126", + "start_time": "2024-02-15T10:06:47.327747", "status": "completed" }, "tags": [] @@ -2187,16 +2187,16 @@ "id": "99782035", "metadata": { "execution": { - "iopub.execute_input": "2023-10-10T20:29:59.438539Z", - "iopub.status.busy": "2023-10-10T20:29:59.438119Z", - "iopub.status.idle": "2023-10-10T20:29:59.440743Z", - "shell.execute_reply": "2023-10-10T20:29:59.440281Z" + "iopub.execute_input": "2024-02-15T10:06:47.379460Z", + "iopub.status.busy": "2024-02-15T10:06:47.378958Z", + "iopub.status.idle": "2024-02-15T10:06:47.383963Z", + "shell.execute_reply": "2024-02-15T10:06:47.382753Z" }, "papermill": { - "duration": 0.018895, - "end_time": "2023-10-10T20:29:59.443247", + "duration": 0.026084, + "end_time": "2024-02-15T10:06:47.392052", "exception": false, - "start_time": "2023-10-10T20:29:59.424352", + "start_time": "2024-02-15T10:06:47.365968", "status": "completed" }, "tags": [] @@ -2230,23 +2230,23 @@ }, "papermill": { "default_parameters": {}, - "duration": 4.35191, - "end_time": "2023-10-10T20:29:59.873795", + "duration": 5.631111, + "end_time": "2024-02-15T10:06:47.825204", "environment_variables": {}, "exception": null, - "input_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/5_ml_model.ipynb", - "output_path": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/5_ml_model.ipynb", + "input_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/5_ml_model.ipynb", + "output_path": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/5_ml_model.ipynb", "parameters": { "INPUT_PATHS": { - "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/input/features.csv", - "split": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/input/split.csv" + "aggregated_features": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv", + "split": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv" }, "OUTPUT_PATHS": { - "clf": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/output/ml_model.pickle", - "submission": "/home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/output/test_result.csv" + "clf": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle", + "submission": "/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv" } }, - "start_time": "2023-10-10T20:29:55.521885", + "start_time": "2024-02-15T10:06:42.194093", "version": "2.4.0" } }, diff --git a/notebooks/main.ipynb b/notebooks/main.ipynb index d20532b244283f4ac5746627351e2692260b93f4..f7fe9621861f5114e28432206ae11c518cf8e655 100644 --- a/notebooks/main.ipynb +++ b/notebooks/main.ipynb @@ -2,15 +2,15 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "# Main Notebook\n", "Executes all research notebooks one by one and initializes needed connectors and nbconfig.\n", "\n", "The entities created by one notebook are passed to the next notebook as dependencies, while moving the entites location. This way the output entities are separated from the input entities." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", @@ -18,8 +18,8 @@ "metadata": { "collapsed": true, "ExecuteTime": { - "end_time": "2023-10-10T20:19:32.437151147Z", - "start_time": "2023-10-10T20:19:32.416560426Z" + "end_time": "2024-02-15T15:09:59.884216173Z", + "start_time": "2024-02-15T15:09:59.870149504Z" } }, "outputs": [], @@ -34,8 +34,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:19:33.208604535Z", - "start_time": "2023-10-10T20:19:32.416869981Z" + "end_time": "2024-02-15T15:10:02.620385526Z", + "start_time": "2024-02-15T15:09:59.895849547Z" } }, "outputs": [], @@ -59,14 +59,25 @@ "collapsed": false, "lines_to_next_cell": 2, "ExecuteTime": { - "end_time": "2023-10-10T20:19:33.338327558Z", - "start_time": "2023-10-10T20:19:33.211495550Z" + "end_time": "2024-02-15T15:10:02.885011109Z", + "start_time": "2024-02-15T15:10:02.632734781Z" } }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "DEBUG:urllib3.util.retry:Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)\n", + "DEBUG:urllib3.util.retry:Converted retries value: 1 -> Retry(total=1, connect=None, read=None, redirect=None, status=None)\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/auth/realms/dbrepo/protocol/openid-connect/token HTTP/1.1\" 200 4267\n" + ] + } + ], "source": [ "logging.basicConfig(\n", - " level=logging.INFO\n", + " level=logging.DEBUG\n", ")\n", "\n", "ONLY_LOCAL = False\n", @@ -83,47 +94,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:22:19.285948692Z", - "start_time": "2023-10-10T20:19:33.368231905Z" + "start_time": "2024-02-15T14:48:07.550571919Z" } }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/1_audio_files.ipynb\n", - "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/1_audio_files.ipynb\n" - ] - }, - { - "data": { - "text/plain": "Executing: 0%| | 0/7 [00:00<?, ?cell/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "51fe3c161031485d92d9cd7d23edc4d3" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:papermill:Executing notebook with kernel: python3\n", - "INFO:fairnb.api.invenio:Picked up 1 files\n", - "INFO:fairnb.api.invenio:Uploading 1 to https://test.researchdata.tuwien.ac.at\n", - "INFO:fairnb.api.invenio:Uploading /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/1_audio_files/output/emotifymusic.tar.gz as emotifymusic.tar.gz\n", - "INFO:fairnb.api.invenio:Finished upload of emotifymusic.tar.gz\n" - ] - } - ], + "outputs": [], "source": [ "# ------------- Convert Audio Files for Invenio ----\n", "\n", @@ -150,44 +128,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "metadata": { - "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:29:37.869662601Z", - "start_time": "2023-10-10T20:22:19.292012183Z" - } - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/2_generate_features.ipynb\n", - "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/2_generate_features.ipynb\n" - ] + "start_time": "2023-10-12T15:05:43.645571236Z" }, - { - "data": { - "text/plain": "Executing: 0%| | 0/9 [00:00<?, ?cell/s]", - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "1542f4273cb540f391061731ae294f62" - } - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:papermill:Executing notebook with kernel: python3\n", - "WARNING:fairnb.api.dbrepo:Re-authenticating due to almost expired token\n" - ] - } - ], + "collapsed": false + }, + "outputs": [], "source": [ "# ------------- Raw feature generation -------------\n", "nb_config_generate_features = NbConfig(\n", @@ -208,17 +156,17 @@ " ]\n", ")\n", "\n", - "executor.execute(nb_config_generate_features, only_local=ONLY_LOCAL)\n" + "executor.execute(nb_config_generate_features, only_local=ONLY_LOCAL)" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 4, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:29:51.551709980Z", - "start_time": "2023-10-10T20:29:37.875148186Z" + "end_time": "2024-02-15T15:10:53.212107678Z", + "start_time": "2024-02-15T15:10:18.507162283Z" } }, "outputs": [ @@ -226,8 +174,44 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/3_aggregate_features.ipynb\n", - "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/3_aggregate_features.ipynb\n" + "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/3_aggregate_features.ipynb\n", + "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/3_aggregate_features.ipynb\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"raw_features\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"raw_features\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n" ] }, { @@ -236,7 +220,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "3a3d98af87954445acbde5eb85faaba0" + "model_id": "4f236898f16c4a99aafd3e6874501df0" } }, "metadata": {}, @@ -246,7 +230,138 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:papermill:Executing notebook with kernel: python3\n" + "DEBUG:asyncio:Using selector: EpollSelector\n", + "DEBUG:asyncio:Using selector: EpollSelector\n", + "INFO:papermill:Executing notebook with kernel: python3\n", + "DEBUG:papermill:Skipping non-executing cell 0\n", + "DEBUG:papermill:Executing cell:\n", + "from pathlib import Path\n", + "\n", + "import pandas as pd\n", + "from definitions import BASE_PATH\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'from pathlib import Path\\n\\nimport pandas as pd\\nfrom definitions import BASE_PATH', 'execution_count': 1}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "INPUT_PATH = BASE_PATH / \"tmp\" / \"3_aggregate_features\" / \"input\"\n", + "OUTPUT_PATH = BASE_PATH / \"tmp\" / \"3_aggregate_features\" / \"output\"\n", + "\n", + "INPUT_PATHS: dict[str, str] = {\n", + " \"raw_features\": (INPUT_PATH / \"raw_features.csv\").__str__()\n", + "}\n", + "\n", + "OUTPUT_PATHS: dict[str, str] = {\n", + " \"features\": (OUTPUT_PATH / \"features.csv\").__str__()\n", + "}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'INPUT_PATH = BASE_PATH / \"tmp\" / \"3_aggregate_features\" / \"input\"\\nOUTPUT_PATH = BASE_PATH / \"tmp\" / \"3_aggregate_features\" / \"output\"\\n\\nINPUT_PATHS: dict[str, str] = {\\n \"raw_features\": (INPUT_PATH / \"raw_features.csv\").__str__()\\n}\\n\\nOUTPUT_PATHS: dict[str, str] = {\\n \"features\": (OUTPUT_PATH / \"features.csv\").__str__()\\n}', 'execution_count': 2}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Parameters\n", + "INPUT_PATHS = {\n", + " \"raw_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv\"\n", + "}\n", + "OUTPUT_PATHS = {\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv\"\n", + "}\n", + "\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Parameters\\nINPUT_PATHS = {\\n \"raw_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/input/raw_features.csv\"\\n}\\nOUTPUT_PATHS = {\\n \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/3_aggregate_features/output/features.csv\"\\n}\\n', 'execution_count': 3}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# inputs\n", + "raw_features = pd.read_csv(INPUT_PATHS[\"raw_features\"], index_col=False)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# inputs\\nraw_features = pd.read_csv(INPUT_PATHS[\"raw_features\"], index_col=False)', 'execution_count': 4}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "meta_columns = [\"sample\", \"filename\", \"label\"]\n", + "mfcc_aggregated = raw_features\\\n", + " .drop(meta_columns, axis=1, errors='ignore')\\\n", + " .groupby(raw_features.filename).agg(['min', 'max', 'mean', 'std', 'skew'])\n", + "\n", + "mfcc_meta = pd.DataFrame(raw_features['label'].groupby(raw_features.filename).last())\n", + "mfcc_meta.columns = pd.MultiIndex.from_arrays([['label'], ['']]) # needed for merge\n", + "mfcc_merged = pd.merge(mfcc_meta, mfcc_aggregated, left_index=True, right_index=True)\n", + "\n", + "# reduce multi index to single index\n", + "one_level_cols = ['_'.join([str(el) for el in col]) for col in mfcc_merged.columns[1:]]\n", + "one_level_cols.insert(0, \"label\")\n", + "\n", + "mfcc_merged.columns = pd.Index(one_level_cols)\n", + "mfcc_merged = mfcc_merged.reset_index()\n", + "mfcc_merged\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'meta_columns = [\"sample\", \"filename\", \"label\"]\\nmfcc_aggregated = raw_features\\\\\\n .drop(meta_columns, axis=1, errors=\\'ignore\\')\\\\\\n .groupby(raw_features.filename).agg([\\'min\\', \\'max\\', \\'mean\\', \\'std\\', \\'skew\\'])\\n\\nmfcc_meta = pd.DataFrame(raw_features[\\'label\\'].groupby(raw_features.filename).last())\\nmfcc_meta.columns = pd.MultiIndex.from_arrays([[\\'label\\'], [\\'\\']]) # needed for merge\\nmfcc_merged = pd.merge(mfcc_meta, mfcc_aggregated, left_index=True, right_index=True)\\n\\n# reduce multi index to single index\\none_level_cols = [\\'_\\'.join([str(el) for el in col]) for col in mfcc_merged.columns[1:]]\\none_level_cols.insert(0, \"label\")\\n\\nmfcc_merged.columns = pd.Index(one_level_cols)\\nmfcc_merged = mfcc_merged.reset_index()\\nmfcc_merged', 'execution_count': 5}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': ' filename label 0_min 0_max 0_mean \\\\\\n0 classical_1.mp3 classical -530.78436 -163.308350 -302.203167 \\n1 classical_10.mp3 classical -562.85785 -96.164795 -219.259016 \\n2 classical_100.mp3 classical -536.23737 -61.608826 -177.804114 \\n3 classical_11.mp3 classical -536.45746 -120.429665 -222.126303 \\n4 classical_12.mp3 classical -562.67523 -148.133560 -270.975406 \\n.. ... ... ... ... ... \\n395 rock_95.mp3 rock -553.11010 -5.218835 -193.506047 \\n396 rock_96.mp3 rock -541.23600 27.163334 -119.113996 \\n397 rock_97.mp3 rock -518.49500 58.526745 -66.267744 \\n398 rock_98.mp3 rock -518.64307 53.555115 -45.734517 \\n399 rock_99.mp3 rock -544.70310 75.612130 -49.380943 \\n\\n 0_std 0_skew 1_min 1_max 1_mean ... 38_min \\\\\\n0 51.142183 -0.468374 0.000000 178.75162 111.332342 ... -44.098070 \\n1 53.561838 -0.772320 0.029056 259.63270 215.094182 ... -27.458416 \\n2 83.381622 -2.587179 0.000000 190.47589 112.471713 ... -27.335688 \\n3 76.246992 -2.402418 0.000000 159.42575 99.853645 ... -31.774948 \\n4 52.191182 -0.366586 0.000000 194.26416 148.226647 ... -44.843810 \\n.. ... ... ... ... ... ... ... \\n395 76.869437 -0.201055 -89.948746 201.18045 111.724191 ... -27.043941 \\n396 58.420684 -0.957699 -7.415961 210.49246 125.453699 ... -37.584858 \\n397 65.635619 -0.898026 -58.824410 175.20135 99.288265 ... -29.620445 \\n398 52.444200 -1.705641 0.000000 187.04274 96.440874 ... -26.967848 \\n399 54.045627 -0.863093 -32.930653 191.73538 93.971242 ... -21.929403 \\n\\n 38_max 38_mean 38_std 38_skew 39_min 39_max 39_mean \\\\\\n0 47.308060 -3.713503 16.553984 0.230691 -46.794480 49.352516 -2.282116 \\n1 29.811110 0.484271 8.660648 -0.479016 -28.989983 27.533710 0.952658 \\n2 27.610388 -0.333233 8.185075 0.208425 -38.095375 31.397880 -1.494916 \\n3 31.500881 -3.781627 9.191043 0.260886 -22.667440 50.992897 1.600777 \\n4 28.490644 -6.242015 10.546545 0.341848 -25.040888 46.878204 1.844494 \\n.. ... ... ... ... ... ... ... \\n395 22.451445 -7.234634 8.471853 0.753855 -24.712723 23.410387 -4.502398 \\n396 28.087936 -9.704238 8.447620 0.112760 -38.147890 21.814402 -8.249507 \\n397 26.325895 -5.722825 7.727378 0.207489 -29.497524 25.410654 -3.356614 \\n398 8.714737 -9.511491 5.551820 -0.025604 -23.020084 13.948638 -2.664985 \\n399 17.050608 -5.296691 5.894963 0.390705 -20.983192 29.312023 -0.321836 \\n\\n 39_std 39_skew \\n0 15.285639 0.171462 \\n1 10.477735 -0.185771 \\n2 10.917299 0.020985 \\n3 10.125545 0.595763 \\n4 11.160392 0.503120 \\n.. ... ... \\n395 6.687984 0.238807 \\n396 7.807756 0.071968 \\n397 8.170526 0.160330 \\n398 5.051498 -0.258407 \\n399 6.571660 0.384794 \\n\\n[400 rows x 202 columns]', 'text/html': '<div>\\n<style scoped>\\n .dataframe tbody tr th:only-of-type {\\n vertical-align: middle;\\n }\\n\\n .dataframe tbody tr th {\\n vertical-align: top;\\n }\\n\\n .dataframe thead th {\\n text-align: right;\\n }\\n</style>\\n<table border=\"1\" class=\"dataframe\">\\n <thead>\\n <tr style=\"text-align: right;\">\\n <th></th>\\n <th>filename</th>\\n <th>label</th>\\n <th>0_min</th>\\n <th>0_max</th>\\n <th>0_mean</th>\\n <th>0_std</th>\\n <th>0_skew</th>\\n <th>1_min</th>\\n <th>1_max</th>\\n <th>1_mean</th>\\n <th>...</th>\\n <th>38_min</th>\\n <th>38_max</th>\\n <th>38_mean</th>\\n <th>38_std</th>\\n <th>38_skew</th>\\n <th>39_min</th>\\n <th>39_max</th>\\n <th>39_mean</th>\\n <th>39_std</th>\\n <th>39_skew</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <th>0</th>\\n <td>classical_1.mp3</td>\\n <td>classical</td>\\n <td>-530.78436</td>\\n <td>-163.308350</td>\\n <td>-302.203167</td>\\n <td>51.142183</td>\\n <td>-0.468374</td>\\n <td>0.000000</td>\\n <td>178.75162</td>\\n <td>111.332342</td>\\n <td>...</td>\\n <td>-44.098070</td>\\n <td>47.308060</td>\\n <td>-3.713503</td>\\n <td>16.553984</td>\\n <td>0.230691</td>\\n <td>-46.794480</td>\\n <td>49.352516</td>\\n <td>-2.282116</td>\\n <td>15.285639</td>\\n <td>0.171462</td>\\n </tr>\\n <tr>\\n <th>1</th>\\n <td>classical_10.mp3</td>\\n <td>classical</td>\\n <td>-562.85785</td>\\n <td>-96.164795</td>\\n <td>-219.259016</td>\\n <td>53.561838</td>\\n <td>-0.772320</td>\\n <td>0.029056</td>\\n <td>259.63270</td>\\n <td>215.094182</td>\\n <td>...</td>\\n <td>-27.458416</td>\\n <td>29.811110</td>\\n <td>0.484271</td>\\n <td>8.660648</td>\\n <td>-0.479016</td>\\n <td>-28.989983</td>\\n <td>27.533710</td>\\n <td>0.952658</td>\\n <td>10.477735</td>\\n <td>-0.185771</td>\\n </tr>\\n <tr>\\n <th>2</th>\\n <td>classical_100.mp3</td>\\n <td>classical</td>\\n <td>-536.23737</td>\\n <td>-61.608826</td>\\n <td>-177.804114</td>\\n <td>83.381622</td>\\n <td>-2.587179</td>\\n <td>0.000000</td>\\n <td>190.47589</td>\\n <td>112.471713</td>\\n <td>...</td>\\n <td>-27.335688</td>\\n <td>27.610388</td>\\n <td>-0.333233</td>\\n <td>8.185075</td>\\n <td>0.208425</td>\\n <td>-38.095375</td>\\n <td>31.397880</td>\\n <td>-1.494916</td>\\n <td>10.917299</td>\\n <td>0.020985</td>\\n </tr>\\n <tr>\\n <th>3</th>\\n <td>classical_11.mp3</td>\\n <td>classical</td>\\n <td>-536.45746</td>\\n <td>-120.429665</td>\\n <td>-222.126303</td>\\n <td>76.246992</td>\\n <td>-2.402418</td>\\n <td>0.000000</td>\\n <td>159.42575</td>\\n <td>99.853645</td>\\n <td>...</td>\\n <td>-31.774948</td>\\n <td>31.500881</td>\\n <td>-3.781627</td>\\n <td>9.191043</td>\\n <td>0.260886</td>\\n <td>-22.667440</td>\\n <td>50.992897</td>\\n <td>1.600777</td>\\n <td>10.125545</td>\\n <td>0.595763</td>\\n </tr>\\n <tr>\\n <th>4</th>\\n <td>classical_12.mp3</td>\\n <td>classical</td>\\n <td>-562.67523</td>\\n <td>-148.133560</td>\\n <td>-270.975406</td>\\n <td>52.191182</td>\\n <td>-0.366586</td>\\n <td>0.000000</td>\\n <td>194.26416</td>\\n <td>148.226647</td>\\n <td>...</td>\\n <td>-44.843810</td>\\n <td>28.490644</td>\\n <td>-6.242015</td>\\n <td>10.546545</td>\\n <td>0.341848</td>\\n <td>-25.040888</td>\\n <td>46.878204</td>\\n <td>1.844494</td>\\n <td>11.160392</td>\\n <td>0.503120</td>\\n </tr>\\n <tr>\\n <th>...</th>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n </tr>\\n <tr>\\n <th>395</th>\\n <td>rock_95.mp3</td>\\n <td>rock</td>\\n <td>-553.11010</td>\\n <td>-5.218835</td>\\n <td>-193.506047</td>\\n <td>76.869437</td>\\n <td>-0.201055</td>\\n <td>-89.948746</td>\\n <td>201.18045</td>\\n <td>111.724191</td>\\n <td>...</td>\\n <td>-27.043941</td>\\n <td>22.451445</td>\\n <td>-7.234634</td>\\n <td>8.471853</td>\\n <td>0.753855</td>\\n <td>-24.712723</td>\\n <td>23.410387</td>\\n <td>-4.502398</td>\\n <td>6.687984</td>\\n <td>0.238807</td>\\n </tr>\\n <tr>\\n <th>396</th>\\n <td>rock_96.mp3</td>\\n <td>rock</td>\\n <td>-541.23600</td>\\n <td>27.163334</td>\\n <td>-119.113996</td>\\n <td>58.420684</td>\\n <td>-0.957699</td>\\n <td>-7.415961</td>\\n <td>210.49246</td>\\n <td>125.453699</td>\\n <td>...</td>\\n <td>-37.584858</td>\\n <td>28.087936</td>\\n <td>-9.704238</td>\\n <td>8.447620</td>\\n <td>0.112760</td>\\n <td>-38.147890</td>\\n <td>21.814402</td>\\n <td>-8.249507</td>\\n <td>7.807756</td>\\n <td>0.071968</td>\\n </tr>\\n <tr>\\n <th>397</th>\\n <td>rock_97.mp3</td>\\n <td>rock</td>\\n <td>-518.49500</td>\\n <td>58.526745</td>\\n <td>-66.267744</td>\\n <td>65.635619</td>\\n <td>-0.898026</td>\\n <td>-58.824410</td>\\n <td>175.20135</td>\\n <td>99.288265</td>\\n <td>...</td>\\n <td>-29.620445</td>\\n <td>26.325895</td>\\n <td>-5.722825</td>\\n <td>7.727378</td>\\n <td>0.207489</td>\\n <td>-29.497524</td>\\n <td>25.410654</td>\\n <td>-3.356614</td>\\n <td>8.170526</td>\\n <td>0.160330</td>\\n </tr>\\n <tr>\\n <th>398</th>\\n <td>rock_98.mp3</td>\\n <td>rock</td>\\n <td>-518.64307</td>\\n <td>53.555115</td>\\n <td>-45.734517</td>\\n <td>52.444200</td>\\n <td>-1.705641</td>\\n <td>0.000000</td>\\n <td>187.04274</td>\\n <td>96.440874</td>\\n <td>...</td>\\n <td>-26.967848</td>\\n <td>8.714737</td>\\n <td>-9.511491</td>\\n <td>5.551820</td>\\n <td>-0.025604</td>\\n <td>-23.020084</td>\\n <td>13.948638</td>\\n <td>-2.664985</td>\\n <td>5.051498</td>\\n <td>-0.258407</td>\\n </tr>\\n <tr>\\n <th>399</th>\\n <td>rock_99.mp3</td>\\n <td>rock</td>\\n <td>-544.70310</td>\\n <td>75.612130</td>\\n <td>-49.380943</td>\\n <td>54.045627</td>\\n <td>-0.863093</td>\\n <td>-32.930653</td>\\n <td>191.73538</td>\\n <td>93.971242</td>\\n <td>...</td>\\n <td>-21.929403</td>\\n <td>17.050608</td>\\n <td>-5.296691</td>\\n <td>5.894963</td>\\n <td>0.390705</td>\\n <td>-20.983192</td>\\n <td>29.312023</td>\\n <td>-0.321836</td>\\n <td>6.571660</td>\\n <td>0.384794</td>\\n </tr>\\n </tbody>\\n</table>\\n<p>400 rows × 202 columns</p>\\n</div>'}, 'metadata': {}, 'execution_count': 5}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# outputs\n", + "aggregated_features_path = Path(OUTPUT_PATHS[\"aggregated_features\"]).resolve()\n", + "aggregated_features_path.parent.mkdir(parents=True, exist_ok=True)\n", + "\n", + "output = mfcc_merged\n", + "output.to_csv(aggregated_features_path, index=False)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# outputs\\naggregated_features_path = Path(OUTPUT_PATHS[\"aggregated_features\"]).resolve()\\naggregated_features_path.parent.mkdir(parents=True, exist_ok=True)\\n\\noutput = mfcc_merged\\noutput.to_csv(aggregated_features_path, index=False)', 'execution_count': 6}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:git.cmd:Popen(['git', 'cat-file', '--batch-check'], cwd=/home/lukas/Programming/uni/bachelorarbeit/fairnb, universal_newlines=False, shell=None, istream=<valid stream>)\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/c001319e0089589bcca621cab5904826+3d835979cfc4cb0848002ebccf87cb1339c512c9_dba749eee6a3455895b380400b84d1ea HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/103/data/import HTTP/1.1\" 202 0\n", + "DEBUG:fairnb.api.dbrepo:Uploaded dataframe using tui: <Response [202]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19/table/103/export HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n" + ] + }, + { + "ename": "TypeError", + "evalue": "reduction operation 'argmax' not allowed for this dtype", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[4], line 31\u001B[0m\n\u001B[1;32m 3\u001B[0m raw_features_entity \u001B[38;5;241m=\u001B[39m DbRepoEntity\u001B[38;5;241m.\u001B[39mnew(\n\u001B[1;32m 4\u001B[0m location\u001B[38;5;241m=\u001B[39mLOCAL_PATH \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m2_generate_features\u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124moutput\u001B[39m\u001B[38;5;124m\"\u001B[39m \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mraw_features.csv\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 5\u001B[0m dbrepo_connector\u001B[38;5;241m=\u001B[39mconnector,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 10\u001B[0m \u001B[38;5;28mtype\u001B[39m\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mraw_features\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 11\u001B[0m )\n\u001B[1;32m 13\u001B[0m nb_config_aggregate_features \u001B[38;5;241m=\u001B[39m NbConfig(\n\u001B[1;32m 14\u001B[0m nb_location\u001B[38;5;241m=\u001B[39mNOTEBOOK_PATH \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m3_aggregate_features.ipynb\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 15\u001B[0m entities\u001B[38;5;241m=\u001B[39m[\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 28\u001B[0m ]\n\u001B[1;32m 29\u001B[0m )\n\u001B[0;32m---> 31\u001B[0m \u001B[43mexecutor\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexecute\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config_aggregate_features\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43monly_local\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mONLY_LOCAL\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:47\u001B[0m, in \u001B[0;36mExecutor.execute\u001B[0;34m(cls, nb_config, require_download, only_local, **kwargs)\u001B[0m\n\u001B[1;32m 44\u001B[0m nb_config\u001B[38;5;241m.\u001B[39mended_at \u001B[38;5;241m=\u001B[39m ended_at\n\u001B[1;32m 46\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m only_local:\n\u001B[0;32m---> 47\u001B[0m \u001B[38;5;28;43mcls\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_entities\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:74\u001B[0m, in \u001B[0;36mExecutor.upload_entities\u001B[0;34m(nb_config)\u001B[0m\n\u001B[1;32m 69\u001B[0m \u001B[38;5;129m@staticmethod\u001B[39m\n\u001B[1;32m 70\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mupload_entities\u001B[39m(nb_config: NbConfig):\n\u001B[1;32m 71\u001B[0m \u001B[38;5;66;03m# load generated entity and upload it\u001B[39;00m\n\u001B[1;32m 72\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m entity \u001B[38;5;129;01min\u001B[39;00m nb_config\u001B[38;5;241m.\u001B[39mentities:\n\u001B[1;32m 73\u001B[0m \u001B[38;5;66;03m# use inspect to get path of caller\u001B[39;00m\n\u001B[0;32m---> 74\u001B[0m \u001B[43mentity\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 75\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnb_location\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 76\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdependencies\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 77\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstarted_at\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 78\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mended_at\u001B[49m\n\u001B[1;32m 79\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/dbrepo_entity.py:91\u001B[0m, in \u001B[0;36mDbRepoEntity.upload\u001B[0;34m(self, executed_file, dependencies, start_time, end_time)\u001B[0m\n\u001B[1;32m 77\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtable_id \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mint\u001B[39m(table[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m\"\u001B[39m])\n\u001B[1;32m 79\u001B[0m metadata \u001B[38;5;241m=\u001B[39m EntityProvenance\u001B[38;5;241m.\u001B[39mnew(\n\u001B[1;32m 80\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mname,\n\u001B[1;32m 81\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdescription,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 88\u001B[0m ended_at\u001B[38;5;241m=\u001B[39mend_time\n\u001B[1;32m 89\u001B[0m )\n\u001B[0;32m---> 91\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_provenance\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmetadata\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 92\u001B[0m df[\n\u001B[1;32m 93\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mentity_id\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 94\u001B[0m ] \u001B[38;5;241m=\u001B[39m (\n\u001B[1;32m 95\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmetadata\u001B[38;5;241m.\u001B[39mid\n\u001B[1;32m 96\u001B[0m ) \u001B[38;5;66;03m# update the -1 from above with the correct value as it is now known\u001B[39;00m\n\u001B[1;32m 97\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mupload_data(df)\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/entity.py:127\u001B[0m, in \u001B[0;36mEntity.upload_provenance\u001B[0;34m(self, provenance)\u001B[0m\n\u001B[1;32m 124\u001B[0m df \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdbrepo_connector\u001B[38;5;241m.\u001B[39mdownload_table_as_df(\u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmetadata_table_id))\n\u001B[1;32m 126\u001B[0m \u001B[38;5;66;03m# FIXME: create robust version of id retrieval, if possible\u001B[39;00m\n\u001B[0;32m--> 127\u001B[0m row \u001B[38;5;241m=\u001B[39m df\u001B[38;5;241m.\u001B[39miloc[\u001B[43mdf\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mid\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43midxmax\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m] \u001B[38;5;66;03m# get the newest row, as it should contain the correct data\u001B[39;00m\n\u001B[1;32m 128\u001B[0m meta \u001B[38;5;241m=\u001B[39m EntityProvenance\u001B[38;5;241m.\u001B[39mfrom_series(row)\n\u001B[1;32m 129\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m meta\u001B[38;5;241m.\u001B[39mstarted_at \u001B[38;5;241m==\u001B[39m provenance\u001B[38;5;241m.\u001B[39mstarted_at \u001B[38;5;129;01mand\u001B[39;00m meta\u001B[38;5;241m.\u001B[39mname \u001B[38;5;241m==\u001B[39m provenance\u001B[38;5;241m.\u001B[39mname\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/pandas/core/series.py:2564\u001B[0m, in \u001B[0;36mSeries.idxmax\u001B[0;34m(self, axis, skipna, *args, **kwargs)\u001B[0m\n\u001B[1;32m 2500\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21midxmax\u001B[39m(\u001B[38;5;28mself\u001B[39m, axis: Axis \u001B[38;5;241m=\u001B[39m \u001B[38;5;241m0\u001B[39m, skipna: \u001B[38;5;28mbool\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mTrue\u001B[39;00m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Hashable:\n\u001B[1;32m 2501\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[1;32m 2502\u001B[0m \u001B[38;5;124;03m Return the row label of the maximum value.\u001B[39;00m\n\u001B[1;32m 2503\u001B[0m \n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 2562\u001B[0m \u001B[38;5;124;03m nan\u001B[39;00m\n\u001B[1;32m 2563\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[0;32m-> 2564\u001B[0m i \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43margmax\u001B[49m\u001B[43m(\u001B[49m\u001B[43maxis\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mskipna\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 2565\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m i \u001B[38;5;241m==\u001B[39m \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m1\u001B[39m:\n\u001B[1;32m 2566\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m np\u001B[38;5;241m.\u001B[39mnan\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/pandas/core/base.py:655\u001B[0m, in \u001B[0;36mIndexOpsMixin.argmax\u001B[0;34m(self, axis, skipna, *args, **kwargs)\u001B[0m\n\u001B[1;32m 651\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m delegate\u001B[38;5;241m.\u001B[39margmax()\n\u001B[1;32m 652\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 653\u001B[0m \u001B[38;5;66;03m# error: Incompatible return value type (got \"Union[int, ndarray]\", expected\u001B[39;00m\n\u001B[1;32m 654\u001B[0m \u001B[38;5;66;03m# \"int\")\u001B[39;00m\n\u001B[0;32m--> 655\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mnanops\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnanargmax\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# type: ignore[return-value]\u001B[39;49;00m\n\u001B[1;32m 656\u001B[0m \u001B[43m \u001B[49m\u001B[43mdelegate\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mskipna\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mskipna\u001B[49m\n\u001B[1;32m 657\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/pandas/core/nanops.py:88\u001B[0m, in \u001B[0;36mdisallow.__call__.<locals>._f\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 86\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28many\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcheck(obj) \u001B[38;5;28;01mfor\u001B[39;00m obj \u001B[38;5;129;01min\u001B[39;00m obj_iter):\n\u001B[1;32m 87\u001B[0m f_name \u001B[38;5;241m=\u001B[39m f\u001B[38;5;241m.\u001B[39m\u001B[38;5;18m__name__\u001B[39m\u001B[38;5;241m.\u001B[39mreplace(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mnan\u001B[39m\u001B[38;5;124m\"\u001B[39m, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m---> 88\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mTypeError\u001B[39;00m(\n\u001B[1;32m 89\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mreduction operation \u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mf_name\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m not allowed for this dtype\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 90\u001B[0m )\n\u001B[1;32m 91\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 92\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m np\u001B[38;5;241m.\u001B[39merrstate(invalid\u001B[38;5;241m=\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mignore\u001B[39m\u001B[38;5;124m\"\u001B[39m):\n", + "\u001B[0;31mTypeError\u001B[0m: reduction operation 'argmax' not allowed for this dtype" ] } ], @@ -271,7 +386,7 @@ " description=\"Aggregated features of audio files.\",\n", " location=LOCAL_PATH / \"3_aggregate_features\" / \"output\" / \"features.csv\",\n", " dbrepo_connector=connector,\n", - " table_name=\"aggregated_features\",\n", + " table_name=\"aggregated_features_tst3\",\n", " table_description=\"Aggregated features of audio files\",\n", " type=\"aggregated_features\"\n", " )\n", @@ -286,12 +401,12 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 20, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:29:55.469694709Z", - "start_time": "2023-10-10T20:29:51.551964304Z" + "end_time": "2024-02-15T10:39:10.769360407Z", + "start_time": "2024-02-15T10:33:01.190550938Z" } }, "outputs": [ @@ -299,8 +414,44 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/4_split.ipynb\n", - "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/4_split.ipynb\n" + "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/4_split.ipynb\n", + "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/4_split.ipynb\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"split\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"split\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n" ] }, { @@ -309,7 +460,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "340a4bbf08d144aba5521599be170809" + "model_id": "d777fdec2b24474cbb0c8ff40550b597" } }, "metadata": {}, @@ -319,7 +470,167 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:papermill:Executing notebook with kernel: python3\n" + "DEBUG:asyncio:Using selector: EpollSelector\n", + "INFO:papermill:Executing notebook with kernel: python3\n", + "DEBUG:papermill:Skipping non-executing cell 0\n", + "DEBUG:papermill:Executing cell:\n", + "import pandas as pd\n", + "from pathlib import Path\n", + "from definitions import BASE_PATH\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'import pandas as pd\\nfrom pathlib import Path\\nfrom definitions import BASE_PATH', 'execution_count': 1}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Tagged with 'parameters'\n", + "from definitions import BASE_PATH\n", + "\n", + "INPUT_PATHS: dict[str, str] = {\n", + " \"features\": (BASE_PATH / \"tmp\" / \"4_split\" / \"input\" / \"features.csv\").__str__()\n", + "}\n", + "OUTPUT_PATHS: dict[str, str] = {\n", + " \"split\": (BASE_PATH / \"tmp\" / \"4_split\" / \"output\" / \"split.csv\").__str__()\n", + "}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Tagged with \\'parameters\\'\\nfrom definitions import BASE_PATH\\n\\nINPUT_PATHS: dict[str, str] = {\\n \"features\": (BASE_PATH / \"tmp\" / \"4_split\" / \"input\" / \"features.csv\").__str__()\\n}\\nOUTPUT_PATHS: dict[str, str] = {\\n \"split\": (BASE_PATH / \"tmp\" / \"4_split\" / \"output\" / \"split.csv\").__str__()\\n}', 'execution_count': 2}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Parameters\n", + "INPUT_PATHS = {\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv\"\n", + "}\n", + "OUTPUT_PATHS = {\n", + " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv\"\n", + "}\n", + "\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Parameters\\nINPUT_PATHS = {\\n \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/input/features.csv\"\\n}\\nOUTPUT_PATHS = {\\n \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/4_split/output/split.csv\"\\n}\\n', 'execution_count': 3}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# INPUT\n", + "\n", + "for path in INPUT_PATHS.values():\n", + " assert Path(path).exists()\n", + "\n", + "features = pd.read_csv(INPUT_PATHS[\"aggregated_features\"])\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# INPUT\\n\\nfor path in INPUT_PATHS.values():\\n assert Path(path).exists()\\n\\nfeatures = pd.read_csv(INPUT_PATHS[\"aggregated_features\"])', 'execution_count': 4}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "train = features.sample(frac=0.8).sort_index()\n", + "test = features.drop(train.index)\n", + "\n", + "split_true = pd.DataFrame({\n", + " \"filename\": train.filename,\n", + " \"train\": True\n", + "})\n", + "split_false = pd.DataFrame({\n", + " \"filename\": test.filename,\n", + " \"train\": False\n", + "})\n", + "\n", + "split_concat = pd.concat([split_true, split_false])\\\n", + " .sort_values(\"filename\")\\\n", + " .reset_index(drop=True)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'train = features.sample(frac=0.8).sort_index()\\ntest = features.drop(train.index)\\n\\nsplit_true = pd.DataFrame({\\n \"filename\": train.filename,\\n \"train\": True\\n})\\nsplit_false = pd.DataFrame({\\n \"filename\": test.filename,\\n \"train\": False\\n})\\n\\nsplit_concat = pd.concat([split_true, split_false])\\\\\\n .sort_values(\"filename\")\\\\\\n .reset_index(drop=True)', 'execution_count': 5}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "split_concat\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'split_concat', 'execution_count': 6}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': ' filename train\\n0 classical_1.mp3 False\\n1 classical_10.mp3 True\\n2 classical_100.mp3 False\\n3 classical_11.mp3 True\\n4 classical_12.mp3 True\\n.. ... ...\\n395 rock_95.mp3 False\\n396 rock_96.mp3 True\\n397 rock_97.mp3 True\\n398 rock_98.mp3 True\\n399 rock_99.mp3 True\\n\\n[400 rows x 2 columns]', 'text/html': '<div>\\n<style scoped>\\n .dataframe tbody tr th:only-of-type {\\n vertical-align: middle;\\n }\\n\\n .dataframe tbody tr th {\\n vertical-align: top;\\n }\\n\\n .dataframe thead th {\\n text-align: right;\\n }\\n</style>\\n<table border=\"1\" class=\"dataframe\">\\n <thead>\\n <tr style=\"text-align: right;\">\\n <th></th>\\n <th>filename</th>\\n <th>train</th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <th>0</th>\\n <td>classical_1.mp3</td>\\n <td>False</td>\\n </tr>\\n <tr>\\n <th>1</th>\\n <td>classical_10.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>2</th>\\n <td>classical_100.mp3</td>\\n <td>False</td>\\n </tr>\\n <tr>\\n <th>3</th>\\n <td>classical_11.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>4</th>\\n <td>classical_12.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>...</th>\\n <td>...</td>\\n <td>...</td>\\n </tr>\\n <tr>\\n <th>395</th>\\n <td>rock_95.mp3</td>\\n <td>False</td>\\n </tr>\\n <tr>\\n <th>396</th>\\n <td>rock_96.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>397</th>\\n <td>rock_97.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>398</th>\\n <td>rock_98.mp3</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>399</th>\\n <td>rock_99.mp3</td>\\n <td>True</td>\\n </tr>\\n </tbody>\\n</table>\\n<p>400 rows × 2 columns</p>\\n</div>'}, 'metadata': {}, 'execution_count': 6}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# output\n", + "OUTPUT_PATH = Path(OUTPUT_PATHS[\"split\"])\n", + "OUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True)\n", + "\n", + "output = split_concat\n", + "output.to_csv(OUTPUT_PATH, index=False)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# output\\nOUTPUT_PATH = Path(OUTPUT_PATHS[\"split\"])\\nOUTPUT_PATH.parent.mkdir(parents=True, exist_ok=True)\\n\\noutput = split_concat\\noutput.to_csv(OUTPUT_PATH, index=False)', 'execution_count': 7}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "WARNING:fairnb.api.dbrepo:Re-authenticating due to (almost) expired token\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (3): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/auth/realms/dbrepo/protocol/openid-connect/token HTTP/1.1\" 200 4267\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:git.cmd:Popen(['git', 'cat-file', '--batch-check'], cwd=/home/lukas/Programming/uni/bachelorarbeit/fairnb, universal_newlines=False, shell=None, istream=<valid stream>)\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/280891ee3d393b5cb0faf185818055bd+59b9f536a0a43bba99d019a829fb2d3c7dbb77ea_1c52495d4ec6432db7a9049235fa1f1d HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/91/data/import HTTP/1.1\" 202 0\n", + "DEBUG:fairnb.api.dbrepo:<Response [202]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19/table/91/export HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/4e52b6bffd74c0a1af2b2618ae5085b7+dc66a3a3ad997e42d951ce25807aaf2b51d89aea_5482523df590418782631e57128368cb HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/94/data/import HTTP/1.1\" 202 0\n", + "DEBUG:fairnb.api.dbrepo:<Response [202]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/627aa5a411b5079c326a700a173a4caf+eefae4f60517fd6af1f108a9a3ff7e1d831e4de5_1673e7a80ea4408d88d98fe6abc47ef4 HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/92/data/import HTTP/1.1\" 401 0\n", + "DEBUG:charset_normalizer:Encoding detection on empty bytes, assuming utf_8 intention.\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[20], line 40\u001B[0m\n\u001B[1;32m 21\u001B[0m nb_config_splits \u001B[38;5;241m=\u001B[39m NbConfig(\n\u001B[1;32m 22\u001B[0m nb_location\u001B[38;5;241m=\u001B[39mNOTEBOOK_PATH \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m4_split.ipynb\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 23\u001B[0m entities\u001B[38;5;241m=\u001B[39m[\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 36\u001B[0m ]\n\u001B[1;32m 37\u001B[0m )\n\u001B[1;32m 39\u001B[0m \u001B[38;5;66;03m# generate splits\u001B[39;00m\n\u001B[0;32m---> 40\u001B[0m \u001B[43mexecutor\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexecute\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config_splits\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43monly_local\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mONLY_LOCAL\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:47\u001B[0m, in \u001B[0;36mExecutor.execute\u001B[0;34m(cls, nb_config, require_download, only_local, **kwargs)\u001B[0m\n\u001B[1;32m 44\u001B[0m nb_config\u001B[38;5;241m.\u001B[39mended_at \u001B[38;5;241m=\u001B[39m ended_at\n\u001B[1;32m 46\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m only_local:\n\u001B[0;32m---> 47\u001B[0m \u001B[38;5;28;43mcls\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_entities\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:74\u001B[0m, in \u001B[0;36mExecutor.upload_entities\u001B[0;34m(nb_config)\u001B[0m\n\u001B[1;32m 69\u001B[0m \u001B[38;5;129m@staticmethod\u001B[39m\n\u001B[1;32m 70\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mupload_entities\u001B[39m(nb_config: NbConfig):\n\u001B[1;32m 71\u001B[0m \u001B[38;5;66;03m# load generated entity and upload it\u001B[39;00m\n\u001B[1;32m 72\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m entity \u001B[38;5;129;01min\u001B[39;00m nb_config\u001B[38;5;241m.\u001B[39mentities:\n\u001B[1;32m 73\u001B[0m \u001B[38;5;66;03m# use inspect to get path of caller\u001B[39;00m\n\u001B[0;32m---> 74\u001B[0m \u001B[43mentity\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 75\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnb_location\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 76\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdependencies\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 77\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstarted_at\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 78\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mended_at\u001B[49m\n\u001B[1;32m 79\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/dbrepo_entity.py:98\u001B[0m, in \u001B[0;36mDbRepoEntity.upload\u001B[0;34m(self, executed_file, dependencies, start_time, end_time)\u001B[0m\n\u001B[1;32m 91\u001B[0m df[\n\u001B[1;32m 92\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mentity_id\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 93\u001B[0m ] \u001B[38;5;241m=\u001B[39m (\n\u001B[1;32m 94\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmetadata\u001B[38;5;241m.\u001B[39mid\n\u001B[1;32m 95\u001B[0m ) \u001B[38;5;66;03m# update the -1 from above with the correct value as it is now known\u001B[39;00m\n\u001B[1;32m 96\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mupload_data(df)\n\u001B[0;32m---> 98\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_dependencies\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdependencies\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/entity.py:159\u001B[0m, in \u001B[0;36mEntity.upload_dependencies\u001B[0;34m(self, dependencies)\u001B[0m\n\u001B[1;32m 156\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[1;32m 157\u001B[0m LOG\u001B[38;5;241m.\u001B[39mwarning(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mDependency has no id, skipping dependency upload\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[0;32m--> 159\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdbrepo_connector\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_data\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdf\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mstr\u001B[39;49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdependency_table_id\u001B[49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/api/dbrepo.py:30\u001B[0m, in \u001B[0;36mre_auth.<locals>.inner\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 28\u001B[0m LOG\u001B[38;5;241m.\u001B[39mwarning(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRe-authenticating due to (almost) expired refresh token\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m 29\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mauthenticate_keycloak()\n\u001B[0;32m---> 30\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunc\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/api/dbrepo.py:276\u001B[0m, in \u001B[0;36mDBRepoConnector.upload_data\u001B[0;34m(self, dataframe, table_id)\u001B[0m\n\u001B[1;32m 261\u001B[0m uploader\u001B[38;5;241m.\u001B[39mupload()\n\u001B[1;32m 263\u001B[0m response_upload_import \u001B[38;5;241m=\u001B[39m requests\u001B[38;5;241m.\u001B[39mpost(\n\u001B[1;32m 264\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhost\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/api/database/\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdatabase_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/table/\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mtable_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/data/import\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 265\u001B[0m json\u001B[38;5;241m=\u001B[39m{\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 274\u001B[0m headers\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mheaders\n\u001B[1;32m 275\u001B[0m )\n\u001B[0;32m--> 276\u001B[0m \u001B[43mLOG\u001B[49m\u001B[38;5;241m.\u001B[39mdebug(response_upload_import)\n\u001B[1;32m 278\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m response_upload_import\u001B[38;5;241m.\u001B[39mok:\n\u001B[1;32m 279\u001B[0m LOG\u001B[38;5;241m.\u001B[39mwarning(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mMove for table \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mtable_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m failed: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mresponse_upload_import\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/api/dbrepo.py:276\u001B[0m, in \u001B[0;36mDBRepoConnector.upload_data\u001B[0;34m(self, dataframe, table_id)\u001B[0m\n\u001B[1;32m 261\u001B[0m uploader\u001B[38;5;241m.\u001B[39mupload()\n\u001B[1;32m 263\u001B[0m response_upload_import \u001B[38;5;241m=\u001B[39m requests\u001B[38;5;241m.\u001B[39mpost(\n\u001B[1;32m 264\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhost\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/api/database/\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdatabase_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/table/\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mtable_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m/data/import\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 265\u001B[0m json\u001B[38;5;241m=\u001B[39m{\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 274\u001B[0m headers\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mheaders\n\u001B[1;32m 275\u001B[0m )\n\u001B[0;32m--> 276\u001B[0m \u001B[43mLOG\u001B[49m\u001B[38;5;241m.\u001B[39mdebug(response_upload_import)\n\u001B[1;32m 278\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m response_upload_import\u001B[38;5;241m.\u001B[39mok:\n\u001B[1;32m 279\u001B[0m LOG\u001B[38;5;241m.\u001B[39mwarning(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mMove for table \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mtable_id\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m failed: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mresponse_upload_import\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m\"\u001B[39m)\n", + "File \u001B[0;32m~/.local/share/JetBrains/Toolbox/apps/pycharm-professional/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_frame.py:755\u001B[0m, in \u001B[0;36mPyDBFrame.trace_dispatch\u001B[0;34m(self, frame, event, arg)\u001B[0m\n\u001B[1;32m 753\u001B[0m \u001B[38;5;66;03m# if thread has a suspend flag, we suspend with a busy wait\u001B[39;00m\n\u001B[1;32m 754\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m info\u001B[38;5;241m.\u001B[39mpydev_state \u001B[38;5;241m==\u001B[39m STATE_SUSPEND:\n\u001B[0;32m--> 755\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdo_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mthread\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mframe\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mevent\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43marg\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 756\u001B[0m \u001B[38;5;66;03m# No need to reset frame.f_trace to keep the same trace function.\u001B[39;00m\n\u001B[1;32m 757\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtrace_dispatch\n", + "File \u001B[0;32m~/.local/share/JetBrains/Toolbox/apps/pycharm-professional/plugins/python/helpers/pydev/_pydevd_bundle/pydevd_frame.py:412\u001B[0m, in \u001B[0;36mPyDBFrame.do_wait_suspend\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 411\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mdo_wait_suspend\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs):\n\u001B[0;32m--> 412\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_args\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m0\u001B[39;49m\u001B[43m]\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdo_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/.local/share/JetBrains/Toolbox/apps/pycharm-professional/plugins/python/helpers/pydev/pydevd.py:1184\u001B[0m, in \u001B[0;36mPyDB.do_wait_suspend\u001B[0;34m(self, thread, frame, event, arg, send_suspend_message, is_unhandled_exception)\u001B[0m\n\u001B[1;32m 1181\u001B[0m from_this_thread\u001B[38;5;241m.\u001B[39mappend(frame_id)\n\u001B[1;32m 1183\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_threads_suspended_single_notification\u001B[38;5;241m.\u001B[39mnotify_thread_suspended(thread_id, stop_reason):\n\u001B[0;32m-> 1184\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_do_wait_suspend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mthread\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mframe\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mevent\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43marg\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43msuspend_type\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfrom_this_thread\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/.local/share/JetBrains/Toolbox/apps/pycharm-professional/plugins/python/helpers/pydev/pydevd.py:1199\u001B[0m, in \u001B[0;36mPyDB._do_wait_suspend\u001B[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread)\u001B[0m\n\u001B[1;32m 1196\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_call_mpl_hook()\n\u001B[1;32m 1198\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mprocess_internal_commands()\n\u001B[0;32m-> 1199\u001B[0m \u001B[43mtime\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msleep\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m0.01\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1201\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcancel_async_evaluation(get_current_thread_id(thread), \u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mid\u001B[39m(frame)))\n\u001B[1;32m 1203\u001B[0m \u001B[38;5;66;03m# process any stepping instructions\u001B[39;00m\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " ] } ], @@ -350,7 +661,7 @@ " split_entity := DbRepoEntity.new(\n", " name=\"splits\",\n", " description=\"Splits of aggregated data into testing and training subbsets.\",\n", - " table_name=\"splits_table\",\n", + " table_name=\"splits_table_tst1\",\n", " table_description=\"Splits of aggregated data into testing and training subbsets.\",\n", " location=LOCAL_PATH / \"4_split\" / \"output\" / \"split.csv\", # location where script saves generated entity\n", " dbrepo_connector=connector,\n", @@ -368,12 +679,12 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 14, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:30:03.919914535Z", - "start_time": "2023-10-10T20:29:55.479897609Z" + "end_time": "2024-02-15T10:10:06.010467579Z", + "start_time": "2024-02-15T10:06:42.042644190Z" } }, "outputs": [ @@ -381,8 +692,62 @@ "name": "stderr", "output_type": "stream", "text": [ - "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/5_ml_model.ipynb\n", - "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/notebooks/5_ml_model.ipynb\n" + "INFO:papermill:Input Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/5_ml_model.ipynb\n", + "INFO:papermill:Output Notebook: /home/lukas/Programming/uni/bachelorarbeit/fairnb/notebooks/5_ml_model.ipynb\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"split\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"clf\"' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"submission\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'INPUT_PATHS' (prefix='# Parameters\\n')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"split\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"aggregated_features\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:NAME 'OUTPUT_PATHS' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:EQUAL '=' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:LBRACE '{' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"clf\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"submission\"' (prefix='\\n ')\n", + "DEBUG:blib2to3.pgen2.driver:COLON ':' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:STRING '\"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv\"' (prefix=' ')\n", + "DEBUG:blib2to3.pgen2.driver:COMMA ',' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:RBRACE '}' (prefix='\\n')\n", + "DEBUG:blib2to3.pgen2.driver:NEWLINE '\\n' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:ENDMARKER '' (prefix='')\n", + "DEBUG:blib2to3.pgen2.driver:Stop.\n" ] }, { @@ -391,7 +756,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "d53f45cbcb33427eafa4c7c174b9dd65" + "model_id": "6d79d7d1a6354fd18ed65812ef6824fc" } }, "metadata": {}, @@ -401,11 +766,438 @@ "name": "stderr", "output_type": "stream", "text": [ + "DEBUG:asyncio:Using selector: EpollSelector\n", "INFO:papermill:Executing notebook with kernel: python3\n", + "DEBUG:papermill:Skipping non-executing cell 0\n", + "DEBUG:papermill:Executing cell:\n", + "import pickle\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from pandas import DataFrame, Index\n", + "from sklearn.decomposition import PCA\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.model_selection import train_test_split, GridSearchCV\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.svm import SVC\n", + "\n", + "from definitions import BASE_PATH\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'import pickle\\n\\nimport numpy as np\\nimport pandas as pd\\nfrom pandas import DataFrame, Index\\nfrom sklearn.decomposition import PCA\\nfrom sklearn.metrics import accuracy_score\\nfrom sklearn.model_selection import train_test_split, GridSearchCV\\nfrom sklearn.preprocessing import StandardScaler\\nfrom sklearn.svm import SVC\\n\\nfrom definitions import BASE_PATH', 'execution_count': 1}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Tagged with 'parameters'\n", + "INPUT_PATH = BASE_PATH / \"tmp\" / \"5_ml_model\" / \"input\"\n", + "OUTPUT_PATH = BASE_PATH / \"tmp\" / \"5_ml_model\" / \"output\"\n", + "\n", + "INPUT_PATHS: dict[str, str] = {\n", + " \"split\": (INPUT_PATH / \"split.csv\").__str__(),\n", + " \"features\": (INPUT_PATH / \"features.csv\").__str__()\n", + "}\n", + "OUTPUT_PATHS: dict[str, str] = {\n", + " \"submission\": (OUTPUT_PATH / \"submission.csv\").__str__(),\n", + " \"clf\": (OUTPUT_PATH / \"clf.pickle\").__str__()\n", + "}\n", + "\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Tagged with \\'parameters\\'\\nINPUT_PATH = BASE_PATH / \"tmp\" / \"5_ml_model\" / \"input\"\\nOUTPUT_PATH = BASE_PATH / \"tmp\" / \"5_ml_model\" / \"output\"\\n\\nINPUT_PATHS: dict[str, str] = {\\n \"split\": (INPUT_PATH / \"split.csv\").__str__(),\\n \"features\": (INPUT_PATH / \"features.csv\").__str__()\\n}\\nOUTPUT_PATHS: dict[str, str] = {\\n \"submission\": (OUTPUT_PATH / \"submission.csv\").__str__(),\\n \"clf\": (OUTPUT_PATH / \"clf.pickle\").__str__()\\n}\\n', 'execution_count': 2}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Parameters\n", + "INPUT_PATHS = {\n", + " \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv\",\n", + " \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv\",\n", + "}\n", + "OUTPUT_PATHS = {\n", + " \"clf\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle\",\n", + " \"submission\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv\",\n", + "}\n", + "\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Parameters\\nINPUT_PATHS = {\\n \"split\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/split.csv\",\\n \"aggregated_features\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/input/features.csv\",\\n}\\nOUTPUT_PATHS = {\\n \"clf\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle\",\\n \"submission\": \"/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/test_result.csv\",\\n}\\n', 'execution_count': 3}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# input\n", + "split: pd.DataFrame = pd.read_csv(INPUT_PATHS[\"split\"])\n", + "features: pd.DataFrame = pd.read_csv(INPUT_PATHS[\"aggregated_features\"])\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# input\\nsplit: pd.DataFrame = pd.read_csv(INPUT_PATHS[\"split\"])\\nfeatures: pd.DataFrame = pd.read_csv(INPUT_PATHS[\"aggregated_features\"])', 'execution_count': 4}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "joined = pd.merge(features, split, on=\"filename\").set_index(\"filename\")\n", + "joined\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'joined = pd.merge(features, split, on=\"filename\").set_index(\"filename\")\\njoined', 'execution_count': 5}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': ' label 0_min 0_max 0_mean 0_std \\\\\\nfilename \\nclassical_1.mp3 classical -530.78436 -163.308350 -302.203167 51.142183 \\nclassical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561838 \\nclassical_100.mp3 classical -536.23737 -61.608826 -177.804114 83.381622 \\nclassical_11.mp3 classical -536.45746 -120.429665 -222.126303 76.246992 \\nclassical_12.mp3 classical -562.67523 -148.133560 -270.975406 52.191182 \\n... ... ... ... ... ... \\nrock_95.mp3 rock -553.11010 -5.218835 -193.506047 76.869437 \\nrock_96.mp3 rock -541.23600 27.163334 -119.113996 58.420684 \\nrock_97.mp3 rock -518.49500 58.526745 -66.267744 65.635619 \\nrock_98.mp3 rock -518.64307 53.555115 -45.734517 52.444200 \\nrock_99.mp3 rock -544.70310 75.612130 -49.380943 54.045627 \\n\\n 0_skew 1_min 1_max 1_mean 1_std ... \\\\\\nfilename ... \\nclassical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847563 ... \\nclassical_10.mp3 -0.772320 0.029056 259.63270 215.094182 18.388131 ... \\nclassical_100.mp3 -2.587179 0.000000 190.47589 112.471713 27.277553 ... \\nclassical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916949 ... \\nclassical_12.mp3 -0.366586 0.000000 194.26416 148.226647 19.305008 ... \\n... ... ... ... ... ... ... \\nrock_95.mp3 -0.201055 -89.948746 201.18045 111.724191 36.463584 ... \\nrock_96.mp3 -0.957699 -7.415961 210.49246 125.453699 31.908869 ... \\nrock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158416 ... \\nrock_98.mp3 -1.705641 0.000000 187.04274 96.440874 24.137702 ... \\nrock_99.mp3 -0.863093 -32.930653 191.73538 93.971242 33.410220 ... \\n\\n 38_max 38_mean 38_std 38_skew 39_min \\\\\\nfilename \\nclassical_1.mp3 47.308060 -3.713503 16.553984 0.230691 -46.794480 \\nclassical_10.mp3 29.811110 0.484271 8.660648 -0.479016 -28.989983 \\nclassical_100.mp3 27.610388 -0.333233 8.185075 0.208425 -38.095375 \\nclassical_11.mp3 31.500881 -3.781627 9.191043 0.260886 -22.667440 \\nclassical_12.mp3 28.490644 -6.242015 10.546545 0.341848 -25.040888 \\n... ... ... ... ... ... \\nrock_95.mp3 22.451445 -7.234634 8.471853 0.753855 -24.712723 \\nrock_96.mp3 28.087936 -9.704238 8.447620 0.112760 -38.147890 \\nrock_97.mp3 26.325895 -5.722825 7.727378 0.207489 -29.497524 \\nrock_98.mp3 8.714737 -9.511491 5.551820 -0.025604 -23.020084 \\nrock_99.mp3 17.050608 -5.296691 5.894963 0.390705 -20.983192 \\n\\n 39_max 39_mean 39_std 39_skew train \\nfilename \\nclassical_1.mp3 49.352516 -2.282116 15.285639 0.171462 True \\nclassical_10.mp3 27.533710 0.952658 10.477735 -0.185771 True \\nclassical_100.mp3 31.397880 -1.494916 10.917299 0.020985 True \\nclassical_11.mp3 50.992897 1.600777 10.125545 0.595763 True \\nclassical_12.mp3 46.878204 1.844494 11.160392 0.503120 False \\n... ... ... ... ... ... \\nrock_95.mp3 23.410387 -4.502398 6.687984 0.238807 True \\nrock_96.mp3 21.814402 -8.249507 7.807756 0.071968 True \\nrock_97.mp3 25.410654 -3.356614 8.170526 0.160330 True \\nrock_98.mp3 13.948638 -2.664985 5.051498 -0.258407 True \\nrock_99.mp3 29.312023 -0.321836 6.571660 0.384794 True \\n\\n[400 rows x 202 columns]', 'text/html': '<div>\\n<style scoped>\\n .dataframe tbody tr th:only-of-type {\\n vertical-align: middle;\\n }\\n\\n .dataframe tbody tr th {\\n vertical-align: top;\\n }\\n\\n .dataframe thead th {\\n text-align: right;\\n }\\n</style>\\n<table border=\"1\" class=\"dataframe\">\\n <thead>\\n <tr style=\"text-align: right;\">\\n <th></th>\\n <th>label</th>\\n <th>0_min</th>\\n <th>0_max</th>\\n <th>0_mean</th>\\n <th>0_std</th>\\n <th>0_skew</th>\\n <th>1_min</th>\\n <th>1_max</th>\\n <th>1_mean</th>\\n <th>1_std</th>\\n <th>...</th>\\n <th>38_max</th>\\n <th>38_mean</th>\\n <th>38_std</th>\\n <th>38_skew</th>\\n <th>39_min</th>\\n <th>39_max</th>\\n <th>39_mean</th>\\n <th>39_std</th>\\n <th>39_skew</th>\\n <th>train</th>\\n </tr>\\n <tr>\\n <th>filename</th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <th>classical_1.mp3</th>\\n <td>classical</td>\\n <td>-530.78436</td>\\n <td>-163.308350</td>\\n <td>-302.203167</td>\\n <td>51.142183</td>\\n <td>-0.468374</td>\\n <td>0.000000</td>\\n <td>178.75162</td>\\n <td>111.332342</td>\\n <td>24.847563</td>\\n <td>...</td>\\n <td>47.308060</td>\\n <td>-3.713503</td>\\n <td>16.553984</td>\\n <td>0.230691</td>\\n <td>-46.794480</td>\\n <td>49.352516</td>\\n <td>-2.282116</td>\\n <td>15.285639</td>\\n <td>0.171462</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>classical_10.mp3</th>\\n <td>classical</td>\\n <td>-562.85785</td>\\n <td>-96.164795</td>\\n <td>-219.259016</td>\\n <td>53.561838</td>\\n <td>-0.772320</td>\\n <td>0.029056</td>\\n <td>259.63270</td>\\n <td>215.094182</td>\\n <td>18.388131</td>\\n <td>...</td>\\n <td>29.811110</td>\\n <td>0.484271</td>\\n <td>8.660648</td>\\n <td>-0.479016</td>\\n <td>-28.989983</td>\\n <td>27.533710</td>\\n <td>0.952658</td>\\n <td>10.477735</td>\\n <td>-0.185771</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>classical_100.mp3</th>\\n <td>classical</td>\\n <td>-536.23737</td>\\n <td>-61.608826</td>\\n <td>-177.804114</td>\\n <td>83.381622</td>\\n <td>-2.587179</td>\\n <td>0.000000</td>\\n <td>190.47589</td>\\n <td>112.471713</td>\\n <td>27.277553</td>\\n <td>...</td>\\n <td>27.610388</td>\\n <td>-0.333233</td>\\n <td>8.185075</td>\\n <td>0.208425</td>\\n <td>-38.095375</td>\\n <td>31.397880</td>\\n <td>-1.494916</td>\\n <td>10.917299</td>\\n <td>0.020985</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>classical_11.mp3</th>\\n <td>classical</td>\\n <td>-536.45746</td>\\n <td>-120.429665</td>\\n <td>-222.126303</td>\\n <td>76.246992</td>\\n <td>-2.402418</td>\\n <td>0.000000</td>\\n <td>159.42575</td>\\n <td>99.853645</td>\\n <td>21.916949</td>\\n <td>...</td>\\n <td>31.500881</td>\\n <td>-3.781627</td>\\n <td>9.191043</td>\\n <td>0.260886</td>\\n <td>-22.667440</td>\\n <td>50.992897</td>\\n <td>1.600777</td>\\n <td>10.125545</td>\\n <td>0.595763</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>classical_12.mp3</th>\\n <td>classical</td>\\n <td>-562.67523</td>\\n <td>-148.133560</td>\\n <td>-270.975406</td>\\n <td>52.191182</td>\\n <td>-0.366586</td>\\n <td>0.000000</td>\\n <td>194.26416</td>\\n <td>148.226647</td>\\n <td>19.305008</td>\\n <td>...</td>\\n <td>28.490644</td>\\n <td>-6.242015</td>\\n <td>10.546545</td>\\n <td>0.341848</td>\\n <td>-25.040888</td>\\n <td>46.878204</td>\\n <td>1.844494</td>\\n <td>11.160392</td>\\n <td>0.503120</td>\\n <td>False</td>\\n </tr>\\n <tr>\\n <th>...</th>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n </tr>\\n <tr>\\n <th>rock_95.mp3</th>\\n <td>rock</td>\\n <td>-553.11010</td>\\n <td>-5.218835</td>\\n <td>-193.506047</td>\\n <td>76.869437</td>\\n <td>-0.201055</td>\\n <td>-89.948746</td>\\n <td>201.18045</td>\\n <td>111.724191</td>\\n <td>36.463584</td>\\n <td>...</td>\\n <td>22.451445</td>\\n <td>-7.234634</td>\\n <td>8.471853</td>\\n <td>0.753855</td>\\n <td>-24.712723</td>\\n <td>23.410387</td>\\n <td>-4.502398</td>\\n <td>6.687984</td>\\n <td>0.238807</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>rock_96.mp3</th>\\n <td>rock</td>\\n <td>-541.23600</td>\\n <td>27.163334</td>\\n <td>-119.113996</td>\\n <td>58.420684</td>\\n <td>-0.957699</td>\\n <td>-7.415961</td>\\n <td>210.49246</td>\\n <td>125.453699</td>\\n <td>31.908869</td>\\n <td>...</td>\\n <td>28.087936</td>\\n <td>-9.704238</td>\\n <td>8.447620</td>\\n <td>0.112760</td>\\n <td>-38.147890</td>\\n <td>21.814402</td>\\n <td>-8.249507</td>\\n <td>7.807756</td>\\n <td>0.071968</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>rock_97.mp3</th>\\n <td>rock</td>\\n <td>-518.49500</td>\\n <td>58.526745</td>\\n <td>-66.267744</td>\\n <td>65.635619</td>\\n <td>-0.898026</td>\\n <td>-58.824410</td>\\n <td>175.20135</td>\\n <td>99.288265</td>\\n <td>25.158416</td>\\n <td>...</td>\\n <td>26.325895</td>\\n <td>-5.722825</td>\\n <td>7.727378</td>\\n <td>0.207489</td>\\n <td>-29.497524</td>\\n <td>25.410654</td>\\n <td>-3.356614</td>\\n <td>8.170526</td>\\n <td>0.160330</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>rock_98.mp3</th>\\n <td>rock</td>\\n <td>-518.64307</td>\\n <td>53.555115</td>\\n <td>-45.734517</td>\\n <td>52.444200</td>\\n <td>-1.705641</td>\\n <td>0.000000</td>\\n <td>187.04274</td>\\n <td>96.440874</td>\\n <td>24.137702</td>\\n <td>...</td>\\n <td>8.714737</td>\\n <td>-9.511491</td>\\n <td>5.551820</td>\\n <td>-0.025604</td>\\n <td>-23.020084</td>\\n <td>13.948638</td>\\n <td>-2.664985</td>\\n <td>5.051498</td>\\n <td>-0.258407</td>\\n <td>True</td>\\n </tr>\\n <tr>\\n <th>rock_99.mp3</th>\\n <td>rock</td>\\n <td>-544.70310</td>\\n <td>75.612130</td>\\n <td>-49.380943</td>\\n <td>54.045627</td>\\n <td>-0.863093</td>\\n <td>-32.930653</td>\\n <td>191.73538</td>\\n <td>93.971242</td>\\n <td>33.410220</td>\\n <td>...</td>\\n <td>17.050608</td>\\n <td>-5.296691</td>\\n <td>5.894963</td>\\n <td>0.390705</td>\\n <td>-20.983192</td>\\n <td>29.312023</td>\\n <td>-0.321836</td>\\n <td>6.571660</td>\\n <td>0.384794</td>\\n <td>True</td>\\n </tr>\\n </tbody>\\n</table>\\n<p>400 rows × 202 columns</p>\\n</div>'}, 'metadata': {}, 'execution_count': 5}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "train: DataFrame = joined[joined[\"train\"] == True].drop(\"train\", axis=1)\n", + "train\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'train: DataFrame = joined[joined[\"train\"] == True].drop(\"train\", axis=1)\\ntrain', 'execution_count': 6}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': ' label 0_min 0_max 0_mean 0_std \\\\\\nfilename \\nclassical_1.mp3 classical -530.78436 -163.308350 -302.203167 51.142183 \\nclassical_10.mp3 classical -562.85785 -96.164795 -219.259016 53.561838 \\nclassical_100.mp3 classical -536.23737 -61.608826 -177.804114 83.381622 \\nclassical_11.mp3 classical -536.45746 -120.429665 -222.126303 76.246992 \\nclassical_13.mp3 classical -637.72064 -177.713960 -361.834032 71.310080 \\n... ... ... ... ... ... \\nrock_95.mp3 rock -553.11010 -5.218835 -193.506047 76.869437 \\nrock_96.mp3 rock -541.23600 27.163334 -119.113996 58.420684 \\nrock_97.mp3 rock -518.49500 58.526745 -66.267744 65.635619 \\nrock_98.mp3 rock -518.64307 53.555115 -45.734517 52.444200 \\nrock_99.mp3 rock -544.70310 75.612130 -49.380943 54.045627 \\n\\n 0_skew 1_min 1_max 1_mean 1_std ... \\\\\\nfilename ... \\nclassical_1.mp3 -0.468374 0.000000 178.75162 111.332342 24.847563 ... \\nclassical_10.mp3 -0.772320 0.029056 259.63270 215.094182 18.388131 ... \\nclassical_100.mp3 -2.587179 0.000000 190.47589 112.471713 27.277553 ... \\nclassical_11.mp3 -2.402418 0.000000 159.42575 99.853645 21.916949 ... \\nclassical_13.mp3 0.008325 0.000000 257.16284 211.556558 20.347034 ... \\n... ... ... ... ... ... ... \\nrock_95.mp3 -0.201055 -89.948746 201.18045 111.724191 36.463584 ... \\nrock_96.mp3 -0.957699 -7.415961 210.49246 125.453699 31.908869 ... \\nrock_97.mp3 -0.898026 -58.824410 175.20135 99.288265 25.158416 ... \\nrock_98.mp3 -1.705641 0.000000 187.04274 96.440874 24.137702 ... \\nrock_99.mp3 -0.863093 -32.930653 191.73538 93.971242 33.410220 ... \\n\\n 38_min 38_max 38_mean 38_std 38_skew \\\\\\nfilename \\nclassical_1.mp3 -44.098070 47.308060 -3.713503 16.553984 0.230691 \\nclassical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \\nclassical_100.mp3 -27.335688 27.610388 -0.333233 8.185075 0.208425 \\nclassical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \\nclassical_13.mp3 -24.728806 18.424036 -0.275736 7.026148 -0.640964 \\n... ... ... ... ... ... \\nrock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \\nrock_96.mp3 -37.584858 28.087936 -9.704238 8.447620 0.112760 \\nrock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \\nrock_98.mp3 -26.967848 8.714737 -9.511491 5.551820 -0.025604 \\nrock_99.mp3 -21.929403 17.050608 -5.296691 5.894963 0.390705 \\n\\n 39_min 39_max 39_mean 39_std 39_skew \\nfilename \\nclassical_1.mp3 -46.794480 49.352516 -2.282116 15.285639 0.171462 \\nclassical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \\nclassical_100.mp3 -38.095375 31.397880 -1.494916 10.917299 0.020985 \\nclassical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \\nclassical_13.mp3 -24.319565 18.439262 -2.147022 8.171929 0.009566 \\n... ... ... ... ... ... \\nrock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \\nrock_96.mp3 -38.147890 21.814402 -8.249507 7.807756 0.071968 \\nrock_97.mp3 -29.497524 25.410654 -3.356614 8.170526 0.160330 \\nrock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \\nrock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \\n\\n[320 rows x 201 columns]', 'text/html': '<div>\\n<style scoped>\\n .dataframe tbody tr th:only-of-type {\\n vertical-align: middle;\\n }\\n\\n .dataframe tbody tr th {\\n vertical-align: top;\\n }\\n\\n .dataframe thead th {\\n text-align: right;\\n }\\n</style>\\n<table border=\"1\" class=\"dataframe\">\\n <thead>\\n <tr style=\"text-align: right;\">\\n <th></th>\\n <th>label</th>\\n <th>0_min</th>\\n <th>0_max</th>\\n <th>0_mean</th>\\n <th>0_std</th>\\n <th>0_skew</th>\\n <th>1_min</th>\\n <th>1_max</th>\\n <th>1_mean</th>\\n <th>1_std</th>\\n <th>...</th>\\n <th>38_min</th>\\n <th>38_max</th>\\n <th>38_mean</th>\\n <th>38_std</th>\\n <th>38_skew</th>\\n <th>39_min</th>\\n <th>39_max</th>\\n <th>39_mean</th>\\n <th>39_std</th>\\n <th>39_skew</th>\\n </tr>\\n <tr>\\n <th>filename</th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <th>classical_1.mp3</th>\\n <td>classical</td>\\n <td>-530.78436</td>\\n <td>-163.308350</td>\\n <td>-302.203167</td>\\n <td>51.142183</td>\\n <td>-0.468374</td>\\n <td>0.000000</td>\\n <td>178.75162</td>\\n <td>111.332342</td>\\n <td>24.847563</td>\\n <td>...</td>\\n <td>-44.098070</td>\\n <td>47.308060</td>\\n <td>-3.713503</td>\\n <td>16.553984</td>\\n <td>0.230691</td>\\n <td>-46.794480</td>\\n <td>49.352516</td>\\n <td>-2.282116</td>\\n <td>15.285639</td>\\n <td>0.171462</td>\\n </tr>\\n <tr>\\n <th>classical_10.mp3</th>\\n <td>classical</td>\\n <td>-562.85785</td>\\n <td>-96.164795</td>\\n <td>-219.259016</td>\\n <td>53.561838</td>\\n <td>-0.772320</td>\\n <td>0.029056</td>\\n <td>259.63270</td>\\n <td>215.094182</td>\\n <td>18.388131</td>\\n <td>...</td>\\n <td>-27.458416</td>\\n <td>29.811110</td>\\n <td>0.484271</td>\\n <td>8.660648</td>\\n <td>-0.479016</td>\\n <td>-28.989983</td>\\n <td>27.533710</td>\\n <td>0.952658</td>\\n <td>10.477735</td>\\n <td>-0.185771</td>\\n </tr>\\n <tr>\\n <th>classical_100.mp3</th>\\n <td>classical</td>\\n <td>-536.23737</td>\\n <td>-61.608826</td>\\n <td>-177.804114</td>\\n <td>83.381622</td>\\n <td>-2.587179</td>\\n <td>0.000000</td>\\n <td>190.47589</td>\\n <td>112.471713</td>\\n <td>27.277553</td>\\n <td>...</td>\\n <td>-27.335688</td>\\n <td>27.610388</td>\\n <td>-0.333233</td>\\n <td>8.185075</td>\\n <td>0.208425</td>\\n <td>-38.095375</td>\\n <td>31.397880</td>\\n <td>-1.494916</td>\\n <td>10.917299</td>\\n <td>0.020985</td>\\n </tr>\\n <tr>\\n <th>classical_11.mp3</th>\\n <td>classical</td>\\n <td>-536.45746</td>\\n <td>-120.429665</td>\\n <td>-222.126303</td>\\n <td>76.246992</td>\\n <td>-2.402418</td>\\n <td>0.000000</td>\\n <td>159.42575</td>\\n <td>99.853645</td>\\n <td>21.916949</td>\\n <td>...</td>\\n <td>-31.774948</td>\\n <td>31.500881</td>\\n <td>-3.781627</td>\\n <td>9.191043</td>\\n <td>0.260886</td>\\n <td>-22.667440</td>\\n <td>50.992897</td>\\n <td>1.600777</td>\\n <td>10.125545</td>\\n <td>0.595763</td>\\n </tr>\\n <tr>\\n <th>classical_13.mp3</th>\\n <td>classical</td>\\n <td>-637.72064</td>\\n <td>-177.713960</td>\\n <td>-361.834032</td>\\n <td>71.310080</td>\\n <td>0.008325</td>\\n <td>0.000000</td>\\n <td>257.16284</td>\\n <td>211.556558</td>\\n <td>20.347034</td>\\n <td>...</td>\\n <td>-24.728806</td>\\n <td>18.424036</td>\\n <td>-0.275736</td>\\n <td>7.026148</td>\\n <td>-0.640964</td>\\n <td>-24.319565</td>\\n <td>18.439262</td>\\n <td>-2.147022</td>\\n <td>8.171929</td>\\n <td>0.009566</td>\\n </tr>\\n <tr>\\n <th>...</th>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n </tr>\\n <tr>\\n <th>rock_95.mp3</th>\\n <td>rock</td>\\n <td>-553.11010</td>\\n <td>-5.218835</td>\\n <td>-193.506047</td>\\n <td>76.869437</td>\\n <td>-0.201055</td>\\n <td>-89.948746</td>\\n <td>201.18045</td>\\n <td>111.724191</td>\\n <td>36.463584</td>\\n <td>...</td>\\n <td>-27.043941</td>\\n <td>22.451445</td>\\n <td>-7.234634</td>\\n <td>8.471853</td>\\n <td>0.753855</td>\\n <td>-24.712723</td>\\n <td>23.410387</td>\\n <td>-4.502398</td>\\n <td>6.687984</td>\\n <td>0.238807</td>\\n </tr>\\n <tr>\\n <th>rock_96.mp3</th>\\n <td>rock</td>\\n <td>-541.23600</td>\\n <td>27.163334</td>\\n <td>-119.113996</td>\\n <td>58.420684</td>\\n <td>-0.957699</td>\\n <td>-7.415961</td>\\n <td>210.49246</td>\\n <td>125.453699</td>\\n <td>31.908869</td>\\n <td>...</td>\\n <td>-37.584858</td>\\n <td>28.087936</td>\\n <td>-9.704238</td>\\n <td>8.447620</td>\\n <td>0.112760</td>\\n <td>-38.147890</td>\\n <td>21.814402</td>\\n <td>-8.249507</td>\\n <td>7.807756</td>\\n <td>0.071968</td>\\n </tr>\\n <tr>\\n <th>rock_97.mp3</th>\\n <td>rock</td>\\n <td>-518.49500</td>\\n <td>58.526745</td>\\n <td>-66.267744</td>\\n <td>65.635619</td>\\n <td>-0.898026</td>\\n <td>-58.824410</td>\\n <td>175.20135</td>\\n <td>99.288265</td>\\n <td>25.158416</td>\\n <td>...</td>\\n <td>-29.620445</td>\\n <td>26.325895</td>\\n <td>-5.722825</td>\\n <td>7.727378</td>\\n <td>0.207489</td>\\n <td>-29.497524</td>\\n <td>25.410654</td>\\n <td>-3.356614</td>\\n <td>8.170526</td>\\n <td>0.160330</td>\\n </tr>\\n <tr>\\n <th>rock_98.mp3</th>\\n <td>rock</td>\\n <td>-518.64307</td>\\n <td>53.555115</td>\\n <td>-45.734517</td>\\n <td>52.444200</td>\\n <td>-1.705641</td>\\n <td>0.000000</td>\\n <td>187.04274</td>\\n <td>96.440874</td>\\n <td>24.137702</td>\\n <td>...</td>\\n <td>-26.967848</td>\\n <td>8.714737</td>\\n <td>-9.511491</td>\\n <td>5.551820</td>\\n <td>-0.025604</td>\\n <td>-23.020084</td>\\n <td>13.948638</td>\\n <td>-2.664985</td>\\n <td>5.051498</td>\\n <td>-0.258407</td>\\n </tr>\\n <tr>\\n <th>rock_99.mp3</th>\\n <td>rock</td>\\n <td>-544.70310</td>\\n <td>75.612130</td>\\n <td>-49.380943</td>\\n <td>54.045627</td>\\n <td>-0.863093</td>\\n <td>-32.930653</td>\\n <td>191.73538</td>\\n <td>93.971242</td>\\n <td>33.410220</td>\\n <td>...</td>\\n <td>-21.929403</td>\\n <td>17.050608</td>\\n <td>-5.296691</td>\\n <td>5.894963</td>\\n <td>0.390705</td>\\n <td>-20.983192</td>\\n <td>29.312023</td>\\n <td>-0.321836</td>\\n <td>6.571660</td>\\n <td>0.384794</td>\\n </tr>\\n </tbody>\\n</table>\\n<p>320 rows × 201 columns</p>\\n</div>'}, 'metadata': {}, 'execution_count': 6}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "test: DataFrame = joined[joined[\"train\"] == False].drop(\"train\", axis=1)\n", + "test\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': 'test: DataFrame = joined[joined[\"train\"] == False].drop(\"train\", axis=1)\\ntest', 'execution_count': 7}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': ' label 0_min 0_max 0_mean 0_std \\\\\\nfilename \\nclassical_12.mp3 classical -562.67523 -148.133560 -270.975406 52.191182 \\nclassical_2.mp3 classical -549.40650 -192.532060 -293.008969 27.207028 \\nclassical_20.mp3 classical -605.99150 -161.119310 -263.483084 49.157298 \\nclassical_27.mp3 classical -595.41895 -78.118810 -265.344461 104.892303 \\nclassical_39.mp3 classical -578.84720 -55.479320 -183.753039 69.140628 \\n... ... ... ... ... ... \\nrock_85.mp3 rock -556.08203 44.890602 -72.618399 80.272023 \\nrock_86.mp3 rock -534.40650 42.919650 -93.601685 62.192619 \\nrock_88.mp3 rock -539.97880 44.375150 -126.955020 88.140999 \\nrock_92.mp3 rock -532.89110 13.948147 -206.891688 80.812274 \\nrock_93.mp3 rock -570.46650 -26.067888 -302.483118 96.569376 \\n\\n 0_skew 1_min 1_max 1_mean 1_std ... \\\\\\nfilename ... \\nclassical_12.mp3 -0.366586 0.000000 194.26416 148.226647 19.305008 ... \\nclassical_2.mp3 -0.426848 0.000000 231.03738 198.662514 14.957660 ... \\nclassical_20.mp3 -0.856221 0.000000 191.92676 141.393817 17.754779 ... \\nclassical_27.mp3 -0.526604 0.000000 200.61633 144.208488 25.198761 ... \\nclassical_39.mp3 -0.577055 0.000000 193.84949 127.058496 29.295691 ... \\n... ... ... ... ... ... ... \\nrock_85.mp3 -2.269420 -13.219891 205.14955 96.863927 38.352424 ... \\nrock_86.mp3 -0.869415 0.000000 206.32501 128.047509 30.374850 ... \\nrock_88.mp3 -1.700578 -19.007393 201.99960 99.760978 32.572320 ... \\nrock_92.mp3 0.090286 -47.724570 179.76506 109.954998 37.880477 ... \\nrock_93.mp3 0.159026 -89.999680 211.88910 103.686365 40.373592 ... \\n\\n 38_min 38_max 38_mean 38_std 38_skew \\\\\\nfilename \\nclassical_12.mp3 -44.843810 28.490644 -6.242015 10.546545 0.341848 \\nclassical_2.mp3 -25.912933 24.293318 0.746096 8.240027 -0.022513 \\nclassical_20.mp3 -24.911243 38.551230 -2.274261 9.671005 0.719436 \\nclassical_27.mp3 -28.797087 20.897750 -5.761607 7.108055 0.360305 \\nclassical_39.mp3 -48.678460 24.566566 -7.810246 11.568188 -0.106704 \\n... ... ... ... ... ... \\nrock_85.mp3 -22.633102 13.513550 -3.126545 5.035097 -0.035805 \\nrock_86.mp3 -30.471783 20.564953 -3.383356 6.405211 -0.185147 \\nrock_88.mp3 -34.726500 26.706833 -5.827121 8.260717 0.275225 \\nrock_92.mp3 -37.614220 21.420666 -8.287362 7.851784 -0.080285 \\nrock_93.mp3 -28.903786 35.712753 2.073339 10.995769 0.249798 \\n\\n 39_min 39_max 39_mean 39_std 39_skew \\nfilename \\nclassical_12.mp3 -25.040888 46.878204 1.844494 11.160392 0.503120 \\nclassical_2.mp3 -18.561390 23.484133 3.115819 7.220346 0.242364 \\nclassical_20.mp3 -30.311798 29.272330 0.289613 9.590299 -0.244191 \\nclassical_27.mp3 -39.705540 25.803795 -2.736776 10.101577 -0.463730 \\nclassical_39.mp3 -24.328775 40.172250 -0.078006 10.646963 0.492488 \\n... ... ... ... ... ... \\nrock_85.mp3 -19.814285 18.576450 -1.172361 6.078238 -0.048851 \\nrock_86.mp3 -28.917618 26.702751 -1.950565 6.725107 -0.253487 \\nrock_88.mp3 -31.036520 27.423218 -4.715363 6.544117 0.184718 \\nrock_92.mp3 -41.547260 25.628895 -9.046777 8.779821 0.071449 \\nrock_93.mp3 -30.178170 30.612560 -4.677735 8.877041 0.149639 \\n\\n[80 rows x 201 columns]', 'text/html': '<div>\\n<style scoped>\\n .dataframe tbody tr th:only-of-type {\\n vertical-align: middle;\\n }\\n\\n .dataframe tbody tr th {\\n vertical-align: top;\\n }\\n\\n .dataframe thead th {\\n text-align: right;\\n }\\n</style>\\n<table border=\"1\" class=\"dataframe\">\\n <thead>\\n <tr style=\"text-align: right;\">\\n <th></th>\\n <th>label</th>\\n <th>0_min</th>\\n <th>0_max</th>\\n <th>0_mean</th>\\n <th>0_std</th>\\n <th>0_skew</th>\\n <th>1_min</th>\\n <th>1_max</th>\\n <th>1_mean</th>\\n <th>1_std</th>\\n <th>...</th>\\n <th>38_min</th>\\n <th>38_max</th>\\n <th>38_mean</th>\\n <th>38_std</th>\\n <th>38_skew</th>\\n <th>39_min</th>\\n <th>39_max</th>\\n <th>39_mean</th>\\n <th>39_std</th>\\n <th>39_skew</th>\\n </tr>\\n <tr>\\n <th>filename</th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n <th></th>\\n </tr>\\n </thead>\\n <tbody>\\n <tr>\\n <th>classical_12.mp3</th>\\n <td>classical</td>\\n <td>-562.67523</td>\\n <td>-148.133560</td>\\n <td>-270.975406</td>\\n <td>52.191182</td>\\n <td>-0.366586</td>\\n <td>0.000000</td>\\n <td>194.26416</td>\\n <td>148.226647</td>\\n <td>19.305008</td>\\n <td>...</td>\\n <td>-44.843810</td>\\n <td>28.490644</td>\\n <td>-6.242015</td>\\n <td>10.546545</td>\\n <td>0.341848</td>\\n <td>-25.040888</td>\\n <td>46.878204</td>\\n <td>1.844494</td>\\n <td>11.160392</td>\\n <td>0.503120</td>\\n </tr>\\n <tr>\\n <th>classical_2.mp3</th>\\n <td>classical</td>\\n <td>-549.40650</td>\\n <td>-192.532060</td>\\n <td>-293.008969</td>\\n <td>27.207028</td>\\n <td>-0.426848</td>\\n <td>0.000000</td>\\n <td>231.03738</td>\\n <td>198.662514</td>\\n <td>14.957660</td>\\n <td>...</td>\\n <td>-25.912933</td>\\n <td>24.293318</td>\\n <td>0.746096</td>\\n <td>8.240027</td>\\n <td>-0.022513</td>\\n <td>-18.561390</td>\\n <td>23.484133</td>\\n <td>3.115819</td>\\n <td>7.220346</td>\\n <td>0.242364</td>\\n </tr>\\n <tr>\\n <th>classical_20.mp3</th>\\n <td>classical</td>\\n <td>-605.99150</td>\\n <td>-161.119310</td>\\n <td>-263.483084</td>\\n <td>49.157298</td>\\n <td>-0.856221</td>\\n <td>0.000000</td>\\n <td>191.92676</td>\\n <td>141.393817</td>\\n <td>17.754779</td>\\n <td>...</td>\\n <td>-24.911243</td>\\n <td>38.551230</td>\\n <td>-2.274261</td>\\n <td>9.671005</td>\\n <td>0.719436</td>\\n <td>-30.311798</td>\\n <td>29.272330</td>\\n <td>0.289613</td>\\n <td>9.590299</td>\\n <td>-0.244191</td>\\n </tr>\\n <tr>\\n <th>classical_27.mp3</th>\\n <td>classical</td>\\n <td>-595.41895</td>\\n <td>-78.118810</td>\\n <td>-265.344461</td>\\n <td>104.892303</td>\\n <td>-0.526604</td>\\n <td>0.000000</td>\\n <td>200.61633</td>\\n <td>144.208488</td>\\n <td>25.198761</td>\\n <td>...</td>\\n <td>-28.797087</td>\\n <td>20.897750</td>\\n <td>-5.761607</td>\\n <td>7.108055</td>\\n <td>0.360305</td>\\n <td>-39.705540</td>\\n <td>25.803795</td>\\n <td>-2.736776</td>\\n <td>10.101577</td>\\n <td>-0.463730</td>\\n </tr>\\n <tr>\\n <th>classical_39.mp3</th>\\n <td>classical</td>\\n <td>-578.84720</td>\\n <td>-55.479320</td>\\n <td>-183.753039</td>\\n <td>69.140628</td>\\n <td>-0.577055</td>\\n <td>0.000000</td>\\n <td>193.84949</td>\\n <td>127.058496</td>\\n <td>29.295691</td>\\n <td>...</td>\\n <td>-48.678460</td>\\n <td>24.566566</td>\\n <td>-7.810246</td>\\n <td>11.568188</td>\\n <td>-0.106704</td>\\n <td>-24.328775</td>\\n <td>40.172250</td>\\n <td>-0.078006</td>\\n <td>10.646963</td>\\n <td>0.492488</td>\\n </tr>\\n <tr>\\n <th>...</th>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n <td>...</td>\\n </tr>\\n <tr>\\n <th>rock_85.mp3</th>\\n <td>rock</td>\\n <td>-556.08203</td>\\n <td>44.890602</td>\\n <td>-72.618399</td>\\n <td>80.272023</td>\\n <td>-2.269420</td>\\n <td>-13.219891</td>\\n <td>205.14955</td>\\n <td>96.863927</td>\\n <td>38.352424</td>\\n <td>...</td>\\n <td>-22.633102</td>\\n <td>13.513550</td>\\n <td>-3.126545</td>\\n <td>5.035097</td>\\n <td>-0.035805</td>\\n <td>-19.814285</td>\\n <td>18.576450</td>\\n <td>-1.172361</td>\\n <td>6.078238</td>\\n <td>-0.048851</td>\\n </tr>\\n <tr>\\n <th>rock_86.mp3</th>\\n <td>rock</td>\\n <td>-534.40650</td>\\n <td>42.919650</td>\\n <td>-93.601685</td>\\n <td>62.192619</td>\\n <td>-0.869415</td>\\n <td>0.000000</td>\\n <td>206.32501</td>\\n <td>128.047509</td>\\n <td>30.374850</td>\\n <td>...</td>\\n <td>-30.471783</td>\\n <td>20.564953</td>\\n <td>-3.383356</td>\\n <td>6.405211</td>\\n <td>-0.185147</td>\\n <td>-28.917618</td>\\n <td>26.702751</td>\\n <td>-1.950565</td>\\n <td>6.725107</td>\\n <td>-0.253487</td>\\n </tr>\\n <tr>\\n <th>rock_88.mp3</th>\\n <td>rock</td>\\n <td>-539.97880</td>\\n <td>44.375150</td>\\n <td>-126.955020</td>\\n <td>88.140999</td>\\n <td>-1.700578</td>\\n <td>-19.007393</td>\\n <td>201.99960</td>\\n <td>99.760978</td>\\n <td>32.572320</td>\\n <td>...</td>\\n <td>-34.726500</td>\\n <td>26.706833</td>\\n <td>-5.827121</td>\\n <td>8.260717</td>\\n <td>0.275225</td>\\n <td>-31.036520</td>\\n <td>27.423218</td>\\n <td>-4.715363</td>\\n <td>6.544117</td>\\n <td>0.184718</td>\\n </tr>\\n <tr>\\n <th>rock_92.mp3</th>\\n <td>rock</td>\\n <td>-532.89110</td>\\n <td>13.948147</td>\\n <td>-206.891688</td>\\n <td>80.812274</td>\\n <td>0.090286</td>\\n <td>-47.724570</td>\\n <td>179.76506</td>\\n <td>109.954998</td>\\n <td>37.880477</td>\\n <td>...</td>\\n <td>-37.614220</td>\\n <td>21.420666</td>\\n <td>-8.287362</td>\\n <td>7.851784</td>\\n <td>-0.080285</td>\\n <td>-41.547260</td>\\n <td>25.628895</td>\\n <td>-9.046777</td>\\n <td>8.779821</td>\\n <td>0.071449</td>\\n </tr>\\n <tr>\\n <th>rock_93.mp3</th>\\n <td>rock</td>\\n <td>-570.46650</td>\\n <td>-26.067888</td>\\n <td>-302.483118</td>\\n <td>96.569376</td>\\n <td>0.159026</td>\\n <td>-89.999680</td>\\n <td>211.88910</td>\\n <td>103.686365</td>\\n <td>40.373592</td>\\n <td>...</td>\\n <td>-28.903786</td>\\n <td>35.712753</td>\\n <td>2.073339</td>\\n <td>10.995769</td>\\n <td>0.249798</td>\\n <td>-30.178170</td>\\n <td>30.612560</td>\\n <td>-4.677735</td>\\n <td>8.877041</td>\\n <td>0.149639</td>\\n </tr>\\n </tbody>\\n</table>\\n<p>80 rows × 201 columns</p>\\n</div>'}, 'metadata': {}, 'execution_count': 7}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# remove labels\n", + "X = train.drop(['label'], axis=1, errors='ignore')\n", + "\n", + "columns: Index = X.columns\n", + "classnames = np.sort(np.unique(joined.label.values)) # -> [\"classical\", \"electronic\", \"pop\", \"rock\"]\n", + "\n", + "# map classname to an index and create dicts for easy lookup in O(1)\n", + "classname2index = {}\n", + "index2classname = {}\n", + "\n", + "for i, classname in enumerate(classnames):\n", + " classname2index[classname] = i\n", + " index2classname[i] = classname\n", + "\n", + "# map label to label index\n", + "y = np.array([classname2index[classname] for classname in train.label.values])\n", + "\n", + "(X, y)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# remove labels\\nX = train.drop([\\'label\\'], axis=1, errors=\\'ignore\\')\\n\\ncolumns: Index = X.columns\\nclassnames = np.sort(np.unique(joined.label.values)) # -> [\"classical\", \"electronic\", \"pop\", \"rock\"]\\n\\n# map classname to an index and create dicts for easy lookup in O(1)\\nclassname2index = {}\\nindex2classname = {}\\n\\nfor i, classname in enumerate(classnames):\\n classname2index[classname] = i\\n index2classname[i] = classname\\n\\n# map label to label index\\ny = np.array([classname2index[classname] for classname in train.label.values])\\n\\n(X, y)', 'execution_count': 8}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': '( 0_min 0_max 0_mean 0_std 0_skew \\\\\\n filename \\n classical_1.mp3 -530.78436 -163.308350 -302.203167 51.142183 -0.468374 \\n classical_10.mp3 -562.85785 -96.164795 -219.259016 53.561838 -0.772320 \\n classical_100.mp3 -536.23737 -61.608826 -177.804114 83.381622 -2.587179 \\n classical_11.mp3 -536.45746 -120.429665 -222.126303 76.246992 -2.402418 \\n classical_13.mp3 -637.72064 -177.713960 -361.834032 71.310080 0.008325 \\n ... ... ... ... ... ... \\n rock_95.mp3 -553.11010 -5.218835 -193.506047 76.869437 -0.201055 \\n rock_96.mp3 -541.23600 27.163334 -119.113996 58.420684 -0.957699 \\n rock_97.mp3 -518.49500 58.526745 -66.267744 65.635619 -0.898026 \\n rock_98.mp3 -518.64307 53.555115 -45.734517 52.444200 -1.705641 \\n rock_99.mp3 -544.70310 75.612130 -49.380943 54.045627 -0.863093 \\n \\n 1_min 1_max 1_mean 1_std 1_skew ... \\\\\\n filename ... \\n classical_1.mp3 0.000000 178.75162 111.332342 24.847563 -0.402642 ... \\n classical_10.mp3 0.029056 259.63270 215.094182 18.388131 -1.528751 ... \\n classical_100.mp3 0.000000 190.47589 112.471713 27.277553 -1.318523 ... \\n classical_11.mp3 0.000000 159.42575 99.853645 21.916949 -1.176922 ... \\n classical_13.mp3 0.000000 257.16284 211.556558 20.347034 -1.050119 ... \\n ... ... ... ... ... ... ... \\n rock_95.mp3 -89.948746 201.18045 111.724191 36.463584 -0.443224 ... \\n rock_96.mp3 -7.415961 210.49246 125.453699 31.908869 -0.547469 ... \\n rock_97.mp3 -58.824410 175.20135 99.288265 25.158416 -0.568057 ... \\n rock_98.mp3 0.000000 187.04274 96.440874 24.137702 -0.145217 ... \\n rock_99.mp3 -32.930653 191.73538 93.971242 33.410220 0.040113 ... \\n \\n 38_min 38_max 38_mean 38_std 38_skew \\\\\\n filename \\n classical_1.mp3 -44.098070 47.308060 -3.713503 16.553984 0.230691 \\n classical_10.mp3 -27.458416 29.811110 0.484271 8.660648 -0.479016 \\n classical_100.mp3 -27.335688 27.610388 -0.333233 8.185075 0.208425 \\n classical_11.mp3 -31.774948 31.500881 -3.781627 9.191043 0.260886 \\n classical_13.mp3 -24.728806 18.424036 -0.275736 7.026148 -0.640964 \\n ... ... ... ... ... ... \\n rock_95.mp3 -27.043941 22.451445 -7.234634 8.471853 0.753855 \\n rock_96.mp3 -37.584858 28.087936 -9.704238 8.447620 0.112760 \\n rock_97.mp3 -29.620445 26.325895 -5.722825 7.727378 0.207489 \\n rock_98.mp3 -26.967848 8.714737 -9.511491 5.551820 -0.025604 \\n rock_99.mp3 -21.929403 17.050608 -5.296691 5.894963 0.390705 \\n \\n 39_min 39_max 39_mean 39_std 39_skew \\n filename \\n classical_1.mp3 -46.794480 49.352516 -2.282116 15.285639 0.171462 \\n classical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \\n classical_100.mp3 -38.095375 31.397880 -1.494916 10.917299 0.020985 \\n classical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \\n classical_13.mp3 -24.319565 18.439262 -2.147022 8.171929 0.009566 \\n ... ... ... ... ... ... \\n rock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \\n rock_96.mp3 -38.147890 21.814402 -8.249507 7.807756 0.071968 \\n rock_97.mp3 -29.497524 25.410654 -3.356614 8.170526 0.160330 \\n rock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \\n rock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \\n \\n [320 rows x 200 columns],\\n array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\\n 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]))'}, 'metadata': {}, 'execution_count': 8}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "X_test = test.drop(['label'], axis=1, errors='ignore')\n", + "\n", + "print(X.shape)\n", + "print(X_test.shape)\n", + "print(X_test.shape[0] / X.shape[0]) # fraction of test sample\n", + "\n", + "y_test = np.array([classname2index[classname] for classname in test.label.values])\n", + "y_test\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': \"X_test = test.drop(['label'], axis=1, errors='ignore')\\n\\nprint(X.shape)\\nprint(X_test.shape)\\nprint(X_test.shape[0] / X.shape[0]) # fraction of test sample\\n\\ny_test = np.array([classname2index[classname] for classname in test.label.values])\\ny_test\", 'execution_count': 9}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': '(320, 200)\\n(80, 200)\\n0.25\\n'}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': 'array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,\\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,\\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])'}, 'metadata': {}, 'execution_count': 9}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Standardize for PCA\n", + "scaler = StandardScaler()\n", + "X_standardized = scaler.fit_transform(X.values)\n", + "X_test_standardized = scaler.transform(X_test.values)\n", + "\n", + "X_standardized\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Standardize for PCA\\nscaler = StandardScaler()\\nX_standardized = scaler.fit_transform(X.values)\\nX_test_standardized = scaler.transform(X_test.values)\\n\\nX_standardized', 'execution_count': 10}\n", + "DEBUG:papermill:msg_type: execute_result\n", + "DEBUG:papermill:content: {'data': {'text/plain': 'array([[ 0.38209988, -1.79901606, -1.34294124, ..., -0.7312519 ,\\n 3.4358529 , 0.11530124],\\n [-0.42728837, -0.93236007, -0.41652953, ..., 0.22563011,\\n 1.37555438, -0.86835549],\\n [ 0.24449084, -0.48632861, 0.04648451, ..., -0.49838941,\\n 1.56391778, -0.29904453],\\n ...,\\n [ 0.69222714, 1.06432227, 1.29224565, ..., -1.0491004 ,\\n 0.38686173, 0.08464998],\\n [ 0.68849053, 1.00015092, 1.52158336, ..., -0.84450893,\\n -0.94971424, -1.06836048],\\n [ 0.03085452, 1.28485202, 1.48085606, ..., -0.15137928,\\n -0.29828957, 0.70271937]])'}, 'metadata': {}, 'execution_count': 10}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Reduce Dimensions via PCA\n", + "pca = PCA(n_components=50).fit(X_standardized)\n", + "X_pca = pca.transform(X_standardized)\n", + "X_test_pca = pca.transform(X_test_standardized)\n", + "\n", + "print(sum(pca.explained_variance_ratio_))\n", + "print(X_pca.shape)\n", + "print(X_test_pca.shape)\n", + "print(y.shape)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Reduce Dimensions via PCA\\npca = PCA(n_components=50).fit(X_standardized)\\nX_pca = pca.transform(X_standardized)\\nX_test_pca = pca.transform(X_test_standardized)\\n\\nprint(sum(pca.explained_variance_ratio_))\\nprint(X_pca.shape)\\nprint(X_test_pca.shape)\\nprint(y.shape)', 'execution_count': 11}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': '0.8557392011152061\\n(320, 50)\\n(80, 50)\\n(320,)\\n'}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Fit SVM:\n", + "\n", + "X_train, X_val, y_train, y_val = train_test_split(X_pca, y, test_size = 0.2, random_state=4, shuffle = True)\n", + "\n", + "clf = SVC(kernel='rbf', probability=True)\n", + "clf.fit(X_train, y_train)\n", + "\n", + "print(accuracy_score(clf.predict(X_val), y_val))\n", + "print(X_val)\n", + "print(y_val)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': \"# Fit SVM:\\n\\nX_train, X_val, y_train, y_val = train_test_split(X_pca, y, test_size = 0.2, random_state=4, shuffle = True)\\n\\nclf = SVC(kernel='rbf', probability=True)\\nclf.fit(X_train, y_train)\\n\\nprint(accuracy_score(clf.predict(X_val), y_val))\\nprint(X_val)\\nprint(y_val)\", 'execution_count': 12}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': '0.6875\\n[[-4.64558613 3.08838305 -1.47175688 ... -1.24828691 -0.70095473\\n 0.01689286]\\n [ 5.85968202 -2.1047151 -3.35419664 ... -1.48822402 1.00205068\\n -0.98882563]\\n [ 6.52471238 -2.88386219 -5.91379963 ... 0.08618421 0.03366275\\n -0.55189302]\\n ...\\n [ 5.3496866 3.90245458 -4.07128854 ... -0.82356091 -0.7968544\\n 0.26045289]\\n [ 6.68981697 -1.18340439 -0.12267599 ... 1.33593613 -2.8015435\\n 0.5028293 ]\\n [-4.78063681 -7.16377441 4.09506551 ... -1.0308011 0.83671387\\n -0.07027211]]\\n[3 0 3 2 3 0 1 2 0 3 0 0 0 1 2 1 2 3 1 1 1 0 3 0 0 0 3 1 1 3 3 2 3 1 2 1 0\\n 1 0 1 3 0 0 0 0 3 3 3 0 3 3 3 1 2 2 0 1 2 1 2 3 2 1 0]\\n'}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# grid for C, gamma\n", + "C_grid = [0.001, 0.01, 0.1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "gamma_grid = [0.001, 0.01, 0.1, 1, 10]\n", + "param_grid = {'C': C_grid, 'gamma': gamma_grid}\n", + "\n", + "grid = GridSearchCV(SVC(kernel='rbf'), param_grid, cv=5, scoring=\"accuracy\")\n", + "grid.fit(X_train, y_train)\n", + "\n", + "# Find the best model\n", + "print(grid.best_score_)\n", + "print(grid.best_params_)\n", + "print(grid.best_estimator_)\n", + "print(accuracy_score(grid.predict(X_val), y_val))\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# grid for C, gamma\\nC_grid = [0.001, 0.01, 0.1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\\ngamma_grid = [0.001, 0.01, 0.1, 1, 10]\\nparam_grid = {\\'C\\': C_grid, \\'gamma\\': gamma_grid}\\n\\ngrid = GridSearchCV(SVC(kernel=\\'rbf\\'), param_grid, cv=5, scoring=\"accuracy\")\\ngrid.fit(X_train, y_train)\\n\\n# Find the best model\\nprint(grid.best_score_)\\nprint(grid.best_params_)\\nprint(grid.best_estimator_)\\nprint(accuracy_score(grid.predict(X_val), y_val))', 'execution_count': 13}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': \"0.7343891402714932\\n{'C': 3, 'gamma': 0.01}\\nSVC(C=3, gamma=0.01)\\n0.78125\\n\"}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Optimal model\n", + "\n", + "clf = SVC(kernel='rbf', C=4, gamma=0.01, probability=True)\n", + "clf.fit(X_train, y_train)\n", + "\n", + "print(accuracy_score(clf.predict(X_val), y_val))\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': \"# Optimal model\\n\\nclf = SVC(kernel='rbf', C=4, gamma=0.01, probability=True)\\nclf.fit(X_train, y_train)\\n\\nprint(accuracy_score(clf.predict(X_val), y_val))\", 'execution_count': 14}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': '0.78125\\n'}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Fit entire training sets\n", + "clf.fit(X_pca, y)\n", + "\n", + "print(accuracy_score(clf.predict(X_test_pca), y_test))\n", + "print(clf.predict_proba(X_test_pca))\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# Fit entire training sets\\nclf.fit(X_pca, y)\\n\\nprint(accuracy_score(clf.predict(X_test_pca), y_test))\\nprint(clf.predict_proba(X_test_pca))', 'execution_count': 15}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': '0.8\\n[[9.60125451e-01 2.54410379e-02 1.00183548e-02 4.41515609e-03]\\n [9.93544791e-01 4.04634019e-03 1.20649558e-03 1.20237342e-03]\\n [9.97430192e-01 1.76800719e-04 5.38565546e-04 1.85444214e-03]\\n [9.79967977e-01 6.86113735e-03 9.68497114e-03 3.48591496e-03]\\n [9.91884967e-01 5.17290348e-03 1.26266158e-03 1.67946793e-03]\\n [9.85578464e-01 9.44992493e-03 3.75086068e-03 1.22075036e-03]\\n [2.04862989e-01 4.53621014e-01 1.34373358e-01 2.07142639e-01]\\n [9.99181855e-01 4.86945868e-04 2.22608725e-04 1.08590413e-04]\\n [9.92658119e-01 3.47218548e-03 2.74696376e-03 1.12273207e-03]\\n [9.99656357e-01 1.12727916e-04 1.43400994e-04 8.75138776e-05]\\n [8.47319131e-01 4.69014094e-02 7.09411516e-02 3.48383077e-02]\\n [1.28380278e-01 3.67332428e-01 3.59429595e-01 1.44857699e-01]\\n [9.96413445e-01 2.75890076e-03 4.65504357e-04 3.62150045e-04]\\n [9.98826125e-01 7.62447290e-04 3.01490088e-04 1.09937383e-04]\\n [9.99401836e-01 8.67850526e-05 3.74373911e-04 1.37005308e-04]\\n [9.97955498e-01 1.69931669e-03 1.73626292e-04 1.71558652e-04]\\n [8.45643860e-01 1.33426916e-02 9.97412359e-02 4.12722121e-02]\\n [9.82092462e-01 1.15346135e-02 3.19973757e-03 3.17318740e-03]\\n [9.83213850e-01 1.24420959e-02 3.26304918e-03 1.08100527e-03]\\n [9.99642856e-01 7.19184901e-05 1.55316717e-04 1.29908898e-04]\\n [9.97979494e-01 1.76870557e-03 1.31807873e-04 1.19992584e-04]\\n [4.92333515e-04 9.38096306e-01 2.10469538e-02 4.03644064e-02]\\n [9.45551189e-03 4.32699483e-01 4.16341606e-01 1.41503399e-01]\\n [9.13893710e-03 4.44229440e-01 3.15860710e-01 2.30770912e-01]\\n [6.79828415e-02 6.71681498e-01 2.09457159e-01 5.08785014e-02]\\n [1.68076034e-04 9.71769830e-01 2.24441690e-03 2.58176775e-02]\\n [5.73737808e-02 8.61494512e-02 5.86365884e-01 2.70110884e-01]\\n [1.18603200e-01 5.68582627e-01 2.33418558e-01 7.93956149e-02]\\n [1.11117289e-02 9.36048570e-01 2.07419839e-02 3.20977167e-02]\\n [4.27128683e-03 2.53015466e-01 4.52073691e-01 2.90639556e-01]\\n [8.49595708e-03 6.37021927e-01 1.52099758e-01 2.02382358e-01]\\n [9.29855946e-04 8.43628458e-01 1.67412440e-02 1.38700442e-01]\\n [5.75440080e-02 6.65893968e-01 1.18869183e-01 1.57692841e-01]\\n [7.28891949e-02 6.97755501e-01 1.23916666e-01 1.05438637e-01]\\n [1.00364172e-01 3.05951082e-01 4.02534596e-01 1.91150150e-01]\\n [2.71956862e-04 5.43067021e-01 1.43066793e-02 4.42354343e-01]\\n [8.60586155e-02 8.06134589e-02 6.12157762e-01 2.21170163e-01]\\n [4.54205646e-02 3.77922605e-02 7.46222645e-01 1.70564530e-01]\\n [2.60732219e-02 1.78887893e-01 3.03253706e-01 4.91785179e-01]\\n [1.76685545e-01 1.49702306e-01 5.30947449e-01 1.42664700e-01]\\n [2.10423538e-02 3.16261307e-02 6.86655601e-01 2.60675914e-01]\\n [5.10365555e-03 9.06077798e-03 3.10609892e-01 6.75225674e-01]\\n [1.85590659e-04 4.20187052e-01 2.54067881e-01 3.25559476e-01]\\n [1.84121015e-03 1.49368051e-03 5.94696830e-01 4.01968279e-01]\\n [9.94756099e-03 1.98337895e-02 6.10189918e-01 3.60028732e-01]\\n [1.06218859e-02 5.83443846e-02 4.09385718e-01 5.21648011e-01]\\n [2.51610276e-01 1.06475171e-01 4.02323327e-01 2.39591226e-01]\\n [1.05739190e-03 4.80039248e-03 7.84298209e-01 2.09844007e-01]\\n [1.20304373e-03 2.49929289e-03 4.25498367e-01 5.70799297e-01]\\n [5.17165422e-04 2.44187897e-03 7.70942808e-01 2.26098148e-01]\\n [1.48279902e-01 4.34212254e-01 3.33486768e-01 8.40210765e-02]\\n [6.49493657e-03 2.03203941e-03 6.76591245e-01 3.14881779e-01]\\n [1.42643647e-03 3.00507802e-02 7.66466942e-01 2.02055842e-01]\\n [2.71205953e-04 1.64674206e-03 5.18908081e-01 4.79173971e-01]\\n [6.18460044e-04 8.65733199e-03 7.31160871e-01 2.59563337e-01]\\n [5.99851686e-04 9.88068783e-03 3.18075020e-01 6.71444441e-01]\\n [8.92857719e-05 2.49912334e-03 8.22928402e-01 1.74483188e-01]\\n [4.08821963e-03 4.01685411e-03 2.22308630e-01 7.69586296e-01]\\n [3.85280110e-04 4.28844983e-03 4.38873417e-01 5.56452853e-01]\\n [7.77946831e-04 9.39309422e-03 1.89573855e-01 8.00255104e-01]\\n [1.07826925e-03 4.48667610e-03 1.68966113e-01 8.25468942e-01]\\n [4.32984844e-03 3.71263242e-02 1.74061879e-01 7.84481948e-01]\\n [8.91964233e-04 4.60229508e-03 2.56203571e-01 7.38302169e-01]\\n [1.53170345e-04 2.66905629e-03 8.05893086e-01 1.91284687e-01]\\n [3.76678169e-04 2.66687172e-02 1.35691366e-01 8.37263238e-01]\\n [1.87189571e-03 2.95477730e-02 1.83614398e-01 7.84965933e-01]\\n [3.65699757e-04 4.65723230e-02 1.96467002e-01 7.56594975e-01]\\n [3.91020418e-03 2.21215837e-02 3.46096170e-01 6.27872042e-01]\\n [3.53128321e-04 1.26062549e-03 4.04030924e-01 5.94355323e-01]\\n [3.85531972e-04 1.67060179e-03 5.14520249e-01 4.83423617e-01]\\n [4.01176053e-04 1.39364758e-03 5.62411421e-01 4.35793755e-01]\\n [2.19890976e-02 4.13933530e-01 3.17505597e-01 2.46571775e-01]\\n [2.63540892e-03 1.60423321e-02 1.69895446e-01 8.11426813e-01]\\n [5.95478507e-04 7.12069104e-04 9.01272706e-02 9.08565182e-01]\\n [2.56904495e-04 3.92709426e-03 3.41668674e-01 6.54147328e-01]\\n [3.34122792e-04 5.02991556e-03 3.01652248e-01 6.92983714e-01]\\n [1.74105457e-03 1.54657507e-02 2.27888902e-01 7.54904293e-01]\\n [3.34518377e-02 5.51052761e-02 3.32962366e-01 5.78480520e-01]\\n [1.16808056e-03 1.31231889e-03 1.63219289e-01 8.34300311e-01]\\n [8.88813523e-02 1.55465620e-01 3.86988580e-01 3.68664447e-01]]\\n'}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# svc_path = BASE_PATH / \"out\" / \"SVC\"/ \"clf.pickle\"\n", + "# svc_path.parent.mkdir(parents=True, exist_ok=True)\n", + "# \n", + "# with open(svc_path, \"wb\") as file:\n", + "# pickle.dump(clf, file)\n", + "# \n", + "# with open(svc_path, \"rb\") as file:\n", + "# loaded = pickle.load(file)\n", + "\n", + "# loaded.predict_proba(X_test_pca)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# svc_path = BASE_PATH / \"out\" / \"SVC\"/ \"clf.pickle\"\\n# svc_path.parent.mkdir(parents=True, exist_ok=True)\\n# \\n# with open(svc_path, \"wb\") as file:\\n# pickle.dump(clf, file)\\n# \\n# with open(svc_path, \"rb\") as file:\\n# loaded = pickle.load(file)\\n\\n# loaded.predict_proba(X_test_pca)', 'execution_count': 16}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# Fit the entire training sets\n", + "\n", + "def convert_to_labels(preds, i2c, k=3):\n", + " ans = []\n", + " ids = []\n", + " for p in preds:\n", + " idx = np.argsort(p)[::-1]\n", + " ids.append([i for i in idx[:k]])\n", + " ans.append([i2c[i] for i in idx[:k]])\n", + "\n", + " return ans, ids\n", + "\n", + "clf.fit(X_pca, y)\n", + "prediction_lists, percentage_lists = convert_to_labels(clf.predict_proba(X_test_pca), index2classname, k=4)\n", + "\n", + "# # Write to outputs\n", + "subm = pd.DataFrame(index=test.index)\n", + "subm['label'] = test.label.values\n", + "subm['pred1'] = [prediction_list[0] for prediction_list in prediction_lists]\n", + "subm['pred2'] = [prediction_list[1] for prediction_list in prediction_lists]\n", + "subm['pred3'] = [prediction_list[2] for prediction_list in prediction_lists]\n", + "subm['pred4'] = [prediction_list[3] for prediction_list in prediction_lists]\n", + "\n", + "pd.set_option('display.max_rows', None)\n", + "print(subm)\n", + "pd.reset_option('display.max_rows')\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': \"# Fit the entire training sets\\n\\ndef convert_to_labels(preds, i2c, k=3):\\n ans = []\\n ids = []\\n for p in preds:\\n idx = np.argsort(p)[::-1]\\n ids.append([i for i in idx[:k]])\\n ans.append([i2c[i] for i in idx[:k]])\\n\\n return ans, ids\\n\\nclf.fit(X_pca, y)\\nprediction_lists, percentage_lists = convert_to_labels(clf.predict_proba(X_test_pca), index2classname, k=4)\\n\\n# # Write to outputs\\nsubm = pd.DataFrame(index=test.index)\\nsubm['label'] = test.label.values\\nsubm['pred1'] = [prediction_list[0] for prediction_list in prediction_lists]\\nsubm['pred2'] = [prediction_list[1] for prediction_list in prediction_lists]\\nsubm['pred3'] = [prediction_list[2] for prediction_list in prediction_lists]\\nsubm['pred4'] = [prediction_list[3] for prediction_list in prediction_lists]\\n\\npd.set_option('display.max_rows', None)\\nprint(subm)\\npd.reset_option('display.max_rows')\", 'execution_count': 17}\n", + "DEBUG:papermill:msg_type: stream\n", + "DEBUG:papermill:content: {'name': 'stdout', 'text': ' label pred1 pred2 pred3 pred4\\nfilename \\nclassical_12.mp3 classical classical electronic pop rock\\nclassical_2.mp3 classical classical electronic pop rock\\nclassical_20.mp3 classical classical rock pop electronic\\nclassical_27.mp3 classical classical pop electronic rock\\nclassical_39.mp3 classical classical electronic rock pop\\nclassical_4.mp3 classical classical electronic pop rock\\nclassical_40.mp3 classical electronic rock classical pop\\nclassical_46.mp3 classical classical electronic pop rock\\nclassical_47.mp3 classical classical electronic pop rock\\nclassical_48.mp3 classical classical pop electronic rock\\nclassical_49.mp3 classical classical pop electronic rock\\nclassical_52.mp3 classical electronic pop rock classical\\nclassical_54.mp3 classical classical electronic pop rock\\nclassical_6.mp3 classical classical electronic pop rock\\nclassical_62.mp3 classical classical pop rock electronic\\nclassical_67.mp3 classical classical electronic pop rock\\nclassical_69.mp3 classical classical pop rock electronic\\nclassical_82.mp3 classical classical electronic pop rock\\nclassical_9.mp3 classical classical electronic pop rock\\nclassical_92.mp3 classical classical pop rock electronic\\nclassical_94.mp3 classical classical electronic pop rock\\nelectronic_11.mp3 electronic electronic rock pop classical\\nelectronic_20.mp3 electronic electronic pop rock classical\\nelectronic_21.mp3 electronic electronic pop rock classical\\nelectronic_3.mp3 electronic electronic pop classical rock\\nelectronic_35.mp3 electronic electronic rock pop classical\\nelectronic_36.mp3 electronic pop rock electronic classical\\nelectronic_38.mp3 electronic electronic pop classical rock\\nelectronic_44.mp3 electronic electronic rock pop classical\\nelectronic_49.mp3 electronic pop rock electronic classical\\nelectronic_55.mp3 electronic electronic rock pop classical\\nelectronic_59.mp3 electronic electronic rock pop classical\\nelectronic_61.mp3 electronic electronic rock pop classical\\nelectronic_62.mp3 electronic electronic pop rock classical\\nelectronic_63.mp3 electronic pop electronic rock classical\\nelectronic_81.mp3 electronic electronic rock pop classical\\npop_1.mp3 pop pop rock electronic classical\\npop_10.mp3 pop pop rock classical electronic\\npop_100.mp3 pop rock pop electronic classical\\npop_25.mp3 pop pop classical electronic rock\\npop_32.mp3 pop pop rock electronic classical\\npop_38.mp3 pop rock pop electronic classical\\npop_39.mp3 pop electronic rock pop classical\\npop_50.mp3 pop pop rock classical electronic\\npop_53.mp3 pop pop rock electronic classical\\npop_58.mp3 pop rock pop electronic classical\\npop_61.mp3 pop pop rock classical electronic\\npop_62.mp3 pop pop rock electronic classical\\npop_64.mp3 pop rock pop electronic classical\\npop_65.mp3 pop pop rock electronic classical\\npop_70.mp3 pop electronic pop classical rock\\npop_79.mp3 pop pop rock classical electronic\\npop_80.mp3 pop pop rock electronic classical\\npop_82.mp3 pop pop rock electronic classical\\npop_85.mp3 pop pop rock electronic classical\\npop_91.mp3 pop rock pop electronic classical\\npop_98.mp3 pop pop rock electronic classical\\nrock_18.mp3 rock rock pop electronic classical\\nrock_2.mp3 rock rock pop electronic classical\\nrock_23.mp3 rock rock pop electronic classical\\nrock_32.mp3 rock rock pop electronic classical\\nrock_45.mp3 rock rock pop electronic classical\\nrock_46.mp3 rock rock pop electronic classical\\nrock_48.mp3 rock pop rock electronic classical\\nrock_51.mp3 rock rock pop electronic classical\\nrock_52.mp3 rock rock pop electronic classical\\nrock_57.mp3 rock rock pop electronic classical\\nrock_6.mp3 rock rock pop electronic classical\\nrock_62.mp3 rock rock pop electronic classical\\nrock_63.mp3 rock pop rock electronic classical\\nrock_66.mp3 rock pop rock electronic classical\\nrock_73.mp3 rock electronic pop rock classical\\nrock_75.mp3 rock rock pop electronic classical\\nrock_78.mp3 rock rock pop electronic classical\\nrock_80.mp3 rock rock pop electronic classical\\nrock_85.mp3 rock rock pop electronic classical\\nrock_86.mp3 rock rock pop electronic classical\\nrock_88.mp3 rock rock pop electronic classical\\nrock_92.mp3 rock rock pop electronic classical\\nrock_93.mp3 rock pop rock electronic classical\\n'}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# output\n", + "OUTPUT_PATH.mkdir(parents=True, exist_ok=True)\n", + "\n", + "with open(OUTPUT_PATHS[\"clf\"], \"wb\") as file:\n", + " pickle.dump(clf, file)\n", + "subm.to_csv(OUTPUT_PATHS[\"submission\"], index=False)\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# output\\nOUTPUT_PATH.mkdir(parents=True, exist_ok=True)\\n\\nwith open(OUTPUT_PATHS[\"clf\"], \"wb\") as file:\\n pickle.dump(clf, file)\\nsubm.to_csv(OUTPUT_PATHS[\"submission\"], index=False)', 'execution_count': 18}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:papermill:Executing cell:\n", + "# def get_result() -> pd.DataFrame:\n", + "# \"\"\" Return the produced artefact of this notebook \"\"\"\n", + "# return result\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'busy'}\n", + "DEBUG:papermill:msg_type: execute_input\n", + "DEBUG:papermill:content: {'code': '# def get_result() -> pd.DataFrame:\\n# \"\"\" Return the produced artefact of this notebook \"\"\"\\n# return result', 'execution_count': 19}\n", + "DEBUG:papermill:msg_type: status\n", + "DEBUG:papermill:content: {'execution_state': 'idle'}\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): test.researchdata.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://test.researchdata.tuwien.ac.at:443 \"POST /api/records HTTP/1.1\" 201 2243\n", + "DEBUG:fairnb.api.invenio:create draft record response: <Response [201]>\n", + "{\"id\": \"fx913-1k105\", \"created\": \"2024-02-15T10:06:48.033919+00:00\", \"updated\": \"2024-02-15T10:06:48.058804+00:00\", \"links\": {\"self\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft\", \"self_html\": \"https://test.researchdata.tuwien.ac.at/uploads/fx913-1k105\", \"self_iiif_manifest\": \"https://test.researchdata.tuwien.ac.at/api/iiif/draft:fx913-1k105/manifest\", \"self_iiif_sequence\": \"https://test.researchdata.tuwien.ac.at/api/iiif/draft:fx913-1k105/sequence/default\", \"files\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files\", \"record\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105\", \"record_html\": \"https://test.researchdata.tuwien.ac.at/records/fx913-1k105\", \"publish\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/actions/publish\", \"review\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/review\", \"versions\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/versions\", \"access_links\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/access/links\", \"reserve_doi\": \"https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/pids/doi\"}, \"revision_id\": 4, \"parent\": {\"id\": \"zybg2-g7690\", \"access\": {\"owned_by\": [{\"user\": 102}], \"links\": []}, \"communities\": {}}, \"versions\": {\"is_latest\": false, \"is_latest_draft\": true, \"index\": 1}, \"is_published\": false, \"is_draft\": true, \"expires_at\": \"2024-02-15 10:06:48.033946\", \"pids\": {}, \"metadata\": {\"resource_type\": {\"id\": \"sound\", \"title\": {\"de\": \"Audio\", \"en\": \"Audio\"}}, \"creators\": [{\"person_or_org\": {\"type\": \"personal\", \"name\": \"Mahler, Lukas\", \"given_name\": \"Lukas\", \"family_name\": \"Mahler\", \"identifiers\": [{\"identifier\": \"0000-0002-8985-8139\", \"scheme\": \"orcid\"}]}, \"affiliations\": [{\"name\": \"Technical University of Vienna\"}]}], \"title\": \"DBREPO ISMIR test result artefact\", \"publication_date\": \"2022-01-01\"}, \"custom_fields\": {}, \"access\": {\"record\": \"public\", \"files\": \"public\", \"embargo\": {\"active\": false, \"reason\": null}, \"status\": \"metadata-only\"}, \"files\": {\"enabled\": true, \"order\": []}, \"status\": \"draft\", \"errors\": [{\"field\": \"metadata.publisher\", \"messages\": [\"Missing publisher field required for DOI registration.\"]}]}\n", "INFO:fairnb.api.invenio:Picked up 1 files\n", + "DEBUG:fairnb.api.invenio:Picked up files: [PosixPath('/home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle')]\n", "INFO:fairnb.api.invenio:Uploading 1 to https://test.researchdata.tuwien.ac.at\n", - "INFO:fairnb.api.invenio:Uploading /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/5_ml_model/output/ml_model.pickle as ml_model.pickle\n", - "INFO:fairnb.api.invenio:Finished upload of ml_model.pickle\n" + "INFO:fairnb.api.invenio:Uploading /home/lukas/Programming/uni/bachelorarbeit/fairnb/tmp/5_ml_model/output/ml_model.pickle as ml_model.pickle\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): test.researchdata.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://test.researchdata.tuwien.ac.at:443 \"POST /api/records/fx913-1k105/draft/files HTTP/1.1\" 201 663\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): test.researchdata.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://test.researchdata.tuwien.ac.at:443 \"PUT /api/records/fx913-1k105/draft/files/ml_model.pickle/content HTTP/1.1\" 200 496\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): test.researchdata.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://test.researchdata.tuwien.ac.at:443 \"POST /api/records/fx913-1k105/draft/files/ml_model.pickle/commit HTTP/1.1\" 200 None\n", + "INFO:fairnb.api.invenio:Finished upload of ml_model.pickle\n", + "DEBUG:fairnb.api.invenio:{'draft': {'enabled': True, 'links': {'self': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files'}, 'entries': [{'key': 'ml_model.pickle', 'created': '2024-02-15T10:06:48.416966+00:00', 'updated': '2024-02-15T10:06:48.420681+00:00', 'status': 'pending', 'metadata': None, 'links': {'self': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle', 'content': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/content', 'commit': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/commit'}}], 'default_preview': None, 'order': []}, 'data': {'key': 'ml_model.pickle', 'created': '2024-02-15T10:06:48.416966+00:00', 'updated': '2024-02-15T10:06:48.420681+00:00', 'status': 'pending', 'metadata': None, 'links': {'self': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle', 'content': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/content', 'commit': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/commit'}}, 'commit': {'key': 'ml_model.pickle', 'storage_class': 'L', 'checksum': 'md5:9f9c4d76ffce8fee1a849ca26974f73e', 'size': 129388, 'created': '2024-02-15T10:06:48.416966+00:00', 'updated': '2024-02-15T10:06:49.031790+00:00', 'status': 'completed', 'metadata': None, 'mimetype': 'application/octet-stream', 'version_id': '8e1152c0-d294-45da-85c6-c95447f4bd36', 'file_id': '5178fe82-b1a8-4aea-be49-c2159bcbc066', 'bucket_id': '412d68ff-5cb6-44ac-a08b-9a4f201e9578', 'links': {'self': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle', 'content': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/content', 'commit': 'https://test.researchdata.tuwien.ac.at/api/records/fx913-1k105/draft/files/ml_model.pickle/commit'}}}\n", + "DEBUG:git.cmd:Popen(['git', 'cat-file', '--batch-check'], cwd=/home/lukas/Programming/uni/bachelorarbeit/fairnb, universal_newlines=False, shell=None, istream=<valid stream>)\n", + "WARNING:fairnb.api.dbrepo:Re-authenticating due to (almost) expired token\n", + "DEBUG:urllib3.connectionpool:Resetting dropped connection: dbrepo1.ec.tuwien.ac.at\n", + "DEBUG:urllib3.util.retry:Incremented Retry for (url='/api/auth/realms/dbrepo/protocol/openid-connect/token'): Retry(total=0, connect=None, read=None, redirect=None, status=None)\n", + "WARNING:urllib3.connectionpool:Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x6ffd32b9f640>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=60)')': /api/auth/realms/dbrepo/protocol/openid-connect/token\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (2): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/auth/realms/dbrepo/protocol/openid-connect/token HTTP/1.1\" 200 4267\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/dac2a248f4bb95d8da4e8d45a0cedf3b+6107180fc3e2f9f637bad5cd9300d53fc6102bb4_7fc52b7c8b124bba999f205c8c4169ca HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/91/data/import HTTP/1.1\" 202 0\n", + "DEBUG:fairnb.api.dbrepo:<Response [202]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19/table/91/export HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/upload/files/ HTTP/1.1\" 201 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"PATCH /api/upload/files/1e31f6b86a640f4b9f6c760743132617+a4b74620c1c5d4c3c3eb16aba78e6de9c99c733c_b6d8ce23fa524eab8ed16ff219a30adf HTTP/1.1\" 204 0\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"POST /api/database/19/table/92/data/import HTTP/1.1\" 202 0\n", + "DEBUG:fairnb.api.dbrepo:<Response [202]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:git.cmd:Popen(['git', 'cat-file', '--batch-check'], cwd=/home/lukas/Programming/uni/bachelorarbeit/fairnb, universal_newlines=False, shell=None, istream=<valid stream>)\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n", + "DEBUG:urllib3.connectionpool:https://dbrepo1.ec.tuwien.ac.at:443 \"GET /api/database/19 HTTP/1.1\" 200 None\n", + "DEBUG:fairnb.api.dbrepo:<Response [200]>\n", + "DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): dbrepo1.ec.tuwien.ac.at:443\n" + ] + }, + { + "ename": "TusCommunicationError", + "evalue": "HTTPSConnectionPool(host='dbrepo1.ec.tuwien.ac.at', port=443): Max retries exceeded with url: /api/upload/files/ (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x6ffd20907790>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=None)'))", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mTimeoutError\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connection.py:203\u001B[0m, in \u001B[0;36mHTTPConnection._new_conn\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 202\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 203\u001B[0m sock \u001B[38;5;241m=\u001B[39m \u001B[43mconnection\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcreate_connection\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 204\u001B[0m \u001B[43m \u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_dns_host\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mport\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 205\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 206\u001B[0m \u001B[43m \u001B[49m\u001B[43msource_address\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msource_address\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 207\u001B[0m \u001B[43m \u001B[49m\u001B[43msocket_options\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msocket_options\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 208\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 209\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m socket\u001B[38;5;241m.\u001B[39mgaierror \u001B[38;5;28;01mas\u001B[39;00m e:\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/util/connection.py:85\u001B[0m, in \u001B[0;36mcreate_connection\u001B[0;34m(address, timeout, source_address, socket_options)\u001B[0m\n\u001B[1;32m 84\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m---> 85\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m err\n\u001B[1;32m 86\u001B[0m \u001B[38;5;28;01mfinally\u001B[39;00m:\n\u001B[1;32m 87\u001B[0m \u001B[38;5;66;03m# Break explicitly a reference cycle\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/util/connection.py:73\u001B[0m, in \u001B[0;36mcreate_connection\u001B[0;34m(address, timeout, source_address, socket_options)\u001B[0m\n\u001B[1;32m 72\u001B[0m sock\u001B[38;5;241m.\u001B[39mbind(source_address)\n\u001B[0;32m---> 73\u001B[0m \u001B[43msock\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconnect\u001B[49m\u001B[43m(\u001B[49m\u001B[43msa\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 74\u001B[0m \u001B[38;5;66;03m# Break explicitly a reference cycle\u001B[39;00m\n", + "\u001B[0;31mTimeoutError\u001B[0m: [Errno 110] Connection timed out", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001B[0;31mConnectTimeoutError\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:790\u001B[0m, in \u001B[0;36mHTTPConnectionPool.urlopen\u001B[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001B[0m\n\u001B[1;32m 789\u001B[0m \u001B[38;5;66;03m# Make the request on the HTTPConnection object\u001B[39;00m\n\u001B[0;32m--> 790\u001B[0m response \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_make_request\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 791\u001B[0m \u001B[43m \u001B[49m\u001B[43mconn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 792\u001B[0m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 793\u001B[0m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 794\u001B[0m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtimeout_obj\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 795\u001B[0m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 796\u001B[0m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 797\u001B[0m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 798\u001B[0m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mretries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 799\u001B[0m \u001B[43m \u001B[49m\u001B[43mresponse_conn\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mresponse_conn\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 800\u001B[0m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mpreload_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 801\u001B[0m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdecode_content\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 802\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mresponse_kw\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 803\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 805\u001B[0m \u001B[38;5;66;03m# Everything went great!\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:491\u001B[0m, in \u001B[0;36mHTTPConnectionPool._make_request\u001B[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001B[0m\n\u001B[1;32m 490\u001B[0m new_e \u001B[38;5;241m=\u001B[39m _wrap_proxy_error(new_e, conn\u001B[38;5;241m.\u001B[39mproxy\u001B[38;5;241m.\u001B[39mscheme)\n\u001B[0;32m--> 491\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m new_e\n\u001B[1;32m 493\u001B[0m \u001B[38;5;66;03m# conn.request() calls http.client.*.request, not the method in\u001B[39;00m\n\u001B[1;32m 494\u001B[0m \u001B[38;5;66;03m# urllib3.request. It also calls makefile (recv) on the socket.\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:467\u001B[0m, in \u001B[0;36mHTTPConnectionPool._make_request\u001B[0;34m(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)\u001B[0m\n\u001B[1;32m 466\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 467\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_validate_conn\u001B[49m\u001B[43m(\u001B[49m\u001B[43mconn\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 468\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m (SocketTimeout, BaseSSLError) \u001B[38;5;28;01mas\u001B[39;00m e:\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:1092\u001B[0m, in \u001B[0;36mHTTPSConnectionPool._validate_conn\u001B[0;34m(self, conn)\u001B[0m\n\u001B[1;32m 1091\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m conn\u001B[38;5;241m.\u001B[39mis_closed:\n\u001B[0;32m-> 1092\u001B[0m \u001B[43mconn\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconnect\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1094\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m conn\u001B[38;5;241m.\u001B[39mis_verified:\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connection.py:611\u001B[0m, in \u001B[0;36mHTTPSConnection.connect\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 610\u001B[0m sock: socket\u001B[38;5;241m.\u001B[39msocket \u001B[38;5;241m|\u001B[39m ssl\u001B[38;5;241m.\u001B[39mSSLSocket\n\u001B[0;32m--> 611\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39msock \u001B[38;5;241m=\u001B[39m sock \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_new_conn\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 612\u001B[0m server_hostname: \u001B[38;5;28mstr\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhost\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connection.py:212\u001B[0m, in \u001B[0;36mHTTPConnection._new_conn\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 211\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m SocketTimeout \u001B[38;5;28;01mas\u001B[39;00m e:\n\u001B[0;32m--> 212\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m ConnectTimeoutError(\n\u001B[1;32m 213\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[1;32m 214\u001B[0m \u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mConnection to \u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mhost\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m timed out. (connect timeout=\u001B[39m\u001B[38;5;132;01m{\u001B[39;00m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtimeout\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m)\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 215\u001B[0m ) \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01me\u001B[39;00m\n\u001B[1;32m 217\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mOSError\u001B[39;00m \u001B[38;5;28;01mas\u001B[39;00m e:\n", + "\u001B[0;31mConnectTimeoutError\u001B[0m: (<urllib3.connection.HTTPSConnection object at 0x6ffd20907790>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=None)')", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001B[0;31mMaxRetryError\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/adapters.py:486\u001B[0m, in \u001B[0;36mHTTPAdapter.send\u001B[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001B[0m\n\u001B[1;32m 485\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m--> 486\u001B[0m resp \u001B[38;5;241m=\u001B[39m \u001B[43mconn\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43murlopen\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 487\u001B[0m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mrequest\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 488\u001B[0m \u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 489\u001B[0m \u001B[43m \u001B[49m\u001B[43mbody\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mrequest\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbody\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 490\u001B[0m \u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mrequest\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mheaders\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 491\u001B[0m \u001B[43m \u001B[49m\u001B[43mredirect\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 492\u001B[0m \u001B[43m \u001B[49m\u001B[43massert_same_host\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 493\u001B[0m \u001B[43m \u001B[49m\u001B[43mpreload_content\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 494\u001B[0m \u001B[43m \u001B[49m\u001B[43mdecode_content\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 495\u001B[0m \u001B[43m \u001B[49m\u001B[43mretries\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmax_retries\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 496\u001B[0m \u001B[43m \u001B[49m\u001B[43mtimeout\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mtimeout\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 497\u001B[0m \u001B[43m \u001B[49m\u001B[43mchunked\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mchunked\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 498\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 500\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m (ProtocolError, \u001B[38;5;167;01mOSError\u001B[39;00m) \u001B[38;5;28;01mas\u001B[39;00m err:\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/connectionpool.py:844\u001B[0m, in \u001B[0;36mHTTPConnectionPool.urlopen\u001B[0;34m(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)\u001B[0m\n\u001B[1;32m 842\u001B[0m new_e \u001B[38;5;241m=\u001B[39m ProtocolError(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mConnection aborted.\u001B[39m\u001B[38;5;124m\"\u001B[39m, new_e)\n\u001B[0;32m--> 844\u001B[0m retries \u001B[38;5;241m=\u001B[39m \u001B[43mretries\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mincrement\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 845\u001B[0m \u001B[43m \u001B[49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43merror\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mnew_e\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m_pool\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43m_stacktrace\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43msys\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexc_info\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;241;43m2\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[1;32m 846\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 847\u001B[0m retries\u001B[38;5;241m.\u001B[39msleep()\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/urllib3/util/retry.py:515\u001B[0m, in \u001B[0;36mRetry.increment\u001B[0;34m(self, method, url, response, error, _pool, _stacktrace)\u001B[0m\n\u001B[1;32m 514\u001B[0m reason \u001B[38;5;241m=\u001B[39m error \u001B[38;5;129;01mor\u001B[39;00m ResponseError(cause)\n\u001B[0;32m--> 515\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m MaxRetryError(_pool, url, reason) \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01mreason\u001B[39;00m \u001B[38;5;66;03m# type: ignore[arg-type]\u001B[39;00m\n\u001B[1;32m 517\u001B[0m log\u001B[38;5;241m.\u001B[39mdebug(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mIncremented Retry for (url=\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;132;01m%s\u001B[39;00m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124m): \u001B[39m\u001B[38;5;132;01m%r\u001B[39;00m\u001B[38;5;124m\"\u001B[39m, url, new_retry)\n", + "\u001B[0;31mMaxRetryError\u001B[0m: HTTPSConnectionPool(host='dbrepo1.ec.tuwien.ac.at', port=443): Max retries exceeded with url: /api/upload/files/ (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x6ffd20907790>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=None)'))", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001B[0;31mConnectTimeout\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/tusclient/request.py:18\u001B[0m, in \u001B[0;36mcatch_requests_error.<locals>._wrapper\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 17\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[0;32m---> 18\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunc\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 19\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m requests\u001B[38;5;241m.\u001B[39mexceptions\u001B[38;5;241m.\u001B[39mRequestException \u001B[38;5;28;01mas\u001B[39;00m error:\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/tusclient/uploader/uploader.py:64\u001B[0m, in \u001B[0;36mUploader.create_url\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 59\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[1;32m 60\u001B[0m \u001B[38;5;124;03mReturn upload url.\u001B[39;00m\n\u001B[1;32m 61\u001B[0m \n\u001B[1;32m 62\u001B[0m \u001B[38;5;124;03mMakes request to tus server to create a new upload url for the required file upload.\u001B[39;00m\n\u001B[1;32m 63\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m---> 64\u001B[0m resp \u001B[38;5;241m=\u001B[39m \u001B[43mrequests\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mpost\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 65\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mclient\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mheaders\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_url_creation_headers\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 66\u001B[0m \u001B[43m \u001B[49m\u001B[43mverify\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mverify_tls_cert\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 67\u001B[0m url \u001B[38;5;241m=\u001B[39m resp\u001B[38;5;241m.\u001B[39mheaders\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mlocation\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/api.py:115\u001B[0m, in \u001B[0;36mpost\u001B[0;34m(url, data, json, **kwargs)\u001B[0m\n\u001B[1;32m 104\u001B[0m \u001B[38;5;250m\u001B[39m\u001B[38;5;124mr\u001B[39m\u001B[38;5;124;03m\"\"\"Sends a POST request.\u001B[39;00m\n\u001B[1;32m 105\u001B[0m \n\u001B[1;32m 106\u001B[0m \u001B[38;5;124;03m:param url: URL for the new :class:`Request` object.\u001B[39;00m\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 112\u001B[0m \u001B[38;5;124;03m:rtype: requests.Response\u001B[39;00m\n\u001B[1;32m 113\u001B[0m \u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[0;32m--> 115\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mpost\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdata\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mdata\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mjson\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mjson\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/api.py:59\u001B[0m, in \u001B[0;36mrequest\u001B[0;34m(method, url, **kwargs)\u001B[0m\n\u001B[1;32m 58\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m sessions\u001B[38;5;241m.\u001B[39mSession() \u001B[38;5;28;01mas\u001B[39;00m session:\n\u001B[0;32m---> 59\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43msession\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrequest\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmethod\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mmethod\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43murl\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43murl\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/sessions.py:589\u001B[0m, in \u001B[0;36mSession.request\u001B[0;34m(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)\u001B[0m\n\u001B[1;32m 588\u001B[0m send_kwargs\u001B[38;5;241m.\u001B[39mupdate(settings)\n\u001B[0;32m--> 589\u001B[0m resp \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprep\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43msend_kwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 591\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m resp\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/sessions.py:703\u001B[0m, in \u001B[0;36mSession.send\u001B[0;34m(self, request, **kwargs)\u001B[0m\n\u001B[1;32m 702\u001B[0m \u001B[38;5;66;03m# Send the request\u001B[39;00m\n\u001B[0;32m--> 703\u001B[0m r \u001B[38;5;241m=\u001B[39m \u001B[43madapter\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43msend\u001B[49m\u001B[43m(\u001B[49m\u001B[43mrequest\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 705\u001B[0m \u001B[38;5;66;03m# Total elapsed time of the request (approximately)\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/requests/adapters.py:507\u001B[0m, in \u001B[0;36mHTTPAdapter.send\u001B[0;34m(self, request, stream, timeout, verify, cert, proxies)\u001B[0m\n\u001B[1;32m 506\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(e\u001B[38;5;241m.\u001B[39mreason, NewConnectionError):\n\u001B[0;32m--> 507\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m ConnectTimeout(e, request\u001B[38;5;241m=\u001B[39mrequest)\n\u001B[1;32m 509\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28misinstance\u001B[39m(e\u001B[38;5;241m.\u001B[39mreason, ResponseError):\n", + "\u001B[0;31mConnectTimeout\u001B[0m: HTTPSConnectionPool(host='dbrepo1.ec.tuwien.ac.at', port=443): Max retries exceeded with url: /api/upload/files/ (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x6ffd20907790>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=None)'))", + "\nDuring handling of the above exception, another exception occurred:\n", + "\u001B[0;31mTusCommunicationError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[14], line 35\u001B[0m\n\u001B[1;32m 6\u001B[0m nb_config_ml \u001B[38;5;241m=\u001B[39m NbConfig(\n\u001B[1;32m 7\u001B[0m nb_location\u001B[38;5;241m=\u001B[39mNOTEBOOK_PATH \u001B[38;5;241m/\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m5_ml_model.ipynb\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 8\u001B[0m entities\u001B[38;5;241m=\u001B[39m[\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 31\u001B[0m ]\n\u001B[1;32m 32\u001B[0m )\n\u001B[1;32m 34\u001B[0m \u001B[38;5;66;03m# run ml\u001B[39;00m\n\u001B[0;32m---> 35\u001B[0m \u001B[43mexecutor\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mexecute\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config_ml\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43monly_local\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mONLY_LOCAL\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:47\u001B[0m, in \u001B[0;36mExecutor.execute\u001B[0;34m(cls, nb_config, require_download, only_local, **kwargs)\u001B[0m\n\u001B[1;32m 44\u001B[0m nb_config\u001B[38;5;241m.\u001B[39mended_at \u001B[38;5;241m=\u001B[39m ended_at\n\u001B[1;32m 46\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m only_local:\n\u001B[0;32m---> 47\u001B[0m \u001B[38;5;28;43mcls\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_entities\u001B[49m\u001B[43m(\u001B[49m\u001B[43mnb_config\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/executor.py:74\u001B[0m, in \u001B[0;36mExecutor.upload_entities\u001B[0;34m(nb_config)\u001B[0m\n\u001B[1;32m 69\u001B[0m \u001B[38;5;129m@staticmethod\u001B[39m\n\u001B[1;32m 70\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mupload_entities\u001B[39m(nb_config: NbConfig):\n\u001B[1;32m 71\u001B[0m \u001B[38;5;66;03m# load generated entity and upload it\u001B[39;00m\n\u001B[1;32m 72\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m entity \u001B[38;5;129;01min\u001B[39;00m nb_config\u001B[38;5;241m.\u001B[39mentities:\n\u001B[1;32m 73\u001B[0m \u001B[38;5;66;03m# use inspect to get path of caller\u001B[39;00m\n\u001B[0;32m---> 74\u001B[0m \u001B[43mentity\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 75\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mnb_location\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 76\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdependencies\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 77\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstarted_at\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 78\u001B[0m \u001B[43m \u001B[49m\u001B[43mnb_config\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mended_at\u001B[49m\n\u001B[1;32m 79\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/dbrepo_entity.py:90\u001B[0m, in \u001B[0;36mDbRepoEntity.upload\u001B[0;34m(self, executed_file, dependencies, start_time, end_time)\u001B[0m\n\u001B[1;32m 76\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtable_id \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mint\u001B[39m(table[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m\"\u001B[39m])\n\u001B[1;32m 78\u001B[0m metadata \u001B[38;5;241m=\u001B[39m EntityProvenance\u001B[38;5;241m.\u001B[39mnew(\n\u001B[1;32m 79\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mname,\n\u001B[1;32m 80\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdescription,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 87\u001B[0m ended_at\u001B[38;5;241m=\u001B[39mend_time\n\u001B[1;32m 88\u001B[0m )\n\u001B[0;32m---> 90\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_provenance\u001B[49m\u001B[43m(\u001B[49m\u001B[43mmetadata\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 91\u001B[0m df[\n\u001B[1;32m 92\u001B[0m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mentity_id\u001B[39m\u001B[38;5;124m\"\u001B[39m\n\u001B[1;32m 93\u001B[0m ] \u001B[38;5;241m=\u001B[39m (\n\u001B[1;32m 94\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmetadata\u001B[38;5;241m.\u001B[39mid\n\u001B[1;32m 95\u001B[0m ) \u001B[38;5;66;03m# update the -1 from above with the correct value as it is now known\u001B[39;00m\n\u001B[1;32m 96\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mupload_data(df)\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/entity/entity.py:120\u001B[0m, in \u001B[0;36mEntity.upload_provenance\u001B[0;34m(self, provenance)\u001B[0m\n\u001B[1;32m 117\u001B[0m dependency_table \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcreate_dependency_table_if_not_exists()\n\u001B[1;32m 118\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdependency_table_id \u001B[38;5;241m=\u001B[39m dependency_table[\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mid\u001B[39m\u001B[38;5;124m\"\u001B[39m]\n\u001B[0;32m--> 120\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdbrepo_connector\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mupload_data\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 121\u001B[0m \u001B[43m \u001B[49m\u001B[43mprovenance\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mto_frame\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdrop\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mid\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mstr\u001B[39;49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmetadata_table_id\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 122\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 124\u001B[0m df \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdbrepo_connector\u001B[38;5;241m.\u001B[39mdownload_table_as_df(\u001B[38;5;28mstr\u001B[39m(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmetadata_table_id))\n\u001B[1;32m 126\u001B[0m \u001B[38;5;66;03m# FIXME: create robust version of id retrieval, if possible\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/api/dbrepo.py:30\u001B[0m, in \u001B[0;36mre_auth.<locals>.inner\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 28\u001B[0m LOG\u001B[38;5;241m.\u001B[39mwarning(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mRe-authenticating due to (almost) expired refresh token\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m 29\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mauthenticate_keycloak()\n\u001B[0;32m---> 30\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mfunc\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/fairnb/api/dbrepo.py:258\u001B[0m, in \u001B[0;36mDBRepoConnector.upload_data\u001B[0;34m(self, dataframe, table_id)\u001B[0m\n\u001B[1;32m 248\u001B[0m dataframe\u001B[38;5;241m.\u001B[39mto_csv(\n\u001B[1;32m 249\u001B[0m string_io \u001B[38;5;241m:=\u001B[39m StringIO(),\n\u001B[1;32m 250\u001B[0m index\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mFalse\u001B[39;00m,\n\u001B[1;32m 251\u001B[0m quoting\u001B[38;5;241m=\u001B[39mcsv\u001B[38;5;241m.\u001B[39mQUOTE_ALL)\n\u001B[1;32m 253\u001B[0m uploader \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mtusclient\u001B[38;5;241m.\u001B[39muploader(\n\u001B[1;32m 254\u001B[0m file_stream\u001B[38;5;241m=\u001B[39mstring_io,\n\u001B[1;32m 255\u001B[0m chunk_size\u001B[38;5;241m=\u001B[39mCHUNK_SIZE,\n\u001B[1;32m 256\u001B[0m )\n\u001B[0;32m--> 258\u001B[0m upload_url \u001B[38;5;241m=\u001B[39m \u001B[43muploader\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcreate_url\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 259\u001B[0m upload_url \u001B[38;5;241m=\u001B[39m upload_url\u001B[38;5;241m.\u001B[39mreplace(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mhttp\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mhttps\u001B[39m\u001B[38;5;124m'\u001B[39m)\n\u001B[1;32m 260\u001B[0m uploader\u001B[38;5;241m.\u001B[39mset_url(upload_url) \u001B[38;5;66;03m# FIX: wrong location response\u001B[39;00m\n", + "File \u001B[0;32m~/Programming/uni/bachelorarbeit/fairnb/.venv/lib/python3.10/site-packages/tusclient/request.py:20\u001B[0m, in \u001B[0;36mcatch_requests_error.<locals>._wrapper\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 18\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m func(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m 19\u001B[0m \u001B[38;5;28;01mexcept\u001B[39;00m requests\u001B[38;5;241m.\u001B[39mexceptions\u001B[38;5;241m.\u001B[39mRequestException \u001B[38;5;28;01mas\u001B[39;00m error:\n\u001B[0;32m---> 20\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m TusCommunicationError(error)\n", + "\u001B[0;31mTusCommunicationError\u001B[0m: HTTPSConnectionPool(host='dbrepo1.ec.tuwien.ac.at', port=443): Max retries exceeded with url: /api/upload/files/ (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x6ffd20907790>, 'Connection to dbrepo1.ec.tuwien.ac.at timed out. (connect timeout=None)'))" ] } ], diff --git a/notebooks/standalone.ipynb b/notebooks/standalone.ipynb index c1b8f1655daef5ce8ce54ecae40ef75a74e6ffab..f9116a861183853662cf237f0abff91e67482ff1 100644 --- a/notebooks/standalone.ipynb +++ b/notebooks/standalone.ipynb @@ -2,18 +2,25 @@ "cells": [ { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "# Standalone Notebook\n", "\n", "Notebook containing the same functionality as main.ipynb, but it includes all steps in one notebook and does not spin up separate Jupyter Kernels and uploads the entities directly." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 61, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T17:23:27.929106758Z", + "start_time": "2024-02-15T17:23:27.398716975Z" + } + }, "outputs": [], "source": [ "import pickle\n", @@ -21,6 +28,9 @@ "from contextlib import contextmanager, redirect_stderr, redirect_stdout\n", "\n", "import logging\n", + "from datetime import datetime\n", + "\n", + "import seaborn as sns\n", "import librosa\n", "import numpy as np\n", "import pandas as pd\n", @@ -32,6 +42,7 @@ "from sklearn.model_selection import train_test_split, GridSearchCV\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.svm import SVC\n", + "from sklearn.metrics import confusion_matrix\n", "\n", "from fairnb.entity.dbrepo_entity import DbRepoEntity\n", "from fairnb.entity.invenio_entity import InvenioEntity\n", @@ -44,18 +55,18 @@ "import os\n", "from pathlib import Path\n", "from definitions import CONFIG_PATH" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:51:04.540021095Z", - "start_time": "2023-10-10T20:51:04.517646578Z" + "end_time": "2024-02-15T15:15:16.261447298Z", + "start_time": "2024-02-15T15:15:16.189201715Z" } - } - }, - { - "cell_type": "code", - "execution_count": 26, + }, "outputs": [], "source": [ "logging.basicConfig(\n", @@ -72,30 +83,32 @@ "\n", "NOTEBOOK_PATH = BASE_PATH / \"notebooks\"\n", "LOCAL_PATH = BASE_PATH / \"tmp\" / \"standalone\"\n", - "NB_LOCATION = NOTEBOOK_PATH / \"standalone.ipynb\"" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:51:06.316096074Z", - "start_time": "2023-10-10T20:51:06.194316265Z" - } - } + "NB_LOCATION = NOTEBOOK_PATH / \"standalone.ipynb\"\n", + "\n", + "started_at = datetime.now()" + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## 1. Audio Files\n", "\n", "Bundle the provided audio files (400, in MP3) in a tar, encrypt it using gzip and store it in the output folder." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T15:15:53.366720580Z", + "start_time": "2024-02-15T15:15:17.912905124Z" + } + }, "outputs": [], "source": [ "tar_path = LOCAL_PATH / \"emotifymusic.tar.gz\"\n", @@ -120,18 +133,18 @@ "\n", "with tarfile.open(tar_path, \"w:gz\") as file:\n", " file.add(flattened_dir_path, arcname=os.path.sep)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 6, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:38:05.628405202Z", - "start_time": "2023-10-10T20:37:48.721045776Z" + "end_time": "2024-02-15T15:15:53.422135188Z", + "start_time": "2024-02-15T15:15:53.410867059Z" } - } - }, - { - "cell_type": "code", - "execution_count": 4, + }, "outputs": [], "source": [ "if not ONLY_LOCAL:\n", @@ -150,33 +163,34 @@ " type=\"audio_tar\"\n", " )\n", " ],\n", - " dependencies=[]\n", + " dependencies=[],\n", + " started_at=started_at\n", " )\n", "\n", " executor.upload_entities(nb_config_audio_files)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:40:33.684566122Z", - "start_time": "2023-10-10T20:38:05.629351864Z" - } - } + ] }, { "cell_type": "markdown", + "metadata": { + "collapsed": false + }, "source": [ "## 2. Feature Extraction of Base audio Files from Invenio\n", "\n", "Load the audio files from the tar, and extract the MFCC features from them and store them in a dataframe." - ], - "metadata": { - "collapsed": false - } + ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T15:22:56.491700713Z", + "start_time": "2024-02-15T15:15:53.412008839Z" + } + }, "outputs": [], "source": [ "DEFAULT_SAMPLING_RATE = 22050\n", @@ -224,31 +238,31 @@ "dataframe_concat = dataframe_concat[columns]\n", "\n", "raw_features = dataframe_concat" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 10, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:01.473344364Z", - "start_time": "2023-10-10T20:40:33.726421123Z" + "end_time": "2024-02-15T15:42:52.379472642Z", + "start_time": "2024-02-15T15:42:51.690347535Z" } - } - }, - { - "cell_type": "code", - "execution_count": 6, + }, "outputs": [ { "data": { - "text/plain": "[<matplotlib.lines.Line2D at 0x7fabbd4d9480>]" + "text/plain": "[<matplotlib.lines.Line2D at 0x76f510f201c0>]" }, - "execution_count": 6, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/plain": "<Figure size 640x480 with 1 Axes>", - "image/png": "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YejevTvOOOMMrFy5EoccckiuqxkYZPqx0aVLFxQVFTm80Ddt2oSampqIapWfVFVV4bDDDsOKFStQU1ODpqYm7Ny505KGbdeamhpuu6d/I1Kk20LWR2tqarB582bL7y0tLdi+fTu1tyYDBgxAly5dsGLFCgDUtircdNNNeP311zF9+nT06tUr831Q44AoTUVFRcEvikRty2PkyJEAYOm7+di2JKjYKC0txTHHHINp06Zlvksmk5g2bRpGjRoVYc3yj927d2PlypXo3r07jjnmGJSUlFjaddmyZaitrc2066hRo7B48WLLJDB16lRUVFRgyJAhOa9/XOnfvz9qamosbdnQ0IAPPvjA0pY7d+7E/PnzM2neeecdJJPJzOA1atQozJo1C83NzZk0U6dOxaBBgw4K04Qq69atw7Zt29C9e3cA1LYyTNPETTfdhJdffhnvvPOOw/wV1DgwatQoSx7pNIU8Rru1LY+FCxcCgKXv5mXbRubGG2Oee+45s6yszJw8ebL52Wefmddff71ZVVVl8ZQmnNx+++3mjBkzzNWrV5vvvfeeOXbsWLNLly7m5s2bTdNMbUvs06eP+c4775jz5s0zR40aZY4aNSpzfXrr3FlnnWUuXLjQnDJlitm1a9eDcnvyrl27zAULFpgLFiwwAZi/+93vzAULFphffvmlaZqp7clVVVXmq6++ai5atMi88MILuduTjzrqKPODDz4wZ8+ebR566KGWLbQ7d+40q6urzSuuuMJcsmSJ+dxzz5nl5eUFv4VW1ra7du0yf/jDH5pz5swxV69ebb799tvm0UcfbR566KHm/v37M3lQ2/K58cYbzcrKSnPGjBmWLbJ79+7NpAliHEhvob3jjjvMpUuXmpMmTYp8C23YuLXtihUrzPvuu8+cN2+euXr1avPVV181BwwYYI4ePTqTR762LQkqAh555BGzT58+ZmlpqXn88cebc+fOjbpKseeSSy4xu3fvbpaWlpo9e/Y0L7nkEnPFihWZ3/ft22d+73vfMzt27GiWl5ebX/3qV82NGzda8lizZo15zjnnmG3btjW7dOli3n777WZzc3OubyVypk+fbgJw/LvqqqtM00xtUf75z39uVldXm2VlZeYZZ5xhLlu2zJLHtm3bzEsvvdRs3769WVFRYV5zzTXmrl27LGk++eQT8+STTzbLysrMnj17mg8++GCubjEyZG27d+9e86yzzjK7du1qlpSUmH379jWvu+46xyKF2pYPr10BmE888UQmTVDjwPTp080jjzzSLC0tNQcMGGApoxBxa9va2lpz9OjRZqdOncyysjJz4MCB5h133GGJo2Ka+dm2hmmaZu70NwRBEARBEOqQjwpBEARBELGFBBWCIAiCIGILCSoEQRAEQcQWElQIgiAIgogtJKgQBEEQBBFbSFAhCIIgCCK2kKBCEARBEERsIUGFIAiCIIjYQoIKQRAEQRCxhQQVgiAIgiBiCwkqBEEQBEHEFhJUCIIgCIKILf8foHcPE/DhJQEAAAAASUVORK5CYII=" + "image/png": "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" }, "metadata": {}, "output_type": "display_data" @@ -260,27 +274,27 @@ "# plt.plot(example_mfcc[4])\n", "\n", "# librosa.display.waveshow(audio)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:43:02.011511025Z", - "start_time": "2023-10-10T20:43:01.527557472Z" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## 3. Aggregate MFCC Features" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "## 3. Aggregate MFCC Features" + ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 17, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T16:56:51.619436944Z", + "start_time": "2024-02-15T16:56:14.821458276Z" + } + }, "outputs": [], "source": [ "# allow for direct entry if features were already created in earlier run\n", @@ -288,25 +302,25 @@ "\n", "if \"raw_features\" not in globals():\n", " raw_features = pd.read_csv(LOCAL_PATH / \"raw_features.csv\")" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 19, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:33.374674832Z", - "start_time": "2023-10-10T20:43:02.009164981Z" + "end_time": "2024-02-15T16:57:23.139681652Z", + "start_time": "2024-02-15T16:57:17.049446073Z" } - } - }, - { - "cell_type": "code", - "execution_count": 8, + }, "outputs": [ { "data": { - "text/plain": " filename label 0_min 0_max 0_mean \\\n0 classical_1.mp3 classical -530.784363 -163.308350 -302.203156 \n1 classical_10.mp3 classical -562.857849 -96.164795 -219.259018 \n2 classical_100.mp3 classical -536.237366 -61.608826 -177.804108 \n3 classical_11.mp3 classical -536.457458 -120.429665 -222.126312 \n4 classical_12.mp3 classical -562.675232 -148.133560 -270.975403 \n.. ... ... ... ... ... \n395 rock_95.mp3 rock -553.110107 -5.218835 -193.506042 \n396 rock_96.mp3 rock -541.236023 27.163332 -119.113991 \n397 rock_97.mp3 rock -518.494995 58.526745 -66.267746 \n398 rock_98.mp3 rock -518.643066 53.555115 -45.734516 \n399 rock_99.mp3 rock -544.703125 75.612129 -49.380943 \n\n 0_std 0_skew 1_min 1_max 1_mean ... 38_min \\\n0 51.142183 -0.468374 0.000000 178.751617 111.332344 ... -44.098068 \n1 53.561839 -0.772320 0.029056 259.632721 215.094193 ... -27.458416 \n2 83.381622 -2.587179 0.000000 190.475891 112.471710 ... -27.335688 \n3 76.246992 -2.402419 0.000000 159.425751 99.853645 ... -31.774948 \n4 52.191182 -0.366587 0.000000 194.264160 148.226654 ... -44.843815 \n.. ... ... ... ... ... ... ... \n395 76.869437 -0.201055 -89.948746 201.180450 111.724190 ... -27.043941 \n396 58.420684 -0.957699 -7.415959 210.492462 125.453690 ... -37.584858 \n397 65.635619 -0.898026 -58.824409 175.201355 99.288261 ... -29.620445 \n398 52.444200 -1.705641 0.000000 187.042725 96.440872 ... -26.967852 \n399 54.045627 -0.863093 -32.930649 191.735382 93.971237 ... -21.929403 \n\n 38_max 38_mean 38_std 38_skew 39_min 39_max 39_mean \\\n0 47.308060 -3.713503 16.553984 0.230691 -46.794479 49.352516 -2.282116 \n1 29.811110 0.484271 8.660648 -0.479016 -28.989979 27.533707 0.952658 \n2 27.610388 -0.333233 8.185075 0.208425 -38.095375 31.397882 -1.494916 \n3 31.500881 -3.781627 9.191043 0.260886 -22.667439 50.992905 1.600777 \n4 28.490644 -6.242015 10.546545 0.341848 -25.040886 46.878204 1.844494 \n.. ... ... ... ... ... ... ... \n395 22.451445 -7.234633 8.471853 0.753855 -24.712723 23.410387 -4.502398 \n396 28.087940 -9.704238 8.447620 0.112760 -38.147888 21.814400 -8.249507 \n397 26.325895 -5.722826 7.727378 0.207489 -29.497524 25.410656 -3.356615 \n398 8.714736 -9.511492 5.551820 -0.025604 -23.020082 13.948639 -2.664985 \n399 17.050608 -5.296690 5.894962 0.390705 -20.983192 29.312021 -0.321836 \n\n 39_std 39_skew \n0 15.285639 0.171462 \n1 10.477735 -0.185771 \n2 10.917299 0.020984 \n3 10.125545 0.595763 \n4 11.160392 0.503120 \n.. ... ... \n395 6.687983 0.238807 \n396 7.807756 0.071968 \n397 8.170526 0.160330 \n398 5.051498 -0.258407 \n399 6.571660 0.384794 \n\n[400 rows x 202 columns]", - "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>filename</th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>classical_1.mp3</td>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>...</td>\n <td>-44.098068</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n </tr>\n <tr>\n <th>1</th>\n <td>classical_10.mp3</td>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561839</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632721</td>\n <td>215.094193</td>\n <td>...</td>\n <td>-27.458416</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989979</td>\n <td>27.533707</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n </tr>\n <tr>\n <th>2</th>\n <td>classical_100.mp3</td>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>...</td>\n <td>-27.335688</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397882</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n </tr>\n <tr>\n <th>3</th>\n <td>classical_11.mp3</td>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>...</td>\n <td>-31.774948</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667439</td>\n <td>50.992905</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n </tr>\n <tr>\n <th>4</th>\n <td>classical_12.mp3</td>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>...</td>\n <td>-44.843815</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040886</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>395</th>\n <td>rock_95.mp3</td>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>...</td>\n <td>-27.043941</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687983</td>\n <td>0.238807</td>\n </tr>\n <tr>\n <th>396</th>\n <td>rock_96.mp3</td>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163332</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415959</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>...</td>\n <td>-37.584858</td>\n <td>28.087940</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814400</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n </tr>\n <tr>\n <th>397</th>\n <td>rock_97.mp3</td>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>...</td>\n <td>-29.620445</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410656</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n </tr>\n <tr>\n <th>398</th>\n <td>rock_98.mp3</td>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042725</td>\n <td>96.440872</td>\n <td>...</td>\n <td>-26.967852</td>\n <td>8.714736</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020082</td>\n <td>13.948639</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n </tr>\n <tr>\n <th>399</th>\n <td>rock_99.mp3</td>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930649</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>...</td>\n <td>-21.929403</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894962</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312021</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 202 columns</p>\n</div>" + "text/plain": " filename label 0_min 0_max 0_mean \\\n0 classical_1.mp3 classical -530.784363 -163.308350 -302.203156 \n1 classical_10.mp3 classical -562.857849 -96.164795 -219.259018 \n2 classical_100.mp3 classical -536.237366 -61.608826 -177.804108 \n3 classical_11.mp3 classical -536.457458 -120.429665 -222.126312 \n4 classical_12.mp3 classical -562.675232 -148.133560 -270.975403 \n.. ... ... ... ... ... \n395 rock_95.mp3 rock -553.110107 -5.218835 -193.506042 \n396 rock_96.mp3 rock -541.236023 27.163334 -119.113991 \n397 rock_97.mp3 rock -518.494995 58.526745 -66.267746 \n398 rock_98.mp3 rock -518.643066 53.555115 -45.734516 \n399 rock_99.mp3 rock -544.703125 75.612129 -49.380943 \n\n 0_std 0_skew 1_min 1_max 1_mean ... 38_min \\\n0 51.142183 -0.468374 0.000000 178.751617 111.332344 ... -44.098068 \n1 53.561838 -0.772320 0.029056 259.632690 215.094193 ... -27.458416 \n2 83.381622 -2.587179 0.000000 190.475891 112.471710 ... -27.335688 \n3 76.246992 -2.402419 0.000000 159.425751 99.853645 ... -31.774948 \n4 52.191182 -0.366587 0.000000 194.264160 148.226654 ... -44.843811 \n.. ... ... ... ... ... ... ... \n395 76.869437 -0.201055 -89.948746 201.180450 111.724190 ... -27.043941 \n396 58.420684 -0.957699 -7.415961 210.492462 125.453690 ... -37.584858 \n397 65.635619 -0.898026 -58.824409 175.201355 99.288261 ... -29.620445 \n398 52.444200 -1.705641 0.000000 187.042740 96.440872 ... -26.967848 \n399 54.045627 -0.863093 -32.930653 191.735382 93.971237 ... -21.929403 \n\n 38_max 38_mean 38_std 38_skew 39_min 39_max 39_mean \\\n0 47.308060 -3.713503 16.553984 0.230691 -46.794479 49.352516 -2.282116 \n1 29.811110 0.484271 8.660648 -0.479016 -28.989983 27.533710 0.952658 \n2 27.610388 -0.333233 8.185075 0.208425 -38.095375 31.397881 -1.494916 \n3 31.500881 -3.781627 9.191043 0.260886 -22.667440 50.992897 1.600777 \n4 28.490644 -6.242015 10.546545 0.341848 -25.040888 46.878204 1.844494 \n.. ... ... ... ... ... ... ... \n395 22.451445 -7.234633 8.471853 0.753855 -24.712723 23.410387 -4.502398 \n396 28.087936 -9.704238 8.447620 0.112760 -38.147888 21.814402 -8.249507 \n397 26.325895 -5.722826 7.727378 0.207489 -29.497524 25.410654 -3.356615 \n398 8.714737 -9.511492 5.551820 -0.025604 -23.020084 13.948638 -2.664985 \n399 17.050608 -5.296690 5.894963 0.390705 -20.983192 29.312023 -0.321836 \n\n 39_std 39_skew \n0 15.285639 0.171462 \n1 10.477735 -0.185771 \n2 10.917299 0.020984 \n3 10.125545 0.595763 \n4 11.160392 0.503120 \n.. ... ... \n395 6.687984 0.238807 \n396 7.807756 0.071968 \n397 8.170526 0.160330 \n398 5.051498 -0.258407 \n399 6.571660 0.384794 \n\n[400 rows x 202 columns]", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>filename</th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>classical_1.mp3</td>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>...</td>\n <td>-44.098068</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n </tr>\n <tr>\n <th>1</th>\n <td>classical_10.mp3</td>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561838</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632690</td>\n <td>215.094193</td>\n <td>...</td>\n <td>-27.458416</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989983</td>\n <td>27.533710</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n </tr>\n <tr>\n <th>2</th>\n <td>classical_100.mp3</td>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>...</td>\n <td>-27.335688</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397881</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n </tr>\n <tr>\n <th>3</th>\n <td>classical_11.mp3</td>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>...</td>\n <td>-31.774948</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667440</td>\n <td>50.992897</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n </tr>\n <tr>\n <th>4</th>\n <td>classical_12.mp3</td>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>...</td>\n <td>-44.843811</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040888</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>395</th>\n <td>rock_95.mp3</td>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>...</td>\n <td>-27.043941</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687984</td>\n <td>0.238807</td>\n </tr>\n <tr>\n <th>396</th>\n <td>rock_96.mp3</td>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163334</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415961</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>...</td>\n <td>-37.584858</td>\n <td>28.087936</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814402</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n </tr>\n <tr>\n <th>397</th>\n <td>rock_97.mp3</td>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>...</td>\n <td>-29.620445</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410654</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n </tr>\n <tr>\n <th>398</th>\n <td>rock_98.mp3</td>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042740</td>\n <td>96.440872</td>\n <td>...</td>\n <td>-26.967848</td>\n <td>8.714737</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020084</td>\n <td>13.948638</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n </tr>\n <tr>\n <th>399</th>\n <td>rock_99.mp3</td>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930653</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>...</td>\n <td>-21.929403</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894963</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312023</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 202 columns</p>\n</div>" }, - "execution_count": 8, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -328,41 +342,76 @@ "mfcc_merged.columns = pd.Index(one_level_cols)\n", "mfcc_merged = mfcc_merged.reset_index()\n", "mfcc_merged" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/plain": "<Axes: >" + }, + "execution_count": 79, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "text/plain": "<Figure size 640x480 with 2 Axes>", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from math import log\n", + "# mfcc_merged.corr()\n", + "sns.heatmap(mfcc_merged.iloc[:,range(4,80,5)].corr())\n", + "# (mfcc_merged[mfcc_merged[\"label\"] == \"rock\"].iloc[:,range(4, len(mfcc_merged.columns), 5)].plot)" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.339271068Z", - "start_time": "2023-10-10T20:43:33.447974674Z" + "end_time": "2024-02-15T17:31:28.463293796Z", + "start_time": "2024-02-15T17:31:27.732351621Z" } - } + }, + "execution_count": 79 }, { "cell_type": "markdown", - "source": [ - "## 4. Split the Features into Train and Test Set" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "## 4. Split the Features into Train and Test Set" + ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 82, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T18:18:21.329072619Z", + "start_time": "2024-02-15T18:18:21.282917798Z" + } + }, "outputs": [ { "data": { - "text/plain": " filename train\n0 classical_1.mp3 True\n1 classical_10.mp3 True\n2 classical_100.mp3 True\n3 classical_11.mp3 True\n4 classical_12.mp3 False\n.. ... ...\n395 rock_95.mp3 True\n396 rock_96.mp3 True\n397 rock_97.mp3 True\n398 rock_98.mp3 False\n399 rock_99.mp3 False\n\n[400 rows x 2 columns]", - "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>filename</th>\n <th>train</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>classical_1.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1</th>\n <td>classical_10.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2</th>\n <td>classical_100.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>3</th>\n <td>classical_11.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>4</th>\n <td>classical_12.mp3</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>395</th>\n <td>rock_95.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>396</th>\n <td>rock_96.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>397</th>\n <td>rock_97.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>398</th>\n <td>rock_98.mp3</td>\n <td>False</td>\n </tr>\n <tr>\n <th>399</th>\n <td>rock_99.mp3</td>\n <td>False</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 2 columns</p>\n</div>" + "text/plain": " filename train\n0 classical_1.mp3 True\n1 classical_10.mp3 True\n2 classical_100.mp3 True\n3 classical_11.mp3 True\n4 classical_12.mp3 True\n.. ... ...\n395 rock_95.mp3 True\n396 rock_96.mp3 True\n397 rock_97.mp3 True\n398 rock_98.mp3 True\n399 rock_99.mp3 True\n\n[400 rows x 2 columns]", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>filename</th>\n <th>train</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>0</th>\n <td>classical_1.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>1</th>\n <td>classical_10.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>2</th>\n <td>classical_100.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>3</th>\n <td>classical_11.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>4</th>\n <td>classical_12.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>395</th>\n <td>rock_95.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>396</th>\n <td>rock_96.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>397</th>\n <td>rock_97.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>398</th>\n <td>rock_98.mp3</td>\n <td>True</td>\n </tr>\n <tr>\n <th>399</th>\n <td>rock_99.mp3</td>\n <td>True</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 2 columns</p>\n</div>" }, - "execution_count": 9, + "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "features = mfcc_merged\n", - "train = features.sample(frac=0.8).sort_index()\n", + "train = features.sample(frac=0.8, random_state=11908553).sort_index()\n", "test = features.drop(train.index)\n", "\n", "split_true = pd.DataFrame({\n", @@ -378,34 +427,34 @@ " .sort_values(\"filename\") \\\n", " .reset_index(drop=True)\n", "split" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.483050623Z", - "start_time": "2023-10-10T20:43:37.341442870Z" - } - } + ] }, { "cell_type": "markdown", - "source": [ - "## 5: Machine Learning model training and evaluation" - ], "metadata": { "collapsed": false - } + }, + "source": [ + "## 5: Machine Learning model training and evaluation" + ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 83, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T18:18:54.467104154Z", + "start_time": "2024-02-15T18:18:54.375167891Z" + } + }, "outputs": [ { "data": { - "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_1.mp3 classical -530.784363 -163.308350 -302.203156 51.142183 \nclassical_10.mp3 classical -562.857849 -96.164795 -219.259018 53.561839 \nclassical_100.mp3 classical -536.237366 -61.608826 -177.804108 83.381622 \nclassical_11.mp3 classical -536.457458 -120.429665 -222.126312 76.246992 \nclassical_12.mp3 classical -562.675232 -148.133560 -270.975403 52.191182 \n... ... ... ... ... ... \nrock_95.mp3 rock -553.110107 -5.218835 -193.506042 76.869437 \nrock_96.mp3 rock -541.236023 27.163332 -119.113991 58.420684 \nrock_97.mp3 rock -518.494995 58.526745 -66.267746 65.635619 \nrock_98.mp3 rock -518.643066 53.555115 -45.734516 52.444200 \nrock_99.mp3 rock -544.703125 75.612129 -49.380943 54.045627 \n\n 0_skew 1_min 1_max 1_mean 1_std \\\nfilename \nclassical_1.mp3 -0.468374 0.000000 178.751617 111.332344 24.847562 \nclassical_10.mp3 -0.772320 0.029056 259.632721 215.094193 18.388131 \nclassical_100.mp3 -2.587179 0.000000 190.475891 112.471710 27.277553 \nclassical_11.mp3 -2.402419 0.000000 159.425751 99.853645 21.916948 \nclassical_12.mp3 -0.366587 0.000000 194.264160 148.226654 19.305008 \n... ... ... ... ... ... \nrock_95.mp3 -0.201055 -89.948746 201.180450 111.724190 36.463584 \nrock_96.mp3 -0.957699 -7.415959 210.492462 125.453690 31.908870 \nrock_97.mp3 -0.898026 -58.824409 175.201355 99.288261 25.158417 \nrock_98.mp3 -1.705641 0.000000 187.042725 96.440872 24.137702 \nrock_99.mp3 -0.863093 -32.930649 191.735382 93.971237 33.410221 \n\n ... 38_max 38_mean 38_std 38_skew 39_min \\\nfilename ... \nclassical_1.mp3 ... 47.308060 -3.713503 16.553984 0.230691 -46.794479 \nclassical_10.mp3 ... 29.811110 0.484271 8.660648 -0.479016 -28.989979 \nclassical_100.mp3 ... 27.610388 -0.333233 8.185075 0.208425 -38.095375 \nclassical_11.mp3 ... 31.500881 -3.781627 9.191043 0.260886 -22.667439 \nclassical_12.mp3 ... 28.490644 -6.242015 10.546545 0.341848 -25.040886 \n... ... ... ... ... ... ... \nrock_95.mp3 ... 22.451445 -7.234633 8.471853 0.753855 -24.712723 \nrock_96.mp3 ... 28.087940 -9.704238 8.447620 0.112760 -38.147888 \nrock_97.mp3 ... 26.325895 -5.722826 7.727378 0.207489 -29.497524 \nrock_98.mp3 ... 8.714736 -9.511492 5.551820 -0.025604 -23.020082 \nrock_99.mp3 ... 17.050608 -5.296690 5.894962 0.390705 -20.983192 \n\n 39_max 39_mean 39_std 39_skew train \nfilename \nclassical_1.mp3 49.352516 -2.282116 15.285639 0.171462 True \nclassical_10.mp3 27.533707 0.952658 10.477735 -0.185771 True \nclassical_100.mp3 31.397882 -1.494916 10.917299 0.020984 True \nclassical_11.mp3 50.992905 1.600777 10.125545 0.595763 True \nclassical_12.mp3 46.878204 1.844494 11.160392 0.503120 False \n... ... ... ... ... ... \nrock_95.mp3 23.410387 -4.502398 6.687983 0.238807 True \nrock_96.mp3 21.814400 -8.249507 7.807756 0.071968 True \nrock_97.mp3 25.410656 -3.356615 8.170526 0.160330 True \nrock_98.mp3 13.948639 -2.664985 5.051498 -0.258407 False \nrock_99.mp3 29.312021 -0.321836 6.571660 0.384794 False \n\n[400 rows x 202 columns]", - "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n <th>train</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_1.mp3</th>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>24.847562</td>\n <td>...</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_10.mp3</th>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561839</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632721</td>\n <td>215.094193</td>\n <td>18.388131</td>\n <td>...</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989979</td>\n <td>27.533707</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_100.mp3</th>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>27.277553</td>\n <td>...</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397882</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_11.mp3</th>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>21.916948</td>\n <td>...</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667439</td>\n <td>50.992905</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_12.mp3</th>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>19.305008</td>\n <td>...</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040886</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n <td>False</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_95.mp3</th>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>36.463584</td>\n <td>...</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687983</td>\n <td>0.238807</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_96.mp3</th>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163332</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415959</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>31.908870</td>\n <td>...</td>\n <td>28.087940</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814400</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_97.mp3</th>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>25.158417</td>\n <td>...</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410656</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_98.mp3</th>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042725</td>\n <td>96.440872</td>\n <td>24.137702</td>\n <td>...</td>\n <td>8.714736</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020082</td>\n <td>13.948639</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n <td>False</td>\n </tr>\n <tr>\n <th>rock_99.mp3</th>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930649</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>33.410221</td>\n <td>...</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894962</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312021</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n <td>False</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 202 columns</p>\n</div>" + "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_1.mp3 classical -530.784363 -163.308350 -302.203156 51.142183 \nclassical_10.mp3 classical -562.857849 -96.164795 -219.259018 53.561838 \nclassical_100.mp3 classical -536.237366 -61.608826 -177.804108 83.381622 \nclassical_11.mp3 classical -536.457458 -120.429665 -222.126312 76.246992 \nclassical_12.mp3 classical -562.675232 -148.133560 -270.975403 52.191182 \n... ... ... ... ... ... \nrock_95.mp3 rock -553.110107 -5.218835 -193.506042 76.869437 \nrock_96.mp3 rock -541.236023 27.163334 -119.113991 58.420684 \nrock_97.mp3 rock -518.494995 58.526745 -66.267746 65.635619 \nrock_98.mp3 rock -518.643066 53.555115 -45.734516 52.444200 \nrock_99.mp3 rock -544.703125 75.612129 -49.380943 54.045627 \n\n 0_skew 1_min 1_max 1_mean 1_std \\\nfilename \nclassical_1.mp3 -0.468374 0.000000 178.751617 111.332344 24.847563 \nclassical_10.mp3 -0.772320 0.029056 259.632690 215.094193 18.388131 \nclassical_100.mp3 -2.587179 0.000000 190.475891 112.471710 27.277553 \nclassical_11.mp3 -2.402419 0.000000 159.425751 99.853645 21.916949 \nclassical_12.mp3 -0.366587 0.000000 194.264160 148.226654 19.305008 \n... ... ... ... ... ... \nrock_95.mp3 -0.201055 -89.948746 201.180450 111.724190 36.463584 \nrock_96.mp3 -0.957699 -7.415961 210.492462 125.453690 31.908869 \nrock_97.mp3 -0.898026 -58.824409 175.201355 99.288261 25.158417 \nrock_98.mp3 -1.705641 0.000000 187.042740 96.440872 24.137702 \nrock_99.mp3 -0.863093 -32.930653 191.735382 93.971237 33.410220 \n\n ... 38_max 38_mean 38_std 38_skew 39_min \\\nfilename ... \nclassical_1.mp3 ... 47.308060 -3.713503 16.553984 0.230691 -46.794479 \nclassical_10.mp3 ... 29.811110 0.484271 8.660648 -0.479016 -28.989983 \nclassical_100.mp3 ... 27.610388 -0.333233 8.185075 0.208425 -38.095375 \nclassical_11.mp3 ... 31.500881 -3.781627 9.191043 0.260886 -22.667440 \nclassical_12.mp3 ... 28.490644 -6.242015 10.546545 0.341848 -25.040888 \n... ... ... ... ... ... ... \nrock_95.mp3 ... 22.451445 -7.234633 8.471853 0.753855 -24.712723 \nrock_96.mp3 ... 28.087936 -9.704238 8.447620 0.112760 -38.147888 \nrock_97.mp3 ... 26.325895 -5.722826 7.727378 0.207489 -29.497524 \nrock_98.mp3 ... 8.714737 -9.511492 5.551820 -0.025604 -23.020084 \nrock_99.mp3 ... 17.050608 -5.296690 5.894963 0.390705 -20.983192 \n\n 39_max 39_mean 39_std 39_skew train \nfilename \nclassical_1.mp3 49.352516 -2.282116 15.285639 0.171462 True \nclassical_10.mp3 27.533710 0.952658 10.477735 -0.185771 True \nclassical_100.mp3 31.397881 -1.494916 10.917299 0.020984 True \nclassical_11.mp3 50.992897 1.600777 10.125545 0.595763 True \nclassical_12.mp3 46.878204 1.844494 11.160392 0.503120 True \n... ... ... ... ... ... \nrock_95.mp3 23.410387 -4.502398 6.687984 0.238807 True \nrock_96.mp3 21.814402 -8.249507 7.807756 0.071968 True \nrock_97.mp3 25.410654 -3.356615 8.170526 0.160330 True \nrock_98.mp3 13.948638 -2.664985 5.051498 -0.258407 True \nrock_99.mp3 29.312023 -0.321836 6.571660 0.384794 True \n\n[400 rows x 202 columns]", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n <th>train</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_1.mp3</th>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>24.847563</td>\n <td>...</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_10.mp3</th>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561838</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632690</td>\n <td>215.094193</td>\n <td>18.388131</td>\n <td>...</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989983</td>\n <td>27.533710</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_100.mp3</th>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>27.277553</td>\n <td>...</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397881</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_11.mp3</th>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>21.916949</td>\n <td>...</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667440</td>\n <td>50.992897</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n <td>True</td>\n </tr>\n <tr>\n <th>classical_12.mp3</th>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>19.305008</td>\n <td>...</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040888</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n <td>True</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_95.mp3</th>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>36.463584</td>\n <td>...</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687984</td>\n <td>0.238807</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_96.mp3</th>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163334</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415961</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>31.908869</td>\n <td>...</td>\n <td>28.087936</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814402</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_97.mp3</th>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>25.158417</td>\n <td>...</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410654</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_98.mp3</th>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042740</td>\n <td>96.440872</td>\n <td>24.137702</td>\n <td>...</td>\n <td>8.714737</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020084</td>\n <td>13.948638</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n <td>True</td>\n </tr>\n <tr>\n <th>rock_99.mp3</th>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930653</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>33.410220</td>\n <td>...</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894963</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312023</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n <td>True</td>\n </tr>\n </tbody>\n</table>\n<p>400 rows × 202 columns</p>\n</div>" }, - "execution_count": 10, + "execution_count": 83, "metadata": {}, "output_type": "execute_result" } @@ -413,25 +462,25 @@ "source": [ "joined = pd.merge(features, split, on=\"filename\").set_index(\"filename\")\n", "joined" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 84, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.521919073Z", - "start_time": "2023-10-10T20:43:37.383043167Z" + "end_time": "2024-02-15T18:19:00.591215953Z", + "start_time": "2024-02-15T18:19:00.540580460Z" } - } - }, - { - "cell_type": "code", - "execution_count": 11, + }, "outputs": [ { "data": { - "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_1.mp3 classical -530.784363 -163.308350 -302.203156 51.142183 \nclassical_10.mp3 classical -562.857849 -96.164795 -219.259018 53.561839 \nclassical_100.mp3 classical -536.237366 -61.608826 -177.804108 83.381622 \nclassical_11.mp3 classical -536.457458 -120.429665 -222.126312 76.246992 \nclassical_13.mp3 classical -637.720642 -177.713959 -361.834045 71.310080 \n... ... ... ... ... ... \nrock_93.mp3 rock -570.466492 -26.067888 -302.483093 96.569376 \nrock_94.mp3 rock -531.794250 39.474583 -78.520462 51.256666 \nrock_95.mp3 rock -553.110107 -5.218835 -193.506042 76.869437 \nrock_96.mp3 rock -541.236023 27.163332 -119.113991 58.420684 \nrock_97.mp3 rock -518.494995 58.526745 -66.267746 65.635619 \n\n 0_skew 1_min 1_max 1_mean 1_std \\\nfilename \nclassical_1.mp3 -0.468374 0.000000 178.751617 111.332344 24.847562 \nclassical_10.mp3 -0.772320 0.029056 259.632721 215.094193 18.388131 \nclassical_100.mp3 -2.587179 0.000000 190.475891 112.471710 27.277553 \nclassical_11.mp3 -2.402419 0.000000 159.425751 99.853645 21.916948 \nclassical_13.mp3 0.008326 0.000000 257.162842 211.556549 20.347035 \n... ... ... ... ... ... \nrock_93.mp3 0.159026 -89.999680 211.889099 103.686363 40.373591 \nrock_94.mp3 -0.846796 -15.139265 177.080322 79.627045 33.557076 \nrock_95.mp3 -0.201055 -89.948746 201.180450 111.724190 36.463584 \nrock_96.mp3 -0.957699 -7.415959 210.492462 125.453690 31.908870 \nrock_97.mp3 -0.898026 -58.824409 175.201355 99.288261 25.158417 \n\n ... 38_min 38_max 38_mean 38_std 38_skew \\\nfilename ... \nclassical_1.mp3 ... -44.098068 47.308060 -3.713503 16.553984 0.230691 \nclassical_10.mp3 ... -27.458416 29.811110 0.484271 8.660648 -0.479016 \nclassical_100.mp3 ... -27.335688 27.610388 -0.333233 8.185075 0.208425 \nclassical_11.mp3 ... -31.774948 31.500881 -3.781627 9.191043 0.260886 \nclassical_13.mp3 ... -24.728806 18.424034 -0.275736 7.026148 -0.640964 \n... ... ... ... ... ... ... \nrock_93.mp3 ... -28.903784 35.712753 2.073339 10.995769 0.249798 \nrock_94.mp3 ... -34.662369 26.375679 -4.778466 6.754501 0.157858 \nrock_95.mp3 ... -27.043941 22.451445 -7.234633 8.471853 0.753855 \nrock_96.mp3 ... -37.584858 28.087940 -9.704238 8.447620 0.112760 \nrock_97.mp3 ... -29.620445 26.325895 -5.722826 7.727378 0.207489 \n\n 39_min 39_max 39_mean 39_std 39_skew \nfilename \nclassical_1.mp3 -46.794479 49.352516 -2.282116 15.285639 0.171462 \nclassical_10.mp3 -28.989979 27.533707 0.952658 10.477735 -0.185771 \nclassical_100.mp3 -38.095375 31.397882 -1.494916 10.917299 0.020984 \nclassical_11.mp3 -22.667439 50.992905 1.600777 10.125545 0.595763 \nclassical_13.mp3 -24.319565 18.439264 -2.147022 8.171929 0.009566 \n... ... ... ... ... ... \nrock_93.mp3 -30.178169 30.612564 -4.677735 8.877041 0.149639 \nrock_94.mp3 -22.063726 29.165359 1.443975 6.737420 -0.092049 \nrock_95.mp3 -24.712723 23.410387 -4.502398 6.687983 0.238807 \nrock_96.mp3 -38.147888 21.814400 -8.249507 7.807756 0.071968 \nrock_97.mp3 -29.497524 25.410656 -3.356615 8.170526 0.160330 \n\n[320 rows x 201 columns]", - "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_1.mp3</th>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>24.847562</td>\n <td>...</td>\n <td>-44.098068</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n </tr>\n <tr>\n <th>classical_10.mp3</th>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561839</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632721</td>\n <td>215.094193</td>\n <td>18.388131</td>\n <td>...</td>\n <td>-27.458416</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989979</td>\n <td>27.533707</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n </tr>\n <tr>\n <th>classical_100.mp3</th>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>27.277553</td>\n <td>...</td>\n <td>-27.335688</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397882</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n </tr>\n <tr>\n <th>classical_11.mp3</th>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>21.916948</td>\n <td>...</td>\n <td>-31.774948</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667439</td>\n <td>50.992905</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n </tr>\n <tr>\n <th>classical_13.mp3</th>\n <td>classical</td>\n <td>-637.720642</td>\n <td>-177.713959</td>\n <td>-361.834045</td>\n <td>71.310080</td>\n <td>0.008326</td>\n <td>0.000000</td>\n <td>257.162842</td>\n <td>211.556549</td>\n <td>20.347035</td>\n <td>...</td>\n <td>-24.728806</td>\n <td>18.424034</td>\n <td>-0.275736</td>\n <td>7.026148</td>\n <td>-0.640964</td>\n <td>-24.319565</td>\n <td>18.439264</td>\n <td>-2.147022</td>\n <td>8.171929</td>\n <td>0.009566</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_93.mp3</th>\n <td>rock</td>\n <td>-570.466492</td>\n <td>-26.067888</td>\n <td>-302.483093</td>\n <td>96.569376</td>\n <td>0.159026</td>\n <td>-89.999680</td>\n <td>211.889099</td>\n <td>103.686363</td>\n <td>40.373591</td>\n <td>...</td>\n <td>-28.903784</td>\n <td>35.712753</td>\n <td>2.073339</td>\n <td>10.995769</td>\n <td>0.249798</td>\n <td>-30.178169</td>\n <td>30.612564</td>\n <td>-4.677735</td>\n <td>8.877041</td>\n <td>0.149639</td>\n </tr>\n <tr>\n <th>rock_94.mp3</th>\n <td>rock</td>\n <td>-531.794250</td>\n <td>39.474583</td>\n <td>-78.520462</td>\n <td>51.256666</td>\n <td>-0.846796</td>\n <td>-15.139265</td>\n <td>177.080322</td>\n <td>79.627045</td>\n <td>33.557076</td>\n <td>...</td>\n <td>-34.662369</td>\n <td>26.375679</td>\n <td>-4.778466</td>\n <td>6.754501</td>\n <td>0.157858</td>\n <td>-22.063726</td>\n <td>29.165359</td>\n <td>1.443975</td>\n <td>6.737420</td>\n <td>-0.092049</td>\n </tr>\n <tr>\n <th>rock_95.mp3</th>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>36.463584</td>\n <td>...</td>\n <td>-27.043941</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687983</td>\n <td>0.238807</td>\n </tr>\n <tr>\n <th>rock_96.mp3</th>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163332</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415959</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>31.908870</td>\n <td>...</td>\n <td>-37.584858</td>\n <td>28.087940</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814400</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n </tr>\n <tr>\n <th>rock_97.mp3</th>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>25.158417</td>\n <td>...</td>\n <td>-29.620445</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410656</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n </tr>\n </tbody>\n</table>\n<p>320 rows × 201 columns</p>\n</div>" + "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_1.mp3 classical -530.784363 -163.308350 -302.203156 51.142183 \nclassical_10.mp3 classical -562.857849 -96.164795 -219.259018 53.561838 \nclassical_100.mp3 classical -536.237366 -61.608826 -177.804108 83.381622 \nclassical_11.mp3 classical -536.457458 -120.429665 -222.126312 76.246992 \nclassical_12.mp3 classical -562.675232 -148.133560 -270.975403 52.191182 \n... ... ... ... ... ... \nrock_95.mp3 rock -553.110107 -5.218835 -193.506042 76.869437 \nrock_96.mp3 rock -541.236023 27.163334 -119.113991 58.420684 \nrock_97.mp3 rock -518.494995 58.526745 -66.267746 65.635619 \nrock_98.mp3 rock -518.643066 53.555115 -45.734516 52.444200 \nrock_99.mp3 rock -544.703125 75.612129 -49.380943 54.045627 \n\n 0_skew 1_min 1_max 1_mean 1_std \\\nfilename \nclassical_1.mp3 -0.468374 0.000000 178.751617 111.332344 24.847563 \nclassical_10.mp3 -0.772320 0.029056 259.632690 215.094193 18.388131 \nclassical_100.mp3 -2.587179 0.000000 190.475891 112.471710 27.277553 \nclassical_11.mp3 -2.402419 0.000000 159.425751 99.853645 21.916949 \nclassical_12.mp3 -0.366587 0.000000 194.264160 148.226654 19.305008 \n... ... ... ... ... ... \nrock_95.mp3 -0.201055 -89.948746 201.180450 111.724190 36.463584 \nrock_96.mp3 -0.957699 -7.415961 210.492462 125.453690 31.908869 \nrock_97.mp3 -0.898026 -58.824409 175.201355 99.288261 25.158417 \nrock_98.mp3 -1.705641 0.000000 187.042740 96.440872 24.137702 \nrock_99.mp3 -0.863093 -32.930653 191.735382 93.971237 33.410220 \n\n ... 38_min 38_max 38_mean 38_std 38_skew \\\nfilename ... \nclassical_1.mp3 ... -44.098068 47.308060 -3.713503 16.553984 0.230691 \nclassical_10.mp3 ... -27.458416 29.811110 0.484271 8.660648 -0.479016 \nclassical_100.mp3 ... -27.335688 27.610388 -0.333233 8.185075 0.208425 \nclassical_11.mp3 ... -31.774948 31.500881 -3.781627 9.191043 0.260886 \nclassical_12.mp3 ... -44.843811 28.490644 -6.242015 10.546545 0.341848 \n... ... ... ... ... ... ... \nrock_95.mp3 ... -27.043941 22.451445 -7.234633 8.471853 0.753855 \nrock_96.mp3 ... -37.584858 28.087936 -9.704238 8.447620 0.112760 \nrock_97.mp3 ... -29.620445 26.325895 -5.722826 7.727378 0.207489 \nrock_98.mp3 ... -26.967848 8.714737 -9.511492 5.551820 -0.025604 \nrock_99.mp3 ... -21.929403 17.050608 -5.296690 5.894963 0.390705 \n\n 39_min 39_max 39_mean 39_std 39_skew \nfilename \nclassical_1.mp3 -46.794479 49.352516 -2.282116 15.285639 0.171462 \nclassical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \nclassical_100.mp3 -38.095375 31.397881 -1.494916 10.917299 0.020984 \nclassical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \nclassical_12.mp3 -25.040888 46.878204 1.844494 11.160392 0.503120 \n... ... ... ... ... ... \nrock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \nrock_96.mp3 -38.147888 21.814402 -8.249507 7.807756 0.071968 \nrock_97.mp3 -29.497524 25.410654 -3.356615 8.170526 0.160330 \nrock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \nrock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \n\n[320 rows x 201 columns]", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_1.mp3</th>\n <td>classical</td>\n <td>-530.784363</td>\n <td>-163.308350</td>\n <td>-302.203156</td>\n <td>51.142183</td>\n <td>-0.468374</td>\n <td>0.000000</td>\n <td>178.751617</td>\n <td>111.332344</td>\n <td>24.847563</td>\n <td>...</td>\n <td>-44.098068</td>\n <td>47.308060</td>\n <td>-3.713503</td>\n <td>16.553984</td>\n <td>0.230691</td>\n <td>-46.794479</td>\n <td>49.352516</td>\n <td>-2.282116</td>\n <td>15.285639</td>\n <td>0.171462</td>\n </tr>\n <tr>\n <th>classical_10.mp3</th>\n <td>classical</td>\n <td>-562.857849</td>\n <td>-96.164795</td>\n <td>-219.259018</td>\n <td>53.561838</td>\n <td>-0.772320</td>\n <td>0.029056</td>\n <td>259.632690</td>\n <td>215.094193</td>\n <td>18.388131</td>\n <td>...</td>\n <td>-27.458416</td>\n <td>29.811110</td>\n <td>0.484271</td>\n <td>8.660648</td>\n <td>-0.479016</td>\n <td>-28.989983</td>\n <td>27.533710</td>\n <td>0.952658</td>\n <td>10.477735</td>\n <td>-0.185771</td>\n </tr>\n <tr>\n <th>classical_100.mp3</th>\n <td>classical</td>\n <td>-536.237366</td>\n <td>-61.608826</td>\n <td>-177.804108</td>\n <td>83.381622</td>\n <td>-2.587179</td>\n <td>0.000000</td>\n <td>190.475891</td>\n <td>112.471710</td>\n <td>27.277553</td>\n <td>...</td>\n <td>-27.335688</td>\n <td>27.610388</td>\n <td>-0.333233</td>\n <td>8.185075</td>\n <td>0.208425</td>\n <td>-38.095375</td>\n <td>31.397881</td>\n <td>-1.494916</td>\n <td>10.917299</td>\n <td>0.020984</td>\n </tr>\n <tr>\n <th>classical_11.mp3</th>\n <td>classical</td>\n <td>-536.457458</td>\n <td>-120.429665</td>\n <td>-222.126312</td>\n <td>76.246992</td>\n <td>-2.402419</td>\n <td>0.000000</td>\n <td>159.425751</td>\n <td>99.853645</td>\n <td>21.916949</td>\n <td>...</td>\n <td>-31.774948</td>\n <td>31.500881</td>\n <td>-3.781627</td>\n <td>9.191043</td>\n <td>0.260886</td>\n <td>-22.667440</td>\n <td>50.992897</td>\n <td>1.600777</td>\n <td>10.125545</td>\n <td>0.595763</td>\n </tr>\n <tr>\n <th>classical_12.mp3</th>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>19.305008</td>\n <td>...</td>\n <td>-44.843811</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040888</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_95.mp3</th>\n <td>rock</td>\n <td>-553.110107</td>\n <td>-5.218835</td>\n <td>-193.506042</td>\n <td>76.869437</td>\n <td>-0.201055</td>\n <td>-89.948746</td>\n <td>201.180450</td>\n <td>111.724190</td>\n <td>36.463584</td>\n <td>...</td>\n <td>-27.043941</td>\n <td>22.451445</td>\n <td>-7.234633</td>\n <td>8.471853</td>\n <td>0.753855</td>\n <td>-24.712723</td>\n <td>23.410387</td>\n <td>-4.502398</td>\n <td>6.687984</td>\n <td>0.238807</td>\n </tr>\n <tr>\n <th>rock_96.mp3</th>\n <td>rock</td>\n <td>-541.236023</td>\n <td>27.163334</td>\n <td>-119.113991</td>\n <td>58.420684</td>\n <td>-0.957699</td>\n <td>-7.415961</td>\n <td>210.492462</td>\n <td>125.453690</td>\n <td>31.908869</td>\n <td>...</td>\n <td>-37.584858</td>\n <td>28.087936</td>\n <td>-9.704238</td>\n <td>8.447620</td>\n <td>0.112760</td>\n <td>-38.147888</td>\n <td>21.814402</td>\n <td>-8.249507</td>\n <td>7.807756</td>\n <td>0.071968</td>\n </tr>\n <tr>\n <th>rock_97.mp3</th>\n <td>rock</td>\n <td>-518.494995</td>\n <td>58.526745</td>\n <td>-66.267746</td>\n <td>65.635619</td>\n <td>-0.898026</td>\n <td>-58.824409</td>\n <td>175.201355</td>\n <td>99.288261</td>\n <td>25.158417</td>\n <td>...</td>\n <td>-29.620445</td>\n <td>26.325895</td>\n <td>-5.722826</td>\n <td>7.727378</td>\n <td>0.207489</td>\n <td>-29.497524</td>\n <td>25.410654</td>\n <td>-3.356615</td>\n <td>8.170526</td>\n <td>0.160330</td>\n </tr>\n <tr>\n <th>rock_98.mp3</th>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042740</td>\n <td>96.440872</td>\n <td>24.137702</td>\n <td>...</td>\n <td>-26.967848</td>\n <td>8.714737</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020084</td>\n <td>13.948638</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n </tr>\n <tr>\n <th>rock_99.mp3</th>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930653</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>33.410220</td>\n <td>...</td>\n <td>-21.929403</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894963</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312023</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n </tr>\n </tbody>\n</table>\n<p>320 rows × 201 columns</p>\n</div>" }, - "execution_count": 11, + "execution_count": 84, "metadata": {}, "output_type": "execute_result" } @@ -439,25 +488,25 @@ "source": [ "train: DataFrame = joined[joined[\"train\"] == True].drop(\"train\", axis=1)\n", "train" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 85, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.523494609Z", - "start_time": "2023-10-10T20:43:37.426426832Z" + "end_time": "2024-02-15T18:19:05.778658012Z", + "start_time": "2024-02-15T18:19:05.712928730Z" } - } - }, - { - "cell_type": "code", - "execution_count": 12, + }, "outputs": [ { "data": { - "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_12.mp3 classical -562.675232 -148.133560 -270.975403 52.191182 \nclassical_18.mp3 classical -570.243713 -188.959915 -287.521362 35.322711 \nclassical_19.mp3 classical -543.642334 -106.038223 -216.909943 61.317534 \nclassical_2.mp3 classical -549.406494 -192.532059 -293.008972 27.207027 \nclassical_22.mp3 classical -541.936157 -226.866425 -335.226593 50.647623 \n... ... ... ... ... ... \nrock_82.mp3 rock -544.772827 -57.477421 -285.930237 81.922620 \nrock_84.mp3 rock -553.272583 33.457363 -112.009064 65.035953 \nrock_9.mp3 rock -551.421570 43.786930 -97.513893 78.041649 \nrock_98.mp3 rock -518.643066 53.555115 -45.734516 52.444200 \nrock_99.mp3 rock -544.703125 75.612129 -49.380943 54.045627 \n\n 0_skew 1_min 1_max 1_mean 1_std ... \\\nfilename ... \nclassical_12.mp3 -0.366587 0.000000 194.264160 148.226654 19.305008 ... \nclassical_18.mp3 -0.559489 0.714611 243.072388 207.617828 17.594885 ... \nclassical_19.mp3 -3.473125 0.000000 151.947662 93.405411 22.029233 ... \nclassical_2.mp3 -0.426848 0.000000 231.037369 198.662506 14.957660 ... \nclassical_22.mp3 -0.545184 0.000000 176.146393 133.592239 17.983436 ... \n... ... ... ... ... ... ... \nrock_82.mp3 0.506014 -83.866180 177.183060 105.448738 35.660641 ... \nrock_84.mp3 -0.535031 -6.800635 195.284622 105.075165 32.223748 ... \nrock_9.mp3 -0.795955 -39.516315 157.909393 76.734253 26.308925 ... \nrock_98.mp3 -1.705641 0.000000 187.042725 96.440872 24.137702 ... \nrock_99.mp3 -0.863093 -32.930649 191.735382 93.971237 33.410221 ... \n\n 38_min 38_max 38_mean 38_std 38_skew \\\nfilename \nclassical_12.mp3 -44.843815 28.490644 -6.242015 10.546545 0.341848 \nclassical_18.mp3 -21.249855 22.553038 -1.832725 6.320877 0.191670 \nclassical_19.mp3 -27.029383 30.682745 3.342259 8.420860 0.043171 \nclassical_2.mp3 -25.912935 24.293318 0.746096 8.240027 -0.022513 \nclassical_22.mp3 -29.110729 27.870188 -0.569063 8.987627 0.238096 \n... ... ... ... ... ... \nrock_82.mp3 -31.321337 29.233349 -2.918372 8.329695 0.080753 \nrock_84.mp3 -28.911598 27.619001 -5.295718 6.987569 0.206062 \nrock_9.mp3 -38.184456 27.128735 -2.393547 7.633860 0.357629 \nrock_98.mp3 -26.967852 8.714736 -9.511492 5.551820 -0.025604 \nrock_99.mp3 -21.929403 17.050608 -5.296690 5.894962 0.390705 \n\n 39_min 39_max 39_mean 39_std 39_skew \nfilename \nclassical_12.mp3 -25.040886 46.878204 1.844494 11.160392 0.503120 \nclassical_18.mp3 -17.271332 23.015621 -0.735780 6.175781 0.406759 \nclassical_19.mp3 -25.900253 36.766388 2.389575 10.099726 0.140336 \nclassical_2.mp3 -18.561390 23.484133 3.115819 7.220346 0.242364 \nclassical_22.mp3 -18.535694 41.965923 3.331284 9.619688 0.652851 \n... ... ... ... ... ... \nrock_82.mp3 -30.654737 29.915272 -2.396760 7.691486 0.180867 \nrock_84.mp3 -21.169910 31.117376 -0.642526 6.866395 0.398194 \nrock_9.mp3 -27.389053 24.929546 -1.376936 5.924625 -0.053863 \nrock_98.mp3 -23.020082 13.948639 -2.664985 5.051498 -0.258407 \nrock_99.mp3 -20.983192 29.312021 -0.321836 6.571660 0.384794 \n\n[80 rows x 201 columns]", - "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_12.mp3</th>\n <td>classical</td>\n <td>-562.675232</td>\n <td>-148.133560</td>\n <td>-270.975403</td>\n <td>52.191182</td>\n <td>-0.366587</td>\n <td>0.000000</td>\n <td>194.264160</td>\n <td>148.226654</td>\n <td>19.305008</td>\n <td>...</td>\n <td>-44.843815</td>\n <td>28.490644</td>\n <td>-6.242015</td>\n <td>10.546545</td>\n <td>0.341848</td>\n <td>-25.040886</td>\n <td>46.878204</td>\n <td>1.844494</td>\n <td>11.160392</td>\n <td>0.503120</td>\n </tr>\n <tr>\n <th>classical_18.mp3</th>\n <td>classical</td>\n <td>-570.243713</td>\n <td>-188.959915</td>\n <td>-287.521362</td>\n <td>35.322711</td>\n <td>-0.559489</td>\n <td>0.714611</td>\n <td>243.072388</td>\n <td>207.617828</td>\n <td>17.594885</td>\n <td>...</td>\n <td>-21.249855</td>\n <td>22.553038</td>\n <td>-1.832725</td>\n <td>6.320877</td>\n <td>0.191670</td>\n <td>-17.271332</td>\n <td>23.015621</td>\n <td>-0.735780</td>\n <td>6.175781</td>\n <td>0.406759</td>\n </tr>\n <tr>\n <th>classical_19.mp3</th>\n <td>classical</td>\n <td>-543.642334</td>\n <td>-106.038223</td>\n <td>-216.909943</td>\n <td>61.317534</td>\n <td>-3.473125</td>\n <td>0.000000</td>\n <td>151.947662</td>\n <td>93.405411</td>\n <td>22.029233</td>\n <td>...</td>\n <td>-27.029383</td>\n <td>30.682745</td>\n <td>3.342259</td>\n <td>8.420860</td>\n <td>0.043171</td>\n <td>-25.900253</td>\n <td>36.766388</td>\n <td>2.389575</td>\n <td>10.099726</td>\n <td>0.140336</td>\n </tr>\n <tr>\n <th>classical_2.mp3</th>\n <td>classical</td>\n <td>-549.406494</td>\n <td>-192.532059</td>\n <td>-293.008972</td>\n <td>27.207027</td>\n <td>-0.426848</td>\n <td>0.000000</td>\n <td>231.037369</td>\n <td>198.662506</td>\n <td>14.957660</td>\n <td>...</td>\n <td>-25.912935</td>\n <td>24.293318</td>\n <td>0.746096</td>\n <td>8.240027</td>\n <td>-0.022513</td>\n <td>-18.561390</td>\n <td>23.484133</td>\n <td>3.115819</td>\n <td>7.220346</td>\n <td>0.242364</td>\n </tr>\n <tr>\n <th>classical_22.mp3</th>\n <td>classical</td>\n <td>-541.936157</td>\n <td>-226.866425</td>\n <td>-335.226593</td>\n <td>50.647623</td>\n <td>-0.545184</td>\n <td>0.000000</td>\n <td>176.146393</td>\n <td>133.592239</td>\n <td>17.983436</td>\n <td>...</td>\n <td>-29.110729</td>\n <td>27.870188</td>\n <td>-0.569063</td>\n <td>8.987627</td>\n <td>0.238096</td>\n <td>-18.535694</td>\n <td>41.965923</td>\n <td>3.331284</td>\n <td>9.619688</td>\n <td>0.652851</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_82.mp3</th>\n <td>rock</td>\n <td>-544.772827</td>\n <td>-57.477421</td>\n <td>-285.930237</td>\n <td>81.922620</td>\n <td>0.506014</td>\n <td>-83.866180</td>\n <td>177.183060</td>\n <td>105.448738</td>\n <td>35.660641</td>\n <td>...</td>\n <td>-31.321337</td>\n <td>29.233349</td>\n <td>-2.918372</td>\n <td>8.329695</td>\n <td>0.080753</td>\n <td>-30.654737</td>\n <td>29.915272</td>\n <td>-2.396760</td>\n <td>7.691486</td>\n <td>0.180867</td>\n </tr>\n <tr>\n <th>rock_84.mp3</th>\n <td>rock</td>\n <td>-553.272583</td>\n <td>33.457363</td>\n <td>-112.009064</td>\n <td>65.035953</td>\n <td>-0.535031</td>\n <td>-6.800635</td>\n <td>195.284622</td>\n <td>105.075165</td>\n <td>32.223748</td>\n <td>...</td>\n <td>-28.911598</td>\n <td>27.619001</td>\n <td>-5.295718</td>\n <td>6.987569</td>\n <td>0.206062</td>\n <td>-21.169910</td>\n <td>31.117376</td>\n <td>-0.642526</td>\n <td>6.866395</td>\n <td>0.398194</td>\n </tr>\n <tr>\n <th>rock_9.mp3</th>\n <td>rock</td>\n <td>-551.421570</td>\n <td>43.786930</td>\n <td>-97.513893</td>\n <td>78.041649</td>\n <td>-0.795955</td>\n <td>-39.516315</td>\n <td>157.909393</td>\n <td>76.734253</td>\n <td>26.308925</td>\n <td>...</td>\n <td>-38.184456</td>\n <td>27.128735</td>\n <td>-2.393547</td>\n <td>7.633860</td>\n <td>0.357629</td>\n <td>-27.389053</td>\n <td>24.929546</td>\n <td>-1.376936</td>\n <td>5.924625</td>\n <td>-0.053863</td>\n </tr>\n <tr>\n <th>rock_98.mp3</th>\n <td>rock</td>\n <td>-518.643066</td>\n <td>53.555115</td>\n <td>-45.734516</td>\n <td>52.444200</td>\n <td>-1.705641</td>\n <td>0.000000</td>\n <td>187.042725</td>\n <td>96.440872</td>\n <td>24.137702</td>\n <td>...</td>\n <td>-26.967852</td>\n <td>8.714736</td>\n <td>-9.511492</td>\n <td>5.551820</td>\n <td>-0.025604</td>\n <td>-23.020082</td>\n <td>13.948639</td>\n <td>-2.664985</td>\n <td>5.051498</td>\n <td>-0.258407</td>\n </tr>\n <tr>\n <th>rock_99.mp3</th>\n <td>rock</td>\n <td>-544.703125</td>\n <td>75.612129</td>\n <td>-49.380943</td>\n <td>54.045627</td>\n <td>-0.863093</td>\n <td>-32.930649</td>\n <td>191.735382</td>\n <td>93.971237</td>\n <td>33.410221</td>\n <td>...</td>\n <td>-21.929403</td>\n <td>17.050608</td>\n <td>-5.296690</td>\n <td>5.894962</td>\n <td>0.390705</td>\n <td>-20.983192</td>\n <td>29.312021</td>\n <td>-0.321836</td>\n <td>6.571660</td>\n <td>0.384794</td>\n </tr>\n </tbody>\n</table>\n<p>80 rows × 201 columns</p>\n</div>" + "text/plain": " label 0_min 0_max 0_mean 0_std \\\nfilename \nclassical_14.mp3 classical -531.049438 -100.790543 -188.970749 58.287371 \nclassical_19.mp3 classical -543.642334 -106.038223 -216.909943 61.317534 \nclassical_22.mp3 classical -541.936157 -226.866425 -335.226593 50.647623 \nclassical_27.mp3 classical -595.418945 -78.118813 -265.344452 104.892303 \nclassical_28.mp3 classical -586.019897 -129.735809 -258.647858 62.885900 \n... ... ... ... ... ... \nrock_73.mp3 rock -592.886169 41.701897 -153.154892 106.421560 \nrock_77.mp3 rock -539.358521 35.718674 -179.586624 84.650255 \nrock_79.mp3 rock -546.266846 40.547977 -92.666176 70.381178 \nrock_8.mp3 rock -497.713226 23.375931 -88.147797 81.523614 \nrock_91.mp3 rock -533.061218 25.355713 -158.489578 74.151701 \n\n 0_skew 1_min 1_max 1_mean 1_std ... \\\nfilename ... \nclassical_14.mp3 -3.246618 0.000000 157.947922 86.563927 17.911136 ... \nclassical_19.mp3 -3.473125 0.000000 151.947662 93.405411 22.029233 ... \nclassical_22.mp3 -0.545184 0.000000 176.146393 133.592239 17.983436 ... \nclassical_27.mp3 -0.526604 0.000000 200.616333 144.208496 25.198761 ... \nclassical_28.mp3 -1.322063 0.000000 202.235626 150.812439 24.929648 ... \n... ... ... ... ... ... ... \nrock_73.mp3 -0.994740 0.000000 215.729919 115.183861 33.206780 ... \nrock_77.mp3 -0.219876 -38.462662 223.537796 127.873802 40.245428 ... \nrock_79.mp3 -1.007915 -28.949915 209.030945 103.412766 35.947907 ... \nrock_8.mp3 -1.833271 0.000000 160.661163 107.283173 22.091759 ... \nrock_91.mp3 -0.529297 -29.862530 204.165237 107.615341 39.961011 ... \n\n 38_min 38_max 38_mean 38_std 38_skew \\\nfilename \nclassical_14.mp3 -36.261154 38.335831 -5.770759 12.254058 0.805707 \nclassical_19.mp3 -27.029385 30.682745 3.342259 8.420860 0.043171 \nclassical_22.mp3 -29.110729 27.870190 -0.569063 8.987627 0.238096 \nclassical_27.mp3 -28.797087 20.897751 -5.761607 7.108055 0.360305 \nclassical_28.mp3 -29.485439 37.300678 1.431255 10.245150 0.195289 \n... ... ... ... ... ... \nrock_73.mp3 -24.936195 24.260921 -2.783082 6.734193 0.418109 \nrock_77.mp3 -43.137642 22.787941 -4.591152 8.628223 -0.248479 \nrock_79.mp3 -28.984898 23.744232 -4.107946 6.492144 0.329881 \nrock_8.mp3 -19.778898 7.288054 -6.099163 4.362437 -0.103457 \nrock_91.mp3 -25.712143 15.506596 -7.065026 6.016990 0.236868 \n\n 39_min 39_max 39_mean 39_std 39_skew \nfilename \nclassical_14.mp3 -40.597336 32.816467 -0.543406 11.467829 -0.187037 \nclassical_19.mp3 -25.900257 36.766388 2.389575 10.099726 0.140336 \nclassical_22.mp3 -18.535694 41.965927 3.331284 9.619688 0.652851 \nclassical_27.mp3 -39.705540 25.803795 -2.736776 10.101577 -0.463730 \nclassical_28.mp3 -47.261536 52.326958 -1.204363 14.523197 0.225080 \n... ... ... ... ... ... \nrock_73.mp3 -13.622139 26.186539 3.595927 5.598527 0.126129 \nrock_77.mp3 -32.774506 29.059296 -3.888315 8.583189 0.047952 \nrock_79.mp3 -47.077301 24.408516 -4.148662 9.912590 -1.244573 \nrock_8.mp3 -24.742708 15.181401 -2.608342 5.046914 -0.336846 \nrock_91.mp3 -28.482529 20.222202 -1.086115 6.034919 0.097198 \n\n[80 rows x 201 columns]", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>0_min</th>\n <th>0_max</th>\n <th>0_mean</th>\n <th>0_std</th>\n <th>0_skew</th>\n <th>1_min</th>\n <th>1_max</th>\n <th>1_mean</th>\n <th>1_std</th>\n <th>...</th>\n <th>38_min</th>\n <th>38_max</th>\n <th>38_mean</th>\n <th>38_std</th>\n <th>38_skew</th>\n <th>39_min</th>\n <th>39_max</th>\n <th>39_mean</th>\n <th>39_std</th>\n <th>39_skew</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_14.mp3</th>\n <td>classical</td>\n <td>-531.049438</td>\n <td>-100.790543</td>\n <td>-188.970749</td>\n <td>58.287371</td>\n <td>-3.246618</td>\n <td>0.000000</td>\n <td>157.947922</td>\n <td>86.563927</td>\n <td>17.911136</td>\n <td>...</td>\n <td>-36.261154</td>\n <td>38.335831</td>\n <td>-5.770759</td>\n <td>12.254058</td>\n <td>0.805707</td>\n <td>-40.597336</td>\n <td>32.816467</td>\n <td>-0.543406</td>\n <td>11.467829</td>\n <td>-0.187037</td>\n </tr>\n <tr>\n <th>classical_19.mp3</th>\n <td>classical</td>\n <td>-543.642334</td>\n <td>-106.038223</td>\n <td>-216.909943</td>\n <td>61.317534</td>\n <td>-3.473125</td>\n <td>0.000000</td>\n <td>151.947662</td>\n <td>93.405411</td>\n <td>22.029233</td>\n <td>...</td>\n <td>-27.029385</td>\n <td>30.682745</td>\n <td>3.342259</td>\n <td>8.420860</td>\n <td>0.043171</td>\n <td>-25.900257</td>\n <td>36.766388</td>\n <td>2.389575</td>\n <td>10.099726</td>\n <td>0.140336</td>\n </tr>\n <tr>\n <th>classical_22.mp3</th>\n <td>classical</td>\n <td>-541.936157</td>\n <td>-226.866425</td>\n <td>-335.226593</td>\n <td>50.647623</td>\n <td>-0.545184</td>\n <td>0.000000</td>\n <td>176.146393</td>\n <td>133.592239</td>\n <td>17.983436</td>\n <td>...</td>\n <td>-29.110729</td>\n <td>27.870190</td>\n <td>-0.569063</td>\n <td>8.987627</td>\n <td>0.238096</td>\n <td>-18.535694</td>\n <td>41.965927</td>\n <td>3.331284</td>\n <td>9.619688</td>\n <td>0.652851</td>\n </tr>\n <tr>\n <th>classical_27.mp3</th>\n <td>classical</td>\n <td>-595.418945</td>\n <td>-78.118813</td>\n <td>-265.344452</td>\n <td>104.892303</td>\n <td>-0.526604</td>\n <td>0.000000</td>\n <td>200.616333</td>\n <td>144.208496</td>\n <td>25.198761</td>\n <td>...</td>\n <td>-28.797087</td>\n <td>20.897751</td>\n <td>-5.761607</td>\n <td>7.108055</td>\n <td>0.360305</td>\n <td>-39.705540</td>\n <td>25.803795</td>\n <td>-2.736776</td>\n <td>10.101577</td>\n <td>-0.463730</td>\n </tr>\n <tr>\n <th>classical_28.mp3</th>\n <td>classical</td>\n <td>-586.019897</td>\n <td>-129.735809</td>\n <td>-258.647858</td>\n <td>62.885900</td>\n <td>-1.322063</td>\n <td>0.000000</td>\n <td>202.235626</td>\n <td>150.812439</td>\n <td>24.929648</td>\n <td>...</td>\n <td>-29.485439</td>\n <td>37.300678</td>\n <td>1.431255</td>\n <td>10.245150</td>\n <td>0.195289</td>\n <td>-47.261536</td>\n <td>52.326958</td>\n <td>-1.204363</td>\n <td>14.523197</td>\n <td>0.225080</td>\n </tr>\n <tr>\n <th>...</th>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n <td>...</td>\n </tr>\n <tr>\n <th>rock_73.mp3</th>\n <td>rock</td>\n <td>-592.886169</td>\n <td>41.701897</td>\n <td>-153.154892</td>\n <td>106.421560</td>\n <td>-0.994740</td>\n <td>0.000000</td>\n <td>215.729919</td>\n <td>115.183861</td>\n <td>33.206780</td>\n <td>...</td>\n <td>-24.936195</td>\n <td>24.260921</td>\n <td>-2.783082</td>\n <td>6.734193</td>\n <td>0.418109</td>\n <td>-13.622139</td>\n <td>26.186539</td>\n <td>3.595927</td>\n <td>5.598527</td>\n <td>0.126129</td>\n </tr>\n <tr>\n <th>rock_77.mp3</th>\n <td>rock</td>\n <td>-539.358521</td>\n <td>35.718674</td>\n <td>-179.586624</td>\n <td>84.650255</td>\n <td>-0.219876</td>\n <td>-38.462662</td>\n <td>223.537796</td>\n <td>127.873802</td>\n <td>40.245428</td>\n <td>...</td>\n <td>-43.137642</td>\n <td>22.787941</td>\n <td>-4.591152</td>\n <td>8.628223</td>\n <td>-0.248479</td>\n <td>-32.774506</td>\n <td>29.059296</td>\n <td>-3.888315</td>\n <td>8.583189</td>\n <td>0.047952</td>\n </tr>\n <tr>\n <th>rock_79.mp3</th>\n <td>rock</td>\n <td>-546.266846</td>\n <td>40.547977</td>\n <td>-92.666176</td>\n <td>70.381178</td>\n <td>-1.007915</td>\n <td>-28.949915</td>\n <td>209.030945</td>\n <td>103.412766</td>\n <td>35.947907</td>\n <td>...</td>\n <td>-28.984898</td>\n <td>23.744232</td>\n <td>-4.107946</td>\n <td>6.492144</td>\n <td>0.329881</td>\n <td>-47.077301</td>\n <td>24.408516</td>\n <td>-4.148662</td>\n <td>9.912590</td>\n <td>-1.244573</td>\n </tr>\n <tr>\n <th>rock_8.mp3</th>\n <td>rock</td>\n <td>-497.713226</td>\n <td>23.375931</td>\n <td>-88.147797</td>\n <td>81.523614</td>\n <td>-1.833271</td>\n <td>0.000000</td>\n <td>160.661163</td>\n <td>107.283173</td>\n <td>22.091759</td>\n <td>...</td>\n <td>-19.778898</td>\n <td>7.288054</td>\n <td>-6.099163</td>\n <td>4.362437</td>\n <td>-0.103457</td>\n <td>-24.742708</td>\n <td>15.181401</td>\n <td>-2.608342</td>\n <td>5.046914</td>\n <td>-0.336846</td>\n </tr>\n <tr>\n <th>rock_91.mp3</th>\n <td>rock</td>\n <td>-533.061218</td>\n <td>25.355713</td>\n <td>-158.489578</td>\n <td>74.151701</td>\n <td>-0.529297</td>\n <td>-29.862530</td>\n <td>204.165237</td>\n <td>107.615341</td>\n <td>39.961011</td>\n <td>...</td>\n <td>-25.712143</td>\n <td>15.506596</td>\n <td>-7.065026</td>\n <td>6.016990</td>\n <td>0.236868</td>\n <td>-28.482529</td>\n <td>20.222202</td>\n <td>-1.086115</td>\n <td>6.034919</td>\n <td>0.097198</td>\n </tr>\n </tbody>\n</table>\n<p>80 rows × 201 columns</p>\n</div>" }, - "execution_count": 12, + "execution_count": 85, "metadata": {}, "output_type": "execute_result" } @@ -465,24 +514,24 @@ "source": [ "test: DataFrame = joined[joined[\"train\"] == False].drop(\"train\", axis=1)\n", "test" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 87, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.532989116Z", - "start_time": "2023-10-10T20:43:37.469652946Z" + "end_time": "2024-02-15T18:19:26.464047065Z", + "start_time": "2024-02-15T18:19:26.395437410Z" } - } - }, - { - "cell_type": "code", - "execution_count": 13, + }, "outputs": [ { "data": { - "text/plain": "( 0_min 0_max 0_mean 0_std 0_skew \\\n filename \n classical_1.mp3 -530.784363 -163.308350 -302.203156 51.142183 -0.468374 \n classical_10.mp3 -562.857849 -96.164795 -219.259018 53.561839 -0.772320 \n classical_100.mp3 -536.237366 -61.608826 -177.804108 83.381622 -2.587179 \n classical_11.mp3 -536.457458 -120.429665 -222.126312 76.246992 -2.402419 \n classical_13.mp3 -637.720642 -177.713959 -361.834045 71.310080 0.008326 \n ... ... ... ... ... ... \n rock_93.mp3 -570.466492 -26.067888 -302.483093 96.569376 0.159026 \n rock_94.mp3 -531.794250 39.474583 -78.520462 51.256666 -0.846796 \n rock_95.mp3 -553.110107 -5.218835 -193.506042 76.869437 -0.201055 \n rock_96.mp3 -541.236023 27.163332 -119.113991 58.420684 -0.957699 \n rock_97.mp3 -518.494995 58.526745 -66.267746 65.635619 -0.898026 \n \n 1_min 1_max 1_mean 1_std 1_skew \\\n filename \n classical_1.mp3 0.000000 178.751617 111.332344 24.847562 -0.402642 \n classical_10.mp3 0.029056 259.632721 215.094193 18.388131 -1.528750 \n classical_100.mp3 0.000000 190.475891 112.471710 27.277553 -1.318523 \n classical_11.mp3 0.000000 159.425751 99.853645 21.916948 -1.176922 \n classical_13.mp3 0.000000 257.162842 211.556549 20.347035 -1.050120 \n ... ... ... ... ... ... \n rock_93.mp3 -89.999680 211.889099 103.686363 40.373591 -1.760946 \n rock_94.mp3 -15.139265 177.080322 79.627045 33.557076 0.103628 \n rock_95.mp3 -89.948746 201.180450 111.724190 36.463584 -0.443224 \n rock_96.mp3 -7.415959 210.492462 125.453690 31.908870 -0.547468 \n rock_97.mp3 -58.824409 175.201355 99.288261 25.158417 -0.568056 \n \n ... 38_min 38_max 38_mean 38_std 38_skew \\\n filename ... \n classical_1.mp3 ... -44.098068 47.308060 -3.713503 16.553984 0.230691 \n classical_10.mp3 ... -27.458416 29.811110 0.484271 8.660648 -0.479016 \n classical_100.mp3 ... -27.335688 27.610388 -0.333233 8.185075 0.208425 \n classical_11.mp3 ... -31.774948 31.500881 -3.781627 9.191043 0.260886 \n classical_13.mp3 ... -24.728806 18.424034 -0.275736 7.026148 -0.640964 \n ... ... ... ... ... ... ... \n rock_93.mp3 ... -28.903784 35.712753 2.073339 10.995769 0.249798 \n rock_94.mp3 ... -34.662369 26.375679 -4.778466 6.754501 0.157858 \n rock_95.mp3 ... -27.043941 22.451445 -7.234633 8.471853 0.753855 \n rock_96.mp3 ... -37.584858 28.087940 -9.704238 8.447620 0.112760 \n rock_97.mp3 ... -29.620445 26.325895 -5.722826 7.727378 0.207489 \n \n 39_min 39_max 39_mean 39_std 39_skew \n filename \n classical_1.mp3 -46.794479 49.352516 -2.282116 15.285639 0.171462 \n classical_10.mp3 -28.989979 27.533707 0.952658 10.477735 -0.185771 \n classical_100.mp3 -38.095375 31.397882 -1.494916 10.917299 0.020984 \n classical_11.mp3 -22.667439 50.992905 1.600777 10.125545 0.595763 \n classical_13.mp3 -24.319565 18.439264 -2.147022 8.171929 0.009566 \n ... ... ... ... ... ... \n rock_93.mp3 -30.178169 30.612564 -4.677735 8.877041 0.149639 \n rock_94.mp3 -22.063726 29.165359 1.443975 6.737420 -0.092049 \n rock_95.mp3 -24.712723 23.410387 -4.502398 6.687983 0.238807 \n rock_96.mp3 -38.147888 21.814400 -8.249507 7.807756 0.071968 \n rock_97.mp3 -29.497524 25.410656 -3.356615 8.170526 0.160330 \n \n [320 rows x 200 columns],\n array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]))" + "text/plain": "( 0_min 0_max 0_mean 0_std 0_skew \\\n filename \n classical_1.mp3 -530.784363 -163.308350 -302.203156 51.142183 -0.468374 \n classical_10.mp3 -562.857849 -96.164795 -219.259018 53.561838 -0.772320 \n classical_100.mp3 -536.237366 -61.608826 -177.804108 83.381622 -2.587179 \n classical_11.mp3 -536.457458 -120.429665 -222.126312 76.246992 -2.402419 \n classical_12.mp3 -562.675232 -148.133560 -270.975403 52.191182 -0.366587 \n ... ... ... ... ... ... \n rock_95.mp3 -553.110107 -5.218835 -193.506042 76.869437 -0.201055 \n rock_96.mp3 -541.236023 27.163334 -119.113991 58.420684 -0.957699 \n rock_97.mp3 -518.494995 58.526745 -66.267746 65.635619 -0.898026 \n rock_98.mp3 -518.643066 53.555115 -45.734516 52.444200 -1.705641 \n rock_99.mp3 -544.703125 75.612129 -49.380943 54.045627 -0.863093 \n \n 1_min 1_max 1_mean 1_std 1_skew \\\n filename \n classical_1.mp3 0.000000 178.751617 111.332344 24.847563 -0.402642 \n classical_10.mp3 0.029056 259.632690 215.094193 18.388131 -1.528750 \n classical_100.mp3 0.000000 190.475891 112.471710 27.277553 -1.318523 \n classical_11.mp3 0.000000 159.425751 99.853645 21.916949 -1.176922 \n classical_12.mp3 0.000000 194.264160 148.226654 19.305008 -0.533256 \n ... ... ... ... ... ... \n rock_95.mp3 -89.948746 201.180450 111.724190 36.463584 -0.443224 \n rock_96.mp3 -7.415961 210.492462 125.453690 31.908869 -0.547468 \n rock_97.mp3 -58.824409 175.201355 99.288261 25.158417 -0.568056 \n rock_98.mp3 0.000000 187.042740 96.440872 24.137702 -0.145216 \n rock_99.mp3 -32.930653 191.735382 93.971237 33.410220 0.040112 \n \n ... 38_min 38_max 38_mean 38_std 38_skew \\\n filename ... \n classical_1.mp3 ... -44.098068 47.308060 -3.713503 16.553984 0.230691 \n classical_10.mp3 ... -27.458416 29.811110 0.484271 8.660648 -0.479016 \n classical_100.mp3 ... -27.335688 27.610388 -0.333233 8.185075 0.208425 \n classical_11.mp3 ... -31.774948 31.500881 -3.781627 9.191043 0.260886 \n classical_12.mp3 ... -44.843811 28.490644 -6.242015 10.546545 0.341848 \n ... ... ... ... ... ... ... \n rock_95.mp3 ... -27.043941 22.451445 -7.234633 8.471853 0.753855 \n rock_96.mp3 ... -37.584858 28.087936 -9.704238 8.447620 0.112760 \n rock_97.mp3 ... -29.620445 26.325895 -5.722826 7.727378 0.207489 \n rock_98.mp3 ... -26.967848 8.714737 -9.511492 5.551820 -0.025604 \n rock_99.mp3 ... -21.929403 17.050608 -5.296690 5.894963 0.390705 \n \n 39_min 39_max 39_mean 39_std 39_skew \n filename \n classical_1.mp3 -46.794479 49.352516 -2.282116 15.285639 0.171462 \n classical_10.mp3 -28.989983 27.533710 0.952658 10.477735 -0.185771 \n classical_100.mp3 -38.095375 31.397881 -1.494916 10.917299 0.020984 \n classical_11.mp3 -22.667440 50.992897 1.600777 10.125545 0.595763 \n classical_12.mp3 -25.040888 46.878204 1.844494 11.160392 0.503120 \n ... ... ... ... ... ... \n rock_95.mp3 -24.712723 23.410387 -4.502398 6.687984 0.238807 \n rock_96.mp3 -38.147888 21.814402 -8.249507 7.807756 0.071968 \n rock_97.mp3 -29.497524 25.410654 -3.356615 8.170526 0.160330 \n rock_98.mp3 -23.020084 13.948638 -2.664985 5.051498 -0.258407 \n rock_99.mp3 -20.983192 29.312023 -0.321836 6.571660 0.384794 \n \n [320 rows x 200 columns],\n array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]))" }, - "execution_count": 13, + "execution_count": 87, "metadata": {}, "output_type": "execute_result" } @@ -506,18 +555,18 @@ "y = np.array([classname2index[classname] for classname in train.label.values])\n", "\n", "(X, y)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 88, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.537246329Z", - "start_time": "2023-10-10T20:43:37.469936549Z" + "end_time": "2024-02-15T18:19:31.118105061Z", + "start_time": "2024-02-15T18:19:31.077256730Z" } - } - }, - { - "cell_type": "code", - "execution_count": 14, + }, "outputs": [ { "name": "stdout", @@ -530,9 +579,9 @@ }, { "data": { - "text/plain": "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])" + "text/plain": "array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,\n 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,\n 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3])" }, - "execution_count": 14, + "execution_count": 88, "metadata": {}, "output_type": "execute_result" } @@ -546,24 +595,24 @@ "\n", "y_test = np.array([classname2index[classname] for classname in test.label.values])\n", "y_test" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 89, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.717205547Z", - "start_time": "2023-10-10T20:43:37.487249746Z" + "end_time": "2024-02-15T18:19:48.396534314Z", + "start_time": "2024-02-15T18:19:48.343232378Z" } - } - }, - { - "cell_type": "code", - "execution_count": 15, + }, "outputs": [ { "data": { - "text/plain": "array([[ 0.42613404, -1.82530004, -1.35373394, ..., -0.72391099,\n 3.57791914, 0.11656626],\n [-0.40732633, -0.95390951, -0.43778646, ..., 0.24817291,\n 1.42713353, -0.91164704],\n [ 0.28443252, -0.50544138, 0.0199978 , ..., -0.48734903,\n 1.62376978, -0.31654845],\n ...,\n [-0.15402189, 0.22638917, -0.15339779, ..., -1.39112939,\n -0.26818789, 0.31040331],\n [ 0.15453761, 0.64664565, 0.66810948, ..., -2.51717512,\n 0.23273515, -0.16980445],\n [ 0.74548507, 1.05368071, 1.25168761, ..., -1.0468092 ,\n 0.39501813, 0.08452671]])" + "text/plain": "array([[ 0.41312229, -1.8814851 , -1.37421169, ..., -0.68911516,\n 3.50451929, 0.07520041],\n [-0.42816033, -0.99060625, -0.4404758 , ..., 0.28654076,\n 1.37798859, -0.95198386],\n [ 0.27009086, -0.5321083 , 0.02619898, ..., -0.45168397,\n 1.5724073 , -0.35748084],\n ...,\n [ 0.73547052, 1.06188296, 1.28180917, ..., -1.01319989,\n 0.35751256, 0.04319288],\n [ 0.73158663, 0.99591802, 1.51296008, ..., -0.80459427,\n -1.02203015, -1.16083939],\n [ 0.0480353 , 1.28857646, 1.47191077, ..., -0.09786553,\n -0.34966421, 0.68861256]])" }, - "execution_count": 15, + "execution_count": 89, "metadata": {}, "output_type": "execute_result" } @@ -575,33 +624,33 @@ "X_test_standardized = scaler.transform(X_test.values)\n", "\n", "X_standardized" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 219, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.742380165Z", - "start_time": "2023-10-10T20:43:37.512601397Z" + "end_time": "2024-02-15T21:02:13.236651909Z", + "start_time": "2024-02-15T21:02:13.017853296Z" } - } - }, - { - "cell_type": "code", - "execution_count": 16, + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.8567747879571861\n", - "(320, 50)\n", - "(80, 50)\n", + "0.748594193433371\n", + "(320, 30)\n", + "(80, 30)\n", "(320,)\n" ] } ], "source": [ "# Reduce Dimensions via PCA\n", - "pca = PCA(n_components=50).fit(X_standardized)\n", + "pca = PCA(n_components=30).fit(X_standardized)\n", "X_pca = pca.transform(X_standardized)\n", "X_test_pca = pca.transform(X_test_standardized)\n", "\n", @@ -609,39 +658,24 @@ "print(X_pca.shape)\n", "print(X_test_pca.shape)\n", "print(y.shape)" - ], + ] + }, + { + "cell_type": "code", + "execution_count": 220, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.742719199Z", - "start_time": "2023-10-10T20:43:37.556397316Z" + "end_time": "2024-02-15T21:02:15.245844534Z", + "start_time": "2024-02-15T21:02:15.168644880Z" } - } - }, - { - "cell_type": "code", - "execution_count": 17, + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.765625\n", - "[[-7.47135617 -4.0735689 -1.75958109 ... 0.03567986 0.25908476\n", - " -1.02348857]\n", - " [ 7.98657438 -0.32835412 1.61837082 ... -0.30170778 -1.12335641\n", - " 1.1826182 ]\n", - " [ 6.29134947 -2.71877979 -6.46515986 ... -0.69992826 -0.19818608\n", - " 0.11547002]\n", - " ...\n", - " [ 4.54103139 -1.40004059 3.28019036 ... -0.04582758 -1.81567251\n", - " 0.70422807]\n", - " [ 6.58645856 -0.91251805 -0.24337363 ... 1.56437846 1.11739736\n", - " 2.74055111]\n", - " [ 2.48429716 -4.80891624 4.67724279 ... -0.80355261 0.54566587\n", - " -2.43086802]]\n", - "[3 0 3 2 3 0 1 2 0 3 0 0 0 1 2 1 2 3 2 1 1 0 3 0 0 0 3 1 1 3 3 2 3 1 2 2 0\n", - " 1 0 1 3 0 0 0 0 3 3 3 0 3 3 3 1 2 2 0 1 2 1 2 3 2 1 0]\n" + "0.8125\n" ] } ], @@ -653,282 +687,100 @@ "clf = SVC(kernel='rbf', probability=True)\n", "clf.fit(X_train, y_train)\n", "\n", - "print(accuracy_score(clf.predict(X_val), y_val))\n", - "print(X_val)\n", - "print(y_val)\n" - ], + "print(accuracy_score(clf.predict(X_val), y_val))" + ] + }, + { + "cell_type": "code", + "execution_count": 221, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:37.833888094Z", - "start_time": "2023-10-10T20:43:37.613471972Z" + "end_time": "2024-02-15T21:02:24.826839877Z", + "start_time": "2024-02-15T21:02:17.112920147Z" } - } - }, - { - "cell_type": "code", - "execution_count": 18, + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.7425339366515837\n", - "{'C': 1, 'gamma': 0.01}\n", - "SVC(C=1, gamma=0.01)\n", - "0.8125\n" + "0.765625\n", + "{'C': 4, 'gamma': 0.01}\n", + "SVC(C=4, gamma=0.01)\n" ] } ], "source": [ "# grid for C, gamma\n", - "C_grid = [0.001, 0.01, 0.1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", + "C_grid = [0.0001, 0.001, 0.01, 0.1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n", "gamma_grid = [0.001, 0.01, 0.1, 1, 10]\n", "param_grid = {'C': C_grid, 'gamma': gamma_grid}\n", "\n", "grid = GridSearchCV(SVC(kernel='rbf'), param_grid, cv=5, scoring=\"accuracy\")\n", - "grid.fit(X_train, y_train)\n", + "grid.fit(X_pca, y)\n", "\n", "# Find the best model\n", "print(grid.best_score_)\n", "print(grid.best_params_)\n", - "print(grid.best_estimator_)\n", - "print(accuracy_score(grid.predict(X_val), y_val))" - ], + "print(grid.best_estimator_)" + ] + }, + { + "cell_type": "code", + "execution_count": 223, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:40.405459626Z", - "start_time": "2023-10-10T20:43:37.685840465Z" + "end_time": "2024-02-15T21:03:27.825939392Z", + "start_time": "2024-02-15T21:03:27.720198770Z" } - } - }, - { - "cell_type": "code", - "execution_count": 19, + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "0.796875\n" + "Accuracy score: 0.7625\n" ] } ], "source": [ - "# Optimal model\n", + "# Fit entire training sets with optimal model\n", "\n", "clf = SVC(kernel='rbf', C=4, gamma=0.01, probability=True)\n", - "clf.fit(X_train, y_train)\n", + "clf.fit(X_pca, y)\n", + "proba = clf.predict_proba(X_test_pca)\n", "\n", - "print(accuracy_score(clf.predict(X_val), y_val))" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:43:40.457934105Z", - "start_time": "2023-10-10T20:43:40.393926867Z" - } - } + "print(f\"Accuracy score: {accuracy_score(clf.predict(X_test_pca), y_test)}\")" + ] }, { "cell_type": "code", - "execution_count": 20, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.775\n", - "[[9.42040797e-01 2.70174155e-02 2.24723009e-02 8.46948646e-03]\n", - " [9.96740378e-01 1.69566371e-03 5.62068675e-04 1.00188957e-03]\n", - " [9.99641103e-01 2.61229482e-05 2.29803429e-04 1.02970864e-04]\n", - " [9.92994584e-01 3.84209358e-03 1.55640848e-03 1.60691385e-03]\n", - " [9.76972726e-01 4.65350915e-03 1.43338762e-02 4.03988862e-03]\n", - " [7.95407527e-01 4.84864390e-02 8.52062441e-02 7.08997901e-02]\n", - " [9.98557419e-01 2.09205917e-04 7.14230514e-04 5.19144171e-04]\n", - " [9.40476603e-01 3.49122929e-02 1.69428596e-02 7.66824460e-03]\n", - " [8.39761011e-01 4.38310450e-03 9.41041205e-02 6.17517637e-02]\n", - " [2.50318465e-01 1.37819918e-01 4.59288899e-01 1.52572718e-01]\n", - " [9.92696391e-01 3.20809762e-03 2.05803543e-03 2.03747550e-03]\n", - " [9.98690083e-01 1.69577396e-04 6.76374089e-04 4.63965809e-04]\n", - " [1.62411839e-01 3.13404410e-01 3.82366473e-01 1.41817279e-01]\n", - " [9.26101583e-01 4.83188150e-02 1.73274245e-02 8.25217729e-03]\n", - " [8.76874571e-01 6.46209287e-02 2.33451795e-02 3.51593204e-02]\n", - " [9.98893757e-01 4.70821073e-04 3.88879673e-04 2.46542605e-04]\n", - " [9.98165353e-01 2.48150136e-04 5.93550303e-04 9.92946849e-04]\n", - " [9.97924494e-01 1.53141224e-03 2.49974948e-04 2.94118560e-04]\n", - " [2.20837801e-01 9.23419164e-03 4.79730588e-01 2.90197419e-01]\n", - " [9.93523987e-01 5.01163077e-03 6.82304736e-04 7.82077822e-04]\n", - " [9.99353412e-01 1.91613208e-05 1.31625123e-04 4.95801957e-04]\n", - " [1.34051158e-03 9.81984508e-01 9.71471844e-03 6.96026153e-03]\n", - " [4.23594840e-03 4.00700590e-01 3.36815417e-01 2.58248046e-01]\n", - " [1.39718596e-03 9.55091999e-01 7.89301953e-03 3.56177954e-02]\n", - " [9.05305283e-01 2.44194916e-02 5.27647495e-02 1.75104758e-02]\n", - " [6.54443813e-04 9.08179938e-01 1.02579366e-02 8.09076815e-02]\n", - " [1.04887860e-01 4.84429978e-01 3.18205740e-01 9.24764216e-02]\n", - " [7.21557359e-01 1.83615195e-01 6.18721579e-02 3.29552881e-02]\n", - " [1.12591815e-02 7.02854455e-01 1.74324699e-01 1.11561664e-01]\n", - " [3.40834219e-02 2.35798041e-01 5.98814568e-01 1.31303970e-01]\n", - " [1.00316726e-02 8.48188499e-01 5.27064479e-02 8.90733801e-02]\n", - " [2.64847321e-03 8.84959697e-01 7.24790029e-03 1.05143929e-01]\n", - " [1.14737746e-01 3.54443868e-01 4.09198161e-01 1.21620225e-01]\n", - " [4.10243526e-03 8.75972699e-01 9.35401686e-02 2.63846974e-02]\n", - " [1.64710505e-03 8.54733046e-01 1.12462393e-02 1.32373609e-01]\n", - " [1.68779748e-03 7.83834395e-01 1.66376175e-01 4.81016319e-02]\n", - " [2.73140922e-03 9.58337246e-01 7.75738177e-03 3.11739630e-02]\n", - " [1.09130510e-03 3.01394038e-01 5.27663335e-01 1.69851323e-01]\n", - " [2.45514360e-04 6.03104425e-01 8.67940558e-03 3.87970655e-01]\n", - " [5.05012887e-02 8.47586989e-01 7.06306173e-02 3.12811050e-02]\n", - " [3.71938549e-04 9.29722757e-01 2.28770191e-02 4.70282851e-02]\n", - " [7.10002677e-02 7.66495556e-01 1.19039172e-01 4.34650037e-02]\n", - " [1.02766752e-02 5.82721296e-01 2.72757462e-01 1.34244567e-01]\n", - " [1.14582797e-03 9.85977484e-01 6.38762444e-03 6.48906409e-03]\n", - " [4.53745403e-02 2.48837938e-01 5.29633193e-01 1.76154329e-01]\n", - " [4.32936989e-02 8.45542568e-01 6.80961904e-02 4.30675429e-02]\n", - " [4.65359070e-02 6.35862295e-01 2.30158882e-01 8.74429162e-02]\n", - " [7.59325408e-02 8.40362013e-01 2.18715264e-02 6.18339202e-02]\n", - " [7.74988396e-03 3.63228281e-01 5.42668687e-01 8.63531481e-02]\n", - " [4.20571606e-02 1.67928744e-01 6.58766816e-01 1.31247279e-01]\n", - " [7.29951430e-04 2.07820843e-02 3.67399758e-01 6.11088207e-01]\n", - " [8.68530750e-03 3.21982370e-03 6.58963456e-01 3.29131412e-01]\n", - " [7.38814319e-02 1.53334483e-01 4.19653490e-01 3.53130595e-01]\n", - " [1.07906612e-03 7.04123005e-03 1.23280108e-01 8.68599596e-01]\n", - " [5.84123332e-03 7.91638288e-02 5.95835326e-01 3.19159612e-01]\n", - " [2.69625390e-03 5.06496587e-03 5.30645726e-01 4.61593054e-01]\n", - " [7.79797043e-03 1.92759686e-02 6.97763605e-01 2.75162456e-01]\n", - " [5.41446813e-04 2.94305688e-03 9.44287476e-01 5.22280206e-02]\n", - " [6.26051598e-04 7.42141945e-01 1.98916038e-01 5.83159655e-02]\n", - " [4.07263950e-04 1.61189530e-02 7.18765870e-01 2.64707913e-01]\n", - " [1.34365605e-02 1.10543156e-01 5.26627982e-01 3.49392301e-01]\n", - " [5.71001422e-04 1.91240815e-03 6.06491277e-01 3.91025314e-01]\n", - " [2.81713063e-03 7.97382406e-03 8.40331020e-01 1.48878026e-01]\n", - " [1.17135558e-03 2.12319620e-02 2.47315117e-01 7.30281566e-01]\n", - " [5.42053546e-02 4.77429988e-01 3.58152424e-01 1.10212234e-01]\n", - " [6.02720306e-04 1.06889031e-02 9.19066116e-02 8.96801765e-01]\n", - " [9.36504287e-04 1.48006780e-02 5.73367912e-02 9.26926027e-01]\n", - " [4.89026733e-03 8.74350191e-02 3.48862678e-01 5.58812036e-01]\n", - " [2.24637260e-03 3.92870613e-02 3.80617764e-01 5.77848802e-01]\n", - " [9.03373107e-04 5.48306894e-03 7.39968576e-01 2.53644982e-01]\n", - " [8.62452915e-03 9.29444439e-03 3.40040565e-01 6.42040462e-01]\n", - " [1.08525799e-03 6.93149715e-02 3.33566650e-01 5.96033120e-01]\n", - " [4.52558455e-03 5.03194459e-01 7.19542524e-02 4.20325704e-01]\n", - " [2.49289567e-04 6.64428036e-04 4.53650391e-02 9.53721243e-01]\n", - " [4.34121870e-02 1.45051484e-01 5.31879800e-01 2.79656529e-01]\n", - " [4.63708910e-02 2.55131108e-01 2.77371495e-01 4.21126506e-01]\n", - " [8.46465104e-05 1.08384791e-03 4.85811151e-02 9.50250390e-01]\n", - " [1.69882429e-04 4.50546759e-03 9.13036112e-02 9.04021039e-01]\n", - " [1.53879841e-03 9.81121479e-03 1.96134562e-01 7.92515425e-01]\n", - " [2.17530214e-04 4.54280426e-04 2.60607964e-01 7.38720225e-01]]\n" - ] - } - ], - "source": [ - "# Fit entire training sets\n", - "clf.fit(X_pca, y)\n", - "\n", - "print(accuracy_score(clf.predict(X_test_pca), y_test))\n", - "print(clf.predict_proba(X_test_pca))" - ], + "execution_count": 224, "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:40.511453725Z", - "start_time": "2023-10-10T20:43:40.431195930Z" + "end_time": "2024-02-15T21:03:30.177134123Z", + "start_time": "2024-02-15T21:03:30.061280071Z" } - } - }, - { - "cell_type": "code", - "execution_count": 21, + }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " label pred1 pred2 pred3 pred4\n", - "filename \n", - "classical_12.mp3 classical classical electronic pop rock\n", - "classical_18.mp3 classical classical electronic rock pop\n", - "classical_19.mp3 classical classical pop rock electronic\n", - "classical_2.mp3 classical classical electronic rock pop\n", - "classical_22.mp3 classical classical pop electronic rock\n", - "classical_26.mp3 classical classical pop rock electronic\n", - "classical_28.mp3 classical classical pop rock electronic\n", - "classical_33.mp3 classical classical electronic pop rock\n", - "classical_38.mp3 classical classical pop rock electronic\n", - "classical_43.mp3 classical pop classical rock electronic\n", - "classical_45.mp3 classical classical electronic rock pop\n", - "classical_48.mp3 classical classical pop rock electronic\n", - "classical_52.mp3 classical pop electronic classical rock\n", - "classical_57.mp3 classical classical electronic pop rock\n", - "classical_59.mp3 classical classical electronic rock pop\n", - "classical_6.mp3 classical classical electronic pop rock\n", - "classical_62.mp3 classical classical rock pop electronic\n", - "classical_67.mp3 classical classical electronic rock pop\n", - "classical_71.mp3 classical pop rock classical electronic\n", - "classical_85.mp3 classical classical electronic rock pop\n", - "classical_86.mp3 classical classical rock pop electronic\n", - "electronic_1.mp3 electronic electronic pop rock classical\n", - "electronic_13.mp3 electronic electronic pop rock classical\n", - "electronic_18.mp3 electronic electronic rock pop classical\n", - "electronic_26.mp3 electronic classical pop electronic rock\n", - "electronic_33.mp3 electronic electronic rock pop classical\n", - "electronic_38.mp3 electronic electronic pop classical rock\n", - "electronic_47.mp3 electronic classical electronic pop rock\n", - "electronic_50.mp3 electronic electronic pop rock classical\n", - "electronic_51.mp3 electronic pop electronic rock classical\n", - "electronic_55.mp3 electronic electronic rock pop classical\n", - "electronic_56.mp3 electronic electronic rock pop classical\n", - "electronic_57.mp3 electronic pop electronic rock classical\n", - "electronic_58.mp3 electronic electronic pop rock classical\n", - "electronic_59.mp3 electronic electronic rock pop classical\n", - "electronic_7.mp3 electronic electronic pop rock classical\n", - "electronic_73.mp3 electronic electronic rock pop classical\n", - "electronic_75.mp3 electronic pop electronic rock classical\n", - "electronic_81.mp3 electronic electronic rock pop classical\n", - "electronic_85.mp3 electronic electronic pop classical rock\n", - "electronic_86.mp3 electronic electronic rock pop classical\n", - "electronic_91.mp3 electronic electronic pop classical rock\n", - "electronic_92.mp3 electronic electronic pop rock classical\n", - "electronic_93.mp3 electronic electronic pop rock classical\n", - "electronic_94.mp3 electronic pop electronic rock classical\n", - "electronic_97.mp3 electronic electronic pop classical rock\n", - "pop_18.mp3 pop electronic pop rock classical\n", - "pop_19.mp3 pop electronic classical rock pop\n", - "pop_28.mp3 pop pop electronic rock classical\n", - "pop_3.mp3 pop pop electronic rock classical\n", - "pop_31.mp3 pop rock pop electronic classical\n", - "pop_33.mp3 pop pop rock classical electronic\n", - "pop_34.mp3 pop pop rock electronic classical\n", - "pop_37.mp3 pop rock pop electronic classical\n", - "pop_4.mp3 pop pop rock electronic classical\n", - "pop_42.mp3 pop pop rock electronic classical\n", - "pop_53.mp3 pop pop rock electronic classical\n", - "pop_66.mp3 pop pop rock electronic classical\n", - "pop_71.mp3 pop electronic pop rock classical\n", - "pop_75.mp3 pop pop rock electronic classical\n", - "pop_77.mp3 pop pop rock electronic classical\n", - "pop_82.mp3 pop pop rock electronic classical\n", - "pop_99.mp3 pop pop rock electronic classical\n", - "rock_1.mp3 rock rock pop electronic classical\n", - "rock_21.mp3 rock electronic pop rock classical\n", - "rock_23.mp3 rock rock pop electronic classical\n", - "rock_24.mp3 rock rock pop electronic classical\n", - "rock_26.mp3 rock rock pop electronic classical\n", - "rock_27.mp3 rock rock pop electronic classical\n", - "rock_49.mp3 rock pop rock electronic classical\n", - "rock_56.mp3 rock rock pop classical electronic\n", - "rock_57.mp3 rock rock pop electronic classical\n", - "rock_58.mp3 rock electronic rock pop classical\n", - "rock_78.mp3 rock rock pop electronic classical\n", - "rock_79.mp3 rock pop rock electronic classical\n", - "rock_82.mp3 rock rock pop electronic classical\n", - "rock_84.mp3 rock rock pop electronic classical\n", - "rock_9.mp3 rock rock pop electronic classical\n", - "rock_98.mp3 rock rock pop electronic classical\n", - "rock_99.mp3 rock rock pop electronic classical\n" - ] + "data": { + "text/plain": " label pred1 pred2 pred3 pred4\nfilename \nclassical_14.mp3 classical classical electronic pop rock\nclassical_19.mp3 classical classical electronic pop rock\nclassical_22.mp3 classical classical pop electronic rock\nclassical_27.mp3 classical classical electronic pop rock\nclassical_28.mp3 classical classical electronic pop rock\nclassical_29.mp3 classical classical electronic pop rock\nclassical_30.mp3 classical classical electronic pop rock\nclassical_35.mp3 classical classical electronic pop rock\nclassical_46.mp3 classical classical electronic pop rock\nclassical_60.mp3 classical classical electronic pop rock\nclassical_66.mp3 classical classical rock electronic pop\nclassical_69.mp3 classical classical pop rock electronic\nclassical_79.mp3 classical classical electronic pop rock\nclassical_83.mp3 classical electronic classical pop rock\nclassical_87.mp3 classical classical pop electronic rock\nclassical_89.mp3 classical classical electronic rock pop\nclassical_9.mp3 classical classical electronic pop rock\nclassical_91.mp3 classical classical electronic pop rock\nclassical_99.mp3 classical classical electronic pop rock\nelectronic_100.mp3 electronic electronic pop classical rock\nelectronic_13.mp3 electronic electronic pop rock classical\nelectronic_18.mp3 electronic electronic pop rock classical\nelectronic_25.mp3 electronic electronic classical pop rock\nelectronic_31.mp3 electronic electronic pop rock classical\nelectronic_32.mp3 electronic electronic pop classical rock\nelectronic_39.mp3 electronic electronic pop rock classical\nelectronic_49.mp3 electronic pop rock electronic classical\nelectronic_50.mp3 electronic electronic pop rock classical\nelectronic_58.mp3 electronic electronic pop rock classical\nelectronic_61.mp3 electronic electronic pop rock classical\nelectronic_65.mp3 electronic pop classical rock electronic\nelectronic_69.mp3 electronic electronic pop classical rock\nelectronic_7.mp3 electronic electronic pop rock classical\nelectronic_70.mp3 electronic classical electronic pop rock\nelectronic_71.mp3 electronic electronic pop rock classical\nelectronic_72.mp3 electronic electronic rock pop classical\nelectronic_74.mp3 electronic electronic pop rock classical\nelectronic_77.mp3 electronic electronic pop rock classical\nelectronic_80.mp3 electronic electronic rock pop classical\nelectronic_88.mp3 electronic electronic pop rock classical\nelectronic_90.mp3 electronic electronic pop rock classical\npop_12.mp3 pop rock pop electronic classical\npop_15.mp3 pop rock pop electronic classical\npop_16.mp3 pop electronic pop rock classical\npop_19.mp3 pop electronic classical rock pop\npop_23.mp3 pop pop electronic rock classical\npop_35.mp3 pop rock pop electronic classical\npop_37.mp3 pop rock pop electronic classical\npop_39.mp3 pop electronic pop rock classical\npop_4.mp3 pop pop rock electronic classical\npop_47.mp3 pop electronic pop rock classical\npop_50.mp3 pop pop rock electronic classical\npop_59.mp3 pop pop rock electronic classical\npop_68.mp3 pop rock pop electronic classical\npop_73.mp3 pop pop rock electronic classical\npop_76.mp3 pop pop rock electronic classical\npop_77.mp3 pop pop rock electronic classical\npop_80.mp3 pop pop rock electronic classical\npop_87.mp3 pop rock pop electronic classical\nrock_1.mp3 rock rock pop electronic classical\nrock_13.mp3 rock pop classical rock electronic\nrock_22.mp3 rock rock pop electronic classical\nrock_24.mp3 rock rock pop electronic classical\nrock_27.mp3 rock pop rock electronic classical\nrock_35.mp3 rock rock pop electronic classical\nrock_36.mp3 rock rock pop electronic classical\nrock_41.mp3 rock electronic pop rock classical\nrock_51.mp3 rock rock pop electronic classical\nrock_60.mp3 rock electronic pop rock classical\nrock_61.mp3 rock electronic pop rock classical\nrock_62.mp3 rock rock pop electronic classical\nrock_66.mp3 rock rock pop electronic classical\nrock_69.mp3 rock rock pop electronic classical\nrock_7.mp3 rock rock pop electronic classical\nrock_72.mp3 rock rock pop electronic classical\nrock_73.mp3 rock pop rock electronic classical\nrock_77.mp3 rock rock pop electronic classical\nrock_79.mp3 rock rock pop electronic classical\nrock_8.mp3 rock rock pop electronic classical\nrock_91.mp3 rock rock pop electronic classical", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>pred1</th>\n <th>pred2</th>\n <th>pred3</th>\n <th>pred4</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_14.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_19.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_22.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>pop</td>\n <td>electronic</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_27.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_28.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_29.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_30.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_35.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_46.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_60.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_66.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>rock</td>\n <td>electronic</td>\n <td>pop</td>\n </tr>\n <tr>\n <th>classical_69.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n </tr>\n <tr>\n <th>classical_79.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_83.mp3</th>\n <td>classical</td>\n <td>electronic</td>\n <td>classical</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_87.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>pop</td>\n <td>electronic</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_89.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>rock</td>\n <td>pop</td>\n </tr>\n <tr>\n <th>classical_9.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_91.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>classical_99.mp3</th>\n <td>classical</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_100.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>classical</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_13.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_18.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_25.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>classical</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_31.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_32.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>classical</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_39.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_49.mp3</th>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_50.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_58.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_61.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_65.mp3</th>\n <td>electronic</td>\n <td>pop</td>\n <td>classical</td>\n <td>rock</td>\n <td>electronic</td>\n </tr>\n <tr>\n <th>electronic_69.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>classical</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_7.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_70.mp3</th>\n <td>electronic</td>\n <td>classical</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n </tr>\n <tr>\n <th>electronic_71.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_72.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>rock</td>\n <td>pop</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_74.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_77.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_80.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>rock</td>\n <td>pop</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_88.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>electronic_90.mp3</th>\n <td>electronic</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_12.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_15.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_16.mp3</th>\n <td>pop</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_19.mp3</th>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n <td>rock</td>\n <td>pop</td>\n </tr>\n <tr>\n <th>pop_23.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>electronic</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_35.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_37.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_39.mp3</th>\n <td>pop</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_4.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_47.mp3</th>\n <td>pop</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_50.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_59.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_68.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_73.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_76.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_77.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_80.mp3</th>\n <td>pop</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>pop_87.mp3</th>\n <td>pop</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_1.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_13.mp3</th>\n <td>rock</td>\n <td>pop</td>\n <td>classical</td>\n <td>rock</td>\n <td>electronic</td>\n </tr>\n <tr>\n <th>rock_22.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_24.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_27.mp3</th>\n <td>rock</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_35.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_36.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_41.mp3</th>\n <td>rock</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_51.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_60.mp3</th>\n <td>rock</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_61.mp3</th>\n <td>rock</td>\n <td>electronic</td>\n <td>pop</td>\n <td>rock</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_62.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_66.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_69.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_7.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_72.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_73.mp3</th>\n <td>rock</td>\n <td>pop</td>\n <td>rock</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_77.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_79.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_8.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n <tr>\n <th>rock_91.mp3</th>\n <td>rock</td>\n <td>rock</td>\n <td>pop</td>\n <td>electronic</td>\n <td>classical</td>\n </tr>\n </tbody>\n</table>\n</div>" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": " label classical electronic pop rock\nfilename \nclassical_14.mp3 classical 0.925965 0.065252 0.006648 0.002135\nclassical_19.mp3 classical 0.999422 0.000337 0.000159 0.000081\nclassical_22.mp3 classical 0.937748 0.020221 0.037593 0.004438\nclassical_27.mp3 classical 0.987477 0.005166 0.004478 0.002879\nclassical_28.mp3 classical 0.991594 0.004317 0.003297 0.000792\nclassical_29.mp3 classical 0.934995 0.056594 0.005521 0.002890\nclassical_30.mp3 classical 0.941419 0.043659 0.010996 0.003926\nclassical_35.mp3 classical 0.990555 0.007352 0.001354 0.000740\nclassical_46.mp3 classical 0.994143 0.004008 0.001441 0.000408\nclassical_60.mp3 classical 0.985542 0.011265 0.002424 0.000769\nclassical_66.mp3 classical 0.966900 0.010993 0.008897 0.013210\nclassical_69.mp3 classical 0.846153 0.026670 0.096475 0.030703\nclassical_79.mp3 classical 0.995726 0.003362 0.000490 0.000422\nclassical_83.mp3 classical 0.339155 0.396894 0.241362 0.022589\nclassical_87.mp3 classical 0.979284 0.005159 0.013257 0.002300\nclassical_89.mp3 classical 0.987688 0.009909 0.001083 0.001320\nclassical_9.mp3 classical 0.987905 0.008923 0.002648 0.000524\nclassical_91.mp3 classical 0.955672 0.032070 0.006733 0.005524\nclassical_99.mp3 classical 0.872370 0.099102 0.020143 0.008385\nelectronic_100.mp3 electronic 0.002803 0.984504 0.010454 0.002239\nelectronic_13.mp3 electronic 0.009089 0.515113 0.358117 0.117681\nelectronic_18.mp3 electronic 0.002440 0.984207 0.009388 0.003965\nelectronic_25.mp3 electronic 0.023760 0.961638 0.008666 0.005936\nelectronic_31.mp3 electronic 0.002302 0.947022 0.031520 0.019156\nelectronic_32.mp3 electronic 0.094542 0.766320 0.122180 0.016958\nelectronic_39.mp3 electronic 0.017045 0.759518 0.190532 0.032906\nelectronic_49.mp3 electronic 0.005468 0.299359 0.354465 0.340708\nelectronic_50.mp3 electronic 0.016311 0.766572 0.174612 0.042505\nelectronic_58.mp3 electronic 0.003758 0.831129 0.138715 0.026397\nelectronic_61.mp3 electronic 0.027519 0.902310 0.038091 0.032081\nelectronic_65.mp3 electronic 0.178326 0.080514 0.632677 0.108484\nelectronic_69.mp3 electronic 0.006539 0.969710 0.017215 0.006536\nelectronic_7.mp3 electronic 0.001669 0.844991 0.135112 0.018228\nelectronic_70.mp3 electronic 0.488814 0.430486 0.043033 0.037666\nelectronic_71.mp3 electronic 0.001112 0.981605 0.009047 0.008236\nelectronic_72.mp3 electronic 0.001482 0.772798 0.068921 0.156799\nelectronic_74.mp3 electronic 0.053454 0.651853 0.224057 0.070636\nelectronic_77.mp3 electronic 0.004201 0.959526 0.030937 0.005336\nelectronic_80.mp3 electronic 0.004195 0.787130 0.031932 0.176743\nelectronic_88.mp3 electronic 0.003710 0.910954 0.078526 0.006810\nelectronic_90.mp3 electronic 0.073273 0.719169 0.127858 0.079700\npop_12.mp3 pop 0.000399 0.002274 0.198433 0.798894\npop_15.mp3 pop 0.000688 0.002268 0.322026 0.675018\npop_16.mp3 pop 0.059263 0.503587 0.296528 0.140622\npop_19.mp3 pop 0.085615 0.859067 0.025328 0.029990\npop_23.mp3 pop 0.002328 0.331736 0.554105 0.111831\npop_35.mp3 pop 0.001280 0.003146 0.209664 0.785910\npop_37.mp3 pop 0.000415 0.001971 0.196326 0.801288\npop_39.mp3 pop 0.001335 0.711550 0.200485 0.086630\npop_4.mp3 pop 0.011750 0.147964 0.540080 0.300206\npop_47.mp3 pop 0.004379 0.495875 0.399103 0.100643\npop_50.mp3 pop 0.000827 0.002277 0.723224 0.273672\npop_59.mp3 pop 0.001025 0.005752 0.788940 0.204283\npop_68.mp3 pop 0.000767 0.002830 0.283495 0.712908\npop_73.mp3 pop 0.001074 0.002167 0.753129 0.243629\npop_76.mp3 pop 0.001763 0.021351 0.526564 0.450322\npop_77.mp3 pop 0.014080 0.108893 0.519505 0.357522\npop_80.mp3 pop 0.005269 0.148692 0.586638 0.259400\npop_87.mp3 pop 0.000806 0.008741 0.227895 0.762557\nrock_1.mp3 rock 0.000498 0.007474 0.273741 0.718287\nrock_13.mp3 rock 0.240288 0.033601 0.657906 0.068205\nrock_22.mp3 rock 0.000315 0.004363 0.088815 0.906506\nrock_24.mp3 rock 0.000537 0.004526 0.182356 0.812582\nrock_27.mp3 rock 0.001235 0.030715 0.568293 0.399758\nrock_35.mp3 rock 0.011880 0.112458 0.336041 0.539620\nrock_36.mp3 rock 0.001290 0.102655 0.428641 0.467414\nrock_41.mp3 rock 0.002773 0.609287 0.264932 0.123007\nrock_51.mp3 rock 0.000489 0.022371 0.239999 0.737141\nrock_60.mp3 rock 0.001606 0.959144 0.029477 0.009774\nrock_61.mp3 rock 0.010072 0.924942 0.037895 0.027092\nrock_62.mp3 rock 0.000158 0.002162 0.326680 0.671000\nrock_66.mp3 rock 0.001493 0.004598 0.281867 0.712041\nrock_69.mp3 rock 0.007581 0.062220 0.274924 0.655275\nrock_7.mp3 rock 0.000154 0.001654 0.289709 0.708482\nrock_72.mp3 rock 0.003920 0.006517 0.169623 0.819940\nrock_73.mp3 rock 0.011498 0.160793 0.455101 0.372607\nrock_77.mp3 rock 0.005786 0.027944 0.383715 0.582555\nrock_79.mp3 rock 0.020186 0.179854 0.312571 0.487390\nrock_8.mp3 rock 0.030377 0.050505 0.140137 0.778982\nrock_91.mp3 rock 0.000543 0.002976 0.185036 0.811445", + "text/html": "<div>\n<style scoped>\n .dataframe tbody tr th:only-of-type {\n vertical-align: middle;\n }\n\n .dataframe tbody tr th {\n vertical-align: top;\n }\n\n .dataframe thead th {\n text-align: right;\n }\n</style>\n<table border=\"1\" class=\"dataframe\">\n <thead>\n <tr style=\"text-align: right;\">\n <th></th>\n <th>label</th>\n <th>classical</th>\n <th>electronic</th>\n <th>pop</th>\n <th>rock</th>\n </tr>\n <tr>\n <th>filename</th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <th>classical_14.mp3</th>\n <td>classical</td>\n <td>0.925965</td>\n <td>0.065252</td>\n <td>0.006648</td>\n <td>0.002135</td>\n </tr>\n <tr>\n <th>classical_19.mp3</th>\n <td>classical</td>\n <td>0.999422</td>\n <td>0.000337</td>\n <td>0.000159</td>\n <td>0.000081</td>\n </tr>\n <tr>\n <th>classical_22.mp3</th>\n <td>classical</td>\n <td>0.937748</td>\n <td>0.020221</td>\n <td>0.037593</td>\n <td>0.004438</td>\n </tr>\n <tr>\n <th>classical_27.mp3</th>\n <td>classical</td>\n <td>0.987477</td>\n <td>0.005166</td>\n <td>0.004478</td>\n <td>0.002879</td>\n </tr>\n <tr>\n <th>classical_28.mp3</th>\n <td>classical</td>\n <td>0.991594</td>\n <td>0.004317</td>\n <td>0.003297</td>\n <td>0.000792</td>\n </tr>\n <tr>\n <th>classical_29.mp3</th>\n <td>classical</td>\n <td>0.934995</td>\n <td>0.056594</td>\n <td>0.005521</td>\n <td>0.002890</td>\n </tr>\n <tr>\n <th>classical_30.mp3</th>\n <td>classical</td>\n <td>0.941419</td>\n <td>0.043659</td>\n <td>0.010996</td>\n <td>0.003926</td>\n </tr>\n <tr>\n <th>classical_35.mp3</th>\n <td>classical</td>\n <td>0.990555</td>\n <td>0.007352</td>\n <td>0.001354</td>\n <td>0.000740</td>\n </tr>\n <tr>\n <th>classical_46.mp3</th>\n <td>classical</td>\n <td>0.994143</td>\n <td>0.004008</td>\n <td>0.001441</td>\n <td>0.000408</td>\n </tr>\n <tr>\n <th>classical_60.mp3</th>\n <td>classical</td>\n <td>0.985542</td>\n <td>0.011265</td>\n <td>0.002424</td>\n <td>0.000769</td>\n </tr>\n <tr>\n <th>classical_66.mp3</th>\n <td>classical</td>\n <td>0.966900</td>\n <td>0.010993</td>\n <td>0.008897</td>\n <td>0.013210</td>\n </tr>\n <tr>\n <th>classical_69.mp3</th>\n <td>classical</td>\n <td>0.846153</td>\n <td>0.026670</td>\n <td>0.096475</td>\n <td>0.030703</td>\n </tr>\n <tr>\n <th>classical_79.mp3</th>\n <td>classical</td>\n <td>0.995726</td>\n <td>0.003362</td>\n <td>0.000490</td>\n <td>0.000422</td>\n </tr>\n <tr>\n <th>classical_83.mp3</th>\n <td>classical</td>\n <td>0.339155</td>\n <td>0.396894</td>\n <td>0.241362</td>\n <td>0.022589</td>\n </tr>\n <tr>\n <th>classical_87.mp3</th>\n <td>classical</td>\n <td>0.979284</td>\n <td>0.005159</td>\n <td>0.013257</td>\n <td>0.002300</td>\n </tr>\n <tr>\n <th>classical_89.mp3</th>\n <td>classical</td>\n <td>0.987688</td>\n <td>0.009909</td>\n <td>0.001083</td>\n <td>0.001320</td>\n </tr>\n <tr>\n <th>classical_9.mp3</th>\n <td>classical</td>\n <td>0.987905</td>\n <td>0.008923</td>\n <td>0.002648</td>\n <td>0.000524</td>\n </tr>\n <tr>\n <th>classical_91.mp3</th>\n <td>classical</td>\n <td>0.955672</td>\n <td>0.032070</td>\n <td>0.006733</td>\n <td>0.005524</td>\n </tr>\n <tr>\n <th>classical_99.mp3</th>\n <td>classical</td>\n <td>0.872370</td>\n <td>0.099102</td>\n <td>0.020143</td>\n <td>0.008385</td>\n </tr>\n <tr>\n <th>electronic_100.mp3</th>\n <td>electronic</td>\n <td>0.002803</td>\n <td>0.984504</td>\n <td>0.010454</td>\n <td>0.002239</td>\n </tr>\n <tr>\n <th>electronic_13.mp3</th>\n <td>electronic</td>\n <td>0.009089</td>\n <td>0.515113</td>\n <td>0.358117</td>\n <td>0.117681</td>\n </tr>\n <tr>\n <th>electronic_18.mp3</th>\n <td>electronic</td>\n <td>0.002440</td>\n <td>0.984207</td>\n <td>0.009388</td>\n <td>0.003965</td>\n </tr>\n <tr>\n <th>electronic_25.mp3</th>\n <td>electronic</td>\n <td>0.023760</td>\n <td>0.961638</td>\n <td>0.008666</td>\n <td>0.005936</td>\n </tr>\n <tr>\n <th>electronic_31.mp3</th>\n <td>electronic</td>\n <td>0.002302</td>\n <td>0.947022</td>\n <td>0.031520</td>\n <td>0.019156</td>\n </tr>\n <tr>\n <th>electronic_32.mp3</th>\n <td>electronic</td>\n <td>0.094542</td>\n <td>0.766320</td>\n <td>0.122180</td>\n <td>0.016958</td>\n </tr>\n <tr>\n <th>electronic_39.mp3</th>\n <td>electronic</td>\n <td>0.017045</td>\n <td>0.759518</td>\n <td>0.190532</td>\n <td>0.032906</td>\n </tr>\n <tr>\n <th>electronic_49.mp3</th>\n <td>electronic</td>\n <td>0.005468</td>\n <td>0.299359</td>\n <td>0.354465</td>\n <td>0.340708</td>\n </tr>\n <tr>\n <th>electronic_50.mp3</th>\n <td>electronic</td>\n <td>0.016311</td>\n <td>0.766572</td>\n <td>0.174612</td>\n <td>0.042505</td>\n </tr>\n <tr>\n <th>electronic_58.mp3</th>\n <td>electronic</td>\n <td>0.003758</td>\n <td>0.831129</td>\n <td>0.138715</td>\n <td>0.026397</td>\n </tr>\n <tr>\n <th>electronic_61.mp3</th>\n <td>electronic</td>\n <td>0.027519</td>\n <td>0.902310</td>\n <td>0.038091</td>\n <td>0.032081</td>\n </tr>\n <tr>\n <th>electronic_65.mp3</th>\n <td>electronic</td>\n <td>0.178326</td>\n <td>0.080514</td>\n <td>0.632677</td>\n <td>0.108484</td>\n </tr>\n <tr>\n <th>electronic_69.mp3</th>\n <td>electronic</td>\n <td>0.006539</td>\n <td>0.969710</td>\n <td>0.017215</td>\n <td>0.006536</td>\n </tr>\n <tr>\n <th>electronic_7.mp3</th>\n <td>electronic</td>\n <td>0.001669</td>\n <td>0.844991</td>\n <td>0.135112</td>\n <td>0.018228</td>\n </tr>\n <tr>\n <th>electronic_70.mp3</th>\n <td>electronic</td>\n <td>0.488814</td>\n <td>0.430486</td>\n <td>0.043033</td>\n <td>0.037666</td>\n </tr>\n <tr>\n <th>electronic_71.mp3</th>\n <td>electronic</td>\n <td>0.001112</td>\n <td>0.981605</td>\n <td>0.009047</td>\n <td>0.008236</td>\n </tr>\n <tr>\n <th>electronic_72.mp3</th>\n <td>electronic</td>\n <td>0.001482</td>\n <td>0.772798</td>\n <td>0.068921</td>\n <td>0.156799</td>\n </tr>\n <tr>\n <th>electronic_74.mp3</th>\n <td>electronic</td>\n <td>0.053454</td>\n <td>0.651853</td>\n <td>0.224057</td>\n <td>0.070636</td>\n </tr>\n <tr>\n <th>electronic_77.mp3</th>\n <td>electronic</td>\n <td>0.004201</td>\n <td>0.959526</td>\n <td>0.030937</td>\n <td>0.005336</td>\n </tr>\n <tr>\n <th>electronic_80.mp3</th>\n <td>electronic</td>\n <td>0.004195</td>\n <td>0.787130</td>\n <td>0.031932</td>\n <td>0.176743</td>\n </tr>\n <tr>\n <th>electronic_88.mp3</th>\n <td>electronic</td>\n <td>0.003710</td>\n <td>0.910954</td>\n <td>0.078526</td>\n <td>0.006810</td>\n </tr>\n <tr>\n <th>electronic_90.mp3</th>\n <td>electronic</td>\n <td>0.073273</td>\n <td>0.719169</td>\n <td>0.127858</td>\n <td>0.079700</td>\n </tr>\n <tr>\n <th>pop_12.mp3</th>\n <td>pop</td>\n <td>0.000399</td>\n <td>0.002274</td>\n <td>0.198433</td>\n <td>0.798894</td>\n </tr>\n <tr>\n <th>pop_15.mp3</th>\n <td>pop</td>\n <td>0.000688</td>\n <td>0.002268</td>\n <td>0.322026</td>\n <td>0.675018</td>\n </tr>\n <tr>\n <th>pop_16.mp3</th>\n <td>pop</td>\n <td>0.059263</td>\n <td>0.503587</td>\n <td>0.296528</td>\n <td>0.140622</td>\n </tr>\n <tr>\n <th>pop_19.mp3</th>\n <td>pop</td>\n <td>0.085615</td>\n <td>0.859067</td>\n <td>0.025328</td>\n <td>0.029990</td>\n </tr>\n <tr>\n <th>pop_23.mp3</th>\n <td>pop</td>\n <td>0.002328</td>\n <td>0.331736</td>\n <td>0.554105</td>\n <td>0.111831</td>\n </tr>\n <tr>\n <th>pop_35.mp3</th>\n <td>pop</td>\n <td>0.001280</td>\n <td>0.003146</td>\n <td>0.209664</td>\n <td>0.785910</td>\n </tr>\n <tr>\n <th>pop_37.mp3</th>\n <td>pop</td>\n <td>0.000415</td>\n <td>0.001971</td>\n <td>0.196326</td>\n <td>0.801288</td>\n </tr>\n <tr>\n <th>pop_39.mp3</th>\n <td>pop</td>\n <td>0.001335</td>\n <td>0.711550</td>\n <td>0.200485</td>\n <td>0.086630</td>\n </tr>\n <tr>\n <th>pop_4.mp3</th>\n <td>pop</td>\n <td>0.011750</td>\n <td>0.147964</td>\n <td>0.540080</td>\n <td>0.300206</td>\n </tr>\n <tr>\n <th>pop_47.mp3</th>\n <td>pop</td>\n <td>0.004379</td>\n <td>0.495875</td>\n <td>0.399103</td>\n <td>0.100643</td>\n </tr>\n <tr>\n <th>pop_50.mp3</th>\n <td>pop</td>\n <td>0.000827</td>\n <td>0.002277</td>\n <td>0.723224</td>\n <td>0.273672</td>\n </tr>\n <tr>\n <th>pop_59.mp3</th>\n <td>pop</td>\n <td>0.001025</td>\n <td>0.005752</td>\n <td>0.788940</td>\n <td>0.204283</td>\n </tr>\n <tr>\n <th>pop_68.mp3</th>\n <td>pop</td>\n <td>0.000767</td>\n <td>0.002830</td>\n <td>0.283495</td>\n <td>0.712908</td>\n </tr>\n <tr>\n <th>pop_73.mp3</th>\n <td>pop</td>\n <td>0.001074</td>\n <td>0.002167</td>\n <td>0.753129</td>\n <td>0.243629</td>\n </tr>\n <tr>\n <th>pop_76.mp3</th>\n <td>pop</td>\n <td>0.001763</td>\n <td>0.021351</td>\n <td>0.526564</td>\n <td>0.450322</td>\n </tr>\n <tr>\n <th>pop_77.mp3</th>\n <td>pop</td>\n <td>0.014080</td>\n <td>0.108893</td>\n <td>0.519505</td>\n <td>0.357522</td>\n </tr>\n <tr>\n <th>pop_80.mp3</th>\n <td>pop</td>\n <td>0.005269</td>\n <td>0.148692</td>\n <td>0.586638</td>\n <td>0.259400</td>\n </tr>\n <tr>\n <th>pop_87.mp3</th>\n <td>pop</td>\n <td>0.000806</td>\n <td>0.008741</td>\n <td>0.227895</td>\n <td>0.762557</td>\n </tr>\n <tr>\n <th>rock_1.mp3</th>\n <td>rock</td>\n <td>0.000498</td>\n <td>0.007474</td>\n <td>0.273741</td>\n <td>0.718287</td>\n </tr>\n <tr>\n <th>rock_13.mp3</th>\n <td>rock</td>\n <td>0.240288</td>\n <td>0.033601</td>\n <td>0.657906</td>\n <td>0.068205</td>\n </tr>\n <tr>\n <th>rock_22.mp3</th>\n <td>rock</td>\n <td>0.000315</td>\n <td>0.004363</td>\n <td>0.088815</td>\n <td>0.906506</td>\n </tr>\n <tr>\n <th>rock_24.mp3</th>\n <td>rock</td>\n <td>0.000537</td>\n <td>0.004526</td>\n <td>0.182356</td>\n <td>0.812582</td>\n </tr>\n <tr>\n <th>rock_27.mp3</th>\n <td>rock</td>\n <td>0.001235</td>\n <td>0.030715</td>\n <td>0.568293</td>\n <td>0.399758</td>\n </tr>\n <tr>\n <th>rock_35.mp3</th>\n <td>rock</td>\n <td>0.011880</td>\n <td>0.112458</td>\n <td>0.336041</td>\n <td>0.539620</td>\n </tr>\n <tr>\n <th>rock_36.mp3</th>\n <td>rock</td>\n <td>0.001290</td>\n <td>0.102655</td>\n <td>0.428641</td>\n <td>0.467414</td>\n </tr>\n <tr>\n <th>rock_41.mp3</th>\n <td>rock</td>\n <td>0.002773</td>\n <td>0.609287</td>\n <td>0.264932</td>\n <td>0.123007</td>\n </tr>\n <tr>\n <th>rock_51.mp3</th>\n <td>rock</td>\n <td>0.000489</td>\n <td>0.022371</td>\n <td>0.239999</td>\n <td>0.737141</td>\n </tr>\n <tr>\n <th>rock_60.mp3</th>\n <td>rock</td>\n <td>0.001606</td>\n <td>0.959144</td>\n <td>0.029477</td>\n <td>0.009774</td>\n </tr>\n <tr>\n <th>rock_61.mp3</th>\n <td>rock</td>\n <td>0.010072</td>\n <td>0.924942</td>\n <td>0.037895</td>\n <td>0.027092</td>\n </tr>\n <tr>\n <th>rock_62.mp3</th>\n <td>rock</td>\n <td>0.000158</td>\n <td>0.002162</td>\n <td>0.326680</td>\n <td>0.671000</td>\n </tr>\n <tr>\n <th>rock_66.mp3</th>\n <td>rock</td>\n <td>0.001493</td>\n <td>0.004598</td>\n <td>0.281867</td>\n <td>0.712041</td>\n </tr>\n <tr>\n <th>rock_69.mp3</th>\n <td>rock</td>\n <td>0.007581</td>\n <td>0.062220</td>\n <td>0.274924</td>\n <td>0.655275</td>\n </tr>\n <tr>\n <th>rock_7.mp3</th>\n <td>rock</td>\n <td>0.000154</td>\n <td>0.001654</td>\n <td>0.289709</td>\n <td>0.708482</td>\n </tr>\n <tr>\n <th>rock_72.mp3</th>\n <td>rock</td>\n <td>0.003920</td>\n <td>0.006517</td>\n <td>0.169623</td>\n <td>0.819940</td>\n </tr>\n <tr>\n <th>rock_73.mp3</th>\n <td>rock</td>\n <td>0.011498</td>\n <td>0.160793</td>\n <td>0.455101</td>\n <td>0.372607</td>\n </tr>\n <tr>\n <th>rock_77.mp3</th>\n <td>rock</td>\n <td>0.005786</td>\n <td>0.027944</td>\n <td>0.383715</td>\n <td>0.582555</td>\n </tr>\n <tr>\n <th>rock_79.mp3</th>\n <td>rock</td>\n <td>0.020186</td>\n <td>0.179854</td>\n <td>0.312571</td>\n <td>0.487390</td>\n </tr>\n <tr>\n <th>rock_8.mp3</th>\n <td>rock</td>\n <td>0.030377</td>\n <td>0.050505</td>\n <td>0.140137</td>\n <td>0.778982</td>\n </tr>\n <tr>\n <th>rock_91.mp3</th>\n <td>rock</td>\n <td>0.000543</td>\n <td>0.002976</td>\n <td>0.185036</td>\n <td>0.811445</td>\n </tr>\n </tbody>\n</table>\n</div>" + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -944,9 +796,9 @@ "\n", " return ans, ids\n", "\n", - "clf.fit(X_pca, y)\n", "prediction_lists, percentage_lists = convert_to_labels(clf.predict_proba(X_test_pca), index2classname, k=4)\n", "\n", + "genres = [\"classical\", \"electronic\", \"pop\", \"rock\"]\n", "# # Write to outputs\n", "subm = pd.DataFrame(index=test.index)\n", "subm['label'] = test.label.values\n", @@ -955,50 +807,174 @@ "subm['pred3'] = [prediction_list[2] for prediction_list in prediction_lists]\n", "subm['pred4'] = [prediction_list[3] for prediction_list in prediction_lists]\n", "\n", + "\n", + "proba_df = pd.DataFrame(index=test.index)\n", + "proba_df['label'] = test.label.values\n", + "proba_df[genres[0]] = proba[:,0:1]\n", + "proba_df[genres[1]] = proba[:,1:2]\n", + "proba_df[genres[2]] = proba[:,2:3]\n", + "proba_df[genres[3]] = proba[:,3:4]\n", "pd.set_option('display.max_rows', None)\n", - "print(subm)\n", + "# print(subm)\n", + "display(subm)\n", + "display(proba_df)\n", "pd.reset_option('display.max_rows')" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/plain": "[Text(0.5, 144.1333333333333, 'Prediction'),\n Text(307.3333333333333, 0.5, 'Actual')]" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "<Figure size 3840x2880 with 2 Axes>", + "image/png": "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7XwAAAAAAAAAAAAAALuaNm1axvE99tgjjj766CylyZ1f/OIXce+998by5cvrLblERGzbti3mz58fd999d1x55ZXxoQ99KK677rpYuHBhFtK2TYouUMWkSZOqva8sl/zzn/+M4uLi3V7nwgsvrHGtatnlsccei9NOOy1uvfXWeP3116OsrKzavFdeeSVuueWW+PCHPxzPPvtsrXtUrnfWWWdFt27ddjsbAAAAAAAAAAAAAEBVb775ZsyePTvjnLPPPjs6dOiQpUSt15YtW2Lq1Klx9tlnx+c///lYvnx5riO1Ovm5DgBJcuSRR1Y7LaVSWVlZzJo1K0477bTdWmfkyJFx0kknxd/+9rdqJ7FULbu8//77cdttt8Vtt90WqVQqunfvHh06dIgNGzZERUXFzvkRUedpLh06dIhPfepTTfqeAQAAAAAAAAAAAID2bdq0afWeXnLuuedmKU3b8dhjj8WsWbPii1/8Ylx22WW1PqtOTU50gSoGDBgQ48ePr/Uf0nfffXeD1rr66qujS5cuEVG9nFJZdqksr6TT6aioqIgNGzbE2rVro7y8fOf1qvOqqhy7+OKLY/DgwY34TgEAAAAAAAAAAAAAIioqKuL+++/POOfQQw+NffbZJzuB2pht27bF9773vfj85z8fW7ZsyXWcVsGJLrCLyZMnx9y5c3e+ryyazJ07N15++eU48MADd2udwYMHx7XXXhv/+Z//WaOwUrXEUp+qJZfK+alUKiZMmBBXXXVVQ741AAAAAAAAAAAAANqJu+++O+65556s7nnhhRfGRRddlNU9abqnnnoqVq1alXGO01ya7m9/+1tceumlcccdd0RhYWGu4ySaogvsYvLkyfHd7343ysvLq11Pp9Px61//Om699dbdXuu8886Lt956K375y1/WWnaptGvhpbYTZSrnpNPpGDRoUPzoRz+KDh067HYWAAAAAAAAAAAAgAarqMh1Ahpp3bp1sWTJkqzvSeszbdq0jONFRUVxyimnZClN7uTn58eBBx4Yo0aNiuHDh8fw4cOjb9++UVRUFEVFRVFRUREbNmyIDRs2xOrVq+OFF16I2bNnxyuvvBKlpaW7tcdLL70UV155Zdxxxx3RsWPHFv6OWi9FF9hFnz594ne/+12UlJTUGGtMseTLX/5yFBYWxo9+9KOdJ7lUqq30sqtd548ePTr+93//N/bY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AAAAAAAAABERK1asiBdeeCHjnHPPPbfG88k03caNG+OWW26pd96pp56ahTSti6IL7LB06dJq7ytPTRkxYkTk5+fnIlI1lYWbXU+biYhYtmxZDhIBAAAAAAAAAAAAAEk2bdq0Wp8/rtShQ4c466yzsheonaioqIirr7463n///YzzDj300Bg6dGiWUrUeuX96HxJi+fLlNa6lUqlEnOZSacSIETF//vwa1xVdAAAAAAAAAAAAAICqysvLY/r06RnnHH300dG/f/8sJcrs+OOPj5UrV9Y5fuihh8Zdd93V6PVffPHFmDBhQoufXlNRURE33HBDzJw5s965V1xxRYtmaa2c6AI7bNy4sdZ/aPXq1SsHaWq3a5ZUKhXpdDrWrVuXo0QAAAAAAAAAAAAAQBI99dRT8d5772WcM2XKlCylyb0bb7wxzj333Hj88cejoqKiRfZ4//3347LLLos///nP9c498sgj46ijjmqRHK2dE11gh+Li4lqvd+/ePctJ6lZXls2bN2c5CQAAAAAAAAAAANAupFvmYXCg5U2bNi3jeN++fePYY4/NTpiEWLBgQXz2s5+NvffeO84777w488wzm+VEm7KysvjLX/4SP/jBD+L999+vd37Xrl3jhhtuaPK+bZWiC+xQV1lE0QUAAAAAAAAAAAAAWr/Zs2fHG2+80aDPrF+/vt459957b4OzTJw4MYYMGdLgz+2udevWxcyZMzPOOfPMMyM/v31WCt5888344Q9/GLfcckuMGzcujjnmmJg4cWKMHTs2OnXqtNvrLFu2LGbNmhV33nlnvPPOO7v9ue9+97ux9957NyZ6u9A+/1cJtUin07VeLy0tzXKSupWVldV6fdu2bVlOAgAAAAAAAAAAAACty7Rp02L69OnNvu7111/f4M/cfPPNLVp0eeCBB+p9Dvrcc89tsf1bi4qKipg7d27MnTs3IiIKCgpi8ODBMWzYsNhzzz2jT58+UVhYGB07dozS0tL44IMPYsOGDbF69ep48cUXY82aNQ3e8+qrr46TTz65ub+VNkXRBXbo0qVLFBcX17he27VcqStLx44ds5wEAAAAAAAAAAAAAEiqadOmZRw/6KCDYt99981SmtajtLQ0li1bFsuWLWv2tfPy8uJrX/taXHrppc2+dluj6AI7dO3atdYiSUOOkGppK1eurPV6ly5dspwEAAAAAAAAAAAAAEiil156KRYvXpxxzpQpU7KUhoiInj17xve///04+uijcx2lVcjLdQBIij333DPS6XSN64sWLcpBmtrtmqUyb+/evXMRBwAAAAAAAAAAAABImKlTp2Yc79atW5x66qlZSsPpp58ejzzyiJJLAyi6wA6DBg2q9j6VSkU6nY6FCxfGtm3bcpTq37Zu3RoLFiyIVCpV7XoqlYq99torR6kAAAAAAAAAAAAAgKQoKSmJRx55JOOcyZMnR9euXbOUKDkmTpwYvXr1yspeeXl5ccIJJ8S0adPihz/8YfTp0ycr+7YV+bkOAEmx33777fw6nU7vLJSUlpbGzJkz45RTTslVtIiIePLJJ6O0tHRnAadq4WXo0KE5TAYAAAAAAAAAAAAAJMGjjz4axcXFGeece+65WUqTLNdff31cd9118frrr8fzzz8fc+bMiQULFsTKlSsjnU43ef0OHTrE6NGj46STToqPfOQjseeeezZD6vYplW6O/4tAG/DMM8/E5ZdfXq1IUvnr4YcfHnfccUdO833yk5+MZ599ttZ8t9xyS86LOEm27bVZuY4AANBq7TXpilxHAABotdaXZP6PSAAAAADQEsq2r8x1BNqYrf+8N9cRaKTOh56X6wjQKhQXF8err74aixcvjnfeeSfefffdWLVqVaxZsyY2b94cW7duja1bt0Z5eXl07NgxOnfuHD169Ih+/frFgAEDYv/9948RI0bEhAkTonv37rn+dtoEJ7rADuPGjYv8/PwoLy+vUSZ57rnnYt68eTF+/PicZHvxxRerlVx2dfDBB+cgFQAAAAAAAAAAANDmVVTkOgFAiyosLIyJEyfGxIkTcx2FHfJyHQCSorCwMA4//PBaiyTpdDpuuOGGKCsry3qu0tLS+OY3v1ntWtUizrhx46Jfv35ZzwUAAAAAAAAAAAAAAM1N0QWqOPXUU6u9ryyTREQsWrQobrzxxqxnuvHGG2PRokV1nuYyefLkrGcCAAAAAAAAAAAAAICWoOgCVZx++unRu3fviIidBZfKsks6nY6pU6fG97///azl+f73vx9Tp06tVnKpzBUR0a1btzjnnHOylgcAAAAAAAAAAAAAAFqSogtU0bFjx7joootqnJxStexyxx13xJVXXhlr165tsRxr166NK6+8Mu64445axyvzfPSjH43CwsIWywEAAAAAAAAAAAAAANmk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oNFRdIFqvPPOO3HhhRfGypUrI5vNViq47FgyqWmtqj017duV91b3DAAAAAAAAAAAAAAAGjJFF6jCihUrYty4cbFixYrIZDLlpZKK5ZS9LZpU9f7qyi/VTZMBAAAAAAAAAAAAAIDGRNEFqnDttdfGkiVLaiy4VHyWl5cXHTt2jJKSkigqKopMJlM+Babsz+7du0dExLp162L9+vVVToWpeHbFr/Pz86Nr165VZq3uOQAAAAAAAAAAAAAANDSKLrCDyZMnx9SpU6stuZR9P2LEiBgzZkwcd9xx0b1798jLy4sHH3wwrr/++irP/b//+7/yr7PZbKxZsybef//9ePnll+Pll1+OF154IdasWVOp8FKmpKQkhg8fHtdff30UFhbW9UcGAAAAAAAAAAAAAIBUUHSBCoqLi+PHP/7xTiWXit/37Nkzrr/++jj++OP3+J5MJhMdOnSIDh06xODBg+Piiy+OLVu2xOTJk+O+++6LuXPnlt9ZVq559NFHY8aMGfGLX/wi+vbtu3cfFAAAAAAAAAAAAGBXZEuTTgBAE5OXdABIk7/97W+xZMmSiKhccslms5HNZqNv375x//3371XJpTotW7aMc889Nx577LH4xje+ES1btixfK8uwaNGiOP/88+PVV1+t8/sBAAAAAAAAAAAAACBpii5QwYMPPljp+7KpKhERnTp1igkTJkSXLl3qPceFF14Yf/zjH6Nfv36VCjeZTCbWrFkTl112Wbz77rv1ngMAAAAAAAAAAAAAAHJJ0QW227BhQ7z44ouVyi0R/57skslk4rrrrot99tknZ3n69u0bEydOjIEDB5aXXSKiUtlly5YtOcsDAAAAAAAAAAAAAAD1TdEFtps+fXoUFxdHxH/KLWUFk4EDB8app56a80zt2rWLn//859G1a9ed1t59990YP358zjMBAAAAAAAAAAAAAEB9UXSB7V5//fUqn2cymTj77LNznOY/unTpEjfddNNOU12y2Wz85je/iUWLFiWWDQAAAAAAAAAAAAAA6pKiC2w3Z86c8q8zmUylrz/xiU8kEanc8ccfH0cddVSlsktERElJSUycODGhVAAAAAAAAAAAAAAAULcUXWC7xYsXV/m8V69e0bZt270+v6SkZK/ef8kll1T6vmyqy0MPPbRTAQYAAAAAAAAAAAAAABoiRRfYbtmyZZUmuWSz2chkMjF4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nhzf//73Y9WqVXt1zrZt2+KRRx6JP//5zzFu3Li46qqrokWLFnWUsvFTdIEKzj777Lj33nvLvy8rk2QymSguLo6rrroqJk2aFL169cpJnnfffTeuvvrqKC4uLi/c7Oiss87KSRYAAAAAAAAAAAAAaKhWrFhRXmgpe61YsSLpWKTE1q1b49vf/nY89NBDdXrutm3b4uc//3k8//zzMX78+OjWrVudnt9YKbpABf3794+jjz46nnvuufJiScWyy4oVK+KCCy6I8ePHx2GHHVavWV577bW4+uqrY8WKFZVKLmVfZzKZOPzww+NDH/pQveYAAAAAAAAAAAAAgIbus5/9bLz11ltJxyCFNm/eHJdeemlMnz693u7417/+FWeffXZMnDgxZ0MXGrK8pANA2nzxi1+MTCYTEVH+Z8WSybJly+L888+PH//4x1FSUlLn95eUlMSPf/zjGDt2bCxbtqw8Q3VZAQAAAAAAAAAAAOpNaalXQ30Btdq2bVtceeWV9VpyKbNs2bK45JJL4oMPPqj3uxo6E11gB0cccUScdtpp8cgjj1QqmVSc7FJcXBx33313PPHEE3HxxRfHqaeeGi1bttyre7ds2RKPPvpoTJgwIebNm1d+X9ndEZWnuXzkIx+Jo48+eq/uBAAAAAAAAAAAAABoqm677bZ49tlna93XqlWr+MhHPhInnnhiDBw4MDp37hzNmjWL1atXx5w5c+K5556LRx99NFasWFHjOYsWLYqrr746Jk2aFM2bN6+rj9HoZLJlv0EPlFuzZk2cccYZ5W25iv+YVFU+adu2bZx66qlx5JFHxhFHHBHdunXbpXuWLl0ar776akyfPj0ee+yxWLduXaVzd7yn7Ptu3brFww8/HJ06daqDT9v4bXnr6aQjAAA0WPuN+HzSEQAAGqzVm9YnHQEAAACAJqh466KkI9DIbPr1fycdgT3U6rP/k3SEVDn99NPjrbfeqpezZ8+eXS/n1uSEE06IRYuq/nf+kCFD4pOf/GS93j906NDo06dPvd5R35588sm44oorat136qmnxle/+tXo2rVrjfs2b94cv/71r+Ouu+6K4uLiGvd+5jOfia997Wu7lbcpMdEFqtC+ffu444474qKLLopt27aVT1KJqDzZJZvNRjabjbVr18akSZNi0qRJERHRpUuX6N27d7Rr1y7atm0b7dq1i4iItWvXxrp162Lt2rXx7rvvxrJly8rvrK1MU/Z9ixYt4o477lByAQAAAAAAAAAAAIB61LNnzzjwwAN3aeJHmvTu3TvOOeecpGOk2saNG+PGG2+scU8mk4nrr78+xo4du0tnFhQUxJVXXhkjRoyIyy67LNavr/4/inbvvffGaaedFgMHDtyt3E2FogtU44gjjojbb789vvzlL0dJSclOZZeI/xRQKj6LiFi2bFksX768xvN3HKZU3VkVSy75+flx++23x4c+9KE9/FQAAAAAAAAAAAAAwI66d+8egwYNikMPPTQGDRoUgwYNio4dO8bChQvjxBNPTDoedezuu++OpUuX1rjna1/72i6XXCoaNmxY/OIXv4iLL744tm3bVuWe0tLS+M53vhO///3vd/v8pkDRBWpw0kknxf/8z//EtddeG1u3bq1UdomoXHipWFSpuFadHfdX9Z6KJZeCgoL4wQ9+ECeddNIefRYAAAAAAAAAAAAAIKJr167lZZZBgwbF4MGDo1OnTknHIkdWr14dEyZMqHHPRz/60bjkkkv2+I6hQ4fGV77ylfje975X7Z6XX345nnnmmTj22GP3+J7GStEFajFmzJjYd99946qrrooVK1ZUKp+UqaqgUlWRZUc1lWEq3tO9e/e48847Y9CgQXvyEQAAAAAAAAAAAACgSbvggguic+fOMWjQoOjSpUvScUjQxIkTY9OmTdWut2nTJr71rW/t9T0XXXRRPPLII/H6669Xu+dXv/qVoksV8pIOAA3BEUccEX/605/i4x//+E5TXKqbzLIrrx1VPLNsz5lnnhmPPfaYkgsAAAAAAAAAAAAA7KFzzjknRo8ereTSxBUXF8ekSZNq3DNu3Ljo3LnzXt+VyWTiK1/5So17XnjhhZgzZ85e39XYKLrALmrfvn388Ic/jN/97ndx+OGHVyqrVCyo7MoklzJVva/s3COPPDIeeOCBuOWWW6KwsLBePhMAAAAAAAAAAABAjbKlXg31Bexk6tSpsXLlymrXCwoKYuzYsXV238iRI2PgwIE17nnsscfq7L7GQtEFdtPw4cPj/vvvj4kTJ8YnPvGJKCgo2GlKy44FlupeEZWnv7Ru3To++clPxv/+7//GhAkT4vDDD0/yowIAAAAAAAAAAAAANBqPPvpojesnn3xydOzYsU7vPOecc2pcnzJlSvnvofNv+UkHgIZq6NChMXTo0Ni6dWu88MIL8dxzz8WsWbPizTffjA0bNuzSGW3bto1DDjkkBg0aFB/+8Idj+PDh0bx583pODgAAAAAAAAAAAADQtJSWlsY///nPGvd8/OMfr/N7x4wZEzfffHMUFxdXub548eKYPXt2HHzwwXV+d0Ol6AJ7qUWLFnHcccfFcccdV/5s1apV8cEHH8SKFSti8+bNsXnz5oj49yirgoKC6NKlS+y777513vYDAAAAAAAAAAAAAGBns2bNirVr11a73qJFixg5cmSd39upU6cYPHhwvPLKK9XumTp1qqJLBYouUA86deoUnTp1SjoGAAAAAAAAAAAAAAAR8fzzz9e4/qEPfSgKCgrq5e5jjjmmxqLLc889F5/97Gfr5e6GKC/pAAAAAAAAAAAAAAAAAPXpX//6V43rH/rQh+rt7iFDhtS4PmvWrHq7uyFSdAEAAAAAAAAAAAAAABq1N954o8b1Qw89tN7uHjRoUI3rRUVFsXjx4nq7v6FRdAEAAAAAAAAAAAAAABqtXSmSDBgwoN7u79ChQ3Tr1q3GPbUVcZqS/KQDAAAAAAAAAAAAAAAAda+kpCQWLlwYixcvjtWrV8fmzZsjLy8vWrVqFYWFhbHvvvvGvvvuG23atEk6ar169913a1xv3rx59OjRo14zHHDAAbF06dJq12vL2JQougAAAAAAAAAAAAAAVcqWZpOOAOymxYsXx09+8pN4/vnn480334xNmzbV+p79998/Dj300DjqqKNi1KhR9V76yLWFCxfWuN6zZ89o1qxZvWbo1atXTJ8+vdr12jI2JYouAAAAAAAAAAAAAADQSEybNi2mTZu2W+95//334/3334/HH388IiKGDRsW5557bpxyyimRn9/waweLFi2qcb1r1671nqG2OxRd/iMv6QAAAAAAAAAAAAAAAEB6zJgxI77yla/EKaecEn/+85+TjrPXli1bVuN6ly5d6j1D586da1yvLWNTougCAAAAAAAAAAAAAADs5N13341rrrkmLr/88li+fHnScfbY6tWra1zv1KlTvWeorehSVFRU7xkaCkUXAAAAAAAAAAAAAACgWv/4xz/irLPOilmzZiUdZY+sWbOmxvXCwsJ6z1DbHbVlbErykw4AAAAAAAAAAAAAAEDdmjhxYkyaNCmnd55//vkxduzYnN5J7ixbtiwuuOCC+PnPfx4jRoxIOs5uWbt2bY3rbdq0qfcMtd2xadOm2Lp1a7Ro0aLes6SdogsAAAAAAAAAAAAAQCOzatWqmDdvXs7vJFm9evWKww47LAYMGBD9+/eP/fbbL9q2bRuFhYVRUFAQa9eujdWrV0dRUVHMmjUrXnzxxZgxY0asXr16l87ftGlTXH755XHvvffGYYcdVs+fpu5s2bKlxvXWrVvXe4ZduWPLli2KLqHoAgAAAAAAAAAAAAAADdbw4cPjxBNPjFGjRkWfPn1q3NupU6fo1KlTREQMHTo0Lr744igpKYnHH388fvWrX8Ubb7xR630bN26ML37xi/HQQw+Vn5V227Ztq3G9WbNm9Z5hV+6oLWdToegCAAAAAAAAAAAAAAANSLt27eLEE0+M8847r9ZyS22aNWsWH//4x+PjH/94TJkyJb71rW/Fhg0banzPkiVL4lvf+laMHz9+r+7OlTQUXfLza69vKLr8m6ILAAAAAAAAAAAAAFC10tKkEwBV+MMf/rBLxYnd9YlPfCIGDRoUX/ziF2P27Nk17v373/8eTz/9dIwaNarOc9S10lr+XZaLokteXl6te0pKSuo9R0NQ+08KAAAAAAAAAAAAAABIjfoouZTp3bt33HfffXHwwQfXuvdHP/pRveWoS7X9vHJRMNmVO+rzf9eGxE8BAAAAAAAAAAAAAKCR6dSpU/Tr1y/nd9I4tGvXLn72s5/FmWeeGUVFRdXue+ONN+L555+PkSNH5i7cHmjevHmN68XFxfWeYVfuqC1nU6HoAgAAAAAAAAAAAADQyIwdOzbGjh2bdAwasB49esR1110X1157bY37Jk+enPqiS22TUrZt21bvGRRddl1e0gEAAAAAAAAAAAAAAID0Of3002PAgAE17nnyySdzUhTZG61bt65xfePGjfWeYf369TWuZzKZaNWqVb3naAgUXQAAAAAAAAAAAAAAgJ1kMpm4+OKLa9yzbt26ePPNN3OUaM+0b9++xvXaSih1YcOGDTWut23bNpo1a1bvORoCRRcAAAAAAAAAAAAAAKBKJ598cjRv3rzGPa+88kqO0uyZDh061Li+du3aes9Q2x21ZWxKFF0AAAAAAAAAAAAAAIAqtWvXLg4++OAa97z99ts5SrNnOnbsWOP6ihUr6j1DbXcouvxHftIBAAAAAAAAAAAAAICUypYmnQBIgYEDB8bMmTOrXV+0aFEO0+y+Hj161Li+cuXKes9QW9GltoxNiYkuAAAAAAAAAAAAAABAtfbbb78a11etWpWjJHumZ8+eNa7noqhT2x21/YybEkUXAAAAAAAAAAAAAACgWoWFhTWub9q0KUdJ9kxtJZLly5fHxo0b6zXDe++9V+O6ost/KLoAAAAAAAAAAAAAAADVat68eY3rxcXFOUqyZw444IBaP8M777xTb/dns9lYsGBBjXv69+9fb/c3NIouAAAAAAAAAAAAAABAtbZs2VLjekFBQY6S7JkWLVrUWiR544036u3+BQsWxIYNG6pdz2QycfDBB9fb/Q2NogsAAAAAAAAAAAAAAFCt5cuX17jeunXrHCXZcwMHDqxx/fXXX6+3u2s7u1evXlFYWFhv9zc0ii4AAAAAAAAAAAAAAEC13nvvvRrXu3XrlqMke27o0KE1rk+fPr3e7p42bVqN67Vla2oUXQAAAAAAAAAAAAAAgGq99tprNa737NkzR0n23NFHH13j+vz582Pp0qX1cvdzzz1X43pt2ZoaRRcAAAAAAAAAAAAAAKBK8+bNi0WLFtW4Z8CAATlKs+f23Xff6NOnT417/va3v9X5va+//nosXLiw2vVMJqPosgNFFwAAAAAAAAAAAACgaqVZr4b6gjoyefLkWvd86EMfqv8gdWDMmDE1rk+ZMqXO76ztzOHDh8c+++xT5/c2ZIouAAAAAAAAAAAAAADATtasWRMPPPBAjXt69eoVvXr1ylGivXPqqafWuP7qq6/GzJkz6+y+jRs3xh//+Mca95x22ml1dl9joegCAAAAAAAAAAAAAADs5Ic//GGsXbu2xj0f+9jHcpRm7/Xp0yeGDBlS45677767zu67//77Y82aNdWut27dOj760Y/W2X2NhaILAAAAAAAAAAAAAABQyeOPP17rNJdmzZrF2WefnaNEdWPcuHE1rj/xxBPxwgsv7PU9q1atirvuuqvGPWeffXa0a9dur+9qbPKTDgAAAAAAAAAAAAAAANRs3rx50aVLl2jfvn293zV16tT46le/Wuu+MWPGRK9everkzgEDBtS4fuaZZ8att9661/ecdNJJceCBB8Y777xT7Z6vf/3rMXny5D0uoWSz2bjuuuti3bp11e5p3rx5fOYzn9mj8xs7E10AAAAAAAAAAAAAACDlnn322TjppJPipz/9aaxevbpe7shms/GLX/wi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JAIAAAAAAAAAAAAAgLql6ALbHX744dWuPfTQQzlMUrU//vGP1a4NHjw4h0kAAAAAAAAAAAAAAKB+5CcdANLiiCOOiLy8vMhms5HJZCIiIpPJRDabjSeeeCLmz58fffv2TSTbvHnz4oknnijPtaOhQ4fmOBEAAAAAAAAAAADQJJRmk04AQBNjogts17Fjxxg6dGhks//+C1nZnxERJSUlccMNNySULOKGG26I0tLSiIjyIk5Zvv79+8d+++2XWDYAAAAAAAAAAAAAAKgrii5QwUc/+tFK31ec7jJjxoy48847c57pzjvvjBkzZlQqt5TJZDJxyimn5DwTAAAAAAAAAAAAAADUB0UXqOCMM86INm3aRESUF1wqTlC56667YuLEiTnLM3HixLjrrrvKs1TMFRHRokWLOOecc3KWBwAAAAAAAAAAAAAA6pOiC1RQWFgYn/rUp3aanFKx7PLd7343vvOd78SWLVvqLceWLVviO9/5Tnz3u98tz1IxU1me008/PfbZZ596ywEAAAAAAAAAAAAAALmk6AI7uPzyy6NDhw4RUXl6SsWyy6RJk+KMM86IV199tc7vf+WVV+KMM86ISZMmVbpzxzxt2rSJq6++us7vBwAAAAAAAAAAAACApCi6wA7at28f//Vf/7XTVJeIymWXd955J84777w4//zz409/+lMUFxfv8Z3FxcUxZcqUOP/88+P888+Pd955p/yu6jJ86Utfii5duuzxnQAAAAAAAAAAAAAAkDb5SQeANDrnnHPimWeeib/97W+VJqpERKUCSjabjVdeeSVeeeWVuOmmm2LIkCFx+OGHx+GHHx69e/eOdu3aRWFhYaWz169fH2vXro0FCxbEa6+9Fq+99lq88sorsXbt2vIzI2Kne8u+z2QyMXr06Ljwwgvr+8cAAAAAAAAAAAAAAAA5pegC1fje974X7777bsyePbvaskvF52vWrImnn346nn766UrnZDKZ8rLL+vXrq50UU3F/dc8iIvr16xe33XZbHXxCAAAAAAAAAAAAAABIF0UXqEZhYWH8+te/jrFjx8a7775bZdklonIJpboSS9m0lurUdEbF4kufPn3it7/97U5TYgAAAAAAAAAAAADqQ7Z059+NBID6lJd0AEizzp07x+9///s4/PDDK01xqSibzVYqvezJa8dzylRcGzp0aEycODH22WefHHxy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a31PUVFRTJ48OX7729/GkiVLat1///33x4ABA+L888+vi8ipM27cuOjTp0+93tGsWbN6Pb+hU3SBKuTl5cVPf/rT+OIXvxhPPfVUpbLL5MmT47XXXotbb701DjvssKSjAgAAAAAAAAAAAAD1oGfPnnHggQfGs88+m3SUGhUUFMQnPvGJOPPMM2Po0KGRyWR26/0dOnSISy65JMaOHRt33XVX3H333VFaWlrje37wgx/EscceG/vvv//eRE+l448/PkaMGJF0jCZN0QWq0aJFi/jpT38aN998c0yaNKlS2eXtt9+Oc889N4488si45JJL4thjj438fP84AQAAAAAAAAAAAEBD1L179xg0aFAceuihMWjQoBg0aFB07NgxFi5cGCeeeGLS8arUpUuX+MxnPhNnn312tG/ffq/Pa968eXzpS1+KYcOGxZVXXhmbNm2qdu/GjRvjjjvuiNtvv32v74Ud+c18qODFF1/c6dnHPvaxyMvLi/vuu69S2SWbzcb06dNj+vTp0bJlyxg8eHAMGTIkunfvHu3bt4/27dtHixYtcpJ7+PDhObkHAAAAAAAAAAAAABq6rl27lpdZBg0aFIMHD45OnTolHWuXde3aNS6//PI455xz6uX3lY855pi4/fbb46qrroqSkpJq9/3lL3+JL37xi9G7d+86z0DTpugCFVx44YU1jurKZrMREeV7yr7fvHlzzJgxI2bMmFH/IXeQyWTijTfeyPm9AAAAAAAAAAAAANBQXHDBBdG5c+cYNGhQdOnSJek4e6SwsDC+/OUvxyWXXBKtWrWq17tOOOGEuPzyy+OnP/1ptXtKS0vj4YcfjmuuuaZes9D05CUdANKobGJLxVdV62UTXipOeUniBQAAAAAAAAAAAABU75xzzonRo0c32JJLRMSoUaPiC1/4Qr2XXMp87nOfi65du9a458knn8xJFpoWRReoQsUCS9mrKhWLJlW9p75fAAAAAAAAAAAAAAD1oXXr1nHeeefVuGfu3LmxatWqHCWiqVB0gSrs7tQUU1wAAAAAAAAAAAAAgMZm9OjRte6ZM2dODpLQlCi6AAAAAAAAAAAAAAAAOznkkEOiTZs2Ne55//33c5SGpiI/6QCQRplMJukIAAAAAAAAAAAAAMkrzSadAEhYly5dYsOGDdWur1u3LodpaAoUXWAH2ay/kAEAAAAAAAAAAAAARER07NgxFixYUO365s2bcxeGJkHRBSqYMGFC0hEAAAAAAAAAAAAAAFKjtiJLy5Ytc5SEpkLRBSo48sgjk44AAAAAAAAAAAAAAJAaS5YsqXG9Xbt2OUpCU5GXdAAAAAAAAAAAAAAAACB9Fi9eHEVFRTXu6dWrV27C0GSY6AIAAAAAAAAAAAAAAOzkqaeeqnVP//796z9IQtavXx/vv/9+fPDBB7F+/frYunVrtGzZMgoKCqJjx46x7777Rrdu3SI/XzWjLvlpAgAAAAAAAAAAAAAAO5kyZUqN6/369YtOnTrlKE1uTJ06NR577LGYMWNGLFiwILLZbI37W7ZsGQcddFAcdthhceyxx8ZRRx0VrVq1ylHaxknRBQAAAAAAAAAAAAAAqGTWrFnx0ksv1bjnhBNOyFGa3Pn5z3++W/u3bNkSM2fOjJkzZ8bEiROjdevWccopp8TYsWNj4MCB9ZSycctLOgAAAAAAAAAAAAAAkFKlXg32BXvpjjvuqHXPqaeemoMkDcvGjRvjD3/4Q5x55plx9dVXxzvvvJN0pAZH0QUAAAAAAAAAAAAAACj3j3/8I5599tka9xxzzDFx0EEH5ShRw/S3v/0tTj/99Ljnnnsim80mHafByE86AAAAAAAAAAAAAAAAdWvixIkxadKknN55/vnnx9ixY3N6J3Vv3bp18e1vf7vWfVdccUUO0jR8W7Zsie9///vx8ssvx2233RatW7dOOlLqKboAAAAAAAAAAAAAADQyq1atinnz5uX8Thq+G2+8MZYuXVrjnjFjxsSwYcNylKhx+Pvf/x6XXHJJ3HPPPVFYWJh0nFRTdAEAAAAAAAAAAAAAAOKBBx6Ixx57rMY9bdq0ia997Ws5SpQ7+fn5cdhhh8UhhxwS/fv3j/79+0fnzp2jbdu20bZt2ygtLY2ioqIoKiqKpUuXxowZM+LFF1+MWbNmxbZt23bpjtdeey0uv/zyuOeee6JFixb1/IkaLkUXAAAAAAAAAAAAAABo4mbOnBk333xzrfuuu+666N69ew4S1b82bdrEySefHKNGjYpjjz022rZtW+P+fffdN/bdd984+OCDY9SoURERsXLlypgwYUJMmjQp1q5dW+udL774Ytx8881x44031slnaIwUXaAOrV+/PubMmROLFy+OZcuWxapVq2Lz5s2xdevWiIho0aJFFBQUxD777BNdunSJHj16xEEHHWT0FAAAAAAAAAAAAACQmKVLl8YVV1wRW7ZsqXHf6NGj45xzzslRqvozYMCAOO+88+K0006LNm3a7NVZ++yzT1xzzTVx6aWXxs033xwPPfRQre+5//7747jjjosTTzxxr+5urBRdYC8UFRXFU089Fc8//3zMmDEjFi9evEfn9OjRI4488sgYOXJkjBo1Ktq3b1/HSQEAAAAAAAAAAAAAdrZp06a44oorYtmyZTXu69mzZ3z/+9/PUar6M3To0Hj00Ufr/NzCwsK45ZZbYvjw4XHjjTfG5s2ba9x/8803xzHHHBMFBQV1nqWhU3SBPfDcc8/F73//+3jqqaeiuLg4IiKy2ewen7do0aKYPHlyTJ48OZo3bx6jR4+O8847L4466qi6igwAAAAAAAAAAABAE9KpU6fo169fzu+kYSkuLo4vf/nLMWvWrBr3tWzZMn784x83iv+gf35+/dYozjrrrOjSpUt84QtfiG3btlW7b9GiRfHAAw/ExRdfXK95GqJMdm9+Ox+amGnTpsUPf/jDmDlzZkRULrdkMpm9Oruqs4444oj4r//6rxg2bNhend3UdWk/IOkIAAAN1uL5f0k6AgBAgzV44LlJRwAAaLDmFS1OOgIAQINVvHVR0hFoZIrGnpB0BPZQh4n/l3SERmHhwoVx4okn1rhn9uzZOUpTt7LZbFx33XXx8MMP17gvLy8v7rjjjhgzZkyOkjUOEydOjJtuuqnGPT179oy///3v0axZsxylahjykg4ADcH69evja1/7WlxyySUxc+bMyGazkc1mI5PJlL8iovz57r4iotJZZc9feeWVuPDCC+Mb3/hGbNiwIckfAQAAAAAAAAAAAADQiHzve9+rteQSEXHDDTcoueyBsWPHxogRI2rcs2jRonjxxRdzlKjhUHSBWsyZMyc++clPxiOPPLJTwSUidiqs7InqSi9law899FCcffbZMX/+/L3/QAAAAAAAAAAAAABAk3bnnXfGhAkTat333//933HuuabY76lrr7221j1//etfc5CkYVF0gRq8/PLLcf7558d7771XqeBSXbml4lSW3XlVVPHsive988478elPfzpee+21XP4IAAAAAAAAAAAAAIBG5De/+U2MHz++1n2XX355XHrppTlI1HgdeuihMXz48Br3TJs2LUdpGg5FF6jGv/71r/jc5z4X69evj4ioVHCpaMfCSsWiyq68qjqjzI6Fl3Xr1sW4cePi9ddfz8FPAAAAAAAAAAAAAABoTB544IG49dZba9134YUXxjXXXJODRI3fxz72sRrX33777Vi7dm2O0jQM+UkHgDRavnx5XHXVVbFx48ZKBZaKKpZSytaaN28e/fv3j0MOOSQOOOCAaNu2bfkrImLdunXlr/feey/eeOONmDt3bmzbtq38zKruq1h22bBhQ1x11VXx4IMPRufOnevvhwAAAAAAAMD/s3ff8VHX9x/A3xdC2MhGhiggigwFBQfOuuu2tVo3rmrV1lr91d1qh7ZWq63YOuu2VmvdVqvWLbjAiYrsJRvCCoEk9/ujJE0guTBuJOT5fDzuQe77+dzn87qL8MBwr/sAAAAAwCbjqaeeiquvvrrWed/97nfjiiuuyHygBmKXXXZJOZ5MJmPSpEmxww47ZClR3afoAtW49NJLY86cOdWWTtYsuLRu3ToOPvjgOPLII2OHHXaI/Pz1+21VUlISn332WTz55JPxr3/9KwoLC6stvJSXXSIiZs2aFZdffnnccccdG/U8AQAAAAAAAAAAAIBN34svvhiXXXZZlJWVpZx36KGHxq9//esq75lm4/Tu3TuaNGkSxcXFNc6ZMWOGokslii6whmeffTbefvvtlCWXZDIZ7du3jwsvvDCOOOKIKCgo2OD98vPzY9CgQTFo0KC44oor4rnnnosbb7wx5s6dW1F4WbPskkwm480334znnnsuDj300I14tgAAAAAAAAAAAADApuy1116Liy66KEpLS1PO23///eP666+PvLy8LCVrGBKJRHTt2jUmTZpU45z58+dnMVHd579AqKSsrCz++Mc/VtwvL5hUPmElIuKkk06KF154IY455piNKrmsqXHjxnHUUUfFCy+8EMOHD6/Yc81GZHnZ5Y9//GOVIg4AAAAAAAAAAAAAQLmRI0fGj3/841i1alXKeXvuuWfcdNNNkZ/vLI1MaNWqVcrxoqKiLCWpH/xXCJU8//zzMW3atCqnqFQ+xaVJkyZx4403xv7775/RHC1atIhLL700dtlll/jpT38aK1asqMhUfqpLRMS0adPiX//6VxxyyCEZzQMAAAAAAAAAAAA0UGU+kBvqqw8++CB++MMfRnFxccp5O++8c4wYMSKtBwBQVePGjVOOl5SUZClJ/eBEF6jkiSeeqHK/csklPz8/br311oyXXCr71re+FX/+85+jUaNGVfJU9vjjj2ctDwAAAAAAAAAAAABQ93388cfxgx/8oNaTQgYPHhy33XZbNG3aNEvJGqYVK1akHPf6V6XoAqstXLgwRo0atVaZpPwElZ/+9Kexxx57ZD3XbrvtFhdffHHFCTPlyk94effdd2PhwoVZzwUAAAAAAAAAAAAA1D1jx46NM888M5YtW5ZyXv/+/ePOO++MFi1aZClZwzVv3ryU482bN89SkvpB0QVW+/DDD6O0tDQi/lduKS+XbLfddnH66afnLNupp54a/fr1WytXRERpaWl88MEHOcsGAAAAAAAAAAAAANQNX3/9dZx++umxePHilPO22WabuPvuu6NVq1ZZStZwFRUVxdy5c1PO6dy5c5bS1A+KLrDahx9+WO31RCIRP/jBD7KcZu0MZ599do3jo0ePzmIaAAAAAAAAAAAAAKCumTx5cpx22mmxcOHClPN69eoV9957b7Rt2zZLyRq2Tz/9NMrKylLO6d69e5bS1A+KLrDaxIkTK75OJBIVX7ds2TIOOOCAXESqYv/994/WrVtHRNV8EVWzAwAAAAAAAAAAAAANy/Tp0+PUU0+t9eSQLbbYIu69995o3759lpLx2muvpRxv0qRJbLXVVlnJUl8ousBq06ZNq1IgSSaTkUgkYuedd45GjRrlMNl/NWrUKHbeeedIJpMV1xKJRCSTyZg2bVoOkwEAAAAAAAAAAAAAuTJ79uwYPnx4zJo1K+W8Ll26xH333RedO3fOUjJWrVoVzz33XMo5AwYMiMaNG2cpUf2g6AKr1XREV58+fbKcpGY1ZVmwYEGWkwAAAAAAAAAAAAAAuTZ//vw49dRTa/3g/I4dO8Z9990X3bp1y1IyIiKefvrpWgtIe+yxR5bS1B/5uQ4AdUVRUVG11zt06JDlJDWr6YiwmrIDAAAAAAAAAAAAbJSyXAcAarJo0aIYPnx4TJo0KeW8du3axX333RdbbrlllpIREbF48eK46aabap337W9/Owtp6hcnusBqq1atqvZ6XToGqqYsJSUlWU4CAAAAAAAAAAAAAOTK0qVL48wzz4xx48alnNemTZu45557onfv3llKRkREWVlZ/OxnP4u5c+emnLfzzjtHz549s5Sq/nCiC6zWtGnTWL58+VrXq7uWKzVladKkSZaTAAAAAAAAAAAAAAC5UFRUFGeffXZ8+umnKee1atUq7r777ujbt2+Wkm2cfffdN2bMmFHj+M477xwPPPDABq8/evToGDx4cCQSiQ1eY12UlZXFL37xi3j11VdrnfuDH/wgo1nqKye6wGrNmzev9vr06dOznKRmNf3BXVN2AAAAAAAAAAAAAGDTsXLlyjj//PPjgw8+SDmvefPmceedd8aAAQOylKzuu+aaa+K73/1uvPzyy1FWVpaRPebOnRunnXZaPProo7XO3WOPPWLPPffMSI76TtEFVtt8880jmUyudf2zzz7LQZrqrZmlPO/mm2+eizgAAAAAAAAAAAAAQJaUlJTEhRdeGG+99VbKeU2bNo3bb789Bg8enKVk9cfnn38e5513Xhx00EFxxx13xOzZs9OybklJSTz55JNx9NFHx6hRo2qd37x58/jFL36Rlr03Rfm5DgB1Rffu3asc35VIJCKZTMZnn30W8+fPj/bt2+cwXcTChQvj008/XeuorEQiET169MhRKgAAAAAAAAAAAACoH95///2YPHnyej1m4cKFtc557LHH1jvL0KFDY6uttlqvx1x33XXx8ssv1zpvv/32iylTpsSUKVPWO9eGaNGiRRxyyCFZ2Stdpk6dGjfeeGPcdNNNscMOO8Tee+8dQ4cOjYEDB0aTJk3WeZ2JEyfG66+/Hvfff3/MnDlznR/329/+1nvAU1B0gdW22267+Ne//hUR/z0ppbxQUlZWFo8++mj88Ic/zGW8eOyxx6K0tLSigFO58NK3b98cJgMAAAAAAAAAAACAuu/xxx+PJ554Iu3rXnnllev9mOuuu269iy7jxo1bp3nPPfdcPPfcc+udaUN169at3hVdypWVlcWYMWNizJgxERHRuHHj2GKLLaJXr16x+eabR/v27aNly5ZRUFAQq1atisLCwli0aFHMnj07Ro8eHfPmzVvvPX/2s5/FQQcdlO6nsklRdIHVdtppp7WulZdK/vrXv8Zxxx0X7dq1y0GyiEWLFsXdd9+91mku5XbccccsJwIAAAAAAAAAAAAA2LSsWrUqJk6cGBMnTkz72nl5eXHJJZfE8OHD0772piYv1wGgrthhhx1is802i4j/FVzKLV26NC677LJcRYsrr7wyCgsLIyLWOs2ldevWMWjQoBwlAwAAAAAAAAAAAAAglTZt2sTtt9+u5LKOFF1gtfz8/Djw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xpIlSzf6eQAAAGyKFF1gIzVp0iR233332H333atcnz9/fixcuDBWrFgRxcXFFXObNm0a7dq1i3bt2uUiLgA5NmXK9Jg4flJ8a789cx0FACBtunXpHFtu0S3eeW90rqNUceOf747pM2elnNOkoCBu+OVl8a09d13ndZs2aRLnn3VKHHrgvnHWhZfHrNlza5x794OPxkH77Rnb9K75zQ0AABujcNHieOKRZ+Ppx56PsZ9+td6Pnztnftx6w13x1z8/GJf96qI49uSjUs7Py8uLX990ZRy6x7GxZLE3ZgIA9dfVv/i/6NVry5RzXn75jTj2+z+IxYuXrNOaL738Ruyy2yHxj0fvim99a/ca5/XqtWX84qqL4uKfXbNemQEAABoKRRfIkPbt20f79mt/CiwADcf0aTPjo48+i08++jw+GvNZfDT6s1i4cFFs0aNbjP70P7mOBwCwQTbv3DH6b9sn+vXdOgb03Sb69+0TbTZrHTO+mR0HHTM81/EqjJ84JR5/5oWUc5o1bRK3/O4XseuQwRu0R88tu8f9f/59nP6jS2ss1JSUlsavb7g17v/LDRu0BwBATSZPnBp/vfXBePofz6/TyS21KVq+In5+0W/iw3fHxG9uviry82v+Z8ROm3eMs350avzhN7du9L4AALmw3XZ94twfnppyzsiRH8TR3z1tnU4LrqywcHEcefSp8fK/H42dd96xxnnnnXda3PXXh+LLL8ev1/oAAAANgaILAEAafDNz9n/LLGM+i08++izGjP405s9fmOtYAAAbpVOH9tG/b5/o37dP9Nt26xiw3TbRrm2bXMdaJ7fd+3CUlpalnHPR+WducMmlXNfNO8cNv7wsTjr7p1FSWlrtnNGffB5vvPNe7DVs543aCwAgImLS+Clx6413xfNP/DvKylL/fWdDPPXo89GsebO4+vpLU8478cxj4/Y/3hvLli5LewYAgEy76sqfRuPGjWscnz9/YRx/4g/Xu+RSbvnyovj+CefEh+//O9rW8PO0xo0bx5VXXBgnnXzeBu0BAACwKVN0gdUuvvjieOONN6odO+KII+LKK6/MciIA6rq77ngw5syZFx+P+SzmzJmX6zgAAGlxwjFHRPt2bWJA3z7RoX27XMfZIHPnLYiXX38n5ZxdhwyK4446NC37Ddhumzjz5GPjtnv/VuOcux54VNEFANgo8+cuiKt/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viwlAgDYeG1rKZAsXpydn9UsXrwk5Xjbdm2ykgMAAKCuU3SBapxyyilx8sknr1V2Wbx4cQwfPjyuv/76KC4uzmFCAAAAoDqNGjWKQQP7pZzz5HMvxapVq9K+99+ffG6d5xbW8qYGAIBcyMvLi9/ecnW0aNki5bz77/hbTJs8I0upAAA2Xts2m6UcX7I0O0WXJUuXpRxv17ZNVnIAAADUdYouUIMrrrgizj///LXKLiUlJXHPPffEoYceGg899FAUFhbmMCUAAACwpr133znl+IJFhfGvV95I655Tps2It9/9cJ3nF69Mf9EGAGBjXXDpOTF02I4p58ycPiv+cuPdWUoEAJAeTZumPgF42bLlWcmxtJaiS205AQAAGgpFF0jh/PPPj9tvvz06duxYcS2RSEQymYzp06fHr3/969hzzz3jxz/+cTzwwAPx4YcfxvLl2fnhBwAAAFC9g/fdK/IbNUo55w9/vjttp6okk8n45e9vqfJhGbXJxIkyAAAb41sH7hln/fjUlHPKysriip/8KmtvBAUASJeCgsYpx0tLSrOSo7Z9assJAADQUOTnOgDUJaecckq119u1axdz5syJRCIREVHxazKZjJUrV8ZLL70UL730UsVY69ato1WrVtGyZcto2bJlxfxMSCQScd9992VsfQAAAKhvOnZoF9/ac9d46bW3a5wzb/7C+OXvR8SNv7pso/d76B9Px7sffrxej1lVUrLR+wIApEufvr3j93/5ZeTlpf6MvIfufjRGvvFellIBAKRPQUFByvGSLP2sprZ9assJALmSLMt1AgAaGkUXqOS9995LWUqp/MmsiUSiSuGl8pxFixbFokWLKuZlSjKZzOj6AAAAUF+dPfyEePn1d1KesvLif96INpu1iisvOm+D///6yedeit/fcsd6P66s1L8IAQB1Q7sObeMvD9wYLVu1TDnvk9Gfx/VX/zFLqQAA0isvL/XPfkpLs3SiSy37NGqUungMAADQUPi/I6hGMplc61bTnIj/lV7WvNW0VjpuAAAAQM369ukVR357/1rn/f2J5+Lin18XCxYuWq/1V61aFbfd83Bcdd1NUboBpZWCgsbr/RgAgHRr3qJZ3PHwzdF9y24p5y2cvyh+cualsWqVU+kAgPqppCR1wSQ/PzufFVzbPv6+BQAA8F9OdIFqVPcprjWVS9a8XvmxTlsBAACA3Pm/H50V77w3OubMm59y3ov/eTNGvj8mzjrluDj8oH2jQ/t2Nc5dXrQiXn/73bjlzvtj6vSZ1c7Jb9QoSmr5dM6CgoLanwAAQAY1bpwft9z7+xgwqF/KeUXLV8S5p14UM6fPylIyAID0W7lyZcrxbBVdGjdOvc/KlauykgMAAKCuU3SBamzMiSnZOm1FiQYAAABS26x1q7jhV5fFmRdcVuubBBYvWRo33np3/OHPf42B220T/fr2iQ7t2kabNq1j6dLlMX/Bwpg8dXq8N/qTKE7xxoj8Ro3i7OHHx613P5hyvyZOdAEAcigvLy9uvP03sfveu6Sct3LlqvjJmZfGmPc+yVIyAIDMqO2klMZZ+llNfuPU+9RWyAEAAGgoFF2gGkokAAAAsGnYcfv+ce2VF8el11xf6ykrEf/9AItPxn4Vn4z9aoP2u/Qn50SXzTvVOm+z1q02aH0AgHT49U1XxoGH7ZtyTmlpaVx6/i/i9ZffzlIqAIDMWbp0Wcrxli1bZCVHq1r2qS0nAABAQ5GX6wBQFyWTyXpxAwAAAGp38H57xY2/vjyaFBRkdJ+fnnt6fP87h8XK4tSfvJmfnx9tNmud0SwAADW54jcXxXeOP7zWeVf/32/j+SdfykIiAIDMW7BwUcrx1q1aZiVH61o+/KS2nAAAAA2FE12gkqFDh+Y6AgAAAJAB++01LB6+8+a4+KprY9LU6Wldu1nTJnH1JRfEoQd+KyIiCpcsSTm/fbs2TpMFAHLiwsvPjZPP+n6t837785visQefzHwgAIAsWTB/YcrxNm2y86Ekm21WS9GllpwAAAANhaILVPLAAw/kOgIAAACQIdtu3TP+ce+t8deHHou/PvyPKCpasdFr7jpkUFzx0/Oi55bdK64tXLQ45WO6bt5po/cFAFhfZ18wPM7+yWm1zvvT726Pe297OAuJAACyZ978BSnHmzZtGptt1joKC1P/XGdjtG3bJpo0aZJyzvwFii4A1FFluQ4AQEOj6AIAAABAg9GkSUH88PQT44RjjojHnvpXPPWvl2PSlGnrvc6uQwbHqd8/Ovbcbe3TYefW8saJrXtuud77AQBsjJPP+n5ceMV5tc67a8T98ecb78pCIgCA7Jo6dUatczp37pjRokvnzh1qnbMuOQEAABoCRRcAAAAAGpzNWreKM08+Ns48+diYMGlKvP/Rp/HZ2HExZfqM+Gb23FiyZGkUF6+MvEZ50aJ5s9i8U8fYutdWMXhgv9h7952jc8ea35gwbfrMlHv3VnQBALLo2JOPjit+c1Gt8x686+9xwy9vyUIiAIDsW7ZsecybtyA6dGhX45wte3SLceMmZCzDVltukXJ89uy5sXx5Ucb2BwAAqE8UXQAAAABo0Hr33PK/5ZOj07Pe1BnfpBzv26dXejYCAKjFEd/7dlz9+0trnffYg0/Gry+/IQuJAAByZ9LkqSmLLltv3TNeevmNjO3fu/dWKccnT17/U4cBAAA2VXm5DgAAAAAAm4olS5fF1BQnujQpKIjt+22bxUQAQEN10OH7xbV//Hnk5aX+58BnH38hfn7RtVlKBQCQO2PHjks5vs02vTO6f23rfz72q4zuDwAAUJ8ougAAAABAmoz96utIJpM1jm/fv28UFBRkMREA0BB966C94vd/+VXk5+ennPfv516NS86/OuXfXwAANhVjxnyacnzwoAEZ3X/HwQNTjn/00WcZ3R8AAKA+UXQBAAAAgDR5570xKcd3Gzo4S0kAgIZqj2/tGjffeW0UFDROOe/1l9+Oi35weZSWlmYpGQBAbtVWdNlhh/61noa3oRo1ahTbb98v5RxFFwAAgP9RdAEAAACANHnjnfdSjh+8315ZSgIANEQ7D9sxbrnn99GkaZOU80a+8X786LSfxapVJVlKBgCQex98+EkUFRXVON6qVcvYacftM7L3zkMHR4sWzWscLyoqig9Hpy7iAAAANCSKLgAAAACQBl+NnxRfT5xc43j/vn2iR/eu2QsEADQog4YMjL88+Ido1rxpynkfjBoT557y01hZvDJLyQAA6obi4uJ4550PUs7Zf//MfEjJfvvtkXL8rbfei+Li4ozsDQAAUB/l5zoA1CWXXXZZtde/+93vxpAhQ7KcpqoPPvggHn/88bWuJxKJuPbaa3OQCAAAAKjssaeeTzn+ncMOylISAKCh6b9937jjb3+MFi1bpJz3yejP4+wTLoyi5SuylAwAoG55+ZU3Yr/99qxx/Kijvh3X/fZPad/3O985NOX4Sy+/nvY9ASCdkmW5TgBAQ6PoApU88cQTkUgk1rq+00475bzoMmnSpLXyJZNJRRcAAACoA+bMnR9PPvdSjeNt27SOIw/ZP4uJAICGYpvtesddf78lWm/WKuW8Lz4bF2ce96NYtnRZlpIBANQ9j//zubju2itqHN9px+1jm216x7hxE9K2Z//+28b2A/vVOF5WVhaP//O5tO0HAACwKcjLdQCoi5LJZMWtLqrL2QAAAKAhuvXuB2NFcXGN48cdfVg0bdIki4kAgIZgq1494u7Hbo227duknPf1lxPj9O+dF4sLl2QnGABAHTVx4pQYNerDlHPOO/e0tO55/nmnpxwfOfKDmDJlelr3BAAAqO8UXaAaiUSi2pNd6oq6ng8AAAAakpHvj4nHn3mhxvF2bdvE8OO/k8VEAEBD0G2LLnHP43+Ojp3ap5w3ecKUOP2Yc2Ph/EXZCQYAUMfdc+8jKceHn3pcbL55p7Ts1a1blzjpxO+mnHPf/Y+mZS8AAIBNiaILVKOun5ZS1/MBAABAQzHjm9lx6S9/n3LOj846OVq2aJGlRABAQ9Cpc4e45/E/R5dunVPOmz5lRpz6nXNj7pz5WUoGAFD3PfjQ4zF79twax1u0aB7X/ubytOx13bWXR7NmzWocnzVrTjz40ONp2QsAAGBTougCAAAAABvgm9lz45yfXhnzFyyscc7g7fvFdw8/OIupAIBNXdv2beKex/8cPbbqnnLeNzNmx6nfPTdmfzMnS8kAAOqH4uLiuGXE3SnnnHLy9+LIIzfuZzrHHHN4nFDLKb9/uuWuWLly5UbtAwAAsClSdAEAAABgk/XGO+9F4eIlaV/3k8+/jJPO+WlMmjq9xjmtWraI3/78Z5GX50dwAEB6tGrdMu5+dET03qZnynlzZs+L4d/5YcyYOjNLyQAA6pc//unOmDp1Rso599x9cwwdMmiD1t9l5x3jzttvSDln8uRp8adbUhduAAAAGir/yg4AAADAJuuhfzwd+x99clxz/S3x1fhJG73e4iVL4w9/vjtO/uFFMXvOvBrnJRKJuPqSC6Jbl84bvScAQERE8xbN4s5H/hj9Bm6bct6CeQvjtO+eG1MmTctSMgCA+qeoaEVc/LNrUs5p3bpV/Ov5h+PQQ/Zfr7UPP/zAeP65h6JVq5Yp5/3fJb+MFStWrNfaAAAADUV+rgMA66a0tLTi60QiUfG1T4UFyK3dhg2J3ltvtV6Paduuba1zTjrlmPXO8s5b78fEiVPW+3EAAGv64KNPY3Itn2i5psLFi2ud84+nX1jvLEMHD4wtt+i23o+rrGhFcTz21PPx2FPPR4/uXWPfPXeLb+2xa/Tru3U0a9q01scnk8n4YtyEePpfL8fTL7wSi5csrfUxF/7w9Dho3z03KjcAQGU33vabGDRk+1rn/eupl2Lw0O1j8NDa56bD3Nnz4vWX387KXgAA6fTPfz4XD//tn3HC8d+pcU6bNpvFE/+8Jx75+5Pxm2tvjq++mlDj3O226xNXXnFhHHfskbXu/dDDj8cTTzy/QbkBAAAaAkUXqCeKioqqvZ6f77cxQC6dcNJ34/sn1vzD7w110y2/We/H/OiHlyq6AABp8cSz/46n/vVy2te9+nd/XO/H/Pryn2500aWyqdNnxr1/ezzu/dvj0ahRXmy1Rffo26dXdOzQPlq3ahmtV3/S5vKiFTFn7ryYMm1GfPrFuFhUWHuRp9xpJxwTp5+4/sVlAIBUttmu9zrNO/GMYzOcpKr33v5Q0QUAqLd+eO4lseOO20ffbbeucU5eXl6ccPx34oTjvxOjx3waI0d+EJMnT4ulS5dFq1YtYqutesSwYUNj0A7912nPL778Os4979J0PQUAyI6yXAcAoKHxDnmoJxYuXFjt9WbNmmU5CQAAAGwaSkvLYsLkqTFh8tS0rXnhD0+LM07K7ptLAQAAANgwy5Ytj0MOPSFe+88T0aNH7R+2suPggbHj4IEbvN+UKdPjkENPiGXLlm/wGgAAAA1BXq4DAOtm/Pjx1V5v27ZtlpMAAAAAa2rdqmXc9OsrlFwAAAAA6pmpU2fEAQcdG+PHT8roPl9/PSkOOOjYmDZtZkb3AQAA2BQoukA9sGrVqvjwww8jkUhUXEsmk5FIJKJz5845TAYAAAAM23nHePy+P8cB39oj11EAAAAA2AATJkyOXYcdGi+++GpG1n/hhf/ErsMOiYkTp2RkfQAAgE2NogvUA88++2wUFhZGxH8LLpVtueWWuYgEAAAA9UKnju0ztvZ22/SO2//w67jjpt9El84dM7YPAAAAAJm3aFFhHHr4SXHaGT+J2bPnpmXN2bPnxvDTL4jDjjg5CgsXp2VNAACAhiA/1wGA1F5//fW49tprq5zmUln//v2znAgAAADqj19ddmGcd8ZJ8cY778ebI9+PMZ+OjUUb8aaCVi1bxL577hbfPeLg2HF7/08OAAAAsKl54IHH4vHHn41TTj42zj13ePTbbpv1XuPzsV/FX/5yX9x3/9+jqGhFBlICAABs2hLJNY+HgE3EzJkz1/sx++67byQSiUgmk1V+veiii+KQQw7JQMr/KSkpiRUrVsTSpUtj2rRpMWHChHjttdfi66+/rpInIqpke+6556JXr14ZzVbfddxs21xHAACot2ZO+FeuIwCk3ZRpM+KTsV/FhElTY9qMb2L6zG9iwcLCWF5UFMuLiiJZloxmzZpG8+bNonOH9rFVj+7Ru2ePGDJoYAzYbpto1KhRrp8CUE8M7HdcriMAANRb4xet/7/3AmRCnz694qAD94nBgwdGv37bRLeum0erVi2jefNmsXx5USxZsjRmzPgmxn7xdYwZ82m88OKrMX78pFzHBhq4kpUzch2BTcy8g/bOdQQ2UIcXX891BIANoujCJqtv3741noJSk5p+O6zvOumyZrGlcpZkMhlbbbVVvPDCCznJVp8ougAAbDhFFwCADafoAgCw4RRdAAA2nKIL6aboUn8pugD1VX6uA0AmpavHlcs+WHUlm/LTXI47zj+UAwAAAAAAAAAAAJmTLMt1AgAaGkUXNmn1/USXiKqZKufo3LlzfP/7389FJAAAAAAAAAAAAAAAyAhFFzZ56TiNJZcnupQrL7kkk8nIz8+Pa6+9Npo1a5bjVAAAAAAAAAAAAAAAkD55uQ4A1CyRSFTcIv5bcmnatGnccMMNMWzYsBynAwAAAAAAAAAAAACA9HKiC5u88pLIuqjp5Jb1WSPdyjPl5eXFAQccEBdffHH06NEjZ3kAAAAAAAAAAAAAACBTFF3YpNVUXMnVOuurdevWMXDgwBg2bFgcfPDB0a1bt5zkAAAAAAAAAAAAAACAbFB0YZN13XXXrdf8ZDIZl19+eSQSiUgmk1V+/c53vhNDhgzJUNL/ysvLi8aNG0eLFi2iXbt20aVLl+jQoUNG9wQAAAAAAAAAAAAAgLpE0YVN1tFHH73ej7n88survT548OANWg8AAAAAAAAAAAAAAFh3ebkOAAAAAAAAAAAAAAAAABFOdIFqJRKJXEcAAAAAAAAAAAAAyLlkWa4TANDQONEFAAAAAAAAAAAAAACAOsGJLlBJ165dq73eokWLLCcBAAAAAAAAAAAAAICGR9EFKvnPf/6T6wgAAAAAAAAAAAAAANBg5eU6AAAAAAAAAAAAAAAAAEQougAAAAAAAAAAAAAAAFBHKLoAAAAAAAAAAAAAAABQJyi6AAAAAAAAAAAAAAAAUCcougAAAAAAAAAAAAAAAFAn5Oc6AAAAAAAAAAAAAABQNyXLcp0AgIZG0QXW8NVXX8Utt9xS7dh2220X5513XlbzjBgxIr788stqxy677LLo1q1bVvMAAAAAAAAAAAAAAECmKLrAGh566KF4+eWXI5FIVFxLJpORSCTiqKOOynqebbfdNkaMGFElT7nevXvHhRdemPVMAAAAAAAAAAAAAACQCXm5DgB1yfLly+PZZ5+NRCIRyWSy4hYRsfXWW8f++++f9UwHHHBA9OnTp0qe8tvjjz8eJSUlWc8EAAAAAAAAAAAAAACZoOgClbzwwguxfPnyiIhIJBIVp6gkEok444wzcpbr9NNPr5KpPNf8+fPj1VdfzVkuAAAAAAAAAAAAAABIJ0UXqOT111+v9nrTpk3jwAMPzHKa/znooIOiadOm1Y4pugAAAAAAAAAAAAAAsKlQdIHVysrKYuTIkRWnpUREJJPJSCQSsddee0Xz5s1zlq158+ax9957RzKZrLiWSCQimUzG22+/nbNcAAAAAAAAAAAAAACQToousNqnn34aixcvjoioUiiJiPj2t7+di0g1Zqicb86cOfH111/nIhIAAAAAAAAAAAAAAKRVfq4DQF3xxRdf1Dg2ZMiQLCap3k477VTj2Oeffx59+vTJYhoAAAAAAAAAAACgQUgmcp0AgAbGiS6w2vjx4yu+TiT+95eyTp06RYcOHXIRqYqOHTtG586dI6JqvoiICRMm5CISAAAAAAAAAAAAAACklaILrDZx4sQq95PJZCQSiRg4cGCOEq1twIABkUwm17qu6AIAAAAAAAAAAAAAwKZA0QVWmzVr1lonpUREdOnSJQdpqte1a9e1riWTyZg+fXoO0gAAAAAAAAAAAAAAQHopusBqS5curfb6ZpttluUkNVszS3kxp6bsAAAAAAAAAAAAAABQnyi6wGrLli2r9npdLrqUqyk7AAAAAAAAAAAAAADUJ4ousNqKFSuqvV5QUJDlJDWrKcvy5cuznAQAAAAAAAAAAAAAANJP0QVWq6lEUlRUlOUkNaspSzKZzHISAAAAAAAAAAAAAABIP0UXWK1p06bVXp87d26Wk9Rs3rx51V5v1qxZlpMAAAAAAAAAAAAAAED65ec6ANQVbdu2jUWLFq11fdq0adkPU4OpU6dWe71ly5ZZTgIAAAAAAAAAAAA0BMmyXCcAoKFxogus1rVr10gmkxX3E4lEJJPJ+Pjjj3OYqqqPP/44EolExf1kMhmJRCK6dOmSw1QAAAAAAAAAAAAAAJAeii6wWo8ePSq+rlx4mTNnTkyYMCEXkaqYMGFCzJ49OyKq5ouI6N69ey4iAQAAAAAAAAAAAABAWim6wGoDBgyocezZZ5/NYpLqPfPMMzWO9evXL4tJAAAAAAAAAAAAAAAgMxRdYLUddthhrWuJRCKSyWT87W9/i6Kiohyk+q+ioqJ45JFHIpFIVDs+ePDgLCcCAAAAAAAAAAAAAID0U3SB1Xr37h1du3aNiP8VXMoVFhbGbbfdlqto8Ze//CUWLVoUERHJZLJK4aV169YpT6MBAAAAAAAAAAAAAID6QtEFKjnggAOqFFwi/ld6ufvuu+Ojjz7KeqYxY8bEX//617VOcykvvBxwwAHRqFGjrOcCAAAAAAAAAAAAAIB0U3SBSo455pgq98tLL4lEIkpKSuL888+PqVOnZi3PlClT4kc/+lGUlJRUyVPZd77znazlAQAAAAAAAAAAAACATFJ0gUr69OkTw4YNqzgtJaJq2WXevHlx0kknxSeffJLxLB9//HGcfPLJMW/evIpTZcpzlOfbYYcdYscdd8x4FgAAAAAAAAAAAAAAyIb8XAeAuubHP/5xjBw5MiL+VyopL5YkEomYM2dOnHDCCXHWWWfF+eefH40aNUrr/qWlpTFixIi48847o6SkpKJwU1NWAAAAAAAAAAAAgExJltX8PkYAyAQnusAaBg0aFEcccUTFCSrlKp+oUlJSErfddlscddRR8Y9//COKi4s3et/i4uJ47LHH4qijjorbbrutSsmlutNcDjzwwBg2bNhG7wsAAAAAAAAAAAAAAHVFIrnmu/mBKCwsjKOOOipmzZoVEVGl9FJd+aRVq1Zx+OGHx8477xyDBg2Kzp07r9M+s2fPjo8++ijee++9eOaZZ2LJkiVV1l1zn/L7nTt3jieeeCLatWuXhme76eu42ba5jgAAUG/NnPCvXEcAAKi3BvY7LtcRAADqrfGLZuY6AgBAvVWyckauI7CJ+WaPb+U6Ahuoy1uv5joCwAbJz3UAqIs222yzuOmmm+KUU06JVatWVZykEhEVJ6qUX0smk7F48eJ4+OGH4+GHH46IiI4dO8ZWW20VrVu3jlatWkXr1q0jImLx4sWxZMmSWLx4cUyZMiXmzJlTsWdtZZry+wUFBXHTTTcpuQAAAAAAAAAAAAAAsMlRdIEaDBo0KP7whz/ET37ykygtLV2r7BLxvwJK5WsREXPmzIm5c+emXH/Nw5RqWqtyySU/Pz/+8Ic/xI477riBzwoAAAAAAAAAAAAAAOquvFwHgLps//33jxtuuCEKCgoiomoZJSIqTnQpH6t8Kx+r6bbm/DXXq7xfMpmMpk2bxk033RT7779/Np46AAAAAAAAAAAAAABknaIL1OLggw+O++67L9q3b1+loFLZmiWWiLWLL6mKLWsWXMofXz6nS5cu8eCDD8YBBxyQhWcMAAAAAAAAAAAAAAC5oegC62DQoEHx3HPPxaGHHlptkWVNtZ3mUl2xZc01y+ccffTR8cwzz8SAAQMy/jwBAAAAAAAAAAAAACCX8nMdAOqLzTbbLG688cb4/ve/HzfeeGN89NFHERE1nvCyLmoqyURE7LzzznHRRRfFDjvssHHBAQAAAAAAAAAAADZQsizXCQBoaBRdYD0NHTo0Hnnkkfjwww/jb3/7W7zyyitRVFRUMV7TKS81qVyKadGiRRx88MFx3HHHxfbbb5/W3AAAAAAAAAAAAAAAUNcpusAG2mmnnWKnnXaKlStXxqhRo+Kdd96Jzz77LL744otYtmzZOq3RqlWr2G677WLAgAGxxx57xNChQ6Nx48YZTg4AAAAAAAAAAAAAAHWTogtspIKCgthrr71ir732qri2YMGCmDVrVsybNy9WrFgRK1asiIiIpk2bRtOmTaNjx46x+eabR9u2bXMVGwAAAAAAAAAAAAAA6hxFF8iAdu3aRbt27XIdAwAAAAAAAAAAAAAA6pW8XAcAAAAAAAAAAAAAAACACEUXAAAAAAAAAAAAAAAA6ghFFwAAAAAAAAAAAAAAAOoERRcAAAAAAAAAAAAAAADqhPxcBwAAAAAAAAAAAAAA6qZkMpHrCAA0ME50AQAAAAAAAAAAAAAAoE5QdAEAAAAAAAAAAAAAAKBOyM91ANhUlJWVxaRJk2L27Nkxe/bsWLp0aaxYsSJWrlwZyWSyYt7555+fw5QAAAAAAAAAAAAAAFB3KbrABiotLY1Ro0bFW2+9Fe+//358/fXXsXLlylofp+gCAAAAAAAAAAAAAADVU3SB9fTNN9/E/fffH08//XQsWLAgIqLKiS2pJBKJ9drrjTfeiNtvv73asb333jt+8IMfrNd6AAAAAAAAAAAAAABQlym6wDoqLCyMm266KR5//PEoKSlZq9xSW4llXcswle2yyy5x+eWXx/z589daa8KECXH66adHfr7fxgAAAAAAAAAAAAAAbBrych0A6oOXXnopDjnkkPj73/8eq1atimQyGYlEosot4r8FlOpuG6pJkyZx0kknVaxRea3CwsJ49dVXN+6JAQAAAAAAAAAAAABAHaLoArW44YYb4sc//nHMnz+/SsElYu1iSyYce+yxUVBQEBFrnxrzxBNPZGRPAAAAAAAAAAAAAADIhfxcB4C6KplMxuWXXx5PPvlkRcGl8ljE2sWTNR+fDu3atYv9998/nn/++Yr9EolEJJPJeOONN2Lp0qXRsmXLtOwFAAAAAAAAAAAAUFmyLNcJAGhonOgCNbjmmmviiSeeqFJyKT+5JdWpLpk43eXII4+s+Lry2qWlpTFq1Ki07gUAAAAAAAAAAAAAALniRBeoxqOPPhqPPPJIlTJLucrXEolEDB48OHbeeecYOnRodO3aNdq0aRMvvfRS/OIXv6g4eWVj7b777tG6detYsmTJWqfIjBw5Mvbff/+N3gMAAAAAAAAAAAAAAHJN0QXWMHPmzLjuuuvWKrlULpjk5eXFoYceGmeddVb06dNnrTXy8tJ7WFJ+fn4MGzYsXnjhhYoc5SWakSNHpnUvAAAAAAAAAAAAAADIlfS+Gx82Addee20UFRVFxNoll2QyGR06dIj77rsvrr/++mpLLpmy++67V3xd+ZSYSZMmxfz587OWAwAAAAAAAAAAAAAAMkXRBSr56quv4pVXXqlyekv5ySkREdtuu2089dRTMWTIkKxnGzx4cI1j48aNy2ISAAAAAAAAAAAAAADIDEUXqOT++++vKLUkk8kqhZeOHTvGHXfcEe3atctJtt69e0ezZs0iIqrkioiYOHFiLiIBAAAAAAAAAAAAAEBaKbrAaqtWrYqXXnpprRJJeeHl97//fXTu3DlH6f5bbunZs2dFEacyRRcAAAAAAAAAAAAAADYF+bkOAHXFhx9+GIsXL45EIlFRbin/dY899ohddtkl1xFjq622irFjx651ffLkydkPAwAAAAAAAAAAAGzykmWJ2icBQBo50QVW++CDD2ocO/vss7OYpGadOnVa61oymYz58+fnIA0AAAAAAAAAAAAAAKSXogus9uWXX1Z8nUj8r33cunXr2GmnnXIRaS3t2rWrcr8857Jly3IRBwAAAAAAAAAAAAAA0krRBVabNm1alfvJZDISiUTssssuVYovudS8efNqryu6AAAAAAAAAAAAAACwKVB0gdXmzp1bbaGle/fuOUhTvYKCgmqvK7oAAAAAAAAAAAAAALApUHSB1YqKiqq93r59+ywnqVlNGUtLS7OcBAAAAAAAAAAAAAAA0k/RBVZbuXJltddbtGiR5SQ1KywsrPZ6kyZNspwEAAAAAAAAAAAAAADST9EFVqupLLJ48eIsJ6lZTVmaNWuW5SQAAAAAAAAAAAAAAJB+ii6wWvPmzau9vnDhwiwnqdns2bOr3E8mkxER0aFDh1zEAQAAAAAAAAAAAACAtMrPdQCoKzp06BDz5s2LRCJR5fqsWbNylGhtY8aMWStfIpGILl265CgRAAAAAAAAAAAAsClb/ZncAJA1TnSB1bp3717lfiKRiGQyGR9++GGOElU1ZcqUmDdvXkT87ySXcltttVUOEgEAAAAAAAAAAAAAQHopusBqvXr1qvi6cpFk7ty5MW3atFxEquKdd96pcWzgwIFZTAIAAAAAAAAAAAAAAJmh6AKr7bjjjjWOPfPMM1lMUr2HHnooEolEtWPbb799ltMAAAAAAAAAAAAAAED6KbrAaoMHD45GjRpFRFQUShKJRCSTyXjwwQdj5cqVOcv2+uuvx/jx4yPiv6fNlOeK+O9JNN27d89ZNgAAAAAAAAAAAAAASBdFF1hts802i1133bWiQFL+a0TEwoUL4957781JrpUrV8bNN99c7VgikYj9998/u4EAAAAAAAAAAAAAACBDFF2gkkMPPXSta+Wnp/zpT3+KTz75JOuZfvvb38YXX3xRkaP8tJnybN/97nezngkAAAAAAAAAAAAAADJB0QUqOeyww6Jjx44R8b+CS/nXJSUl8ZOf/CRmzpyZtTxPPvlkPPzww1WyRERF4WWPPfaIHj16ZC0PAAAAAAAAAAAAAABkkqILVFJQUBBnnHHGWqWSiP+WXWbOnBnHHXdcfPHFFxnP8uCDD8YVV1xR5QSXNZ1//vkZzwEAAAAAAAAAAAAAANmSn+sAUNecdNJJ8dhjj8XEiRMrTlIpP0ElkUjE3Llz44QTToizzjorzjjjjGjSpEla958+fXpce+218eqrr1bsW7lsU37tkEMOie233z6tewMAAAAAAAAAAABUliyr+QO7ASATnOgCa8jPz49f/epX0ahRo4iIihNVKpdNioqK4pZbbomDDz447r777pg5c+ZG7zt69Oi47LLL4pBDDqmx5FKuffv2ccUVV2z0ngAAAAAAAAAAAAAAUJc40QWqseOOO8bFF18cv/3tb6sUTCqf7JJMJuObb76JG264IW644YYYMGBA9O/fP7beeuuYPHlyjWuPGjUqiouLY/78+TFjxoz48ssv46OPPooFCxZU7BFRtdhSuWzTqFGjuO6666Jdu3YZeOYAAAAAAAAAAAAAAJA7ii5Qg+HDh8fUqVPj4YcfrlI0qVx2Kb8WEfHpp5/GZ599VmWN8rHKv5522mlr7VU+HrH2CTKV5yQSibj88stjzz33TMdTBAAAAAAAAAAAAACAOkXRBVL4+c9/HqWlpfH3v/+9ykkulU9dWbMEU5vq5lQ+vWXNOZXHfvSjH8WJJ564Qc8FAAAAAAAAAAAAAADqOkUXqMU111wTPXr0iBtvvLHiVJWItYstqcoqla05r6b5lfdp1KhR/PznP4/jjjtug58HAAAAAAAAAAAAAADUdXm5DgD1wRlnnBH33ntvdOvWrdrTXCL+V3yp7WSXNedVV5ipXHLp1q1bPPjgg0ouAAAAAAAAAAAAAABs8hRdYB3tvPPO8eyzz8bZZ58dzZo1W6vwUtNJLetizTWSyWTk5+fHaaedFk899VQMHjw4Lc8BAAAAAAAAAAAAAADqsvxcB4D6pGnTpnHhhRfGqaeeGg888ED885//jNmzZ0fE2ie8rK/y4kzz5s3j6KOPjuHDh8cWW2yRltwAAAAAAAAAAAAAGyJZtuHvjQSADaHoAhugXbt2ccEFF8SPfvSjeOedd+K1116LN998M6ZMmbJB67Vq1Sp222232H///WPfffeNli1bpjkxAAAAAAAAAAAAAADUfYousBHy8vJijz32iD322CMiIgoLC2Ps2LExceLEmDVrVsyZMyeWLVsWK1asiJKSkigoKIimTZtGmzZtomvXrrHFFlvEdtttF7169crxMwEAAAAAAAAAAAAAgNxTdIE02myzzWK33XaL3XbbLddRAAAAAAAAAAAAAACg3snLdQAAAAAAAAAAAAAAAACIUHQBAAAAAAAAAAAAAACgjlB0AQAAAAAAAAAAAAAAoE5QdAEAAAAAAAAAAAAAAKBOUHQBAAAAAAAAAAAAAACgTsjPdQAAAAAAAAAAAAAAoG5KJnOdAICGxokuAAAAAAAAAAAAAAAA1AmKLgAAAAAAAAAAAAAAANQJii4AAAAAAAAAAAAAAADUCYouAAAAAAAAAAAAAAAA1AmKLgAAAAAAAAAAAAAAANQJ+bkOAOlwyimn5DpCziQSibjvvvtyHQMAAAAAAAAAAAAAADaaogubhPfeey8SiUSuY2RdMplskM8bAAAAAAAAAAAAAIBNk6ILm5RkMpnrCFmj4AIAAAAAAAAAAAAAwKZG0YVNivIHAAAAAAAAAAAAQPoky7w3E4DsUnRhk+JEFwAAAAAAAAAAAAAAqL8UXdikKH8AAAAAAAAAAAAAAED9pejCJqUhnegCAAAAAAAAAAAAAACbGkUXNglDhw7NdQQAAAAAAAAAAAAAAGAjKbqwSXjggQdyHQEAAAAAAAAAAAAAANhIebkOAAAAAAAAAAAAAAAAABGKLgAAAAAAAAAAAAAAANQR+bkOAAAAAAAAAAAAAADUTclkItcRAGhgGlzR5bLLLst1hJxJJBJx7bXX5joGAAAAAAAAAAAAAABAtRpc0eWJJ56IRKLhNUuTyaSiCwAAAAAAAAAAAAAAUKc1uKJLuWQymesIAAAAAAAAAAAAAAAAVNJgiy4N7VQXxR4AAAAAAAAAAAAAAKCua7BFl4ZU/GhopR4AAAAAAAAAAAAAAKB+arBFF+UPAAAAAAAAAAAAAACAuiUv1wEAAAAAAAAAAAAAAAAgogGe6NK1a9dcR2ATNH78+Bg7dmyMGzcuZs2aFbNnz45ly5bFihUrYuXKlZFMJiPivycJvfzyyzlOCwAAAAAAAAAAAAAAdVODK7r85z//yXUENgFlZWXx6quvxvPPPx8jR46MhQsXrjWnvNxSWSKRWK99Fi9eHIWFhdWObbbZZtG6dev1Wg8AAAAAAAAAAABgfSTLcp0AgIamwRVdYGMsX748Hnzwwbj//vtj/vz5EVF9oaVc5WJLqnk1+eqrr+KUU06pdmyPPfaIO++8c73XBAAAAAAAAAAAAACAukrRBdbRU089Fb/73e9i4cKFVUor63tKy/oYOnRoDB48OEaPHr3W2DvvvBNz5syJTp06ZWx/AAAAAAAAAAAAAADIprxcB4C6bunSpXHuuefGpZdeGgsWLIhkMhmJRKLiFvHf01pS3TbGaaedFhGx1p5lZWXxzDPPbNyTAwAAAAAAAAAAAACAOkTRBVKYPn16HHPMMfHqq69WKbhExFpFlspFlHSe8rLffvtFly5d1rqeTCbjiSeeSNs+AAAAAAAAAAAAAACQa4ouUINp06bFKaecEpMnT64ouUREjeWWymMbe4pLZXl5eXHEEUdUrFk5y4QJE2LKlClp2wsAAAAAAAAAAAAAAHJJ0QWqsXTp0vjBD34QM2fOrCiyVFdwqVxsad++feywww6x9957x/bbb18xLx2OOOKIGsfeeeedtOwBAAAAAAAAAAAAAAC5lp/rAFAXXX755TFp0qQqJ7WUKy+4REQMHDgwjj322Nh5551jyy23rJjz2GOPxSeffJK2PL17946ePXvG5MmT1yrPjBw5Mo4//vi07QUAAAAAAAAAAAAAALmi6AJrePnll+Pf//73WiWXyve33XbbuPTSS2O33XbLWq699tqrSvmmvHDz7rvvZi0DAAAAAAAAAAAAAABkkqILVFJWVhbXX399xf3KJZfyr4855pi46qqrokmTJlnNtssuu8R9991Xkau88LJ48eKYMGFC9O7dO6t5AAAAAAAAAAAAgE1fWTKR6wgANDB5uQ4Adclzzz0XU6dOrVJsKf86kUjEaaedFr/+9a+zXnKJiBg0aFCNYxMmTMheEAAAAAAAAAAAAAAAyBBFF6jkH//4R5X7lUsu++23X1xyySU5ShbRrl276NSpU0WuyiZOnJiLSAAAAAAAAAAAAAAAkFaKLrDavHnz4v33368okVQukzRr1iyuueaaXEWr0LNnz4qTZipTdAEAAAAAAAAAAAAAYFOg6AKrvfvuu1FWVhYRUVEmKT/N5dRTT4327dvnMl5ERHTv3r3a69OmTctyEgAAAAAAAAAAAAAASD9FF1ht9OjRNY5973vfy2KSmnXo0GGta8lkMpYsWZKDNAAAAAAAAAAAAAAAkF75uQ7QkCxatCjGjRsXM2bMiLlz58bChQujuLg4Vq5cGaWlpRnfv3v37nHeeedlfJ/6auLEiRVfJxKJiq979uwZXbt2zUWktbRt27bK/UQiEclkMpYtW5ajRAAAAAAAAAAAAAAAkD6KLhlUXFwcL7/8crz55psxatSomD17dk7z9O/fX9ElhenTp1cpuCSTyUgkEjFkyJAcpqqqoKCg2uuKLgAAAAAAAAAAAAAAbAoUXTJg1qxZcccdd8TTTz9dUUBIJpM5TkVtCgsLq73evn37LCepWaNGjaq9vnz58iwnAQAAAAAAAAAAABqCZDJR+yQASCNFlzRatWpV/PnPf4677rorSkpKqpRbKp8UQt1UVFRU7fUOHTpkOUnNlixZUu31vLy8LCcBAAAAAAAAAAAAAID0U3RJk1mzZsU555wTX331VUXBZc1ySy5OdUkkEk6TWUc1vU5lZWVZTlKzmk6dadasWZaTAAAAAAAAAAAAAABA+im6pMGkSZPi5JNPjvnz50cymaxScFmzPJFqrLo5qeaty2NrusbamjdvXu2JKTWVS3KhpiwtWrTIchIAAAAAAAAAAAAAAEi/vFwHqO/mzZsXp59+esybNy8i/lcqSSaTVU52Kb9tiMqPr22dyvuyfmoqiyxatCi7QVKYOHFilfvlxarNN988R4kAAAAAAAAAAAAAACB9nOiykS655JL45ptvqhRcylV3LS8vL9q2bRulpaWxaNGiSCQSFWWF8l+7dOkSERFLliyJpUuXVnsqTOW1K3+dn58fnTp1qjZrTdf5ry5dulT5XpYbN25cjhJVtXLlyvjkk0+qLTp17do1B4kAAAAAAAAAAAAAACC9FF02wpNPPhlvv/12jSWX8vu77LJLHHzwwbHXXntFly5dIi8vLx577LG46qqrql33P//5T8XXyWQyCgsLY9q0aTF69OgYPXp0jBo1KgoLC6s93aW0tDSGDh0aV111VbRs2TLdT3mTtsUWW8To0aMr7pd/Dz/55JMoKSmJ/Pzc/nb59NNPY+XKlVVKUeX69OmTw2QAAAAAAAAAAAAAQF1XUlISU6dOjRkzZsSyZcti+fLl0aRJk2jZsmV07NgxevbsGc2aNct1zDpr4cKFMXHixFi0aFEsW7YsysrKokWLFtGyZcvYaqutKg68YOMpumygkpKS+OMf/7hWyaXy/W7dusVVV10V++yzzwbvk0gkok2bNtGmTZsYOHBgnHrqqVFcXBxPPvlkPPjgg/H1119X7FlegHj66afjgw8+iDvuuCN69+69cU+0Adluu+3iqaeeioiqJ+UUFxfHmDFjYujQobmMFy+99FKNY9tvv30WkwAAAAAAAAAAAAAA9cFXX30VL730Urz++uvxxRdfxKpVq2qcm0gkYsstt4w999wzehLSvQABAABJREFU9ttvv9h1113XOpihISkqKopXXnklXnvttRg1alTMnTs35fwWLVrETjvtFPvss08ceOCB0bFjxywl3fQoumygf//73/HNN99UObml8te9e/eOe++9NyP/cTZp0iSOO+64OO644+KBBx6IG2+8MYqLi6tkmDFjRpxwwglx++23x6BBg9KeYVO044471jj28MMP57TosnTp0njssceqlJrK5efnK7oAAAAAAAAAAAAAQBpMnz49Pvvss4rb559/HosXL075mK+++ipL6dbdm2++GXfccUe899576/yYZDIZkydPjsmTJ8cDDzwQW221VQwfPjyOPfbYaNSoUQbT1i2FhYVx9913x9///vdYtGjROj9u2bJl8cYbb8Qbb7wR1113XRxyyCFx9tlnO7xiAyi6bKDHHnusyv3KxYN27drF/fffH+3bt894jpNPPjmGDRsWP/nJTypOdynPUlhYGGeffXY8+uijseWWW2Y8S33Xv3//aNOmTRQWFq51Ss6///3vmD59enTv3j0n2R5++OFYtmxZRZ7Kv+6yyy7RokWLnOQCAAAAAAAAAAAANm3JsoZ7mgObvlmzZsVnn30Wn376aUWpZeHChbmOtVFmz54dv/rVr+Kll17a6LUmT54cV199dTzyyCPxy1/+MnbYYYc0JKzbnnzyyfjd734XCxYs2Kh1Vq1aFU899VQ8//zzcfrpp8f5558fBQUFaUq56VN02QDLli2L999/f61jmMqLB5dddllWSi7levfuHQ899FAMHz48xo4dW6WkUV52eeqpp6JJkyZZy1QfNWrUKA444ICKk1PKv58REWVlZXH11VfHXXfdlfVcEydOjL/85S81Hvt18MEHZzkRAAAAAAAAAAAAANQv8+bNqyi0lN/mzZuX61hp9cEHH8SPf/zjmD9/flrX/fLLL+PEE0+Myy+/PE444YS0rl1XrFy5Mn7xi1/EP//5z7Suu2rVqrj99ttj5MiRMWLEiOjcuXNa199U5eU6QH303nvvRUlJSUREldM1IiL69esXhx9+eNYztW7dOm6//fbo1KnTWmNTpkyJESNGZD1TfXTMMcdUuV/5+/v222/HHXfckdU8K1asiAsuuCCKioqq5CnXunXrOOyww7KaCQAAAAAAAAAAAADqmzPOOCPOOeecGDFiRLz22mubXMnl5ZdfjuHDh6e95FJu1apVcc0118QNN9yQkfVzacWKFXHGGWekveRS2SeffBLHHHNMTJ06NWN7bEoUXTbA559/Xu31RCKxVlEimzp27Bi//OUvK0o35ZmSyWTcc889MWPGjJxlqy922GGHGDp06FqFkvLX8Y9//GM88sgjWcmyatWq+OlPfxpff/11lTJVxP8KL8ccc0w0bdo0K3kAAAAAAAAAAAAAgLrn7bffjgsvvDBWrVqV8b3uvPPOuPXWWzO+T7asWrUqzjvvvHjvvfcyvtecOXNi+PDhMWvWrIzvVd/l5zpAfTRu3LiKr9csQ+T6dI199tkndt111xg1alSVbKWlpfHQQw/Fz372sxymqx8uuOCCOOmkkyrulxdMEolElJaWxjXXXBMzZ86MCy64IBo1apSRDN9880389Kc/jY8++mit/8bKtW7dOs4+++yM7A8AAAAAAAAAAAAA1H3Tp0+Pn/zkJ7Fy5cpa526zzTZx5JFHxpAhQ2LLLbeMVq1aRVFRUXzzzTfx8ccfx/PPPx8jR46s8gH91fnTn/4U2267bey///7peho5c/3118dbb71V67xmzZrFgQceGPvtt1/069cvOnToEI0aNYqFCxfGuHHj4p133omnn3661pOCZsyYET/60Y/i4YcfjsaNG6fraWxynOiyAWbOnFnt9R49ekSrVq02ev3S0tKNevzw4cOr3C8/DeSf//xnrX/oEDFkyJA4+uij1zrVpfx+MpmMO++8Mw4//PB4/fXX07r38uXL4/bbb4/DDjssPvroo4rvV3Wnufz4xz+O1q1bp3V/AAAAAAAAAAAAAKB+KCkpiQsvvDAWL16ccl6HDh3i5ptvjmeeeSbOPPPMGDRoULRt2zby8/OjVatWsc0228T3vve9uOeee+LRRx+N/v3717r35ZdfXuP76uuLV155Je6///5a5x1++OHx73//O66//vo46KCDYosttohmzZpFQUFBdO7cOfbcc8+45JJL4pVXXokf//jHkZ+f+jySTz75JG688cZ0PY1NkqLLBpgzZ061BYiBAwemZf2SkpKNevyee+5ZbeGmsLAwPvnkk41au6G47LLLonv37hFR9RSV8vvJZDImTpwY55xzThx22GFx6623xoQJEzZor8WLF8drr70WV111Vey1115x8803x7Jly6oUayrvm0gkYtiwYXHiiSdu3JMEAAAAAAAAAAAAAGrUrVu32GOPPXIdo0YPPvhgre8P79u3b/zzn/+Mb3/72+u05vbbbx+PPPJIHHbYYSnnFRYWxrXXXrvOWeua5cuXxzXXXJNyTiKRiJ///Odxww03RKdOnWpds2nTpnHeeefFfffdFy1btkw597777ouxY8euV+aGJHVViGotW7as2utdu3Zd5zXy8mruGC1btiyaNGmy3rnKNWrUKHbaaad47bXX1ippjBw5MnbYYYcNXruhaN26dYwYMSKOP/74WLFiRUXJpHLpJOK/Jafx48fHiBEjYsSIEdG0adPo2bPnWq97ZT/72c+iuLg4FixYEDNmzIhvvvmmYqy69Svfj4jo0qVLXH/99el9wgAAAAAAAAAAAADQgHXp0iUGDBgQ/fv3jwEDBsSAAQOibdu2MX369Nhvv/1yHW8tCxYsiBEjRqScs+WWW8Y999wT7dq1W6+1CwoK4vrrr4+ioqJ45ZVXapz30ksvxTvvvBPDhg1br/Xrgttuuy1mz56dcs6ll166QYcTDBkyJO6444449dRTY9WqVdXOKSsri1/96lfxt7/9bb3XbwgUXTZAcXFxtddra11V1rhx4xrHli9fvt5/mKypd+/e8dprr611/euvv96odRuSvn37xl/+8pc455xzori4uMrpKuUnq6xZgCkqKoqxY8euVVSp/OszzzxTsUf59XJrnhRU+VoymYw2bdrEXXfdFe3bt8/EUwYAAAAAAAAAAACATV6nTp0qyiwDBgyIgQMHbvT7t7Pt7rvvjiVLltQ43rhx47j55ps3+Hk1atQofve738WRRx4ZM2bMqHHen/70p3pXdFm4cGHcf//9KeccdNBBMXz48A3eY6eddor/+7//S3nqzejRo+PNN9+MPffcc4P32VQpumyAmk7raNWq1TqvUVBQUOPYggULonv37uudq7LqjkZKJpMxadKkjVq3odl1113jtttuiwsuuCAWL15cpXRS3Wkra45Vp/JYdf8tVTeeTCajY8eOceedd0avXr02/AkBAAAAAAAAAAAArIcUb4mEeuWkk06KDh06xIABA6Jjx465jrNRli5dGn//+99Tzjn11FOjX79+G7VPq1at4oorrohzzz23xjljxoyJDz74IIYMGbJRe2XTQw89FEVFRTWOt2jRIn7+859v9D6nnHJKPPXUU/H555/XOOeuu+5SdKlGXq4D1Ec1ndxS07FC1UlVipkzZ856Z1pT06ZNq9wvL0ykY+2GZtddd42///3v0atXryrlljVLL9WNVad8vLrH11Ry6du3bzzyyCPRt2/fjDxHAAAAAAAAAAAAANiUfe9734tvfetb9b7kEhHxxBNPpDzNpXXr1vHDH/4wLXvtt99+tZZYajsdpS4pKSmJhx9+OOWc008/PTp06LDReyUSifi///u/lHNGjRoV48aN2+i9NjWKLhugpqJLqj8s1pTqCKjp06evd6Y11dQwS9U8o2ZbbbVVPPHEE3HmmWdGXl5ejaWW6gora6qp2FJ5vUQiEclkMhKJRAwfPjweffTR6NatW2aeHAAAAAAAAAAAAABQbzz11FMpx4899tga3/O+IU477bSU46+++up6vZc+l95+++2YP39+jeNNmzaNE088MW377bbbbrWerPPMM8+kbb9NhaLLBmjZsmW1RYb1+c3ZqVOnGsfGjx+/QbkqW7RoUbXXi4uLN3rthqqgoCAuvvjiePbZZ+Pggw+OiFir8FLbaS5rqu5x5QWYYcOGxRNPPBGXXnppFBQUpP8JAQAAAAAAAAAAAAD1yuTJk+PTTz9NOefYY49N65777rtvypNwVq5cGS+++GJa98yUp59+OuX4AQccEG3btk3rnt/73vdSjj/77LMpD1poiBRdNkD37t2rvb548eJ1XqN9+/YVLbk1TwT57LPPNi5gRHz55ZfVXm/RosVGr93Q9ezZM26++eZ48cUX48wzz4yOHTuudULLmgWWmm4RVU94adq0aRx11FHxj3/8I/7617/Gtttum8unCgAAAAAAAAAAAADUIa+++mrK8f79+8eWW26Z1j3z8vLi29/+dso5teWqC8rKyuKNN95IOefQQw9N+74HH3xw5Ofn1zg+c+bM+Oqrr9K+b31W86tFjXr16lXt9YkTJ67XOr17946PP/64ovCQSCQimUzGuHHjYsGCBdGuXbsNyldWVhZjxoyp9mSRNm3abNCarK1Hjx5x8cUXx8UXXxyff/55vPnmm/Hxxx/HF198EbNmzVqnNZo0aRJ9+/aN7bffPoYNGxa7776701sAAAAAAAAAAAAAgGq98847Kcf32WefjOy7zz77xP3331/j+LvvvhulpaXRqFGjjOyfDp999lnKwy0KCgpit912S/u+7dq1i4EDB8aYMWNqnPP2229H37590753faXosgF69uxZ5X7lgsr6GDhwYHz88ccR8d9T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8pe/XDPuqebXjz/+OM4888xYtGhRNiMCAAAAAAAAAAAAANCIjj322Nh1111T7vntb38bTz/9dIPuP3v27Pje974XVVVVde5p06ZNXHjhhQ26fzbl5eXFj3/845R75s6dGxdccEGUlZU16Izrr78+nnnmmZR7vvGNb0SPHj0adP/mTtGlmfja174WP/nJT9aZ7BIRMWfOnLjwwgujuro6m/EAAAAAAAAAAAAAaIKqkwmPJvqgeUskEvGzn/1szc+N16aysjIuuuiieOCBBzbp3pMnT47TTz89FixYkHLfBRdcEF26dNmke+eKQw89NA455JCUe1599dU4++yz44svvtjo+1ZUVMRPf/rTuP3221Pu69KlS3znO9/Z6PtuafKzHYDGc/rpp8fMmTPjvvvui0QiEYlEIpLJZEyZMiX+/ve/1zueCgAAAAAAAAAAAACguXr99ddj9uzZm/ScxYsX17tnU4skERF77713bLfddpv8vLUNHDgwzj333Ljlllvq3FNRURFXXHFFPPHEE/G9730vBg4cWOfeuXPnxq233hoPPPBAykkuERH77LNPnHHGGQ3OnguuuuqqGDlyZCxatKjOPZMnT47hw4fH+eefH6NHj47i4uJa91VVVcVTTz0Vf/jDH+Kjjz5KeW5eXl5cd911dd6LiESyZgQIzcLSpUtj6NChUVpauuZaMpmMli1bxhNPPBHdunXLYjrIji7t+2U7AgBAkzVv1mPZjgAA0GTtuvNJ2Y4AANBkzVwyL9sRAACarKqKudmOQDPzZq8R2Y5AA+328cPZjpBzLr300hg3bly2Y0RExLXXXhujRo3a7PusXr06zjjjjHj99dc3an+fPn1ir732il69ekVxcXGsWrUq5s+fH2+//Xa8+eabsTH1gk6dOsW4ceMa/WfT+/VL/TO/xx9/fFx33XWNeubzzz8f55xzTlRXV9e7t2XLlrHvvvvGTjvtFJ07d468vLxYunRpzJgxI1599dWUhZm1nX/++XHxxRdvZvLmzUSXZqZ9+/Zx9tlnxx//+Md1xlCVl5fHnXfeGT/60Y+ymA4AAAAAAAAAAAAAgMbSokWL+POf/xzf+MY3Yvr06fXu//DDD+PDDz9s8Hnt2rWLv//9781mAMOQIUPil7/8ZVxxxRX1lnzKysri2WefjWeffbbB540aNSouuuiiBj9/S5GX7QA0vmOPPXadzxOJRCSTyY0aIQUAAAAAAAAAAAAAQNPRvn37+Mc//hG77LJLWs/p1KlT/P3vf4+ddtopredk2ujRo+Oqq66K/Pz0zhEZPXp0/OpXv1pnoAW1U3Rphnr27BnbbbfdBtdLS0vj1VdfzXwgAAAAAAAAAAAAAADSpmPHjnHvvffGyJEj03L/XXfdNcaOHRsDBw5My/2z7cQTT4zbb789OnXq1Oj3LigoiCuuuCJ+9atfRV6eCsfG8LvUTO2xxx61jk566aWXspAGAAAAAAAAAAAAAIB0Kioqil//+tfx17/+NXr27Nko92zTpk1cdtllcf/990f37t0b5Z65at99941HH300TjrppEYrpOy7777x0EMPxde//vVGud+WIr2zdciazp0713r9/fffz3ASAAAAAAAAAAAAAAAy5ZBDDokDDzwwHn300fjnP/8Z77zzzibfY5tttomTTz45TjzxxNhqq60aP2SO2mqrreKqq66Ks88+O+6666546KGHorS0dJPuUVBQEAcffHB84xvfiH333TdNSZu3RLK2sR80eXfccUdcd911kUgk1lxLJpOx7bbbxsSJE7OYDDKvS/t+2Y4AANBkzZv1WLYjAAA0WbvufFK2IwAANFkzl8zLdgQAgCarqmJutiPQzLzZa0S2I9BAu338cLYjkCPmz58fzz33XLzzzjsxc+bMmDdvXpSWlkZZWVkUFhZGmzZtokuXLrH99ttH//79Y8iQIdG/f/9sx84JlZWVMWnSpHjllVfigw8+iA8//DCWLFkSK1asiOrq6mjTpk0UFxdHr169om/fvrHnnnvG4MGDo7i4ONvRmzQTXZqpgoKCWq8vW7Ysw0kAAAAAAAAAAAAAaKqSyUT9m4Cc1r179zjppJPipJO8SdemKigoiP333z/233//bEfZouRlOwDpsWjRolqvr1y5MsNJAAAAAAAAAAAAAAAANo6iSzM1f/78Wq/n5fmfHAAAAAAAAAAAAAAAyE1aD83Uyy+/HInEhqPi2rRpk4U0AAAAAAAAAAAAAAAA9VN0aYbefvvtNRNdksnkOr9uvfXWWcsFAAAAAAAAAAAAAACQiqJLM/Sb3/ym1uuJRCJ69eqV4TQAAAAAAAAAAAAAAAAbR9Glmbnjjjvi9ddfj0QisWaKy9p22223zIcCAAAAAAAAAAAAAADYCPnZDkDjuf322+M3v/lNnSWXiIghQ4ZkOBUAAAAAAAAAAAAAAMDGUXRpBt5777245pprYvLkyZFMJiORSKxZW7v00q9fv9h+++2zFRMAAAAAAAAAAACAJqaO914HgLRRdGmCSktLY/r06fHGG2/EhAkT4v3334+IWFNyqW2aSyKRiLPOOivTUQEAAAAAAAAAAAAAADaaoksDfeMb38jYWclkMsrKyqK0tDSWL18eCxcuXGetxvoll5rPE4lE7LTTTjFixIiMZQYAAAAAAAAAAAAAANhUii4N9Nprr0UikcjYebVNaalRk2P9kkuNli1bxnXXXZfRvAAAAAAAAAAAAAAAAJtK0WUzpSqgNLa6iirrZ1i7+JKfnx/XX3997LjjjmnPBwAAAAAAAAAAAAAAsDkUXTZTNqakbOx0l1atWsVvf/vbOOywwzIVDQAAAAAAAAAAAAAAoMEUXTZTJie61GXtsk1Nnl133TV+/etfR58+fbIVCwAAAAAAAAAAAAAAYJMoumymbEx0qU1NwaVv377xrW99K0aOHJndQAAAAAAAAAAAAAAAAJtI0WUz5cJEl549e8aQIUPi6KOPjr333jvbcQAAAAAAAAAAAAAAABpE0aWBMlkoSSQSkZ+fH4WFhVFcXBydOnWK7t27R+/evWOnnXaKrl27ZiwLAAAAAAAAAAAAAFuO6mQi2xEA2MIoujTQP//5z2xHAAAAAAAAAAAAAAAAaFbysh0AAAAAAAAAAAAAAAAAIhRdAAAAAAAAAAAAAAAAyBGKLgAAAAAAAAAAAAAAAOQERRcAAAAAAAAAAAAAAABygqILAAAAAAAAAAAAAAAAOUHRBQAAAAAAAAAAAAAAgJyg6AIAAAAAAAAAAAAAAEBOyM92gKZq3rx5tV7v0KFDtGrVKsNp1rVq1apYvHhxrWs9evTIcBrIvsWrSrMdAQCgyTpxj4uyHQEAoMn6ZYsdsx0BAKDJeqvHDtmOAAAA/P+SyUS2IwCwhVF0aaCvfvWrkUhs+Af3L3/5yxg9enQWEv3PI488Ej/72c82uJ5IJOK9997LQiIAAAAAAAAAAAAAAID6KbpshmQyuc7ntRVfsmX9bAAAAAAAAAAAAAAAALlO0WUzrF1sycViSa7nAwAAAAAAAAAAAAAAWFtetgM0dbleIMn1fAAAAAAAAAAAAAAAADUUXQAAAAAAAAAAAAAAAMgJii4AAAAAAAAAAAAAAADkBEUXAAAAAAAAAAAAAAAAckJ+tgMAAAAAAAAAAAAAALmpOpnIdgQAtjAmujRDZWVlaz5OJP73xUWLFi2yEQcAAAAAAAAAAAAAAGCjKLo0QytXrqz1emFhYYaTAAAAAAAAAAAAAAAAbDxFl2Zozpw5tV5v3759hpMAAAAAAAAAAAAAAABsPEWXZmjatGnrfJ5MJiMiomPHjtmIAwAAAAAAAAAAAAAAsFEUXZqZOXPmxNSpUyORSKwpuEREJBKJ2HbbbbOYDAAAAAAAAAAAAAAAIDVFl2YkmUzGr371qzrX+/btm8E0AAAAAAAAAAAAAAAAmyY/2wHYfGVlZfH888/HbbfdFm+//fYG01xqDBo0KAvpAAAAAAAAAAAAAAAANo6iS0RcdtlljXavkpKSmDx5cqPdrzZVVVVRXl4epaWlMWfOnJg/f36sXr06ImKdgksikVjzcVFRUeyzzz5pzQUAAAAAAAAAAAAAALA5FF0iYty4ceuUQjZWTalk7V/feOONeOONNxo138ZkqLH+NJdkMhmJRCIOOeSQaNmyZcZyAQAAAAAAAAAAAND0JevfAgCNStFlLeuXRrJ1j02xfkGnrvPPPvvsTMQBAAAAAAAAAAAAAABoMEWXtWzKVJe6CiUNmQzTGGqb7FLz68iRI2PgwIHZiAUAAAAAAAAAAAAAALDRFF3W0hQnuqxv7aJNMpmM3XbbLX7xi19kLxAAAAAAAAAAAAAAAMBGUnRZS1Oe6LK2ZDIZiUQiTjzxxPjJT34SRUVF2Y4EAAAAAAAAAAAAAABQL0WXJqy2sk27du1i6NChccYZZ0S/fv2ykAoAAAAAAAAAAAAAAKBhFF0iokePHpv8nHnz5kUikVgzPaXm1/bt20fr1q3TkPJ/WrRoEQUFBdGmTZvo2LFjbL311tGnT58YNGhQ7LLLLpGf739WAAAAAAAAAAAAAACg6dGIiIinn356k5/Tv3//Wq//8Ic/jNGjR29uJAAAAAAAAAAAAAAAgC1OXrYDAAAAAAAAAAAAAAAAQISJLgAAAAAAAAAAAABAHaqTiWxHAGALY6LLZkok/OENAAAAAAAAAAAAAADQGEx02QzJZDLl5wAAAAAAAAAAAAAAAGw8RZcGuvbaa2u9vscee2Q4CQAAAAAAAAAAAAAAQPOg6NJAxx9/fLYjAAAAAAAAAAAAAAAANCt52Q4AAAAAAAAAAAAAAAAAEYouAAAAAAAAAAAAAAAA5AhFFwAAAAAAAAAAAAAAAHJCfrYDAAAAAAAAAAAAAAC5KZlMZDsCAFsYE10AAAAAAAAAAAAAAADICSa6bIbKysqYNWtWrWtFRUXRu3fvjOb56KOPory8vNa1HXfcMfLy9JoAAAAAAAAAAAAAAIDcpeiyGcaNGxc///nPa10744wz4tJLL81onvvvvz/uvPPOWtduvPHGOPzwwzOaBwAAAAAAAAAAAAAAYFMY8bEZ7r///kgmkxs8CgoK4uyzz854nrPOOisKCgpqzXTfffdlPA8AAAAAAAAAAAAAAMCmUHRpoKlTp8bUqVMjkUiseUREJBKJOP7446Nr164Zz9StW7cYOXLkmhxr53r55Zdjzpw5Gc8EAAAAAAAAAAAAAACwsRRdGujxxx9f83EymVxn7ZRTTsl0nDVOPfXUNR+vnSuZTMajjz6ajUgAAAAAAAAAAAAAAAAbRdGlgV588cU1H9dMTYmI6N27d/Tv3z8bkSIion///tGnT5+IWDdXRMTzzz+fjUgAAAAAAAAAAAAAAAAbRdGlARYuXBjTpk1bp0iSTCYjkUjEsGHDspjs/wwbNmydaS6JRCKSyWS8+eabsWLFiiwmAwAAAAAAAAAAAAAAqJuiSwNMnjx5TZFk7UJJRMShhx6ajUjrOOSQQ9Z8vHa+1atXx+TJk7OQCAAAAAAAAAAAAICmqNqjyT4AmipFlwaYOXPmmo/XnupSUFAQ/fr1y0akdfTr1y8KCwsjYt18EetmBwAAAAAAAAAAAAAAyCWKLg0wa9asdT6vmZrSr1+/yM/Pz0akddQUbtafNhMR8eGHH2YhEQAAAAAAAAAAAAAAQP0UXRrgo48+2uBaIpHIiWkuNerKougCAAAAAAAAAAAAAADkKkWXBli2bFkkEokNrnfo0CELaWq3fpZEIhHJZDIWLVqUpUQAAAAAAAAAAAAAAACpKbo0QGlpaa3X27Vrl+Ekdasry4oVKzKcBAAAAAAAAAAAAAAAYOMoujRAXWURRRcAAAAAAAAAAAAAAICGU3RpgGQyWev1ysrKDCepW1VVVa3Xy8vLM5wEAAAAAAAAAAAAAABg4yi6NECrVq1qvV5aWprhJHWrK0thYWGGkwAAAAAAAAAAAAAAAGyc/GwHaIpat25da5Fk3rx5WUhTu7lz59Z6va6SDgAAAAAAAAAAAACsLxmJbEcAYAtjoksDbL311pFMJje4PmPGjCykqd36WWryduzYMRtxAAAAAAAAAAAAAAAA6qXo0gDbbLPNOp8nEolIJpPx3nvvRXl5eZZS/U9ZWVlMnTo1Eol1G7SJRCK23XbbLKUCAAAAAAAAAAAAAABITdGlAfr27bvm47Unu1RWVsZ///vfbERaxzPPPBOVlZURERtMnundu3c2IgEAAAAAAAAAAAAAANRL0aUBBg0aVOfav//97wwm2fQMqbIDAAAAAAAAAAAAAABkk6JLAwwaNCjy8/MjIiKRSEQymVzz68svvxxvvvlm1rJNmTIlXnrppTV51rfnnntmIRUAAAAAAAAAAAAAAED9FF0aoLi4OPbff/9aiyTJZDJ+/vOfR1VVVcZzVVZWxi9+8Yt1rq1dxBk0aFB06dIl47kAAAAAAAAAAAAAAAA2hqJLAx199NHrfF5TJomImDFjRlx55ZUZz3TllVfGjBkz6pzmMmzYsIxnAgAAAAAAAAAAAAAA2FiKLg107LHHRseOHSMi1hRcasouyWQyxowZE7/5zW8yluc3v/lNjBkzZp2SS02uiIg2bdrEqFGjMpYHAAAAAAAAAAAAgKavOunRVB8ATZWiSwMVFhbGaaedtsHklLXLLrfffnucd955sXDhwrTlWLhwYZx33nlx++2317pek+ekk06K4uLitOUAAAAAAAAAAAAAAADYXIoum+Gb3/xmdO/ePSLWnZ6ydtnl2WefjWOPPTYmTJiwQSlmcySTyZgwYUIMHz48nn322XXOXD9Pp06d4vzzz2+0swEAAAAAAAAAAAAAANJB0WUztGzZMi6//PJaCyxrF08WL14cP/zhD+Owww6Lv/3tb7Fo0aIGn7lo0aL461//Gocddlj88Ic/jEWLFm1Qclk/w09+8hPTXAAAAAAAAAAAAAAAgJyXn+0ATd3QoUPj1FNPjXvvvXeDsklN0aTm43nz5sUf/vCHuOGGG2L77bePQYMGxaBBg2K77baLtm3bRrt27aJdu3YREbFs2bJYtmxZLF++PGbPnh1vvfVWvPXWW/Hhhx9GdXX1BpNb1j63JkcikYivfe1rMWzYsEz9dgAAAAAAAAAAAAAAADSYoksjuOyyy+LDDz+MV155pc6yy9qFlGQyGR988EHMnDkzxo4du9HnrF9mqe/6PvvsE1dccUWDXhMAAAAAAAAAAAAAAECm5WU7QHNQUFAQN998c+y2224bFFsi/lduiYhaSy8b+6jr+TXWvr7nnnvGLbfcEoWFhRn5PQAAAAAAAAAAAAAAANhcii6NpFWrVnHHHXfE0KFD1ymlrK22wsqmPta/T421144++ui4/fbbo1WrVul+2QAAAAAAAAAAAAAAAI1G0aURtWzZMm666aa45JJLIj8/f53pLrVNeGnoo8ba904mk1FYWBiXXnpp/OEPf4iioqJs/BYAAAAAAAAAAAAAAAA0WH62AzQ3iUQizjnnnDj44IPjV7/6Vbz22mtrrq9fdmno/ddWc5/BgwfH5ZdfHr17925gcgAAAAAAAAAAAABYV3Uk6t8EAI1I0SVN+vXrF3fddVc8//zz8fe//z1effXVNaWU9Usvm6rmPnl5eTFkyJD49re/HXvvvXej5AYAAAAAAAAAAAAAAMgWRZc0GzJkSAwZMiQ+/vjjmDBhQjzzzDPxzjvv1DnRpaYAU9d6Xl5e7LbbbnHooYfGscceGz169EhbdgAAAAAAAAAAAAAAgExSdMmQXr16xXe+8534zne+E8uXL4+pU6fG9OnT45NPPon58+fHwoULY9WqVVFeXh4REUVFRdGqVavo3LlzdO/ePXr27BkDBgyInXbaKYqLi7P8agAAAAAAAAAAAAAAABqfoksWtG3bNvbbb7/Yb7/9sh0FAAAAAAAAAAAAAAAgZ+RlOwAAAAAAAAAAAAAAAABEKLpsMSorK2P+/PnZjgEAAAAAAAAAAAAAAFAnRZdmburUqfHLX/4yBg8eHGPHjs12HAAAAAAAAAAAAAAAgDrlZzsAjW/x4sXx8MMPR0lJScyYMSPbcQAAAAAAAAAAAABoopKRyHYEALYwii7NRHV1dTz77LNRUlISzzzzTFRVVUUymVyznkj4IgMAAAAAAAAAAAAAAMhtii5N3KxZs6KkpCQeeuihWLhwYUTEBgWXtT8HAAAAAAAAAAAAAADIVYouTVBpaWlMmDAhSkpK4u23346IDcstAAAAAAAAAAAAAAAATY2iSxPy8ssvR0lJSUycODHKysoi4n8Fl/XLLXVdBwAAAAAAAAAAAAAAyFWKLjnu008/jXHjxsW4ceNi/vz5EVH39Ja1rwMAAAAAAAAAAAAAADQ1ii45qLy8PB5//PEoKSmJ119/PZLJ5CaXW0xyAQAAAAAAAAAAAAAAmhpFlxzyxhtvRElJSTz22GOxYsWKiPhfkWX94kptBZe69nTu3DmGDRsWw4cPT0dsAAAAAAAAAAAAAACARqHokmULFiyIBx98MEpKSmL27NkREZs1vaVmT+vWrePwww+PESNGxP777x95eXlpSA8AAAAAAAAAAAAAANB4FF2yoLKyMp5++ukoKSmJF198MVavXl1nuSWi/uktNev5+fkxePDgGDFiRHz1q1+Nli1bpukVAAAAAAAAAAAAALAlqM52AAC2OIouGTR9+vQYM2ZMPPLII7F06dKI+F9JZWPKLevvq9mz2267xYgRI+Loo4+ODh06pCM6AAAAAAAAAAAAAABA2im6pNmSJUti/PjxUVJSEtOnT4+IqHN6S13llrX31uzp06dPDB8+PI499tjo2bNnGpIDAAAAAAAAAAAAAABklqJLGiSTyXjuuedi7Nix8d///jeqqqrqLLfU7E9l7YLLmWeeGcOHD48BAwY0fnAAAAAAAAAAAAAAAIAsUnRpRB999FGUlJTEQw89FAsWLIiITZvesjHTXS699NLGigsAAAAAAAAAAAAAAJBTFF0204oVK+LRRx+NsWPHxltvvRURm1Zu2dg9AAAAAAAAAAAAAAAAzZ2iSwO9+uqrUVJSEv/5z3+irKwsIv5XUlm7uLL29bXVtqdFixax3377xVZbbRUTJkyIRCKh+AIAAAAAAAAAAAAAAGwxFF02wbx586KkpCQefPDBmDt3bkRs2vSWugowO+ywQ4wcOTKGDx8eXbt2jQceeCAmTJiQjpcAAAAAAAAAAAAAAACQsxRd6lFRURFPPPFElJSUxKuvvhrJZLJRyi2dO3eOY445JkaOHBk77bRTmtIDAAAAAAAAAAAAAAA0HYoudXjrrbdi7Nix8dhjj0VpaWlE/K+kUld5ZW21FWCKioriq1/9aowcOTIGDx4cLVq0SFd8AAAAAAAAAAAAANhsyUjUvwkAGpGiy1q+/PLLeOihh6KkpCQ+/PDDiIjNnt6SSCRizz33jJEjR8bRRx8dxcXFaUoPAAAAAAAAAAAAAADQtG3xRZfVq1fH008/HWPHjo0XXnghVq9eXWe5JWLDgktd61/5yldixIgRcdxxx0XPnj3TlB4AAAAAAAAAAAAAAKD52GKLLnPmzIm77747xo8fH4sXL46Ihk9vqVlv165dHHXUUXHcccfFnnvuma7oAAAAAAAAAAAAAAAAzdIWW3R56KGH4s4771znWkPKLfn5+TF48OA47rjj4rDDDovCwsI0JQYAAAAAAAAAAAAAAGjettiiS421yysRGxZc6lrfeeed47jjjovhw4dHx44d0xsSAAAAAAAAAAAAAABgC7DFF10iap/eEvG/kkvNeteuXWP48OExcuTI2GGHHTKWDwAAAAAAAAAAAAAAYEug6FKLtQsurVq1iqFDh8bIkSPjgAMO2GDCCwAAAAAAAAAAAAAAAI1D0WU9iUQikslkJBKJOOCAA+L666+Pzp07ZzsWAAAAAAAAAAAAAGRcdbYDALDFyct2gFxTU3KJiHj55Zfj8MMPjx//+Mfx0ksvZTkZAAAAAAAAAAAAAABA82aiSy2SyeSaj1etWhUPP/xwPPzww9G1a9cYMWJEHHfccdG3b98sJgQAAAAAAAAAAAAAAGh+THRJIZFIRCKRiGQyGclkMj7//PO47bbbYvjw4TFq1Ki46667YtGiRdmOCQAAAAAAAAAAAAAA0CwousT/Ci2JRGKd6zWTXdZerym9vPfee3HttdfGQQcdFOedd148+uijUVFRkY34AAAAAAAAAAAAAAAAzUJ+tgNkywknnBAVFRXx0EMPxeeffx4RsU7ZpabkUvNrbevJZDKqqqri2WefjWeffTaKi4vj6KOPjhEjRsRee+2V4VcEAAAAAAAAAAAAAADQtG2xE126d+8el1xySTzzzDNx6623xpFHHhkFBQVrCiy1TXmpWVt/veba8uXL44EHHoivf/3rMXTo0Ljpppvik08+yeKrBAAAAAAAAAAAAAAAaDq22IkuNRKJRAwZMiSGDBkSS5cujfHjx0dJSUm89957a9bXL7us/Wtd659++mn85S9/ib/85S8xaNCgOP744+Poo4+Odu3aZeqlAQAAAAAAAAAAAAAANClb7ESX2rRv3z5OP/30KCkpiQcffDBOP/30aN++/ZqJLRG1F1tqW1970stbb70Vv/jFL2Lw4MHxve99L5566qlYvXp1Vl4jAAAAAAAAAAAAAABArtriJ7rUpX///nHFFVfEj3/843j66aejpKQkXnjhhVi9enW9U14i1i3E1FyvqKiIJ598Mp588snYaqut4phjjokRI0bEwIEDM/jKAAAAAAAAAAAAAGDj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JSLiyy+/jLPPPjv+9a9/RY8ePRrzZQMAAAAAAAAAAAAAG2H69Onx7rvvptwzatSoDd4MH6idoguk8Oabb8Y111xTZ5Fl/estW7aMQw45JI444ojYeeedo1evXhv9B9KqVatixowZMWXKlHjkkUdi6tSpa86omeKy9lk11z///PO46KKL4l//+lfk5/tHGgAAAAAAAAAAAAAyqb5pLnl5eTFq1KgMpYGmz0/FQx0qKiriBz/4QVRVVW1QNIlYd7rLNttsExdccEEcccQR0aZNmwad16pVqxg0aFAMGjQozjrrrJg9e3bcd999cc8990RlZeUG02Rqyi4REe+++2786U9/iosvvriBrxYAAAAAAAAAAAAA2FQVFRXx8MMPp9xzwAEHRI8ePTKUCJq+vGwHgFx12223xdy5czcouaw9YaVly5bx/e9/Px577LE4/vjjG1xyqc12220Xl156aTzyyCNx6KGHrsmw/oSYmiz/+Mc/Yu7cuY12PgAAAAAAAAAAAACQ2lNPPRVLlixJuWf06NGZCQPNhKIL1KK8vDzuvPPOWkslEf83TaVXr14xZsyYOPfcc6OwsDBtWXr16hU333xz/PznP48WLVpskKNGRUVF3H777WnLAQAAAAAAAAAAAACsa8yYMSnXt9pqqzjssMMylAaah/xsB4BcNGHChFi6dOk601xqPk4kEtGnT5+46667onPnzhnLdMopp0SHDh3iBz/4QVRXV9ea7cEHH4wf/vCH0apVq4zlAgAAAAAAAAAAAIAt0fz58+Oll15Kuee4445L65vq55KlS5fGnDlz4rPPPosVK1ZEVVVVtGzZMlq2bBmdOnWK7t27R5cuXSIvz7wOUlN0gVpMnDhxnc/XnuzSunXr+Mtf/pLRkkuNo446KmbPnh033HDDOlNdaj5euXJlvPTSS1qfAAAAAAAAAAAAQKOoznYAyGElJSVRXZ36n5LRo0dnKE12PPbYY/H+++/HlClTYu7cufXub926dfTv3z922223OOigg2LPPffcYopAbDxFF1hPMpmMV155ZZ1yS831RCIRF154YWy33XbZCRcR55xzzpo/ENae6lLj5ZdfVnQBAAAAAAAAAAAAgDRKJpMxbty4lHsGDhwYO+64Y4YSZcdvf/vbTdq/cuXKmDJlSkyZMiVuv/32aN++fYwcOTJOPfXUrP6MNrnFzB9Yz6effhorV66MiHWnpUREdOzYMU477bRsRYuIiLy8vDjvvPPqXH///fczmAYAAAAAAAAAAAAAtjyvvPJKzJkzJ+We5j7NpTEsXbo07rzzzhg2bFhcfvnl8fnnn2c7EjlA0QXWM3v27A2u1RRejjnmmCgoKMh8qPUcccQR0a5du4iINUWcmukun3zySTajAQAAAAAAAAAAAECzN3bs2JTrrVq1imOOOSZDaZq+1atXx5gxY+LYY4+NBx98MNtxyDJFF1jP8uXL61w78MADM5ikbi1atIh99tknksnkBmup8gMAAAAAAAAAAAAAm2f58uXx5JNPptxz1FFHRXFxcYYSNR/Lli2LH//4x3HllVdGVVVVtuOQJfnZDgC5pry8vM61HXbYIYNJUttxxx1j4sSJG1yvqKjIQhoAAAAAAAAAAAAAcsk999wT9957b0bPPPXUU+O0007L6JnZMH78+CgrK0u5Z/To0RlK0zzde++98dlnn8VNN90U+flqD1sa/4vDelq1alXnWqdOnTKYJLWOHTvWer1ly5YZTgIAAAAAAAAAAABArlm0aFHMnDkz42duCcaMGZNyfbvttou99torQ2myo6ioKHbffffo169f7LjjjrHDDjtEhw4dori4OIqLi6OysjKWLl0aS5Ysiblz58brr78ekyZNimnTpkV1dfVGnfH000/Hj370o/jd734XiUQiza+IXKLoAutp06ZNnWsFBQUZTJJaXVmMOAMAAAAAAAAAAACA9Jg+fXpMnTo15Z4TTjghQ2kyq0OHDnHEEUfEIYccEvvvv3/KAQOFhYXRpk2b6NGjR+y8885x+OGHR0TEnDlz4h//+EeMHTu23qk4ERETJkyI/v37xznnnNNor4Pcp+gC69l2223rXFuxYkW0bds2g2nqtmLFinU+TyaTkUgkYptttslSIgAAAAAAAAAAAKC5SWY7AOSY+qa55Ofnx/HHH5+hNOmXSCRijz32iFNOOSWOOuqoKCws3Kz79ezZM372s5/Fd7/73bj00kvjueeeq/c5N9xwQxx44IExYMCAzTqbpiMv2wEg1/Tq1WvNv4DXH3H18ccfZyNSrT755JNar/ft2zfDSQAAAAAAAAAAAACg+auoqIjx48en3HPQQQdFly5dMpQo/YYPHx7/+te/YsSIEZtdcllbp06d4m9/+1tccsklkZeXutawevXq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Zs2K+++/P2bOnBlVVVUNBi9rf15RURGnnXZa3H333dGpU6et+rwAAAAAAAAAAAAAAJAloQs0YPny5XHuuefWfZ8vctlvv/3izDPPjIMOOmirzuzVq1eMGDEiRowYERUVFXHPPffE1KlTo7y8vC5s2TB2iYh477334rLLLovzzz9/q84HAAAAAAAAAAAAAIAsFWc9AFI1derUWLJkyXpxSUSsF5z07t07/vM//zPuuOOOrY5cNtS5c+c47rjjYsaMGfGd73ynLmpZ+1/X3ZPL5eLOO++Mt956q0k3AAAAAAAAAAAAAABAcxK6QD2WL18ef/zjHxuMSta+xeWee+6Jo446qqBbunbtGuedd15cffXV0aFDh7odEeu/Zaa2tjamTZtW0C0AAAAAAAAAAAAAAFBIQheox5///OdYuXJlRPxvTLI2cikqKor9998/brjhhujZs2ezbTr00EPj97//fbRr165uz1prtz300EOxbNmyZtsEAAAAAAAAAAAAAABNSegC9Xj88cfX+37dqKRnz55xxRVXRMeOHZt7Vhx44IFx3nnnrfcml3X/XFNTE08++WSz7wIAAAAAAAAAAAAAgKYgdIENrFmzJp577rn14paIqHuby1lnnRW9evXKaF3EmDFj4rOf/Wzdng09/fTTGawCAAAAAAAAAAAAtkU5Xy32C6ClErrABt59992orq6OiNgoJikrK4tjjjkmq2l1JkyY0OC1OXPmNOMSAAAAAAAAAAAAAABoOkIX2MD777+/0c/WBi9HH310vW9RaW5f/OIX694qs3ZPUVFR5HK5evcDAAAAAAAAAAAAAEBLIHSBDVRUVDR47XOf+1wzLsnvoIMOilxu4xfLrVixIoM1AAAAAAAAAAAAAACw9YQusIGampoGr+26667NuCS/AQMG1PvzfPsBAAAAAAAAAAAAACBlQhfYQMeOHRu8tt122zXjkvy6d+9e78/z7QcAAAAAAAAAAAAAgJQJXWADnTt3bvBamzZtmnFJfg1tybcfAAAAAAAAAAAAAABSJnSBDey0004NXlu+fHkzLslvwy25XC6Kiory7gcAAAAAAAAAAAAAgJSVZD0AUtOvX7/o0KFDrFq1KoqKita79u6770b37t2zGbaBd999t96f77777s28BAAAAAAAAAAAANhW1RY1fg8ANCVvdIENFBUVxQEHHBC5XG6jay+88EIGi+o3a9asjUKciIgDDzwwgzUAAAAAAAAAAAAAALD1hC5Qj8MOO6zenz/yyCPNvKR+c+bMiXfeeWejn5eUlMQXv/jFDBYBAAAAAAAAAAAAAMDWE7pAPUaOHBnt27ev+76oqChyuVy88sor8eKLL2a47H/ccMMN632fy+WiqKgoRowYEZ06dcpoFQAAAAAAAAAAAAAAbB2hC9SjR48eMXr06Mjlcuv9PJfLxYUXXhhr1qzJaFnEK6+8En/+85+jqKhoo2snnXRSBosAAAAAAAAAAAAAAKBpCF2gARMnTozu3bvXfb82LJk9e3b8+te/zmTTp59+GqeffnrU1tbW/Wzt21xGjx4dgwcPzmQXAAAAAAAAAAAAAAA0BaELNKBHjx7x85//vO6tLmuDklwuF7fffntccsklzbrnk08+ie9973sxf/78jd7mUlZWFueee26z7gEAAAAAAAAAAAAAgKYmdIE8Ro0aFZMmTaqLXCKiLna58cYbY8KECbFgwYKC73jiiSfi61//esydO3e9yCWXy0W3bt3iuuuui86dOxd8BwAAAAAAAAAAAAAAFJLQBRpxyimnxA9/+MO6N7tE/G/sMnPmzBg5cmRcccUVsWrVqiY/e+7cuXHiiSfGySefHIsWLVpvQy6Xi169esW0adNiwIABTX42AAAAAAAAAAAAAAA0t5KsB0BLMHHixNh1113j5z//eaxYsSKKiorqYpeVK1fGVVddFTfffHMcfvjhcdRRR8XBBx8cxcVb1pGVl5fHww8/HA888EC88MILkcvl1nujzNrYZe+9944pU6ZEWVlZk31OAAAAAAAAAAAAgHXVZj0AgFZH6AINmD9//nrf77///nHttdfGRRddFK+//npd7BLxP/HJ8uXL495774177703OnXqFAMHDoxBgwbFwIEDY/vtt4/OnTtH586do1OnTlFTUxMVFRWxYsWKqKioiHnz5sUbb7wRb775ZsybNy/WrFlT99yIWO+c4uLiGDduXBx//PGRy+U22tkU+vbt2+TPBAAAAAAAAAAAAACAxghdoAGHHXZYXWBSn3UjlA3ftlJRURGzZs2KWbNmbdaZa39/rQ2fu/bPt912W9x2222b9exNVVRUFLNnzy7IswEAAAAAAAAAAAAAIB+hC+SxYXiS7551g5dN/d36bBjXbPicLX0uAAAAAAAAAAAA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V18t2NmvvfZa3uuNbaPlE7oAAAAAAAAAAAAAAEATeu+99/Je32GHHZppyZb57Gc/m/f6s88+W7Czn3nmmbzXG9tGyyd0AQAAAAAAAAAAAACAJlJdXR2vv/563nv69evXTGu2zMEHH5z3+vPPPx/V1dVNfm5VVVW88MILee8ZNmxYk59LWoQuAAAAAAAAAAAAAADQRP7xj380GoEMHDiwmdZsmf322y86derU4PXKysp48sknm/zcmTNnxqpVqxq83qVLl9hnn32a/FzSInQBAAAAAAAAAAAAAIAmcu+99+a93rZt29h7772bZ8wWKikpicMPPzzvPffff3+Tn9vYM7/yla9ESUlJk59LWoQuAAAAAAAAAAAAAADQBObNmxePPPJI3nsOPPDAKC0tbaZFW+7oo4/Oe33GjBnx8ccfN9l58+fPj7/+9a9btYltg9AFAAAAAAAAAAAAAKhXra8W+0U2LrzwwlizZk3ee0aOHNlMa7bOsGHDoqysrMHrNTU1MW3atCY7b9q0abF69eoGr/ft2zeGDh3aZOeRLqELAAAAAAAAAAAAAABspWnTpsXf//73vPd07tw5Ro0a1UyLtk6bNm3i+OOPz3vP7bffHu+8885WnzV37ty444478t5z/PHHR5s2bbb6LNIndAEAAAAAAAAAAAAAYJvz2muvxapVq5rlrHvuuScuu+yyRu8bN25cdOnSZavO+uCDD2LgwIF5v6644oqtOmOtb37zm9G9e/cGr9fU1MSPf/zjqK6u3uIzqqur48c//nHet7l07949xowZs8Vn0LIIXQAAAAAAAAAAAAAA2Obce++9cfjhh8fNN98clZWVBTmjuro6Lrroojj77LMjl8vlvbdXr17x/e9/vyA7CqVTp04xceLEvPe8+uqrcc4550Rtbe1mP3/NmjXxk5/8JGbPnp33vkmTJkWnTp02+/m0TEIXAAAAAAAAAAAAAAC2SQsXLoyLLroohg8fHr/+9a/jjTfeaLJnP/vsszFu3Li4+eabN+n+n/70p9G1a9cmO7+5fPvb346BAwfmvef++++PSZMmRUVFxSY/d/ny5XHqqafGgw8+mPe+QYMGxdixYzf5ubR8QhcAAAAAAAAAAAAAALZpS5cujZtuuimOOeaYOOKII+I3v/lNPPHEE1FeXr5Zz1m4cGHcd999MWbMmDjuuOPin//85yb93nHHHRejRo3aguXZa9OmTVx66aVRWlqa975HH300jjzyyLj77rujqqqqwftWrVoVd955Zxx55JHx2GOP5X1m+/bt49JLL402bdps0XZappKsBwAAAAAAAAAAAAAAQHOZN29eTJ8+PaZPnx5FRUVRVlYWu+66a+y4447Rq1ev6Nq1a7Rr1y4iIpYtWxbl5eWxePHiePnll2PevHmbfd7hhx8eZ599dhN/iuY1aNCg+NnPfhbnnXde3vsWLFgQ55xzTlx88cUxdOjQGDRoUGy33XaRy+ViyZIl8cYbb8TTTz+9yW9+Oe+88xp9mwzbHqELAAAAAAAAAAAAAACtUi6Xi/nz58f8+fML8vxRo0bFpZdeGiUlLf+v7o8ZMyY++uijmDp1aqP3Llu2LB599NF49NFHt/i8iRMnxpgxY7b492m5Wv7/tAAAAAAAAAAAAAAAQELatGkTp59+eowfPz7rKU1q0qRJERGbFLtsjVNPPTVOPfXUgp5BuoQuAAAANGjRmsqsJwAAtFhTiv3fUgAAW+qRc/fJegIAAPD/y0Uu6wnQ4uy9997xq1/9KgYPHpz1lIKYNGlS7LbbbvHTn/40Kiub9j8P6dixY1x88cXx1a9+tUmfS8tSnPUAAAAAAAAAAAAAAABoanvuuWfstNNOzXbekCFDYsqUKXHnnXdus5HLWqNGjYqHHnoojjjiiCZ75hFHHBEPPfSQyAVvdAEAAAAAAAAAAAAAYNszevToGD16dMyfPz+eeeaZeO655+LVV1+Nd955J2pqaprkjF122SWGDx8exxxzTAwZMqRJntlS9OnTJ6ZMmRKvvfZa3HjjjTFjxoxYtWrVZj2jffv2ccQRR8T3vve92HPPPQu0lJamKJfLeZ8YsE0rabdj1hMAAFqsg3sPynoCAAAAAK3QI7/YJ+sJAAAtVsfxk7OewDbmhP7/nvUEttD0eXdlPSFZ1dXVMWfOnHjzzTfjgw8+iI8++igWLFgQH3/8cVRUVERVVVWsXLkyqquro23btlFaWhpdunSJ3r17R58+feIzn/lMDBw4MPbbb7/o27dv1h8nGatWrYqnn346nn322ZgzZ07Mmzcvli1bFitWrIiIiE6dOkW3bt2if//+sdtuu8XQoUNj6NCh0b59+4yXkxpvdAEAAAAAAAAAAAAAoNVo165dDBkypNW9gaXQ2rdvH8OHD4/hw4dnPYUWrjjrAQAAAAAAAAAAAAAAABAhdAEAAAAAAAAAAAAAACARQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCSVZDwAAAAAAAAAAAAAA0lSb9QAAWh1vdAEAAAAAAAAAAAAAACAJQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCUIXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAlCFwAAAAAAAAAAAAAAAJIgdAEAAAAAAAAAAAAAACAJJVkPAAAAAAAAAAAAAADSVJvLZT0BgFbGG10AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJJRkPQAAAAAAAAAAAAAASFMu6wEAtDre6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkQegCAAAAAAAAAAAAAABAEoQuAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBKELgAAAAAAAAAAAAAAACRB6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkoSTrAQAAAAAAAAAAAABAmmojl/UEAFoZb3QBAAAAAAAAAAAAAAAgCUIXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAlCFwAAAAAAAAAAAAAAAJIgdAEAAAAAAAAAAAAAACAJQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCSVZDwAAAAAAAAAAAAAA0pSLXNYTAGhlvNEFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASEJJ1gMAAAAAAAAAAAAAgDTVZj0AgFbHG10AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJJRkPQAAAAAAAAAAAAAASFNt5LKeAEAr440uAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBKELgAAAAAAAAAAAAAAACRB6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkQegCAAAAAAAAAAAAAABAEoQuAAAAAAAAAAAAAAAAJKEk6wEAAAAAAAAAAAAAQJpykct6AgCtjDe6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkoyXoAAAAAAAAAAAAAAJCm2qwHANDqeKMLAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkISSrAcAAAAAAAAAAAAAAGnK5XJZTwCglfFGFwAAAAAAAAAAAAAAAJIgdAEAAAAAAAAAAAAAACAJQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCUIXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAlCFwAAAAAAAAAAAAAAAJJQkvUAAAAAAAAAAAAAACBNtZHLegIArYw3ugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJKMl6AAAAAAAAAAAAAACQptqsBwDQ6nijCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJCEkqwHAAAAAAAAAAAAAABpykUu6wkAtDLe6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkQegCAAAAAAAAAAAAAABAEoQuAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBKELgAAAAAAAAAAAAAAACRB6AIAAAAAAAAAAAAAAEASSrIeAAAAAAAAAAAAAACkqTZyWU8AoJXxRhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCUIXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAlCFwAAAAAAAAAAAAAAAJIgdAEAAAAAAAAAAAAAACAJQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCSVZDwAAAAAAAAAAAAAA0pTL5bKeAEAr440uAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBKELgAAAAAAAAAAAAAAACRB6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkQegCAAAAAAAAAAAAAABAEoQuAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBJKsh4AAAAAAAAAAAAAAKSpNusBALQ63ugCAAAAAAAAAAAAAABAEoQuAAAAAAAAAAAAAAAAJEHoAgAAAAAAAAAAAAAAQBKELgAAAAAAAAAAAAAAACRB6AIAAAAAAAAAAAAAAEAShC4AAAAAAAAAAAAAAAAkQegCAAAAAAAAAAAAAABAEkqyHgAAAAAAAAAAAAAApCkXuawnANDKeKMLAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkISSrAcAAAAAAAAAAAAAAGmqjVzWEwBoZbzRBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEhCSdYDAAAAAAAAAAAAAIA05XK5rCcA0Mp4owsAAAAAAAAAAAAAAABJELoAAAAAAAAAAAAAAACQBKELAAAAAAAAAAAAAAAASRC6AAAAAAAAAAAAAAAAkAShCwAAAAAAAAAAAAAAAEkQugAAAAAAAAAAAAAAAJAEoQsAAAAAAAAAAAAAAABJKMl6AAAAAAAAAAAAAACQptrIZT0BgFbGG10AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBQAAAAAAAAAAAAAAgCQIXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJJRkPQAAAAAAAAAAAAAASFMucllPAKCV8UYXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAlCFwAAAAAAAAAAAAAAAJIgdAEAAAAAAAAAAAAAACAJQhcAAAAAAAAAAAAAAACSIHQBAAAAAAAAAAAAAAAgCUIXAAAAAAAAAAAAAAAAkiB0AQAAAAAAAAAAAAAAIAklWQ8AAAAAAAAAAAAAANJUm8tlPQGAVsYbXQAAAAAAAAAAAAAAAEiC0AUAAAAAAAAAAAAAAIAkCF0AAAAAAAAAAAAAAABIgtAFAAAAAAAAAAAAAACAJAhdAAAAAAAAAAAAAAAASILQBbYhixcvznoCAAAAAAAAAAAAAABsMaELNKC8vDzrCZtlyZIlcfzxx2c9AwAAAAAAAAAAAAAAtpjQBRowYcKEqKqqynrGJlm+fHn8x3/8R8ydOzfrKQAAAAAAAAAAAMA2JOerxX4BtFRCF2jASy+9FGeeeWbkcmn/r/qKioo48cQT4/XXX896CgAAAAAAAAAAAAAAbBWhC+Tx2GOPxQUXXJD1jAZVVlbG+PHj45VXXsl6CgAAAAAAAAAAAAAAbDWhCzTij3/8Y1xzzTVZz9jIqlWrYsKECTFr1qwoKirKeg4AAAAAAAAAAAAAAGw1oQs0IpfLxe9+97u49957s55Sp7q6On74wx/Gs88+K3IBAAAAAAAAAAAAAGCbIXSBRhQVFUUul4vzzjsvnnzyyaznRE1NTUycODH++7//W+QCAAAAAAAAAAAAAMA2RegCm6CoqChWr14dkyZNitmzZ2e2Y82aNXHGGWfEzJkz6yKXXC6X2R4AAAAAAAAAAAAAAGhKQhdoxNqQpKioKCorK2P8+PHx4YcfNvuO2traOOuss+Ivf/mLyAUAAAAAAAAAAAAAgG2S0AU2wbqxy6JFi+Kkk06K8vLyZj3/7LPPjoceemijyGXt9xER++67b7NtAgAAAAAAAAAAAACApiZ0gQZ8+ctfjlwuV+/bU/71r3/FhAkToqqqqlm2nHfeeXHfffc1GLnkcrkYMmRIXH/99c2yBwAAAAAAAAAAAGgdaiPnq4V+AbRUQhdowOWXXx777bffRrHL2j+//PLLccYZZ6wXwBTCBRdcEHfddVfeyGXgwIFxww03ROfOnQu6BQAAAAAAAAAAAAAACknoAg0oLS2Na665Jvr37x8RsVHsksvl4vHHH4/zzz+/YBsuvvji+MMf/pA3chkwYEBMnz49unXrVrAdAAAAAAAAAAAAAADQHIQukEf37t3j+uuvj549e0ZE/bHLn/70p7j66qub/Oz/+q//iptuuilv5LLLLrvE9OnTo0ePHk1+PgAAAAAAAAAAAAAANDehCzSiX79+8fvf/z46dOgQEfXHLlOmTIl77rmnyc684oor4rrrrssbufTr1y9uuumm2H777ZvsXAAAAAAAAAAAAAAAyJLQBTbBnnvuGVOmTIk2bdpExP8GJ2v/nMvl4mc/+1n8/e9/3+qzrrnmmpg6dWreyKWsrCxuvPHG6NOnz1afBwAAAAAAAAAAAAAAqRC6wCb6whe+EL/61a/qwpOI9SOU1atXx2mnnRavvfbaFp8xffr0+O1vf5s3cundu3fceOON0a9fvy0+BwAAAAAAAAAAAAAAUiR0gc0wevToOP300yOXy9Ubo1RWVsYPfvCD+OCDDzb72bfddltccskldd/XF7n07Nkzbrzxxthll1229qMAAAAAAAAAAAAAAEByhC6wmSZMmBDf+ta3GoxdFi1aFCeddFIsWbJkk5955513xoUXXlj3jPoil+7du8cNN9wQAwYMaMqPAwAAAAAAAAAAANCg2sj5aqFfAC2V0AW2wC9+8Ys47LDD6o1dIiLmzZsXJ598clRVVTX6rHvvvTd+/vOf1z2rvsila9euMW3atBg4cGABPg0AAAAAAAAAAAAAAKRB6AJboLi4OCZPnhz77rvvRrHL2j+//PLLcfrpp68XwGzogQceiHPPPTdv5NKpU6e47rrrYsiQIQX+VAAAAAAAAAAAAAAAkC2hC2yh0tLSuPbaa2OXXXaJiNgodsnlcvHEE0/EL37xi3p/f8aMGfGTn/wkamtr6353w+d06NAhrr322th3330L/GkAAAAAAAAAAAAAACB7QhfYCt27d4/rr78+evbsGRH1xy533nlnTJ06db3fe/zxx+PMM8+M1atX1/s2mFwuF+3bt4+rrroqDjzwwGb8RAAAAAAAAAAAAAAAkB2hC2ylnXbaKa655pro0KFDRNQfu1x55ZVx1113RUTEk08+GaeddlreyKVdu3YxZcqUOPjggzP4RAAAAAAAAAAAAAAAkA2hCzSBvfbaK377299GmzZtIuJ/Y5e1f87lcvGLX/wirrzyypg4cWJUV1c3GLmUlJTE5MmT45BDDmn+DwIAAAAAAAAAAAAAABkSukATOeSQQ+KXv/xl5HK5up/lcrm6kGX16tUxderUWLlyZd7I5bLLLosvf/nLmXwGAAAAAAAAAAAAAADIktAFmtDXv/71mDRp0noBS8T/Bi0bhi3r/rlNmzbx61//OkaOHJnJdgAAAAAAAAAAAAAAyFpJ1gNgW3PKKafEggUL4k9/+lNd3LJWQ5FLcXFxXHDBBfG1r30tk80AAAAAAAAAAAAA9Vn370ECQHPwRhcogPPPPz+GDx++UdCy9muttdfPO++8+MY3vpHVXAAAAAAAAAAAAAAASILQBQqguLg4fvvb38Y+++yzXuyy1to3vRQVFcVPfvKTGDduXEZLAQAAAAAAAAAAAAAgHUIXKJD27dvHNddcE7vssst6scvayCUi4owzzojvfe97Ga4EAAAAAAAAAAAAAIB0CF2ggHr06BHXX3999OrVKyLWf5PLqaeeGuPHj894IQAAAAAAAAAAAAAApKMk6wHQ1K688sqsJ2xk3333jb/+9a9RVFQURUVF0adPn4gozNZTTz21yZ8JAAAAAAAAAAAAAADNQejCNufKK6+MoqKirGfUK5fLRUTEggULYurUqQU5Q+gCAAAAAAAAAAAAAEBLJXRhm7U2KklRobalGvgAAAAAAAAAAAAAAMCmELqwzUot+lg3binEtpTDHgAAAAAAAAAAAABIUU1NTbzzzjsxZ86cuq8FCxbE8uXLY9myZVFRURHFxcVRWloa3bp1i+233z769esXAwcOjL333jv233//aNeuXdYfA7YpQhf+H3v3HV53Wf4P/E6aJmlG904XUGgpoy1ly5RpC7JBGbIEkeVAliKI+lVE2SiKFkUoIktQCrKHCGXPtlhaWroH3U3btEnO7w9/rS0k53ScleT18sple54nn/t9DlflY3re52m28rn4ke5s+VbqAQAAAAAAAAAAAJqH+sjf92PCpqivr49x48bFmDFj4pVXXok333wzVqxYkfL7Vq1aFUuXLo3p06fHW2+9tfbxNm3axBe+8IU46qijYr/99ouioub1Fv2HHnooLr/88pzN79atW7z44os5m09uNK8/RQAAAAAAAAAAAAAAsI7a2tp45ZVX4rHHHotnn302Fi1alLZrr1ixIp5++ul4+umno1evXnH22WfHscceG61atUrbDGhpFF1otpxyAgAAAAAAAAAAAAAt10cffRR33nlnPPXUU2kttzRm+vTpceWVV8Zf//rX+OlPfxqDBg3K+ExojgpzHQAyIZFItLgvAAAAAAAAAAAAAOB/nnvuubj//vuzUnJZ19ixY+OEE06Ie++9N6tzoblwogvNzocffpjrCADQqOLi4thmmy2jV1WPqKisiLI2bWL5ihWxbOmymD5jVvznP5Ni9erVuY4JAAAAAAAAAADAZli1alVcddVVMXfu3LjwwgtzHQeaFEUXAIAM223XneKIIw6JQw75Ymw3aJsoKmr8Fqy2tjbGjpsQ//znM/H3vz8Zr772VhaTAgDkVkFBQfTs2yO2HLhF9OpXFV17doluVd2ia88uUdm+MkrblEZpWWmUlBZHXW1drKpZFUsXL4sF8xbE7OlzYsqET2LC+x/Fe6+9H8uWVOf66QAAZJV7KQAAAADYfK1atYr+/fvHVlttFb169YoOHTpEmzZtoqamJhYtWhTz5s2LN998MyZPnrzB1/z1r38dpaWlcfbZZ2cwOTQvii4AABly/PFfjou++80YttOOG/w9RUVFMXjHQTF4x0Fx6SUXxBtvvhvXXf/buP/+v2cwKQBAbvTs2yN22GX72GGX7WPrQVvFFgP7RZuyNhv0va1atYrikuKoaFsRPXp3j+12GrR2ra6uLsa+OS6e/ccL8cSDT8Wyxcsy9RQAAHLGvRQA0FLNXLw8xs5ZHONmL45xcxbH+DmLY2lNbdLvefui4VlK9z/Df/9czFqyIutz1/jhQTvE0Tv2ztl8AICmZMstt4z9998/9tlnnxg8eHC0aZP652xz586N++67L+66665YtGhRyv3XX399DBgwIPbdd980JM4vF110UXTo0CFj19+Qfx40P4ouAABpNmDAVnHbr38R++yzx2Zfa+dhg+Mvo26Lb5x1Spx7/mUxYcKkNCQEAMiti675dux9yBeiU9eOGbl+q1atYsddd4gdd90hzr7szBj9l8fjzhvvisULl2RkHgBANrmXAgBakjlLV6wttPz3a0ksWrEq17EAAGgG2rZtG0cddVQcccQRsd12223093ft2jXOP//8OOOMM+JnP/tZ3H///Un3JxKJ+MEPfhCPPfZYtG3bdlNj56Xhw4dHr169ch2DZkbRBQAgjY488kvxx5E3RmVlRVqvu99+e8arrzwWp53xrXjkkX+m9doAANm28147ZeyNmZ9VVt4mjvv60XHocQfHb37yu3j0L49lZS4AQKa4lwIAmqv51TUxdvai/5VaZi+O+cuVWgAgHyQikesIkDZ9+/aNM888M7785S+n5aSQsrKy+OlPfxo777xzfP/734+6urpG986bNy9+//vfx0UXXbTZc6G5K8x1AACA5uKb55wa9917e9pLLmtUVlbE/X/9fZzzjVMzcn0AgOassl1FXPqri+JHt10RxSWtcx0HAKBJcS8FAGTDuQ++Ft96+M343SsT418fz1NyAQAgrfr16xe//OUv4/HHH48TTjghLSWXdR155JFxxRVXpNx39913x7Jly9I6G5ojRRcAgDQ45ZTj4qYbfxqFhZm9vSosLIybb/ppnHzysRmdAwDQXB3w5f3j+r/8MkrblOY6CgBAk+NeCgAAAICmplOnTnHVVVfF6NGj48tf/nK0atUqY7NOPPHEOPLII5PuWb58eTz++OMZywDNRVGuAwAANHW77DwkfnfbtRtUcnn55dfjL/f+LV4Z80ZMmTI9li5dFpWVFbHlFn1ijz12jhO/enTstttOSa9RWFgYv7vt2vhw/EfxxpvvputpAADkldraupg7Y05MnTQ9ZnwyM6qXVsfyZcujetnyaFVYGGWVZVFeUR69tqiKrbfvHz379Njgaw/ebYf4ye1XxSVf+34kEokMPgsAgNxwLwUAAAAA/3XMMcdkdd53v/vdeOKJJ2LFihWN7nn66afjuOOOy2IqaHoUXQAANkNlZUWMuvs3UVxcnHTfhI8+jvPPvzyefe6lz60tWrQ43nr7/Xjr7ffj17/5Yxx04D5xy80/i/79t2j0eiUlJXHPqNti2C4Hx9KljrIEAJq+OTPnxvuvfRDvvvZ+vP/aB/HJxKlRu7p2g7+/Y5cOcdBRB8SXjj8kttp2y5T7d//irnHy+V+Nu265Z3NiAwDkBfdSAABNy+CeHeLL2/XK6IydenXI6PUBAGhYt27dYsSIEfHAAw80uueNN96I+vr6DfpgZWipFF0AADbDj666OLbcsm/SPU8//WIc/5WzY8mSpRt0zaeefjF222N4PHDfH2L//b/Q6L4tt+wbV/3wovjeJVdvVGYAgHxQW1sXH7z+QfzriX/HS0++HDM/mbVZ11swb2H89fYH4r7fPxhfPnlEnH3pmdG2Q9uk33Pqt0+JJx96OubMmLtZswEAss29FADAf/Vs2yb6diiPVz75NNdRNkqfDmVx9I69cx0DAIAM2X///ZMWXZYtWxYzZsyI3r3dE0JjFF0AADbRtttuHed+89Ske1555Y046pjTY8WKlRt17cWLl8QRR50aTz95X+y6606N7jvvvNPjD3eMig8/nLhR1wcAyKVbrr4tPnhjbCxZuCTt104kEvHIXY/Gmy+9HTfdf1107dGl0b0lpcVx6rdOjmsvuT7tOQAAMsW9FADQUnWvLI1B3drFtt3axaDu7WJQt3bRvk1xzFy8PEb84flcxwMAgLV23nnnlHumT5+u6AJJOO8IAGAT/fCK70br1q0bXZ8/f2F89aRvbnTJZY3ly1fEV048JxYuXNTontatW8cVP/jOJl0fACBXXn7qlYy8MXNd0yfPiAuO+U4sX7Y86b4DjvxitClvk9EsAADp5F4KAGgJulSUxL5bdY1v7rl13HzUzvHMNw+Ix8/+Ylx3xLD4+u79Y89+XaJ9m+JcxwQAgAa1b98+6fvKIiKWLMnsz/igqXOiCySxevXqmDRpUoNrJSUlscUWW2Q1z+TJk6OmpqbBtW222SYKC3XXALJliy36xNFHDU+658qrro3p02du1pypU2fE1T++Lm684SeN7jn2mMPiB1f8PD75ZPpmzQIAaG5mfjIr7rjuzjj/qm82uqesvE0M+8LQeOnJl7OYDAAg/7mXAgCy7StD+0WnsuIY1L19dC4vyXUcAADYLB06dIi5c+c2ur5y5aZ9eDK0FIoukMTf/va3uOqqqxpcO/XUU+Oyyy7Lap6//vWvceeddza4dvPNN8dBBx2U1TwALdm555wWRUWN30pN+Ojj+P0f7k7LrNt+e2dccP6ZsdVW/RpcLyoqinPPOS0uvfynaZkHANCcPHDH3+LUb50cle0rG90zePcdvTkTAKAB7qUAgGw6aofeuY4AADQikUjkOgI0OamKLCUlyt2QjOMfIIm//vWvkUgkPvfVunXrOOOMM7Ke5/TTT4/WrVs3mOnee+/Neh6AlqqwsDBOOOGIpHtuuun3UV9fn5Z5dXV1ceuv70i65ytfOTIKCgrSMg8AoDmpq62LV559Nemevv37ZCkNAEDT4l4KAAAAADbesmXLYunSpUn3tGvXLktpoGlSdIFGjB07NsaOHRsFBQVrvyIiCgoK4qijjoquXbtmPVO3bt3iyCOPXJtj3VyvvPJKTJs2LeuZAFqiL+7/hejZs3uj6ytWrIhR9zyY1pl/vuv+qKmpaXS9qqpH7LfvnmmdCQDQXIx9c1zS9c7dO2UpCQBA0+NeCgAAAAA2zvjx41OehNS7txMNIZmiXAeAfPXPf/5z7a8TicR6n5L/1a9+NReRIiLixBNPjPvuuy8i1s+VSCTisccei2984xs5ywbQUowYcVDS9ccefzaWLatO68zFi5fEP594Lo748qGN7jlsxEHx3PP/TutcAIDmYMGnC5Oul5aVZikJAEDT414KAAAAADbO888/n3S9oqIievbsmZ0wWbZ48eKYNm1azJ49O6qrq6O2tjZKS0ujtLQ0OnXqFD169IguXbpEYaHzOkhO0QUa8e9//++NwuuWXLbYYosYOHBgLiJFRMTAgQNjyy23jMmTJ6+XKyLiX//6l6ILQBYccMDeSdcfe+zpjMx97LFnkhZdDjgweS4AgJaqeknyEnLNisZPzgMAaOncSwEAAADAhqurq4vHH3886Z5hw4Y1q6LH448/Hv/5z3/irbfeihkzZqTcX1ZWFgMHDowhQ4bEPvvsE8OGDYvi4uIsJKUpUXSBBsyfPz/Gjx+/XpFkzekpw4cPz2Gy/xo+fHjceuuta/MVFBREIpGId955J6qrq6O8vDzHCQGar+7du8agbbdJuueZZ1/KyOynn3kx6fr22w2Mbt26xJw58zIyHwCgqerQuUPS9cULFmcpCQBA0+NeCgAAAAA23NNPP52y7PHFL34xS2my41e/+tVG7V++fHm89dZb8dZbb8Udd9wR7dq1iyOPPDJOPPHE6NevX2ZC0uQ0nyoYpNGbb74ZiUQiImLtf6+x//775yLSevbbb7+1v143X11dXbz55ps5SATQcuyyy5Ck61Onzojp02dmZPYnn0yPmTNnJ92zy85DMjIbAKAp69qzS9L1mZ/MylISAICmx70UAAAAAGyYurq6uPnmm5Puad26dRx66KFZStQ0LF68OO68884YPnx4/OAHP4g5c+bkOhJ5QNEFGjBx4sS1v173VJfWrVvHgAEDchFpPQMGDFh7RNe6+SLWzw5A+u00dIek62+/835G57/51ntJ14cM2S6j8wEAmqLd9tsl6fq7r2X2Hg4AoClzLwUAAAAAG+Yvf/lLyvfxHnXUUdG+ffvsBGpi6urq4oEHHojDDjssHn744VzHIccUXaABkyZNWu/3a05NGTBgQBQVFeUi0nrWFG4+e9pMRMTHH3+cg0QALcfgwcmLJO+/Pz6j81Ndf8iQ7TM6HwCgqenas2tsv0vj90i1q2vjjX+9lcVEAABNh3spAAAAANgw06dPj+uuuy7pntatW8dZZ52VpURN15IlS+LSSy+Nq6++Ompra3MdhxzJ/Tv2IQ9Nnjz5c48VFBTkxWkuawwYMCDef//zn5Km6AKQWVtvvWXS9Y8mfv7fIek0ceKUpOv9+2+R0fkAAE3NhVefG0VFrRpdf+Gxf8X8OfOzmAgAoOlwLwUAkHl19YmYsXh5zF66IhYuXxU1tfVRWFgQpUWFUVFcFF0r20T3ytIoK/Y2LwBypz4+/6HcNA2jRo2Ke+65J6szTzzxxDjppJOyOjPX6urq4rLLLovly5cn3fe1r30t+vTpk6VUTd8999wTs2fPjltuuSUvDiogu/wThwYsWbIkCgoKPvd4hw4dcpCmYZ/NUlBQEIlEIhYsWJCjRAAtQ7++vZKuT0pRRNlckyYlL9L069s7o/MBAJqS475+dOw7fO9G12tX18bdv/5LFhMBADQd7qUAADJn9pKVcdu/J8RrU+fHh3OXxMraupTf06tdWWzbrW3s0qdT7LVF1+jRtk0WkgIATd2CBQti4sSJWZ/Z0tx0003x+uuvJ93To0ePOPfcc7OUKDtKSkpi6NChMWDAgNhmm21i6623jg4dOkRFRUVUVFTE6tWrY/HixbFo0aKYMWNGvP766/HGG2/E+PHjo76+foNmPPvss3HJJZfEdddd1+B7u2m+FF2gAcuWLWvw8bZt22Y5SeMay1JdXZ3lJAAtR7duXaJNm+Q/MJ45a3ZGM8ycNSfpekVFeXTp0inmzfNJmgBAy9WqqFWc+q2T4/Tvfi3pvrtv/UtMHDspS6kAAJoG91IAAJn3+rT58fq0jfv7vOmLl8f0xcvjqQmzI2JsDK3qEMcO7hMHD+gRRYWFmQkKAEBKzz77bNx+++1J9xQUFMTPfvazqKioyFKqzOnQoUMcfPDBsd9++8Uee+yR9P10xcXFUV5eHj179oxBgwbFQQcdFBER06ZNiz/+8Y/x4IMPxsqVK1POHD16dAwcODDOPvvstD0P8p+iCzSgsbKIogtAy9azR7eUe2bPnpfRDLNnz025p2fP7oouAECL1KqoVex5wO5x1qVnxBYD+iXdO+bZ1+JPN96VnWAAAE2AeykAgKbl7RkL4+0ZC+O3L38U531hmzhkYM9cRwIAaHEmTJgQ3/ve9yKRSCTdd/LJJ8eee+6ZpVTpV1BQEDvttFN89atfjUMPPTSKi4s363q9e/eOK6+8Ms4777y47LLL4sUXX0z5PTfeeGN84QtfiO22226zZtN0KLpAAxr7F87q1auznKRxtbW1DT5eU1OT5SQALUenTh2Sri9evCRWrVqV0QwrVqyMpUuXRWVl4+3+Th2T5wQAaOoKCwujrLIsysrLomvPztF/u/4xYIdtYq9D9oz2Hdul/P4xz74WP/j6lVFXW5eFtAAA+cW9FABA8zJt0fK4bPQ78dj4mfHDg3eIzuUluY4EANAizJ8/P84555yUH1C/ww47xCWXXJKlVJlx+OGHx1FHHZX263bq1Cluv/32uP322+PGG2+M+vr6RvfW1dXFj3/847j33nujoKAg7VnIP4ou0IA2bdrEsmXLPvd4Q4/lSmNZNrclCUDjOqQokCxZkp1/TyxZsjRp0aVDx/ZZyQEAkClbDOgXf352ZNqvW7u6Nu688e74882jkv6QFACgKXMvBQDQMr348dw48e6X4sYjd45B3VIXmAEA2HTV1dVx1llnxYwZM5Lua9++fdx0001N/r29RUWZqxwUFBTEN77xjejcuXN8//vfT7r3nXfeiWeeeSYOPPDAjOUhfyi6QAPKysoaLJLMnDkzB2ka1ti/HNu0aZPlJAAtR4f2yX8gvDRLhcily5J/CkDHDu2zkgMAoKmor6+Pl554Oe64/s6YNO7jXMcBAGhS3EsBADQd85bVxJn3jolbjt45du7dKddxAIA80LFjx+jfv3/WZzZnq1ativPPPz/Gjh2bdF9paWn85je/iaqqqiwla9qOOeaYmDRpUowcmfxDfO644w5FlxZC0QUa0L1795gzZ87njraaMGFCjhJ93mezJBKJiGj+NwgAuVRamvyY7+rq5VnJsSxF0SVVTgCAlmLKR5/Ev/7573jywadjykef5DoOAECT4l4KACAzercvi+27t4/+nSujf+eKqGpXFhUlRVFR0jpKigpjycrVsXjF6li8clWMm7M43py2IN6asTAWrVi1QddfWVsX3/rbG3H78bvFdt3bZ/bJAAB576STToqTTjop1zGajbq6urjooovi5ZdfTrqvdevWcdNNN8WwYcOylKx5+Pa3vx3PPvtsTJ48udE9b775ZkybNi169+6dxWTkgqILNKCqqirefffdtb8vKCiIRCIR48aNi5qamigpye0biFeuXBljx479XBGnoKAgevXqlaNUAM1fcXHrpOt1tXVZyZFqTqqcAAAtQe3q2pg1dVbMm/VprFyxMtdxAACaFPdSAADptVOvjrHfVl1j7y27Rr+OFUn3diwriY5l/31fypCqjnHiTltEXX0inpowK+58/eP4cO6SlPOWr66L7/39rbjn5L2iQ1lxWp4DAC3bmg/ihpYskUjEFVdcEU8++WTSfYWFhfGLX/wi9ttvv+wEa0aKi4vju9/9blxwwQVJ9z3xxBPx9a9/PUupyBVFF2jAuse0JRKJtYWS1atXx3PPPReHHnporqJFRMTzzz8fq1evXlvAWbfwssUWW+QwGUDzVlyc/IfAtbW1WcmRak6qnAAALUFR66LY44DdY48Ddo+6uvPipSdejntu+2uMe2t8rqMBAOQ991IAAJuvbUnr2H+nbnHc4D4pyy2ptCosiEMH9oxDB/aMx8fPjP97+oOoXpX87wxnL10ZP33q/bjuCJ8iDgCQDv/3f/8XDz30UMp9V199dYwYMSILiZqnAw88MKqqqmLGjBmN7nn11VcVXVqAwlwHgHw0ePDgRtfuu+++LCbZ+AzJsgOweQoLC5Ku19Vl6USXFHNatXKLBwCwrlatWsW+w/eO3/3j1rjy1u9HRbvNe2MBAEBL4l4KAGDT3H3ynnHx/oM2u+TyWV/atmeMOvkLsXWXypR7n504J16aPDet8wEAWqLrr78+7rrrrpT7Lrvssjj++OOzkKj5KiwsjEMOOSTpnnfffTdLacglJ7pAAwYPHhxFRUVRV1e33qkpiUQiXnnllXjnnXdiyJAhOcn21ltvxcsvv7w2z2cNG+aTOAAypbY2ecGkqCg7t1ap5qxenZ2TZQAAMmXe7E/jF9+7rtH1ktLiqGhXERVtK6JbVdfYdsjA6N6r2wZd+6CjDojBu+8YV37jxzH2zXHpigwAkDfcSwEA5Ieiwsx9OF3fDuUx8vjd4+v3jYkJ85Ym3fvrlybEXlt0zVgWAIDm7re//W387ne/S7nvggsuiNNPPz0LiZq/3XffPe64445G1xcvXhyffvppdO7cOYupyDZFF2hARUVF7LHHHvGvf/0rCgrW//T+RCIRV111VTz44INZe0PzGqtXr44f/ehH6z22bhFn8ODB0aVLl6xmAmhJVq1alXQ9W/9eaN06+ZxVq1ZnJQcAQKYsW7wsHv3LYxv1Pe07tY99h+8VXz75sNhm+62T7u3ao0tcN+qauPjky+P9N8ZuTlQAgLzjXgoAoGWoLG0dNx65c5x410uxaGXjfz/44dwl8eonn8Zufb0JEABgY915551xww03pNx35plnxvnnn5+FRC3DoEGDUu6ZMWOGokszl7mPDoAm7ktf+tJ6v19TJomImDBhQlx99dVZz3T11VfHhAkTGj3NZfjw4VnPBNCSpDoppXVx66zkKGqdfE6qQg4AQHO0aP6ieOSuR+PMQ86Jbx1/UUyfPCPp/vLK8vjVqGui39Z9s5QQACB/uZcCAGiaerRtE9/db9uU+x4dl/z+DgCAz/vrX/8aP/vZz1LuO/nkk+OSSy7JQqKWo0uXLlFSUpJ0z/z587OUhlxRdIFGHHbYYdGxY8eIiLUFlzVll0QiEQ888ED88pe/zFqeX/7yl/HAAw+sV3JZ97SZ8vLyOProo7OWB6AlWrasOul6RUV5VnJUppiTKicAQHP31r/fidMOPCse/cvjSfeVVZTFD2+5PFoVtcpSMgCA/OdeCgCgaTlsUFVs3aUy6Z7nJ82J1XX1WUoEAND0Pfzww3HVVVel3HfsscfGFVdckYVELU9FRUXS9ZUrV2YpCbmi6AKNKC4ujpNOOulzJ6esW3a544474pxzzsloK3D+/PlxzjnnxB133NHg+po8J5xwQsr/UQdg8yxYuCjpetvK7PzvcNu2yX9QnSonAEBLULOyJn7xvV+lfIPmNjtsHSed95UspQIAaBrcSwEANB0FBQVx0k79ku5ZVlMb/5m7JDuBAACauMcffzy+//3vf+79w5912GGHxU9+8pP1PrSe9GndunXS9dWrV2cpCbmi6AJJnHnmmdGjR4+IWP/0lHXLLi+88EIcdthhMXr06JT/UtsYiUQiRo8eHYcffni88MIL6838bJ5OnTrFN7/5zbTNBqBhC+YvTLrevn3brORo1y5F0SVFTgCAluTai6+Lt15+J+me4848OopLi7MTCACgCXEvBQDQNHyxf/coKkz+Bsv3Zvk7RACAVJ555pm4+OKLo66uLum+gw46KH7xi19EYaG34mdKqhNbSktLs5SEXPGnC5IoLS2NH/zgBw0WWNYtnixcuDC+973vxQEHHBC33357LFiwYJNnLliwIH73u9/FAQccEN/73vdiwYIFnyu5fDbD97//fae5AGTBp/OT/+97aWlptGuX2bJLhw7to6SkJOme+Qv8kBoAYI1EIhE3XnFL1NY2/sPo9p3ax6HHHpzFVAAATYN7KQCApqGytHUM6Jr87yknL6jOUhoAmqP6SPhqol9suH/961/x7W9/O+VJIfvss09cf/31UVRUlKVkLc+qVatiyZLkJxKWlZVlKQ254k8YpHDggQfGiSeeGPfcc8/nyiZriiZrfj1z5sy44YYb4sYbb4ytttoqBg8eHIMHD45+/fpFZWVltG3bNtq2/e8PFpYsWRJLliyJpUuXxpQpU+Ldd9+Nd999Nz7++OOor6//3Mkt685dk6OgoCCOO+64GD58eLZeDoAWberUGSn3dOvWJRYvztyx3926dU65Z0NyAgC0JJP/MyWe/ftzcfDRBza6Z6+D94i/3/1oFlMBADQN7qUAAJqGgV3bxtjZixtdn7l4RRbTAAA0La+++mqcf/75sWrVqqT7dt9997j11lujuNgJx5k0bdq0qK+vT7qnW7duWUpDrii6wAa4/PLL4+OPP44xY8Y0WnZZt5CSSCTio48+iokTJ8aDDz64wXM+W2ZJ9fiuu+4aV1xxxSY9JwA2XnX18vj00wXRuXPHRvf07VMVEyZMyliGfn17J12fM2deLF/uh9QAAJ/1ryf+nfTNmTvssn2Dp6kCAOBeCgCgKejZNvknWi9cXpOlJAAATcvbb78d55xzTqxcuTLpvmHDhsVtt90WJSUlWUrWcr333nsp91RVVWUhCblUmOsA0BS0bt06brvtthgyZMjnii0R/yu3RESDpZcN/Wrs+9dY9/Fhw4bFb3/7W61QgCybPGVq0vX+/bfI6PyttuqXdH3KlGkZnQ8A0FS9+tzrUVdX1+h6RduK6LNV8lIxAEBL5V4KACD/VZQk/7zjlbWN388BALRUH3zwQZx11lmxfPnypPt22GGHuP3226OsLHm5mPR4/vnnk6737t07ysvLsxOGnFF0gQ3Upk2b+NOf/hQHHnjgeqWUdTVUWNnYr89eZ4111770pS/FHXfcEW3atMn00wbgM8aNm5B0fZtttsro/FTXHzvuPxmdDwDQVK2oXhGLFyxJuqdD5/bZCQMA0MS4lwIAyH+tWyV/G1htvdP3AADW9Z///CfOPPPMWLp0adJ9AwcOjJEjR0ZFRUWWkrVsixYtihdeeCHpnqFDh2YpDbmk6AIbobS0NG655Zb47ne/G0VFReud7tLQCS+b+rXGutdOJBJRXFwcl112Wdxwww2OPgPIkbfffj/p+tAh22d0/k5Dd0i6/s47H2R0PgBAU7Zw3sKk6207tM1SEgCApse9FABAfqtJcWJLSZG3iQEArDF58uQ444wzYtGiRUn39e/fP/74xz9Gu3btshOM+POf/xwrVqxIumevvfbKUhpyyf+DgY1UUFAQZ599djzwwAOx6667NnqKy+Zcv6HTXfbaa694+OGH47TTTkvH0wBgE6UqugwevF0UFmbmFqtVq1ax446Dku5RdAEAaFz1suqk6yWlPlQCAKAx7qUAAPLb/OqapOttWhdlKQkAQH6bPn16nHbaafHpp58m3devX7/44x//GB07dsxSMqZNmxYjR45Muqe4uDgOOOCALCUilxRdYBMNGDAg/vznP8fvf//72H333SMiGi29bMzXutcpKCiIffbZJ+666674wx/+EFtssUXOni8A//XGm+8lbYxXVlbEsJ12zMjsXXcZGuXlZY2ur1ixIt58K3kRBwCgJSstK026vnL5yiwlAQBoetxLAQDkt6mLlidd71qR/H4OAKAlmDNnTpx22mkxe/bspPuqqqrizjvvjK5du2YpGTU1NfHtb387Vq5M/nPGESNGREVFRZZSkUuq+rCZ9t5779h7773jk08+idGjR8fzzz8f77///trCy2etW2ZpSGFhYQwZMiT233//OOyww6Jnz54Zyw7AxqupqYmXX34jDjhg70b3HHjgPvH6G++kffYBByQ/cvGll16Lmprkn9QEANCS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BQBg0ym6kG6KLk2XogvQVBXlOgA0Bbfddlv86U9/ioj/FU4+W0bZkNNaioqKorKyMiIili5dGrW1tZ/bU1BQ0GCRZs1/r1lPJBLxxz/+Mdq3bx9nn332Jj4zAAAAAAAAAAAAgMYlwmfqA5Bdii6QwvPPPx8333xzo6e4NPR4nz59YtiwYTFo0KDYdttto1+/flFZWRklJSXrXbumpiaWLl0an3zySYwfPz7GjRsXb731VkyZMmXttT9brFlzmsuassuNN94YAwcOjH322Scjzx8AAAAAAAAAAAAAALJF0QWSWLZsWfzwhz9cWy5p7BSXRCIRlZWVMWLEiDjyyCNjyJAhG3T9kpKSKCkpic6dO8ewYcPWPv7ee+/FI488Eo8++mgsXrx4vWLLmnlrHquvr48rrrgiHnvssaioqEjPEwcAAAAAAAAAAAAAgBwozHUAyGc33XRTzJs373Mll3WLJwUFBXH88cfHU089FT/60Y82uOSSzI477hg//OEP4+mnn44TTzwxCgsL185dY9088+bNi1tuuWWz5wIAAAAAAAAAAAAAQC4pukAjPv3007jvvvvWK5dErH+KS58+feK+++6LH//4x9G+ffu0Z6isrIwrr7wyHnjggejTp8/aYs1n8yQSifjrX/8a8+fPT3sGAAAAAAAAAAAAAADIFkUXaMRf/vKXqKmpiYj/nZ6y7sku22+/fdx3332x/fbbZzzLtttuGw888EDsuOOO65Vd1j3VpaamJu69996MZwEAAAAAAAAAAAAAgExRdIFGPProo+udnrLur3v37h133HFHRk5xaUxlZWWMHDky+vbt+7k8awo4f//737OWBwAAAAAAAAAAAAAA0k3RBRowceLE+OSTTyIiPneCSqtWreL666+Ptm3bZj1XZWVlXH/99VFY+N8/uuueMBMRMXXq1Pjoo4+yngsAAAAAAAAAAAAAANJB0QUa8MYbb3zusTWFlyOOOCK23377HKT6r+222y6OPPLI9Qou62ooOwAAAAAAAAAAAAAANAWKLtCA9957r9G1008/PYtJNj7D+++/n8UkAAAAAAAAAAAAQHNWn0j4aqJfAE2Vogs0YOrUqWt/XVBQsPbXffv2ja233joXkdbTv3//2GKLLSJi/XwR62cHAAAAAAAAAAAAAICmRNEFGjBz5sz1CiSJRCIKCgpi2LBhOUy1vp12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unfvHltssUUUFxfnOmZemjdvXkyZMiUWL14cy5Yti4iIioqKaNeuXfTr1y+6dOmS44TkM0UXAAAAAAAAAAAAAACIiHfeeSeefvrpePHFF2PixIlRV1fX6N5WrVpF//79Y999940DDjgghgwZkr2geWbJkiXxxBNPxIsvvhivvvpqLF68OOn+9u3bx6677hr77rtvHHzwwdG2bdssJaUpKEgkEolchwDIpKLiqlxHAABosvboMjDXEQAAAABogZ64asdcRwAAaLLKzr4h1xFoZkpKe+c6ApuoZuW0XEdoUkaPHh0jR46MsWPHbvI1tttuu/j6178ew4cPT2Oy/DZ79uz43e9+Fw8//HAsX758k65RVlYWRx11VJx99tnRvXv3NCekKVJ0AZo9RRcAgE2n6AIAAABALii6AABsOkUX0k3RpelSdNkwkyZNiquuuipef/31tF1z1113jauvvjq23HLLtF0z39TX18ef/vSnuOWWWza54PJZZWVlceGFF8app54ahYWFabkmTZOiC9DsKboAAGw6RRcAAAAAckHRBQBg0ym6kG7FJb1yHYFNtKpmeq4j5L0nn3wyLr300rQVNdZVVlYW1157bRx00EFpv3auLV26NL773e/Giy++mJHr77fffvGrX/0qKisrM3J98p+aEwAAAAAAAAAAAAAALcqoUaPiwgsvzEjJJSJi+fLlccEFF8SoUaMycv1cWbBgQXzlK1/JWMklIuL555+Pr371q7FgwYKMzSC/KboAAAAAAAAAAAAAANBi/O1vf4uf/OQnkUgkMjonkUjET37yk3j44YczOidbli5dGmeeeWZMnDgx47M++uijOPPMM2Pp0qUZn0X+Kcp1AAAAAAAAAAAAAAAAyIb33nsvfvjDH25QyWXo0KFx+OGHx9ChQ6OqqirKy8ujuro6pk2bFm+//Xb84x//iHfffTfpNRKJRFxxxRWx5ZZbxo477piup5ETl112WYwbNy7lvrZt28aIESNi3333jW233TY6dOgQiUQiFi5cGOPHj4/nn38+HnvssZQllnHjxsXll18et956a7qeAk1EQSLTNTSAHCsqrsp1BACAJmuPLgNzHQEAAACAFuiJq5r2G38AAHKp7Owbch2BZqa4pFeuI7CJVtVMz3WEvLNs2bI44ogjYvr05K9Nv3794kc/+lHsscceKa/50ksvxdVXXx1Tp05Nuq9Xr17xyCOPREVFxUZlzhd//vOf4//+7/+S7ikoKIivfe1rcf7550fbtm2T7l28eHHccsstcdddd6WcfcUVV8Qpp5yyUXlp2gpzHQAAAAAAAAAAAAAAADLtpptuSlly2XPPPeOBBx7YoJJLRMRee+0VDz74YOy2225J902fPj1uueWWDc6aT+bMmRM33JC8SNm6deu45ZZb4vvf/37KkktERLt27eKKK66Im266KVq3bp107/XXXx9z5szZqMw0bYouAAAAAAAAAAAAAAA0axMnTox77rkn6Z6hQ4fGb37zm6isrNyoa7dt2zZ++9vfxo47Jj+h9O67745JkyZt1LXzwbXXXhvLly9vdL2goCCuv/76OOiggzb62oceemj88pe/TLpn+fLlce211270tWm6FF0AAAAAAAAAAAAAAGjWbr311qitrW10vX379nHDDTdEmzZtNun6ZWVlceONNyY9zaS2tjZ+/etfb9L1c2XixIkxevTopHtOP/30OPjggzd5xpe+9KU49dRTk+4ZPXp0kywJsWkUXQAAAAAAAAAAAAAAaLamTZsWTz75ZNI93/rWt6JHjx6bNaeqqiouuOCCpHv++c9/xvTp0zdrTjaNHDkyEolEo+tVVVXx7W9/e7PnfOc734nu3bs3up5IJGLkyJGbPYemQdEFAAAAAAAAAAAAAGhQIpHw1US/+J9Ro0ZFXV1do+v9+vWLE044IS2zTjzxxOjdu3ej63V1dTFq1Ki0zMq0hQsXxj/+8Y+key688MIoKSnZ7Flt2rRJWRL6+9//HosWLdrsWeQ/RRcAAAAAAAAAAAAAAJqlurq6ePTRR5PuOfXUU6NVq1ZpmVdUVBSnnHJK0j2PPvpo1NfXp2VeJj322GOxevXqRte7desWI0aMSNu8L3/5y9G5c+dG11evXh3//Oc/0zaP/KXoAgAAAAAAAAAAAABAszRmzJiYN29eo+slJSXx5S9/Oa0zjzrqqGjdunWj63Pnzo1XX301rTMzIdVpLqme58YqLi6OI488crMy0TwougAAAAAAAAAAAAAA0Cw999xzSdf322+/qKioSOvMtm3bxj777JN0T6pcubZw4cJ45513ku5J52kuaxx22GFJ1996661YtGhR2ueSXxRdAAAAAAAAAAAAAABoll5++eWk6/vuu29G5u63335J11PlyrVX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J55Iuv6FL3whI3PTZciQIVFeXt7o+vLly+Oll15K+9wXXnghVq5c2eh6ZWVl7LjjjmmfS35RdAEAAAAAAAAAAAAAoFk69NBDk66PHTs2Pv7447TOnDBhQkyYMKHR9YKCgjjkkEPSOjPdioqK4sADD0y659FHH0373FTXPOigg6KoqCjtc8kvii4AAAAAAAAAAAAAADRLffr0iSFDhiTdc/fdd6d15l133ZV0fejQodGrV6+0zsyEww8/POn6k08+GXPmzEnbvJkzZ8YzzzyzWZloHhRdAAAAAAAAAAAAAABoto455pik6w899FDMnTs3LbNmz54djzzySNI9Rx99dFpmZdqee+4ZPXr0aHR99erVMXLkyLTNGzlyZNTW1ja63rNnz9htt93SNo/8pegCAAAAAAAAAAAAAECzdcQRR0SnTp0aXV+xYkVcd911aZn1y1/+Mmpqahpd79y5cxxxxBFpmZVprVq1ilNPPTXpnnvuuSc+/vjjzZ41ceLEuPfee5PuOfXUU6NVq1abPYv8p+gCAAAAAAAAAAAAAECzVVJSEl/72teS7nn44Yfjqaee2qw5jz32WDz66KNJ95x66qlRXFy8WXOmT58eAwYMSPp1yy23bNaMNY4//vho3759o+urV6+Oiy++OFatWrXJM1atWhUXX3xx0tNc2rdvH8cdd9wmz6BpUXQBAAAAAAAAAAAAAKBZO/XUU6NHjx5J91x66aXx3nvvbdL133nnnfjBD36QdE9VVVXKwk2+KS8vjwsuuCDpng8++CAuv/zyqK+v3+jr19XVxaWXXhrjxo1Luu/CCy+M8vLyjb4+TZOiCwAAAAAAAAAAAAAAzVqbNm3isssuS7qnuro6zjjjjHjuuec26tpPP/10nHnmmbF8+fKk+y699NIoLS3dqGvng69+9asxYMCApHseffTRuPDCC2PZsmUbfN2lS5fG+eefH4899ljSfQMHDoyvfOUrG3xdmj5FFwAAAAAAAAAAAAAAmr1DDz00DjvssKR7li5dGt/85jfjoosuikmTJiXdO3HixPjOd74T5513XsqCx+GHHx6HHHLIRmfOB61atYprr702SkpKku576qmnYsSIEfHQQw9FTU1No/tWrlwZ999/f4wYMSKeffbZpNcsLS2Na6+9Nlq1arVJ2WmaChKJRCLXIQAAAAAAAAAAAAAAINOqq6vj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mGBK7vZ0//59DRw40KYFNs7OzmrevLk6dOigRo0a2TSXjI+P17Fjx7RlyxZt3LhR165dMyFrAHg8ffbZZ/8zn5GkSpUq6YMPPlCdOnUe+bgiRYqoSJEiatSokYYNG6Z169Zp4sSJCg8PNxzvo48+Uq1atTJUuJmQkKAhQ4YY7o79QPHixdW/f3+1adPm4UYqj3L37l2tXr1ac+bMsfocQkJC9P7771u9PpdRI0eOfGRh53/+8x+9//77Kl++/P+0ubi4KCAgQAEBAWratKneffddff/995oyZYrh3zlJSUl69913tW7dOnl5eZn6PAAAyI6++OKLR57s7OXlpW7duumll15S8eLFDWPcvXtXq1atkq+v7yPbDx8+rE8//dSmfJ555hn17t3balHq6dOnNX/+fK1du9bqicszZsxQ5cqV9fTTT9uUg5Gccs/LDLNmzdKXX35p2KdAgQKaPXu2qlat6qCsAAAAAGQ3Tqm2bL0OAEAOEBUVpTZt2li9+evi4qJevXppwIABGbqhGR0drV9//VXffvutzpw5o6efflozZsyw+fF79+7Vq6++arF94cKFql+/frrzmzhxor755hvlypVLrVq1Uvv27fWf//xHrq6u6Y75wLp16zRu3DhFRkZa7OPq6qrNmzerWLFi6RrjwoULatWqlcV2Ly8vTZs2TQ0bNkxX/Ee5du2aFi5cqJUrV+r7779XuXLlbH7s22+/rZ9//tlie8uWLTVhwgSbLmTbIiUlRb/99pu+++47+fn5pXvRQbNmzRQWFvbItvbt22v8+PEZSVNz5szRpEmTrPYrV66cPv74Y9WuXTtD4508eVJLly7V6tWrlZiYqLVr16pixYppirFjxw7169dPklSzZk116dJFTZo0MWXx6NGjRzVy5EidPn3asN/kyZP13HPPZXi89957T2vWrHlkm7+/v37//fcMjwHAfAkJCWrfvr3Onj1r2K9Ro0b6+OOPrd5sfpRbt27po48+0pYtWwz7TZgwQS+88EKa40tS9+7dLS7+r1evnhYtWpSuuA/s27dPPXr0MLyZ7eLioiFDhqhnz56GC/4s2b17t9555x3D+WX+/Pm1YcOGdBd1SNlvHitJq1ev1ogRIyy2b9myRQEBAenO0RZGP2OP4ubmpnfeeUfdu3c3raB0586d6tOnj9V+TzzxhMaPH6+CBQvaHDslJUXz5s3Tl19+abUAql27dvr8889tjv1v1v42eZR69eo93BU9Lfbv36/+/fs/crHxAy4uLvrtt99UtGjRNMX+t0ctjH1g8ODBGjJkSIbijxo1ymohlCTVqVNHH330UZr+vvi31NRUHTp0SIsWLdKmTZuUkpKi/fv327XACQCyE2tzk0d55ZVX9MEHH6T5WtnNmzc1dOhQqwscW7ZsmaEikcmTJ2v27NmGfZycnNSnTx+98cYbaTpZOTo6Wh9//LF++uknq33HjBmjl156yebY/zZ16lRNmzYtTY954403NGDAgDTP2c6fP6+BAwdaXRTau3dvDR8+PE2xAQDIjtIzR2rWrJk+/fTTNF3DsCQ+Pl5t2rR5ZDHNPxUsWFATJkxQ48aN0xT/6NGjeuutt6zG9/X11caNG5U/f/40xf+37HjPy+xrI8nJyfrkk0+sbj5UsmRJzZ07V4GBgWmKDwAAAODx4pzZCQAA4Ciffvqp1cWBBQsW1MKFC/Xf//43w7v2eXt7q3379vrpp580depUVapUKUPxzObl5aVXX31Vv/76qyZPnqwnnnjClCIX6e+FdD/99JNKly5tsU9iYqLmzJmT7jG2b99u2D569GhTi1wkqWjRoho+fLi2bduWpguvKSkp+uOPPyy2lytXTl988YVpRS7S3ztCt2jRQkuXLtVHH31kWlwznT592qYFHS+++KJWrVqV4Qv+klSxYkV98skn2rJli3r06JGmRR4P5MqVSy1atNDy5cu1bNkyPf/886YtIKxWrZpWrVplWMQl/b3DGPXqwONrypQphkUuzs7OGjZsmObOnZuuIhdJ8vPz07Rp09SzZ0/DfuPHj1d0dHS6xrCnuLg4vf/++4ZFLsWKFdP333+v119/PV1FLtLfuy6uWLHCcHF6RESE1d0LrWEea38+Pj5asGCBXn31VdOKXO7fv6/Ro0db7de5c2d98803aV4g4uzsrL59+2rmzJlyd3c37Ltu3Trt3r07TfEz4vnnn9e8efPSXOQiSXXr1tXcuXMN52lJSUlasWJFRlK0uz/++MOmIpcBAwZo8eLFGSpykf5eyFyrVi19+eWX2rBhgzp06CBnZy79AkB69ezZUx9//HG6rpUVKlRI3377rWrWrGnY75dfflFwcHC68jt79qzmzZtn2CdXrlyaMGGC3nnnnTRf//D29tbEiRNtWtj4xRdfKCIiIk3xM+KDDz7QwIED0zVnK126tBYtWmT1hMBFixbp0qVL6cwQAICcq0+fPpoxY4YpRS6SNHPmTKtFKCVKlNCKFSvSXOQi/X3PZeXKlapcubJhv6ioqAyfHJtd73mZKT4+XkOGDLFa5FK9enUtXbqUIhcAAAAAVnG3EwDwWNi/f7/haRrS3ws6Fy9ebMqFxX9ycnJSixYtNHjwYFPjZtSAAQP0wQcfyN/f3y7x/fz8tGDBAsP4P/74o+Li4tIV/6+//rLYVqZMGbVt2zZdcW3h5eWVpqKUixcv6s6dOxbbBwwYYHVxYkYUKFDAbrEzYsyYMUpMTDTs07t3b40dO9b0i/OFCxfW+++/n67Fl40aNdLUqVNVo0YNU3N6wNXVVZMmTVKTJk0s9jl79qwOHDhgl/EBZG3nz5+3uqBt5MiRGjBgQIYXODs7O2vEiBGGuzNHRkZq8eLFGRrHHmbNmmV4k/xBUYgZv8uLFi2q+fPny8/Pz2Kf1atXWzwhzRrmsfaXK1cuzZgxQ7Vq1TI17vLly60ukGzdurVGjx6doeKaJ598UpMmTbIaw5YdRc3wwgsv6PPPP89QEX2tWrXUu3dvwz6bNm1Kd3x7S0pK0meffWa138iRIzVs2DDTiqseKFWqlMaNGydvb29T4wLA4+LJJ5/M8GkeD04aLlSokGG/6dOnpyv+V199ZfWaysiRI9WuXbt0xX9g8ODB6tGjh2GfqKgozZ07N0Pj2KpTp05pPmXu3/z8/DRjxgx5enpa7JPRDXoAAMiJXnrpJb377rum/Q17+/ZtzZ8/37BPgQIF9N1336lYsWLpHsfX11fffvut1Q2B1q1bp5CQkHSPk13veZklMjJSPXr0sHpCeNOmTbVgwYIMn54DAAAA4PFAoQsA4LFgbVFXrly5NHXqVJUqVcpBGT0eChUqpA8//NBie0xMjH777bd0xTZavNq0adN0xbQXo1ydnJzUrFkzB2aTNfzxxx/au3evYZ+nnnoqwwtLsisXFxd9+umnhjvyr1u3zoEZAcgqpkyZouTkZIvtffv2VdeuXU0d88MPP1T58uUtti9atEhJSUmmjpkRERERWrhwocV2Dw8PzZ4929QdAwsUKKAvv/xSuXLlemR7YmKiFi1alK7YzGPt79VXX1W9evVMjZmQkKBvv/3WsE/RokU1duxYU8Z75pln1K1bN8M+f/31l3bu3GnKeJaULFlSH330kSmLXgYMGGC4Q+y5c+d07dq1DI9jDytXrlRoaKhhn1deeUXdu3d3TEIAAJt5eHho9OjRppyKVbBgQb377ruGff7880+dOnUqTXHPnDlj9Xpay5Yt1aVLlzTFtWT48OFWT/hbunSpoqKiTBnPElteT1sFBQWpf//+hn1+/PFHh55UAwBAVlasWDG9//77psacN2+e4uPjDfuMGTPGlA378uXLp8mTJxvO8VJTUzV79ux0xX/c73ldvnxZnTt31uHDhw37vfzyy5o+fXqaNhMEAAAA8Hij0AUAkOMFBwfr0KFDhn369eunmjVrOiijx0vTpk1Vv359i+1//PFHuuIanZBStGjRdMW0l7t371psy5cvnzw8PByYTdZgbeGnr6+vxowZ46BssqZChQoZ7mSe3s8OgOzr4sWLhicYlCxZUsOGDTN9XA8PD40YMcJi++3bt7Vt2zbTx02vRYsWKTY21mJ7v379VKVKFdPHrVu3rp577jmL7evWrbO6q+O/MY+1P39/f73xxhumx926dauuX79u2GfEiBGm3tgfOnSo1ZP8li5datp4jzJhwgTD3dHTwsPDQ61btzbskxVPuEtNTdV3331n2KdkyZI5dnELAGR3vXr1ytCO4f/Wtm1bq3O1VatWpSnmsmXLlJqaarE9d+7ceu+999IU00iuXLk0cuRIw0LW2NhYu2/IMWzYMFNPK+vVq5fhwtn79+/rxx9/NG08AACys48//thwY660SkhIsDoHatq0qakb21WtWtXw5GpJ+uWXX9JV6Po43/M6duyYOnfubHXDjyFDhujTTz+1uFEQAAAAADwKhS4AgBxv2bJlhu1lypTR4MGDHZTN46lVq1YW2/bs2WP6eEY73Wc12SlXs4SGhlp93z/44AP5+fk5KKOs69lnn7XYdu3aNV28eNGB2QDIbCtWrDBc0DZ8+HC5urraZewGDRqoatWqFts3bNhgl3HTKjk52fAmeZEiRdSnTx+7jd+vXz+LCwAjIiLSPO9hHmt/vXr1sssuktYWetavX18tW7Y0dcw8efLozTffNOyzfft2u+1MXq9ePdWoUcPUmG3atDFsT+sO+I6we/duq4s7xo4dy+6lAJAFeXt767XXXjM9rrXv502bNiklJcWmWImJiVq/fr1hn759+5parCNJtWvXVtu2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BQCQ41WrVk316tUz7PPNN9/o0KFDDsoo8xQvXtxi271797Rnzx7Txjp37pzVhXbZgbUChsDAQAdlYl1SUpJOnTplsb1AgQJWLzI7Sr9+/QzbIyMj9cEHHzgoG+usvc+//fabaWPdv39f77zzTpbdoR9A5qlataoaNmxosT02NlZvv/12lji9KzP16tXLcNflrVu3auHChQ7MKP2y8zzW2m7eZ8+edVAmmaNJkyZWX4Nx48YZ7u6eVtOmTbO6aKJLly6mjQfLrM11Q0ND9fnnnzsoGwBAWuzatUu///67afGmTp1quJjSy8tLL7zwQppivvLKK3JycrLYHhsba+r3TEpKij755BPDBYleXl5WTzXLqJUrV+rkyZOmxRs/frzhtZeAgABOwgMAwE5cXV3VsWNHwz6//vqrdu7cadqYJ0+e1LJlywz7PPvss+naICS73fOyh7p16+q7776zuuHesmXL9P777yslJcVBmQEAAADIzih0AQA8Ft5++23D9uTkZA0ZMkShoaGOSSiTVK1a1bB9ypQppuyic+fOHQ0bNkzx8fEZjvUoly9f1ooVK+xeCJCcnGz1VI0qVapYjbNixQqdP3/erLQs2rx5s8LDwy2225Kro9SrV8/qDlfbt2/XhAkTHJSRMWufncWLF+v27dsZHic1NVWjRo3SuXPnMhwLQM40fPhwOTtb/lP+0KFDGjp0qENPCti3b5/h4j1HCwwMVPfu3Q37jBs3zuqO1GaKj4/X9u3b0/XY7DqP9fPzU548eSy2p/f1yC5cXV3Vt29fwz6XL1/WRx99ZMp4W7du1YIFCwz71KhRQw0aNDBlPBhr166dypQpY9hnyZIlVneRBwBkjg8//NCUE1G2b9+u77//3rBPx44d03z6blBQkFq0aGHY5+eff9bq1avTFNeSiRMn6q+//jLs06VLF+XNm9eU8SxJSUnR22+/rejo6AzHWrp0qdWCph49eihXrlwZHgsAADxaz549lTt3bsM+I0aMMGVedvfuXQ0bNkzJyckW+zg5Oal///7pip/d7nnZS40aNTR//nz5+voa9lu9erXeffddw/cDAAAAACQKXQAAj4kaNWqoQ4cOhn1u3bqlrl276uDBg6aOnZqaql9//VXTpk0zNW56NGrUyLD9yJEjmjp1aobGuHXrlnr16qWQkJAMxTESHR2tkSNHqmXLlpo/f77u3btnl3EmT55s+Dz8/PxsKh7ZunWrnnvuOQ0bNsz0n68Hrl69qk8++cSwT5MmTewydnp98MEHcnd3N+wzb948ffDBB6afTnDjxg2NGzfO5oKS0qVLy9/f32J7TEyM3nnnnQzlmZiYqPfff19r165NdwwAOV+FChX06quvGvbZunWrXn75ZbsWzSUnJ+vXX39Vly5d1L17d925c8duY6XHoEGDDH9vp6Sk6L333tPo0aPtegJORESEZs2apaefflqzZs1KV4zsPI+tVq2axbaQkBBt3bo1vallCy+//LJKlixp2GfNmjUaN25chsbZvXu33nzzTas7YVormoJ5nJ2dNWrUKMPd9iXps88+M22zgX+6cOGCRowYYcpCYAB4HN2+fVt9+vTJ0IYWwcHBGjZsmOH3s4+PT7oXU77xxhuGpxhK0qhRo7Rp06Z0xX9gzpw5+vbbbw375MuXz2qBr1nOnTunAQMGKDY2Nt0xNm3apM8++8ywT0BAgDp37pzuMQAAgHUFChRQ7969DfvcvHlTvXv31s2bN9M9zt27d9W3b1+rm8S0b9/e6qYVRrLTPS97qlKlihYsWKD8+fMb9vvpp5/01ltvKSkpyUGZAQAAAMiOKHQBADw23n//fRUtWtSwz+3bt9W9e3dNmjQpQzdMpb8Xvq9Zs0Zt27bV4MGDdeLEiQzFM0NgYKBq1qxp2Gf69On68ssv03Vhcdu2berQoYOOHz/+P2322AExLCxM48aN05NPPqkRI0Zo3759piwSi4uL06hRozR37lzDfi+99JLhrvr/lJKSoo0bN+qVV15R+/bttXDhQkVERGQ4V+nvxRMvv/yyIiMjLfbx9PRU27ZtTRnPLKVLl9abb75ptd/KlSv14osv6sCBAxke89SpUxo1apSaN2+u+fPnp+lmgrXX788//9TgwYPT9b6eO3dOXbt2feRuq+weCuDf3n77bVWoUMGwT0hIiF566SXNmTPH1ILQc+fO6csvv9TTTz+twYMHm/K72R68vb01ceJEq79DlyxZopdfflnbtm0zbaF5YmKitm3bprfeektPPfWUvvzyywyf+pVd57HWTg955513tHr1arsWG2UmNzc3m05smT9/vgYNGmQ4l3uUlJQUzZ8/X/369bN6ilOHDh1Ur169NMVHxtSvX1/dunUz7JOamqrp06erW7duOnPmTIbG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5MmjWbNm5biFdQMHDtRbb72V2WnYpESJElq4cKECAwMzOxWrvLy8NHfuXHXs2DGzUzHk5uamGTNmyN/f325jODs764MPPnDYKUgAsregoCD98MMPatSoUWankqV1795ds2bNUoECBTI7lQzLbvPYEiVKaPz48cqVK1dmp5KpHsx1mjZt6pDxChcurAULFqhWrVoOGQ/GChYsqCVLljjs/QcApE+xYsU0c+ZM5c2b1y7xvby89M0336h69eqmxg0KCtLixYtVsmRJU+NaUrt2bS1atMihc+tKlSrpyy+/tNtGLn5+flq4cKGKFy9ul/gAAMC63r1765NPPpGrq6vdx3JyctKwYcP03nvv2SV+drnn5ShFixbVokWLVLp0acN++/btU58+fWzaqBEAAADA44FCFwDAY6tOnTpau3atWrZsmdmpZIoGDRrYbZFkiRIltHz5ctWuXdv02JnF399fM2bM0BtvvJHZqVjl5OSkDh06aMWKFSpVqlRmp2Mzd3d3ffbZZ5o0aVKWXohcpEgRLV26VDVr1jQ9tqenp6ZOnaru3bubHhtAzuXn56dvv/1WI0eOtNuiPEucnZ3VuHFjh4+bHk899ZR+/PFHu5zKZo2vr6+eeuop0+Jlt3nss88+qzlz5qhw4cKZnUqm8vb2fjiftOeijcaNG2vlypWqVq2a3cZA2uXJk0czZ87U+++/z86kAJCFVa1aVUuWLFHRokVNjVu8eHEtXrxY9erVMzXuA6VLl9aKFSvUunVru8SX/p779+zZUwsWLMiU6zZNmjTRt99+a/rfHpUrV9bSpUtVtmxZU+MCAIC069SpkxYsWGDX4lM/Pz/NmjVLAwYMsNsYUva55+UohQsX1uLFi61ukHjo0CH17NlTd+7ccVBmAAAAALIyCl0AAI+1AgUKaMqUKfr2229N303xn2P069dPI0aMsEv8jKhdu7bWrFlj2i7wLi4u6tOnj9atW2d1V56MKFOmjGbOnKlOnTrZfcGku7u7BgwYoA0bNujpp59OV4wRI0Zo+PDhqlevnlxcXEzO8P+qXLmyli1bpnHjxmWLRceP0qZNG23atEm9e/e2yyJAJycnNWzYUF9//XW6FzEULlxYixYtUo8ePUzbob5p06Zav369mjdvbko8AI8XJycnde/eXZs3b1bv3r2VJ08eu44XFBSkt99+W9u2bdO3334r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12fPnj3ZunVrqqqqpnudv6yhoSF79uxJpVKZshn19fV55513Mn/+/CmbcaV1dHRk9+7dqa+vn+5VLktra2teeuml6V5jSrW2tmbv3r25/vrrr8i89vb27NmzJ9dee+0VmQcAAAAAAFAioQsAAAAAQEFqamqyY8eOvPfee7n55puv+Pzm5uasWLHib5+zaNGivP/++1m1atUkbPWfFixYkH379qW5uXnSz55u7e3t6erqyh133DHdq1yWrVu3ZteuXZkzZ850rzJl1q5dmw8++CB33nnnlM2oqanJiy++mN27d2f27NlTNgcAAAAAAGAmELoAAAAAABSora0t3d3deeWVV9LU1DSls+bPn58tW7bkwIEDOXjwYFpaWibl3BtuuCH79+/Pxo0bJ+2Gmttvvz379+/P6tWrJ+W8ElUqlezbty9vvPFGli9fPiUzFi9enOeffz5PPfXU3z7r4YcfTk9PT55++unceOONk7BdeRYuXJi9e/fm9ddfz+LFiyf17HvuuScHDx7Mtm3bZvRNTgAAAAAAAJPl6uleAAAAAACY2TZv3pxffvnlD78/FTd6/FNcffXVeeKJJ/L444+nt7c33d3d6e3tveTnfTlqamqydu3atLW1pa2tLWvWrMlVV101SVv/p2uuuSY7d+7Mo48+ml27duWzzz77S+csWbIk27Zty2OPPfaPiQEeeOCB3H///enr68uBAwfy0UcfZXR09C+f19TUlPXr12fDhg1Zv359qqsn739hzZs3L88991yeffbZHD9+PJ9//nlOnDiRwcHB/PDDD/npp58yNjaWCxcuZGJiYtLmXmmPPPJIHnzwwXz44Yfp6urKJ598kosXL/7X58ydOzf33XdfNm3alJUrV07BpgAAAAAAADNX1cRM/osSAAAAAMA/zPnz53Ps2LEcPXo0J06cyNDQUIaHhzMyMpLx8fH89ttvqa2tTV1dXerq6lJfX5+bbropS5cu/ffXihUrUltbOy37Hz9+PF1dXenr68u33357yWcXLlyY9evXp729PXffffekhhkz0fj4eA4fPpzDhw9nYGAgQ0ND+f777zM6Oppz586lqqrq3z/3hoaGVCqVLF26NMuWLUtLS0uWLFky3W/hf87p06fz6aef5osvvsjJkyczNDSUM2fOZHR0NBcuXEhtbW1mz56dhQsXplKpZNWqVbntttvS0tKSWbNmTff6AAAAAAAARRK6AAAAAAAwLUZGRnLy5Mn8+OOPOXv2bKqrq1NXV5d58+Zl2bJlaWxsnO4VAQAAAAAAgCtM6AIAAAAAAAAAAAAAAEARqqd7AQAAAAAAAAAAAAAAAEiELgAAAAAAAAAAAAAAABRC6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBGELgAAAAAAAAAAAAAAABRB6AIAAAAAAAAAAAAAAEARhC4AAAAAAAAAAAAAAAAUQegCAAAAAAAAAAAAAABAEYQuAAAAAAAAAAAAAAAAFEHoAgAAAAAAAAAAAAAAQBH+BeH6gUwN5o6qAAAAAElFTkSuQmCC" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "conf_matrix = pd.DataFrame(confusion_matrix(subm['label'], subm['pred1']), columns=genres, index=genres)\n", + "\n", + "plt.figure(dpi=600)\n", + "display(sns.heatmap(conf_matrix, annot=True).set( xlabel=\"Prediction\", ylabel=\"Actual\"))\n" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:40.571797545Z", - "start_time": "2023-10-10T20:43:40.484151084Z" + "end_time": "2024-02-15T21:03:45.906250089Z", + "start_time": "2024-02-15T21:03:44.557085792Z" } - } + }, + "execution_count": 225 }, { "cell_type": "code", - "execution_count": 22, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy for top 2 predictions: 0.9125\n" + ] + }, + { + "data": { + "text/plain": "[Text(0.5, 23.52222222222222, 'Prediction'),\n Text(50.722222222222214, 0.5, 'Actual')]" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "<Figure size 640x480 with 2 Axes>", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "with open(LOCAL_PATH / \"clf.pickle\", \"wb\") as file:\n", - " pickle.dump(clf, file)\n", - "subm.to_csv(LOCAL_PATH / \"submission.csv\", index=False)" + "subm_top_2 = subm.copy()\n", + "subm_top_2[\"top_2\"] = subm.apply(lambda row: row.get(\"pred2\") if row.get(\"label\") == row.get(\"pred2\") else row.get(\"pred1\"), axis=1)\n", + "\n", + "conf_matrix_top_2 = pd.DataFrame(confusion_matrix(subm['label'], subm_top_2[\"top_2\"]), columns=genres, index=genres)\n", + "accuracy_score_top_2 = sum(sum(conf_matrix_top_2.values * np.identity(4))) / sum(sum(conf_matrix_top_2.values))\n", + "\n", + "print(f\"Accuracy for top 2 predictions: {accuracy_score_top_2}\")\n", + "display(sns.heatmap(conf_matrix_top_2, annot=True).set( xlabel=\"Prediction\", ylabel=\"Actual\"))\n" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-10-10T20:43:40.572096508Z", - "start_time": "2023-10-10T20:43:40.552658198Z" + "end_time": "2024-02-15T21:03:53.275357129Z", + "start_time": "2024-02-15T21:03:52.681904599Z" } - } + }, + "execution_count": 226 }, { "cell_type": "code", - "execution_count": 28, "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "INFO:fairnb.api.invenio:Picked up 1 files\n", - "INFO:fairnb.api.invenio:Uploading 1 to https://test.researchdata.tuwien.ac.at\n", - "INFO:fairnb.api.invenio:Uploading /home/lukas/Programming/uni/bachelorarbeit/dbrepo-ismir/tmp/standalone/clf.pickle as clf.pickle\n", - "INFO:fairnb.api.invenio:Finished upload of clf.pickle\n" - ] + "data": { + "text/plain": "[Text(0.5, 1.0, 'Correlation heatmap of prediction probabilities')]" + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": "<Figure size 640x480 with 2 Axes>", + "image/png": "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" + }, + "metadata": {}, + "output_type": "display_data" } ], + "source": [ + "display(sns.heatmap(proba_df.corr(numeric_only=True), vmin=-1, vmax=1, annot=True).set(title=\"Correlation heatmap of prediction probabilities\"))" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T20:27:10.163394639Z", + "start_time": "2024-02-15T20:27:09.325436118Z" + } + }, + "execution_count": 183 + }, + { + "cell_type": "markdown", + "source": [ + "### Interpretation of results:\n", + "\n", + "The confusion matrix shows the true labels on the y-axis, the predicted values on the x-axis.\n", + "Classical music was predicted well, with 1 wrong classification for electronic. \n", + "The most misclassifications has pop, with a true positive rate of 44.44%, due to wrong classifications towards electronic (4) and rock (6).\n", + "A high correlation between rock and pop can also be seen in the correlation plot between prediction probabilities.\n", + "\n", + "The resulting accuracy score of 68.75% shows " + ], + "metadata": { + "collapsed": false + } + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T19:02:53.766796976Z", + "start_time": "2024-02-15T19:02:53.720058687Z" + } + }, + "outputs": [], + "source": [ + "with open(LOCAL_PATH / \"clf.pickle\", \"wb\") as file:\n", + " pickle.dump(clf, file)\n", + "subm.to_csv(LOCAL_PATH / \"submission.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-02-15T19:02:55.357022703Z", + "start_time": "2024-02-15T19:02:55.341344888Z" + } + }, + "outputs": [], "source": [ "if not ONLY_LOCAL:\n", " with open(RESOURCE_PATH / \"5_ml_model\" / \"ml_model_entity_metadata.yml\", \"r\") as file:\n", @@ -1028,27 +1004,12 @@ " ],\n", " dependencies=[\n", " audio_files_entity\n", - " ]\n", + " ],\n", + " started_at=started_at\n", " )\n", "\n", " executor.upload_entities(nb_config_ml)" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2023-10-10T20:53:51.300279538Z", - "start_time": "2023-10-10T20:53:47.923032557Z" - } - } - }, - { - "cell_type": "code", - "execution_count": null, - "outputs": [], - "source": [], - "metadata": { - "collapsed": false - } + ] } ], "metadata": { @@ -1067,7 +1028,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.6" + "version": "3.10.13" } }, "nbformat": 4, diff --git a/poetry.lock b/poetry.lock index 89579b7508b20613f50cd27b8936489c3949a46c..6ff5611781b3ffcc5dfa9d167584dcfb7bf5e5ac 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,119 +1,105 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand. [[package]] name = "aiohttp" -version = "3.8.6" +version = "3.9.3" description = "Async http client/server framework (asyncio)" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:41d55fc043954cddbbd82503d9cc3f4814a40bcef30b3569bc7b5e34130718c1"}, - {file = "aiohttp-3.8.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1d84166673694841d8953f0a8d0c90e1087739d24632fe86b1a08819168b4566"}, - {file = "aiohttp-3.8.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:253bf92b744b3170eb4c4ca2fa58f9c4b87aeb1df42f71d4e78815e6e8b73c9e"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3fd194939b1f764d6bb05490987bfe104287bbf51b8d862261ccf66f48fb4096"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c5f938d199a6fdbdc10bbb9447496561c3a9a565b43be564648d81e1102ac22"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2817b2f66ca82ee699acd90e05c95e79bbf1dc986abb62b61ec8aaf851e81c93"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fa375b3d34e71ccccf172cab401cd94a72de7a8cc01847a7b3386204093bb47"}, - {file = "aiohttp-3.8.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9de50a199b7710fa2904be5a4a9b51af587ab24c8e540a7243ab737b45844543"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e1d8cb0b56b3587c5c01de3bf2f600f186da7e7b5f7353d1bf26a8ddca57f965"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8e31e9db1bee8b4f407b77fd2507337a0a80665ad7b6c749d08df595d88f1cf5"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7bc88fc494b1f0311d67f29fee6fd636606f4697e8cc793a2d912ac5b19aa38d"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ec00c3305788e04bf6d29d42e504560e159ccaf0be30c09203b468a6c1ccd3b2"}, - {file = "aiohttp-3.8.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:ad1407db8f2f49329729564f71685557157bfa42b48f4b93e53721a16eb813ed"}, - {file = "aiohttp-3.8.6-cp310-cp310-win32.whl", hash = "sha256:ccc360e87341ad47c777f5723f68adbb52b37ab450c8bc3ca9ca1f3e849e5fe2"}, - {file = "aiohttp-3.8.6-cp310-cp310-win_amd64.whl", hash = "sha256:93c15c8e48e5e7b89d5cb4613479d144fda8344e2d886cf694fd36db4cc86865"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6e2f9cc8e5328f829f6e1fb74a0a3a939b14e67e80832975e01929e320386b34"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e6a00ffcc173e765e200ceefb06399ba09c06db97f401f920513a10c803604ca"}, - {file = "aiohttp-3.8.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:41bdc2ba359032e36c0e9de5a3bd00d6fb7ea558a6ce6b70acedf0da86458321"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:14cd52ccf40006c7a6cd34a0f8663734e5363fd981807173faf3a017e202fec9"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d5b785c792802e7b275c420d84f3397668e9d49ab1cb52bd916b3b3ffcf09ad"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1bed815f3dc3d915c5c1e556c397c8667826fbc1b935d95b0ad680787896a358"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96603a562b546632441926cd1293cfcb5b69f0b4159e6077f7c7dbdfb686af4d"}, - {file = "aiohttp-3.8.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d76e8b13161a202d14c9584590c4df4d068c9567c99506497bdd67eaedf36403"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e3f1e3f1a1751bb62b4a1b7f4e435afcdade6c17a4fd9b9d43607cebd242924a"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:76b36b3124f0223903609944a3c8bf28a599b2cc0ce0be60b45211c8e9be97f8"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:a2ece4af1f3c967a4390c284797ab595a9f1bc1130ef8b01828915a05a6ae684"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:16d330b3b9db87c3883e565340d292638a878236418b23cc8b9b11a054aaa887"}, - {file = "aiohttp-3.8.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:42c89579f82e49db436b69c938ab3e1559e5a4409eb8639eb4143989bc390f2f"}, - {file = "aiohttp-3.8.6-cp311-cp311-win32.whl", hash = "sha256:efd2fcf7e7b9d7ab16e6b7d54205beded0a9c8566cb30f09c1abe42b4e22bdcb"}, - {file = "aiohttp-3.8.6-cp311-cp311-win_amd64.whl", hash = "sha256:3b2ab182fc28e7a81f6c70bfbd829045d9480063f5ab06f6e601a3eddbbd49a0"}, - {file = "aiohttp-3.8.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:fdee8405931b0615220e5ddf8cd7edd8592c606a8e4ca2a00704883c396e4479"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d25036d161c4fe2225d1abff2bd52c34ed0b1099f02c208cd34d8c05729882f0"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d791245a894be071d5ab04bbb4850534261a7d4fd363b094a7b9963e8cdbd31"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0cccd1de239afa866e4ce5c789b3032442f19c261c7d8a01183fd956b1935349"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f13f60d78224f0dace220d8ab4ef1dbc37115eeeab8c06804fec11bec2bbd07"}, - {file = "aiohttp-3.8.6-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a9b5a0606faca4f6cc0d338359d6fa137104c337f489cd135bb7fbdbccb1e39"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:13da35c9ceb847732bf5c6c5781dcf4780e14392e5d3b3c689f6d22f8e15ae31"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:4d4cbe4ffa9d05f46a28252efc5941e0462792930caa370a6efaf491f412bc66"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:229852e147f44da0241954fc6cb910ba074e597f06789c867cb7fb0621e0ba7a"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:713103a8bdde61d13490adf47171a1039fd880113981e55401a0f7b42c37d071"}, - {file = "aiohttp-3.8.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:45ad816b2c8e3b60b510f30dbd37fe74fd4a772248a52bb021f6fd65dff809b6"}, - {file = "aiohttp-3.8.6-cp36-cp36m-win32.whl", hash = "sha256:2b8d4e166e600dcfbff51919c7a3789ff6ca8b3ecce16e1d9c96d95dd569eb4c"}, - {file = "aiohttp-3.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:0912ed87fee967940aacc5306d3aa8ba3a459fcd12add0b407081fbefc931e53"}, - {file = "aiohttp-3.8.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e2a988a0c673c2e12084f5e6ba3392d76c75ddb8ebc6c7e9ead68248101cd446"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebf3fd9f141700b510d4b190094db0ce37ac6361a6806c153c161dc6c041ccda"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3161ce82ab85acd267c8f4b14aa226047a6bee1e4e6adb74b798bd42c6ae1f80"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d95fc1bf33a9a81469aa760617b5971331cdd74370d1214f0b3109272c0e1e3c"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c43ecfef7deaf0617cee936836518e7424ee12cb709883f2c9a1adda63cc460"}, - {file = "aiohttp-3.8.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca80e1b90a05a4f476547f904992ae81eda5c2c85c66ee4195bb8f9c5fb47f28"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:90c72ebb7cb3a08a7f40061079817133f502a160561d0675b0a6adf231382c92"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bb54c54510e47a8c7c8e63454a6acc817519337b2b78606c4e840871a3e15349"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:de6a1c9f6803b90e20869e6b99c2c18cef5cc691363954c93cb9adeb26d9f3ae"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:a3628b6c7b880b181a3ae0a0683698513874df63783fd89de99b7b7539e3e8a8"}, - {file = "aiohttp-3.8.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:fc37e9aef10a696a5a4474802930079ccfc14d9f9c10b4662169671ff034b7df"}, - {file = "aiohttp-3.8.6-cp37-cp37m-win32.whl", hash = "sha256:f8ef51e459eb2ad8e7a66c1d6440c808485840ad55ecc3cafefadea47d1b1ba2"}, - {file = "aiohttp-3.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:b2fe42e523be344124c6c8ef32a011444e869dc5f883c591ed87f84339de5976"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:9e2ee0ac5a1f5c7dd3197de309adfb99ac4617ff02b0603fd1e65b07dc772e4b"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:01770d8c04bd8db568abb636c1fdd4f7140b284b8b3e0b4584f070180c1e5c62"}, - {file = "aiohttp-3.8.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3c68330a59506254b556b99a91857428cab98b2f84061260a67865f7f52899f5"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89341b2c19fb5eac30c341133ae2cc3544d40d9b1892749cdd25892bbc6ac951"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71783b0b6455ac8f34b5ec99d83e686892c50498d5d00b8e56d47f41b38fbe04"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f628dbf3c91e12f4d6c8b3f092069567d8eb17814aebba3d7d60c149391aee3a"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b04691bc6601ef47c88f0255043df6f570ada1a9ebef99c34bd0b72866c217ae"}, - {file = "aiohttp-3.8.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ee912f7e78287516df155f69da575a0ba33b02dd7c1d6614dbc9463f43066e3"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9c19b26acdd08dd239e0d3669a3dddafd600902e37881f13fbd8a53943079dbc"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:99c5ac4ad492b4a19fc132306cd57075c28446ec2ed970973bbf036bcda1bcc6"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f0f03211fd14a6a0aed2997d4b1c013d49fb7b50eeb9ffdf5e51f23cfe2c77fa"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:8d399dade330c53b4106160f75f55407e9ae7505263ea86f2ccca6bfcbdb4921"}, - {file = "aiohttp-3.8.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ec4fd86658c6a8964d75426517dc01cbf840bbf32d055ce64a9e63a40fd7b771"}, - {file = "aiohttp-3.8.6-cp38-cp38-win32.whl", hash = "sha256:33164093be11fcef3ce2571a0dccd9041c9a93fa3bde86569d7b03120d276c6f"}, - {file = "aiohttp-3.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:bdf70bfe5a1414ba9afb9d49f0c912dc524cf60141102f3a11143ba3d291870f"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d52d5dc7c6682b720280f9d9db41d36ebe4791622c842e258c9206232251ab2b"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4ac39027011414dbd3d87f7edb31680e1f430834c8cef029f11c66dad0670aa5"}, - {file = "aiohttp-3.8.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3f5c7ce535a1d2429a634310e308fb7d718905487257060e5d4598e29dc17f0b"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b30e963f9e0d52c28f284d554a9469af073030030cef8693106d918b2ca92f54"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:918810ef188f84152af6b938254911055a72e0f935b5fbc4c1a4ed0b0584aed1"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:002f23e6ea8d3dd8d149e569fd580c999232b5fbc601c48d55398fbc2e582e8c"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4fcf3eabd3fd1a5e6092d1242295fa37d0354b2eb2077e6eb670accad78e40e1"}, - {file = "aiohttp-3.8.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:255ba9d6d5ff1a382bb9a578cd563605aa69bec845680e21c44afc2670607a95"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d67f8baed00870aa390ea2590798766256f31dc5ed3ecc737debb6e97e2ede78"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:86f20cee0f0a317c76573b627b954c412ea766d6ada1a9fcf1b805763ae7feeb"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:39a312d0e991690ccc1a61f1e9e42daa519dcc34ad03eb6f826d94c1190190dd"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e827d48cf802de06d9c935088c2924e3c7e7533377d66b6f31ed175c1620e05e"}, - {file = "aiohttp-3.8.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:bd111d7fc5591ddf377a408ed9067045259ff2770f37e2d94e6478d0f3fc0c17"}, - {file = "aiohttp-3.8.6-cp39-cp39-win32.whl", hash = "sha256:caf486ac1e689dda3502567eb89ffe02876546599bbf915ec94b1fa424eeffd4"}, - {file = "aiohttp-3.8.6-cp39-cp39-win_amd64.whl", hash = "sha256:3f0e27e5b733803333bb2371249f41cf42bae8884863e8e8965ec69bebe53132"}, - {file = "aiohttp-3.8.6.tar.gz", hash = "sha256:b0cf2a4501bff9330a8a5248b4ce951851e415bdcce9dc158e76cfd55e15085c"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, + {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, + {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, + {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, + {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, + {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, + {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, + {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, + {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, + {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, + {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, + {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, + {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, + {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, + {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, + {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, + {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, + {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, + {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, + {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, + {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, + {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, + {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, + {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, + {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, + {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, + {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, ] [package.dependencies] aiosignal = ">=1.1.2" -async-timeout = ">=4.0.0a3,<5.0" +async-timeout = {version = ">=4.0,<5.0", markers = "python_version < \"3.11\""} attrs = ">=17.3.0" -charset-normalizer = ">=2.0,<4.0" frozenlist = ">=1.1.1" multidict = ">=4.5,<7.0" yarl = ">=1.0,<2.0" [package.extras] -speedups = ["Brotli", "aiodns", "cchardet"] +speedups = ["Brotli", "aiodns", "brotlicffi"] [[package]] name = "aiosignal" version = "1.3.1" description = "aiosignal: a list of registered asynchronous callbacks" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -126,70 +112,52 @@ frozenlist = ">=1.1.0" [[package]] name = "annotated-types" -version = "0.5.0" +version = "0.6.0" description = "Reusable constraint types to use with typing.Annotated" -category = "main" optional = false -python-versions = ">=3.7" -files = [ - {file = "annotated_types-0.5.0-py3-none-any.whl", hash = "sha256:58da39888f92c276ad970249761ebea80ba544b77acddaa1a4d6cf78287d45fd"}, - {file = "annotated_types-0.5.0.tar.gz", hash = "sha256:47cdc3490d9ac1506ce92c7aaa76c579dc3509ff11e098fc867e5130ab7be802"}, -] - -[[package]] -name = "ansiwrap" -version = "0.8.4" -description = "textwrap, but savvy to ANSI colors and styles" -category = "main" -optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "ansiwrap-0.8.4-py2.py3-none-any.whl", hash = "sha256:7b053567c88e1ad9eed030d3ac41b722125e4c1271c8a99ade797faff1f49fb1"}, - {file = "ansiwrap-0.8.4.zip", hash = "sha256:ca0c740734cde59bf919f8ff2c386f74f9a369818cdc60efe94893d01ea8d9b7"}, + {file = "annotated_types-0.6.0-py3-none-any.whl", hash = "sha256:0641064de18ba7a25dee8f96403ebc39113d0cb953a01429249d5c7564666a43"}, + {file = "annotated_types-0.6.0.tar.gz", hash = "sha256:563339e807e53ffd9c267e99fc6d9ea23eb8443c08f112651963e24e22f84a5d"}, ] -[package.dependencies] -textwrap3 = ">=0.9.2" - [[package]] name = "anyio" -version = "4.0.0" +version = "4.2.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, - {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, + {file = "anyio-4.2.0-py3-none-any.whl", hash = "sha256:745843b39e829e108e518c489b31dc757de7d2131d53fac32bd8df268227bfee"}, + {file = "anyio-4.2.0.tar.gz", hash = "sha256:e1875bb4b4e2de1669f4bc7869b6d3f54231cdced71605e6e64c9be77e3be50f"}, ] [package.dependencies] exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" +typing-extensions = {version = ">=4.1", markers = "python_version < \"3.11\""} [package.extras] -doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] -test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (>=0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "exceptiongroup (>=1.2.0)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.23)"] [[package]] name = "appnope" -version = "0.1.3" +version = "0.1.4" description = "Disable App Nap on macOS >= 10.9" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "appnope-0.1.3-py2.py3-none-any.whl", hash = "sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e"}, - {file = "appnope-0.1.3.tar.gz", hash = "sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24"}, + {file = "appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c"}, + {file = "appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee"}, ] [[package]] name = "argon2-cffi" version = "23.1.0" description = "Argon2 for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -210,7 +178,6 @@ typing = ["mypy"] name = "argon2-cffi-bindings" version = "21.2.0" description = "Low-level CFFI bindings for Argon2" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -246,42 +213,45 @@ tests = ["pytest"] [[package]] name = "arrow" -version = "1.2.3" +version = "1.3.0" description = "Better dates & times for Python" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "arrow-1.2.3-py3-none-any.whl", hash = "sha256:5a49ab92e3b7b71d96cd6bfcc4df14efefc9dfa96ea19045815914a6ab6b1fe2"}, - {file = "arrow-1.2.3.tar.gz", hash = "sha256:3934b30ca1b9f292376d9db15b19446088d12ec58629bc3f0da28fd55fb633a1"}, + {file = "arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80"}, + {file = "arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85"}, ] [package.dependencies] python-dateutil = ">=2.7.0" +types-python-dateutil = ">=2.8.10" + +[package.extras] +doc = ["doc8", "sphinx (>=7.0.0)", "sphinx-autobuild", "sphinx-autodoc-typehints", "sphinx_rtd_theme (>=1.3.0)"] +test = ["dateparser (==1.*)", "pre-commit", "pytest", "pytest-cov", "pytest-mock", "pytz (==2021.1)", "simplejson (==3.*)"] [[package]] name = "asttokens" -version = "2.2.1" +version = "2.4.1" description = "Annotate AST trees with source code positions" -category = "main" optional = false python-versions = "*" files = [ - {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, - {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {file = "asttokens-2.4.1-py2.py3-none-any.whl", hash = "sha256:051ed49c3dcae8913ea7cd08e46a606dba30b79993209636c4875bc1d637bc24"}, + {file = "asttokens-2.4.1.tar.gz", hash = "sha256:b03869718ba9a6eb027e134bfdf69f38a236d681c83c160d510768af11254ba0"}, ] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] -test = ["astroid", "pytest"] +astroid = ["astroid (>=1,<2)", "astroid (>=2,<4)"] +test = ["astroid (>=1,<2)", "astroid (>=2,<4)", "pytest"] [[package]] name = "async-lru" version = "2.0.4" description = "Simple LRU cache for asyncio" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -296,7 +266,6 @@ typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} name = "async-timeout" version = "4.0.3" description = "Timeout context manager for asyncio programs" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -306,107 +275,101 @@ files = [ [[package]] name = "attrs" -version = "23.1.0" +version = "23.2.0" description = "Classes Without Boilerplate" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, - {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, + {file = "attrs-23.2.0-py3-none-any.whl", hash = "sha256:99b87a485a5820b23b879f04c2305b44b951b502fd64be915879d77a7e8fc6f1"}, + {file = "attrs-23.2.0.tar.gz", hash = "sha256:935dc3b529c262f6cf76e50877d35a4bd3c1de194fd41f47a2b7ae8f19971f30"}, ] [package.extras] cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]", "pre-commit"] +dev = ["attrs[tests]", "pre-commit"] docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] tests = ["attrs[tests-no-zope]", "zope-interface"] -tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] +tests-mypy = ["mypy (>=1.6)", "pytest-mypy-plugins"] +tests-no-zope = ["attrs[tests-mypy]", "cloudpickle", "hypothesis", "pympler", "pytest (>=4.3.0)", "pytest-xdist[psutil]"] [[package]] name = "audioread" -version = "3.0.0" -description = "multi-library, cross-platform audio decoding" -category = "main" +version = "3.0.1" +description = "Multi-library, cross-platform audio decoding." optional = false python-versions = ">=3.6" files = [ - {file = "audioread-3.0.0.tar.gz", hash = "sha256:121995bd207eb1fda3d566beb851d3534275925bc35a4fb6da0cb11de0f7251a"}, + {file = "audioread-3.0.1-py3-none-any.whl", hash = "sha256:4cdce70b8adc0da0a3c9e0d85fb10b3ace30fbdf8d1670fd443929b61d117c33"}, + {file = "audioread-3.0.1.tar.gz", hash = "sha256:ac5460a5498c48bdf2e8e767402583a4dcd13f4414d286f42ce4379e8b35066d"}, ] +[package.extras] +test = ["tox"] + [[package]] name = "babel" -version = "2.12.1" +version = "2.14.0" description = "Internationalization utilities" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Babel-2.12.1-py3-none-any.whl", hash = "sha256:b4246fb7677d3b98f501a39d43396d3cafdc8eadb045f4a31be01863f655c610"}, - {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] -[[package]] -name = "backcall" -version = "0.2.0" -description = "Specifications for callback functions passed in to an API" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, - {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, -] +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] name = "beautifulsoup4" -version = "4.12.2" +version = "4.12.3" description = "Screen-scraping library" -category = "main" optional = false python-versions = ">=3.6.0" files = [ - {file = "beautifulsoup4-4.12.2-py3-none-any.whl", hash = "sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a"}, - {file = "beautifulsoup4-4.12.2.tar.gz", hash = "sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da"}, + {file = "beautifulsoup4-4.12.3-py3-none-any.whl", hash = "sha256:b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"}, + {file = "beautifulsoup4-4.12.3.tar.gz", hash = "sha256:74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"}, ] [package.dependencies] soupsieve = ">1.2" [package.extras] +cchardet = ["cchardet"] +chardet = ["chardet"] +charset-normalizer = ["charset-normalizer"] html5lib = ["html5lib"] lxml = ["lxml"] [[package]] name = "black" -version = "23.7.0" +version = "23.12.1" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "black-23.7.0-cp310-cp310-macosx_10_16_arm64.whl", hash = "sha256:5c4bc552ab52f6c1c506ccae05681fab58c3f72d59ae6e6639e8885e94fe2587"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_universal2.whl", hash = "sha256:552513d5cd5694590d7ef6f46e1767a4df9af168d449ff767b13b084c020e63f"}, - {file = "black-23.7.0-cp310-cp310-macosx_10_16_x86_64.whl", hash = "sha256:86cee259349b4448adb4ef9b204bb4467aae74a386bce85d56ba4f5dc0da27be"}, - {file = "black-23.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:501387a9edcb75d7ae8a4412bb8749900386eaef258f1aefab18adddea1936bc"}, - {file = "black-23.7.0-cp310-cp310-win_amd64.whl", hash = "sha256:fb074d8b213749fa1d077d630db0d5f8cc3b2ae63587ad4116e8a436e9bbe995"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_arm64.whl", hash = "sha256:b5b0ee6d96b345a8b420100b7d71ebfdd19fab5e8301aff48ec270042cd40ac2"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_universal2.whl", hash = "sha256:893695a76b140881531062d48476ebe4a48f5d1e9388177e175d76234ca247cd"}, - {file = "black-23.7.0-cp311-cp311-macosx_10_16_x86_64.whl", hash = "sha256:c333286dc3ddca6fdff74670b911cccedacb4ef0a60b34e491b8a67c833b343a"}, - {file = "black-23.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:831d8f54c3a8c8cf55f64d0422ee875eecac26f5f649fb6c1df65316b67c8926"}, - {file = "black-23.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:7f3bf2dec7d541b4619b8ce526bda74a6b0bffc480a163fed32eb8b3c9aed8ad"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_arm64.whl", hash = "sha256:f9062af71c59c004cd519e2fb8f5d25d39e46d3af011b41ab43b9c74e27e236f"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_universal2.whl", hash = "sha256:01ede61aac8c154b55f35301fac3e730baf0c9cf8120f65a9cd61a81cfb4a0c3"}, - {file = "black-23.7.0-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:327a8c2550ddc573b51e2c352adb88143464bb9d92c10416feb86b0f5aee5ff6"}, - {file = "black-23.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1c6022b86f83b632d06f2b02774134def5d4d4f1dac8bef16d90cda18ba28a"}, - {file = "black-23.7.0-cp38-cp38-win_amd64.whl", hash = "sha256:27eb7a0c71604d5de083757fbdb245b1a4fae60e9596514c6ec497eb63f95320"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_arm64.whl", hash = "sha256:8417dbd2f57b5701492cd46edcecc4f9208dc75529bcf76c514864e48da867d9"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_universal2.whl", hash = "sha256:47e56d83aad53ca140da0af87678fb38e44fd6bc0af71eebab2d1f59b1acf1d3"}, - {file = "black-23.7.0-cp39-cp39-macosx_10_16_x86_64.whl", hash = "sha256:25cc308838fe71f7065df53aedd20327969d05671bac95b38fdf37ebe70ac087"}, - {file = "black-23.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:642496b675095d423f9b8448243336f8ec71c9d4d57ec17bf795b67f08132a91"}, - {file = "black-23.7.0-cp39-cp39-win_amd64.whl", hash = "sha256:ad0014efc7acf0bd745792bd0d8857413652979200ab924fbf239062adc12491"}, - {file = "black-23.7.0-py3-none-any.whl", hash = "sha256:9fd59d418c60c0348505f2ddf9609c1e1de8e7493eab96198fc89d9f865e7a96"}, - {file = "black-23.7.0.tar.gz", hash = "sha256:022a582720b0d9480ed82576c920a8c1dde97cc38ff11d8d8859b3bd6ca9eedb"}, + {file = "black-23.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e0aaf6041986767a5e0ce663c7a2f0e9eaf21e6ff87a5f95cbf3675bfd4c41d2"}, + {file = "black-23.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c88b3711d12905b74206227109272673edce0cb29f27e1385f33b0163c414bba"}, + {file = "black-23.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920b569dc6b3472513ba6ddea21f440d4b4c699494d2e972a1753cdc25df7b0"}, + {file = "black-23.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:3fa4be75ef2a6b96ea8d92b1587dd8cb3a35c7e3d51f0738ced0781c3aa3a5a3"}, + {file = "black-23.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d4df77958a622f9b5a4c96edb4b8c0034f8434032ab11077ec6c56ae9f384ba"}, + {file = "black-23.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:602cfb1196dc692424c70b6507593a2b29aac0547c1be9a1d1365f0d964c353b"}, + {file = "black-23.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c4352800f14be5b4864016882cdba10755bd50805c95f728011bcb47a4afd59"}, + {file = "black-23.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:0808494f2b2df923ffc5723ed3c7b096bd76341f6213989759287611e9837d50"}, + {file = "black-23.12.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:25e57fd232a6d6ff3f4478a6fd0580838e47c93c83eaf1ccc92d4faf27112c4e"}, + {file = "black-23.12.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2d9e13db441c509a3763a7a3d9a49ccc1b4e974a47be4e08ade2a228876500ec"}, + {file = "black-23.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d1bd9c210f8b109b1762ec9fd36592fdd528485aadb3f5849b2740ef17e674e"}, + {file = "black-23.12.1-cp312-cp312-win_amd64.whl", hash = "sha256:ae76c22bde5cbb6bfd211ec343ded2163bba7883c7bc77f6b756a1049436fbb9"}, + {file = "black-23.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1fa88a0f74e50e4487477bc0bb900c6781dbddfdfa32691e780bf854c3b4a47f"}, + {file = "black-23.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a4d6a9668e45ad99d2f8ec70d5c8c04ef4f32f648ef39048d010b0689832ec6d"}, + {file = "black-23.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b18fb2ae6c4bb63eebe5be6bd869ba2f14fd0259bda7d18a46b764d8fb86298a"}, + {file = "black-23.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:c04b6d9d20e9c13f43eee8ea87d44156b8505ca8a3c878773f68b4e4812a421e"}, + {file = "black-23.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3e1b38b3135fd4c025c28c55ddfc236b05af657828a8a6abe5deec419a0b7055"}, + {file = "black-23.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4f0031eaa7b921db76decd73636ef3a12c942ed367d8c3841a0739412b260a54"}, + {file = "black-23.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97e56155c6b737854e60a9ab1c598ff2533d57e7506d97af5481141671abf3ea"}, + {file = "black-23.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:dd15245c8b68fe2b6bd0f32c1556509d11bb33aec9b5d0866dd8e2ed3dba09c2"}, + {file = "black-23.12.1-py3-none-any.whl", hash = "sha256:78baad24af0f033958cad29731e27363183e140962595def56423e626f4bee3e"}, + {file = "black-23.12.1.tar.gz", hash = "sha256:4ce3ef14ebe8d9509188014d96af1c456a910d5b5cbf434a09fef7e024b3d0d5"}, ] [package.dependencies] @@ -416,23 +379,23 @@ packaging = ">=22.0" pathspec = ">=0.9.0" platformdirs = ">=2" tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""} +typing-extensions = {version = ">=4.0.1", markers = "python_version < \"3.11\""} [package.extras] colorama = ["colorama (>=0.4.3)"] -d = ["aiohttp (>=3.7.4)"] +d = ["aiohttp (>=3.7.4)", "aiohttp (>=3.7.4,!=3.9.0)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "bleach" -version = "6.0.0" +version = "6.1.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "bleach-6.0.0-py3-none-any.whl", hash = "sha256:33c16e3353dbd13028ab4799a0f89a83f113405c766e9c122df8a06f5b85b3f4"}, - {file = "bleach-6.0.0.tar.gz", hash = "sha256:1a1a85c1595e07d8db14c5f09f09e6433502c51c595970edc090551f0db99414"}, + {file = "bleach-6.1.0-py3-none-any.whl", hash = "sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6"}, + {file = "bleach-6.1.0.tar.gz", hash = "sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe"}, ] [package.dependencies] @@ -440,92 +403,78 @@ six = ">=1.9.0" webencodings = "*" [package.extras] -css = ["tinycss2 (>=1.1.0,<1.2)"] +css = ["tinycss2 (>=1.1.0,<1.3)"] [[package]] name = "certifi" -version = "2023.7.22" +version = "2024.2.2" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, + {file = "certifi-2024.2.2-py3-none-any.whl", hash = "sha256:dc383c07b76109f368f6106eee2b593b04a011ea4d55f652c6ca24a754d1cdd1"}, + {file = "certifi-2024.2.2.tar.gz", hash = "sha256:0569859f95fc761b18b45ef421b1290a0f65f147e92a1e5eb3e635f9a5e4e66f"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:470c103ae716238bbe698d67ad020e1db9d9dba34fa5a899b5e21577e6d52ed2"}, - {file = "cffi-1.15.1-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:9ad5db27f9cabae298d151c85cf2bad1d359a1b9c686a275df03385758e2f914"}, - {file = "cffi-1.15.1-cp27-cp27m-win32.whl", hash = "sha256:b3bbeb01c2b273cca1e1e0c5df57f12dce9a4dd331b4fa1635b8bec26350bde3"}, - {file = "cffi-1.15.1-cp27-cp27m-win_amd64.whl", hash = "sha256:e00b098126fd45523dd056d2efba6c5a63b71ffe9f2bbe1a4fe1716e1d0c331e"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:d61f4695e6c866a23a21acab0509af1cdfd2c013cf256bbf5b6b5e2695827162"}, - {file = "cffi-1.15.1-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ed9cb427ba5504c1dc15ede7d516b84757c3e3d7868ccc85121d9310d27eed0b"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:39d39875251ca8f612b6f33e6b1195af86d1b3e60086068be9cc053aa4376e21"}, - {file = "cffi-1.15.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:285d29981935eb726a4399badae8f0ffdff4f5050eaa6d0cfc3f64b857b77185"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3eb6971dcff08619f8d91607cfc726518b6fa2a9eba42856be181c6d0d9515fd"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21157295583fe8943475029ed5abdcf71eb3911894724e360acff1d61c1d54bc"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5635bd9cb9731e6d4a1132a498dd34f764034a8ce60cef4f5319c0541159392f"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2012c72d854c2d03e45d06ae57f40d78e5770d252f195b93f581acf3ba44496e"}, - {file = "cffi-1.15.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd86c085fae2efd48ac91dd7ccffcfc0571387fe1193d33b6394db7ef31fe2a4"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:fa6693661a4c91757f4412306191b6dc88c1703f780c8234035eac011922bc01"}, - {file = "cffi-1.15.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:59c0b02d0a6c384d453fece7566d1c7e6b7bae4fc5874ef2ef46d56776d61c9e"}, - {file = "cffi-1.15.1-cp310-cp310-win32.whl", hash = "sha256:cba9d6b9a7d64d4bd46167096fc9d2f835e25d7e4c121fb2ddfc6528fb0413b2"}, - {file = "cffi-1.15.1-cp310-cp310-win_amd64.whl", hash = "sha256:ce4bcc037df4fc5e3d184794f27bdaab018943698f4ca31630bc7f84a7b69c6d"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3d08afd128ddaa624a48cf2b859afef385b720bb4b43df214f85616922e6a5ac"}, - {file = "cffi-1.15.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3799aecf2e17cf585d977b780ce79ff0dc9b78d799fc694221ce814c2c19db83"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a591fe9e525846e4d154205572a029f653ada1a78b93697f3b5a8f1f2bc055b9"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3548db281cd7d2561c9ad9984681c95f7b0e38881201e157833a2342c30d5e8c"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91fc98adde3d7881af9b59ed0294046f3806221863722ba7d8d120c575314325"}, - {file = "cffi-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94411f22c3985acaec6f83c6df553f2dbe17b698cc7f8ae751ff2237d96b9e3c"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:03425bdae262c76aad70202debd780501fabeaca237cdfddc008987c0e0f59ef"}, - {file = "cffi-1.15.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cc4d65aeeaa04136a12677d3dd0b1c0c94dc43abac5860ab33cceb42b801c1e8"}, - {file = "cffi-1.15.1-cp311-cp311-win32.whl", hash = "sha256:a0f100c8912c114ff53e1202d0078b425bee3649ae34d7b070e9697f93c5d52d"}, - {file = "cffi-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:04ed324bda3cda42b9b695d51bb7d54b680b9719cfab04227cdd1e04e5de3104"}, - {file = "cffi-1.15.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50a74364d85fd319352182ef59c5c790484a336f6db772c1a9231f1c3ed0cbd7"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e263d77ee3dd201c3a142934a086a4450861778baaeeb45db4591ef65550b0a6"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cec7d9412a9102bdc577382c3929b337320c4c4c4849f2c5cdd14d7368c5562d"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4289fc34b2f5316fbb762d75362931e351941fa95fa18789191b33fc4cf9504a"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:173379135477dc8cac4bc58f45db08ab45d228b3363adb7af79436135d028405"}, - {file = "cffi-1.15.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6975a3fac6bc83c4a65c9f9fcab9e47019a11d3d2cf7f3c0d03431bf145a941e"}, - {file = "cffi-1.15.1-cp36-cp36m-win32.whl", hash = "sha256:2470043b93ff09bf8fb1d46d1cb756ce6132c54826661a32d4e4d132e1977adf"}, - {file = "cffi-1.15.1-cp36-cp36m-win_amd64.whl", hash = "sha256:30d78fbc8ebf9c92c9b7823ee18eb92f2e6ef79b45ac84db507f52fbe3ec4497"}, - {file = "cffi-1.15.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:198caafb44239b60e252492445da556afafc7d1e3ab7a1fb3f0584ef6d742375"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ef34d190326c3b1f822a5b7a45f6c4535e2f47ed06fec77d3d799c450b2651e"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8102eaf27e1e448db915d08afa8b41d6c7ca7a04b7d73af6514df10a3e74bd82"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5df2768244d19ab7f60546d0c7c63ce1581f7af8b5de3eb3004b9b6fc8a9f84b"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a8c4917bd7ad33e8eb21e9a5bbba979b49d9a97acb3a803092cbc1133e20343c"}, - {file = "cffi-1.15.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e2642fe3142e4cc4af0799748233ad6da94c62a8bec3a6648bf8ee68b1c7426"}, - {file = "cffi-1.15.1-cp37-cp37m-win32.whl", hash = "sha256:e229a521186c75c8ad9490854fd8bbdd9a0c9aa3a524326b55be83b54d4e0ad9"}, - {file = "cffi-1.15.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a0b71b1b8fbf2b96e41c4d990244165e2c9be83d54962a9a1d118fd8657d2045"}, - {file = "cffi-1.15.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:320dab6e7cb2eacdf0e658569d2575c4dad258c0fcc794f46215e1e39f90f2c3"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e74c6b51a9ed6589199c787bf5f9875612ca4a8a0785fb2d4a84429badaf22a"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5c84c68147988265e60416b57fc83425a78058853509c1b0629c180094904a5"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b926aa83d1edb5aa5b427b4053dc420ec295a08e40911296b9eb1b6170f6cca"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:87c450779d0914f2861b8526e035c5e6da0a3199d8f1add1a665e1cbc6fc6d02"}, - {file = "cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f2c9f67e9821cad2e5f480bc8d83b8742896f1242dba247911072d4fa94c192"}, - {file = "cffi-1.15.1-cp38-cp38-win32.whl", hash = "sha256:8b7ee99e510d7b66cdb6c593f21c043c248537a32e0bedf02e01e9553a172314"}, - {file = "cffi-1.15.1-cp38-cp38-win_amd64.whl", hash = "sha256:00a9ed42e88df81ffae7a8ab6d9356b371399b91dbdf0c3cb1e84c03a13aceb5"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54a2db7b78338edd780e7ef7f9f6c442500fb0d41a5a4ea24fff1c929d5af585"}, - {file = "cffi-1.15.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fcd131dd944808b5bdb38e6f5b53013c5aa4f334c5cad0c72742f6eba4b73db0"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7473e861101c9e72452f9bf8acb984947aa1661a7704553a9f6e4baa5ba64415"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c9a799e985904922a4d207a94eae35c78ebae90e128f0c4e521ce339396be9d"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3bcde07039e586f91b45c88f8583ea7cf7a0770df3a1649627bf598332cb6984"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:33ab79603146aace82c2427da5ca6e58f2b3f2fb5da893ceac0c42218a40be35"}, - {file = "cffi-1.15.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d598b938678ebf3c67377cdd45e09d431369c3b1a5b331058c338e201f12b27"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:db0fbb9c62743ce59a9ff687eb5f4afbe77e5e8403d6697f7446e5f609976f76"}, - {file = "cffi-1.15.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:98d85c6a2bef81588d9227dde12db8a7f47f639f4a17c9ae08e773aa9c697bf3"}, - {file = "cffi-1.15.1-cp39-cp39-win32.whl", hash = "sha256:40f4774f5a9d4f5e344f31a32b5096977b5d48560c5592e2f3d2c4374bd543ee"}, - {file = "cffi-1.15.1-cp39-cp39-win_amd64.whl", hash = "sha256:70df4e3b545a17496c9b3f41f5115e69a4f2e77e94e1d2a8e1070bc0c38c8a3c"}, - {file = "cffi-1.15.1.tar.gz", hash = "sha256:d400bfb9a37b1351253cb402671cea7e89bdecc294e8016a707f6d1d8ac934f9"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b3d6606d369fc1da4fd8c357d026317fbb9c9b75d36dc16e90e84c26854b088"}, + {file = "cffi-1.16.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ac0f5edd2360eea2f1daa9e26a41db02dd4b0451b48f7c318e217ee092a213e9"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7e61e3e4fa664a8588aa25c883eab612a188c725755afff6289454d6362b9673"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a72e8961a86d19bdb45851d8f1f08b041ea37d2bd8d4fd19903bc3083d80c896"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b50bf3f55561dac5438f8e70bfcdfd74543fd60df5fa5f62d94e5867deca684"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7651c50c8c5ef7bdb41108b7b8c5a83013bfaa8a935590c5d74627c047a583c7"}, + {file = "cffi-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4108df7fe9b707191e55f33efbcb2d81928e10cea45527879a4749cbe472614"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:32c68ef735dbe5857c810328cb2481e24722a59a2003018885514d4c09af9743"}, + {file = "cffi-1.16.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:673739cb539f8cdaa07d92d02efa93c9ccf87e345b9a0b556e3ecc666718468d"}, + {file = "cffi-1.16.0-cp310-cp310-win32.whl", hash = "sha256:9f90389693731ff1f659e55c7d1640e2ec43ff725cc61b04b2f9c6d8d017df6a"}, + {file = "cffi-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:e6024675e67af929088fda399b2094574609396b1decb609c55fa58b028a32a1"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b84834d0cf97e7d27dd5b7f3aca7b6e9263c56308ab9dc8aae9784abb774d404"}, + {file = "cffi-1.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1b8ebc27c014c59692bb2664c7d13ce7a6e9a629be20e54e7271fa696ff2b417"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee07e47c12890ef248766a6e55bd38ebfb2bb8edd4142d56db91b21ea68b7627"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8a9d3ebe49f084ad71f9269834ceccbf398253c9fac910c4fd7053ff1386936"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e70f54f1796669ef691ca07d046cd81a29cb4deb1e5f942003f401c0c4a2695d"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5bf44d66cdf9e893637896c7faa22298baebcd18d1ddb6d2626a6e39793a1d56"}, + {file = "cffi-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b78010e7b97fef4bee1e896df8a4bbb6712b7f05b7ef630f9d1da00f6444d2e"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c6a164aa47843fb1b01e941d385aab7215563bb8816d80ff3a363a9f8448a8dc"}, + {file = "cffi-1.16.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e09f3ff613345df5e8c3667da1d918f9149bd623cd9070c983c013792a9a62eb"}, + {file = "cffi-1.16.0-cp311-cp311-win32.whl", hash = "sha256:2c56b361916f390cd758a57f2e16233eb4f64bcbeee88a4881ea90fca14dc6ab"}, + {file = "cffi-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:db8e577c19c0fda0beb7e0d4e09e0ba74b1e4c092e0e40bfa12fe05b6f6d75ba"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa3a0128b152627161ce47201262d3140edb5a5c3da88d73a1b790a959126956"}, + {file = "cffi-1.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68e7c44931cc171c54ccb702482e9fc723192e88d25a0e133edd7aff8fcd1f6e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abd808f9c129ba2beda4cfc53bde801e5bcf9d6e0f22f095e45327c038bfe68e"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:88e2b3c14bdb32e440be531ade29d3c50a1a59cd4e51b1dd8b0865c54ea5d2e2"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcc8eb6d5902bb1cf6dc4f187ee3ea80a1eba0a89aba40a5cb20a5087d961357"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b7be2d771cdba2942e13215c4e340bfd76398e9227ad10402a8767ab1865d2e6"}, + {file = "cffi-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e715596e683d2ce000574bae5d07bd522c781a822866c20495e52520564f0969"}, + {file = "cffi-1.16.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:2d92b25dbf6cae33f65005baf472d2c245c050b1ce709cc4588cdcdd5495b520"}, + {file = "cffi-1.16.0-cp312-cp312-win32.whl", hash = "sha256:b2ca4e77f9f47c55c194982e10f058db063937845bb2b7a86c84a6cfe0aefa8b"}, + {file = "cffi-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:68678abf380b42ce21a5f2abde8efee05c114c2fdb2e9eef2efdb0257fba1235"}, + {file = "cffi-1.16.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c9ef6ff37e974b73c25eecc13952c55bceed9112be2d9d938ded8e856138bcc"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a09582f178759ee8128d9270cd1344154fd473bb77d94ce0aeb2a93ebf0feaf0"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e760191dd42581e023a68b758769e2da259b5d52e3103c6060ddc02c9edb8d7b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:80876338e19c951fdfed6198e70bc88f1c9758b94578d5a7c4c91a87af3cf31c"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6a14b17d7e17fa0d207ac08642c8820f84f25ce17a442fd15e27ea18d67c59b"}, + {file = "cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6602bc8dc6f3a9e02b6c22c4fc1e47aa50f8f8e6d3f78a5e16ac33ef5fefa324"}, + {file = "cffi-1.16.0-cp38-cp38-win32.whl", hash = "sha256:131fd094d1065b19540c3d72594260f118b231090295d8c34e19a7bbcf2e860a"}, + {file = "cffi-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:31d13b0f99e0836b7ff893d37af07366ebc90b678b6664c955b54561fc36ef36"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:582215a0e9adbe0e379761260553ba11c58943e4bbe9c36430c4ca6ac74b15ed"}, + {file = "cffi-1.16.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b29ebffcf550f9da55bec9e02ad430c992a87e5f512cd63388abb76f1036d8d2"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dc9b18bf40cc75f66f40a7379f6a9513244fe33c0e8aa72e2d56b0196a7ef872"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cb4a35b3642fc5c005a6755a5d17c6c8b6bcb6981baf81cea8bfbc8903e8ba8"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b86851a328eedc692acf81fb05444bdf1891747c25af7529e39ddafaf68a4f3f"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c0f31130ebc2d37cdd8e44605fb5fa7ad59049298b3f745c74fa74c62fbfcfc4"}, + {file = "cffi-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8e709127c6c77446a8c0a8c8bf3c8ee706a06cd44b1e827c3e6a2ee6b8c098"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:748dcd1e3d3d7cd5443ef03ce8685043294ad6bd7c02a38d1bd367cfd968e000"}, + {file = "cffi-1.16.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8895613bcc094d4a1b2dbe179d88d7fb4a15cee43c052e8885783fac397d91fe"}, + {file = "cffi-1.16.0-cp39-cp39-win32.whl", hash = "sha256:ed86a35631f7bfbb28e108dd96773b9d5a6ce4811cf6ea468bb6a359b256b1e4"}, + {file = "cffi-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:3686dffb02459559c74dd3d81748269ffb0eb027c39a6fc99502de37d501faa8"}, + {file = "cffi-1.16.0.tar.gz", hash = "sha256:bcb3ef43e58665bbda2fb198698fcae6776483e0c4a631aa5647806c25e02cc0"}, ] [package.dependencies] @@ -533,94 +482,107 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "3.2.0" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "charset-normalizer-3.2.0.tar.gz", hash = "sha256:3bb3d25a8e6c0aedd251753a79ae98a093c7e7b471faa3aa9a93a81431987ace"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b87549028f680ca955556e3bd57013ab47474c3124dc069faa0b6545b6c9710"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7c70087bfee18a42b4040bb9ec1ca15a08242cf5867c58726530bdf3945672ed"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a103b3a7069b62f5d4890ae1b8f0597618f628b286b03d4bc9195230b154bfa9"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:94aea8eff76ee6d1cdacb07dd2123a68283cb5569e0250feab1240058f53b623"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:db901e2ac34c931d73054d9797383d0f8009991e723dab15109740a63e7f902a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0dac0ff919ba34d4df1b6131f59ce95b08b9065233446be7e459f95554c0dc8"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193cbc708ea3aca45e7221ae58f0fd63f933753a9bfb498a3b474878f12caaad"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09393e1b2a9461950b1c9a45d5fd251dc7c6f228acab64da1c9c0165d9c7765c"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:baacc6aee0b2ef6f3d308e197b5d7a81c0e70b06beae1f1fcacffdbd124fe0e3"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:bf420121d4c8dce6b889f0e8e4ec0ca34b7f40186203f06a946fa0276ba54029"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:c04a46716adde8d927adb9457bbe39cf473e1e2c2f5d0a16ceb837e5d841ad4f"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:aaf63899c94de41fe3cf934601b0f7ccb6b428c6e4eeb80da72c58eab077b19a"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d62e51710986674142526ab9f78663ca2b0726066ae26b78b22e0f5e571238dd"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win32.whl", hash = "sha256:04e57ab9fbf9607b77f7d057974694b4f6b142da9ed4a199859d9d4d5c63fe96"}, - {file = "charset_normalizer-3.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:48021783bdf96e3d6de03a6e39a1171ed5bd7e8bb93fc84cc649d11490f87cea"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4957669ef390f0e6719db3613ab3a7631e68424604a7b448f079bee145da6e09"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:46fb8c61d794b78ec7134a715a3e564aafc8f6b5e338417cb19fe9f57a5a9bf2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f779d3ad205f108d14e99bb3859aa7dd8e9c68874617c72354d7ecaec2a054ac"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f25c229a6ba38a35ae6e25ca1264621cc25d4d38dca2942a7fce0b67a4efe918"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2efb1bd13885392adfda4614c33d3b68dee4921fd0ac1d3988f8cbb7d589e72a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f30b48dd7fa1474554b0b0f3fdfdd4c13b5c737a3c6284d3cdc424ec0ffff3a"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:246de67b99b6851627d945db38147d1b209a899311b1305dd84916f2b88526c6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd9b3b31adcb054116447ea22caa61a285d92e94d710aa5ec97992ff5eb7cf3"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8c2f5e83493748286002f9369f3e6607c565a6a90425a3a1fef5ae32a36d749d"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:3170c9399da12c9dc66366e9d14da8bf7147e1e9d9ea566067bbce7bb74bd9c2"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7a4826ad2bd6b07ca615c74ab91f32f6c96d08f6fcc3902ceeedaec8cdc3bcd6"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:3b1613dd5aee995ec6d4c69f00378bbd07614702a315a2cf6c1d21461fe17c23"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9e608aafdb55eb9f255034709e20d5a83b6d60c054df0802fa9c9883d0a937aa"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win32.whl", hash = "sha256:f2a1d0fd4242bd8643ce6f98927cf9c04540af6efa92323e9d3124f57727bfc1"}, - {file = "charset_normalizer-3.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:681eb3d7e02e3c3655d1b16059fbfb605ac464c834a0c629048a30fad2b27489"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c57921cda3a80d0f2b8aec7e25c8aa14479ea92b5b51b6876d975d925a2ea346"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:41b25eaa7d15909cf3ac4c96088c1f266a9a93ec44f87f1d13d4a0e86c81b982"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f058f6963fd82eb143c692cecdc89e075fa0828db2e5b291070485390b2f1c9c"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7647ebdfb9682b7bb97e2a5e7cb6ae735b1c25008a70b906aecca294ee96cf4"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eef9df1eefada2c09a5e7a40991b9fc6ac6ef20b1372abd48d2794a316dc0449"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e03b8895a6990c9ab2cdcd0f2fe44088ca1c65ae592b8f795c3294af00a461c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:ee4006268ed33370957f55bf2e6f4d263eaf4dc3cfc473d1d90baff6ed36ce4a"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c4983bf937209c57240cff65906b18bb35e64ae872da6a0db937d7b4af845dd7"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:3bb7fda7260735efe66d5107fb7e6af6a7c04c7fce9b2514e04b7a74b06bf5dd"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:72814c01533f51d68702802d74f77ea026b5ec52793c791e2da806a3844a46c3"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:70c610f6cbe4b9fce272c407dd9d07e33e6bf7b4aa1b7ffb6f6ded8e634e3592"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win32.whl", hash = "sha256:a401b4598e5d3f4a9a811f3daf42ee2291790c7f9d74b18d75d6e21dda98a1a1"}, - {file = "charset_normalizer-3.2.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c0b21078a4b56965e2b12f247467b234734491897e99c1d51cee628da9786959"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:95eb302ff792e12aba9a8b8f8474ab229a83c103d74a750ec0bd1c1eea32e669"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1a100c6d595a7f316f1b6f01d20815d916e75ff98c27a01ae817439ea7726329"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6339d047dab2780cc6220f46306628e04d9750f02f983ddb37439ca47ced7149"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b749b9cc6ee664a3300bb3a273c1ca8068c46be705b6c31cf5d276f8628a94"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a38856a971c602f98472050165cea2cdc97709240373041b69030be15047691f"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f87f746ee241d30d6ed93969de31e5ffd09a2961a051e60ae6bddde9ec3583aa"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89f1b185a01fe560bc8ae5f619e924407efca2191b56ce749ec84982fc59a32a"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e1c8a2f4c69e08e89632defbfabec2feb8a8d99edc9f89ce33c4b9e36ab63037"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2f4ac36d8e2b4cc1aa71df3dd84ff8efbe3bfb97ac41242fbcfc053c67434f46"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a386ebe437176aab38c041de1260cd3ea459c6ce5263594399880bbc398225b2"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:ccd16eb18a849fd8dcb23e23380e2f0a354e8daa0c984b8a732d9cfaba3a776d"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:e6a5bf2cba5ae1bb80b154ed68a3cfa2fa00fde979a7f50d6598d3e17d9ac20c"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:45de3f87179c1823e6d9e32156fb14c1927fcc9aba21433f088fdfb555b77c10"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win32.whl", hash = "sha256:1000fba1057b92a65daec275aec30586c3de2401ccdcd41f8a5c1e2c87078706"}, - {file = "charset_normalizer-3.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:8b2c760cfc7042b27ebdb4a43a4453bd829a5742503599144d54a032c5dc7e9e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:855eafa5d5a2034b4621c74925d89c5efef61418570e5ef9b37717d9c796419c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:203f0c8871d5a7987be20c72442488a0b8cfd0f43b7973771640fc593f56321f"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e857a2232ba53ae940d3456f7533ce6ca98b81917d47adc3c7fd55dad8fab858"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e86d77b090dbddbe78867a0275cb4df08ea195e660f1f7f13435a4649e954e5"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c4fb39a81950ec280984b3a44f5bd12819953dc5fa3a7e6fa7a80db5ee853952"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2dee8e57f052ef5353cf608e0b4c871aee320dd1b87d351c28764fc0ca55f9f4"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8700f06d0ce6f128de3ccdbc1acaea1ee264d2caa9ca05daaf492fde7c2a7200"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1920d4ff15ce893210c1f0c0e9d19bfbecb7983c76b33f046c13a8ffbd570252"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c1c76a1743432b4b60ab3358c937a3fe1341c828ae6194108a94c69028247f22"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f7560358a6811e52e9c4d142d497f1a6e10103d3a6881f18d04dbce3729c0e2c"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:c8063cf17b19661471ecbdb3df1c84f24ad2e389e326ccaf89e3fb2484d8dd7e"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:cd6dbe0238f7743d0efe563ab46294f54f9bc8f4b9bcf57c3c666cc5bc9d1299"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1249cbbf3d3b04902ff081ffbb33ce3377fa6e4c7356f759f3cd076cc138d020"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win32.whl", hash = "sha256:6c409c0deba34f147f77efaa67b8e4bb83d2f11c8806405f76397ae5b8c0d1c9"}, - {file = "charset_normalizer-3.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:7095f6fbfaa55defb6b733cfeb14efaae7a29f0b59d8cf213be4e7ca0b857b80"}, - {file = "charset_normalizer-3.2.0-py3-none-any.whl", hash = "sha256:8e098148dd37b4ce3baca71fb394c81dc5d9c7728c95df695d2dca218edf40e6"}, + {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win32.whl", hash = "sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73"}, + {file = "charset_normalizer-3.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win32.whl", hash = "sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab"}, + {file = "charset_normalizer-3.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win32.whl", hash = "sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7"}, + {file = "charset_normalizer-3.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win32.whl", hash = "sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4"}, + {file = "charset_normalizer-3.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win32.whl", hash = "sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25"}, + {file = "charset_normalizer-3.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win32.whl", hash = "sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f"}, + {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, + {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] [[package]] name = "click" version = "8.1.7" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -635,7 +597,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -645,174 +606,188 @@ files = [ [[package]] name = "comm" -version = "0.1.4" +version = "0.2.1" description = "Jupyter Python Comm implementation, for usage in ipykernel, xeus-python etc." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a"}, - {file = "comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15"}, + {file = "comm-0.2.1-py3-none-any.whl", hash = "sha256:87928485c0dfc0e7976fd89fc1e187023cf587e7c353e4a9b417555b44adf021"}, + {file = "comm-0.2.1.tar.gz", hash = "sha256:0bc91edae1344d39d3661dcbc36937181fdaddb304790458f8b044dbc064b89a"}, ] [package.dependencies] traitlets = ">=4" [package.extras] -lint = ["black (>=22.6.0)", "mdformat (>0.7)", "mdformat-gfm (>=0.3.5)", "ruff (>=0.0.156)"] test = ["pytest"] -typing = ["mypy (>=0.990)"] [[package]] name = "contourpy" -version = "1.1.0" +version = "1.2.0" description = "Python library for calculating contours of 2D quadrilateral grids" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "contourpy-1.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:89f06eff3ce2f4b3eb24c1055a26981bffe4e7264acd86f15b97e40530b794bc"}, - {file = "contourpy-1.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dffcc2ddec1782dd2f2ce1ef16f070861af4fb78c69862ce0aab801495dda6a3"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25ae46595e22f93592d39a7eac3d638cda552c3e1160255258b695f7b58e5655"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:17cfaf5ec9862bc93af1ec1f302457371c34e688fbd381f4035a06cd47324f48"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:18a64814ae7bce73925131381603fff0116e2df25230dfc80d6d690aa6e20b37"}, - {file = "contourpy-1.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c81f22b4f572f8a2110b0b741bb64e5a6427e0a198b2cdc1fbaf85f352a3aa"}, - {file = "contourpy-1.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53cc3a40635abedbec7f1bde60f8c189c49e84ac180c665f2cd7c162cc454baa"}, - {file = "contourpy-1.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f795597073b09d631782e7245016a4323cf1cf0b4e06eef7ea6627e06a37ff2"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0b7b04ed0961647691cfe5d82115dd072af7ce8846d31a5fac6c142dcce8b882"}, - {file = "contourpy-1.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27bc79200c742f9746d7dd51a734ee326a292d77e7d94c8af6e08d1e6c15d545"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052cc634bf903c604ef1a00a5aa093c54f81a2612faedaa43295809ffdde885e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9382a1c0bc46230fb881c36229bfa23d8c303b889b788b939365578d762b5c18"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5cec36c5090e75a9ac9dbd0ff4a8cf7cecd60f1b6dc23a374c7d980a1cd710e"}, - {file = "contourpy-1.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f0cbd657e9bde94cd0e33aa7df94fb73c1ab7799378d3b3f902eb8eb2e04a3a"}, - {file = "contourpy-1.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:181cbace49874f4358e2929aaf7ba84006acb76694102e88dd15af861996c16e"}, - {file = "contourpy-1.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:fb3b7d9e6243bfa1efb93ccfe64ec610d85cfe5aec2c25f97fbbd2e58b531256"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bcb41692aa09aeb19c7c213411854402f29f6613845ad2453d30bf421fe68fed"}, - {file = "contourpy-1.1.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5d123a5bc63cd34c27ff9c7ac1cd978909e9c71da12e05be0231c608048bb2ae"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62013a2cf68abc80dadfd2307299bfa8f5aa0dcaec5b2954caeb5fa094171103"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0b6616375d7de55797d7a66ee7d087efe27f03d336c27cf1f32c02b8c1a5ac70"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:317267d915490d1e84577924bd61ba71bf8681a30e0d6c545f577363157e5e94"}, - {file = "contourpy-1.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d551f3a442655f3dcc1285723f9acd646ca5858834efeab4598d706206b09c9f"}, - {file = "contourpy-1.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e7a117ce7df5a938fe035cad481b0189049e8d92433b4b33aa7fc609344aafa1"}, - {file = "contourpy-1.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:d4f26b25b4f86087e7d75e63212756c38546e70f2a92d2be44f80114826e1cd4"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc00bb4225d57bff7ebb634646c0ee2a1298402ec10a5fe7af79df9a51c1bfd9"}, - {file = "contourpy-1.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:189ceb1525eb0655ab8487a9a9c41f42a73ba52d6789754788d1883fb06b2d8a"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f2931ed4741f98f74b410b16e5213f71dcccee67518970c42f64153ea9313b9"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:30f511c05fab7f12e0b1b7730ebdc2ec8deedcfb505bc27eb570ff47c51a8f15"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:143dde50520a9f90e4a2703f367cf8ec96a73042b72e68fcd184e1279962eb6f"}, - {file = "contourpy-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e94bef2580e25b5fdb183bf98a2faa2adc5b638736b2c0a4da98691da641316a"}, - {file = "contourpy-1.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ed614aea8462735e7d70141374bd7650afd1c3f3cb0c2dbbcbe44e14331bf002"}, - {file = "contourpy-1.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:438ba416d02f82b692e371858143970ed2eb6337d9cdbbede0d8ad9f3d7dd17d"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a698c6a7a432789e587168573a864a7ea374c6be8d4f31f9d87c001d5a843493"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:397b0ac8a12880412da3551a8cb5a187d3298a72802b45a3bd1805e204ad8439"}, - {file = "contourpy-1.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:a67259c2b493b00e5a4d0f7bfae51fb4b3371395e47d079a4446e9b0f4d70e76"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2b836d22bd2c7bb2700348e4521b25e077255ebb6ab68e351ab5aa91ca27e027"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084eaa568400cfaf7179b847ac871582199b1b44d5699198e9602ecbbb5f6104"}, - {file = "contourpy-1.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:911ff4fd53e26b019f898f32db0d4956c9d227d51338fb3b03ec72ff0084ee5f"}, - {file = "contourpy-1.1.0.tar.gz", hash = "sha256:e53046c3863828d21d531cc3b53786e6580eb1ba02477e8681009b6aa0870b21"}, + {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, + {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, + {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, + {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, + {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, + {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, + {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, + {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, + {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, + {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, + {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, + {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, + {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, + {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, + {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, + {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, + {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, + {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, + {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, + {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, + {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, + {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, + {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, ] [package.dependencies] -numpy = ">=1.16" +numpy = ">=1.20,<2.0" [package.extras] bokeh = ["bokeh", "selenium"] -docs = ["furo", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.2.0)", "types-Pillow"] +docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] -test-no-images = ["pytest", "pytest-cov", "wurlitzer"] +test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "cryptography" -version = "41.0.3" +version = "42.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:652627a055cb52a84f8c448185922241dd5217443ca194d5739b44612c5e6507"}, - {file = "cryptography-41.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:8f09daa483aedea50d249ef98ed500569841d6498aa9c9f4b0531b9964658922"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fd871184321100fb400d759ad0cddddf284c4b696568204d281c902fc7b0d81"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84537453d57f55a50a5b6835622ee405816999a7113267739a1b4581f83535bd"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3fb248989b6363906827284cd20cca63bb1a757e0a2864d4c1682a985e3dca47"}, - {file = "cryptography-41.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:42cb413e01a5d36da9929baa9d70ca90d90b969269e5a12d39c1e0d475010116"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb57c421b34af8f9fe830e1955bf493a86a7996cc1338fe41b30047d16e962c"}, - {file = "cryptography-41.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6af1c6387c531cd364b72c28daa29232162010d952ceb7e5ca8e2827526aceae"}, - {file = "cryptography-41.0.3-cp37-abi3-win32.whl", hash = "sha256:0d09fb5356f975974dbcb595ad2d178305e5050656affb7890a1583f5e02a306"}, - {file = "cryptography-41.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:a983e441a00a9d57a4d7c91b3116a37ae602907a7618b882c8013b5762e80574"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5259cb659aa43005eb55a0e4ff2c825ca111a0da1814202c64d28a985d33b087"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:67e120e9a577c64fe1f611e53b30b3e69744e5910ff3b6e97e935aeb96005858"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7efe8041897fe7a50863e51b77789b657a133c75c3b094e51b5e4b5cec7bf906"}, - {file = "cryptography-41.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ce785cf81a7bdade534297ef9e490ddff800d956625020ab2ec2780a556c313e"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:57a51b89f954f216a81c9d057bf1a24e2f36e764a1ca9a501a6964eb4a6800dd"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c2f0d35703d61002a2bbdcf15548ebb701cfdd83cdc12471d2bae80878a4207"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:23c2d778cf829f7d0ae180600b17e9fceea3c2ef8b31a99e3c694cbbf3a24b84"}, - {file = "cryptography-41.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:95dd7f261bb76948b52a5330ba5202b91a26fbac13ad0e9fc8a3ac04752058c7"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:41d7aa7cdfded09b3d73a47f429c298e80796c8e825ddfadc84c8a7f12df212d"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d0d651aa754ef58d75cec6edfbd21259d93810b73f6ec246436a21b7841908de"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ab8de0d091acbf778f74286f4989cf3d1528336af1b59f3e5d2ebca8b5fe49e1"}, - {file = "cryptography-41.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a74fbcdb2a0d46fe00504f571a2a540532f4c188e6ccf26f1f178480117b33c4"}, - {file = "cryptography-41.0.3.tar.gz", hash = "sha256:6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:de5086cd475d67113ccb6f9fae6d8fe3ac54a4f9238fd08bfdb07b03d791ff0a"}, + {file = "cryptography-42.0.3-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:935cca25d35dda9e7bd46a24831dfd255307c55a07ff38fd1a92119cffc34857"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20100c22b298c9eaebe4f0b9032ea97186ac2555f426c3e70670f2517989543b"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2eb6368d5327d6455f20327fb6159b97538820355ec00f8cc9464d617caecead"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:39d5c93e95bcbc4c06313fc6a500cee414ee39b616b55320c1904760ad686938"}, + {file = "cryptography-42.0.3-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3d96ea47ce6d0055d5b97e761d37b4e84195485cb5a38401be341fabf23bc32a"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:d1998e545081da0ab276bcb4b33cce85f775adb86a516e8f55b3dac87f469548"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93fbee08c48e63d5d1b39ab56fd3fdd02e6c2431c3da0f4edaf54954744c718f"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:90147dad8c22d64b2ff7331f8d4cddfdc3ee93e4879796f837bdbb2a0b141e0c"}, + {file = "cryptography-42.0.3-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4dcab7c25e48fc09a73c3e463d09ac902a932a0f8d0c568238b3696d06bf377b"}, + {file = "cryptography-42.0.3-cp37-abi3-win32.whl", hash = "sha256:1e935c2900fb53d31f491c0de04f41110351377be19d83d908c1fd502ae8daa5"}, + {file = "cryptography-42.0.3-cp37-abi3-win_amd64.whl", hash = "sha256:762f3771ae40e111d78d77cbe9c1035e886ac04a234d3ee0856bf4ecb3749d54"}, + {file = "cryptography-42.0.3-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:0d3ec384058b642f7fb7e7bff9664030011ed1af8f852540c76a1317a9dd0d20"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35772a6cffd1f59b85cb670f12faba05513446f80352fe811689b4e439b5d89e"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:04859aa7f12c2b5f7e22d25198ddd537391f1695df7057c8700f71f26f47a129"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c3d1f5a1d403a8e640fa0887e9f7087331abb3f33b0f2207d2cc7f213e4a864c"}, + {file = "cryptography-42.0.3-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:df34312149b495d9d03492ce97471234fd9037aa5ba217c2a6ea890e9166f151"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:de4ae486041878dc46e571a4c70ba337ed5233a1344c14a0790c4c4be4bbb8b4"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:0fab2a5c479b360e5e0ea9f654bcebb535e3aa1e493a715b13244f4e07ea8eec"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:25b09b73db78facdfd7dd0fa77a3f19e94896197c86e9f6dc16bce7b37a96504"}, + {file = "cryptography-42.0.3-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:d5cf11bc7f0b71fb71af26af396c83dfd3f6eed56d4b6ef95d57867bf1e4ba65"}, + {file = "cryptography-42.0.3-cp39-abi3-win32.whl", hash = "sha256:0fea01527d4fb22ffe38cd98951c9044400f6eff4788cf52ae116e27d30a1ba3"}, + {file = "cryptography-42.0.3-cp39-abi3-win_amd64.whl", hash = "sha256:2619487f37da18d6826e27854a7f9d4d013c51eafb066c80d09c63cf24505306"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ead69ba488f806fe1b1b4050febafdbf206b81fa476126f3e16110c818bac396"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:20180da1b508f4aefc101cebc14c57043a02b355d1a652b6e8e537967f1e1b46"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:5fbf0f3f0fac7c089308bd771d2c6c7b7d53ae909dce1db52d8e921f6c19bb3a"}, + {file = "cryptography-42.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:c23f03cfd7d9826cdcbad7850de67e18b4654179e01fe9bc623d37c2638eb4ef"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:db0480ffbfb1193ac4e1e88239f31314fe4c6cdcf9c0b8712b55414afbf80db4"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:6c25e1e9c2ce682d01fc5e2dde6598f7313027343bd14f4049b82ad0402e52cd"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:9541c69c62d7446539f2c1c06d7046aef822940d248fa4b8962ff0302862cc1f"}, + {file = "cryptography-42.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1b797099d221df7cce5ff2a1d272761d1554ddf9a987d3e11f6459b38cd300fd"}, + {file = "cryptography-42.0.3.tar.gz", hash = "sha256:069d2ce9be5526a44093a0991c450fe9906cdf069e0e7cd67d9dee49a62b9ebe"}, ] [package.dependencies] -cffi = ">=1.12" +cffi = {version = ">=1.12", markers = "platform_python_implementation != \"PyPy\""} [package.extras] docs = ["sphinx (>=5.3.0)", "sphinx-rtd-theme (>=1.1.1)"] -docstest = ["pyenchant (>=1.6.11)", "sphinxcontrib-spelling (>=4.0.1)", "twine (>=1.12.0)"] +docstest = ["pyenchant (>=1.6.11)", "readme-renderer", "sphinxcontrib-spelling (>=4.0.1)"] nox = ["nox"] -pep8test = ["black", "check-sdist", "mypy", "ruff"] +pep8test = ["check-sdist", "click", "mypy", "ruff"] sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test = ["certifi", "pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] test-randomorder = ["pytest-randomly"] [[package]] name = "cycler" -version = "0.11.0" +version = "0.12.1" description = "Composable style cycles" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "cycler-0.11.0-py3-none-any.whl", hash = "sha256:3a27e95f763a428a739d2add979fa7494c912a32c17c4c38c4d5f082cad165a3"}, - {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, + {file = "cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30"}, + {file = "cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c"}, ] +[package.extras] +docs = ["ipython", "matplotlib", "numpydoc", "sphinx"] +tests = ["pytest", "pytest-cov", "pytest-xdist"] + [[package]] name = "debugpy" -version = "1.6.7.post1" +version = "1.8.1" description = "An implementation of the Debug Adapter Protocol for Python" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "debugpy-1.6.7.post1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:903bd61d5eb433b6c25b48eae5e23821d4c1a19e25c9610205f5aeaccae64e32"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d16882030860081e7dd5aa619f30dec3c2f9a421e69861125f83cc372c94e57d"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win32.whl", hash = "sha256:eea8d8cfb9965ac41b99a61f8e755a8f50e9a20330938ad8271530210f54e09c"}, - {file = "debugpy-1.6.7.post1-cp310-cp310-win_amd64.whl", hash = "sha256:85969d864c45f70c3996067cfa76a319bae749b04171f2cdeceebe4add316155"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:890f7ab9a683886a0f185786ffbda3b46495c4b929dab083b8c79d6825832a52"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4ac7a4dba28801d184b7fc0e024da2635ca87d8b0a825c6087bb5168e3c0d28"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win32.whl", hash = "sha256:3370ef1b9951d15799ef7af41f8174194f3482ee689988379763ef61a5456426"}, - {file = "debugpy-1.6.7.post1-cp37-cp37m-win_amd64.whl", hash = "sha256:65b28435a17cba4c09e739621173ff90c515f7b9e8ea469b92e3c28ef8e5cdfb"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:92b6dae8bfbd497c90596bbb69089acf7954164aea3228a99d7e43e5267f5b36"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72f5d2ecead8125cf669e62784ef1e6300f4067b0f14d9f95ee00ae06fc7c4f7"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win32.whl", hash = "sha256:f0851403030f3975d6e2eaa4abf73232ab90b98f041e3c09ba33be2beda43fcf"}, - {file = "debugpy-1.6.7.post1-cp38-cp38-win_amd64.whl", hash = "sha256:3de5d0f97c425dc49bce4293df6a04494309eedadd2b52c22e58d95107e178d9"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:38651c3639a4e8bbf0ca7e52d799f6abd07d622a193c406be375da4d510d968d"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:038c51268367c9c935905a90b1c2d2dbfe304037c27ba9d19fe7409f8cdc710c"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win32.whl", hash = "sha256:4b9eba71c290852f959d2cf8a03af28afd3ca639ad374d393d53d367f7f685b2"}, - {file = "debugpy-1.6.7.post1-cp39-cp39-win_amd64.whl", hash = "sha256:973a97ed3b434eab0f792719a484566c35328196540676685c975651266fccf9"}, - {file = "debugpy-1.6.7.post1-py2.py3-none-any.whl", hash = "sha256:1093a5c541af079c13ac8c70ab8b24d1d35c8cacb676306cf11e57f699c02926"}, - {file = "debugpy-1.6.7.post1.zip", hash = "sha256:fe87ec0182ef624855d05e6ed7e0b7cb1359d2ffa2a925f8ec2d22e98b75d0ca"}, + {file = "debugpy-1.8.1-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:3bda0f1e943d386cc7a0e71bfa59f4137909e2ed947fb3946c506e113000f741"}, + {file = "debugpy-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dda73bf69ea479c8577a0448f8c707691152e6c4de7f0c4dec5a4bc11dee516e"}, + {file = "debugpy-1.8.1-cp310-cp310-win32.whl", hash = "sha256:3a79c6f62adef994b2dbe9fc2cc9cc3864a23575b6e387339ab739873bea53d0"}, + {file = "debugpy-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:7eb7bd2b56ea3bedb009616d9e2f64aab8fc7000d481faec3cd26c98a964bcdd"}, + {file = "debugpy-1.8.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:016a9fcfc2c6b57f939673c874310d8581d51a0fe0858e7fac4e240c5eb743cb"}, + {file = "debugpy-1.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd97ed11a4c7f6d042d320ce03d83b20c3fb40da892f994bc041bbc415d7a099"}, + {file = "debugpy-1.8.1-cp311-cp311-win32.whl", hash = "sha256:0de56aba8249c28a300bdb0672a9b94785074eb82eb672db66c8144fff673146"}, + {file = "debugpy-1.8.1-cp311-cp311-win_amd64.whl", hash = "sha256:1a9fe0829c2b854757b4fd0a338d93bc17249a3bf69ecf765c61d4c522bb92a8"}, + {file = "debugpy-1.8.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3ebb70ba1a6524d19fa7bb122f44b74170c447d5746a503e36adc244a20ac539"}, + {file = "debugpy-1.8.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2e658a9630f27534e63922ebf655a6ab60c370f4d2fc5c02a5b19baf4410ace"}, + {file = "debugpy-1.8.1-cp312-cp312-win32.whl", hash = "sha256:caad2846e21188797a1f17fc09c31b84c7c3c23baf2516fed5b40b378515bbf0"}, + {file = "debugpy-1.8.1-cp312-cp312-win_amd64.whl", hash = "sha256:edcc9f58ec0fd121a25bc950d4578df47428d72e1a0d66c07403b04eb93bcf98"}, + {file = "debugpy-1.8.1-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:7a3afa222f6fd3d9dfecd52729bc2e12c93e22a7491405a0ecbf9e1d32d45b39"}, + {file = "debugpy-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d915a18f0597ef685e88bb35e5d7ab968964b7befefe1aaea1eb5b2640b586c7"}, + {file = "debugpy-1.8.1-cp38-cp38-win32.whl", hash = "sha256:92116039b5500633cc8d44ecc187abe2dfa9b90f7a82bbf81d079fcdd506bae9"}, + {file = "debugpy-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:e38beb7992b5afd9d5244e96ad5fa9135e94993b0c551ceebf3fe1a5d9beb234"}, + {file = "debugpy-1.8.1-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:bfb20cb57486c8e4793d41996652e5a6a885b4d9175dd369045dad59eaacea42"}, + {file = "debugpy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:efd3fdd3f67a7e576dd869c184c5dd71d9aaa36ded271939da352880c012e703"}, + {file = "debugpy-1.8.1-cp39-cp39-win32.whl", hash = "sha256:58911e8521ca0c785ac7a0539f1e77e0ce2df753f786188f382229278b4cdf23"}, + {file = "debugpy-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:6df9aa9599eb05ca179fb0b810282255202a66835c6efb1d112d21ecb830ddd3"}, + {file = "debugpy-1.8.1-py2.py3-none-any.whl", hash = "sha256:28acbe2241222b87e255260c76741e1fbf04fdc3b6d094fcf57b6c6f75ce1242"}, + {file = "debugpy-1.8.1.zip", hash = "sha256:f696d6be15be87aef621917585f9bb94b1dc9e8aced570db1b8a6fc14e8f9b42"}, ] [[package]] name = "decorator" version = "5.1.1" description = "Decorators for Humans" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -824,7 +799,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -836,7 +810,6 @@ files = [ name = "deprecation" version = "2.1.0" description = "A library to handle automated deprecations" -category = "main" optional = false python-versions = "*" files = [ @@ -851,7 +824,6 @@ packaging = "*" name = "ecdsa" version = "0.18.0" description = "ECDSA cryptographic signature library (pure python)" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -870,7 +842,6 @@ gmpy2 = ["gmpy2"] name = "entrypoints" version = "0.4" description = "Discover and load entry points from installed packages." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -880,14 +851,13 @@ files = [ [[package]] name = "exceptiongroup" -version = "1.1.3" +version = "1.2.0" description = "Backport of PEP 654 (exception groups)" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "exceptiongroup-1.1.3-py3-none-any.whl", hash = "sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3"}, - {file = "exceptiongroup-1.1.3.tar.gz", hash = "sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9"}, + {file = "exceptiongroup-1.2.0-py3-none-any.whl", hash = "sha256:4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14"}, + {file = "exceptiongroup-1.2.0.tar.gz", hash = "sha256:91f5c769735f051a4290d52edd0858999b57e5876e9f85937691bd4c9fa3ed68"}, ] [package.extras] @@ -895,29 +865,27 @@ test = ["pytest (>=6)"] [[package]] name = "executing" -version = "1.2.0" +version = "2.0.1" description = "Get the currently executing AST node of a frame, and other information" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5" files = [ - {file = "executing-1.2.0-py2.py3-none-any.whl", hash = "sha256:0314a69e37426e3608aada02473b4161d4caf5a4b244d1d0c48072b8fee7bacc"}, - {file = "executing-1.2.0.tar.gz", hash = "sha256:19da64c18d2d851112f09c287f8d3dbbdf725ab0e569077efb6cdcbd3497c107"}, + {file = "executing-2.0.1-py2.py3-none-any.whl", hash = "sha256:eac49ca94516ccc753f9fb5ce82603156e590b27525a8bc32cce8ae302eb61bc"}, + {file = "executing-2.0.1.tar.gz", hash = "sha256:35afe2ce3affba8ee97f2d69927fa823b08b472b7b994e36a52a964b93d16147"}, ] [package.extras] -tests = ["asttokens", "littleutils", "pytest", "rich"] +tests = ["asttokens (>=2.1.0)", "coverage", "coverage-enable-subprocess", "ipython", "littleutils", "pytest", "rich"] [[package]] name = "fastjsonschema" -version = "2.18.0" +version = "2.19.1" description = "Fastest Python implementation of JSON schema" -category = "main" optional = false python-versions = "*" files = [ - {file = "fastjsonschema-2.18.0-py3-none-any.whl", hash = "sha256:128039912a11a807068a7c87d0da36660afbfd7202780db26c4aa7153cfdc799"}, - {file = "fastjsonschema-2.18.0.tar.gz", hash = "sha256:e820349dd16f806e4bd1467a138dced9def4bc7d6213a34295272a6cac95b5bd"}, + {file = "fastjsonschema-2.19.1-py3-none-any.whl", hash = "sha256:3672b47bc94178c9f23dbb654bf47440155d4db9df5f7bc47643315f9c405cd0"}, + {file = "fastjsonschema-2.19.1.tar.gz", hash = "sha256:e3126a94bdc4623d3de4485f8d468a12f02a67921315ddc87836d6e456dc789d"}, ] [package.extras] @@ -925,67 +893,73 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "fonttools" -version = "4.42.1" +version = "4.49.0" description = "Tools to manipulate font files" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ed1a13a27f59d1fc1920394a7f596792e9d546c9ca5a044419dca70c37815d7c"}, - {file = "fonttools-4.42.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c9b1ce7a45978b821a06d375b83763b27a3a5e8a2e4570b3065abad240a18760"}, - {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f720fa82a11c0f9042376fd509b5ed88dab7e3cd602eee63a1af08883b37342b"}, - {file = "fonttools-4.42.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db55cbaea02a20b49fefbd8e9d62bd481aaabe1f2301dabc575acc6b358874fa"}, - {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3a35981d90feebeaef05e46e33e6b9e5b5e618504672ca9cd0ff96b171e4bfff"}, - {file = "fonttools-4.42.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:68a02bbe020dc22ee0540e040117535f06df9358106d3775e8817d826047f3fd"}, - {file = "fonttools-4.42.1-cp310-cp310-win32.whl", hash = "sha256:12a7c247d1b946829bfa2f331107a629ea77dc5391dfd34fdcd78efa61f354ca"}, - {file = "fonttools-4.42.1-cp310-cp310-win_amd64.whl", hash = "sha256:a398bdadb055f8de69f62b0fc70625f7cbdab436bbb31eef5816e28cab083ee8"}, - {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:689508b918332fb40ce117131633647731d098b1b10d092234aa959b4251add5"}, - {file = "fonttools-4.42.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:9e36344e48af3e3bde867a1ca54f97c308735dd8697005c2d24a86054a114a71"}, - {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19b7db825c8adee96fac0692e6e1ecd858cae9affb3b4812cdb9d934a898b29e"}, - {file = "fonttools-4.42.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:113337c2d29665839b7d90b39f99b3cac731f72a0eda9306165a305c7c31d341"}, - {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:37983b6bdab42c501202500a2be3a572f50d4efe3237e0686ee9d5f794d76b35"}, - {file = "fonttools-4.42.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6ed2662a3d9c832afa36405f8748c250be94ae5dfc5283d668308391f2102861"}, - {file = "fonttools-4.42.1-cp311-cp311-win32.whl", hash = "sha256:179737095eb98332a2744e8f12037b2977f22948cf23ff96656928923ddf560a"}, - {file = "fonttools-4.42.1-cp311-cp311-win_amd64.whl", hash = "sha256:f2b82f46917d8722e6b5eafeefb4fb585d23babd15d8246c664cd88a5bddd19c"}, - {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:62f481ac772fd68901573956231aea3e4b1ad87b9b1089a61613a91e2b50bb9b"}, - {file = "fonttools-4.42.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f2f806990160d1ce42d287aa419df3ffc42dfefe60d473695fb048355fe0c6a0"}, - {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db372213d39fa33af667c2aa586a0c1235e88e9c850f5dd5c8e1f17515861868"}, - {file = "fonttools-4.42.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d18fc642fd0ac29236ff88ecfccff229ec0386090a839dd3f1162e9a7944a40"}, - {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8708b98c278012ad267ee8a7433baeb809948855e81922878118464b274c909d"}, - {file = "fonttools-4.42.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c95b0724a6deea2c8c5d3222191783ced0a2f09bd6d33f93e563f6f1a4b3b3a4"}, - {file = "fonttools-4.42.1-cp38-cp38-win32.whl", hash = "sha256:4aa79366e442dbca6e2c8595645a3a605d9eeabdb7a094d745ed6106816bef5d"}, - {file = "fonttools-4.42.1-cp38-cp38-win_amd64.whl", hash = "sha256:acb47f6f8680de24c1ab65ebde39dd035768e2a9b571a07c7b8da95f6c8815fd"}, - {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fb289b7a815638a7613d46bcf324c9106804725b2bb8ad913c12b6958ffc4ec"}, - {file = "fonttools-4.42.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:53eb5091ddc8b1199330bb7b4a8a2e7995ad5d43376cadce84523d8223ef3136"}, - {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:46a0ec8adbc6ff13494eb0c9c2e643b6f009ce7320cf640de106fb614e4d4360"}, - {file = "fonttools-4.42.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cc7d685b8eeca7ae69dc6416833fbfea61660684b7089bca666067cb2937dcf"}, - {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:be24fcb80493b2c94eae21df70017351851652a37de514de553435b256b2f249"}, - {file = "fonttools-4.42.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:515607ec756d7865f23070682622c49d922901943697871fc292277cf1e71967"}, - {file = "fonttools-4.42.1-cp39-cp39-win32.whl", hash = "sha256:0eb79a2da5eb6457a6f8ab904838454accc7d4cccdaff1fd2bd3a0679ea33d64"}, - {file = "fonttools-4.42.1-cp39-cp39-win_amd64.whl", hash = "sha256:7286aed4ea271df9eab8d7a9b29e507094b51397812f7ce051ecd77915a6e26b"}, - {file = "fonttools-4.42.1-py3-none-any.whl", hash = "sha256:9398f244e28e0596e2ee6024f808b06060109e33ed38dcc9bded452fd9bbb853"}, - {file = "fonttools-4.42.1.tar.gz", hash = "sha256:c391cd5af88aacaf41dd7cfb96eeedfad297b5899a39e12f4c2c3706d0a3329d"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717"}, + {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559"}, + {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532"}, + {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828"}, + {file = "fonttools-4.49.0-cp310-cp310-win32.whl", hash = "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b"}, + {file = "fonttools-4.49.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e"}, + {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22"}, + {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a"}, + {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86"}, + {file = "fonttools-4.49.0-cp311-cp311-win32.whl", hash = "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e"}, + {file = "fonttools-4.49.0-cp311-cp311-win_amd64.whl", hash = "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075"}, + {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff"}, + {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb"}, + {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7"}, + {file = "fonttools-4.49.0-cp312-cp312-win32.whl", hash = "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880"}, + {file = "fonttools-4.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb"}, + {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75"}, + {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd"}, + {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036"}, + {file = "fonttools-4.49.0-cp38-cp38-win32.whl", hash = "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844"}, + {file = "fonttools-4.49.0-cp38-cp38-win_amd64.whl", hash = "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc"}, + {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2"}, + {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be"}, + {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c"}, + {file = "fonttools-4.49.0-cp39-cp39-win32.whl", hash = "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133"}, + {file = "fonttools-4.49.0-cp39-cp39-win_amd64.whl", hash = "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836"}, + {file = "fonttools-4.49.0-py3-none-any.whl", hash = "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18"}, + {file = "fonttools-4.49.0.tar.gz", hash = "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321"}, ] [package.extras] -all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.0.0)", "xattr", "zopfli (>=0.1.4)"] +all = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "fs (>=2.2.0,<3)", "lxml (>=4.0)", "lz4 (>=1.7.4.2)", "matplotlib", "munkres", "pycairo", "scipy", "skia-pathops (>=0.5.0)", "sympy", "uharfbuzz (>=0.23.0)", "unicodedata2 (>=15.1.0)", "xattr", "zopfli (>=0.1.4)"] graphite = ["lz4 (>=1.7.4.2)"] -interpolatable = ["munkres", "scipy"] -lxml = ["lxml (>=4.0,<5)"] +interpolatable = ["munkres", "pycairo", "scipy"] +lxml = ["lxml (>=4.0)"] pathops = ["skia-pathops (>=0.5.0)"] plot = ["matplotlib"] repacker = ["uharfbuzz (>=0.23.0)"] symfont = ["sympy"] type1 = ["xattr"] ufo = ["fs (>=2.2.0,<3)"] -unicode = ["unicodedata2 (>=15.0.0)"] +unicode = ["unicodedata2 (>=15.1.0)"] woff = ["brotli (>=1.0.1)", "brotlicffi (>=0.8.0)", "zopfli (>=0.1.4)"] [[package]] name = "fqdn" version = "1.5.1" description = "Validates fully-qualified domain names against RFC 1123, so that they are acceptable to modern bowsers" -category = "main" optional = false python-versions = ">=2.7, !=3.0, !=3.1, !=3.2, !=3.3, !=3.4, <4" files = [ @@ -995,80 +969,94 @@ files = [ [[package]] name = "frozenlist" -version = "1.4.0" +version = "1.4.1" description = "A list-like structure which implements collections.abc.MutableSequence" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:764226ceef3125e53ea2cb275000e309c0aa5464d43bd72abd661e27fffc26ab"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d6484756b12f40003c6128bfcc3fa9f0d49a687e171186c2d85ec82e3758c559"}, - {file = "frozenlist-1.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9ac08e601308e41eb533f232dbf6b7e4cea762f9f84f6357136eed926c15d12c"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d081f13b095d74b67d550de04df1c756831f3b83dc9881c38985834387487f1b"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:71932b597f9895f011f47f17d6428252fc728ba2ae6024e13c3398a087c2cdea"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:981b9ab5a0a3178ff413bca62526bb784249421c24ad7381e39d67981be2c326"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e41f3de4df3e80de75845d3e743b3f1c4c8613c3997a912dbf0229fc61a8b963"}, - {file = "frozenlist-1.4.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6918d49b1f90821e93069682c06ffde41829c346c66b721e65a5c62b4bab0300"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0e5c8764c7829343d919cc2dfc587a8db01c4f70a4ebbc49abde5d4b158b007b"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8d0edd6b1c7fb94922bf569c9b092ee187a83f03fb1a63076e7774b60f9481a8"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:e29cda763f752553fa14c68fb2195150bfab22b352572cb36c43c47bedba70eb"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:0c7c1b47859ee2cac3846fde1c1dc0f15da6cec5a0e5c72d101e0f83dcb67ff9"}, - {file = "frozenlist-1.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:901289d524fdd571be1c7be054f48b1f88ce8dddcbdf1ec698b27d4b8b9e5d62"}, - {file = "frozenlist-1.4.0-cp310-cp310-win32.whl", hash = "sha256:1a0848b52815006ea6596c395f87449f693dc419061cc21e970f139d466dc0a0"}, - {file = "frozenlist-1.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:b206646d176a007466358aa21d85cd8600a415c67c9bd15403336c331a10d956"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de343e75f40e972bae1ef6090267f8260c1446a1695e77096db6cfa25e759a95"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ad2a9eb6d9839ae241701d0918f54c51365a51407fd80f6b8289e2dfca977cc3"}, - {file = "frozenlist-1.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bd7bd3b3830247580de99c99ea2a01416dfc3c34471ca1298bccabf86d0ff4dc"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bdf1847068c362f16b353163391210269e4f0569a3c166bc6a9f74ccbfc7e839"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38461d02d66de17455072c9ba981d35f1d2a73024bee7790ac2f9e361ef1cd0c"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5a32087d720c608f42caed0ef36d2b3ea61a9d09ee59a5142d6070da9041b8f"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dd65632acaf0d47608190a71bfe46b209719bf2beb59507db08ccdbe712f969b"}, - {file = "frozenlist-1.4.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261b9f5d17cac914531331ff1b1d452125bf5daa05faf73b71d935485b0c510b"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:b89ac9768b82205936771f8d2eb3ce88503b1556324c9f903e7156669f521472"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:008eb8b31b3ea6896da16c38c1b136cb9fec9e249e77f6211d479db79a4eaf01"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e74b0506fa5aa5598ac6a975a12aa8928cbb58e1f5ac8360792ef15de1aa848f"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:490132667476f6781b4c9458298b0c1cddf237488abd228b0b3650e5ecba7467"}, - {file = "frozenlist-1.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:76d4711f6f6d08551a7e9ef28c722f4a50dd0fc204c56b4bcd95c6cc05ce6fbb"}, - {file = "frozenlist-1.4.0-cp311-cp311-win32.whl", hash = "sha256:a02eb8ab2b8f200179b5f62b59757685ae9987996ae549ccf30f983f40602431"}, - {file = "frozenlist-1.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:515e1abc578dd3b275d6a5114030b1330ba044ffba03f94091842852f806f1c1"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:f0ed05f5079c708fe74bf9027e95125334b6978bf07fd5ab923e9e55e5fbb9d3"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca265542ca427bf97aed183c1676e2a9c66942e822b14dc6e5f42e038f92a503"}, - {file = "frozenlist-1.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:491e014f5c43656da08958808588cc6c016847b4360e327a62cb308c791bd2d9"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:17ae5cd0f333f94f2e03aaf140bb762c64783935cc764ff9c82dff626089bebf"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1e78fb68cf9c1a6aa4a9a12e960a5c9dfbdb89b3695197aa7064705662515de2"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5655a942f5f5d2c9ed93d72148226d75369b4f6952680211972a33e59b1dfdc"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c11b0746f5d946fecf750428a95f3e9ebe792c1ee3b1e96eeba145dc631a9672"}, - {file = "frozenlist-1.4.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e66d2a64d44d50d2543405fb183a21f76b3b5fd16f130f5c99187c3fb4e64919"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:88f7bc0fcca81f985f78dd0fa68d2c75abf8272b1f5c323ea4a01a4d7a614efc"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:5833593c25ac59ede40ed4de6d67eb42928cca97f26feea219f21d0ed0959b79"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:fec520865f42e5c7f050c2a79038897b1c7d1595e907a9e08e3353293ffc948e"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:b826d97e4276750beca7c8f0f1a4938892697a6bcd8ec8217b3312dad6982781"}, - {file = "frozenlist-1.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ceb6ec0a10c65540421e20ebd29083c50e6d1143278746a4ef6bcf6153171eb8"}, - {file = "frozenlist-1.4.0-cp38-cp38-win32.whl", hash = "sha256:2b8bcf994563466db019fab287ff390fffbfdb4f905fc77bc1c1d604b1c689cc"}, - {file = "frozenlist-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:a6c8097e01886188e5be3e6b14e94ab365f384736aa1fca6a0b9e35bd4a30bc7"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6c38721585f285203e4b4132a352eb3daa19121a035f3182e08e437cface44bf"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a0c6da9aee33ff0b1a451e867da0c1f47408112b3391dd43133838339e410963"}, - {file = "frozenlist-1.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:93ea75c050c5bb3d98016b4ba2497851eadf0ac154d88a67d7a6816206f6fa7f"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f61e2dc5ad442c52b4887f1fdc112f97caeff4d9e6ebe78879364ac59f1663e1"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa384489fefeb62321b238e64c07ef48398fe80f9e1e6afeff22e140e0850eef"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10ff5faaa22786315ef57097a279b833ecab1a0bfb07d604c9cbb1c4cdc2ed87"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:007df07a6e3eb3e33e9a1fe6a9db7af152bbd8a185f9aaa6ece10a3529e3e1c6"}, - {file = "frozenlist-1.4.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f4f399d28478d1f604c2ff9119907af9726aed73680e5ed1ca634d377abb087"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5374b80521d3d3f2ec5572e05adc94601985cc526fb276d0c8574a6d749f1b3"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:ce31ae3e19f3c902de379cf1323d90c649425b86de7bbdf82871b8a2a0615f3d"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:7211ef110a9194b6042449431e08c4d80c0481e5891e58d429df5899690511c2"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:556de4430ce324c836789fa4560ca62d1591d2538b8ceb0b4f68fb7b2384a27a"}, - {file = "frozenlist-1.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7645a8e814a3ee34a89c4a372011dcd817964ce8cb273c8ed6119d706e9613e3"}, - {file = "frozenlist-1.4.0-cp39-cp39-win32.whl", hash = "sha256:19488c57c12d4e8095a922f328df3f179c820c212940a498623ed39160bc3c2f"}, - {file = "frozenlist-1.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:6221d84d463fb110bdd7619b69cb43878a11d51cbb9394ae3105d082d5199167"}, - {file = "frozenlist-1.4.0.tar.gz", hash = "sha256:09163bdf0b2907454042edb19f887c6d33806adc71fbd54afc14908bfdc22251"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9aa1878d1083b276b0196f2dfbe00c9b7e752475ed3b682025ff20c1c1f51ac"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:29acab3f66f0f24674b7dc4736477bcd4bc3ad4b896f5f45379a67bce8b96868"}, + {file = "frozenlist-1.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:74fb4bee6880b529a0c6560885fce4dc95936920f9f20f53d99a213f7bf66776"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:590344787a90ae57d62511dd7c736ed56b428f04cd8c161fcc5e7232c130c69a"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:068b63f23b17df8569b7fdca5517edef76171cf3897eb68beb01341131fbd2ad"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c849d495bf5154cd8da18a9eb15db127d4dba2968d88831aff6f0331ea9bd4c"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9750cc7fe1ae3b1611bb8cfc3f9ec11d532244235d75901fb6b8e42ce9229dfe"}, + {file = "frozenlist-1.4.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9b2de4cf0cdd5bd2dee4c4f63a653c61d2408055ab77b151c1957f221cabf2a"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:0633c8d5337cb5c77acbccc6357ac49a1770b8c487e5b3505c57b949b4b82e98"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:27657df69e8801be6c3638054e202a135c7f299267f1a55ed3a598934f6c0d75"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f9a3ea26252bd92f570600098783d1371354d89d5f6b7dfd87359d669f2109b5"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4f57dab5fe3407b6c0c1cc907ac98e8a189f9e418f3b6e54d65a718aaafe3950"}, + {file = "frozenlist-1.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e02a0e11cf6597299b9f3bbd3f93d79217cb90cfd1411aec33848b13f5c656cc"}, + {file = "frozenlist-1.4.1-cp310-cp310-win32.whl", hash = "sha256:a828c57f00f729620a442881cc60e57cfcec6842ba38e1b19fd3e47ac0ff8dc1"}, + {file = "frozenlist-1.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:f56e2333dda1fe0f909e7cc59f021eba0d2307bc6f012a1ccf2beca6ba362439"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a0cb6f11204443f27a1628b0e460f37fb30f624be6051d490fa7d7e26d4af3d0"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b46c8ae3a8f1f41a0d2ef350c0b6e65822d80772fe46b653ab6b6274f61d4a49"}, + {file = "frozenlist-1.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fde5bd59ab5357e3853313127f4d3565fc7dad314a74d7b5d43c22c6a5ed2ced"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:722e1124aec435320ae01ee3ac7bec11a5d47f25d0ed6328f2273d287bc3abb0"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2471c201b70d58a0f0c1f91261542a03d9a5e088ed3dc6c160d614c01649c106"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c757a9dd70d72b076d6f68efdbb9bc943665ae954dad2801b874c8c69e185068"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f146e0911cb2f1da549fc58fc7bcd2b836a44b79ef871980d605ec392ff6b0d2"}, + {file = "frozenlist-1.4.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9c515e7914626b2a2e1e311794b4c35720a0be87af52b79ff8e1429fc25f19"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c302220494f5c1ebeb0912ea782bcd5e2f8308037b3c7553fad0e48ebad6ad82"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:442acde1e068288a4ba7acfe05f5f343e19fac87bfc96d89eb886b0363e977ec"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:1b280e6507ea8a4fa0c0a7150b4e526a8d113989e28eaaef946cc77ffd7efc0a"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:fe1a06da377e3a1062ae5fe0926e12b84eceb8a50b350ddca72dc85015873f74"}, + {file = "frozenlist-1.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db9e724bebd621d9beca794f2a4ff1d26eed5965b004a97f1f1685a173b869c2"}, + {file = "frozenlist-1.4.1-cp311-cp311-win32.whl", hash = "sha256:e774d53b1a477a67838a904131c4b0eef6b3d8a651f8b138b04f748fccfefe17"}, + {file = "frozenlist-1.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:fb3c2db03683b5767dedb5769b8a40ebb47d6f7f45b1b3e3b4b51ec8ad9d9825"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1979bc0aeb89b33b588c51c54ab0161791149f2461ea7c7c946d95d5f93b56ae"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cc7b01b3754ea68a62bd77ce6020afaffb44a590c2289089289363472d13aedb"}, + {file = "frozenlist-1.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c9c92be9fd329ac801cc420e08452b70e7aeab94ea4233a4804f0915c14eba9b"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3894db91f5a489fc8fa6a9991820f368f0b3cbdb9cd8849547ccfab3392d86"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba60bb19387e13597fb059f32cd4d59445d7b18b69a745b8f8e5db0346f33480"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8aefbba5f69d42246543407ed2461db31006b0f76c4e32dfd6f42215a2c41d09"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:780d3a35680ced9ce682fbcf4cb9c2bad3136eeff760ab33707b71db84664e3a"}, + {file = "frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9acbb16f06fe7f52f441bb6f413ebae6c37baa6ef9edd49cdd567216da8600cd"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:23b701e65c7b36e4bf15546a89279bd4d8675faabc287d06bbcfac7d3c33e1e6"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:3e0153a805a98f5ada7e09826255ba99fb4f7524bb81bf6b47fb702666484ae1"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:dd9b1baec094d91bf36ec729445f7769d0d0cf6b64d04d86e45baf89e2b9059b"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:1a4471094e146b6790f61b98616ab8e44f72661879cc63fa1049d13ef711e71e"}, + {file = "frozenlist-1.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5667ed53d68d91920defdf4035d1cdaa3c3121dc0b113255124bcfada1cfa1b8"}, + {file = "frozenlist-1.4.1-cp312-cp312-win32.whl", hash = "sha256:beee944ae828747fd7cb216a70f120767fc9f4f00bacae8543c14a6831673f89"}, + {file = "frozenlist-1.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:64536573d0a2cb6e625cf309984e2d873979709f2cf22839bf2d61790b448ad5"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:20b51fa3f588ff2fe658663db52a41a4f7aa6c04f6201449c6c7c476bd255c0d"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:410478a0c562d1a5bcc2f7ea448359fcb050ed48b3c6f6f4f18c313a9bdb1826"}, + {file = "frozenlist-1.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c6321c9efe29975232da3bd0af0ad216800a47e93d763ce64f291917a381b8eb"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f6a4533887e189dae092f1cf981f2e3885175f7a0f33c91fb5b7b682b6bab6"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6eb73fa5426ea69ee0e012fb59cdc76a15b1283d6e32e4f8dc4482ec67d1194d"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fbeb989b5cc29e8daf7f976b421c220f1b8c731cbf22b9130d8815418ea45887"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:32453c1de775c889eb4e22f1197fe3bdfe457d16476ea407472b9442e6295f7a"}, + {file = "frozenlist-1.4.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:693945278a31f2086d9bf3df0fe8254bbeaef1fe71e1351c3bd730aa7d31c41b"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d0ce09d36d53bbbe566fe296965b23b961764c0bcf3ce2fa45f463745c04701"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:3a670dc61eb0d0eb7080890c13de3066790f9049b47b0de04007090807c776b0"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:dca69045298ce5c11fd539682cff879cc1e664c245d1c64da929813e54241d11"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a06339f38e9ed3a64e4c4e43aec7f59084033647f908e4259d279a52d3757d09"}, + {file = "frozenlist-1.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b7f2f9f912dca3934c1baec2e4585a674ef16fe00218d833856408c48d5beee7"}, + {file = "frozenlist-1.4.1-cp38-cp38-win32.whl", hash = "sha256:e7004be74cbb7d9f34553a5ce5fb08be14fb33bc86f332fb71cbe5216362a497"}, + {file = "frozenlist-1.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:5a7d70357e7cee13f470c7883a063aae5fe209a493c57d86eb7f5a6f910fae09"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfa4a17e17ce9abf47a74ae02f32d014c5e9404b6d9ac7f729e01562bbee601e"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b7e3ed87d4138356775346e6845cccbe66cd9e207f3cd11d2f0b9fd13681359d"}, + {file = "frozenlist-1.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c99169d4ff810155ca50b4da3b075cbde79752443117d89429595c2e8e37fed8"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edb678da49d9f72c9f6c609fbe41a5dfb9a9282f9e6a2253d5a91e0fc382d7c0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db4667b187a6742b33afbbaf05a7bc551ffcf1ced0000a571aedbb4aa42fc7b"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55fdc093b5a3cb41d420884cdaf37a1e74c3c37a31f46e66286d9145d2063bd0"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:82e8211d69a4f4bc360ea22cd6555f8e61a1bd211d1d5d39d3d228b48c83a897"}, + {file = "frozenlist-1.4.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89aa2c2eeb20957be2d950b85974b30a01a762f3308cd02bb15e1ad632e22dc7"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d3e0c25a2350080e9319724dede4f31f43a6c9779be48021a7f4ebde8b2d742"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7268252af60904bf52c26173cbadc3a071cece75f873705419c8681f24d3edea"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0c250a29735d4f15321007fb02865f0e6b6a41a6b88f1f523ca1596ab5f50bd5"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:96ec70beabbd3b10e8bfe52616a13561e58fe84c0101dd031dc78f250d5128b9"}, + {file = "frozenlist-1.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:23b2d7679b73fe0e5a4560b672a39f98dfc6f60df63823b0a9970525325b95f6"}, + {file = "frozenlist-1.4.1-cp39-cp39-win32.whl", hash = "sha256:a7496bfe1da7fb1a4e1cc23bb67c58fab69311cc7d32b5a99c2007b4b2a0e932"}, + {file = "frozenlist-1.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:e6a20a581f9ce92d389a8c7d7c3dd47c81fd5d6e655c8dddf341e14aa48659d0"}, + {file = "frozenlist-1.4.1-py3-none-any.whl", hash = "sha256:04ced3e6a46b4cfffe20f9ae482818e34eba9b5fb0ce4056e4cc9b6e212d09b7"}, + {file = "frozenlist-1.4.1.tar.gz", hash = "sha256:c037a86e8513059a2613aaba4d817bb90b9d9b6b69aace3ce9c877e8c8ed402b"}, ] [[package]] name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "main" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1079,7 +1067,6 @@ files = [ name = "git-python" version = "1.0.3" description = "combination and simplification of some useful git commands" -category = "main" optional = false python-versions = "*" files = [ @@ -1092,14 +1079,13 @@ gitpython = "*" [[package]] name = "gitdb" -version = "4.0.10" +version = "4.0.11" description = "Git Object Database" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "gitdb-4.0.10-py3-none-any.whl", hash = "sha256:c286cf298426064079ed96a9e4a9d39e7f3e9bf15ba60701e95f5492f28415c7"}, - {file = "gitdb-4.0.10.tar.gz", hash = "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a"}, + {file = "gitdb-4.0.11-py3-none-any.whl", hash = "sha256:81a3407ddd2ee8df444cbacea00e2d038e40150acfa3001696fe0dcf1d3adfa4"}, + {file = "gitdb-4.0.11.tar.gz", hash = "sha256:bf5421126136d6d0af55bc1e7c1af1c397a34f5b7bd79e776cd3e89785c2b04b"}, ] [package.dependencies] @@ -1107,36 +1093,92 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.33" +version = "3.1.42" description = "GitPython is a Python library used to interact with Git repositories" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.33-py3-none-any.whl", hash = "sha256:11f22466f982211ad8f3bdb456c03be8466c71d4da8774f3a9f68344e89559cb"}, - {file = "GitPython-3.1.33.tar.gz", hash = "sha256:13aaa3dff88a23afec2d00eb3da3f2e040e2282e41de484c5791669b31146084"}, + {file = "GitPython-3.1.42-py3-none-any.whl", hash = "sha256:1bf9cd7c9e7255f77778ea54359e54ac22a72a5b51288c457c881057b7bb9ecd"}, + {file = "GitPython-3.1.42.tar.gz", hash = "sha256:2d99869e0fef71a73cbd242528105af1d6c1b108c60dfabd994bf292f76c3ceb"}, ] [package.dependencies] gitdb = ">=4.0.1,<5" +[package.extras] +test = ["black", "coverage[toml]", "ddt (>=1.1.1,!=1.4.3)", "mock", "mypy", "pre-commit", "pytest (>=7.3.1)", "pytest-cov", "pytest-instafail", "pytest-mock", "pytest-sugar"] + +[[package]] +name = "h11" +version = "0.14.0" +description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" +optional = false +python-versions = ">=3.7" +files = [ + {file = "h11-0.14.0-py3-none-any.whl", hash = "sha256:e3fe4ac4b851c468cc8363d500db52c2ead036020723024a109d37346efaa761"}, + {file = "h11-0.14.0.tar.gz", hash = "sha256:8f19fbbe99e72420ff35c00b27a34cb9937e902a8b810e2c88300c6f0a3b699d"}, +] + +[[package]] +name = "httpcore" +version = "1.0.3" +description = "A minimal low-level HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpcore-1.0.3-py3-none-any.whl", hash = "sha256:9a6a501c3099307d9fd76ac244e08503427679b1e81ceb1d922485e2f2462ad2"}, + {file = "httpcore-1.0.3.tar.gz", hash = "sha256:5c0f9546ad17dac4d0772b0808856eb616eb8b48ce94f49ed819fd6982a8a544"}, +] + +[package.dependencies] +certifi = "*" +h11 = ">=0.13,<0.15" + +[package.extras] +asyncio = ["anyio (>=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.24.0)"] + +[[package]] +name = "httpx" +version = "0.26.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.26.0-py3-none-any.whl", hash = "sha256:8915f5a3627c4d47b73e8202457cb28f1266982d1159bd5779d86a80c0eab1cd"}, + {file = "httpx-0.26.0.tar.gz", hash = "sha256:451b55c30d5185ea6b23c2c793abf9bb237d2a7dfb901ced6ff69ad37ec1dfaf"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, - {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, + {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, + {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, ] [[package]] name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1146,14 +1188,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.25.1" +version = "6.29.2" description = "IPython Kernel for Jupyter" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.1-py3-none-any.whl", hash = "sha256:c8a2430b357073b37c76c21c52184db42f6b4b0e438e1eb7df3c4440d120497c"}, - {file = "ipykernel-6.25.1.tar.gz", hash = "sha256:050391364c0977e768e354bdb60cbbfbee7cbb943b1af1618382021136ffd42f"}, + {file = "ipykernel-6.29.2-py3-none-any.whl", hash = "sha256:50384f5c577a260a1d53f1f59a828c7266d321c9b7d00d345693783f66616055"}, + {file = "ipykernel-6.29.2.tar.gz", hash = "sha256:3bade28004e3ff624ed57974948116670604ac5f676d12339693f3142176d3f0"}, ] [package.dependencies] @@ -1162,12 +1203,12 @@ comm = ">=0.1.1" debugpy = ">=1.6.5" ipython = ">=7.23.1" jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" matplotlib-inline = ">=0.1" nest-asyncio = "*" packaging = "*" psutil = "*" -pyzmq = ">=20" +pyzmq = ">=24" tornado = ">=6.1" traitlets = ">=5.4.0" @@ -1176,13 +1217,12 @@ cov = ["coverage[toml]", "curio", "matplotlib", "pytest-cov", "trio"] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "trio"] pyqt5 = ["pyqt5"] pyside6 = ["pyside6"] -test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio", "pytest-cov", "pytest-timeout"] +test = ["flaky", "ipyparallel", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (==0.23.4)", "pytest-cov", "pytest-timeout"] [[package]] name = "ipynb" version = "0.5.1" description = "Package / Module importer for importing code from Jupyter Notebook files (.ipynb)" -category = "main" optional = false python-versions = ">=3.4" files = [ @@ -1192,73 +1232,57 @@ files = [ [[package]] name = "ipython" -version = "8.14.0" +version = "8.18.1" description = "IPython: Productive Interactive Computing" -category = "main" optional = false python-versions = ">=3.9" files = [ - {file = "ipython-8.14.0-py3-none-any.whl", hash = "sha256:248aca623f5c99a6635bc3857677b7320b9b8039f99f070ee0d20a5ca5a8e6bf"}, - {file = "ipython-8.14.0.tar.gz", hash = "sha256:1d197b907b6ba441b692c48cf2a3a2de280dc0ac91a3405b39349a50272ca0a1"}, + {file = "ipython-8.18.1-py3-none-any.whl", hash = "sha256:e8267419d72d81955ec1177f8a29aaa90ac80ad647499201119e2f05e99aa397"}, + {file = "ipython-8.18.1.tar.gz", hash = "sha256:ca6f079bb33457c66e233e4580ebfc4128855b4cf6370dddd73842a9563e8a27"}, ] [package.dependencies] -appnope = {version = "*", markers = "sys_platform == \"darwin\""} -backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} -pickleshare = "*" -prompt-toolkit = ">=3.0.30,<3.0.37 || >3.0.37,<3.1.0" +prompt-toolkit = ">=3.0.41,<3.1.0" pygments = ">=2.4.0" stack-data = "*" traitlets = ">=5" [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pickleshare", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio (<0.22)", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] notebook = ["ipywidgets", "notebook"] parallel = ["ipyparallel"] qtconsole = ["qtconsole"] -test = ["pytest (<7.1)", "pytest-asyncio", "testpath"] -test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.21)", "pandas", "pytest (<7.1)", "pytest-asyncio", "testpath", "trio"] - -[[package]] -name = "ipython-genutils" -version = "0.2.0" -description = "Vestigial utilities from IPython" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "ipython_genutils-0.2.0-py2.py3-none-any.whl", hash = "sha256:72dd37233799e619666c9f639a9da83c34013a73e8bbc79a7a6348d93c61fab8"}, - {file = "ipython_genutils-0.2.0.tar.gz", hash = "sha256:eb2e116e75ecef9d4d228fdc66af54269afa26ab4463042e33785b887c628ba8"}, -] +test = ["pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath"] +test-extra = ["curio", "matplotlib (!=3.2.0)", "nbformat", "numpy (>=1.22)", "pandas", "pickleshare", "pytest (<7.1)", "pytest-asyncio (<0.22)", "testpath", "trio"] [[package]] name = "ipywidgets" -version = "8.1.0" +version = "8.1.2" description = "Jupyter interactive widgets" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "ipywidgets-8.1.0-py3-none-any.whl", hash = "sha256:6c8396cc7b8c95dfb4e9ab0054f48c002f045e7e5d7ae523f559d64e525a98ab"}, - {file = "ipywidgets-8.1.0.tar.gz", hash = "sha256:ce97dd90525b3066fd00094690964e7eac14cf9b7745d35565b5eeac20cce687"}, + {file = "ipywidgets-8.1.2-py3-none-any.whl", hash = "sha256:bbe43850d79fb5e906b14801d6c01402857996864d1e5b6fa62dd2ee35559f60"}, + {file = "ipywidgets-8.1.2.tar.gz", hash = "sha256:d0b9b41e49bae926a866e613a39b0f0097745d2b9f1f3dd406641b4a57ec42c9"}, ] [package.dependencies] comm = ">=0.1.3" ipython = ">=6.1.0" -jupyterlab-widgets = ">=3.0.7,<3.1.0" +jupyterlab-widgets = ">=3.0.10,<3.1.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=4.0.7,<4.1.0" +widgetsnbextension = ">=4.0.10,<4.1.0" [package.extras] test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] @@ -1267,7 +1291,6 @@ test = ["ipykernel", "jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] name = "isoduration" version = "20.11.0" description = "Operations with ISO 8601 durations" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1280,14 +1303,13 @@ arrow = ">=0.15.0" [[package]] name = "jedi" -version = "0.19.0" +version = "0.19.1" description = "An autocompletion tool for Python that can be used for text editors." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "jedi-0.19.0-py2.py3-none-any.whl", hash = "sha256:cb8ce23fbccff0025e9386b5cf85e892f94c9b822378f8da49970471335ac64e"}, - {file = "jedi-0.19.0.tar.gz", hash = "sha256:bcf9894f1753969cbac8022a8c2eaee06bfa3724e4192470aaffe7eb6272b0c4"}, + {file = "jedi-0.19.1-py2.py3-none-any.whl", hash = "sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0"}, + {file = "jedi-0.19.1.tar.gz", hash = "sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd"}, ] [package.dependencies] @@ -1296,18 +1318,17 @@ parso = ">=0.8.3,<0.9.0" [package.extras] docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] qa = ["flake8 (==5.0.4)", "mypy (==0.971)", "types-setuptools (==67.2.0.1)"] -testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] +testing = ["Django", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] [[package]] name = "jinja2" -version = "3.1.2" +version = "3.1.3" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, - {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, + {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, + {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, ] [package.dependencies] @@ -1320,7 +1341,6 @@ i18n = ["Babel (>=2.7)"] name = "joblib" version = "1.3.2" description = "Lightweight pipelining with Python functions" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1332,7 +1352,6 @@ files = [ name = "json5" version = "0.9.14" description = "A Python implementation of the JSON5 data format." -category = "main" optional = false python-versions = "*" files = [ @@ -1347,7 +1366,6 @@ dev = ["hypothesis"] name = "jsonpointer" version = "2.4" description = "Identify specific nodes in a JSON document (RFC 6901)" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, !=3.6.*" files = [ @@ -1357,14 +1375,13 @@ files = [ [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.21.1" description = "An implementation of JSON Schema validation for Python" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.21.1-py3-none-any.whl", hash = "sha256:7996507afae316306f9e2290407761157c6f78002dcf7419acb99822143d1c6f"}, + {file = "jsonschema-4.21.1.tar.gz", hash = "sha256:85727c00279f5fa6bedbe6238d2aa6403bedd8b4864ab11207d07df3cc1b2ee5"}, ] [package.dependencies] @@ -1387,24 +1404,22 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- [[package]] name = "jsonschema-specifications" -version = "2023.7.1" +version = "2023.12.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema_specifications-2023.7.1-py3-none-any.whl", hash = "sha256:05adf340b659828a004220a9613be00fa3f223f2b82002e273dee62fd50524b1"}, - {file = "jsonschema_specifications-2023.7.1.tar.gz", hash = "sha256:c91a50404e88a1f6ba40636778e2ee08f6e24c5613fe4c53ac24578a5a7f72bb"}, + {file = "jsonschema_specifications-2023.12.1-py3-none-any.whl", hash = "sha256:87e4fdf3a94858b8a2ba2778d9ba57d8a9cafca7c7489c46ba0d30a8bc6a9c3c"}, + {file = "jsonschema_specifications-2023.12.1.tar.gz", hash = "sha256:48a76787b3e70f5ed53f1160d2b81f586e4ca6d1548c5de7085d1682674764cc"}, ] [package.dependencies] -referencing = ">=0.28.0" +referencing = ">=0.31.0" [[package]] name = "jupyter" version = "1.0.0" description = "Jupyter metapackage. Install all the Jupyter components in one go." -category = "main" optional = false python-versions = "*" files = [ @@ -1423,18 +1438,17 @@ qtconsole = "*" [[package]] name = "jupyter-client" -version = "8.3.1" +version = "8.6.0" description = "Jupyter protocol implementation and client libraries" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_client-8.3.1-py3-none-any.whl", hash = "sha256:5eb9f55eb0650e81de6b7e34308d8b92d04fe4ec41cd8193a913979e33d8e1a5"}, - {file = "jupyter_client-8.3.1.tar.gz", hash = "sha256:60294b2d5b869356c893f57b1a877ea6510d60d45cf4b38057f1672d85699ac9"}, + {file = "jupyter_client-8.6.0-py3-none-any.whl", hash = "sha256:909c474dbe62582ae62b758bca86d6518c85234bdee2d908c778db6d72f39d99"}, + {file = "jupyter_client-8.6.0.tar.gz", hash = "sha256:0642244bb83b4764ae60d07e010e15f0e2d275ec4e918a8f7b80fbbef3ca60c7"}, ] [package.dependencies] -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" @@ -1448,7 +1462,6 @@ test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pyt name = "jupyter-console" version = "6.6.3" description = "Jupyter terminal console" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1460,7 +1473,7 @@ files = [ ipykernel = ">=6.14" ipython = "*" jupyter-client = ">=7.0.0" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" prompt-toolkit = ">=3.0.30" pygments = "*" pyzmq = ">=17" @@ -1471,14 +1484,13 @@ test = ["flaky", "pexpect", "pytest"] [[package]] name = "jupyter-core" -version = "5.3.1" +version = "5.7.1" description = "Jupyter core package. A base package on which Jupyter projects rely." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_core-5.3.1-py3-none-any.whl", hash = "sha256:ae9036db959a71ec1cac33081eeb040a79e681f08ab68b0883e9a676c7a90dce"}, - {file = "jupyter_core-5.3.1.tar.gz", hash = "sha256:5ba5c7938a7f97a6b0481463f7ff0dbac7c15ba48cf46fa4035ca6e838aa1aba"}, + {file = "jupyter_core-5.7.1-py3-none-any.whl", hash = "sha256:c65c82126453a723a2804aa52409930434598fd9d35091d63dfb919d2b765bb7"}, + {file = "jupyter_core-5.7.1.tar.gz", hash = "sha256:de61a9d7fc71240f688b2fb5ab659fbb56979458dc66a71decd098e03c79e218"}, ] [package.dependencies] @@ -1487,19 +1499,18 @@ pywin32 = {version = ">=300", markers = "sys_platform == \"win32\" and platform_ traitlets = ">=5.3" [package.extras] -docs = ["myst-parser", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] +docs = ["myst-parser", "pydata-sphinx-theme", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling", "traitlets"] test = ["ipykernel", "pre-commit", "pytest", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-events" -version = "0.7.0" +version = "0.9.0" description = "Jupyter Event System library" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_events-0.7.0-py3-none-any.whl", hash = "sha256:4753da434c13a37c3f3c89b500afa0c0a6241633441421f6adafe2fb2e2b924e"}, - {file = "jupyter_events-0.7.0.tar.gz", hash = "sha256:7be27f54b8388c03eefea123a4f79247c5b9381c49fb1cd48615ee191eb12615"}, + {file = "jupyter_events-0.9.0-py3-none-any.whl", hash = "sha256:d853b3c10273ff9bc8bb8b30076d65e2c9685579db736873de6c2232dde148bf"}, + {file = "jupyter_events-0.9.0.tar.gz", hash = "sha256:81ad2e4bc710881ec274d31c6c50669d71bbaa5dd9d01e600b56faa85700d399"}, ] [package.dependencies] @@ -1518,14 +1529,13 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p [[package]] name = "jupyter-lsp" -version = "2.2.0" +version = "2.2.2" description = "Multi-Language Server WebSocket proxy for Jupyter Notebook/Lab server" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter-lsp-2.2.0.tar.gz", hash = "sha256:8ebbcb533adb41e5d635eb8fe82956b0aafbf0fd443b6c4bfa906edeeb8635a1"}, - {file = "jupyter_lsp-2.2.0-py3-none-any.whl", hash = "sha256:9e06b8b4f7dd50300b70dd1a78c0c3b0c3d8fa68e0f2d8a5d1fbab62072aca3f"}, + {file = "jupyter-lsp-2.2.2.tar.gz", hash = "sha256:256d24620542ae4bba04a50fc1f6ffe208093a07d8e697fea0a8d1b8ca1b7e5b"}, + {file = "jupyter_lsp-2.2.2-py3-none-any.whl", hash = "sha256:3b95229e4168355a8c91928057c1621ac3510ba98b2a925e82ebd77f078b1aa5"}, ] [package.dependencies] @@ -1533,14 +1543,13 @@ jupyter-server = ">=1.1.2" [[package]] name = "jupyter-server" -version = "2.7.3" +version = "2.12.5" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.7.3-py3-none-any.whl", hash = "sha256:8e4b90380b59d7a1e31086c4692231f2a2ea4cb269f5516e60aba72ce8317fc9"}, - {file = "jupyter_server-2.7.3.tar.gz", hash = "sha256:d4916c8581c4ebbc534cebdaa8eca2478d9f3bfdd88eae29fcab0120eac57649"}, + {file = "jupyter_server-2.12.5-py3-none-any.whl", hash = "sha256:184a0f82809a8522777cfb6b760ab6f4b1bb398664c5860a27cec696cb884923"}, + {file = "jupyter_server-2.12.5.tar.gz", hash = "sha256:0edb626c94baa22809be1323f9770cf1c00a952b17097592e40d03e6a3951689"}, ] [package.dependencies] @@ -1548,8 +1557,8 @@ anyio = ">=3.1.0" argon2-cffi = "*" jinja2 = "*" jupyter-client = ">=7.4.4" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" -jupyter-events = ">=0.6.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" +jupyter-events = ">=0.9.0" jupyter-server-terminals = "*" nbconvert = ">=6.4.4" nbformat = ">=5.3.0" @@ -1570,14 +1579,13 @@ test = ["flaky", "ipykernel", "pre-commit", "pytest (>=7.0)", "pytest-console-sc [[package]] name = "jupyter-server-terminals" -version = "0.4.4" +version = "0.5.2" description = "A Jupyter Server Extension Providing Terminals." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server_terminals-0.4.4-py3-none-any.whl", hash = "sha256:75779164661cec02a8758a5311e18bb8eb70c4e86c6b699403100f1585a12a36"}, - {file = "jupyter_server_terminals-0.4.4.tar.gz", hash = "sha256:57ab779797c25a7ba68e97bcfb5d7740f2b5e8a83b5e8102b10438041a7eac5d"}, + {file = "jupyter_server_terminals-0.5.2-py3-none-any.whl", hash = "sha256:1b80c12765da979513c42c90215481bbc39bd8ae7c0350b4f85bc3eb58d0fa80"}, + {file = "jupyter_server_terminals-0.5.2.tar.gz", hash = "sha256:396b5ccc0881e550bf0ee7012c6ef1b53edbde69e67cab1d56e89711b46052e8"}, ] [package.dependencies] @@ -1585,23 +1593,23 @@ pywinpty = {version = ">=2.0.3", markers = "os_name == \"nt\""} terminado = ">=0.8.3" [package.extras] -docs = ["jinja2", "jupyter-server", "mistune (<3.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] -test = ["coverage", "jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-cov", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] +docs = ["jinja2", "jupyter-server", "mistune (<4.0)", "myst-parser", "nbformat", "packaging", "pydata-sphinx-theme", "sphinxcontrib-github-alt", "sphinxcontrib-openapi", "sphinxcontrib-spelling", "sphinxemoji", "tornado"] +test = ["jupyter-server (>=2.0.0)", "pytest (>=7.0)", "pytest-jupyter[server] (>=0.5.3)", "pytest-timeout"] [[package]] name = "jupyterlab" -version = "4.0.5" +version = "4.1.1" description = "JupyterLab computational environment" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "jupyterlab-4.0.5-py3-none-any.whl", hash = "sha256:13b3a326e7b95d72746fe20dbe80ee1e71165d6905e01ceaf1320eb809cb1b47"}, - {file = "jupyterlab-4.0.5.tar.gz", hash = "sha256:de49deb75f9b9aec478ed04754cbefe9c5d22fd796a5783cdc65e212983d3611"}, + {file = "jupyterlab-4.1.1-py3-none-any.whl", hash = "sha256:fa3e8c18b804eac04e51ceebd9dd3dd396e08106816f0d09cc426799d7087632"}, + {file = "jupyterlab-4.1.1.tar.gz", hash = "sha256:8acc9f561729d8f32c14c294c397917cddfeeb13a5d46f811979b71b4911a9fd"}, ] [package.dependencies] async-lru = ">=1.0.0" +httpx = ">=0.25.0" ipykernel = "*" jinja2 = ">=3.0.3" jupyter-core = "*" @@ -1615,66 +1623,62 @@ tornado = ">=6.2.0" traitlets = "*" [package.extras] -dev = ["black[jupyter] (==23.3.0)", "build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.0.271)"] -docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-tornasync", "sphinx (>=1.8)", "sphinx-copybutton"] -docs-screenshots = ["altair (==5.0.1)", "ipython (==8.14.0)", "ipywidgets (==8.0.6)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post0)", "matplotlib (==3.7.1)", "nbconvert (>=7.0.0)", "pandas (==2.0.2)", "scipy (==1.10.1)", "vega-datasets (==0.9.0)"] +dev = ["build", "bump2version", "coverage", "hatch", "pre-commit", "pytest-cov", "ruff (==0.2.0)"] +docs = ["jsx-lexer", "myst-parser", "pydata-sphinx-theme (>=0.13.0)", "pytest", "pytest-check-links", "pytest-jupyter", "sphinx (>=1.8,<7.3.0)", "sphinx-copybutton"] +docs-screenshots = ["altair (==5.2.0)", "ipython (==8.16.1)", "ipywidgets (==8.1.1)", "jupyterlab-geojson (==3.4.0)", "jupyterlab-language-pack-zh-cn (==4.0.post6)", "matplotlib (==3.8.2)", "nbconvert (>=7.0.0)", "pandas (==2.2.0)", "scipy (==1.12.0)", "vega-datasets (==0.9.0)"] test = ["coverage", "pytest (>=7.0)", "pytest-check-links (>=0.7)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter (>=0.5.3)", "pytest-timeout", "pytest-tornasync", "requests", "requests-cache", "virtualenv"] [[package]] name = "jupyterlab-pygments" -version = "0.2.2" +version = "0.3.0" description = "Pygments theme using JupyterLab CSS variables" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_pygments-0.2.2-py2.py3-none-any.whl", hash = "sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f"}, - {file = "jupyterlab_pygments-0.2.2.tar.gz", hash = "sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d"}, + {file = "jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780"}, + {file = "jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d"}, ] [[package]] name = "jupyterlab-server" -version = "2.24.0" +version = "2.25.3" description = "A set of server components for JupyterLab and JupyterLab like applications." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyterlab_server-2.24.0-py3-none-any.whl", hash = "sha256:5f077e142bb8dc9b843d960f940c513581bceca3793a0d80f9c67d9522c4e876"}, - {file = "jupyterlab_server-2.24.0.tar.gz", hash = "sha256:4e6f99e0a5579bbbc32e449c4dbb039561d4f1a7827d5733273ed56738f21f07"}, + {file = "jupyterlab_server-2.25.3-py3-none-any.whl", hash = "sha256:c48862519fded9b418c71645d85a49b2f0ec50d032ba8316738e9276046088c1"}, + {file = "jupyterlab_server-2.25.3.tar.gz", hash = "sha256:846f125a8a19656611df5b03e5912c8393cea6900859baa64fa515eb64a8dc40"}, ] [package.dependencies] babel = ">=2.10" jinja2 = ">=3.0.3" json5 = ">=0.9.0" -jsonschema = ">=4.17.3" +jsonschema = ">=4.18.0" jupyter-server = ">=1.21,<3" packaging = ">=21.3" -requests = ">=2.28" +requests = ">=2.31" [package.extras] docs = ["autodoc-traits", "jinja2 (<3.2.0)", "mistune (<4)", "myst-parser", "pydata-sphinx-theme", "sphinx", "sphinx-copybutton", "sphinxcontrib-openapi (>0.8)"] -openapi = ["openapi-core (>=0.16.1,<0.17.0)", "ruamel-yaml"] -test = ["hatch", "ipykernel", "jupyterlab-server[openapi]", "openapi-spec-validator (>=0.5.1,<0.7.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] +openapi = ["openapi-core (>=0.18.0,<0.19.0)", "ruamel-yaml"] +test = ["hatch", "ipykernel", "openapi-core (>=0.18.0,<0.19.0)", "openapi-spec-validator (>=0.6.0,<0.8.0)", "pytest (>=7.0)", "pytest-console-scripts", "pytest-cov", "pytest-jupyter[server] (>=0.6.2)", "pytest-timeout", "requests-mock", "ruamel-yaml", "sphinxcontrib-spelling", "strict-rfc3339", "werkzeug"] [[package]] name = "jupyterlab-widgets" -version = "3.0.8" +version = "3.0.10" description = "Jupyter interactive widgets for JupyterLab" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "jupyterlab_widgets-3.0.8-py3-none-any.whl", hash = "sha256:4715912d6ceab839c9db35953c764b3214ebbc9161c809f6e0510168845dfdf5"}, - {file = "jupyterlab_widgets-3.0.8.tar.gz", hash = "sha256:d428ab97b8d87cc7c54cbf37644d6e0f0e662f23876e05fa460a73ec3257252a"}, + {file = "jupyterlab_widgets-3.0.10-py3-none-any.whl", hash = "sha256:dd61f3ae7a5a7f80299e14585ce6cf3d6925a96c9103c978eda293197730cb64"}, + {file = "jupyterlab_widgets-3.0.10.tar.gz", hash = "sha256:04f2ac04976727e4f9d0fa91cdc2f1ab860f965e504c29dbd6a65c882c9d04c0"}, ] [[package]] name = "kiwisolver" version = "1.4.5" description = "A fast implementation of the Cassowary constraint solver" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1788,7 +1792,6 @@ files = [ name = "librosa" version = "0.9.2" description = "Python module for audio and music processing" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1811,14 +1814,13 @@ soundfile = ">=0.10.2" [package.extras] display = ["matplotlib (>=3.3.0)"] -docs = ["ipython (>=7.0)", "matplotlib (>=3.3.0)", "mir-eval (>=0.5)", "numba (<0.50)", "numpydoc", "presets", "sphinx (!=1.3.1)", "sphinx-gallery (>=0.7)", "sphinx-multiversion (>=0.2.3)", "sphinx-rtd-theme (>=1.0.0,<2.0.0)", "sphinxcontrib-svg2pdfconverter"] +docs = ["ipython (>=7.0)", "matplotlib (>=3.3.0)", "mir-eval (>=0.5)", "numba (<0.50)", "numpydoc", "presets", "sphinx (!=1.3.1)", "sphinx-gallery (>=0.7)", "sphinx-multiversion (>=0.2.3)", "sphinx-rtd-theme (==1.*)", "sphinxcontrib-svg2pdfconverter"] tests = ["contextlib2", "matplotlib (>=3.3.0)", "pytest", "pytest-cov", "pytest-mpl", "samplerate", "soxr"] [[package]] name = "llvmlite" version = "0.39.1" description = "lightweight wrapper around basic LLVM functionality" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1854,14 +1856,13 @@ files = [ [[package]] name = "mako" -version = "1.2.4" +version = "1.3.2" description = "A super-fast templating language that borrows the best ideas from the existing templating languages." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Mako-1.2.4-py3-none-any.whl", hash = "sha256:c97c79c018b9165ac9922ae4f32da095ffd3c4e6872b45eded42926deea46818"}, - {file = "Mako-1.2.4.tar.gz", hash = "sha256:d60a3903dc3bb01a18ad6a89cdbe2e4eadc69c0bc8ef1e3773ba53d44c3f7a34"}, + {file = "Mako-1.3.2-py3-none-any.whl", hash = "sha256:32a99d70754dfce237019d17ffe4a282d2d3351b9c476e90d8a60e63f133b80c"}, + {file = "Mako-1.3.2.tar.gz", hash = "sha256:2a0c8ad7f6274271b3bb7467dd37cf9cc6dab4bc19cb69a4ef10669402de698e"}, ] [package.dependencies] @@ -1874,131 +1875,125 @@ testing = ["pytest"] [[package]] name = "markupsafe" -version = "2.1.3" +version = "2.1.5" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cd0f502fe016460680cd20aaa5a76d241d6f35a1c3350c474bac1273803893fa"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e09031c87a1e51556fdcb46e5bd4f59dfb743061cf93c4d6831bf894f125eb57"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68e78619a61ecf91e76aa3e6e8e33fc4894a2bebe93410754bd28fce0a8a4f9f"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:65c1a9bcdadc6c28eecee2c119465aebff8f7a584dd719facdd9e825ec61ab52"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:525808b8019e36eb524b8c68acdd63a37e75714eac50e988180b169d64480a00"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:962f82a3086483f5e5f64dbad880d31038b698494799b097bc59c2edf392fce6"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:aa7bd130efab1c280bed0f45501b7c8795f9fdbeb02e965371bbef3523627779"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c9c804664ebe8f83a211cace637506669e7890fec1b4195b505c214e50dd4eb7"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win32.whl", hash = "sha256:10bbfe99883db80bdbaff2dcf681dfc6533a614f700da1287707e8a5d78a8431"}, - {file = "MarkupSafe-2.1.3-cp310-cp310-win_amd64.whl", hash = "sha256:1577735524cdad32f9f694208aa75e422adba74f1baee7551620e43a3141f559"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ad9e82fb8f09ade1c3e1b996a6337afac2b8b9e365f926f5a61aacc71adc5b3c"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c0fae6c3be832a0a0473ac912810b2877c8cb9d76ca48de1ed31e1c68386575"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b076b6226fb84157e3f7c971a47ff3a679d837cf338547532ab866c57930dbee"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfce63a9e7834b12b87c64d6b155fdd9b3b96191b6bd334bf37db7ff1fe457f2"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:338ae27d6b8745585f87218a3f23f1512dbf52c26c28e322dbe54bcede54ccb9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e4dd52d80b8c83fdce44e12478ad2e85c64ea965e75d66dbeafb0a3e77308fcc"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:df0be2b576a7abbf737b1575f048c23fb1d769f267ec4358296f31c2479db8f9"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5bbe06f8eeafd38e5d0a4894ffec89378b6c6a625ff57e3028921f8ff59318ac"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win32.whl", hash = "sha256:dd15ff04ffd7e05ffcb7fe79f1b98041b8ea30ae9234aed2a9168b5797c3effb"}, - {file = "MarkupSafe-2.1.3-cp311-cp311-win_amd64.whl", hash = "sha256:134da1eca9ec0ae528110ccc9e48041e0828d79f24121a1a146161103c76e686"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8e254ae696c88d98da6555f5ace2279cf7cd5b3f52be2b5cf97feafe883b58d2"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb0932dc158471523c9637e807d9bfb93e06a95cbf010f1a38b98623b929ef2b"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9402b03f1a1b4dc4c19845e5c749e3ab82d5078d16a2a4c2cd2df62d57bb0707"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca379055a47383d02a5400cb0d110cef0a776fc644cda797db0c5696cfd7e18e"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b7ff0f54cb4ff66dd38bebd335a38e2c22c41a8ee45aa608efc890ac3e3931bc"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:c011a4149cfbcf9f03994ec2edffcb8b1dc2d2aede7ca243746df97a5d41ce48"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:56d9f2ecac662ca1611d183feb03a3fa4406469dafe241673d521dd5ae92a155"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win32.whl", hash = "sha256:8758846a7e80910096950b67071243da3e5a20ed2546e6392603c096778d48e0"}, - {file = "MarkupSafe-2.1.3-cp37-cp37m-win_amd64.whl", hash = "sha256:787003c0ddb00500e49a10f2844fac87aa6ce977b90b0feaaf9de23c22508b24"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:2ef12179d3a291be237280175b542c07a36e7f60718296278d8593d21ca937d4"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2c1b19b3aaacc6e57b7e25710ff571c24d6c3613a45e905b1fde04d691b98ee0"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8afafd99945ead6e075b973fefa56379c5b5c53fd8937dad92c662da5d8fd5ee"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c41976a29d078bb235fea9b2ecd3da465df42a562910f9022f1a03107bd02be"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d080e0a5eb2529460b30190fcfcc4199bd7f827663f858a226a81bc27beaa97e"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69c0f17e9f5a7afdf2cc9fb2d1ce6aabdb3bafb7f38017c0b77862bcec2bbad8"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:504b320cd4b7eff6f968eddf81127112db685e81f7e36e75f9f84f0df46041c3"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42de32b22b6b804f42c5d98be4f7e5e977ecdd9ee9b660fda1a3edf03b11792d"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win32.whl", hash = "sha256:ceb01949af7121f9fc39f7d27f91be8546f3fb112c608bc4029aef0bab86a2a5"}, - {file = "MarkupSafe-2.1.3-cp38-cp38-win_amd64.whl", hash = "sha256:1b40069d487e7edb2676d3fbdb2b0829ffa2cd63a2ec26c4938b2d34391b4ecc"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8023faf4e01efadfa183e863fefde0046de576c6f14659e8782065bcece22198"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6b2b56950d93e41f33b4223ead100ea0fe11f8e6ee5f641eb753ce4b77a7042b"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dcdfd0eaf283af041973bff14a2e143b8bd64e069f4c383416ecd79a81aab58"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:05fb21170423db021895e1ea1e1f3ab3adb85d1c2333cbc2310f2a26bc77272e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:282c2cb35b5b673bbcadb33a585408104df04f14b2d9b01d4c345a3b92861c2c"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ab4a0df41e7c16a1392727727e7998a467472d0ad65f3ad5e6e765015df08636"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7ef3cb2ebbf91e330e3bb937efada0edd9003683db6b57bb108c4001f37a02ea"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0a4e4a1aff6c7ac4cd55792abf96c915634c2b97e3cc1c7129578aa68ebd754e"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win32.whl", hash = "sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2"}, - {file = "MarkupSafe-2.1.3-cp39-cp39-win_amd64.whl", hash = "sha256:3fd4abcb888d15a94f32b75d8fd18ee162ca0c064f35b11134be77050296d6ba"}, - {file = "MarkupSafe-2.1.3.tar.gz", hash = "sha256:af598ed32d6ae86f1b747b82783958b1a4ab8f617b06fe68795c7f026abbdcad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a17a92de5231666cfbe003f0e4b9b3a7ae3afb1ec2845aadc2bacc93ff85febc"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:72b6be590cc35924b02c78ef34b467da4ba07e4e0f0454a2c5907f473fc50ce5"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e61659ba32cf2cf1481e575d0462554625196a1f2fc06a1c777d3f48e8865d46"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2174c595a0d73a3080ca3257b40096db99799265e1c27cc5a610743acd86d62f"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae2ad8ae6ebee9d2d94b17fb62763125f3f374c25618198f40cbb8b525411900"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:075202fa5b72c86ad32dc7d0b56024ebdbcf2048c0ba09f1cde31bfdd57bcfff"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:598e3276b64aff0e7b3451b72e94fa3c238d452e7ddcd893c3ab324717456bad"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fce659a462a1be54d2ffcacea5e3ba2d74daa74f30f5f143fe0c58636e355fdd"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win32.whl", hash = "sha256:d9fad5155d72433c921b782e58892377c44bd6252b5af2f67f16b194987338a4"}, + {file = "MarkupSafe-2.1.5-cp310-cp310-win_amd64.whl", hash = "sha256:bf50cd79a75d181c9181df03572cdce0fbb75cc353bc350712073108cba98de5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:629ddd2ca402ae6dbedfceeba9c46d5f7b2a61d9749597d4307f943ef198fc1f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:5b7b716f97b52c5a14bffdf688f971b2d5ef4029127f1ad7a513973cfd818df2"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ec585f69cec0aa07d945b20805be741395e28ac1627333b1c5b0105962ffced"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b91c037585eba9095565a3556f611e3cbfaa42ca1e865f7b8015fe5c7336d5a5"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7502934a33b54030eaf1194c21c692a534196063db72176b0c4028e140f8f32c"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0e397ac966fdf721b2c528cf028494e86172b4feba51d65f81ffd65c63798f3f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:c061bb86a71b42465156a3ee7bd58c8c2ceacdbeb95d05a99893e08b8467359a"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3a57fdd7ce31c7ff06cdfbf31dafa96cc533c21e443d57f5b1ecc6cdc668ec7f"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win32.whl", hash = "sha256:397081c1a0bfb5124355710fe79478cdbeb39626492b15d399526ae53422b906"}, + {file = "MarkupSafe-2.1.5-cp311-cp311-win_amd64.whl", hash = "sha256:2b7c57a4dfc4f16f7142221afe5ba4e093e09e728ca65c51f5620c9aaeb9a617"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:8dec4936e9c3100156f8a2dc89c4b88d5c435175ff03413b443469c7c8c5f4d1"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:3c6b973f22eb18a789b1460b4b91bf04ae3f0c4234a0a6aa6b0a92f6f7b951d4"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f5dfb42c4604dddc8e4305050aa6deb084540643ed5804d7455b5df8fe16f5e5"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ea3d8a3d18833cf4304cd2fc9cbb1efe188ca9b5efef2bdac7adc20594a0e46b"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d050b3361367a06d752db6ead6e7edeb0009be66bc3bae0ee9d97fb326badc2a"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bec0a414d016ac1a18862a519e54b2fd0fc8bbfd6890376898a6c0891dd82e9f"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:58c98fee265677f63a4385256a6d7683ab1832f3ddd1e66fe948d5880c21a169"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win32.whl", hash = "sha256:8590b4ae07a35970728874632fed7bd57b26b0102df2d2b233b6d9d82f6c62ad"}, + {file = "MarkupSafe-2.1.5-cp312-cp312-win_amd64.whl", hash = "sha256:823b65d8706e32ad2df51ed89496147a42a2a6e01c13cfb6ffb8b1e92bc910bb"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c8b29db45f8fe46ad280a7294f5c3ec36dbac9491f2d1c17345be8e69cc5928f"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec6a563cff360b50eed26f13adc43e61bc0c04d94b8be985e6fb24b81f6dcfdf"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a549b9c31bec33820e885335b451286e2969a2d9e24879f83fe904a5ce59d70a"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f11aa001c540f62c6166c7726f71f7573b52c68c31f014c25cc7901deea0b52"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7b2e5a267c855eea6b4283940daa6e88a285f5f2a67f2220203786dfa59b37e9"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d2d793e36e230fd32babe143b04cec8a8b3eb8a3122d2aceb4a371e6b09b8df"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ce409136744f6521e39fd8e2a24c53fa18ad67aa5bc7c2cf83645cce5b5c4e50"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win32.whl", hash = "sha256:4096e9de5c6fdf43fb4f04c26fb114f61ef0bf2e5604b6ee3019d51b69e8c371"}, + {file = "MarkupSafe-2.1.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4275d846e41ecefa46e2015117a9f491e57a71ddd59bbead77e904dc02b1bed2"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:656f7526c69fac7f600bd1f400991cc282b417d17539a1b228617081106feb4a"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:97cafb1f3cbcd3fd2b6fbfb99ae11cdb14deea0736fc2b0952ee177f2b813a46"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f3fbcb7ef1f16e48246f704ab79d79da8a46891e2da03f8783a5b6fa41a9532"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9db3f79de01457b03d4f01b34cf91bc0048eb2c3846ff26f66687c2f6d16ab"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffee1f21e5ef0d712f9033568f8344d5da8cc2869dbd08d87c84656e6a2d2f68"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5dedb4db619ba5a2787a94d877bc8ffc0566f92a01c0ef214865e54ecc9ee5e0"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:30b600cf0a7ac9234b2638fbc0fb6158ba5bdcdf46aeb631ead21248b9affbc4"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8dd717634f5a044f860435c1d8c16a270ddf0ef8588d4887037c5028b859b0c3"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win32.whl", hash = "sha256:daa4ee5a243f0f20d528d939d06670a298dd39b1ad5f8a72a4275124a7819eff"}, + {file = "MarkupSafe-2.1.5-cp38-cp38-win_amd64.whl", hash = "sha256:619bc166c4f2de5caa5a633b8b7326fbe98e0ccbfacabd87268a2b15ff73a029"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a68b554d356a91cce1236aa7682dc01df0edba8d043fd1ce607c49dd3c1edcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:db0b55e0f3cc0be60c1f19efdde9a637c32740486004f20d1cff53c3c0ece4d2"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e53af139f8579a6d5f7b76549125f0d94d7e630761a2111bc431fd820e163b8"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17b950fccb810b3293638215058e432159d2b71005c74371d784862b7e4683f3"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c31f53cdae6ecfa91a77820e8b151dba54ab528ba65dfd235c80b086d68a465"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:bff1b4290a66b490a2f4719358c0cdcd9bafb6b8f061e45c7a2460866bf50c2e"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc1667f8b83f48511b94671e0e441401371dfd0f0a795c7daa4a3cd1dde55bea"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5049256f536511ee3f7e1b3f87d1d1209d327e818e6ae1365e8653d7e3abb6a6"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win32.whl", hash = "sha256:00e046b6dd71aa03a41079792f8473dc494d564611a8f89bbbd7cb93295ebdcf"}, + {file = "MarkupSafe-2.1.5-cp39-cp39-win_amd64.whl", hash = "sha256:fa173ec60341d6bb97a89f5ea19c85c5643c1e7dedebc22f5181eb73573142c5"}, + {file = "MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b"}, ] [[package]] name = "matplotlib" -version = "3.7.2" +version = "3.8.3" description = "Python plotting package" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, - {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, - {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, - {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, - {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, - {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, - {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, - {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, - {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, - {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, - {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, - {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, - {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, - {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, - {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, - {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, - {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, - {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, - {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, - {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, + {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, + {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, + {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, + {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, + {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, + {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, + {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, + {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, + {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, + {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, + {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, + {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, + {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, + {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, + {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, + {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, + {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, + {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, + {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, ] [package.dependencies] contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" -kiwisolver = ">=1.0.1" -numpy = ">=1.20" +kiwisolver = ">=1.3.1" +numpy = ">=1.21,<2" packaging = ">=20.0" -pillow = ">=6.2.0" -pyparsing = ">=2.3.1,<3.1" +pillow = ">=8" +pyparsing = ">=2.3.1" python-dateutil = ">=2.7" [[package]] name = "matplotlib-inline" version = "0.1.6" description = "Inline Matplotlib backend for Jupyter" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2011,105 +2006,118 @@ traitlets = "*" [[package]] name = "mistune" -version = "3.0.1" +version = "3.0.2" description = "A sane and fast Markdown parser with useful plugins and renderers" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "mistune-3.0.1-py3-none-any.whl", hash = "sha256:b9b3e438efbb57c62b5beb5e134dab664800bdf1284a7ee09e8b12b13eb1aac6"}, - {file = "mistune-3.0.1.tar.gz", hash = "sha256:e912116c13aa0944f9dc530db38eb88f6a77087ab128f49f84a48f4c05ea163c"}, + {file = "mistune-3.0.2-py3-none-any.whl", hash = "sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205"}, + {file = "mistune-3.0.2.tar.gz", hash = "sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8"}, ] [[package]] name = "multidict" -version = "6.0.4" +version = "6.0.5" description = "multidict implementation" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, - {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, - {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, - {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, - {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, - {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, - {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, - {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, - {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, - {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, - {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, - {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, - {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, - {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, - {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, - {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, - {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, - {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, - {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, - {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, - {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, - {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, - {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, - {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, - {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, - {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, - {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:228b644ae063c10e7f324ab1ab6b548bdf6f8b47f3ec234fef1093bc2735e5f9"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:896ebdcf62683551312c30e20614305f53125750803b614e9e6ce74a96232604"}, + {file = "multidict-6.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:411bf8515f3be9813d06004cac41ccf7d1cd46dfe233705933dd163b60e37600"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d147090048129ce3c453f0292e7697d333db95e52616b3793922945804a433c"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:215ed703caf15f578dca76ee6f6b21b7603791ae090fbf1ef9d865571039ade5"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c6390cf87ff6234643428991b7359b5f59cc15155695deb4eda5c777d2b880f"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21fd81c4ebdb4f214161be351eb5bcf385426bf023041da2fd9e60681f3cebae"}, + {file = "multidict-6.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cc2ad10255f903656017363cd59436f2111443a76f996584d1077e43ee51182"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6939c95381e003f54cd4c5516740faba40cf5ad3eeff460c3ad1d3e0ea2549bf"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:220dd781e3f7af2c2c1053da9fa96d9cf3072ca58f057f4c5adaaa1cab8fc442"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:766c8f7511df26d9f11cd3a8be623e59cca73d44643abab3f8c8c07620524e4a"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:fe5d7785250541f7f5019ab9cba2c71169dc7d74d0f45253f8313f436458a4ef"}, + {file = "multidict-6.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c1c1496e73051918fcd4f58ff2e0f2f3066d1c76a0c6aeffd9b45d53243702cc"}, + {file = "multidict-6.0.5-cp310-cp310-win32.whl", hash = "sha256:7afcdd1fc07befad18ec4523a782cde4e93e0a2bf71239894b8d61ee578c1319"}, + {file = "multidict-6.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:99f60d34c048c5c2fabc766108c103612344c46e35d4ed9ae0673d33c8fb26e8"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f285e862d2f153a70586579c15c44656f888806ed0e5b56b64489afe4a2dbfba"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53689bb4e102200a4fafa9de9c7c3c212ab40a7ab2c8e474491914d2305f187e"}, + {file = "multidict-6.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:612d1156111ae11d14afaf3a0669ebf6c170dbb735e510a7438ffe2369a847fd"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7be7047bd08accdb7487737631d25735c9a04327911de89ff1b26b81745bd4e3"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de170c7b4fe6859beb8926e84f7d7d6c693dfe8e27372ce3b76f01c46e489fcf"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:04bde7a7b3de05732a4eb39c94574db1ec99abb56162d6c520ad26f83267de29"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85f67aed7bb647f93e7520633d8f51d3cbc6ab96957c71272b286b2f30dc70ed"}, + {file = "multidict-6.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:425bf820055005bfc8aa9a0b99ccb52cc2f4070153e34b701acc98d201693733"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:d3eb1ceec286eba8220c26f3b0096cf189aea7057b6e7b7a2e60ed36b373b77f"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7901c05ead4b3fb75113fb1dd33eb1253c6d3ee37ce93305acd9d38e0b5f21a4"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e0e79d91e71b9867c73323a3444724d496c037e578a0e1755ae159ba14f4f3d1"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:29bfeb0dff5cb5fdab2023a7a9947b3b4af63e9c47cae2a10ad58394b517fddc"}, + {file = "multidict-6.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e030047e85cbcedbfc073f71836d62dd5dadfbe7531cae27789ff66bc551bd5e"}, + {file = "multidict-6.0.5-cp311-cp311-win32.whl", hash = "sha256:2f4848aa3baa109e6ab81fe2006c77ed4d3cd1e0ac2c1fbddb7b1277c168788c"}, + {file = "multidict-6.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:2faa5ae9376faba05f630d7e5e6be05be22913782b927b19d12b8145968a85ea"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:51d035609b86722963404f711db441cf7134f1889107fb171a970c9701f92e1e"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:cbebcd5bcaf1eaf302617c114aa67569dd3f090dd0ce8ba9e35e9985b41ac35b"}, + {file = "multidict-6.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ffc42c922dbfddb4a4c3b438eb056828719f07608af27d163191cb3e3aa6cc5"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ceb3b7e6a0135e092de86110c5a74e46bda4bd4fbfeeb3a3bcec79c0f861e450"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79660376075cfd4b2c80f295528aa6beb2058fd289f4c9252f986751a4cd0496"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e4428b29611e989719874670fd152b6625500ad6c686d464e99f5aaeeaca175a"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84a5c3a5f7ce6db1f999fb9438f686bc2e09d38143f2d93d8406ed2dd6b9226"}, + {file = "multidict-6.0.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76c0de87358b192de7ea9649beb392f107dcad9ad27276324c24c91774ca5271"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:79a6d2ba910adb2cbafc95dad936f8b9386e77c84c35bc0add315b856d7c3abb"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:92d16a3e275e38293623ebf639c471d3e03bb20b8ebb845237e0d3664914caef"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:fb616be3538599e797a2017cccca78e354c767165e8858ab5116813146041a24"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:14c2976aa9038c2629efa2c148022ed5eb4cb939e15ec7aace7ca932f48f9ba6"}, + {file = "multidict-6.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:435a0984199d81ca178b9ae2c26ec3d49692d20ee29bc4c11a2a8d4514c67eda"}, + {file = "multidict-6.0.5-cp312-cp312-win32.whl", hash = "sha256:9fe7b0653ba3d9d65cbe7698cca585bf0f8c83dbbcc710db9c90f478e175f2d5"}, + {file = "multidict-6.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:01265f5e40f5a17f8241d52656ed27192be03bfa8764d88e8220141d1e4b3556"}, + {file = "multidict-6.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:19fe01cea168585ba0f678cad6f58133db2aa14eccaf22f88e4a6dccadfad8b3"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf7a982604375a8d49b6cc1b781c1747f243d91b81035a9b43a2126c04766f5"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:107c0cdefe028703fb5dafe640a409cb146d44a6ae201e55b35a4af8e95457dd"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:403c0911cd5d5791605808b942c88a8155c2592e05332d2bf78f18697a5fa15e"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aeaf541ddbad8311a87dd695ed9642401131ea39ad7bc8cf3ef3967fd093b626"}, + {file = "multidict-6.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e4972624066095e52b569e02b5ca97dbd7a7ddd4294bf4e7247d52635630dd83"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d946b0a9eb8aaa590df1fe082cee553ceab173e6cb5b03239716338629c50c7a"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:b55358304d7a73d7bdf5de62494aaf70bd33015831ffd98bc498b433dfe5b10c"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:a3145cb08d8625b2d3fee1b2d596a8766352979c9bffe5d7833e0503d0f0b5e5"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d65f25da8e248202bd47445cec78e0025c0fe7582b23ec69c3b27a640dd7a8e3"}, + {file = "multidict-6.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:c9bf56195c6bbd293340ea82eafd0071cb3d450c703d2c93afb89f93b8386ccc"}, + {file = "multidict-6.0.5-cp37-cp37m-win32.whl", hash = "sha256:69db76c09796b313331bb7048229e3bee7928eb62bab5e071e9f7fcc4879caee"}, + {file = "multidict-6.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:fce28b3c8a81b6b36dfac9feb1de115bab619b3c13905b419ec71d03a3fc1423"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:76f067f5121dcecf0d63a67f29080b26c43c71a98b10c701b0677e4a065fbd54"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b82cc8ace10ab5bd93235dfaab2021c70637005e1ac787031f4d1da63d493c1d"}, + {file = "multidict-6.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5cb241881eefd96b46f89b1a056187ea8e9ba14ab88ba632e68d7a2ecb7aadf7"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e94e6912639a02ce173341ff62cc1201232ab86b8a8fcc05572741a5dc7d93"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:09a892e4a9fb47331da06948690ae38eaa2426de97b4ccbfafbdcbe5c8f37ff8"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:55205d03e8a598cfc688c71ca8ea5f66447164efff8869517f175ea632c7cb7b"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37b15024f864916b4951adb95d3a80c9431299080341ab9544ed148091b53f50"}, + {file = "multidict-6.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2a1dee728b52b33eebff5072817176c172050d44d67befd681609b4746e1c2e"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:edd08e6f2f1a390bf137080507e44ccc086353c8e98c657e666c017718561b89"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:60d698e8179a42ec85172d12f50b1668254628425a6bd611aba022257cac1386"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3d25f19500588cbc47dc19081d78131c32637c25804df8414463ec908631e453"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4cc0ef8b962ac7a5e62b9e826bd0cd5040e7d401bc45a6835910ed699037a461"}, + {file = "multidict-6.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:eca2e9d0cc5a889850e9bbd68e98314ada174ff6ccd1129500103df7a94a7a44"}, + {file = "multidict-6.0.5-cp38-cp38-win32.whl", hash = "sha256:4a6a4f196f08c58c59e0b8ef8ec441d12aee4125a7d4f4fef000ccb22f8d7241"}, + {file = "multidict-6.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:0275e35209c27a3f7951e1ce7aaf93ce0d163b28948444bec61dd7badc6d3f8c"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e7be68734bd8c9a513f2b0cfd508802d6609da068f40dc57d4e3494cefc92929"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:1d9ea7a7e779d7a3561aade7d596649fbecfa5c08a7674b11b423783217933f9"}, + {file = "multidict-6.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ea1456df2a27c73ce51120fa2f519f1bea2f4a03a917f4a43c8707cf4cbbae1a"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf590b134eb70629e350691ecca88eac3e3b8b3c86992042fb82e3cb1830d5e1"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5c0631926c4f58e9a5ccce555ad7747d9a9f8b10619621f22f9635f069f6233e"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dce1c6912ab9ff5f179eaf6efe7365c1f425ed690b03341911bf4939ef2f3046"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0868d64af83169e4d4152ec612637a543f7a336e4a307b119e98042e852ad9c"}, + {file = "multidict-6.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:141b43360bfd3bdd75f15ed811850763555a251e38b2405967f8e25fb43f7d40"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7df704ca8cf4a073334e0427ae2345323613e4df18cc224f647f251e5e75a527"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:6214c5a5571802c33f80e6c84713b2c79e024995b9c5897f794b43e714daeec9"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:cd6c8fca38178e12c00418de737aef1261576bd1b6e8c6134d3e729a4e858b38"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e02021f87a5b6932fa6ce916ca004c4d441509d33bbdbeca70d05dff5e9d2479"}, + {file = "multidict-6.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ebd8d160f91a764652d3e51ce0d2956b38efe37c9231cd82cfc0bed2e40b581c"}, + {file = "multidict-6.0.5-cp39-cp39-win32.whl", hash = "sha256:04da1bb8c8dbadf2a18a452639771951c662c5ad03aefe4884775454be322c9b"}, + {file = "multidict-6.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:d6f6d4f185481c9669b9447bf9d9cf3b95a0e9df9d169bbc17e363b7d5487755"}, + {file = "multidict-6.0.5-py3-none-any.whl", hash = "sha256:0d63c74e3d7ab26de115c49bffc92cc77ed23395303d496eae515d4204a625e7"}, + {file = "multidict-6.0.5.tar.gz", hash = "sha256:f7e301075edaf50500f0b341543c41194d8df3ae5caf4702f2095f3ca73dd8da"}, ] [[package]] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2119,19 +2127,18 @@ files = [ [[package]] name = "nbclient" -version = "0.8.0" +version = "0.9.0" description = "A client library for executing notebooks. Formerly nbconvert's ExecutePreprocessor." -category = "main" optional = false python-versions = ">=3.8.0" files = [ - {file = "nbclient-0.8.0-py3-none-any.whl", hash = "sha256:25e861299e5303a0477568557c4045eccc7a34c17fc08e7959558707b9ebe548"}, - {file = "nbclient-0.8.0.tar.gz", hash = "sha256:f9b179cd4b2d7bca965f900a2ebf0db4a12ebff2f36a711cb66861e4ae158e55"}, + {file = "nbclient-0.9.0-py3-none-any.whl", hash = "sha256:a3a1ddfb34d4a9d17fc744d655962714a866639acd30130e9be84191cd97cd15"}, + {file = "nbclient-0.9.0.tar.gz", hash = "sha256:4b28c207877cf33ef3a9838cdc7a54c5ceff981194a82eac59d558f05487295e"}, ] [package.dependencies] jupyter-client = ">=6.1.12" -jupyter-core = ">=4.12,<5.0.0 || >=5.1.0" +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" nbformat = ">=5.1" traitlets = ">=5.4" @@ -2142,14 +2149,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.8.0" +version = "7.16.0" description = "Converting Jupyter Notebooks" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.8.0-py3-none-any.whl", hash = "sha256:aec605e051fa682ccc7934ccc338ba1e8b626cfadbab0db592106b630f63f0f2"}, - {file = "nbconvert-7.8.0.tar.gz", hash = "sha256:f5bc15a1247e14dd41ceef0c0a3bc70020e016576eb0578da62f1c5b4f950479"}, + {file = "nbconvert-7.16.0-py3-none-any.whl", hash = "sha256:ad3dc865ea6e2768d31b7eb6c7ab3be014927216a5ece3ef276748dd809054c7"}, + {file = "nbconvert-7.16.0.tar.gz", hash = "sha256:813e6553796362489ae572e39ba1bff978536192fb518e10826b0e8cadf03ec8"}, ] [package.dependencies] @@ -2175,14 +2181,13 @@ docs = ["ipykernel", "ipython", "myst-parser", "nbsphinx (>=0.2.12)", "pydata-sp qtpdf = ["nbconvert[qtpng]"] qtpng = ["pyqtwebengine (>=5.15)"] serve = ["tornado (>=6.1)"] -test = ["flaky", "ipykernel", "ipywidgets (>=7)", "pre-commit", "pytest", "pytest-dependency"] +test = ["flaky", "ipykernel", "ipywidgets (>=7.5)", "pytest"] webpdf = ["playwright"] [[package]] name = "nbformat" version = "5.9.2" description = "The Jupyter Notebook format" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2202,31 +2207,29 @@ test = ["pep440", "pre-commit", "pytest", "testpath"] [[package]] name = "nest-asyncio" -version = "1.5.7" +version = "1.6.0" description = "Patch asyncio to allow nested event loops" -category = "main" optional = false python-versions = ">=3.5" files = [ - {file = "nest_asyncio-1.5.7-py3-none-any.whl", hash = "sha256:5301c82941b550b3123a1ea772ba9a1c80bad3a182be8c1a5ae6ad3be57a9657"}, - {file = "nest_asyncio-1.5.7.tar.gz", hash = "sha256:6a80f7b98f24d9083ed24608977c09dd608d83f91cccc24c9d2cba6d10e01c10"}, + {file = "nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c"}, + {file = "nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe"}, ] [[package]] name = "notebook" -version = "7.0.3" +version = "7.1.0" description = "Jupyter Notebook - A web-based notebook environment for interactive computing" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "notebook-7.0.3-py3-none-any.whl", hash = "sha256:786ab2e3287c068667adce3029b540dd18fc5d23f49181b4b4ee4f6b48a7ca81"}, - {file = "notebook-7.0.3.tar.gz", hash = "sha256:07f3c5062fd0e6e69864437a0347abc485d991aae87a92c47d659699f571b729"}, + {file = "notebook-7.1.0-py3-none-any.whl", hash = "sha256:a8fa4ccb5e5fe220f29d9900337efd7752bc6f2efe004d6f320db01f7743adc9"}, + {file = "notebook-7.1.0.tar.gz", hash = "sha256:99caf01ff166b1cc86355c9b37c1ba9bf566c1d7fc4ab57bb6f8f24e36c4260e"}, ] [package.dependencies] jupyter-server = ">=2.4.0,<3" -jupyterlab = ">=4.0.2,<5" +jupyterlab = ">=4.1.1,<4.2" jupyterlab-server = ">=2.22.1,<3" notebook-shim = ">=0.2,<0.3" tornado = ">=6.2.0" @@ -2238,14 +2241,13 @@ test = ["importlib-resources (>=5.0)", "ipykernel", "jupyter-server[test] (>=2.4 [[package]] name = "notebook-shim" -version = "0.2.3" +version = "0.2.4" description = "A shim layer for notebook traits and config" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "notebook_shim-0.2.3-py3-none-any.whl", hash = "sha256:a83496a43341c1674b093bfcebf0fe8e74cbe7eda5fd2bbc56f8e39e1486c0c7"}, - {file = "notebook_shim-0.2.3.tar.gz", hash = "sha256:f69388ac283ae008cd506dda10d0288b09a017d822d5e8c7129a152cbd3ce7e9"}, + {file = "notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef"}, + {file = "notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb"}, ] [package.dependencies] @@ -2258,7 +2260,6 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" name = "numba" version = "0.56.4" description = "compiling Python code using LLVM" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2293,7 +2294,7 @@ files = [ ] [package.dependencies] -llvmlite = ">=0.39.0dev0,<0.40" +llvmlite = "==0.39.*" numpy = ">=1.18,<1.24" setuptools = "*" @@ -2301,7 +2302,6 @@ setuptools = "*" name = "numpy" version = "1.23.5" description = "NumPy is the fundamental package for array computing with Python." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2339,7 +2339,6 @@ files = [ name = "oic" version = "1.6.1" description = "Python implementation of OAuth2 and OpenID Connect" -category = "main" optional = false python-versions = "~=3.7" files = [ @@ -2367,33 +2366,30 @@ types = ["types-requests"] [[package]] name = "overrides" -version = "7.4.0" +version = "7.7.0" description = "A decorator to automatically detect mismatch when overriding a method." -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "overrides-7.4.0-py3-none-any.whl", hash = "sha256:3ad24583f86d6d7a49049695efe9933e67ba62f0c7625d53c59fa832ce4b8b7d"}, - {file = "overrides-7.4.0.tar.gz", hash = "sha256:9502a3cca51f4fac40b5feca985b6703a5c1f6ad815588a7ca9e285b9dca6757"}, + {file = "overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49"}, + {file = "overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a"}, ] [[package]] name = "packaging" -version = "23.1" +version = "23.2" description = "Core utilities for Python packages" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.1-py3-none-any.whl", hash = "sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61"}, - {file = "packaging-23.1.tar.gz", hash = "sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] [[package]] name = "pandas" version = "1.5.3" description = "Powerful data structures for data analysis, time series, and statistics" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2436,55 +2432,52 @@ test = ["hypothesis (>=5.5.3)", "pytest (>=6.0)", "pytest-xdist (>=1.31)"] [[package]] name = "pandocfilters" -version = "1.5.0" +version = "1.5.1" description = "Utilities for writing pandoc filters in python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ - {file = "pandocfilters-1.5.0-py2.py3-none-any.whl", hash = "sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f"}, - {file = "pandocfilters-1.5.0.tar.gz", hash = "sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38"}, + {file = "pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc"}, + {file = "pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e"}, ] [[package]] name = "papermill" -version = "2.4.0" -description = "Parametrize and run Jupyter and nteract Notebooks" -category = "main" +version = "2.5.0" +description = "Parameterize and run Jupyter and nteract Notebooks" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "papermill-2.4.0-py3-none-any.whl", hash = "sha256:baa76f0441257d9a25b3ad7c895e761341b94f9a70ca98cf419247fc728932d9"}, - {file = "papermill-2.4.0.tar.gz", hash = "sha256:6f8f8a9b06b39677f207c09100c8d386bcf592f0cbbdda9f0f50e81445697627"}, + {file = "papermill-2.5.0-py3-none-any.whl", hash = "sha256:c42303afb92e482a60ae1df2577be59a5b7a64c5cd52d37c74c7f74e36085708"}, + {file = "papermill-2.5.0.tar.gz", hash = "sha256:ea7b70c0553f56fe91b0fa9cc5e17012cd699320a8b015373e7870c5e6086c72"}, ] [package.dependencies] -ansiwrap = "*" click = "*" entrypoints = "*" nbclient = ">=0.2.0" nbformat = ">=5.1.2" pyyaml = "*" requests = "*" -tenacity = "*" +tenacity = ">=5.0.2" tqdm = ">=4.32.2" [package.extras] -all = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "requests (>=2.21.0)"] -azure = ["azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)"] +all = ["PyGithub (>=1.55)", "azure-datalake-store (>=0.0.30)", "azure-identity (>=1.3.1)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "gcsfs (>=0.2.0)", "pyarrow (>=2.0)", "requests (>=2.21.0)"] +azure = ["azure-datalake-store (>=0.0.30)", "azure-identity (>=1.3.1)", "azure-storage-blob (>=12.1.0)", "requests (>=2.21.0)"] black = ["black (>=19.3b0)"] -dev = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] +dev = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-identity (>=1.3.1)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] +docs = ["PyGithub (>=1.55)", "Sphinx (>=3.5.4)", "azure-datalake-store (>=0.0.30)", "azure-identity (>=1.3.1)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "furo (>=2021.4.11b34)", "gcsfs (>=0.2.0)", "moto (>=2.0.5)", "myst-parser (>=0.13.7)", "pyarrow (>=2.0)", "requests (>=2.21.0)", "sphinx-copybutton (>=0.3.1)"] gcs = ["gcsfs (>=0.2.0)"] github = ["PyGithub (>=1.55)"] hdfs = ["pyarrow (>=2.0)"] s3 = ["boto3"] -test = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pyarrow (>=2.0)", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] +test = ["attrs (>=17.4.0)", "azure-datalake-store (>=0.0.30)", "azure-identity (>=1.3.1)", "azure-storage-blob (>=12.1.0)", "black (>=19.3b0)", "boto3", "botocore", "bumpversion", "check-manifest", "codecov", "coverage", "flake8", "gcsfs (>=0.2.0)", "google-compute-engine", "ipython (>=5.0)", "ipywidgets", "moto", "notebook", "pip (>=18.1)", "pre-commit", "pytest (>=4.1)", "pytest-cov (>=2.6.1)", "pytest-env (>=0.6.2)", "pytest-mock (>=1.10)", "recommonmark", "requests (>=2.21.0)", "setuptools (>=38.6.0)", "tox", "twine (>=1.11.0)", "wheel (>=0.31.0)"] [[package]] name = "parso" version = "0.8.3" description = "A Python Parser" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2498,149 +2491,149 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.11.2" +version = "0.12.1" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pathspec-0.11.2-py3-none-any.whl", hash = "sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20"}, - {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, + {file = "pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08"}, + {file = "pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"}, ] [[package]] name = "pexpect" -version = "4.8.0" +version = "4.9.0" description = "Pexpect allows easy control of interactive console applications." -category = "main" optional = false python-versions = "*" files = [ - {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, - {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, + {file = "pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523"}, + {file = "pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f"}, ] [package.dependencies] ptyprocess = ">=0.5" -[[package]] -name = "pickleshare" -version = "0.7.5" -description = "Tiny 'shelve'-like database with concurrency support" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pickleshare-0.7.5-py2.py3-none-any.whl", hash = "sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56"}, - {file = "pickleshare-0.7.5.tar.gz", hash = "sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca"}, -] - [[package]] name = "pillow" -version = "10.0.0" +version = "10.2.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Pillow-10.0.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:1f62406a884ae75fb2f818694469519fb685cc7eaff05d3451a9ebe55c646891"}, - {file = "Pillow-10.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d5db32e2a6ccbb3d34d87c87b432959e0db29755727afb37290e10f6e8e62614"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf4392b77bdc81f36e92d3a07a5cd072f90253197f4a52a55a8cec48a12483b"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:520f2a520dc040512699f20fa1c363eed506e94248d71f85412b625026f6142c"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:8c11160913e3dd06c8ffdb5f233a4f254cb449f4dfc0f8f4549eda9e542c93d1"}, - {file = "Pillow-10.0.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a74ba0c356aaa3bb8e3eb79606a87669e7ec6444be352870623025d75a14a2bf"}, - {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5d0dae4cfd56969d23d94dc8e89fb6a217be461c69090768227beb8ed28c0a3"}, - {file = "Pillow-10.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:22c10cc517668d44b211717fd9775799ccec4124b9a7f7b3635fc5386e584992"}, - {file = "Pillow-10.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:dffe31a7f47b603318c609f378ebcd57f1554a3a6a8effbc59c3c69f804296de"}, - {file = "Pillow-10.0.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:9fb218c8a12e51d7ead2a7c9e101a04982237d4855716af2e9499306728fb485"}, - {file = "Pillow-10.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d35e3c8d9b1268cbf5d3670285feb3528f6680420eafe35cccc686b73c1e330f"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ed64f9ca2f0a95411e88a4efbd7a29e5ce2cea36072c53dd9d26d9c76f753b3"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b6eb5502f45a60a3f411c63187db83a3d3107887ad0d036c13ce836f8a36f1d"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:c1fbe7621c167ecaa38ad29643d77a9ce7311583761abf7836e1510c580bf3dd"}, - {file = "Pillow-10.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:cd25d2a9d2b36fcb318882481367956d2cf91329f6892fe5d385c346c0649629"}, - {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3b08d4cc24f471b2c8ca24ec060abf4bebc6b144cb89cba638c720546b1cf538"}, - {file = "Pillow-10.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d737a602fbd82afd892ca746392401b634e278cb65d55c4b7a8f48e9ef8d008d"}, - {file = "Pillow-10.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3a82c40d706d9aa9734289740ce26460a11aeec2d9c79b7af87bb35f0073c12f"}, - {file = "Pillow-10.0.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:d80cf684b541685fccdd84c485b31ce73fc5c9b5d7523bf1394ce134a60c6883"}, - {file = "Pillow-10.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:76de421f9c326da8f43d690110f0e79fe3ad1e54be811545d7d91898b4c8493e"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81ff539a12457809666fef6624684c008e00ff6bf455b4b89fd00a140eecd640"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce543ed15570eedbb85df19b0a1a7314a9c8141a36ce089c0a894adbfccb4568"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:685ac03cc4ed5ebc15ad5c23bc555d68a87777586d970c2c3e216619a5476223"}, - {file = "Pillow-10.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:d72e2ecc68a942e8cf9739619b7f408cc7b272b279b56b2c83c6123fcfa5cdff"}, - {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d50b6aec14bc737742ca96e85d6d0a5f9bfbded018264b3b70ff9d8c33485551"}, - {file = "Pillow-10.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:00e65f5e822decd501e374b0650146063fbb30a7264b4d2744bdd7b913e0cab5"}, - {file = "Pillow-10.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:f31f9fdbfecb042d046f9d91270a0ba28368a723302786c0009ee9b9f1f60199"}, - {file = "Pillow-10.0.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:349930d6e9c685c089284b013478d6f76e3a534e36ddfa912cde493f235372f3"}, - {file = "Pillow-10.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:3a684105f7c32488f7153905a4e3015a3b6c7182e106fe3c37fbb5ef3e6994c3"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4f69b3700201b80bb82c3a97d5e9254084f6dd5fb5b16fc1a7b974260f89f43"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f07ea8d2f827d7d2a49ecf1639ec02d75ffd1b88dcc5b3a61bbb37a8759ad8d"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:040586f7d37b34547153fa383f7f9aed68b738992380ac911447bb78f2abe530"}, - {file = "Pillow-10.0.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:f88a0b92277de8e3ca715a0d79d68dc82807457dae3ab8699c758f07c20b3c51"}, - {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c7cf14a27b0d6adfaebb3ae4153f1e516df54e47e42dcc073d7b3d76111a8d86"}, - {file = "Pillow-10.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3400aae60685b06bb96f99a21e1ada7bc7a413d5f49bce739828ecd9391bb8f7"}, - {file = "Pillow-10.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbc02381779d412145331789b40cc7b11fdf449e5d94f6bc0b080db0a56ea3f0"}, - {file = "Pillow-10.0.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:9211e7ad69d7c9401cfc0e23d49b69ca65ddd898976d660a2fa5904e3d7a9baa"}, - {file = "Pillow-10.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:faaf07ea35355b01a35cb442dd950d8f1bb5b040a7787791a535de13db15ed90"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9f72a021fbb792ce98306ffb0c348b3c9cb967dce0f12a49aa4c3d3fdefa967"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f7c16705f44e0504a3a2a14197c1f0b32a95731d251777dcb060aa83022cb2d"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:76edb0a1fa2b4745fb0c99fb9fb98f8b180a1bbceb8be49b087e0b21867e77d3"}, - {file = "Pillow-10.0.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:368ab3dfb5f49e312231b6f27b8820c823652b7cd29cfbd34090565a015e99ba"}, - {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:608bfdee0d57cf297d32bcbb3c728dc1da0907519d1784962c5f0c68bb93e5a3"}, - {file = "Pillow-10.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5c6e3df6bdd396749bafd45314871b3d0af81ff935b2d188385e970052091017"}, - {file = "Pillow-10.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:7be600823e4c8631b74e4a0d38384c73f680e6105a7d3c6824fcf226c178c7e6"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:92be919bbc9f7d09f7ae343c38f5bb21c973d2576c1d45600fce4b74bafa7ac0"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f8182b523b2289f7c415f589118228d30ac8c355baa2f3194ced084dac2dbba"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:38250a349b6b390ee6047a62c086d3817ac69022c127f8a5dc058c31ccef17f3"}, - {file = "Pillow-10.0.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88af2003543cc40c80f6fca01411892ec52b11021b3dc22ec3bc9d5afd1c5334"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c189af0545965fa8d3b9613cfdb0cd37f9d71349e0f7750e1fd704648d475ed2"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce7b031a6fc11365970e6a5686d7ba8c63e4c1cf1ea143811acbb524295eabed"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db24668940f82321e746773a4bc617bfac06ec831e5c88b643f91f122a785684"}, - {file = "Pillow-10.0.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:efe8c0681042536e0d06c11f48cebe759707c9e9abf880ee213541c5b46c5bf3"}, - {file = "Pillow-10.0.0.tar.gz", hash = "sha256:9c82b5b3e043c7af0d95792d0d20ccf68f61a1fec6b3530e718b688422727396"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, + {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, + {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, + {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, + {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, + {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, + {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, + {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, + {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, + {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, + {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, + {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, + {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, + {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, + {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, + {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, + {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, + {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, + {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, + {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, + {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, + {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, + {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, + {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, + {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, + {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, + {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, + {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, + {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, + {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, + {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, + {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, + {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, + {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, ] [package.extras] docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] +fpx = ["olefile"] +mic = ["olefile"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] +typing = ["typing-extensions"] +xmp = ["defusedxml"] [[package]] name = "pip" -version = "23.2.1" +version = "24.0" description = "The PyPA recommended tool for installing Python packages." -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pip-23.2.1-py3-none-any.whl", hash = "sha256:7ccf472345f20d35bdc9d1841ff5f313260c2c33fe417f48c30ac46cccabf5be"}, - {file = "pip-23.2.1.tar.gz", hash = "sha256:fb0bd5435b3200c602b5bf61d2d43c2f13c02e29c1707567ae7fbc514eb9faf2"}, + {file = "pip-24.0-py3-none-any.whl", hash = "sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc"}, + {file = "pip-24.0.tar.gz", hash = "sha256:ea9bd1a847e8c5774a5777bb398c19e80bcd4e2aa16a4b301b718fe6f593aba2"}, ] [[package]] name = "platformdirs" -version = "3.10.0" +version = "4.2.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "platformdirs-3.10.0-py3-none-any.whl", hash = "sha256:d7c24979f292f916dc9cbf8648319032f551ea8c49a4c9bf2fb556a02070ec1d"}, - {file = "platformdirs-3.10.0.tar.gz", hash = "sha256:b45696dab2d7cc691a3226759c0d3b00c47c8b6e293d96f6436f733303f77f6d"}, + {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, + {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, ] [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.1)", "sphinx-autodoc-typehints (>=1.24)"] -test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)"] +docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] [[package]] name = "pluggy" -version = "1.3.0" +version = "1.4.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.3.0-py3-none-any.whl", hash = "sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"}, - {file = "pluggy-1.3.0.tar.gz", hash = "sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12"}, + {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, + {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, ] [package.extras] @@ -2649,14 +2642,13 @@ testing = ["pytest", "pytest-benchmark"] [[package]] name = "pooch" -version = "1.7.0" +version = "1.8.0" description = "\"Pooch manages your Python library's sample data files: it automatically downloads and stores them in a local directory, with support for versioning and corruption checks.\"" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "pooch-1.7.0-py3-none-any.whl", hash = "sha256:74258224fc33d58f53113cf955e8d51bf01386b91492927d0d1b6b341a765ad7"}, - {file = "pooch-1.7.0.tar.gz", hash = "sha256:f174a1041b6447f0eef8860f76d17f60ed2f857dc0efa387a7f08228af05d998"}, + {file = "pooch-1.8.0-py3-none-any.whl", hash = "sha256:1bfba436d9e2ad5199ccad3583cca8c241b8736b5bb23fe67c213d52650dbb66"}, + {file = "pooch-1.8.0.tar.gz", hash = "sha256:f59981fd5b9b5d032dcde8f4a11eaa492c2ac6343fae3596a2fdae35fc54b0a0"}, ] [package.dependencies] @@ -2671,14 +2663,13 @@ xxhash = ["xxhash (>=1.4.3)"] [[package]] name = "prometheus-client" -version = "0.17.1" +version = "0.20.0" description = "Python client for the Prometheus monitoring system." -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "prometheus_client-0.17.1-py3-none-any.whl", hash = "sha256:e537f37160f6807b8202a6fc4764cdd19bac5480ddd3e0d463c3002b34462101"}, - {file = "prometheus_client-0.17.1.tar.gz", hash = "sha256:21e674f39831ae3f8acde238afd9a27a37d0d2fb5a28ea094f0ce25d2cbf2091"}, + {file = "prometheus_client-0.20.0-py3-none-any.whl", hash = "sha256:cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7"}, + {file = "prometheus_client-0.20.0.tar.gz", hash = "sha256:287629d00b147a32dcb2be0b9df905da599b2d82f80377083ec8463309a4bb89"}, ] [package.extras] @@ -2686,14 +2677,13 @@ twisted = ["twisted"] [[package]] name = "prompt-toolkit" -version = "3.0.39" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" -category = "main" optional = false python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.39-py3-none-any.whl", hash = "sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88"}, - {file = "prompt_toolkit-3.0.39.tar.gz", hash = "sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac"}, + {file = "prompt_toolkit-3.0.43-py3-none-any.whl", hash = "sha256:a11a29cb3bf0a28a387fe5122cdb649816a957cd9261dcedf8c9f1fef33eacf6"}, + {file = "prompt_toolkit-3.0.43.tar.gz", hash = "sha256:3527b7af26106cbc65a040bcc84839a3566ec1b051bb0bfe953631e704b0ff7d"}, ] [package.dependencies] @@ -2701,26 +2691,27 @@ wcwidth = "*" [[package]] name = "psutil" -version = "5.9.5" +version = "5.9.8" description = "Cross-platform lib for process and system monitoring in Python." -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" -files = [ - {file = "psutil-5.9.5-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:be8929ce4313f9f8146caad4272f6abb8bf99fc6cf59344a3167ecd74f4f203f"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ab8ed1a1d77c95453db1ae00a3f9c50227ebd955437bcf2a574ba8adbf6a74d5"}, - {file = "psutil-5.9.5-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:4aef137f3345082a3d3232187aeb4ac4ef959ba3d7c10c33dd73763fbc063da4"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:ea8518d152174e1249c4f2a1c89e3e6065941df2fa13a1ab45327716a23c2b48"}, - {file = "psutil-5.9.5-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:acf2aef9391710afded549ff602b5887d7a2349831ae4c26be7c807c0a39fac4"}, - {file = "psutil-5.9.5-cp27-none-win32.whl", hash = "sha256:5b9b8cb93f507e8dbaf22af6a2fd0ccbe8244bf30b1baad6b3954e935157ae3f"}, - {file = "psutil-5.9.5-cp27-none-win_amd64.whl", hash = "sha256:8c5f7c5a052d1d567db4ddd231a9d27a74e8e4a9c3f44b1032762bd7b9fdcd42"}, - {file = "psutil-5.9.5-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c6f686f4225553615612f6d9bc21f1c0e305f75d7d8454f9b46e901778e7217"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7a7dd9997128a0d928ed4fb2c2d57e5102bb6089027939f3b722f3a210f9a8da"}, - {file = "psutil-5.9.5-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:89518112647f1276b03ca97b65cc7f64ca587b1eb0278383017c2a0dcc26cbe4"}, - {file = "psutil-5.9.5-cp36-abi3-win32.whl", hash = "sha256:104a5cc0e31baa2bcf67900be36acde157756b9c44017b86b2c049f11957887d"}, - {file = "psutil-5.9.5-cp36-abi3-win_amd64.whl", hash = "sha256:b258c0c1c9d145a1d5ceffab1134441c4c5113b2417fafff7315a917a026c3c9"}, - {file = "psutil-5.9.5-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:c607bb3b57dc779d55e1554846352b4e358c10fff3abf3514a7a6601beebdb30"}, - {file = "psutil-5.9.5.tar.gz", hash = "sha256:5410638e4df39c54d957fc51ce03048acd8e6d60abc0f5107af51e5fb566eb3c"}, +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ + {file = "psutil-5.9.8-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:26bd09967ae00920df88e0352a91cff1a78f8d69b3ecabbfe733610c0af486c8"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:05806de88103b25903dff19bb6692bd2e714ccf9e668d050d144012055cbca73"}, + {file = "psutil-5.9.8-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:611052c4bc70432ec770d5d54f64206aa7203a101ec273a0cd82418c86503bb7"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:50187900d73c1381ba1454cf40308c2bf6f34268518b3f36a9b663ca87e65e36"}, + {file = "psutil-5.9.8-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:02615ed8c5ea222323408ceba16c60e99c3f91639b07da6373fb7e6539abc56d"}, + {file = "psutil-5.9.8-cp27-none-win32.whl", hash = "sha256:36f435891adb138ed3c9e58c6af3e2e6ca9ac2f365efe1f9cfef2794e6c93b4e"}, + {file = "psutil-5.9.8-cp27-none-win_amd64.whl", hash = "sha256:bd1184ceb3f87651a67b2708d4c3338e9b10c5df903f2e3776b62303b26cb631"}, + {file = "psutil-5.9.8-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aee678c8720623dc456fa20659af736241f575d79429a0e5e9cf88ae0605cc81"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cb6403ce6d8e047495a701dc7c5bd788add903f8986d523e3e20b98b733e421"}, + {file = "psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d06016f7f8625a1825ba3732081d77c94589dca78b7a3fc072194851e88461a4"}, + {file = "psutil-5.9.8-cp36-cp36m-win32.whl", hash = "sha256:7d79560ad97af658a0f6adfef8b834b53f64746d45b403f225b85c5c2c140eee"}, + {file = "psutil-5.9.8-cp36-cp36m-win_amd64.whl", hash = "sha256:27cc40c3493bb10de1be4b3f07cae4c010ce715290a5be22b98493509c6299e2"}, + {file = "psutil-5.9.8-cp37-abi3-win32.whl", hash = "sha256:bc56c2a1b0d15aa3eaa5a60c9f3f8e3e565303b465dbf57a1b730e7a2b9844e0"}, + {file = "psutil-5.9.8-cp37-abi3-win_amd64.whl", hash = "sha256:8db4c1b57507eef143a15a6884ca10f7c73876cdf5d51e713151c1236a0e68cf"}, + {file = "psutil-5.9.8-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:d16bbddf0693323b8c6123dd804100241da461e41d6e332fb0ba6058f630f8c8"}, + {file = "psutil-5.9.8.tar.gz", hash = "sha256:6be126e3225486dff286a8fb9a06246a5253f4c7c53b475ea5f5ac934e64194c"}, ] [package.extras] @@ -2730,7 +2721,6 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] name = "ptyprocess" version = "0.7.0" description = "Run a subprocess in a pseudo terminal" -category = "main" optional = false python-versions = "*" files = [ @@ -2742,7 +2732,6 @@ files = [ name = "pure-eval" version = "0.2.2" description = "Safely evaluate AST nodes without side effects" -category = "main" optional = false python-versions = "*" files = [ @@ -2755,21 +2744,19 @@ tests = ["pytest"] [[package]] name = "pyasn1" -version = "0.5.0" +version = "0.5.1" description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" files = [ - {file = "pyasn1-0.5.0-py2.py3-none-any.whl", hash = "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57"}, - {file = "pyasn1-0.5.0.tar.gz", hash = "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"}, + {file = "pyasn1-0.5.1-py2.py3-none-any.whl", hash = "sha256:4439847c58d40b1d0a573d07e3856e95333f1976294494c325775aeca506eb58"}, + {file = "pyasn1-0.5.1.tar.gz", hash = "sha256:6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"}, ] [[package]] name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2779,61 +2766,59 @@ files = [ [[package]] name = "pycryptodomex" -version = "3.18.0" +version = "3.20.0" description = "Cryptographic library for Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ - {file = "pycryptodomex-3.18.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:160a39a708c36fa0b168ab79386dede588e62aec06eb505add870739329aecc6"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:c2953afebf282a444c51bf4effe751706b4d0d63d7ca2cc51db21f902aa5b84e"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ba95abd563b0d1b88401658665a260852a8e6c647026ee6a0a65589287681df8"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:192306cf881fe3467dda0e174a4f47bb3a8bb24b90c9cdfbdc248eec5fc0578c"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:f9ab5ef0718f6a8716695dea16d83b671b22c45e9c0c78fd807c32c0192e54b5"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-win32.whl", hash = "sha256:50308fcdbf8345e5ec224a5502b4215178bdb5e95456ead8ab1a69ffd94779cb"}, - {file = "pycryptodomex-3.18.0-cp27-cp27m-win_amd64.whl", hash = "sha256:4d9379c684efea80fdab02a3eb0169372bca7db13f9332cb67483b8dc8b67c37"}, - {file = "pycryptodomex-3.18.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:5594a125dae30d60e94f37797fc67ce3c744522de7992c7c360d02fdb34918f8"}, - {file = "pycryptodomex-3.18.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:8ff129a5a0eb5ff16e45ca4fa70a6051da7f3de303c33b259063c19be0c43d35"}, - {file = "pycryptodomex-3.18.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:3d9314ac785a5b75d5aaf924c5f21d6ca7e8df442e5cf4f0fefad4f6e284d422"}, - {file = "pycryptodomex-3.18.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:f237278836dda412a325e9340ba2e6a84cb0f56b9244781e5b61f10b3905de88"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac614363a86cc53d8ba44b6c469831d1555947e69ab3276ae8d6edc219f570f7"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:302a8f37c224e7b5d72017d462a2be058e28f7be627bdd854066e16722d0fc0c"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:6421d23d6a648e83ba2670a352bcd978542dad86829209f59d17a3f087f4afef"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d84e105787f5e5d36ec6a581ff37a1048d12e638688074b2a00bcf402f9aa1c2"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6875eb8666f68ddbd39097867325bd22771f595b4e2b0149739b5623c8bf899b"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:27072a494ce621cc7a9096bbf60ed66826bb94db24b49b7359509e7951033e74"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:1949e09ea49b09c36d11a951b16ff2a05a0ffe969dda1846e4686ee342fe8646"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6ed3606832987018615f68e8ed716a7065c09a0fe94afd7c9ca1b6777f0ac6eb"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-win32.whl", hash = "sha256:d56c9ec41258fd3734db9f5e4d2faeabe48644ba9ca23b18e1839b3bdf093222"}, - {file = "pycryptodomex-3.18.0-cp35-abi3-win_amd64.whl", hash = "sha256:e00a4bacb83a2627e8210cb353a2e31f04befc1155db2976e5e239dd66482278"}, - {file = "pycryptodomex-3.18.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:2dc4eab20f4f04a2d00220fdc9258717b82d31913552e766d5f00282c031b70a"}, - {file = "pycryptodomex-3.18.0-pp27-pypy_73-win32.whl", hash = "sha256:75672205148bdea34669173366df005dbd52be05115e919551ee97171083423d"}, - {file = "pycryptodomex-3.18.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bec6c80994d4e7a38312072f89458903b65ec99bed2d65aa4de96d997a53ea7a"}, - {file = "pycryptodomex-3.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d35a8ffdc8b05e4b353ba281217c8437f02c57d7233363824e9d794cf753c419"}, - {file = "pycryptodomex-3.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:76f0a46bee539dae4b3dfe37216f678769349576b0080fdbe431d19a02da42ff"}, - {file = "pycryptodomex-3.18.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:71687eed47df7e965f6e0bf3cadef98f368d5221f0fb89d2132effe1a3e6a194"}, - {file = "pycryptodomex-3.18.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:73d64b32d84cf48d9ec62106aa277dbe99ab5fbfd38c5100bc7bddd3beb569f7"}, - {file = "pycryptodomex-3.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbdcce0a226d9205560a5936b05208c709b01d493ed8307792075dedfaaffa5f"}, - {file = "pycryptodomex-3.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58fc0aceb9c961b9897facec9da24c6a94c5db04597ec832060f53d4d6a07196"}, - {file = "pycryptodomex-3.18.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:215be2980a6b70704c10796dd7003eb4390e7be138ac6fb8344bf47e71a8d470"}, - {file = "pycryptodomex-3.18.0.tar.gz", hash = "sha256:3e3ecb5fe979e7c1bb0027e518340acf7ee60415d79295e5251d13c68dde576e"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:645bd4ca6f543685d643dadf6a856cc382b654cc923460e3a10a49c1b3832aeb"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:ff5c9a67f8a4fba4aed887216e32cbc48f2a6fb2673bb10a99e43be463e15913"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:8ee606964553c1a0bc74057dd8782a37d1c2bc0f01b83193b6f8bb14523b877b"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7805830e0c56d88f4d491fa5ac640dfc894c5ec570d1ece6ed1546e9df2e98d6"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-musllinux_1_1_aarch64.whl", hash = "sha256:bc3ee1b4d97081260d92ae813a83de4d2653206967c4a0a017580f8b9548ddbc"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-win32.whl", hash = "sha256:8af1a451ff9e123d0d8bd5d5e60f8e3315c3a64f3cdd6bc853e26090e195cdc8"}, + {file = "pycryptodomex-3.20.0-cp27-cp27m-win_amd64.whl", hash = "sha256:cbe71b6712429650e3883dc81286edb94c328ffcd24849accac0a4dbcc76958a"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:76bd15bb65c14900d98835fcd10f59e5e0435077431d3a394b60b15864fddd64"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:653b29b0819605fe0898829c8ad6400a6ccde096146730c2da54eede9b7b8baa"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:62a5ec91388984909bb5398ea49ee61b68ecb579123694bffa172c3b0a107079"}, + {file = "pycryptodomex-3.20.0-cp27-cp27mu-musllinux_1_1_aarch64.whl", hash = "sha256:108e5f1c1cd70ffce0b68739c75734437c919d2eaec8e85bffc2c8b4d2794305"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-macosx_10_9_universal2.whl", hash = "sha256:59af01efb011b0e8b686ba7758d59cf4a8263f9ad35911bfe3f416cee4f5c08c"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:82ee7696ed8eb9a82c7037f32ba9b7c59e51dda6f105b39f043b6ef293989cb3"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91852d4480a4537d169c29a9d104dda44094c78f1f5b67bca76c29a91042b623"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca649483d5ed251d06daf25957f802e44e6bb6df2e8f218ae71968ff8f8edc4"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e186342cfcc3aafaad565cbd496060e5a614b441cacc3995ef0091115c1f6c5"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:25cd61e846aaab76d5791d006497134602a9e451e954833018161befc3b5b9ed"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:9c682436c359b5ada67e882fec34689726a09c461efd75b6ea77b2403d5665b7"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:7a7a8f33a1f1fb762ede6cc9cbab8f2a9ba13b196bfaf7bc6f0b39d2ba315a43"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-win32.whl", hash = "sha256:c39778fd0548d78917b61f03c1fa8bfda6cfcf98c767decf360945fe6f97461e"}, + {file = "pycryptodomex-3.20.0-cp35-abi3-win_amd64.whl", hash = "sha256:2a47bcc478741b71273b917232f521fd5704ab4b25d301669879e7273d3586cc"}, + {file = "pycryptodomex-3.20.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:1be97461c439a6af4fe1cf8bf6ca5936d3db252737d2f379cc6b2e394e12a458"}, + {file = "pycryptodomex-3.20.0-pp27-pypy_73-win32.whl", hash = "sha256:19764605feea0df966445d46533729b645033f134baeb3ea26ad518c9fdf212c"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:f2e497413560e03421484189a6b65e33fe800d3bd75590e6d78d4dfdb7accf3b"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e48217c7901edd95f9f097feaa0388da215ed14ce2ece803d3f300b4e694abea"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d00fe8596e1cc46b44bf3907354e9377aa030ec4cd04afbbf6e899fc1e2a7781"}, + {file = "pycryptodomex-3.20.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:88afd7a3af7ddddd42c2deda43d53d3dfc016c11327d0915f90ca34ebda91499"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d3584623e68a5064a04748fb6d76117a21a7cb5eaba20608a41c7d0c61721794"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0daad007b685db36d977f9de73f61f8da2a7104e20aca3effd30752fd56f73e1"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5dcac11031a71348faaed1f403a0debd56bf5404232284cf8c761ff918886ebc"}, + {file = "pycryptodomex-3.20.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:69138068268127cd605e03438312d8f271135a33140e2742b417d027a0539427"}, + {file = "pycryptodomex-3.20.0.tar.gz", hash = "sha256:7a710b79baddd65b806402e14766c721aee8fb83381769c27920f26476276c1e"}, ] [[package]] name = "pydantic" -version = "2.3.0" +version = "2.6.1" description = "Data validation using Python type hints" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic-2.3.0-py3-none-any.whl", hash = "sha256:45b5e446c6dfaad9444819a293b921a40e1db1aa61ea08aede0522529ce90e81"}, - {file = "pydantic-2.3.0.tar.gz", hash = "sha256:1607cc106602284cd4a00882986570472f193fde9cb1259bceeaedb26aa79a6d"}, + {file = "pydantic-2.6.1-py3-none-any.whl", hash = "sha256:0b6a909df3192245cb736509a92ff69e4fef76116feffec68e93a567347bae6f"}, + {file = "pydantic-2.6.1.tar.gz", hash = "sha256:4fd5c182a2488dc63e6d32737ff19937888001e2a6d86e94b3f233104a5d1fa9"}, ] [package.dependencies] annotated-types = ">=0.4.0" -pydantic-core = "2.6.3" +pydantic-core = "2.16.2" typing-extensions = ">=4.6.1" [package.extras] @@ -2841,118 +2826,90 @@ email = ["email-validator (>=2.0.0)"] [[package]] name = "pydantic-core" -version = "2.6.3" +version = "2.16.2" description = "" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:1a0ddaa723c48af27d19f27f1c73bdc615c73686d763388c8683fe34ae777bad"}, - {file = "pydantic_core-2.6.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5cfde4fab34dd1e3a3f7f3db38182ab6c95e4ea91cf322242ee0be5c2f7e3d2f"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5493a7027bfc6b108e17c3383959485087d5942e87eb62bbac69829eae9bc1f7"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:84e87c16f582f5c753b7f39a71bd6647255512191be2d2dbf49458c4ef024588"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:522a9c4a4d1924facce7270c84b5134c5cabcb01513213662a2e89cf28c1d309"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aaafc776e5edc72b3cad1ccedb5fd869cc5c9a591f1213aa9eba31a781be9ac1"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a750a83b2728299ca12e003d73d1264ad0440f60f4fc9cee54acc489249b728"}, - {file = "pydantic_core-2.6.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e8b374ef41ad5c461efb7a140ce4730661aadf85958b5c6a3e9cf4e040ff4bb"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b594b64e8568cf09ee5c9501ede37066b9fc41d83d58f55b9952e32141256acd"}, - {file = "pydantic_core-2.6.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2a20c533cb80466c1d42a43a4521669ccad7cf2967830ac62c2c2f9cece63e7e"}, - {file = "pydantic_core-2.6.3-cp310-none-win32.whl", hash = "sha256:04fe5c0a43dec39aedba0ec9579001061d4653a9b53a1366b113aca4a3c05ca7"}, - {file = "pydantic_core-2.6.3-cp310-none-win_amd64.whl", hash = "sha256:6bf7d610ac8f0065a286002a23bcce241ea8248c71988bda538edcc90e0c39ad"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:6bcc1ad776fffe25ea5c187a028991c031a00ff92d012ca1cc4714087e575973"}, - {file = "pydantic_core-2.6.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:df14f6332834444b4a37685810216cc8fe1fe91f447332cd56294c984ecbff1c"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0b7486d85293f7f0bbc39b34e1d8aa26210b450bbd3d245ec3d732864009819"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a892b5b1871b301ce20d40b037ffbe33d1407a39639c2b05356acfef5536d26a"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:883daa467865e5766931e07eb20f3e8152324f0adf52658f4d302242c12e2c32"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4eb77df2964b64ba190eee00b2312a1fd7a862af8918ec70fc2d6308f76ac64"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ce8c84051fa292a5dc54018a40e2a1926fd17980a9422c973e3ebea017aa8da"}, - {file = "pydantic_core-2.6.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22134a4453bd59b7d1e895c455fe277af9d9d9fbbcb9dc3f4a97b8693e7e2c9b"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:02e1c385095efbd997311d85c6021d32369675c09bcbfff3b69d84e59dc103f6"}, - {file = "pydantic_core-2.6.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d79f1f2f7ebdb9b741296b69049ff44aedd95976bfee38eb4848820628a99b50"}, - {file = "pydantic_core-2.6.3-cp311-none-win32.whl", hash = "sha256:430ddd965ffd068dd70ef4e4d74f2c489c3a313adc28e829dd7262cc0d2dd1e8"}, - {file = "pydantic_core-2.6.3-cp311-none-win_amd64.whl", hash = "sha256:84f8bb34fe76c68c9d96b77c60cef093f5e660ef8e43a6cbfcd991017d375950"}, - {file = "pydantic_core-2.6.3-cp311-none-win_arm64.whl", hash = "sha256:5a2a3c9ef904dcdadb550eedf3291ec3f229431b0084666e2c2aa8ff99a103a2"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:8421cf496e746cf8d6b677502ed9a0d1e4e956586cd8b221e1312e0841c002d5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bb128c30cf1df0ab78166ded1ecf876620fb9aac84d2413e8ea1594b588c735d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37a822f630712817b6ecc09ccc378192ef5ff12e2c9bae97eb5968a6cdf3b862"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:240a015102a0c0cc8114f1cba6444499a8a4d0333e178bc504a5c2196defd456"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3f90e5e3afb11268628c89f378f7a1ea3f2fe502a28af4192e30a6cdea1e7d5e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:340e96c08de1069f3d022a85c2a8c63529fd88709468373b418f4cf2c949fb0e"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1480fa4682e8202b560dcdc9eeec1005f62a15742b813c88cdc01d44e85308e5"}, - {file = "pydantic_core-2.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f14546403c2a1d11a130b537dda28f07eb6c1805a43dae4617448074fd49c282"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a87c54e72aa2ef30189dc74427421e074ab4561cf2bf314589f6af5b37f45e6d"}, - {file = "pydantic_core-2.6.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f93255b3e4d64785554e544c1c76cd32f4a354fa79e2eeca5d16ac2e7fdd57aa"}, - {file = "pydantic_core-2.6.3-cp312-none-win32.whl", hash = "sha256:f70dc00a91311a1aea124e5f64569ea44c011b58433981313202c46bccbec0e1"}, - {file = "pydantic_core-2.6.3-cp312-none-win_amd64.whl", hash = "sha256:23470a23614c701b37252618e7851e595060a96a23016f9a084f3f92f5ed5881"}, - {file = "pydantic_core-2.6.3-cp312-none-win_arm64.whl", hash = "sha256:1ac1750df1b4339b543531ce793b8fd5c16660a95d13aecaab26b44ce11775e9"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:a53e3195f134bde03620d87a7e2b2f2046e0e5a8195e66d0f244d6d5b2f6d31b"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f2969e8f72c6236c51f91fbb79c33821d12a811e2a94b7aa59c65f8dbdfad34a"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:672174480a85386dd2e681cadd7d951471ad0bb028ed744c895f11f9d51b9ebe"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:002d0ea50e17ed982c2d65b480bd975fc41086a5a2f9c924ef8fc54419d1dea3"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ccc13afee44b9006a73d2046068d4df96dc5b333bf3509d9a06d1b42db6d8bf"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:439a0de139556745ae53f9cc9668c6c2053444af940d3ef3ecad95b079bc9987"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d63b7545d489422d417a0cae6f9898618669608750fc5e62156957e609e728a5"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b44c42edc07a50a081672e25dfe6022554b47f91e793066a7b601ca290f71e42"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1c721bfc575d57305dd922e6a40a8fe3f762905851d694245807a351ad255c58"}, - {file = "pydantic_core-2.6.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:5e4a2cf8c4543f37f5dc881de6c190de08096c53986381daebb56a355be5dfe6"}, - {file = "pydantic_core-2.6.3-cp37-none-win32.whl", hash = "sha256:d9b4916b21931b08096efed090327f8fe78e09ae8f5ad44e07f5c72a7eedb51b"}, - {file = "pydantic_core-2.6.3-cp37-none-win_amd64.whl", hash = "sha256:a8acc9dedd304da161eb071cc7ff1326aa5b66aadec9622b2574ad3ffe225525"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:5e9c068f36b9f396399d43bfb6defd4cc99c36215f6ff33ac8b9c14ba15bdf6b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e61eae9b31799c32c5f9b7be906be3380e699e74b2db26c227c50a5fc7988698"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d85463560c67fc65cd86153a4975d0b720b6d7725cf7ee0b2d291288433fc21b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9616567800bdc83ce136e5847d41008a1d602213d024207b0ff6cab6753fe645"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9e9b65a55bbabda7fccd3500192a79f6e474d8d36e78d1685496aad5f9dbd92c"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f468d520f47807d1eb5d27648393519655eadc578d5dd862d06873cce04c4d1b"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9680dd23055dd874173a3a63a44e7f5a13885a4cfd7e84814be71be24fba83db"}, - {file = "pydantic_core-2.6.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9a718d56c4d55efcfc63f680f207c9f19c8376e5a8a67773535e6f7e80e93170"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8ecbac050856eb6c3046dea655b39216597e373aa8e50e134c0e202f9c47efec"}, - {file = "pydantic_core-2.6.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:788be9844a6e5c4612b74512a76b2153f1877cd845410d756841f6c3420230eb"}, - {file = "pydantic_core-2.6.3-cp38-none-win32.whl", hash = "sha256:07a1aec07333bf5adebd8264047d3dc518563d92aca6f2f5b36f505132399efc"}, - {file = "pydantic_core-2.6.3-cp38-none-win_amd64.whl", hash = "sha256:621afe25cc2b3c4ba05fff53525156d5100eb35c6e5a7cf31d66cc9e1963e378"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:813aab5bfb19c98ae370952b6f7190f1e28e565909bfc219a0909db168783465"}, - {file = "pydantic_core-2.6.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:50555ba3cb58f9861b7a48c493636b996a617db1a72c18da4d7f16d7b1b9952b"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19e20f8baedd7d987bd3f8005c146e6bcbda7cdeefc36fad50c66adb2dd2da48"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b0a5d7edb76c1c57b95df719af703e796fc8e796447a1da939f97bfa8a918d60"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f06e21ad0b504658a3a9edd3d8530e8cea5723f6ea5d280e8db8efc625b47e49"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea053cefa008fda40f92aab937fb9f183cf8752e41dbc7bc68917884454c6362"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:171a4718860790f66d6c2eda1d95dd1edf64f864d2e9f9115840840cf5b5713f"}, - {file = "pydantic_core-2.6.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ed7ceca6aba5331ece96c0e328cd52f0dcf942b8895a1ed2642de50800b79d3"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:acafc4368b289a9f291e204d2c4c75908557d4f36bd3ae937914d4529bf62a76"}, - {file = "pydantic_core-2.6.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:1aa712ba150d5105814e53cb141412217146fedc22621e9acff9236d77d2a5ef"}, - {file = "pydantic_core-2.6.3-cp39-none-win32.whl", hash = "sha256:44b4f937b992394a2e81a5c5ce716f3dcc1237281e81b80c748b2da6dd5cf29a"}, - {file = "pydantic_core-2.6.3-cp39-none-win_amd64.whl", hash = "sha256:9b33bf9658cb29ac1a517c11e865112316d09687d767d7a0e4a63d5c640d1b17"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:d7050899026e708fb185e174c63ebc2c4ee7a0c17b0a96ebc50e1f76a231c057"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:99faba727727b2e59129c59542284efebbddade4f0ae6a29c8b8d3e1f437beb7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fa159b902d22b283b680ef52b532b29554ea2a7fc39bf354064751369e9dbd7"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:046af9cfb5384f3684eeb3f58a48698ddab8dd870b4b3f67f825353a14441418"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:930bfe73e665ebce3f0da2c6d64455098aaa67e1a00323c74dc752627879fc67"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:85cc4d105747d2aa3c5cf3e37dac50141bff779545ba59a095f4a96b0a460e70"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:b25afe9d5c4f60dcbbe2b277a79be114e2e65a16598db8abee2a2dcde24f162b"}, - {file = "pydantic_core-2.6.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:e49ce7dc9f925e1fb010fc3d555250139df61fa6e5a0a95ce356329602c11ea9"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-macosx_10_7_x86_64.whl", hash = "sha256:2dd50d6a1aef0426a1d0199190c6c43ec89812b1f409e7fe44cb0fbf6dfa733c"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6595b0d8c8711e8e1dc389d52648b923b809f68ac1c6f0baa525c6440aa0daa"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ef724a059396751aef71e847178d66ad7fc3fc969a1a40c29f5aac1aa5f8784"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3c8945a105f1589ce8a693753b908815e0748f6279959a4530f6742e1994dcb6"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:c8c6660089a25d45333cb9db56bb9e347241a6d7509838dbbd1931d0e19dbc7f"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:692b4ff5c4e828a38716cfa92667661a39886e71136c97b7dac26edef18767f7"}, - {file = "pydantic_core-2.6.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f1a5d8f18877474c80b7711d870db0eeef9442691fcdb00adabfc97e183ee0b0"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:3796a6152c545339d3b1652183e786df648ecdf7c4f9347e1d30e6750907f5bb"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b962700962f6e7a6bd77e5f37320cabac24b4c0f76afeac05e9f93cf0c620014"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56ea80269077003eaa59723bac1d8bacd2cd15ae30456f2890811efc1e3d4413"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c0ebbebae71ed1e385f7dfd9b74c1cff09fed24a6df43d326dd7f12339ec34"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:252851b38bad3bfda47b104ffd077d4f9604a10cb06fe09d020016a25107bf98"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:6656a0ae383d8cd7cc94e91de4e526407b3726049ce8d7939049cbfa426518c8"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:d9140ded382a5b04a1c030b593ed9bf3088243a0a8b7fa9f071a5736498c5483"}, - {file = "pydantic_core-2.6.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d38bbcef58220f9c81e42c255ef0bf99735d8f11edef69ab0b499da77105158a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c9d469204abcca28926cbc28ce98f28e50e488767b084fb3fbdf21af11d3de26"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:48c1ed8b02ffea4d5c9c220eda27af02b8149fe58526359b3c07eb391cb353a2"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2b1bfed698fa410ab81982f681f5b1996d3d994ae8073286515ac4d165c2e7"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf9d42a71a4d7a7c1f14f629e5c30eac451a6fc81827d2beefd57d014c006c4a"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4292ca56751aebbe63a84bbfc3b5717abb09b14d4b4442cc43fd7c49a1529efd"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:7dc2ce039c7290b4ef64334ec7e6ca6494de6eecc81e21cb4f73b9b39991408c"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:615a31b1629e12445c0e9fc8339b41aaa6cc60bd53bf802d5fe3d2c0cda2ae8d"}, - {file = "pydantic_core-2.6.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1fa1f6312fb84e8c281f32b39affe81984ccd484da6e9d65b3d18c202c666149"}, - {file = "pydantic_core-2.6.3.tar.gz", hash = "sha256:1508f37ba9e3ddc0189e6ff4e2228bd2d3c3a4641cbe8c07177162f76ed696c7"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:3fab4e75b8c525a4776e7630b9ee48aea50107fea6ca9f593c98da3f4d11bf7c"}, + {file = "pydantic_core-2.16.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bde5b48c65b8e807409e6f20baee5d2cd880e0fad00b1a811ebc43e39a00ab2"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2924b89b16420712e9bb8192396026a8fbd6d8726224f918353ac19c4c043d2a"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:16aa02e7a0f539098e215fc193c8926c897175d64c7926d00a36188917717a05"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:936a787f83db1f2115ee829dd615c4f684ee48ac4de5779ab4300994d8af325b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:459d6be6134ce3b38e0ef76f8a672924460c455d45f1ad8fdade36796df1ddc8"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f9ee4febb249c591d07b2d4dd36ebcad0ccd128962aaa1801508320896575ef"}, + {file = "pydantic_core-2.16.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:40a0bd0bed96dae5712dab2aba7d334a6c67cbcac2ddfca7dbcc4a8176445990"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:870dbfa94de9b8866b37b867a2cb37a60c401d9deb4a9ea392abf11a1f98037b"}, + {file = "pydantic_core-2.16.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:308974fdf98046db28440eb3377abba274808bf66262e042c412eb2adf852731"}, + {file = "pydantic_core-2.16.2-cp310-none-win32.whl", hash = "sha256:a477932664d9611d7a0816cc3c0eb1f8856f8a42435488280dfbf4395e141485"}, + {file = "pydantic_core-2.16.2-cp310-none-win_amd64.whl", hash = "sha256:8f9142a6ed83d90c94a3efd7af8873bf7cefed2d3d44387bf848888482e2d25f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:406fac1d09edc613020ce9cf3f2ccf1a1b2f57ab00552b4c18e3d5276c67eb11"}, + {file = "pydantic_core-2.16.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ce232a6170dd6532096cadbf6185271e4e8c70fc9217ebe105923ac105da9978"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a90fec23b4b05a09ad988e7a4f4e081711a90eb2a55b9c984d8b74597599180f"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aafeedb6597a163a9c9727d8a8bd363a93277701b7bfd2749fbefee2396469e"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9957433c3a1b67bdd4c63717eaf174ebb749510d5ea612cd4e83f2d9142f3fc8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b0d7a9165167269758145756db43a133608a531b1e5bb6a626b9ee24bc38a8f7"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dffaf740fe2e147fedcb6b561353a16243e654f7fe8e701b1b9db148242e1272"}, + {file = "pydantic_core-2.16.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f8ed79883b4328b7f0bd142733d99c8e6b22703e908ec63d930b06be3a0e7113"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cf903310a34e14651c9de056fcc12ce090560864d5a2bb0174b971685684e1d8"}, + {file = "pydantic_core-2.16.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:46b0d5520dbcafea9a8645a8164658777686c5c524d381d983317d29687cce97"}, + {file = "pydantic_core-2.16.2-cp311-none-win32.whl", hash = "sha256:70651ff6e663428cea902dac297066d5c6e5423fda345a4ca62430575364d62b"}, + {file = "pydantic_core-2.16.2-cp311-none-win_amd64.whl", hash = "sha256:98dc6f4f2095fc7ad277782a7c2c88296badcad92316b5a6e530930b1d475ebc"}, + {file = "pydantic_core-2.16.2-cp311-none-win_arm64.whl", hash = "sha256:ef6113cd31411eaf9b39fc5a8848e71c72656fd418882488598758b2c8c6dfa0"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:88646cae28eb1dd5cd1e09605680c2b043b64d7481cdad7f5003ebef401a3039"}, + {file = "pydantic_core-2.16.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7b883af50eaa6bb3299780651e5be921e88050ccf00e3e583b1e92020333304b"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bf26c2e2ea59d32807081ad51968133af3025c4ba5753e6a794683d2c91bf6e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:99af961d72ac731aae2a1b55ccbdae0733d816f8bfb97b41909e143de735f522"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02906e7306cb8c5901a1feb61f9ab5e5c690dbbeaa04d84c1b9ae2a01ebe9379"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5362d099c244a2d2f9659fb3c9db7c735f0004765bbe06b99be69fbd87c3f15"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ac426704840877a285d03a445e162eb258924f014e2f074e209d9b4ff7bf380"}, + {file = "pydantic_core-2.16.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b94cbda27267423411c928208e89adddf2ea5dd5f74b9528513f0358bba019cb"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:6db58c22ac6c81aeac33912fb1af0e930bc9774166cdd56eade913d5f2fff35e"}, + {file = "pydantic_core-2.16.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:396fdf88b1b503c9c59c84a08b6833ec0c3b5ad1a83230252a9e17b7dfb4cffc"}, + {file = "pydantic_core-2.16.2-cp312-none-win32.whl", hash = "sha256:7c31669e0c8cc68400ef0c730c3a1e11317ba76b892deeefaf52dcb41d56ed5d"}, + {file = "pydantic_core-2.16.2-cp312-none-win_amd64.whl", hash = "sha256:a3b7352b48fbc8b446b75f3069124e87f599d25afb8baa96a550256c031bb890"}, + {file = "pydantic_core-2.16.2-cp312-none-win_arm64.whl", hash = "sha256:a9e523474998fb33f7c1a4d55f5504c908d57add624599e095c20fa575b8d943"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:ae34418b6b389d601b31153b84dce480351a352e0bb763684a1b993d6be30f17"}, + {file = "pydantic_core-2.16.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:732bd062c9e5d9582a30e8751461c1917dd1ccbdd6cafb032f02c86b20d2e7ec"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4b52776a2e3230f4854907a1e0946eec04d41b1fc64069ee774876bbe0eab55"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ef551c053692b1e39e3f7950ce2296536728871110e7d75c4e7753fb30ca87f4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ebb892ed8599b23fa8f1799e13a12c87a97a6c9d0f497525ce9858564c4575a4"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aa6c8c582036275997a733427b88031a32ffa5dfc3124dc25a730658c47a572f"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4ba0884a91f1aecce75202473ab138724aa4fb26d7707f2e1fa6c3e68c84fbf"}, + {file = "pydantic_core-2.16.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7924e54f7ce5d253d6160090ddc6df25ed2feea25bfb3339b424a9dd591688bc"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:69a7b96b59322a81c2203be537957313b07dd333105b73db0b69212c7d867b4b"}, + {file = "pydantic_core-2.16.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:7e6231aa5bdacda78e96ad7b07d0c312f34ba35d717115f4b4bff6cb87224f0f"}, + {file = "pydantic_core-2.16.2-cp38-none-win32.whl", hash = "sha256:41dac3b9fce187a25c6253ec79a3f9e2a7e761eb08690e90415069ea4a68ff7a"}, + {file = "pydantic_core-2.16.2-cp38-none-win_amd64.whl", hash = "sha256:f685dbc1fdadb1dcd5b5e51e0a378d4685a891b2ddaf8e2bba89bd3a7144e44a"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:55749f745ebf154c0d63d46c8c58594d8894b161928aa41adbb0709c1fe78b77"}, + {file = "pydantic_core-2.16.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:b30b0dd58a4509c3bd7eefddf6338565c4905406aee0c6e4a5293841411a1286"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18de31781cdc7e7b28678df7c2d7882f9692ad060bc6ee3c94eb15a5d733f8f7"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5864b0242f74b9dd0b78fd39db1768bc3f00d1ffc14e596fd3e3f2ce43436a33"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8f9186ca45aee030dc8234118b9c0784ad91a0bb27fc4e7d9d6608a5e3d386c"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cc6f6c9be0ab6da37bc77c2dda5f14b1d532d5dbef00311ee6e13357a418e646"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa057095f621dad24a1e906747179a69780ef45cc8f69e97463692adbcdae878"}, + {file = "pydantic_core-2.16.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ad84731a26bcfb299f9eab56c7932d46f9cad51c52768cace09e92a19e4cf55"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:3b052c753c4babf2d1edc034c97851f867c87d6f3ea63a12e2700f159f5c41c3"}, + {file = "pydantic_core-2.16.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e0f686549e32ccdb02ae6f25eee40cc33900910085de6aa3790effd391ae10c2"}, + {file = "pydantic_core-2.16.2-cp39-none-win32.whl", hash = "sha256:7afb844041e707ac9ad9acad2188a90bffce2c770e6dc2318be0c9916aef1469"}, + {file = "pydantic_core-2.16.2-cp39-none-win_amd64.whl", hash = "sha256:9da90d393a8227d717c19f5397688a38635afec89f2e2d7af0df037f3249c39a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:5f60f920691a620b03082692c378661947d09415743e437a7478c309eb0e4f82"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:47924039e785a04d4a4fa49455e51b4eb3422d6eaacfde9fc9abf8fdef164e8a"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e6294e76b0380bb7a61eb8a39273c40b20beb35e8c87ee101062834ced19c545"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe56851c3f1d6f5384b3051c536cc81b3a93a73faf931f404fef95217cf1e10d"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9d776d30cde7e541b8180103c3f294ef7c1862fd45d81738d156d00551005784"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:72f7919af5de5ecfaf1eba47bf9a5d8aa089a3340277276e5636d16ee97614d7"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:4bfcbde6e06c56b30668a0c872d75a7ef3025dc3c1823a13cf29a0e9b33f67e8"}, + {file = "pydantic_core-2.16.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ff7c97eb7a29aba230389a2661edf2e9e06ce616c7e35aa764879b6894a44b25"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9b5f13857da99325dcabe1cc4e9e6a3d7b2e2c726248ba5dd4be3e8e4a0b6d0e"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:a7e41e3ada4cca5f22b478c08e973c930e5e6c7ba3588fb8e35f2398cdcc1545"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60eb8ceaa40a41540b9acae6ae7c1f0a67d233c40dc4359c256ad2ad85bdf5e5"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7beec26729d496a12fd23cf8da9944ee338c8b8a17035a560b585c36fe81af20"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:22c5f022799f3cd6741e24f0443ead92ef42be93ffda0d29b2597208c94c3753"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:eca58e319f4fd6df004762419612122b2c7e7d95ffafc37e890252f869f3fb2a"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:ed957db4c33bc99895f3a1672eca7e80e8cda8bd1e29a80536b4ec2153fa9804"}, + {file = "pydantic_core-2.16.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:459c0d338cc55d099798618f714b21b7ece17eb1a87879f2da20a3ff4c7628e2"}, + {file = "pydantic_core-2.16.2.tar.gz", hash = "sha256:0ba503850d8b8dcc18391f10de896ae51d37fe5fe43dbfb6a35c5c5cad271a06"}, ] [package.dependencies] @@ -2960,40 +2917,38 @@ typing-extensions = ">=4.6.0,<4.7.0 || >4.7.0" [[package]] name = "pydantic-settings" -version = "2.0.3" +version = "2.1.0" description = "Settings management using Pydantic" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pydantic_settings-2.0.3-py3-none-any.whl", hash = "sha256:ddd907b066622bd67603b75e2ff791875540dc485b7307c4fffc015719da8625"}, - {file = "pydantic_settings-2.0.3.tar.gz", hash = "sha256:962dc3672495aad6ae96a4390fac7e593591e144625e5112d359f8f67fb75945"}, + {file = "pydantic_settings-2.1.0-py3-none-any.whl", hash = "sha256:7621c0cb5d90d1140d2f0ef557bdf03573aac7035948109adf2574770b77605a"}, + {file = "pydantic_settings-2.1.0.tar.gz", hash = "sha256:26b1492e0a24755626ac5e6d715e9077ab7ad4fb5f19a8b7ed7011d52f36141c"}, ] [package.dependencies] -pydantic = ">=2.0.1" +pydantic = ">=2.3.0" python-dotenv = ">=0.21.0" [[package]] name = "pygments" -version = "2.16.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, + {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, + {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, ] [package.extras] plugins = ["importlib-metadata"] +windows-terminal = ["colorama (>=0.4.6)"] [[package]] name = "pyjwkest" version = "1.4.2" description = "Python implementation of JWT, JWE, JWS and JWK" -category = "main" optional = false python-versions = "*" files = [ @@ -3008,14 +2963,13 @@ six = "*" [[package]] name = "pyparsing" -version = "3.0.9" +version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, - {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, + {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, + {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, ] [package.extras] @@ -3023,14 +2977,13 @@ diagrams = ["jinja2", "railroad-diagrams"] [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.4" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.4-py3-none-any.whl", hash = "sha256:b090cdf5ed60bf4c45261be03239c2c1c22df034fbffe691abe93cd80cea01d8"}, + {file = "pytest-7.4.4.tar.gz", hash = "sha256:2cf0005922c6ace4a3e2ec8b4080eb0d9753fdc93107415332f50ce9e7994280"}, ] [package.dependencies] @@ -3048,7 +3001,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -3061,14 +3013,13 @@ six = ">=1.5" [[package]] name = "python-dotenv" -version = "1.0.0" +version = "1.0.1" description = "Read key-value pairs from a .env file and set them as environment variables" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "python-dotenv-1.0.0.tar.gz", hash = "sha256:a8df96034aae6d2d50a4ebe8216326c61c3eb64836776504fcca410e5937a3ba"}, - {file = "python_dotenv-1.0.0-py3-none-any.whl", hash = "sha256:f5971a9226b701070a4bf2c38c89e5a3f0d64de8debda981d1db98583009122a"}, + {file = "python-dotenv-1.0.1.tar.gz", hash = "sha256:e324ee90a023d808f1959c46bcbc04446a10ced277783dc6ee09987c37ec10ca"}, + {file = "python_dotenv-1.0.1-py3-none-any.whl", hash = "sha256:f7b63ef50f1b690dddf550d03497b66d609393b40b564ed0d674909a68ebf16a"}, ] [package.extras] @@ -3078,7 +3029,6 @@ cli = ["click (>=5.0)"] name = "python-jose" version = "3.3.0" description = "JOSE implementation in Python" -category = "main" optional = false python-versions = "*" files = [ @@ -3100,7 +3050,6 @@ pycryptodome = ["pyasn1", "pycryptodome (>=3.3.1,<4.0.0)"] name = "python-json-logger" version = "2.0.7" description = "A python library adding a json log formatter" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3110,42 +3059,39 @@ files = [ [[package]] name = "python-keycloak" -version = "3.3.0" +version = "3.9.0" description = "python-keycloak is a Python package providing access to the Keycloak API." -category = "main" optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8,<4.0" files = [ - {file = "python_keycloak-3.3.0-py3-none-any.whl", hash = "sha256:57cd0bd0610e07ad11888197d3f753a00611cb9975742e70444b93a566889a51"}, - {file = "python_keycloak-3.3.0.tar.gz", hash = "sha256:cc868126f535aa4f320dc9eab24e46af381c13bcc88d9b0701b04293ea75cd24"}, + {file = "python_keycloak-3.9.0-py3-none-any.whl", hash = "sha256:ce6a33af5840469e71090b8f556b67488561c723693f3581396ed088bce0665a"}, + {file = "python_keycloak-3.9.0.tar.gz", hash = "sha256:4c2cd580ded92326b74a376fe453519b3a6db019803032cae26a4b9099e1afd0"}, ] [package.dependencies] deprecation = ">=2.1.0" python-jose = ">=3.3.0" requests = ">=2.20.0" -requests-toolbelt = ">=1.0.0" +requests-toolbelt = ">=0.6.0" [package.extras] -docs = ["Sphinx (>=5.3.0,<6.0.0)", "alabaster (>=0.7.12,<0.8.0)", "commonmark (>=0.9.1,<0.10.0)", "m2r2 (>=0.3.2,<0.4.0)", "mock (>=4.0.3,<5.0.0)", "readthedocs-sphinx-ext (>=2.1.9,<3.0.0)", "recommonmark (>=0.7.1,<0.8.0)", "sphinx-autoapi (>=2.0.0,<3.0.0)", "sphinx-rtd-theme (>=1.0.0,<2.0.0)"] +docs = ["Sphinx (>=6.1.0,<7.0.0)", "alabaster (>=0.7.12,<0.8.0)", "commonmark (>=0.9.1,<0.10.0)", "m2r2 (>=0.3.2,<0.4.0)", "mock (>=4.0.3,<5.0.0)", "readthedocs-sphinx-ext (>=2.1.9,<3.0.0)", "recommonmark (>=0.7.1,<0.8.0)", "sphinx-autoapi (>=3.0.0,<4.0.0)", "sphinx-rtd-theme (>=1.0.0,<2.0.0)"] [[package]] name = "pytz" -version = "2023.3" +version = "2024.1" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2024.1-py2.py3-none-any.whl", hash = "sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319"}, + {file = "pytz-2024.1.tar.gz", hash = "sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812"}, ] [[package]] name = "pywin32" version = "306" description = "Python for Window Extensions" -category = "main" optional = false python-versions = "*" files = [ @@ -3167,24 +3113,23 @@ files = [ [[package]] name = "pywinpty" -version = "2.0.11" +version = "2.0.12" description = "Pseudo terminal support for Windows from Python." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "pywinpty-2.0.11-cp310-none-win_amd64.whl", hash = "sha256:452f10ac9ff8ab9151aa8cea9e491a9612a12250b1899278c6a56bc184afb47f"}, - {file = "pywinpty-2.0.11-cp311-none-win_amd64.whl", hash = "sha256:6701867d42aec1239bc0fedf49a336570eb60eb886e81763db77ea2b6c533cc3"}, - {file = "pywinpty-2.0.11-cp38-none-win_amd64.whl", hash = "sha256:0ffd287751ad871141dc9724de70ea21f7fc2ff1af50861e0d232cf70739d8c4"}, - {file = "pywinpty-2.0.11-cp39-none-win_amd64.whl", hash = "sha256:e4e7f023c28ca7aa8e1313e53ba80a4d10171fe27857b7e02f99882dfe3e8638"}, - {file = "pywinpty-2.0.11.tar.gz", hash = "sha256:e244cffe29a894876e2cd251306efd0d8d64abd5ada0a46150a4a71c0b9ad5c5"}, + {file = "pywinpty-2.0.12-cp310-none-win_amd64.whl", hash = "sha256:21319cd1d7c8844fb2c970fb3a55a3db5543f112ff9cfcd623746b9c47501575"}, + {file = "pywinpty-2.0.12-cp311-none-win_amd64.whl", hash = "sha256:853985a8f48f4731a716653170cd735da36ffbdc79dcb4c7b7140bce11d8c722"}, + {file = "pywinpty-2.0.12-cp312-none-win_amd64.whl", hash = "sha256:1617b729999eb6713590e17665052b1a6ae0ad76ee31e60b444147c5b6a35dca"}, + {file = "pywinpty-2.0.12-cp38-none-win_amd64.whl", hash = "sha256:189380469ca143d06e19e19ff3fba0fcefe8b4a8cc942140a6b863aed7eebb2d"}, + {file = "pywinpty-2.0.12-cp39-none-win_amd64.whl", hash = "sha256:7520575b6546db23e693cbd865db2764097bd6d4ef5dc18c92555904cd62c3d4"}, + {file = "pywinpty-2.0.12.tar.gz", hash = "sha256:8197de460ae8ebb7f5d1701dfa1b5df45b157bb832e92acba316305e18ca00dd"}, ] [[package]] name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3232,105 +3177,104 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.1" +version = "25.1.2" description = "Python bindings for 0MQ" -category = "main" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, - {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, - {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, - {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, - {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, - {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, - {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, - {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, - {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, - {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, - {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, - {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, - {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, - {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, - {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, - {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, - {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, - {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, - {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, - {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, - {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, - {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, - {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, - {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, - {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, - {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, - {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, - {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, - {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, - {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, - {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, - {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, - {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, - {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, - {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, - {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, - {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, - {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, + {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, + {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, + {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, + {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, + {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, + {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, + {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, + {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, + {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, + {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, + {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, + {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, + {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, + {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, + {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, + {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, + {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, + {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, + {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, + {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, + {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, + {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, + {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, + {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, + {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, + {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, + {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, + {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, + {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, + {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, + {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, + {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, + {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, + {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, + {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, + {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, + {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, ] [package.dependencies] @@ -3338,25 +3282,23 @@ cffi = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qtconsole" -version = "5.4.3" +version = "5.5.1" description = "Jupyter Qt console" -category = "main" optional = false -python-versions = ">= 3.7" +python-versions = ">= 3.8" files = [ - {file = "qtconsole-5.4.3-py3-none-any.whl", hash = "sha256:35fd6e87b1f6d1fd41801b07e69339f8982e76afd4fa8ef35595bc6036717189"}, - {file = "qtconsole-5.4.3.tar.gz", hash = "sha256:5e4082a86a201796b2a5cfd4298352d22b158b51b57736531824715fc2a979dd"}, + {file = "qtconsole-5.5.1-py3-none-any.whl", hash = "sha256:8c75fa3e9b4ed884880ff7cea90a1b67451219279ec33deaee1d59e3df1a5d2b"}, + {file = "qtconsole-5.5.1.tar.gz", hash = "sha256:a0e806c6951db9490628e4df80caec9669b65149c7ba40f9bf033c025a5b56bc"}, ] [package.dependencies] ipykernel = ">=4.1" -ipython-genutils = "*" jupyter-client = ">=4.1" jupyter-core = "*" packaging = "*" pygments = "*" pyzmq = ">=17.1" -qtpy = ">=2.0.1" +qtpy = ">=2.4.0" traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" [package.extras] @@ -3365,14 +3307,13 @@ test = ["flaky", "pytest", "pytest-qt"] [[package]] name = "qtpy" -version = "2.4.0" +version = "2.4.1" description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "QtPy-2.4.0-py3-none-any.whl", hash = "sha256:4d4f045a41e09ac9fa57fcb47ef05781aa5af294a0a646acc1b729d14225e741"}, - {file = "QtPy-2.4.0.tar.gz", hash = "sha256:db2d508167aa6106781565c8da5c6f1487debacba33519cedc35fa8997d424d4"}, + {file = "QtPy-2.4.1-py3-none-any.whl", hash = "sha256:1c1d8c4fa2c884ae742b069151b0abe15b3f70491f3972698c683b8e38de839b"}, + {file = "QtPy-2.4.1.tar.gz", hash = "sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987"}, ] [package.dependencies] @@ -3383,14 +3324,13 @@ test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] [[package]] name = "referencing" -version = "0.30.2" +version = "0.33.0" description = "JSON Referencing + Python" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.33.0-py3-none-any.whl", hash = "sha256:39240f2ecc770258f28b642dd47fd74bc8b02484de54e1882b74b35ebd779bd5"}, + {file = "referencing-0.33.0.tar.gz", hash = "sha256:c775fedf74bc0f9189c2a3be1c12fd03e8c23f4d371dce795df44e06c5b412f7"}, ] [package.dependencies] @@ -3401,7 +3341,6 @@ rpds-py = ">=0.7.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3423,7 +3362,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-toolbelt" version = "1.0.0" description = "A utility belt for advanced users of python-requests" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -3438,7 +3376,6 @@ requests = ">=2.0.1,<3.0.0" name = "resampy" version = "0.4.2" description = "Efficient signal resampling" -category = "main" optional = false python-versions = "*" files = [ @@ -3459,7 +3396,6 @@ tests = ["pytest (<8)", "pytest-cov", "scipy (>=1.0)"] name = "rfc3339-validator" version = "0.1.4" description = "A pure python RFC3339 validator" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3474,7 +3410,6 @@ six = "*" name = "rfc3986-validator" version = "0.1.1" description = "Pure python rfc3986 validator" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -3484,116 +3419,116 @@ files = [ [[package]] name = "rpds-py" -version = "0.10.0" +version = "0.18.0" description = "Python bindings to Rust's persistent data structures (rpds)" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.10.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:c1e0e9916301e3b3d970814b1439ca59487f0616d30f36a44cead66ee1748c31"}, - {file = "rpds_py-0.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8ce8caa29ebbdcde67e5fd652c811d34bc01f249dbc0d61e5cc4db05ae79a83b"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad277f74b1c164f7248afa968700e410651eb858d7c160d109fb451dc45a2f09"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8e1c68303ccf7fceb50fbab79064a2636119fd9aca121f28453709283dbca727"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:780fcb855be29153901c67fc9c5633d48aebef21b90aa72812fa181d731c6b00"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bbd7b24d108509a1b9b6679fcc1166a7dd031dbef1f3c2c73788f42e3ebb3beb"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0700c2133ba203c4068aaecd6a59bda22e06a5e46255c9da23cbf68c6942215d"}, - {file = "rpds_py-0.10.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:576da63eae7809f375932bfcbca2cf20620a1915bf2fedce4b9cc8491eceefe3"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:23750a9b8a329844ba1fe267ca456bb3184984da2880ed17ae641c5af8de3fef"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:d08395595c42bcd82c3608762ce734504c6d025eef1c06f42326a6023a584186"}, - {file = "rpds_py-0.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1d7b7b71bcb82d8713c7c2e9c5f061415598af5938666beded20d81fa23e7640"}, - {file = "rpds_py-0.10.0-cp310-none-win32.whl", hash = "sha256:97f5811df21703446b42303475b8b855ee07d6ab6cdf8565eff115540624f25d"}, - {file = "rpds_py-0.10.0-cp310-none-win_amd64.whl", hash = "sha256:cdbed8f21204398f47de39b0a9b180d7e571f02dfb18bf5f1b618e238454b685"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:7a3a3d3e4f1e3cd2a67b93a0b6ed0f2499e33f47cc568e3a0023e405abdc0ff1"}, - {file = "rpds_py-0.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fc72ae476732cdb7b2c1acb5af23b478b8a0d4b6fcf19b90dd150291e0d5b26b"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c0583f69522732bdd79dca4cd3873e63a29acf4a299769c7541f2ca1e4dd4bc6"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f8b9a7cd381970e64849070aca7c32d53ab7d96c66db6c2ef7aa23c6e803f514"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0d292cabd7c8335bdd3237ded442480a249dbcdb4ddfac5218799364a01a0f5c"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6903cdca64f1e301af9be424798328c1fe3b4b14aede35f04510989fc72f012"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bed57543c99249ab3a4586ddc8786529fbc33309e5e8a1351802a06ca2baf4c2"}, - {file = "rpds_py-0.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:15932ec5f224b0e35764dc156514533a4fca52dcfda0dfbe462a1a22b37efd59"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eb2d59bc196e6d3b1827c7db06c1a898bfa0787c0574af398e65ccf2e97c0fbe"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f99d74ddf9d3b6126b509e81865f89bd1283e3fc1b568b68cd7bd9dfa15583d7"}, - {file = "rpds_py-0.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f70bec8a14a692be6dbe7ce8aab303e88df891cbd4a39af091f90b6702e28055"}, - {file = "rpds_py-0.10.0-cp311-none-win32.whl", hash = "sha256:5f7487be65b9c2c510819e744e375bd41b929a97e5915c4852a82fbb085df62c"}, - {file = "rpds_py-0.10.0-cp311-none-win_amd64.whl", hash = "sha256:748e472345c3a82cfb462d0dff998a7bf43e621eed73374cb19f307e97e08a83"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:d4639111e73997567343df6551da9dd90d66aece1b9fc26c786d328439488103"}, - {file = "rpds_py-0.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f4760e1b02173f4155203054f77a5dc0b4078de7645c922b208d28e7eb99f3e2"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a6420a36975e0073acaeee44ead260c1f6ea56812cfc6c31ec00c1c48197173"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:58fc4d66ee349a23dbf08c7e964120dc9027059566e29cf0ce6205d590ed7eca"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:063411228b852fb2ed7485cf91f8e7d30893e69b0acb207ec349db04cccc8225"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65af12f70355de29e1092f319f85a3467f4005e959ab65129cb697169ce94b86"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298e8b5d8087e0330aac211c85428c8761230ef46a1f2c516d6a2f67fb8803c5"}, - {file = "rpds_py-0.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5b9bf77008f2c55dabbd099fd3ac87009471d223a1c7ebea36873d39511b780a"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c7853f27195598e550fe089f78f0732c66ee1d1f0eaae8ad081589a5a2f5d4af"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:75dbfd41a61bc1fb0536bf7b1abf272dc115c53d4d77db770cd65d46d4520882"}, - {file = "rpds_py-0.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b25136212a3d064a8f0b9ebbb6c57094c5229e0de76d15c79b76feff26aeb7b8"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:9affee8cb1ec453382c27eb9043378ab32f49cd4bc24a24275f5c39bf186c279"}, - {file = "rpds_py-0.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4d55528ef13af4b4e074d067977b1f61408602f53ae4537dccf42ba665c2c7bd"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7865df1fb564092bcf46dac61b5def25342faf6352e4bc0e61a286e3fa26a3d"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3f5cc8c7bc99d2bbcd704cef165ca7d155cd6464c86cbda8339026a42d219397"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbae50d352e4717ffc22c566afc2d0da744380e87ed44a144508e3fb9114a3f4"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fccbf0cd3411719e4c9426755df90bf3449d9fc5a89f077f4a7f1abd4f70c910"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78d10c431073dc6ebceed35ab22948a016cc2b5120963c13a41e38bdde4a7212"}, - {file = "rpds_py-0.10.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1b401e8b9aece651512e62c431181e6e83048a651698a727ea0eb0699e9f9b74"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:7618a082c55cf038eede4a918c1001cc8a4411dfe508dc762659bcd48d8f4c6e"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:b3226b246facae14909b465061ddcfa2dfeadb6a64f407f24300d42d69bcb1a1"}, - {file = "rpds_py-0.10.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:a8edd467551c1102dc0f5754ab55cd0703431cd3044edf8c8e7d9208d63fa453"}, - {file = "rpds_py-0.10.0-cp38-none-win32.whl", hash = "sha256:71333c22f7cf5f0480b59a0aef21f652cf9bbaa9679ad261b405b65a57511d1e"}, - {file = "rpds_py-0.10.0-cp38-none-win_amd64.whl", hash = "sha256:a8ab1adf04ae2d6d65835995218fd3f3eb644fe20655ca8ee233e2c7270ff53b"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:87c93b25d538c433fb053da6228c6290117ba53ff6a537c133b0f2087948a582"}, - {file = "rpds_py-0.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:5e7996aed3f65667c6dcc8302a69368435a87c2364079a066750a2eac75ea01e"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8856aa76839dc234d3469f1e270918ce6bec1d6a601eba928f45d68a15f04fc3"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:00215f6a9058fbf84f9d47536902558eb61f180a6b2a0fa35338d06ceb9a2e5a"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:23a059143c1393015c68936370cce11690f7294731904bdae47cc3e16d0b2474"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3e5c26905aa651cc8c0ddc45e0e5dea2a1296f70bdc96af17aee9d0493280a17"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c651847545422c8131660704c58606d841e228ed576c8f1666d98b3d318f89da"}, - {file = "rpds_py-0.10.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80992eb20755701753e30a6952a96aa58f353d12a65ad3c9d48a8da5ec4690cf"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:ffcf18ad3edf1c170e27e88b10282a2c449aa0358659592462448d71b2000cfc"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:08e08ccf5b10badb7d0a5c84829b914c6e1e1f3a716fdb2bf294e2bd01562775"}, - {file = "rpds_py-0.10.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:7150b83b3e3ddaac81a8bb6a9b5f93117674a0e7a2b5a5b32ab31fdfea6df27f"}, - {file = "rpds_py-0.10.0-cp39-none-win32.whl", hash = "sha256:3455ecc46ea443b5f7d9c2f946ce4017745e017b0d0f8b99c92564eff97e97f5"}, - {file = "rpds_py-0.10.0-cp39-none-win_amd64.whl", hash = "sha256:afe6b5a04b2ab1aa89bad32ca47bf71358e7302a06fdfdad857389dca8fb5f04"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:b1cb078f54af0abd835ca76f93a3152565b73be0f056264da45117d0adf5e99c"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8e7e2b3577e97fa43c2c2b12a16139b2cedbd0770235d5179c0412b4794efd9b"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae46a50d235f1631d9ec4670503f7b30405103034830bc13df29fd947207f795"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f869e34d2326e417baee430ae998e91412cc8e7fdd83d979277a90a0e79a5b47"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d544a614055b131111bed6edfa1cb0fb082a7265761bcb03321f2dd7b5c6c48"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ee9c2f6ca9774c2c24bbf7b23086264e6b5fa178201450535ec0859739e6f78d"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2da4a8c6d465fde36cea7d54bf47b5cf089073452f0e47c8632ecb9dec23c07"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac00c41dd315d147b129976204839ca9de699d83519ff1272afbe4fb9d362d12"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0155c33af0676fc38e1107679be882077680ad1abb6303956b97259c3177e85e"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:db6585b600b2e76e98131e0ac0e5195759082b51687ad0c94505970c90718f4a"}, - {file = "rpds_py-0.10.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:7b6975d3763d0952c111700c0634968419268e6bbc0b55fe71138987fa66f309"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:6388e4e95a26717b94a05ced084e19da4d92aca883f392dffcf8e48c8e221a24"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:18f87baa20e02e9277ad8960cd89b63c79c05caf106f4c959a9595c43f2a34a5"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92f05fc7d832e970047662b3440b190d24ea04f8d3c760e33e7163b67308c878"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:291c9ce3929a75b45ce8ddde2aa7694fc8449f2bc8f5bd93adf021efaae2d10b"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:861d25ae0985a1dd5297fee35f476b60c6029e2e6e19847d5b4d0a43a390b696"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:668d2b45d62c68c7a370ac3dce108ffda482b0a0f50abd8b4c604a813a59e08f"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:344b89384c250ba6a4ce1786e04d01500e4dac0f4137ceebcaad12973c0ac0b3"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:885e023e73ce09b11b89ab91fc60f35d80878d2c19d6213a32b42ff36543c291"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:841128a22e6ac04070a0f84776d07e9c38c4dcce8e28792a95e45fc621605517"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:899b5e7e2d5a8bc92aa533c2d4e55e5ebba095c485568a5e4bedbc163421259a"}, - {file = "rpds_py-0.10.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e7947d9a6264c727a556541b1630296bbd5d0a05068d21c38dde8e7a1c703ef0"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4992266817169997854f81df7f6db7bdcda1609972d8ffd6919252f09ec3c0f6"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:26d9fd624649a10e4610fab2bc820e215a184d193e47d0be7fe53c1c8f67f370"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0028eb0967942d0d2891eae700ae1a27b7fd18604cfcb16a1ef486a790fee99e"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f9e7e493ded7042712a374471203dd43ae3fff5b81e3de1a0513fa241af9fd41"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d68a8e8a3a816629283faf82358d8c93fe5bd974dd2704152394a3de4cec22a"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d6d5f061f6a2aa55790b9e64a23dfd87b6664ab56e24cd06c78eb43986cb260b"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c7c4266c1b61eb429e8aeb7d8ed6a3bfe6c890a1788b18dbec090c35c6b93fa"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:80772e3bda6787510d9620bc0c7572be404a922f8ccdfd436bf6c3778119464c"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b98e75b21fc2ba5285aef8efaf34131d16af1c38df36bdca2f50634bea2d3060"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:d63787f289944cc4bde518ad2b5e70a4f0d6e2ce76324635359c74c113fd188f"}, - {file = "rpds_py-0.10.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:872f3dcaa8bf2245944861d7311179d2c0c9b2aaa7d3b464d99a7c2e401f01fa"}, - {file = "rpds_py-0.10.0.tar.gz", hash = "sha256:e36d7369363d2707d5f68950a64c4e025991eb0177db01ccb6aa6facae48b69f"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, + {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, + {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, + {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, + {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, + {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, + {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, + {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, + {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, + {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, + {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, + {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, + {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, + {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, + {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, + {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, + {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, + {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, + {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, + {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, + {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, + {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, + {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, + {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, + {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, + {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, + {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, + {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, + {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, + {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, ] [[package]] name = "rsa" version = "4.9" description = "Pure-Python RSA implementation" -category = "main" optional = false python-versions = ">=3.6,<4" files = [ @@ -3606,95 +3541,113 @@ pyasn1 = ">=0.1.3" [[package]] name = "scikit-learn" -version = "1.3.0" +version = "1.4.1.post1" description = "A set of python modules for machine learning and data mining" -category = "main" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "scikit-learn-1.3.0.tar.gz", hash = "sha256:8be549886f5eda46436b6e555b0e4873b4f10aa21c07df45c4bc1735afbccd7a"}, - {file = "scikit_learn-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:981287869e576d42c682cf7ca96af0c6ac544ed9316328fd0d9292795c742cf5"}, - {file = "scikit_learn-1.3.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:436aaaae2c916ad16631142488e4c82f4296af2404f480e031d866863425d2a2"}, - {file = "scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7e28d8fa47a0b30ae1bd7a079519dd852764e31708a7804da6cb6f8b36e3630"}, - {file = "scikit_learn-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80c08834a473d08a204d966982a62e11c976228d306a2648c575e3ead12111"}, - {file = "scikit_learn-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:552fd1b6ee22900cf1780d7386a554bb96949e9a359999177cf30211e6b20df6"}, - {file = "scikit_learn-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:79970a6d759eb00a62266a31e2637d07d2d28446fca8079cf9afa7c07b0427f8"}, - {file = "scikit_learn-1.3.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:850a00b559e636b23901aabbe79b73dc604b4e4248ba9e2d6e72f95063765603"}, - {file = "scikit_learn-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee04835fb016e8062ee9fe9074aef9b82e430504e420bff51e3e5fffe72750ca"}, - {file = "scikit_learn-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d953531f5d9f00c90c34fa3b7d7cfb43ecff4c605dac9e4255a20b114a27369"}, - {file = "scikit_learn-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:151ac2bf65ccf363664a689b8beafc9e6aae36263db114b4ca06fbbbf827444a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6a885a9edc9c0a341cab27ec4f8a6c58b35f3d449c9d2503a6fd23e06bbd4f6a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9877af9c6d1b15486e18a94101b742e9d0d2f343d35a634e337411ddb57783f3"}, - {file = "scikit_learn-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c470f53cea065ff3d588050955c492793bb50c19a92923490d18fcb637f6383a"}, - {file = "scikit_learn-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd6e2d7389542eae01077a1ee0318c4fec20c66c957f45c7aac0c6eb0fe3c612"}, - {file = "scikit_learn-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:3a11936adbc379a6061ea32fa03338d4ca7248d86dd507c81e13af428a5bc1db"}, - {file = "scikit_learn-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:998d38fcec96584deee1e79cd127469b3ad6fefd1ea6c2dfc54e8db367eb396b"}, - {file = "scikit_learn-1.3.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ded35e810438a527e17623ac6deae3b360134345b7c598175ab7741720d7ffa7"}, - {file = "scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8102d5036e28d08ab47166b48c8d5e5810704daecf3a476a4282d562be9a28"}, - {file = "scikit_learn-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7617164951c422747e7c32be4afa15d75ad8044f42e7d70d3e2e0429a50e6718"}, - {file = "scikit_learn-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:1d54fb9e6038284548072df22fd34777e434153f7ffac72c8596f2d6987110dd"}, + {file = "scikit-learn-1.4.1.post1.tar.gz", hash = "sha256:93d3d496ff1965470f9977d05e5ec3376fb1e63b10e4fda5e39d23c2d8969a30"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c540aaf44729ab5cd4bd5e394f2b375e65ceaea9cdd8c195788e70433d91bbc5"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4310bff71aa98b45b46cd26fa641309deb73a5d1c0461d181587ad4f30ea3c36"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f43dd527dabff5521af2786a2f8de5ba381e182ec7292663508901cf6ceaf6e"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c02e27d65b0c7dc32f2c5eb601aaf5530b7a02bfbe92438188624524878336f2"}, + {file = "scikit_learn-1.4.1.post1-cp310-cp310-win_amd64.whl", hash = "sha256:629e09f772ad42f657ca60a1a52342eef786218dd20cf1369a3b8d085e55ef8f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6145dfd9605b0b50ae72cdf72b61a2acd87501369a763b0d73d004710ebb76b5"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1afed6951bc9d2053c6ee9a518a466cbc9b07c6a3f9d43bfe734192b6125d508"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce03506ccf5f96b7e9030fea7eb148999b254c44c10182ac55857bc9b5d4815f"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ba516fcdc73d60e7f48cbb0bccb9acbdb21807de3651531208aac73c758e3ab"}, + {file = "scikit_learn-1.4.1.post1-cp311-cp311-win_amd64.whl", hash = "sha256:78cd27b4669513b50db4f683ef41ea35b5dddc797bd2bbd990d49897fd1c8a46"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a1e289f33f613cefe6707dead50db31930530dc386b6ccff176c786335a7b01c"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0df87de9ce1c0140f2818beef310fb2e2afdc1e66fc9ad587965577f17733649"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712c1c69c45b58ef21635360b3d0a680ff7d83ac95b6f9b82cf9294070cda710"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1754b0c2409d6ed5a3380512d0adcf182a01363c669033a2b55cca429ed86a81"}, + {file = "scikit_learn-1.4.1.post1-cp312-cp312-win_amd64.whl", hash = "sha256:1d491ef66e37f4e812db7e6c8286520c2c3fc61b34bf5e59b67b4ce528de93af"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:aa0029b78ef59af22cfbd833e8ace8526e4df90212db7ceccbea582ebb5d6794"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:14e4c88436ac96bf69eb6d746ac76a574c314a23c6961b7d344b38877f20fee1"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7cd3a77c32879311f2aa93466d3c288c955ef71d191503cf0677c3340ae8ae0"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a3ee19211ded1a52ee37b0a7b373a8bfc66f95353af058a210b692bd4cda0dd"}, + {file = "scikit_learn-1.4.1.post1-cp39-cp39-win_amd64.whl", hash = "sha256:234b6bda70fdcae9e4abbbe028582ce99c280458665a155eed0b820599377d25"}, ] [package.dependencies] -joblib = ">=1.1.1" -numpy = ">=1.17.3" -scipy = ">=1.5.0" +joblib = ">=1.2.0" +numpy = ">=1.19.5,<2.0" +scipy = ">=1.6.0" threadpoolctl = ">=2.0.0" [package.extras] -benchmark = ["matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "pandas (>=1.0.5)"] -docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.1.3)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.10.1)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] -examples = ["matplotlib (>=3.1.3)", "pandas (>=1.0.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.16.2)", "seaborn (>=0.9.0)"] -tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.0.5)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.16.2)"] +benchmark = ["matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "pandas (>=1.1.5)"] +docs = ["Pillow (>=7.1.2)", "matplotlib (>=3.3.4)", "memory-profiler (>=0.57.0)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)", "sphinx (>=6.0.0)", "sphinx-copybutton (>=0.5.2)", "sphinx-gallery (>=0.15.0)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.3.4)", "pandas (>=1.1.5)", "plotly (>=5.14.0)", "pooch (>=1.6.0)", "scikit-image (>=0.17.2)", "seaborn (>=0.9.0)"] +tests = ["black (>=23.3.0)", "matplotlib (>=3.3.4)", "mypy (>=1.3)", "numpydoc (>=1.2.0)", "pandas (>=1.1.5)", "polars (>=0.19.12)", "pooch (>=1.6.0)", "pyamg (>=4.0.0)", "pyarrow (>=12.0.0)", "pytest (>=7.1.2)", "pytest-cov (>=2.9.0)", "ruff (>=0.0.272)", "scikit-image (>=0.17.2)"] [[package]] name = "scipy" -version = "1.11.2" +version = "1.12.0" description = "Fundamental algorithms for scientific computing in Python" -category = "main" -optional = false -python-versions = "<3.13,>=3.9" -files = [ - {file = "scipy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2b997a5369e2d30c97995dcb29d638701f8000d04df01b8e947f206e5d0ac788"}, - {file = "scipy-1.11.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:95763fbda1206bec41157582bea482f50eb3702c85fffcf6d24394b071c0e87a"}, - {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e367904a0fec76433bf3fbf3e85bf60dae8e9e585ffd21898ab1085a29a04d16"}, - {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d690e1ca993c8f7ede6d22e5637541217fc6a4d3f78b3672a6fe454dbb7eb9a7"}, - {file = "scipy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d2b813bfbe8dec6a75164523de650bad41f4405d35b0fa24c2c28ae07fcefb20"}, - {file = "scipy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:afdb0d983f6135d50770dd979df50bf1c7f58b5b33e0eb8cf5c73c70600eae1d"}, - {file = "scipy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d9886f44ef8c9e776cb7527fb01455bf4f4a46c455c4682edc2c2cc8cd78562"}, - {file = "scipy-1.11.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1342ca385c673208f32472830c10110a9dcd053cf0c4b7d4cd7026d0335a6c1d"}, - {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b133f237bd8ba73bad51bc12eb4f2d84cbec999753bf25ba58235e9fc2096d80"}, - {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aeb87661de987f8ec56fa6950863994cd427209158255a389fc5aea51fa7055"}, - {file = "scipy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90d3b1364e751d8214e325c371f0ee0dd38419268bf4888b2ae1040a6b266b2a"}, - {file = "scipy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:f73102f769ee06041a3aa26b5841359b1a93cc364ce45609657751795e8f4a4a"}, - {file = "scipy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa4909c6c20c3d91480533cddbc0e7c6d849e7d9ded692918c76ce5964997898"}, - {file = "scipy-1.11.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac74b1512d38718fb6a491c439aa7b3605b96b1ed3be6599c17d49d6c60fca18"}, - {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8425fa963a32936c9773ee3ce44a765d8ff67eed5f4ac81dc1e4a819a238ee9"}, - {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:542a757e2a6ec409e71df3d8fd20127afbbacb1c07990cb23c5870c13953d899"}, - {file = "scipy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea932570b1c2a30edafca922345854ff2cd20d43cd9123b6dacfdecebfc1a80b"}, - {file = "scipy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:4447ad057d7597476f9862ecbd9285bbf13ba9d73ce25acfa4e4b11c6801b4c9"}, - {file = "scipy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b0620240ef445b5ddde52460e6bc3483b7c9c750275369379e5f609a1050911c"}, - {file = "scipy-1.11.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f28f1f6cfeb48339c192efc6275749b2a25a7e49c4d8369a28b6591da02fbc9a"}, - {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:214cdf04bbae7a54784f8431f976704ed607c4bc69ba0d5d5d6a9df84374df76"}, - {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10eb6af2f751aa3424762948e5352f707b0dece77288206f227864ddf675aca0"}, - {file = "scipy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0f3261f14b767b316d7137c66cc4f33a80ea05841b9c87ad83a726205b901423"}, - {file = "scipy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:2c91cf049ffb5575917f2a01da1da082fd24ed48120d08a6e7297dfcac771dcd"}, - {file = "scipy-1.11.2.tar.gz", hash = "sha256:b29318a5e39bd200ca4381d80b065cdf3076c7d7281c5e36569e99273867f61d"}, +optional = false +python-versions = ">=3.9" +files = [ + {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, + {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, + {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, + {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, + {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, + {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, + {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, + {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, + {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, + {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, + {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, + {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, + {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, + {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, + {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, + {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, + {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, + {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, ] [package.dependencies] -numpy = ">=1.21.6,<1.28.0" +numpy = ">=1.22.4,<1.29.0" [package.extras] dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] + +[[package]] +name = "seaborn" +version = "0.13.2" +description = "Statistical data visualization" +optional = false +python-versions = ">=3.8" +files = [ + {file = "seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987"}, + {file = "seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7"}, +] + +[package.dependencies] +matplotlib = ">=3.4,<3.6.1 || >3.6.1" +numpy = ">=1.20,<1.24.0 || >1.24.0" +pandas = ">=1.2" + +[package.extras] +dev = ["flake8", "flit", "mypy", "pandas-stubs", "pre-commit", "pytest", "pytest-cov", "pytest-xdist"] +docs = ["ipykernel", "nbconvert", "numpydoc", "pydata_sphinx_theme (==0.10.0rc2)", "pyyaml", "sphinx (<6.0.0)", "sphinx-copybutton", "sphinx-design", "sphinx-issues"] +stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "send2trash" version = "1.8.2" description = "Send file to trash natively under Mac OS X, Windows and Linux" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3709,26 +3662,24 @@ win32 = ["pywin32"] [[package]] name = "setuptools" -version = "68.1.2" +version = "69.1.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-68.1.2-py3-none-any.whl", hash = "sha256:3d8083eed2d13afc9426f227b24fd1659489ec107c0e86cec2ffdde5c92e790b"}, - {file = "setuptools-68.1.2.tar.gz", hash = "sha256:3d4dfa6d95f1b101d695a6160a7626e15583af71a5f52176efa5d39a054d475d"}, + {file = "setuptools-69.1.0-py3-none-any.whl", hash = "sha256:c054629b81b946d63a9c6e732bc8b2513a7c3ea645f11d0139a2191d735c60c6"}, + {file = "setuptools-69.1.0.tar.gz", hash = "sha256:850894c4195f09c4ed30dba56213bf7c3f21d86ed6bdaafb5df5972593bfc401"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5,<=7.1.2)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] -testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.1)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -3738,21 +3689,19 @@ files = [ [[package]] name = "smmap" -version = "5.0.0" +version = "5.0.1" description = "A pure Python implementation of a sliding window memory map manager" -category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"}, - {file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"}, + {file = "smmap-5.0.1-py3-none-any.whl", hash = "sha256:e6d8668fa5f93e706934a62d7b4db19c8d9eb8cf2adbb75ef1b675aa332b69da"}, + {file = "smmap-5.0.1.tar.gz", hash = "sha256:dceeb6c0028fdb6734471eb07c0cd2aae706ccaecab45965ee83f11c8d3b1f62"}, ] [[package]] name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3764,7 +3713,6 @@ files = [ name = "soundfile" version = "0.12.1" description = "An audio library based on libsndfile, CFFI and NumPy" -category = "main" optional = false python-versions = "*" files = [ @@ -3786,26 +3734,24 @@ numpy = ["numpy"] [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] name = "stack-data" -version = "0.6.2" +version = "0.6.3" description = "Extract data from python stack frames and tracebacks for informative displays" -category = "main" optional = false python-versions = "*" files = [ - {file = "stack_data-0.6.2-py3-none-any.whl", hash = "sha256:cbb2a53eb64e5785878201a97ed7c7b94883f48b87bfb0bbe8b623c74679e4a8"}, - {file = "stack_data-0.6.2.tar.gz", hash = "sha256:32d2dd0376772d01b6cb9fc996f3c8b57a357089dec328ed4b6553d037eaf815"}, + {file = "stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695"}, + {file = "stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9"}, ] [package.dependencies] @@ -3820,7 +3766,6 @@ tests = ["cython", "littleutils", "pygments", "pytest", "typeguard"] name = "tenacity" version = "8.2.3" description = "Retry code until it succeeds" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3833,14 +3778,13 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "terminado" -version = "0.17.1" +version = "0.18.0" description = "Tornado websocket backend for the Xterm.js Javascript terminal emulator library." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "terminado-0.17.1-py3-none-any.whl", hash = "sha256:8650d44334eba354dd591129ca3124a6ba42c3d5b70df5051b6921d506fdaeae"}, - {file = "terminado-0.17.1.tar.gz", hash = "sha256:6ccbbcd3a4f8a25a5ec04991f39a0b8db52dfcd487ea0e578d977e6752380333"}, + {file = "terminado-0.18.0-py3-none-any.whl", hash = "sha256:87b0d96642d0fe5f5abd7783857b9cab167f221a39ff98e3b9619a788a3c0f2e"}, + {file = "terminado-0.18.0.tar.gz", hash = "sha256:1ea08a89b835dd1b8c0c900d92848147cef2537243361b2e3f4dc15df9b6fded"}, ] [package.dependencies] @@ -3851,36 +3795,23 @@ tornado = ">=6.1.0" [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] test = ["pre-commit", "pytest (>=7.0)", "pytest-timeout"] - -[[package]] -name = "textwrap3" -version = "0.9.2" -description = "textwrap from Python 3.6 backport (plus a few tweaks)" -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "textwrap3-0.9.2-py2.py3-none-any.whl", hash = "sha256:bf5f4c40faf2a9ff00a9e0791fed5da7415481054cef45bb4a3cfb1f69044ae0"}, - {file = "textwrap3-0.9.2.zip", hash = "sha256:5008eeebdb236f6303dcd68f18b856d355f6197511d952ba74bc75e40e0c3414"}, -] +typing = ["mypy (>=1.6,<2.0)", "traitlets (>=5.11.1)"] [[package]] name = "threadpoolctl" -version = "3.2.0" +version = "3.3.0" description = "threadpoolctl" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "threadpoolctl-3.2.0-py3-none-any.whl", hash = "sha256:2b7818516e423bdaebb97c723f86a7c6b0a83d3f3b0970328d66f4d9104dc032"}, - {file = "threadpoolctl-3.2.0.tar.gz", hash = "sha256:c96a0ba3bdddeaca37dc4cc7344aafad41cdb8c313f74fdfe387a867bba93355"}, + {file = "threadpoolctl-3.3.0-py3-none-any.whl", hash = "sha256:6155be1f4a39f31a18ea70f94a77e0ccd57dced08122ea61109e7da89883781e"}, + {file = "threadpoolctl-3.3.0.tar.gz", hash = "sha256:5dac632b4fa2d43f42130267929af3ba01399ef4bd1882918e92dbc30365d30c"}, ] [[package]] name = "tinycss2" version = "1.2.1" description = "A tiny CSS parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3899,7 +3830,6 @@ test = ["flake8", "isort", "pytest"] name = "tinydb" version = "4.8.0" description = "TinyDB is a tiny, document oriented database optimized for your happiness :)" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -3911,7 +3841,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3921,35 +3850,33 @@ files = [ [[package]] name = "tornado" -version = "6.3.3" +version = "6.4" description = "Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed." -category = "main" optional = false python-versions = ">= 3.8" files = [ - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:502fba735c84450974fec147340016ad928d29f1e91f49be168c0a4c18181e1d"}, - {file = "tornado-6.3.3-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:805d507b1f588320c26f7f097108eb4023bbaa984d63176d1652e184ba24270a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ac51f42808cca9b3613f51ffe2a965c8525cb1b00b7b2d56828b8045354f76a"}, - {file = "tornado-6.3.3-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71a8db65160a3c55d61839b7302a9a400074c9c753040455494e2af74e2501f2"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ceb917a50cd35882b57600709dd5421a418c29ddc852da8bcdab1f0db33406b0"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:7d01abc57ea0dbb51ddfed477dfe22719d376119844e33c661d873bf9c0e4a16"}, - {file = "tornado-6.3.3-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:9dc4444c0defcd3929d5c1eb5706cbe1b116e762ff3e0deca8b715d14bf6ec17"}, - {file = "tornado-6.3.3-cp38-abi3-win32.whl", hash = "sha256:65ceca9500383fbdf33a98c0087cb975b2ef3bfb874cb35b8de8740cf7f41bd3"}, - {file = "tornado-6.3.3-cp38-abi3-win_amd64.whl", hash = "sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5"}, - {file = "tornado-6.3.3.tar.gz", hash = "sha256:e7d8db41c0181c80d76c982aacc442c0783a2c54d6400fe028954201a2e032fe"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:02ccefc7d8211e5a7f9e8bc3f9e5b0ad6262ba2fbb683a6443ecc804e5224ce0"}, + {file = "tornado-6.4-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:27787de946a9cffd63ce5814c33f734c627a87072ec7eed71f7fc4417bb16263"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f7894c581ecdcf91666a0912f18ce5e757213999e183ebfc2c3fdbf4d5bd764e"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43bc2e5370a6a8e413e1e1cd0c91bedc5bd62a74a532371042a18ef19e10579"}, + {file = "tornado-6.4-cp38-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0251554cdd50b4b44362f73ad5ba7126fc5b2c2895cc62b14a1c2d7ea32f212"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:fd03192e287fbd0899dd8f81c6fb9cbbc69194d2074b38f384cb6fa72b80e9c2"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_i686.whl", hash = "sha256:88b84956273fbd73420e6d4b8d5ccbe913c65d31351b4c004ae362eba06e1f78"}, + {file = "tornado-6.4-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:71ddfc23a0e03ef2df1c1397d859868d158c8276a0603b96cf86892bff58149f"}, + {file = "tornado-6.4-cp38-abi3-win32.whl", hash = "sha256:6f8a6c77900f5ae93d8b4ae1196472d0ccc2775cc1dfdc9e7727889145c45052"}, + {file = "tornado-6.4-cp38-abi3-win_amd64.whl", hash = "sha256:10aeaa8006333433da48dec9fe417877f8bcc21f48dda8d661ae79da357b2a63"}, + {file = "tornado-6.4.tar.gz", hash = "sha256:72291fa6e6bc84e626589f1c29d90a5a6d593ef5ae68052ee2ef000dfd273dee"}, ] [[package]] name = "tqdm" -version = "4.66.1" +version = "4.66.2" description = "Fast, Extensible Progress Meter" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.1-py3-none-any.whl", hash = "sha256:d302b3c5b53d47bce91fea46679d9c3c6508cf6332229aa1e7d8653723793386"}, - {file = "tqdm-4.66.1.tar.gz", hash = "sha256:d88e651f9db8d8551a62556d3cff9e3034274ca5d66e93197cf2490e2dcb69c7"}, + {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, + {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, ] [package.dependencies] @@ -3963,60 +3890,65 @@ telegram = ["requests"] [[package]] name = "traitlets" -version = "5.9.0" +version = "5.14.1" description = "Traitlets Python configuration system" -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "traitlets-5.9.0-py3-none-any.whl", hash = "sha256:9e6ec080259b9a5940c797d58b613b5e31441c2257b87c2e795c5228ae80d2d8"}, - {file = "traitlets-5.9.0.tar.gz", hash = "sha256:f6cde21a9c68cf756af02035f72d5a723bf607e862e7be33ece505abf4a3bad9"}, + {file = "traitlets-5.14.1-py3-none-any.whl", hash = "sha256:2e5a030e6eff91737c643231bfcf04a65b0132078dad75e4936700b213652e74"}, + {file = "traitlets-5.14.1.tar.gz", hash = "sha256:8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"}, ] [package.extras] docs = ["myst-parser", "pydata-sphinx-theme", "sphinx"] -test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] +test = ["argcomplete (>=3.0.3)", "mypy (>=1.7.0)", "pre-commit", "pytest (>=7.0,<7.5)", "pytest-mock", "pytest-mypy-testing"] [[package]] name = "tuspy" -version = "1.0.1" +version = "1.0.3" description = "A Python client for the tus resumable upload protocol -> http://tus.io" -category = "main" optional = false -python-versions = "*" +python-versions = ">=3.5.3" files = [ - {file = "tuspy-1.0.1-py3-none-any.whl", hash = "sha256:4c136bb97593367376e77f1d9580c1990bd535698f86765c80db9b9d3864f35f"}, - {file = "tuspy-1.0.1.tar.gz", hash = "sha256:09a4ef6e20b05c6f83c53c5839892ead141947afb2f6b7dea5cca45f8d120793"}, + {file = "tuspy-1.0.3-py3-none-any.whl", hash = "sha256:024d3d1745120098a85635e42242039ca6b1bc787f561ec974fffb45fc775c1b"}, + {file = "tuspy-1.0.3.tar.gz", hash = "sha256:003d24ee1a310266df507bbff9859120098c026abb5e7b77141292003b0aca12"}, ] [package.dependencies] aiohttp = ">=3.6.2" -future = ">=0.16.0" requests = ">=2.18.4" -six = ">=1.11.0" tinydb = ">=3.5.0" [package.extras] dev = ["Sphinx (==1.7.1)", "sphinx-autobuild (==2021.3.14)", "tox (>=2.3.1)"] -test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] +test = ["aioresponses (>=0.6.2)", "coverage (>=4.2)", "parametrize (>=0.1.1)", "pytest (>=3.0.3)", "pytest-cov (>=2.3.1,<2.6)", "responses (>=0.5.1)"] + +[[package]] +name = "types-python-dateutil" +version = "2.8.19.20240106" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = ">=3.8" +files = [ + {file = "types-python-dateutil-2.8.19.20240106.tar.gz", hash = "sha256:1f8db221c3b98e6ca02ea83a58371b22c374f42ae5bbdf186db9c9a76581459f"}, + {file = "types_python_dateutil-2.8.19.20240106-py3-none-any.whl", hash = "sha256:efbbdc54590d0f16152fa103c9879c7d4a00e82078f6e2cf01769042165acaa2"}, +] [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" +version = "4.9.0" +description = "Backported and Experimental Type Hints for Python 3.8+" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, - {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, + {file = "typing_extensions-4.9.0-py3-none-any.whl", hash = "sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"}, + {file = "typing_extensions-4.9.0.tar.gz", hash = "sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783"}, ] [[package]] name = "uri-template" version = "1.3.0" description = "RFC 6570 URI Template Processor" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4029,39 +3961,36 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "urllib3" -version = "2.0.4" +version = "2.2.0" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "urllib3-2.0.4-py3-none-any.whl", hash = "sha256:de7df1803967d2c2a98e4b11bb7d6bd9210474c46e8a0401514e3a42a75ebde4"}, - {file = "urllib3-2.0.4.tar.gz", hash = "sha256:8d22f86aae8ef5e410d4f539fde9ce6b2113a001bb4d189e0aed70642d602b11"}, + {file = "urllib3-2.2.0-py3-none-any.whl", hash = "sha256:ce3711610ddce217e6d113a2732fafad960a03fd0318c91faa79481e35c11224"}, + {file = "urllib3-2.2.0.tar.gz", hash = "sha256:051d961ad0c62a94e50ecf1af379c3aba230c66c710493493560c0c223c49f20"}, ] [package.extras] brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +h2 = ["h2 (>=4,<5)"] socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] zstd = ["zstandard (>=0.18.0)"] [[package]] name = "wcwidth" -version = "0.2.6" +version = "0.2.13" description = "Measures the displayed width of unicode strings in a terminal" -category = "main" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, - {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, + {file = "wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859"}, + {file = "wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5"}, ] [[package]] name = "webcolors" version = "1.13" description = "A library for working with the color formats defined by HTML and CSS." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -4077,7 +4006,6 @@ tests = ["pytest", "pytest-cov"] name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "main" optional = false python-versions = "*" files = [ @@ -4087,14 +4015,13 @@ files = [ [[package]] name = "websocket-client" -version = "1.6.2" +version = "1.7.0" description = "WebSocket client for Python with low level API options" -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "websocket-client-1.6.2.tar.gz", hash = "sha256:53e95c826bf800c4c465f50093a8c4ff091c7327023b10bfaff40cf1ef170eaa"}, - {file = "websocket_client-1.6.2-py3-none-any.whl", hash = "sha256:ce54f419dfae71f4bdba69ebe65bf7f0a93fe71bc009ad3a010aacc3eebad537"}, + {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, + {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, ] [package.extras] @@ -4104,98 +4031,112 @@ test = ["websockets"] [[package]] name = "widgetsnbextension" -version = "4.0.8" +version = "4.0.10" description = "Jupyter interactive widgets for Jupyter Notebook" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "widgetsnbextension-4.0.8-py3-none-any.whl", hash = "sha256:2e37f0ce9da11651056280c7efe96f2db052fe8fc269508e3724f5cbd6c93018"}, - {file = "widgetsnbextension-4.0.8.tar.gz", hash = "sha256:9ec291ba87c2dfad42c3d5b6f68713fa18be1acd7476569516b2431682315c17"}, + {file = "widgetsnbextension-4.0.10-py3-none-any.whl", hash = "sha256:d37c3724ec32d8c48400a435ecfa7d3e259995201fbefa37163124a9fcb393cc"}, + {file = "widgetsnbextension-4.0.10.tar.gz", hash = "sha256:64196c5ff3b9a9183a8e699a4227fb0b7002f252c814098e66c4d1cd0644688f"}, ] [[package]] name = "yarl" -version = "1.9.2" +version = "1.9.4" description = "Yet another URL library" -category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82"}, - {file = "yarl-1.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8"}, - {file = "yarl-1.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608"}, - {file = "yarl-1.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3"}, - {file = "yarl-1.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528"}, - {file = "yarl-1.9.2-cp310-cp310-win32.whl", hash = "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3"}, - {file = "yarl-1.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb"}, - {file = "yarl-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7"}, - {file = "yarl-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7"}, - {file = "yarl-1.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a"}, - {file = "yarl-1.9.2-cp311-cp311-win32.whl", hash = "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8"}, - {file = "yarl-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051"}, - {file = "yarl-1.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938"}, - {file = "yarl-1.9.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04"}, - {file = "yarl-1.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582"}, - {file = "yarl-1.9.2-cp37-cp37m-win32.whl", hash = "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b"}, - {file = "yarl-1.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4"}, - {file = "yarl-1.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417"}, - {file = "yarl-1.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc"}, - {file = "yarl-1.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b"}, - {file = "yarl-1.9.2-cp38-cp38-win32.whl", hash = "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7"}, - {file = "yarl-1.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8"}, - {file = "yarl-1.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955"}, - {file = "yarl-1.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3"}, - {file = "yarl-1.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80"}, - {file = "yarl-1.9.2-cp39-cp39-win32.whl", hash = "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623"}, - {file = "yarl-1.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18"}, - {file = "yarl-1.9.2.tar.gz", hash = "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a8c1df72eb746f4136fe9a2e72b0c9dc1da1cbd23b5372f94b5820ff8ae30e0e"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3a6ed1d525bfb91b3fc9b690c5a21bb52de28c018530ad85093cc488bee2dd2"}, + {file = "yarl-1.9.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c38c9ddb6103ceae4e4498f9c08fac9b590c5c71b0370f98714768e22ac6fa66"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9e09c9d74f4566e905a0b8fa668c58109f7624db96a2171f21747abc7524234"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8477c1ee4bd47c57d49621a062121c3023609f7a13b8a46953eb6c9716ca392"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5ff2c858f5f6a42c2a8e751100f237c5e869cbde669a724f2062d4c4ef93551"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:357495293086c5b6d34ca9616a43d329317feab7917518bc97a08f9e55648455"}, + {file = "yarl-1.9.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:54525ae423d7b7a8ee81ba189f131054defdb122cde31ff17477951464c1691c"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:801e9264d19643548651b9db361ce3287176671fb0117f96b5ac0ee1c3530d53"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:e516dc8baf7b380e6c1c26792610230f37147bb754d6426462ab115a02944385"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:7d5aaac37d19b2904bb9dfe12cdb08c8443e7ba7d2852894ad448d4b8f442863"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:54beabb809ffcacbd9d28ac57b0db46e42a6e341a030293fb3185c409e626b8b"}, + {file = "yarl-1.9.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:bac8d525a8dbc2a1507ec731d2867025d11ceadcb4dd421423a5d42c56818541"}, + {file = "yarl-1.9.4-cp310-cp310-win32.whl", hash = "sha256:7855426dfbddac81896b6e533ebefc0af2f132d4a47340cee6d22cac7190022d"}, + {file = "yarl-1.9.4-cp310-cp310-win_amd64.whl", hash = "sha256:848cd2a1df56ddbffeb375535fb62c9d1645dde33ca4d51341378b3f5954429b"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:35a2b9396879ce32754bd457d31a51ff0a9d426fd9e0e3c33394bf4b9036b099"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c7d56b293cc071e82532f70adcbd8b61909eec973ae9d2d1f9b233f3d943f2c"}, + {file = "yarl-1.9.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d8a1c6c0be645c745a081c192e747c5de06e944a0d21245f4cf7c05e457c36e0"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4b3c1ffe10069f655ea2d731808e76e0f452fc6c749bea04781daf18e6039525"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:549d19c84c55d11687ddbd47eeb348a89df9cb30e1993f1b128f4685cd0ebbf8"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a7409f968456111140c1c95301cadf071bd30a81cbd7ab829169fb9e3d72eae9"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e23a6d84d9d1738dbc6e38167776107e63307dfc8ad108e580548d1f2c587f42"}, + {file = "yarl-1.9.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d8b889777de69897406c9fb0b76cdf2fd0f31267861ae7501d93003d55f54fbe"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:03caa9507d3d3c83bca08650678e25364e1843b484f19986a527630ca376ecce"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4e9035df8d0880b2f1c7f5031f33f69e071dfe72ee9310cfc76f7b605958ceb9"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:c0ec0ed476f77db9fb29bca17f0a8fcc7bc97ad4c6c1d8959c507decb22e8572"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:ee04010f26d5102399bd17f8df8bc38dc7ccd7701dc77f4a68c5b8d733406958"}, + {file = "yarl-1.9.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:49a180c2e0743d5d6e0b4d1a9e5f633c62eca3f8a86ba5dd3c471060e352ca98"}, + {file = "yarl-1.9.4-cp311-cp311-win32.whl", hash = "sha256:81eb57278deb6098a5b62e88ad8281b2ba09f2f1147c4767522353eaa6260b31"}, + {file = "yarl-1.9.4-cp311-cp311-win_amd64.whl", hash = "sha256:d1d2532b340b692880261c15aee4dc94dd22ca5d61b9db9a8a361953d36410b1"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0d2454f0aef65ea81037759be5ca9947539667eecebca092733b2eb43c965a81"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:44d8ffbb9c06e5a7f529f38f53eda23e50d1ed33c6c869e01481d3fafa6b8142"}, + {file = "yarl-1.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aaaea1e536f98754a6e5c56091baa1b6ce2f2700cc4a00b0d49eca8dea471074"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3777ce5536d17989c91696db1d459574e9a9bd37660ea7ee4d3344579bb6f129"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9fc5fc1eeb029757349ad26bbc5880557389a03fa6ada41703db5e068881e5f2"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ea65804b5dc88dacd4a40279af0cdadcfe74b3e5b4c897aa0d81cf86927fee78"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aa102d6d280a5455ad6a0f9e6d769989638718e938a6a0a2ff3f4a7ff8c62cc4"}, + {file = "yarl-1.9.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:09efe4615ada057ba2d30df871d2f668af661e971dfeedf0c159927d48bbeff0"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:008d3e808d03ef28542372d01057fd09168419cdc8f848efe2804f894ae03e51"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:6f5cb257bc2ec58f437da2b37a8cd48f666db96d47b8a3115c29f316313654ff"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:992f18e0ea248ee03b5a6e8b3b4738850ae7dbb172cc41c966462801cbf62cf7"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:0e9d124c191d5b881060a9e5060627694c3bdd1fe24c5eecc8d5d7d0eb6faabc"}, + {file = "yarl-1.9.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:3986b6f41ad22988e53d5778f91855dc0399b043fc8946d4f2e68af22ee9ff10"}, + {file = "yarl-1.9.4-cp312-cp312-win32.whl", hash = "sha256:4b21516d181cd77ebd06ce160ef8cc2a5e9ad35fb1c5930882baff5ac865eee7"}, + {file = "yarl-1.9.4-cp312-cp312-win_amd64.whl", hash = "sha256:a9bd00dc3bc395a662900f33f74feb3e757429e545d831eef5bb280252631984"}, + {file = "yarl-1.9.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:63b20738b5aac74e239622d2fe30df4fca4942a86e31bf47a81a0e94c14df94f"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7d7f7de27b8944f1fee2c26a88b4dabc2409d2fea7a9ed3df79b67277644e17"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c74018551e31269d56fab81a728f683667e7c28c04e807ba08f8c9e3bba32f14"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ca06675212f94e7a610e85ca36948bb8fc023e458dd6c63ef71abfd482481aa5"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5aef935237d60a51a62b86249839b51345f47564208c6ee615ed2a40878dccdd"}, + {file = "yarl-1.9.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2b134fd795e2322b7684155b7855cc99409d10b2e408056db2b93b51a52accc7"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d25039a474c4c72a5ad4b52495056f843a7ff07b632c1b92ea9043a3d9950f6e"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f7d6b36dd2e029b6bcb8a13cf19664c7b8e19ab3a58e0fefbb5b8461447ed5ec"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:957b4774373cf6f709359e5c8c4a0af9f6d7875db657adb0feaf8d6cb3c3964c"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:d7eeb6d22331e2fd42fce928a81c697c9ee2d51400bd1a28803965883e13cead"}, + {file = "yarl-1.9.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6a962e04b8f91f8c4e5917e518d17958e3bdee71fd1d8b88cdce74dd0ebbf434"}, + {file = "yarl-1.9.4-cp37-cp37m-win32.whl", hash = "sha256:f3bc6af6e2b8f92eced34ef6a96ffb248e863af20ef4fde9448cc8c9b858b749"}, + {file = "yarl-1.9.4-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4d7a90a92e528aadf4965d685c17dacff3df282db1121136c382dc0b6014d2"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ec61d826d80fc293ed46c9dd26995921e3a82146feacd952ef0757236fc137be"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8be9e837ea9113676e5754b43b940b50cce76d9ed7d2461df1af39a8ee674d9f"}, + {file = "yarl-1.9.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bef596fdaa8f26e3d66af846bbe77057237cb6e8efff8cd7cc8dff9a62278bbf"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d47552b6e52c3319fede1b60b3de120fe83bde9b7bddad11a69fb0af7db32f1"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84fc30f71689d7fc9168b92788abc977dc8cefa806909565fc2951d02f6b7d57"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4aa9741085f635934f3a2583e16fcf62ba835719a8b2b28fb2917bb0537c1dfa"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:206a55215e6d05dbc6c98ce598a59e6fbd0c493e2de4ea6cc2f4934d5a18d130"}, + {file = "yarl-1.9.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07574b007ee20e5c375a8fe4a0789fad26db905f9813be0f9fef5a68080de559"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:5a2e2433eb9344a163aced6a5f6c9222c0786e5a9e9cac2c89f0b28433f56e23"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6ad6d10ed9b67a382b45f29ea028f92d25bc0bc1daf6c5b801b90b5aa70fb9ec"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6fe79f998a4052d79e1c30eeb7d6c1c1056ad33300f682465e1b4e9b5a188b78"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a825ec844298c791fd28ed14ed1bffc56a98d15b8c58a20e0e08c1f5f2bea1be"}, + {file = "yarl-1.9.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8619d6915b3b0b34420cf9b2bb6d81ef59d984cb0fde7544e9ece32b4b3043c3"}, + {file = "yarl-1.9.4-cp38-cp38-win32.whl", hash = "sha256:686a0c2f85f83463272ddffd4deb5e591c98aac1897d65e92319f729c320eece"}, + {file = "yarl-1.9.4-cp38-cp38-win_amd64.whl", hash = "sha256:a00862fb23195b6b8322f7d781b0dc1d82cb3bcac346d1e38689370cc1cc398b"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:604f31d97fa493083ea21bd9b92c419012531c4e17ea6da0f65cacdcf5d0bd27"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8a854227cf581330ffa2c4824d96e52ee621dd571078a252c25e3a3b3d94a1b1"}, + {file = "yarl-1.9.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ba6f52cbc7809cd8d74604cce9c14868306ae4aa0282016b641c661f981a6e91"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6327976c7c2f4ee6816eff196e25385ccc02cb81427952414a64811037bbc8b"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8397a3817d7dcdd14bb266283cd1d6fc7264a48c186b986f32e86d86d35fbac5"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e0381b4ce23ff92f8170080c97678040fc5b08da85e9e292292aba67fdac6c34"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23d32a2594cb5d565d358a92e151315d1b2268bc10f4610d098f96b147370136"}, + {file = "yarl-1.9.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ddb2a5c08a4eaaba605340fdee8fc08e406c56617566d9643ad8bf6852778fc7"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:26a1dc6285e03f3cc9e839a2da83bcbf31dcb0d004c72d0730e755b33466c30e"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:18580f672e44ce1238b82f7fb87d727c4a131f3a9d33a5e0e82b793362bf18b4"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:29e0f83f37610f173eb7e7b5562dd71467993495e568e708d99e9d1944f561ec"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:1f23e4fe1e8794f74b6027d7cf19dc25f8b63af1483d91d595d4a07eca1fb26c"}, + {file = "yarl-1.9.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db8e58b9d79200c76956cefd14d5c90af54416ff5353c5bfd7cbe58818e26ef0"}, + {file = "yarl-1.9.4-cp39-cp39-win32.whl", hash = "sha256:c7224cab95645c7ab53791022ae77a4509472613e839dab722a72abe5a684575"}, + {file = "yarl-1.9.4-cp39-cp39-win_amd64.whl", hash = "sha256:824d6c50492add5da9374875ce72db7a0733b29c2394890aef23d533106e2b15"}, + {file = "yarl-1.9.4-py3-none-any.whl", hash = "sha256:928cecb0ef9d5a7946eb6ff58417ad2fe9375762382f1bf5c55e61645f2c43ad"}, + {file = "yarl-1.9.4.tar.gz", hash = "sha256:566db86717cf8080b99b58b083b773a908ae40f06681e87e589a976faf8246bf"}, ] [package.dependencies] @@ -4205,4 +4146,4 @@ multidict = ">=4.0" [metadata] lock-version = "2.0" python-versions = "3.10.*" -content-hash = "0821c482ad42cd1b32b3a6dc4f836986f50ece1207603ac165337971c32ff626" +content-hash = "9b1c9ca5bd0787a2b5108179a00c607aefe343794f6ac79aaf4942eacdd2450b" diff --git a/pyproject.toml b/pyproject.toml index a38b16056a8863c00f6c5f468c0a7579ff5188a4..6d9c643266b16bd3b11fc343152bf3a3eb4545a6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,6 +24,7 @@ black = "^23.7.0" oic = "^1.6.1" python-keycloak = "^3.3.0" tuspy = "^1.0.1" +seaborn = "^0.13.2" [tool.poetry.group.dev.dependencies] diff --git a/readme_template.md b/readme_template.md deleted file mode 100644 index f36dbae174282f1271924dbec85bc6a264234257..0000000000000000000000000000000000000000 --- a/readme_template.md +++ /dev/null @@ -1,94 +0,0 @@ -# dbrepo-ismir - -install: llvmlite, numba, librosa - -apt installs needed: git-lfs, libsndfile1 - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [x] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [x] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://gitlab.tuwien.ac.at/martin.weise/dbrepo-ismir.git -git branch -M main -git push -uf origin main -``` - -## Integrate with your tools - -- [x] [Set up project integrations](https://gitlab.tuwien.ac.at/martin.weise/dbrepo-ismir/-/settings/integrations) - -## Collaborate with your team - -- [x] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [x] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [x] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [x] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [x] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -DBRepo-ISMIR - -## Description -A Repository that shows the usage of the DBRepo and Invenio platforms to create a genre prediction SVM and make its results reproducible. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/resource/1_audio_files/record_metadata.yml b/resource/1_audio_files/record_metadata.yml index c3aa94dd649e3c3b8a2013df8a8478a4f50057ba..dcd7ee64a23661cfa716f460567fbd62ae10683c 100644 --- a/resource/1_audio_files/record_metadata.yml +++ b/resource/1_audio_files/record_metadata.yml @@ -19,4 +19,19 @@ metadata: publication_date: '2022-01-01' resource_type: id: sound - title: 'DBREPO ISMIR testing 1' + title: Flattened Emotify Dataset + description: "400 MP3 files of one minute playtime each, names are labeled with the respective genre, one of: classical, rock, pop and electronic." + publisher: TU Wien + related_identifiers: + - identifier: https://www2.projects.science.uu.nl/memotion/emotifydata/ + relation: + id: isderivedfrom + resource_type: + id: sound + scheme: url + - identifier: https://gitlab.tuwien.ac.at/martin.weise/fairnb + relation: + id: isderivedfrom + resource_type: + id: software + scheme: url diff --git a/resource/5_ml_model/ml_model_entity_metadata.yml b/resource/5_ml_model/ml_model_entity_metadata.yml index 15b00433c8d30706f85489ebcf485372be9b0b5a..9bd2ee301255182d3ff998a5df48432b75241659 100644 --- a/resource/5_ml_model/ml_model_entity_metadata.yml +++ b/resource/5_ml_model/ml_model_entity_metadata.yml @@ -16,7 +16,19 @@ metadata: scheme: orcid name: L. Mahler type: personal - publication_date: '2022-01-01' +# publication_date: '2022-01-01' + description: Model used to classify music genres based on MFCC features. + publisher: TU Wien + related_identifiers: + - identifier: https://gitlab.tuwien.ac.at/martin.weise/fairnb + relation: + id: isderivedfrom + resource_type: + id: software + scheme: url resource_type: - id: sound - title: 'DBREPO ISMIR test result artefact' \ No newline at end of file + id: software + rights: + - id: mit + title: SVM model for genre classification +