From b3d42237ddf79eea1b345f916380f588dcd25074 Mon Sep 17 00:00:00 2001 From: Sung Won Chung Date: Wed, 6 Dec 2023 12:03:30 +1300 Subject: [PATCH 01/15] Make dbt data diffs concurrent (#776) * v0 of concurrency * concurrent logging * remove todo * remove todo * better var name * add node name to logger * format string logs * add optional logger param * avoid extra threads * use thread pools * not multithreaded at the connection level anymore * show errors as they happen * show full stacktrace on error * rearrange trace * more logs for debugging * update for threads mocking * clear log params * remove extra space * remove long traceback * Ensure log_message is optional Co-authored-by: Dan Lawin * map threaded result to proper model id * explicit type and optional * rm submodules again --------- Co-authored-by: Sung Won Chung Co-authored-by: Dan Lawin --- data_diff/databases/base.py | 15 ++++++--- data_diff/dbt.py | 43 +++++++++++++++---------- data_diff/dbt_parser.py | 6 ++-- data_diff/joindiff_tables.py | 61 +++++++++++++++++++++++++----------- data_diff/utils.py | 28 ++++++++--------- tests/test_dbt.py | 21 ++++++++----- 6 files changed, 110 insertions(+), 64 deletions(-) diff --git a/data_diff/databases/base.py b/data_diff/databases/base.py index c5931979..bf165461 100644 --- a/data_diff/databases/base.py +++ b/data_diff/databases/base.py @@ -931,7 +931,7 @@ def name(self): def compile(self, sql_ast): return self.dialect.compile(Compiler(self), sql_ast) - def query(self, sql_ast: Union[Expr, Generator], res_type: type = None): + def query(self, sql_ast: Union[Expr, Generator], res_type: type = None, log_message: Optional[str] = None): """Query the given SQL code/AST, and attempt to convert the result to type 'res_type' If given a generator, it will execute all the yielded sql queries with the same thread and cursor. @@ -956,7 +956,10 @@ def query(self, sql_ast: Union[Expr, Generator], res_type: type = None): if sql_code is SKIP: return SKIP - logger.debug("Running SQL (%s):\n%s", self.name, sql_code) + if log_message: + logger.debug("Running SQL (%s): %s \n%s", self.name, log_message, sql_code) + else: + logger.debug("Running SQL (%s):\n%s", self.name, sql_code) if self._interactive and isinstance(sql_ast, Select): explained_sql = self.compile(Explain(sql_ast)) @@ -1022,7 +1025,7 @@ def query_table_schema(self, path: DbPath) -> Dict[str, tuple]: Note: This method exists instead of select_table_schema(), just because not all databases support accessing the schema using a SQL query. """ - rows = self.query(self.select_table_schema(path), list) + rows = self.query(self.select_table_schema(path), list, log_message=path) if not rows: raise RuntimeError(f"{self.name}: Table '{'.'.join(path)}' does not exist, or has no columns") @@ -1044,7 +1047,7 @@ def query_table_unique_columns(self, path: DbPath) -> List[str]: """Query the table for its unique columns for table in 'path', and return {column}""" if not self.SUPPORTS_UNIQUE_CONSTAINT: raise NotImplementedError("This database doesn't support 'unique' constraints") - res = self.query(self.select_table_unique_columns(path), List[str]) + res = self.query(self.select_table_unique_columns(path), List[str], log_message=path) return list(res) def _process_table_schema( @@ -1086,7 +1089,9 @@ def _refine_coltypes( fields = [Code(self.dialect.normalize_uuid(self.dialect.quote(c), String_UUID())) for c in text_columns] samples_by_row = self.query( - table(*table_path).select(*fields).where(Code(where) if where else SKIP).limit(sample_size), list + table(*table_path).select(*fields).where(Code(where) if where else SKIP).limit(sample_size), + list, + log_message=table_path, ) if not samples_by_row: raise ValueError(f"Table {table_path} is empty.") diff --git a/data_diff/dbt.py b/data_diff/dbt.py index bf36c4fc..ef780429 100644 --- a/data_diff/dbt.py +++ b/data_diff/dbt.py @@ -8,6 +8,7 @@ import pydantic import rich from rich.prompt import Prompt +from concurrent.futures import ThreadPoolExecutor, as_completed from data_diff.errors import ( DataDiffCustomSchemaNoConfigError, @@ -80,7 +81,6 @@ def dbt_diff( production_schema_flag: Optional[str] = None, ) -> None: print_version_info() - diff_threads = [] set_entrypoint_name(os.getenv("DATAFOLD_TRIGGERED_BY", "CLI-dbt")) dbt_parser = DbtParser(profiles_dir_override, project_dir_override, state) models = dbt_parser.get_models(dbt_selection) @@ -112,7 +112,11 @@ def dbt_diff( else: dbt_parser.set_connection() - with log_status_handler.status if log_status_handler else nullcontext(): + futures = {} + + with log_status_handler.status if log_status_handler else nullcontext(), ThreadPoolExecutor( + max_workers=dbt_parser.threads + ) as executor: for model in models: if log_status_handler: log_status_handler.set_prefix(f"Diffing {model.alias} \n") @@ -140,12 +144,12 @@ def dbt_diff( if diff_vars.primary_keys: if is_cloud: - diff_thread = run_as_daemon( + future = executor.submit( _cloud_diff, diff_vars, config.datasource_id, api, org_meta, log_status_handler ) - diff_threads.append(diff_thread) else: - _local_diff(diff_vars, json_output) + future = executor.submit(_local_diff, diff_vars, json_output, log_status_handler) + futures[future] = model else: if json_output: print( @@ -165,10 +169,12 @@ def dbt_diff( + "Skipped due to unknown primary key. Add uniqueness tests, meta, or tags.\n" ) - # wait for all threads - if diff_threads: - for thread in diff_threads: - thread.join() + for future in as_completed(futures): + model = futures[future] + try: + future.result() # if error occurred, it will be raised here + except Exception as e: + logger.error(f"An error occurred during the execution of a diff task: {model.unique_id} - {e}") _extension_notification() @@ -265,15 +271,17 @@ def _get_prod_path_from_manifest(model, prod_manifest) -> Union[Tuple[str, str, return prod_database, prod_schema, prod_alias -def _local_diff(diff_vars: TDiffVars, json_output: bool = False) -> None: +def _local_diff( + diff_vars: TDiffVars, json_output: bool = False, log_status_handler: Optional[LogStatusHandler] = None +) -> None: + if log_status_handler: + log_status_handler.diff_started(diff_vars.dev_path[-1]) dev_qualified_str = ".".join(diff_vars.dev_path) prod_qualified_str = ".".join(diff_vars.prod_path) diff_output_str = _diff_output_base(dev_qualified_str, prod_qualified_str) - table1 = connect_to_table( - diff_vars.connection, prod_qualified_str, tuple(diff_vars.primary_keys), diff_vars.threads - ) - table2 = connect_to_table(diff_vars.connection, dev_qualified_str, tuple(diff_vars.primary_keys), diff_vars.threads) + table1 = connect_to_table(diff_vars.connection, prod_qualified_str, tuple(diff_vars.primary_keys)) + table2 = connect_to_table(diff_vars.connection, dev_qualified_str, tuple(diff_vars.primary_keys)) try: table1_columns = table1.get_schema() @@ -373,6 +381,9 @@ def _local_diff(diff_vars: TDiffVars, json_output: bool = False) -> None: diff_output_str += no_differences_template() rich.print(diff_output_str) + if log_status_handler: + log_status_handler.diff_finished(diff_vars.dev_path[-1]) + def _initialize_api() -> Optional[DatafoldAPI]: datafold_host = os.environ.get("DATAFOLD_HOST") @@ -406,7 +417,7 @@ def _cloud_diff( log_status_handler: Optional[LogStatusHandler] = None, ) -> None: if log_status_handler: - log_status_handler.cloud_diff_started(diff_vars.dev_path[-1]) + log_status_handler.diff_started(diff_vars.dev_path[-1]) diff_output_str = _diff_output_base(".".join(diff_vars.dev_path), ".".join(diff_vars.prod_path)) payload = TCloudApiDataDiff( data_source1_id=datasource_id, @@ -476,7 +487,7 @@ def _cloud_diff( rich.print(diff_output_str) if log_status_handler: - log_status_handler.cloud_diff_finished(diff_vars.dev_path[-1]) + log_status_handler.diff_finished(diff_vars.dev_path[-1]) except BaseException as ex: # Catch KeyboardInterrupt too error = ex finally: diff --git a/data_diff/dbt_parser.py b/data_diff/dbt_parser.py index 4b6124d5..0d864a57 100644 --- a/data_diff/dbt_parser.py +++ b/data_diff/dbt_parser.py @@ -446,17 +446,17 @@ def get_pk_from_model(self, node, unique_columns: dict, pk_tag: str) -> List[str from_meta = [name for name, params in node.columns.items() if pk_tag in params.meta] or None if from_meta: - logger.debug("Found PKs via META: " + str(from_meta)) + logger.debug(f"Found PKs via META [{node.name}]: " + str(from_meta)) return from_meta from_tags = [name for name, params in node.columns.items() if pk_tag in params.tags] or None if from_tags: - logger.debug("Found PKs via Tags: " + str(from_tags)) + logger.debug(f"Found PKs via Tags [{node.name}]: " + str(from_tags)) return from_tags if node.unique_id in unique_columns: from_uniq = unique_columns.get(node.unique_id) if from_uniq is not None: - logger.debug("Found PKs via Uniqueness tests: " + str(from_uniq)) + logger.debug(f"Found PKs via Uniqueness tests [{node.name}]: {str(from_uniq)}") return list(from_uniq) except (KeyError, IndexError, TypeError) as e: diff --git a/data_diff/joindiff_tables.py b/data_diff/joindiff_tables.py index 6fadc5d8..8e7fcf30 100644 --- a/data_diff/joindiff_tables.py +++ b/data_diff/joindiff_tables.py @@ -162,7 +162,7 @@ def _diff_tables_root(self, table1: TableSegment, table2: TableSegment, info_tre yield from self._diff_segments(None, table1, table2, info_tree, None) else: yield from self._bisect_and_diff_tables(table1, table2, info_tree) - logger.info("Diffing complete") + logger.info(f"Diffing complete: {table1.table_path} <> {table2.table_path}") if self.materialize_to_table: logger.info("Materialized diff to table '%s'.", ".".join(self.materialize_to_table)) @@ -193,8 +193,8 @@ def _diff_segments( partial(self._collect_stats, 1, table1, info_tree), partial(self._collect_stats, 2, table2, info_tree), partial(self._test_null_keys, table1, table2), - partial(self._sample_and_count_exclusive, db, diff_rows, a_cols, b_cols), - partial(self._count_diff_per_column, db, diff_rows, list(a_cols), is_diff_cols), + partial(self._sample_and_count_exclusive, db, diff_rows, a_cols, b_cols, table1, table2), + partial(self._count_diff_per_column, db, diff_rows, list(a_cols), is_diff_cols, table1, table2), partial( self._materialize_diff, db, @@ -205,8 +205,8 @@ def _diff_segments( else None, ): assert len(a_cols) == len(b_cols) - logger.debug("Querying for different rows") - diff = db.query(diff_rows, list) + logger.debug(f"Querying for different rows: {table1.table_path}") + diff = db.query(diff_rows, list, log_message=table1.table_path) info_tree.info.set_diff(diff, schema=tuple(diff_rows.schema.items())) for is_xa, is_xb, *x in diff: if is_xa and is_xb: @@ -227,7 +227,7 @@ def _diff_segments( yield "+", tuple(b_row) def _test_duplicate_keys(self, table1: TableSegment, table2: TableSegment): - logger.debug("Testing for duplicate keys") + logger.debug(f"Testing for duplicate keys: {table1.table_path} <> {table2.table_path}") # Test duplicate keys for ts in [table1, table2]: @@ -240,16 +240,16 @@ def _test_duplicate_keys(self, table1: TableSegment, table2: TableSegment): unvalidated = list(set(key_columns) - set(unique)) if unvalidated: - logger.info(f"Validating that the are no duplicate keys in columns: {unvalidated}") + logger.info(f"Validating that the are no duplicate keys in columns: {unvalidated} for {ts.table_path}") # Validate that there are no duplicate keys self.stats["validated_unique_keys"] = self.stats.get("validated_unique_keys", []) + [unvalidated] q = t.select(total=Count(), total_distinct=Count(Concat(this[unvalidated]), distinct=True)) - total, total_distinct = ts.database.query(q, tuple) + total, total_distinct = ts.database.query(q, tuple, log_message=ts.table_path) if total != total_distinct: raise ValueError("Duplicate primary keys") def _test_null_keys(self, table1, table2): - logger.debug("Testing for null keys") + logger.debug(f"Testing for null keys: {table1.table_path} <> {table2.table_path}") # Test null keys for ts in [table1, table2]: @@ -257,7 +257,7 @@ def _test_null_keys(self, table1, table2): key_columns = ts.key_columns q = t.select(*this[key_columns]).where(or_(this[k] == None for k in key_columns)) - nulls = ts.database.query(q, list) + nulls = ts.database.query(q, list, log_message=ts.table_path) if nulls: if self.skip_null_keys: logger.warning( @@ -267,7 +267,7 @@ def _test_null_keys(self, table1, table2): raise ValueError(f"NULL values in one or more primary keys of {ts.table_path}") def _collect_stats(self, i, table_seg: TableSegment, info_tree: InfoTree): - logger.debug(f"Collecting stats for table #{i}") + logger.debug(f"Collecting stats for table #{i}: {table_seg.table_path}") db = table_seg.database # Metrics @@ -288,7 +288,7 @@ def _collect_stats(self, i, table_seg: TableSegment, info_tree: InfoTree): ) col_exprs["count"] = Count() - res = db.query(table_seg.make_select().select(**col_exprs), tuple) + res = db.query(table_seg.make_select().select(**col_exprs), tuple, log_message=table_seg.table_path) for col_name, value in safezip(col_exprs, res): if value is not None: @@ -303,7 +303,7 @@ def _collect_stats(self, i, table_seg: TableSegment, info_tree: InfoTree): else: self.stats[stat_name] = value - logger.debug("Done collecting stats for table #%s", i) + logger.debug("Done collecting stats for table #%s: %s", i, table_seg.table_path) def _create_outer_join(self, table1, table2): db = table1.database @@ -334,23 +334,46 @@ def _create_outer_join(self, table1, table2): diff_rows = all_rows.where(or_(this[c] == 1 for c in is_diff_cols)) return diff_rows, a_cols, b_cols, is_diff_cols, all_rows - def _count_diff_per_column(self, db, diff_rows, cols, is_diff_cols): - logger.debug("Counting differences per column") - is_diff_cols_counts = db.query(diff_rows.select(sum_(this[c]) for c in is_diff_cols), tuple) + def _count_diff_per_column( + self, + db, + diff_rows, + cols, + is_diff_cols, + table1: Optional[TableSegment] = None, + table2: Optional[TableSegment] = None, + ): + logger.info(type(table1)) + logger.debug(f"Counting differences per column: {table1.table_path} <> {table2.table_path}") + is_diff_cols_counts = db.query( + diff_rows.select(sum_(this[c]) for c in is_diff_cols), + tuple, + log_message=f"{table1.table_path} <> {table2.table_path}", + ) diff_counts = {} for name, count in safezip(cols, is_diff_cols_counts): diff_counts[name] = diff_counts.get(name, 0) + (count or 0) self.stats["diff_counts"] = diff_counts - def _sample_and_count_exclusive(self, db, diff_rows, a_cols, b_cols): + def _sample_and_count_exclusive( + self, + db, + diff_rows, + a_cols, + b_cols, + table1: Optional[TableSegment] = None, + table2: Optional[TableSegment] = None, + ): if isinstance(db, (Oracle, MsSQL)): exclusive_rows_query = diff_rows.where((this.is_exclusive_a == 1) | (this.is_exclusive_b == 1)) else: exclusive_rows_query = diff_rows.where(this.is_exclusive_a | this.is_exclusive_b) if not self.sample_exclusive_rows: - logger.debug("Counting exclusive rows") - self.stats["exclusive_count"] = db.query(exclusive_rows_query.count(), int) + logger.debug(f"Counting exclusive rows: {table1.table_path} <> {table2.table_path}") + self.stats["exclusive_count"] = db.query( + exclusive_rows_query.count(), int, log_message=f"{table1.table_path} <> {table2.table_path}" + ) return logger.info("Counting and sampling exclusive rows") diff --git a/data_diff/utils.py b/data_diff/utils.py index ee4a0f17..b9045cc1 100644 --- a/data_diff/utils.py +++ b/data_diff/utils.py @@ -485,31 +485,31 @@ def __init__(self): super().__init__() self.status = Status("") self.prefix = "" - self.cloud_diff_status = {} + self.diff_status = {} def emit(self, record): log_entry = self.format(record) - if self.cloud_diff_status: - self._update_cloud_status(log_entry) + if self.diff_status: + self._update_diff_status(log_entry) else: self.status.update(self.prefix + log_entry) def set_prefix(self, prefix_string): self.prefix = prefix_string - def cloud_diff_started(self, model_name): - self.cloud_diff_status[model_name] = "[yellow]In Progress[/]" - self._update_cloud_status() + def diff_started(self, model_name): + self.diff_status[model_name] = "[yellow]In Progress[/]" + self._update_diff_status() - def cloud_diff_finished(self, model_name): - self.cloud_diff_status[model_name] = "[green]Finished [/]" - self._update_cloud_status() + def diff_finished(self, model_name): + self.diff_status[model_name] = "[green]Finished [/]" + self._update_diff_status() - def _update_cloud_status(self, log=None): - cloud_status_string = "\n" - for model_name, status in self.cloud_diff_status.items(): - cloud_status_string += f"{status} {model_name}\n" - self.status.update(f"{cloud_status_string}{log or ''}") + def _update_diff_status(self, log=None): + status_string = "\n" + for model_name, status in self.diff_status.items(): + status_string += f"{status} {model_name}\n" + self.status.update(f"{status_string}{log or ''}") class UnknownMeta(type): diff --git a/tests/test_dbt.py b/tests/test_dbt.py index c281b6fb..31af99eb 100644 --- a/tests/test_dbt.py +++ b/tests/test_dbt.py @@ -93,8 +93,8 @@ def test_local_diff(self, mock_diff_tables): ) self.assertEqual(len(mock_diff_tables.call_args[1]["extra_columns"]), 2) self.assertEqual(mock_connect.call_count, 2) - mock_connect.assert_any_call(connection, ".".join(dev_qualified_list), tuple(expected_primary_keys), threads) - mock_connect.assert_any_call(connection, ".".join(prod_qualified_list), tuple(expected_primary_keys), threads) + mock_connect.assert_any_call(connection, ".".join(dev_qualified_list), tuple(expected_primary_keys)) + mock_connect.assert_any_call(connection, ".".join(prod_qualified_list), tuple(expected_primary_keys)) mock_diff.get_stats_string.assert_called_once() @patch("data_diff.dbt.diff_tables") @@ -180,8 +180,8 @@ def test_local_diff_no_diffs(self, mock_diff_tables): ) self.assertEqual(len(mock_diff_tables.call_args[1]["extra_columns"]), 2) self.assertEqual(mock_connect.call_count, 2) - mock_connect.assert_any_call(connection, ".".join(dev_qualified_list), tuple(expected_primary_keys), None) - mock_connect.assert_any_call(connection, ".".join(prod_qualified_list), tuple(expected_primary_keys), None) + mock_connect.assert_any_call(connection, ".".join(dev_qualified_list), tuple(expected_primary_keys)) + mock_connect.assert_any_call(connection, ".".join(prod_qualified_list), tuple(expected_primary_keys)) mock_diff.get_stats_string.assert_not_called() @patch("data_diff.dbt.rich.print") @@ -248,6 +248,7 @@ def test_diff_is_cloud( where = "a_string" config = TDatadiffConfig(prod_database="prod_db", prod_schema="prod_schema", datasource_id=1) mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_model = Mock() mock_api.get_data_source.return_value = TCloudApiDataSource(id=1, type="snowflake", name="snowflake") mock_initialize_api.return_value = mock_api @@ -386,6 +387,7 @@ def test_diff_is_not_cloud(self, mock_print, mock_dbt_parser, mock_cloud_diff, m threads = None where = "a_string" mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_dbt_parser.return_value = mock_dbt_parser_inst mock_model = Mock() mock_dbt_parser_inst.get_models.return_value = [mock_model] @@ -407,7 +409,7 @@ def test_diff_is_not_cloud(self, mock_print, mock_dbt_parser, mock_cloud_diff, m mock_dbt_parser_inst.get_models.assert_called_once() mock_dbt_parser_inst.set_connection.assert_called_once() mock_cloud_diff.assert_not_called() - mock_local_diff.assert_called_once_with(diff_vars, False) + mock_local_diff.assert_called_once_with(diff_vars, False, None) mock_print.assert_not_called() @patch("data_diff.dbt._get_diff_vars") @@ -423,6 +425,7 @@ def test_diff_state_model_dne( threads = None where = "a_string" mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_dbt_parser.return_value = mock_dbt_parser_inst mock_model = Mock() mock_dbt_parser_inst.get_models.return_value = [mock_model] @@ -460,6 +463,7 @@ def test_diff_only_prod_db(self, mock_print, mock_dbt_parser, mock_cloud_diff, m threads = None where = "a_string" mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_dbt_parser.return_value = mock_dbt_parser_inst mock_model = Mock() mock_dbt_parser_inst.get_models.return_value = [mock_model] @@ -481,7 +485,7 @@ def test_diff_only_prod_db(self, mock_print, mock_dbt_parser, mock_cloud_diff, m mock_dbt_parser_inst.get_models.assert_called_once() mock_dbt_parser_inst.set_connection.assert_called_once() mock_cloud_diff.assert_not_called() - mock_local_diff.assert_called_once_with(diff_vars, False) + mock_local_diff.assert_called_once_with(diff_vars, False, None) mock_print.assert_not_called() @patch("data_diff.dbt._get_diff_vars") @@ -497,6 +501,7 @@ def test_diff_only_prod_schema( threads = None where = "a_string" mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_dbt_parser.return_value = mock_dbt_parser_inst mock_model = Mock() mock_dbt_parser_inst.get_models.return_value = [mock_model] @@ -518,7 +523,7 @@ def test_diff_only_prod_schema( mock_dbt_parser_inst.get_models.assert_called_once() mock_dbt_parser_inst.set_connection.assert_called_once() mock_cloud_diff.assert_not_called() - mock_local_diff.assert_called_once_with(diff_vars, False) + mock_local_diff.assert_called_once_with(diff_vars, False, None) mock_print.assert_not_called() @patch("data_diff.dbt._initialize_api") @@ -543,6 +548,7 @@ def test_diff_is_cloud_no_pks( mock_model = Mock() connection = {} threads = None + mock_dbt_parser_inst.threads = threads where = "a_string" config = TDatadiffConfig(prod_database="prod_db", prod_schema="prod_schema", datasource_id=1) mock_api = Mock() @@ -584,6 +590,7 @@ def test_diff_not_is_cloud_no_pks( threads = None where = "a_string" mock_dbt_parser_inst = Mock() + mock_dbt_parser_inst.threads = threads mock_dbt_parser.return_value = mock_dbt_parser_inst mock_model = Mock() mock_dbt_parser_inst.get_models.return_value = [mock_model] From e61815bed9501df52620d7667f84106f3db3602e Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 5 Dec 2023 17:13:46 -0700 Subject: [PATCH 02/15] fix unreachable code branches --- data_diff/hashdiff_tables.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_diff/hashdiff_tables.py b/data_diff/hashdiff_tables.py index b77594cc..531213f4 100644 --- a/data_diff/hashdiff_tables.py +++ b/data_diff/hashdiff_tables.py @@ -92,7 +92,7 @@ def _validate_and_adjust_columns(self, table1: TableSegment, table2: TableSegmen # Update schemas to minimal mutual precision col1 = table1._schema[c1] col2 = table2._schema[c2] - if isinstance(col1, PrecisionType) and isinstance(col2, PrecisionType): + if isinstance(col1, PrecisionType): if strict and not isinstance(col2, PrecisionType): raise TypeError(f"Incompatible types for column '{c1}': {col1} <-> {col2}") @@ -104,7 +104,7 @@ def _validate_and_adjust_columns(self, table1: TableSegment, table2: TableSegmen table1._schema[c1] = attrs.evolve(col1, precision=lowest.precision, rounds=lowest.rounds) table2._schema[c2] = attrs.evolve(col2, precision=lowest.precision, rounds=lowest.rounds) - elif isinstance(col1, (NumericType, Boolean)) and isinstance(col2, (NumericType, Boolean)): + elif isinstance(col1, (NumericType, Boolean)): if strict and not isinstance(col2, (NumericType, Boolean)): raise TypeError(f"Incompatible types for column '{c1}': {col1} <-> {col2}") From be1d947309ba8e5cefc5b1e47dae78dfe4df8d6e Mon Sep 17 00:00:00 2001 From: Valentin Khomutenko Date: Wed, 6 Dec 2023 16:23:53 +0100 Subject: [PATCH 03/15] accept either key file path or file itself --- data_diff/databases/snowflake.py | 40 ++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/data_diff/databases/snowflake.py b/data_diff/databases/snowflake.py index d83c0f40..5ab48243 100644 --- a/data_diff/databases/snowflake.py +++ b/data_diff/databases/snowflake.py @@ -1,4 +1,5 @@ -from typing import Any, Union, List +import base64 +from typing import Any, Union, List, Optional import logging import attrs @@ -162,7 +163,7 @@ class Snowflake(Database): _conn: Any - def __init__(self, *, schema: str, **kw): + def __init__(self, *, schema: str, key: Optional[str] = None, key_content: Optional[str] = None, **kw): super().__init__() snowflake, serialization, default_backend = import_snowflake() logging.getLogger("snowflake.connector").setLevel(logging.WARNING) @@ -172,20 +173,29 @@ def __init__(self, *, schema: str, **kw): logging.getLogger("snowflake.connector.network").disabled = True assert '"' not in schema, "Schema name should not contain quotes!" + if key_content and key: + raise ConnectError("Only key value or key file path can be specified, not both") + + key_bytes = None + if key: + with open(key, "rb") as f: + key_bytes = f.read() + if key_content: + key_bytes = base64.b64decode(key_content) + # If a private key is used, read it from the specified path and pass it as "private_key" to the connector. - if "key" in kw: - with open(kw.get("key"), "rb") as key: - if "password" in kw: - raise ConnectError("Cannot use password and key at the same time") - if kw.get("private_key_passphrase"): - encoded_passphrase = kw.get("private_key_passphrase").encode() - else: - encoded_passphrase = None - p_key = serialization.load_pem_private_key( - key.read(), - password=encoded_passphrase, - backend=default_backend(), - ) + if key_bytes: + if "password" in kw: + raise ConnectError("Cannot use password and key at the same time") + if kw.get("private_key_passphrase"): + encoded_passphrase = kw.get("private_key_passphrase").encode() + else: + encoded_passphrase = None + p_key = serialization.load_pem_private_key( + key_bytes, + password=encoded_passphrase, + backend=default_backend(), + ) kw["private_key"] = p_key.private_bytes( encoding=serialization.Encoding.DER, From bf7276b072938d29548f94e03df69d5f046f200b Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 6 Dec 2023 12:52:26 -0700 Subject: [PATCH 04/15] mssql normalize_uuid --- data_diff/databases/mssql.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index 8f5195ee..b637c285 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -13,6 +13,7 @@ ) from data_diff.abcs.database_types import ( JSON, + ColType_UUID, NumericType, Timestamp, TimestampTZ, @@ -154,6 +155,9 @@ def md5_as_int(self, s: str) -> str: def md5_as_hex(self, s: str) -> str: return f"HashBytes('MD5', {s})" + def normalize_uuid(self, value: str, coltype: ColType_UUID) -> str: + return f"TRIM(CAST({value} AS char)) AS {value}" + @attrs.define(frozen=False, init=False, kw_only=True) class MsSQL(ThreadedDatabase): From 8cfcb9b7d0e3611274c2cdd647c48afc611e3e23 Mon Sep 17 00:00:00 2001 From: Dan Lawin Date: Wed, 6 Dec 2023 16:10:36 -0700 Subject: [PATCH 05/15] Revert "mssql normalize_uuid" --- data_diff/databases/mssql.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index b637c285..8f5195ee 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -13,7 +13,6 @@ ) from data_diff.abcs.database_types import ( JSON, - ColType_UUID, NumericType, Timestamp, TimestampTZ, @@ -155,9 +154,6 @@ def md5_as_int(self, s: str) -> str: def md5_as_hex(self, s: str) -> str: return f"HashBytes('MD5', {s})" - def normalize_uuid(self, value: str, coltype: ColType_UUID) -> str: - return f"TRIM(CAST({value} AS char)) AS {value}" - @attrs.define(frozen=False, init=False, kw_only=True) class MsSQL(ThreadedDatabase): From 1ddd783091fba89d7496770db35cea0685a4149c Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 6 Dec 2023 16:13:59 -0700 Subject: [PATCH 06/15] fix mssql limit_select --- data_diff/databases/mssql.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index 8f5195ee..d15e7954 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -113,19 +113,21 @@ def is_distinct_from(self, a: str, b: str) -> str: def limit_select( self, select_query: str, - offset: Optional[int] = None, - limit: Optional[int] = None, - has_order_by: Optional[bool] = None, + offset: int | None = None, + limit: int | None = None, + has_order_by: bool | None = None, ) -> str: if offset: raise NotImplementedError("No support for OFFSET in query") - result = "" if not has_order_by: result += "ORDER BY 1" result += f" OFFSET 0 ROWS FETCH NEXT {limit} ROWS ONLY" - return f"SELECT * FROM ({select_query}) AS LIMITED_SELECT {result}" + + # mssql requires that subquery columns are all aliased, so + # don't wrap in an outer select + return f"{select_query} {result}" def constant_values(self, rows) -> str: values = ", ".join("(%s)" % ", ".join(self._constant_value(v) for v in row) for row in rows) From 643b1ea79cd5d63f03ce87e78de3646303394afa Mon Sep 17 00:00:00 2001 From: Dan Date: Wed, 6 Dec 2023 16:14:52 -0700 Subject: [PATCH 07/15] use Optional[] --- data_diff/databases/mssql.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data_diff/databases/mssql.py b/data_diff/databases/mssql.py index d15e7954..834ed9cd 100644 --- a/data_diff/databases/mssql.py +++ b/data_diff/databases/mssql.py @@ -113,9 +113,9 @@ def is_distinct_from(self, a: str, b: str) -> str: def limit_select( self, select_query: str, - offset: int | None = None, - limit: int | None = None, - has_order_by: bool | None = None, + offset: Optional[int] = None, + limit: Optional[int] = None, + has_order_by: Optional[bool] = None, ) -> str: if offset: raise NotImplementedError("No support for OFFSET in query") From 6906c42fffda9fbc737a8695b53cb85a8a8873f9 Mon Sep 17 00:00:00 2001 From: Dan Date: Mon, 11 Dec 2023 11:59:06 -0700 Subject: [PATCH 08/15] v0.10.0rc0 --- data_diff/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data_diff/version.py b/data_diff/version.py index e1170d35..90ebae8a 100644 --- a/data_diff/version.py +++ b/data_diff/version.py @@ -1 +1 @@ -__version__ = "0.9.17" +__version__ = "0.10.0rc0" diff --git a/pyproject.toml b/pyproject.toml index c3448c01..1b380dde 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "data-diff" -version = "0.9.17" +version = "0.10.0rc0" description = "Command-line tool and Python library to efficiently diff rows across two different databases." authors = ["Datafold "] license = "MIT" From c1dde755f7cae4048599d0f0d515f25a1e7d0b5b Mon Sep 17 00:00:00 2001 From: Sung Won Chung Date: Wed, 13 Dec 2023 11:51:01 +1300 Subject: [PATCH 09/15] remove unneeded logging (#798) Co-authored-by: Sung Won Chung --- data_diff/joindiff_tables.py | 1 - 1 file changed, 1 deletion(-) diff --git a/data_diff/joindiff_tables.py b/data_diff/joindiff_tables.py index 8e7fcf30..2d5e631a 100644 --- a/data_diff/joindiff_tables.py +++ b/data_diff/joindiff_tables.py @@ -343,7 +343,6 @@ def _count_diff_per_column( table1: Optional[TableSegment] = None, table2: Optional[TableSegment] = None, ): - logger.info(type(table1)) logger.debug(f"Counting differences per column: {table1.table_path} <> {table2.table_path}") is_diff_cols_counts = db.query( diff_rows.select(sum_(this[c]) for c in is_diff_cols), From 6c9ab5fdf68f19994a45ac6d7d90a8dfb743cc9a Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Fri, 15 Dec 2023 16:43:53 +0100 Subject: [PATCH 10/15] Accept external database types/schemes at runtime --- data_diff/databases/_connect.py | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/data_diff/databases/_connect.py b/data_diff/databases/_connect.py index be55cc2d..1e34ef62 100644 --- a/data_diff/databases/_connect.py +++ b/data_diff/databases/_connect.py @@ -26,7 +26,7 @@ from data_diff.databases.mssql import MsSQL -@attrs.define(frozen=True) +@attrs.frozen class MatchUriPath: database_cls: Type[Database] @@ -98,13 +98,11 @@ class Connect: """Provides methods for connecting to a supported database using a URL or connection dict.""" database_by_scheme: Dict[str, Database] - match_uri_path: Dict[str, MatchUriPath] conn_cache: MutableMapping[Hashable, Database] def __init__(self, database_by_scheme: Dict[str, Database] = DATABASE_BY_SCHEME): super().__init__() self.database_by_scheme = database_by_scheme - self.match_uri_path = {name: MatchUriPath(cls) for name, cls in database_by_scheme.items()} self.conn_cache = weakref.WeakValueDictionary() def for_databases(self, *dbs) -> Self: @@ -157,12 +155,10 @@ def connect_to_uri(self, db_uri: str, thread_count: Optional[int] = 1, **kwargs) return self.connect_with_dict(conn_dict, thread_count, **kwargs) try: - matcher = self.match_uri_path[scheme] + cls = self.database_by_scheme[scheme] except KeyError: raise NotImplementedError(f"Scheme '{scheme}' currently not supported") - cls = matcher.database_cls - if scheme == "databricks": assert not dsn.user kw = {} @@ -175,6 +171,7 @@ def connect_to_uri(self, db_uri: str, thread_count: Optional[int] = 1, **kwargs) kw["filepath"] = dsn.dbname kw["dbname"] = dsn.user else: + matcher = MatchUriPath(cls) kw = matcher.match_path(dsn) if scheme == "bigquery": @@ -198,7 +195,7 @@ def connect_to_uri(self, db_uri: str, thread_count: Optional[int] = 1, **kwargs) kw = {k: v for k, v in kw.items() if v is not None} - if issubclass(cls, ThreadedDatabase): + if isinstance(cls, type) and issubclass(cls, ThreadedDatabase): db = cls(thread_count=thread_count, **kw, **kwargs) else: db = cls(**kw, **kwargs) @@ -209,11 +206,10 @@ def connect_with_dict(self, d, thread_count, **kwargs): d = dict(d) driver = d.pop("driver") try: - matcher = self.match_uri_path[driver] + cls = self.database_by_scheme[driver] except KeyError: raise NotImplementedError(f"Driver '{driver}' currently not supported") - cls = matcher.database_cls if issubclass(cls, ThreadedDatabase): db = cls(thread_count=thread_count, **d, **kwargs) else: From 3474795068ad561a48761e3e99e857b1e90c2ff6 Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Fri, 15 Dec 2023 16:40:48 +0100 Subject: [PATCH 11/15] Tolerate empty samples for textual/uuid PKs --- data_diff/databases/base.py | 6 +----- tests/test_diff_tables.py | 6 ++++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/data_diff/databases/base.py b/data_diff/databases/base.py index bf165461..059854a5 100644 --- a/data_diff/databases/base.py +++ b/data_diff/databases/base.py @@ -1093,11 +1093,7 @@ def _refine_coltypes( list, log_message=table_path, ) - if not samples_by_row: - raise ValueError(f"Table {table_path} is empty.") - - samples_by_col = list(zip(*samples_by_row)) - + samples_by_col = list(zip(*samples_by_row)) if samples_by_row else [[]] * len(text_columns) for col_name, samples in safezip(text_columns, samples_by_col): uuid_samples = [s for s in samples if s and is_uuid(s)] diff --git a/tests/test_diff_tables.py b/tests/test_diff_tables.py index 2e48798a..9a975089 100644 --- a/tests/test_diff_tables.py +++ b/tests/test_diff_tables.py @@ -696,10 +696,12 @@ def setUp(self): self.differ = HashDiffer(bisection_factor=2) def test_right_table_empty(self): - self.assertRaises(ValueError, list, self.differ.diff_tables(self.a, self.b)) + # NotImplementedError: Cannot use a column of type Text(_notes=[]) as a key + self.assertRaises(NotImplementedError, list, self.differ.diff_tables(self.a, self.b)) def test_left_table_empty(self): - self.assertRaises(ValueError, list, self.differ.diff_tables(self.a, self.b)) + # NotImplementedError: Cannot use a column of type Text(_notes=[]) as a key + self.assertRaises(NotImplementedError, list, self.differ.diff_tables(self.a, self.b)) class TestInfoTree(DiffTestCase): From f1ef90a17d9487fdb9d71ea77e6fd17c0345b004 Mon Sep 17 00:00:00 2001 From: Sergey Vasilyev Date: Fri, 15 Dec 2023 21:55:20 +0100 Subject: [PATCH 12/15] Tolerate column type mismatch, it could be aligned later & better --- data_diff/hashdiff_tables.py | 8 -------- 1 file changed, 8 deletions(-) diff --git a/data_diff/hashdiff_tables.py b/data_diff/hashdiff_tables.py index b77594cc..b9bf1239 100644 --- a/data_diff/hashdiff_tables.py +++ b/data_diff/hashdiff_tables.py @@ -118,14 +118,6 @@ def _validate_and_adjust_columns(self, table1: TableSegment, table2: TableSegmen if lowest.precision != col2.precision: table2._schema[c2] = attrs.evolve(col2, precision=lowest.precision) - elif isinstance(col1, ColType_UUID): - if strict and not isinstance(col2, ColType_UUID): - raise TypeError(f"Incompatible types for column '{c1}': {col1} <-> {col2}") - - elif isinstance(col1, StringType): - if strict and not isinstance(col2, StringType): - raise TypeError(f"Incompatible types for column '{c1}': {col1} <-> {col2}") - for t in [table1, table2]: for c in t.relevant_columns: ctype = t._schema[c] From d45c3325208c929260855ded19caa9ddec66583b Mon Sep 17 00:00:00 2001 From: Dan Date: Fri, 15 Dec 2023 16:39:30 -0700 Subject: [PATCH 13/15] redshift: also try to get schema from svv_columns --- data_diff/databases/redshift.py | 37 ++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/data_diff/databases/redshift.py b/data_diff/databases/redshift.py index d31258e1..44e86b17 100644 --- a/data_diff/databases/redshift.py +++ b/data_diff/databases/redshift.py @@ -122,6 +122,38 @@ def query_pg_get_cols(self, path: DbPath) -> Dict[str, tuple]: return schema_dict + def select_svv_columns_schema(self, path: DbPath) -> Dict[str, tuple]: + database, schema, table = self._normalize_table_path(path) + + db_clause = "" + if database: + db_clause = f" AND table_catalog = '{database.lower()}'" + + return ( + f""" + select + distinct + column_name, + data_type, + datetime_precision, + numeric_precision, + numeric_scale + from + svv_columns + where table_name = '{table.lower()}' and table_schema = '{schema.lower()}' + """ + + db_clause + ) + + def query_svv_columns(self, path: DbPath) -> Dict[str, tuple]: + rows = self.query(self.select_svv_columns_schema(path), list) + if not rows: + raise RuntimeError(f"{self.name}: Table '{'.'.join(path)}' does not exist, or has no columns") + + d = {r[0]: r for r in rows} + assert len(d) == len(rows) + return d + # when using a non-information_schema source, strip (N) from type(N) etc. to match # typical information_schema output def _normalize_schema_info(self, rows) -> Dict[str, tuple]: @@ -150,7 +182,10 @@ def query_table_schema(self, path: DbPath) -> Dict[str, tuple]: try: return self.query_external_table_schema(path) except RuntimeError: - return self.query_pg_get_cols(path) + try: + return self.query_pg_get_cols(path) + except Exception: + return self.query_svv_columns(path) def _normalize_table_path(self, path: DbPath) -> DbPath: if len(path) == 1: From 0b7404617d20acf34c58503cdd30e2aa51933b4c Mon Sep 17 00:00:00 2001 From: Sung Won Chung Date: Tue, 19 Dec 2023 11:25:29 +1300 Subject: [PATCH 14/15] Track data-diff usage in MotherDuck (#800) * Update DuckDB connection parameters * remove submods * tracking logic * conditional connection * semver parsing * motherduck test configs * remove submods * add motherduck dbt test * passing motherduck tests * more readable config * remove submods * user agent spec * previous presto version --------- Co-authored-by: Sung Won Chung --- .github/workflows/ci.yml | 1 + .github/workflows/ci_full.yml | 1 + data_diff/databases/duckdb.py | 16 +- poetry.lock | 2020 ++++++++++--------- pyproject.toml | 4 +- tests/dbt_artifacts/jaffle_shop.duckdb | Bin 4730880 -> 3158016 bytes tests/dbt_artifacts/motherduck/profiles.yml | 7 + tests/dbt_artifacts/profiles.yml | 4 - tests/test_dbt.py | 18 + 9 files changed, 1112 insertions(+), 959 deletions(-) create mode 100644 tests/dbt_artifacts/motherduck/profiles.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd995d5a..acaaa597 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -68,6 +68,7 @@ jobs: DATADIFF_CLICKHOUSE_URI: 'clickhouse://clickhouse:Password1@localhost:9000/clickhouse' DATADIFF_VERTICA_URI: 'vertica://vertica:Password1@localhost:5433/vertica' DATADIFF_REDSHIFT_URI: '${{ secrets.DATADIFF_REDSHIFT_URI }}' + MOTHERDUCK_TOKEN: '${{ secrets.MOTHERDUCK_TOKEN }}' run: | chmod +x tests/waiting_for_stack_up.sh ./tests/waiting_for_stack_up.sh && TEST_ACROSS_ALL_DBS=0 poetry run unittest-parallel -j 16 diff --git a/.github/workflows/ci_full.yml b/.github/workflows/ci_full.yml index d125d114..3e17af0e 100644 --- a/.github/workflows/ci_full.yml +++ b/.github/workflows/ci_full.yml @@ -64,6 +64,7 @@ jobs: DATADIFF_VERTICA_URI: 'vertica://vertica:Password1@localhost:5433/vertica' # DATADIFF_BIGQUERY_URI: '${{ secrets.DATADIFF_BIGQUERY_URI }}' DATADIFF_REDSHIFT_URI: '${{ secrets.DATADIFF_REDSHIFT_URI }}' + MOTHERDUCK_TOKEN: '${{ secrets.MOTHERDUCK_TOKEN }}' run: | chmod +x tests/waiting_for_stack_up.sh ./tests/waiting_for_stack_up.sh && poetry run unittest-parallel -j 16 diff --git a/data_diff/databases/duckdb.py b/data_diff/databases/duckdb.py index 6c65b16b..d057e0d9 100644 --- a/data_diff/databases/duckdb.py +++ b/data_diff/databases/duckdb.py @@ -1,6 +1,7 @@ from typing import Any, ClassVar, Dict, Union, Type import attrs +from packaging.version import parse as parse_version from data_diff.utils import match_regexps from data_diff.abcs.database_types import ( @@ -27,6 +28,7 @@ CHECKSUM_OFFSET, ) from data_diff.databases.base import MD5_HEXDIGITS, CHECKSUM_HEXDIGITS +from data_diff.version import __version__ @import_helper("duckdb") @@ -148,9 +150,21 @@ def close(self): def create_connection(self): ddb = import_duckdb() try: - return ddb.connect(self._args["filepath"]) + # custom_user_agent is only available in duckdb >= 0.9.2 + if parse_version(ddb.__version__) >= parse_version("0.9.2"): + custom_user_agent = f"data-diff/v{__version__}" + config = {"custom_user_agent": custom_user_agent} + connection = ddb.connect(database=self._args["filepath"], config=config) + custom_user_agent_results = connection.sql("PRAGMA USER_AGENT;").fetchall() + custom_user_agent_filtered = custom_user_agent_results[0][0] + assert custom_user_agent in custom_user_agent_filtered + else: + connection = ddb.connect(database=self._args["filepath"]) + return connection except ddb.OperationalError as e: raise ConnectError(*e.args) from e + except AssertionError: + raise ConnectError("Assertion failed: Custom user agent is invalid.") from None def select_table_schema(self, path: DbPath) -> str: database, schema, table = self._normalize_table_path(path) diff --git a/poetry.lock b/poetry.lock index 16e4495c..e07c2402 100644 --- a/poetry.lock +++ b/poetry.lock @@ -25,17 +25,22 @@ test = ["PyICU (>=2.4.2)", "coverage (>=3.7.1)", "cssselect (>=0.9.1)", "lxml (> [[package]] name = "arrow" -version = "1.2.3" +version = "1.3.0" description = "Better dates & times for Python" 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 = "asn1crypto" @@ -68,20 +73,23 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte [[package]] name = "babel" -version = "2.11.0" +version = "2.14.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "Babel-2.11.0-py3-none-any.whl", hash = "sha256:1ad3eca1c885218f6dce2ab67291178944f810a10a9b5f3cb8382a5a232b64fe"}, - {file = "Babel-2.11.0.tar.gz", hash = "sha256:5ef4b3226b0180dedded4229651c8b0e1a3a6a2837d45a073272f313e4cf97f6"}, + {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, + {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, ] [package.dependencies] -pytz = ">=2015.7" +pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} + +[package.extras] +dev = ["freezegun (>=1.0,<2.0)", "pytest (>=6.0)", "pytest-cov"] [[package]] -name = "backports.zoneinfo" +name = "backports-zoneinfo" version = "0.2.1" description = "Backport of the standard library zoneinfo module" optional = false @@ -110,86 +118,74 @@ tzdata = ["tzdata"] [[package]] name = "certifi" -version = "2022.12.7" +version = "2023.11.17" description = "Python package for providing Mozilla's CA Bundle." optional = false python-versions = ">=3.6" files = [ - {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, - {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, + {file = "certifi-2023.11.17-py3-none-any.whl", hash = "sha256:e036ab49d5b79556f99cfc2d9320b34cfbe5be05c5871b51de9329f0603b0474"}, + {file = "certifi-2023.11.17.tar.gz", hash = "sha256:9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"}, ] [[package]] name = "cffi" -version = "1.15.1" +version = "1.16.0" description = "Foreign Function Interface for Python calling C code." 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] @@ -208,27 +204,112 @@ files = [ [[package]] name = "charset-normalizer" -version = "2.0.12" +version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." optional = false -python-versions = ">=3.5.0" -files = [ - {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, - {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +python-versions = ">=3.7.0" +files = [ + {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.extras] -unicode-backport = ["unicodedata2"] - [[package]] name = "click" -version = "8.1.3" +version = "8.1.7" description = "Composable command line interface toolkit" optional = false python-versions = ">=3.7" files = [ - {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, - {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, + {file = "click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28"}, + {file = "click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de"}, ] [package.dependencies] @@ -236,105 +317,92 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} [[package]] name = "clickhouse-driver" -version = "0.2.5" +version = "0.2.6" description = "Python driver with native interface for ClickHouse" optional = false -python-versions = ">=3.6, <4" -files = [ - {file = "clickhouse-driver-0.2.5.tar.gz", hash = "sha256:403239e5820d07d35a380f1abcd45ea0397fe8059984abf0594783d1474d56f5"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:413c7116a0f35bfc12c22f616b4cc9673d74b293c90361c748be03a987c753c4"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc7d48fc72ddb5a24c59b521c7ff56e7bcc8520a9b4afe50d7efaec1aa4ae616"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5fbaef87d62bdf932c6d2f86c3a77d4675d309b9dd8c579b94776ec3da044bdf"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fda807b08ed23c6388c734486dcd218adefe78cac298f08dbc3a62d27d20462a"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec2eb78e361ff0f4f45b694e2d08e58c00329ee512471b23f53a23815dc34660"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c70a2f0c8bd8165e63788aa64b583a2c92ff73ca0a07b60ef7980250cee24a3d"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:77c541961f29f17880bece8c5cf22f52564579c086fe859568189ccb36cef7cb"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:3c0f5567e935b09ac6836e2a015306a6233538111be2a1067997fd7fdb865bed"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:36077623489c1558495cecfb682a777d33cb3f90b0d1e61558fe323d39cd736b"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ff24c5425b926eb18e434aa977f2ac1dfa6f907245fc1989633c07b67973843c"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d4fa637d702aca6993b5b03c20c910743e2a2e6a38661b8e9449b898d836b049"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-win32.whl", hash = "sha256:319c4ac6e063ca6786ca25aac86685841523d421f5483dc890589d221d36d562"}, - {file = "clickhouse_driver-0.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:f0cb4b9b1dd316611e4de858eb82a4f70fd1807cce9919aeed5b7bfd320ca3dc"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4605f2f197c07c6db91b9636d29e50322f095b006b6aca0f5f958bbbfe3a4381"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc5543eb45e556a45ed57328446971ad3f786f8230fbb96d736ad51ca6a0f085"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ab396a5ad5c54d463bac1b268373b7977d076c3c7ec474fc5fc908629b7e989"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:758c3d0c09d6c23f9014045aeadf3a2620c3763fc0b2875a1a8e213092afb92b"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe9781724eaf2a0cd85a1f1b2906867d548399f4ecc6b8b7460f20410eb036b5"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0e8aa79ddfb67ae2b6bf844d1493ab83321c4f2052686c6aa93f6658c737bd12"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8092518f839e01edbbe74db4c3d902028f9f4af5410571a131dac40f190edd4"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:019da690c9b82034ff7ebe2a2ac2af87b715a2c010f9a65fefc08c4bd792b0d6"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:fc300a72f0a09c2c286a55723466315a1b307f94a2ed81d1b7802598cd451059"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:937b663c400233d5ddd8b50fc260c3e374b7803dd401cb194ff64ddce9825aac"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e577b20814021e6851a7a3c075b1b4498c07ee5c1863481a6a1558a85739e145"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-win32.whl", hash = "sha256:d0d8f06a9264e1279c0aefc5dd7a6c6cdc4ce2d3aac3565865250db92694c9e7"}, - {file = "clickhouse_driver-0.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:3a0741b32cf2ed019aba7c65e198d33a74d91b4ca67d5918860b7a32b7a5c158"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:1edf78ff50587bde5775bfa98a17764d9fa2588e7841d63fadfca169277438d8"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e225d9261fbd35024b87b83c9d703331247d64583aedeb1210a700058422548e"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b5db4eccf1f9ff685b6a92b3755cfea612f58868c513344f71927697e93e7103"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2b4fe92b120faae255354d6cf4a45639236583add948401e2b72600be793a1a"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85e1b9618dbd0772497556e7b6dcf8063191c0e2ea9d7ba8e447e70aea0a88c8"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02c540813d644f1de73b0c033c10671b6c2ce97b46a233ac1936d71cc527d48f"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d9d27f28fe2d3ca3e9ef995466b44ee7863de61a671e1e305853e235c4f4b36e"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:ee77062908490d111f65cc795cad9db2d3952630905f44ad17cb0b71374cffad"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2a3e9d7dc9e58c7fee174516d00ad00b81fa6e4da56461d8ac206c28a16ad44c"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:d73c9dbc146d1456ea26c87f8b245f7ca69e5bc1883521fbc9074c3dd74a439a"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:14ce9ea8e4270307563bb95a1e39d8e9d6130cda926b33abbfb17d826b23acf0"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-win32.whl", hash = "sha256:d1cc49e8579b22d7fd2a8550b2da294bc21cc00189fa71ecf46b2f939011654c"}, - {file = "clickhouse_driver-0.2.5-cp36-cp36m-win_amd64.whl", hash = "sha256:e6693c1ee9c6c248fe31db716f4f0bdeff84ea8f1b4262c4d941f58d4a3a58d5"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5e1d7b6d22dd5efd771aa925a586185a51a64eeb908d61d5bfdcbb1416608d89"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:20c8eb194897c7826d82aa67ac2f92496214cdac3a3713df5c48d94fff494593"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0631980b28267f1137b08e6982f244597c0809478edeaa9d6b8046f38e1369ed"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:86c4b3bf77d3f81394b05dc4795485a95076bbe85708d14de261d7f961b0eff5"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:704a68cec8ce9997d2a8d43678852cbcc734b77fbe8c9b4b6c3aee9e09fed9ee"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8884f12911202c7b22502d1224cffb84559c91f93bcb1deb6a28251f7a82e98e"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:45852b9c90fa75a70c2a98556ad0a031a2a1c40e5bffe6dcf252c8cbace1f2b4"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:780843107ad370fdf1742aa68196158e395345ef72bb10f12a63ab82ea6f823d"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:f8ceb503bacd0234d28c2e99ad61ca0d64d3282d8531c3607a3d7a849aedaf01"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:fd9116181a645c9393e5ef9287fc8747ce25ce5a1d8d8cf079223de8bdb00236"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:efcb67627233f377f6057388b88b9f68a98f06588da24d073166fed9b5e4e875"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-win32.whl", hash = "sha256:6876827eaf7b1c9711a54a1241cc7be9417ba4885c89e6dd49205417e870a261"}, - {file = "clickhouse_driver-0.2.5-cp37-cp37m-win_amd64.whl", hash = "sha256:82835a6dca0016ac50d0b29eb02e9609f87f99af83e99fb0c5f15f893404c8bf"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e577d3e6d83cf71cf3dd29f5914448eb4d37adb61d9585a06642bd21c0b4bf6a"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e95ad1e7d8fa42b79b44a8fad5db1a92c6e09534f1a72209e0e6a00fdf2c148"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a61ec8e789f47933efb88c2d34af27e664a15f064d53411bfa2a56a34c1c8c39"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf671bac0d8f5e83736547c5ee3935ec859a77d5ce75cdfbbb5313e87cb3cb0b"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44f01d4a257b928e5981b8a0a0193c28a48ce3aed8b06f7a32f717ad2224836d"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bf7aad1d2b2c22dbccfaebcca55469558b0a754911b25e3a8506c4cc15cf01"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0e3762a866321af6a7ece560ed89c072e7bd6381fe642343e9d47c47ff191e23"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9f152bfe68af34468280f780b622a0c5dc0a5f19fd352542bf3491be4654cc13"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:9954ca8b56e81f077d3f3845f88fabbf223eb4260b09691c3d957db7ff31f0d5"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5b011ee7340a73fda603e009f5f5463aabb4584d92aa93e96969908e9befb967"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ef2545823cfff38a61255651373b4705946accac38b5ffe817caaf9147a42ec4"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-win32.whl", hash = "sha256:0d1f4545e0de52774b512d943783529109b088b8716f16c75072a8af7b11ce22"}, - {file = "clickhouse_driver-0.2.5-cp38-cp38-win_amd64.whl", hash = "sha256:420b8be690e678c86ba57e446c98716598dc29a128759cc50bb1a6dc75e6b619"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b75463226330fd5d37bb2590f47cfa43c6694efffe516d598bd663b81a1d09dc"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f40176af385fc8d69e48a1e66d79349b0cdc05aeb83a45bc655d3fa5a7c6c36"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4e2a0e059b5b2886c2ada313799dafddab5052f3f2209f0429cc738c3d7e55f8"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fd78c78de4a74ac9fc3bcce3916b735539d34caaefb3c0fdcb39fea763078367"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70a70e46df56d966aed8423d5870a6b7f6137e20bb8ec2572723efb4bd1c80ca"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78062269ae40b9ba2d2f5bb4318c705d5b9543d268982f4fbf39f80f1325207c"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ba975dbc89444ac69075007a97dfae5c7d51cd807372259e0051c723cc75fd21"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e61f72a6615477f3577714f5ba657be649e9c348a2d20864d16eb41b4446882d"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:0254a800731469c00fa46d8f25cfab565703d07ae34ebe9bceb64ebfb0d8e99b"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:115abd0113e78dcc618b219c5539942792d121070b40f4e4b4bdbc03a23f6630"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c7311c46274f480f2bdc19d42151054eae8e3b9045624d4ca3182afd2fb7c5df"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-win32.whl", hash = "sha256:852b2d57890db87248c60f05809df3ce8a3737fc37b3908b23b6a914212cc2b9"}, - {file = "clickhouse_driver-0.2.5-cp39-cp39-win_amd64.whl", hash = "sha256:55f989eba98bfcf28da1dcbf4b7bb8322cd4a98df7855a68d4090160da2058a1"}, - {file = "clickhouse_driver-0.2.5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5f8585d6e1023779da471d37a3ea8623017f90115a85fef51d49a0c619010b44"}, - {file = "clickhouse_driver-0.2.5-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59c07f648edbff11fdb5fc57f5d56f585acc0381bfda2cbbbc2ea04f6adf1767"}, - {file = "clickhouse_driver-0.2.5-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cd8e223a434fb7bffdd10e4541a3f756b58d15eac5e6bb701d0ad37719b20298"}, - {file = "clickhouse_driver-0.2.5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d092c89725c1c616ba9c1624a1ea5abbfc13d671ef2197b6c075b2d051f8bba2"}, - {file = "clickhouse_driver-0.2.5-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:f4587b47b8651f7c0576cfb374f318c758c420883fe8fbb97b2a6503ce525150"}, - {file = "clickhouse_driver-0.2.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:6083afaa4bb2691e42c588e635cc7bdfae3060d0a627e5a49f6bda2cb7bb3468"}, - {file = "clickhouse_driver-0.2.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:585decb371c6b5cd3e9607c703925c49e96e7b872bbd676c71a0acf85397eeef"}, - {file = "clickhouse_driver-0.2.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08aa10e63a911513fbe4ea7168a9fe2c55ce47693094e0e49d3db98ab1da9b1d"}, - {file = "clickhouse_driver-0.2.5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81c639203ae0c0491af6794dd88a7ee0329298cc76389e5475c89df732a649b4"}, - {file = "clickhouse_driver-0.2.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:5afb33e39d2ac0765e6e5014d57056bf1a783b7938a6d231eeeb049fe1967c27"}, - {file = "clickhouse_driver-0.2.5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:378d4a641842b891387d9a577eccbecdc0ac3dbafc29f7a6fa273cab2e3591f4"}, - {file = "clickhouse_driver-0.2.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6321f328d79c1986706db57109ec80ac7c78b3782f261509e5441ba0ff8fce18"}, - {file = "clickhouse_driver-0.2.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7ec4a6a8aba19c5b5945ad10ac45224a1203d00939d6382105f69c6367599ed"}, - {file = "clickhouse_driver-0.2.5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4ac0d8c2f1d54fcca45393d6dbe40f0b11500ee07471671345361ca259ffd726"}, - {file = "clickhouse_driver-0.2.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f380c0c7c598c22ed7c9ee0f6ecc133af959ba359999b09ec42dbbc97e7482dc"}, +python-versions = ">=3.7, <4" +files = [ + {file = "clickhouse-driver-0.2.6.tar.gz", hash = "sha256:028baf4d65a0b3f9e0ac5df248cab20657b51adbfce6c5427aa6c16a7318dda1"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e61d975081b74cae9efe7a64b1de1a8aec5643affb81b57487dcae7d195f250f"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c1d8aff4d3f0d78fd4b11e28ef344a5ee71d6850fef4a79e3265e0728b4d1d89"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2b086bd658889af10205cb8307b714c8202bdfd05a4833fc7f4f82df2d88a963"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:79a1b6815d56a03398110c7f602a87ad767ecfd7a0869e61f2d8bfa0779dce2b"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36146fc3782a9e45a57c1094f3f8051db4117089502a3310312768dd7e14ef6d"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4032fb9b15ddbc484073ca165e5271eed494f3f3c4e8cb3a495bbc7a151fa556"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d2e0332b4e4b68be0d5e97ee40cd3ce7f4f85523e3ea3656b4dda658ba723067"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7b659583fa2a8058dfeba952c0f17d5077b2af17db9c0f45ab8a5f9cf4dc1523"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d4ce06dc2d2593bedade4bf369c28d7b0494532774e849f7213f800b06a274a2"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3bf9071ca89f661ae7dd46f2561e7e97fe71fc96dbbaf0607afe636f173e5f40"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:429d9c16355aea62a462f75f373a2d9c4b76da7996a0eb6f038b2aa079020597"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-win32.whl", hash = "sha256:1960244de84d7888598180e69689d1ba7ec6c9c99cd2c080a76315a7a29a5cab"}, + {file = "clickhouse_driver-0.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:5a6bdfde4e2fb81414200303950ba75c3f7ee9249e4a997854ce18e1cb4beea9"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef0a9453a972ec32399cc93a510aec33fa4b9b1f0c5050a3a40e5d298a89a7aa"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d715d392eaadb43ded1c104354aebbc233f69bbf3919aa61beb7cc6ecdaa950a"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d75d50265616a2779d0b2acaebf7253783e2b8ad0df3efa6d23f0db1c9bf50"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:32f0e02c28e9a6f1c1f116d1aa14772e73beb7efd4f30490d9f171d39b40551a"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:08037080bd7d1d2816767d1bc693380073ce8bdf4ad0f62871c12b77b90323a5"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3cfe60ec8b695c298e6156c71a35ae6586676992cdfde6d2bf0c0b74414bfa0c"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:36ae6e627ffba6ed46fa9ac4dd745bfbfd5d9f39b198f46051ebfd0dde5e01c2"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:2508638aa6f44cc0653840b99e308d3c0a8684c71e3132d7d067b160bdff5a81"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:88b77719e62aaa03a9d2d05e395788c4c112d41ff35a6756e7e7a1ac5dc1b4fb"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:95d1206252c6c9d0abad61310eda455ebcdcd0b1f41c3584daffbfd52b68654f"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3bdff826074af1b339fe9bff17844f6b8117080f895b8601f536b13a9d04f82a"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-win32.whl", hash = "sha256:c8c02606eabe4288045bbba497088b7fe976c34330c1066db9744fa09fef4a2a"}, + {file = "clickhouse_driver-0.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:44df94940739a72a02716bb14ac8b683aef84b54b05783d96201ff334bcd88fb"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f2a9abb8b1464985f7a480f956744736e611970ffc8ffd3eb0b46343a3a691e6"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2e01696c450a2de41d586689dbaed0893d4de7469811abd3bf831a0483e723a"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0bb85760dabbef493aec985ad94612132ddeb5b81569cf0a7222f6cb7278eda"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:26fa7c46a65beb6725e9d77701ed2871c8b3b7fd0c187c3c8550ae95e9886038"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c489cd1cf8b98f78e95559122c5b0d52f25b619cfd2ca31d0784a0bea38940b4"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:af20ef3ddc7f834ebb316c349770f5c381354b573419523b9703ea48ed4bd692"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:82538f76640cbd22540f9de301d996b1e48dbf5de71a79fc06826ea094c8e5f7"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:ccd34a5592f4212483138bea45dc6526c4cf7b5aa4b806f422b66d27232f7271"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:ab10bc9db2fbc0d5ab785c7771bfaac526ac6724b8727c2f0708caee878a6a48"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:c9882ca5fd98b1801a283889e085e88c929fae1b68adc4e6b00ef1cf60adb843"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:051a1bd0f70a8d0bc11ef90b6e6291981cd8e3031cc126a7c78206849c1b8cf7"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-win32.whl", hash = "sha256:48f47694d5e54af192a4aa2a24f947795c362ab40a253d088593880fede97568"}, + {file = "clickhouse_driver-0.2.6-cp37-cp37m-win_amd64.whl", hash = "sha256:b783e5d3d12947c73d991bceb6b8765231512ab0ac6363823cdcd2c283c67a99"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:3d24e0acf8fef1d787851ae048e0168b2fb10297c3235cbb87974f78db37d3d3"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d534c744b1b211241f8c58d2ad5fcfc465a0503011d9b9073c00e25507abcbf3"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:858b8039a1241591b63f368de9dbdef6c4e6466b6bf0e01d53d36f7091af7569"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:21eb62e1de7d2d5483d121d1447e857030bf866d4f23572b0dedc515f9359cd0"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eddbc4e90da8d3f08b5aa6c58a7155ebb398cc34255083e7103071b4c4a76952"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88f67ac3bf4cec39c051b33152bc1f370a3f0311774c73965727e14877e314fd"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:231ef65b7c99f2e937990b7072cf68bda6b51f45c903e5c8c068f7d754bdd489"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f4aadf85dc199f3d1ef06b961c87b168d009c88bfe431b4821460678d4ad51a9"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f08bc819a0c17b787c2984406611f5f2d9a8e33118090376c4bc8d932f38ea10"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ace862809bb89f896c2150e20ea6bbeb969c25ca40bfe389179469b0e0ec5dd7"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:512d2d5714e811dfc63eefdf5e0171f24a5e698134e684d8efe27c001fc3a06b"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-win32.whl", hash = "sha256:b9b775f70371a7333ac828fe2bbd9473c94e18728ac6b70b2865cdee1f0d551f"}, + {file = "clickhouse_driver-0.2.6-cp38-cp38-win_amd64.whl", hash = "sha256:d13fe44620750abcd4c93c067d6e44c8a1ea050856c4c27a5633ad8ff197a689"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e17995752eef4f742976abab03ff3f5b81edb9b9218b151abaf3534055fcf2b8"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bbd7e3e33d2bc5f32da2557e97299340a722f948790494a2e9efaed4635ff499"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c872e9fee17d278816fc30b4df4b10bedd8eec9efaa614c71725f147b00b30d"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3c8af2761676cd306962a86cc87a4187efcfdaf253a0d908c8f8ef791277a7fe"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d7ee63cf9443a94a0bc856ac947c9bfd8c214c12e340846f341391bb161cc4e"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3117c1bbcbec64a39c283ab2ff1ca284e57d5943b8e68e6f1df718ab04cb66e2"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9079621484b1f10017a65f7f84d81b13e44e9f23c5da1e04731405531bb63d58"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:aa73edc701635c5042c0355c8a0222eb03af117bebaf898017958d0e2cefb3b8"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:b5d9afcdec1fcc4e675fd25d31cd506b369efddc78d5e775804cfc911c773551"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6ad658e12e7c928283eb47f82fe4d36c8974918aabad1b3981212813fe21d03b"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:82fdc618428b31c418e6cdedfd66bd50b7662e2c092f685438bbe77e7f295f57"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-win32.whl", hash = "sha256:1736793aa273ebb71895eaa77ae4ab8ce361a28fc1cd5d92247f7af22a030c07"}, + {file = "clickhouse_driver-0.2.6-cp39-cp39-win_amd64.whl", hash = "sha256:0efc58bf8b21a84b68bbba083702dc17cab5255d2552e73dacadc830b612bd38"}, + {file = "clickhouse_driver-0.2.6-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5fdf175283918748e4821797e21cc0c91c44803e92698bd66f206769fb18da73"}, + {file = "clickhouse_driver-0.2.6-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82c4145bf1531e4a508e187e5175e9c4d3749de5d98643141a348464360b8076"}, + {file = "clickhouse_driver-0.2.6-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69c30943915b2ea794b8a85b8c2f6aa17dbf19a03cae1bc541c49b024f861200"}, + {file = "clickhouse_driver-0.2.6-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:45cfa76e7dadf097e77190dc27c23361cf2806ad646df979c657336e667af03e"}, + {file = "clickhouse_driver-0.2.6-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d59c21e2d11e8e226ab1420a928f34be958301781dabc0176a8ae6e4d6dfa5b5"}, + {file = "clickhouse_driver-0.2.6-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:07ab99b84510a88af3358a35deafa09942bdc26ad8213576af3f723e0cc11bb0"}, + {file = "clickhouse_driver-0.2.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712f9c313513898de98ac31e63aa2c0186f632d0490d6f2d010f259f35b9bf05"}, + {file = "clickhouse_driver-0.2.6-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0f2cb2fc81ee5c44068dd1d15a052a092cd6008de16d7e7850b1da7e29f316e"}, + {file = "clickhouse_driver-0.2.6-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4bd0bf5fc48bf6317698714721fe5127c6ebc0d8ebd0ea14217bfd7d617303f5"}, + {file = "clickhouse_driver-0.2.6-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:b52e08b5ccf3a8ceca3727d0b4594c88e5b7876d5a17451d61ed78b158ada843"}, + {file = "clickhouse_driver-0.2.6-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0081a4ac2fdb940c12dd74dd835323dfcda1e3df7cf178d9174f928fd28c1cfd"}, + {file = "clickhouse_driver-0.2.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:27eeb4f3cf5403dd2e8c6871c25dc129e5fc3dc6fb4ea125cd755be6476c6ff1"}, + {file = "clickhouse_driver-0.2.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a1ab6ce26455e4db46431fa75c6d6913e0ef91ac54ec8554ef9455e32d0090bb"}, + {file = "clickhouse_driver-0.2.6-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36143db3bee3f16cc98ecda6df0110a5c6c479c69ec99fb2bb904a8f8139b64d"}, + {file = "clickhouse_driver-0.2.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9fc3eacdcbc2ce5ca967c0e8dc74f2238fe9fd1bced50ea355580eebcc800dfd"}, ] [package.dependencies] @@ -348,86 +416,74 @@ zstd = ["clickhouse-cityhash (>=1.0.2.1)", "zstd"] [[package]] name = "colorama" -version = "0.4.4" +version = "0.4.6" description = "Cross-platform colored terminal text." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] - -[[package]] -name = "commonmark" -version = "0.9.1" -description = "Python parser for the CommonMark Markdown spec" -optional = false -python-versions = "*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ - {file = "commonmark-0.9.1-py2.py3-none-any.whl", hash = "sha256:da2f38c92590f83de410ba1a3cbceafbc74fee9def35f9251ba9a971d6d66fd9"}, - {file = "commonmark-0.9.1.tar.gz", hash = "sha256:452f9dc859be7f06631ddcb328b6919c67984aca654e5fefb3914d54691aed60"}, + {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, + {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -[package.extras] -test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] - [[package]] name = "coverage" -version = "6.5.0" +version = "7.3.3" description = "Code coverage measurement for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, + {file = "coverage-7.3.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d874434e0cb7b90f7af2b6e3309b0733cde8ec1476eb47db148ed7deeb2a9494"}, + {file = "coverage-7.3.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee6621dccce8af666b8c4651f9f43467bfbf409607c604b840b78f4ff3619aeb"}, + {file = "coverage-7.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1367aa411afb4431ab58fd7ee102adb2665894d047c490649e86219327183134"}, + {file = "coverage-7.3.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1f0f8f0c497eb9c9f18f21de0750c8d8b4b9c7000b43996a094290b59d0e7523"}, + {file = "coverage-7.3.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db0338c4b0951d93d547e0ff8d8ea340fecf5885f5b00b23be5aa99549e14cfd"}, + {file = "coverage-7.3.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d31650d313bd90d027f4be7663dfa2241079edd780b56ac416b56eebe0a21aab"}, + {file = "coverage-7.3.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9437a4074b43c177c92c96d051957592afd85ba00d3e92002c8ef45ee75df438"}, + {file = "coverage-7.3.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9e17d9cb06c13b4f2ef570355fa45797d10f19ca71395910b249e3f77942a837"}, + {file = "coverage-7.3.3-cp310-cp310-win32.whl", hash = "sha256:eee5e741b43ea1b49d98ab6e40f7e299e97715af2488d1c77a90de4a663a86e2"}, + {file = "coverage-7.3.3-cp310-cp310-win_amd64.whl", hash = "sha256:593efa42160c15c59ee9b66c5f27a453ed3968718e6e58431cdfb2d50d5ad284"}, + {file = "coverage-7.3.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c944cf1775235c0857829c275c777a2c3e33032e544bcef614036f337ac37bb"}, + {file = "coverage-7.3.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eda7f6e92358ac9e1717ce1f0377ed2b9320cea070906ece4e5c11d172a45a39"}, + {file = "coverage-7.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c854c1d2c7d3e47f7120b560d1a30c1ca221e207439608d27bc4d08fd4aeae8"}, + {file = "coverage-7.3.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:222b038f08a7ebed1e4e78ccf3c09a1ca4ac3da16de983e66520973443b546bc"}, + {file = "coverage-7.3.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff4800783d85bff132f2cc7d007426ec698cdce08c3062c8d501ad3f4ea3d16c"}, + {file = "coverage-7.3.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fc200cec654311ca2c3f5ab3ce2220521b3d4732f68e1b1e79bef8fcfc1f2b97"}, + {file = "coverage-7.3.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:307aecb65bb77cbfebf2eb6e12009e9034d050c6c69d8a5f3f737b329f4f15fb"}, + {file = "coverage-7.3.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ffb0eacbadb705c0a6969b0adf468f126b064f3362411df95f6d4f31c40d31c1"}, + {file = "coverage-7.3.3-cp311-cp311-win32.whl", hash = "sha256:79c32f875fd7c0ed8d642b221cf81feba98183d2ff14d1f37a1bbce6b0347d9f"}, + {file = "coverage-7.3.3-cp311-cp311-win_amd64.whl", hash = "sha256:243576944f7c1a1205e5cd658533a50eba662c74f9be4c050d51c69bd4532936"}, + {file = "coverage-7.3.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a2ac4245f18057dfec3b0074c4eb366953bca6787f1ec397c004c78176a23d56"}, + {file = "coverage-7.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f9191be7af41f0b54324ded600e8ddbcabea23e1e8ba419d9a53b241dece821d"}, + {file = "coverage-7.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:31c0b1b8b5a4aebf8fcd227237fc4263aa7fa0ddcd4d288d42f50eff18b0bac4"}, + {file = "coverage-7.3.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee453085279df1bac0996bc97004771a4a052b1f1e23f6101213e3796ff3cb85"}, + {file = "coverage-7.3.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1191270b06ecd68b1d00897b2daddb98e1719f63750969614ceb3438228c088e"}, + {file = "coverage-7.3.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:007a7e49831cfe387473e92e9ff07377f6121120669ddc39674e7244350a6a29"}, + {file = "coverage-7.3.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:af75cf83c2d57717a8493ed2246d34b1f3398cb8a92b10fd7a1858cad8e78f59"}, + {file = "coverage-7.3.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:811ca7373da32f1ccee2927dc27dc523462fd30674a80102f86c6753d6681bc6"}, + {file = "coverage-7.3.3-cp312-cp312-win32.whl", hash = "sha256:733537a182b5d62184f2a72796eb6901299898231a8e4f84c858c68684b25a70"}, + {file = "coverage-7.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:e995efb191f04b01ced307dbd7407ebf6e6dc209b528d75583277b10fd1800ee"}, + {file = "coverage-7.3.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fbd8a5fe6c893de21a3c6835071ec116d79334fbdf641743332e442a3466f7ea"}, + {file = "coverage-7.3.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50c472c1916540f8b2deef10cdc736cd2b3d1464d3945e4da0333862270dcb15"}, + {file = "coverage-7.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e9223a18f51d00d3ce239c39fc41410489ec7a248a84fab443fbb39c943616c"}, + {file = "coverage-7.3.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f501e36ac428c1b334c41e196ff6bd550c0353c7314716e80055b1f0a32ba394"}, + {file = "coverage-7.3.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:475de8213ed95a6b6283056d180b2442eee38d5948d735cd3d3b52b86dd65b92"}, + {file = "coverage-7.3.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:afdcc10c01d0db217fc0a64f58c7edd635b8f27787fea0a3054b856a6dff8717"}, + {file = "coverage-7.3.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:fff0b2f249ac642fd735f009b8363c2b46cf406d3caec00e4deeb79b5ff39b40"}, + {file = "coverage-7.3.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a1f76cfc122c9e0f62dbe0460ec9cc7696fc9a0293931a33b8870f78cf83a327"}, + {file = "coverage-7.3.3-cp38-cp38-win32.whl", hash = "sha256:757453848c18d7ab5d5b5f1827293d580f156f1c2c8cef45bfc21f37d8681069"}, + {file = "coverage-7.3.3-cp38-cp38-win_amd64.whl", hash = "sha256:ad2453b852a1316c8a103c9c970db8fbc262f4f6b930aa6c606df9b2766eee06"}, + {file = "coverage-7.3.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b15e03b8ee6a908db48eccf4e4e42397f146ab1e91c6324da44197a45cb9132"}, + {file = "coverage-7.3.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:89400aa1752e09f666cc48708eaa171eef0ebe3d5f74044b614729231763ae69"}, + {file = "coverage-7.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c59a3e59fb95e6d72e71dc915e6d7fa568863fad0a80b33bc7b82d6e9f844973"}, + {file = "coverage-7.3.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ede881c7618f9cf93e2df0421ee127afdfd267d1b5d0c59bcea771cf160ea4a"}, + {file = "coverage-7.3.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bfd2c2f0e5384276e12b14882bf2c7621f97c35320c3e7132c156ce18436a1"}, + {file = "coverage-7.3.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7f3bad1a9313401ff2964e411ab7d57fb700a2d5478b727e13f156c8f89774a0"}, + {file = "coverage-7.3.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:65d716b736f16e250435473c5ca01285d73c29f20097decdbb12571d5dfb2c94"}, + {file = "coverage-7.3.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a702e66483b1fe602717020a0e90506e759c84a71dbc1616dd55d29d86a9b91f"}, + {file = "coverage-7.3.3-cp39-cp39-win32.whl", hash = "sha256:7fbf3f5756e7955174a31fb579307d69ffca91ad163467ed123858ce0f3fd4aa"}, + {file = "coverage-7.3.3-cp39-cp39-win_amd64.whl", hash = "sha256:cad9afc1644b979211989ec3ff7d82110b2ed52995c2f7263e7841c846a75348"}, + {file = "coverage-7.3.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:d299d379b676812e142fb57662a8d0d810b859421412b4d7af996154c00c31bb"}, + {file = "coverage-7.3.3.tar.gz", hash = "sha256:df04c64e58df96b4427db8d0559e95e2df3138c9916c96f9f6a4dd220db2fdb7"}, ] [package.extras] @@ -435,68 +491,73 @@ toml = ["tomli"] [[package]] name = "cryptography" -version = "36.0.2" +version = "41.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:4e2dddd38a5ba733be6a025a1475a9f45e4e41139d1321f412c6b360b19070b6"}, - {file = "cryptography-36.0.2-cp36-abi3-macosx_10_10_x86_64.whl", hash = "sha256:4881d09298cd0b669bb15b9cfe6166f16fc1277b4ed0d04a22f3d6430cb30f1d"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea634401ca02367c1567f012317502ef3437522e2fc44a3ea1844de028fa4b84"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:7be666cc4599b415f320839e36367b273db8501127b38316f3b9f22f17a0b815"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8241cac0aae90b82d6b5c443b853723bcc66963970c67e56e71a2609dc4b5eaf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b2d54e787a884ffc6e187262823b6feb06c338084bbe80d45166a1cb1c6c5bf"}, - {file = "cryptography-36.0.2-cp36-abi3-manylinux_2_24_x86_64.whl", hash = "sha256:c2c5250ff0d36fd58550252f54915776940e4e866f38f3a7866d92b32a654b86"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:ec6597aa85ce03f3e507566b8bcdf9da2227ec86c4266bd5e6ab4d9e0cc8dab2"}, - {file = "cryptography-36.0.2-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:ca9f686517ec2c4a4ce930207f75c00bf03d94e5063cbc00a1dc42531511b7eb"}, - {file = "cryptography-36.0.2-cp36-abi3-win32.whl", hash = "sha256:f64b232348ee82f13aac22856515ce0195837f6968aeaa94a3d0353ea2ec06a6"}, - {file = "cryptography-36.0.2-cp36-abi3-win_amd64.whl", hash = "sha256:53e0285b49fd0ab6e604f4c5d9c5ddd98de77018542e88366923f152dbeb3c29"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:32db5cc49c73f39aac27574522cecd0a4bb7384e71198bc65a0d23f901e89bb7"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b3d199647468d410994dbeb8cec5816fb74feb9368aedf300af709ef507e3e"}, - {file = "cryptography-36.0.2-pp37-pypy37_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:da73d095f8590ad437cd5e9faf6628a218aa7c387e1fdf67b888b47ba56a17f0"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:0a3bf09bb0b7a2c93ce7b98cb107e9170a90c51a0162a20af1c61c765b90e60b"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8897b7b7ec077c819187a123174b645eb680c13df68354ed99f9b40a50898f77"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82740818f2f240a5da8dfb8943b360e4f24022b093207160c77cadade47d7c85"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-manylinux_2_24_x86_64.whl", hash = "sha256:1f64a62b3b75e4005df19d3b5235abd43fa6358d5516cfc43d87aeba8d08dd51"}, - {file = "cryptography-36.0.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e167b6b710c7f7bc54e67ef593f8731e1f45aa35f8a8a7b72d6e42ec76afd4b3"}, - {file = "cryptography-36.0.2.tar.gz", hash = "sha256:70f8f4f7bb2ac9f340655cbac89d68c527af5bb4387522a8413e841e3e6628c9"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:3c78451b78313fa81607fa1b3f1ae0a5ddd8014c38a02d9db0616133987b9cdf"}, + {file = "cryptography-41.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:928258ba5d6f8ae644e764d0f996d61a8777559f72dfeb2eea7e2fe0ad6e782d"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a1b41bc97f1ad230a41657d9155113c7521953869ae57ac39ac7f1bb471469a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:841df4caa01008bad253bce2a6f7b47f86dc9f08df4b433c404def869f590a15"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:5429ec739a29df2e29e15d082f1d9ad683701f0ec7709ca479b3ff2708dae65a"}, + {file = "cryptography-41.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:43f2552a2378b44869fe8827aa19e69512e3245a219104438692385b0ee119d1"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:af03b32695b24d85a75d40e1ba39ffe7db7ffcb099fe507b39fd41a565f1b157"}, + {file = "cryptography-41.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:49f0805fc0b2ac8d4882dd52f4a3b935b210935d500b6b805f321addc8177406"}, + {file = "cryptography-41.0.7-cp37-abi3-win32.whl", hash = "sha256:f983596065a18a2183e7f79ab3fd4c475205b839e02cbc0efbbf9666c4b3083d"}, + {file = "cryptography-41.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:90452ba79b8788fa380dfb587cca692976ef4e757b194b093d845e8d99f612f2"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:079b85658ea2f59c4f43b70f8119a52414cdb7be34da5d019a77bf96d473b960"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:b640981bf64a3e978a56167594a0e97db71c89a479da8e175d8bb5be5178c003"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e3114da6d7f95d2dee7d3f4eec16dacff819740bbab931aff8648cb13c5ff5e7"}, + {file = "cryptography-41.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d5ec85080cce7b0513cfd233914eb8b7bbd0633f1d1703aa28d1dd5a72f678ec"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:7a698cb1dac82c35fcf8fe3417a3aaba97de16a01ac914b89a0889d364d2f6be"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:37a138589b12069efb424220bf78eac59ca68b95696fc622b6ccc1c0a197204a"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:68a2dec79deebc5d26d617bfdf6e8aab065a4f34934b22d3b5010df3ba36612c"}, + {file = "cryptography-41.0.7-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09616eeaef406f99046553b8a40fbf8b1e70795a91885ba4c96a70793de5504a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48a0476626da912a44cc078f9893f292f0b3e4c739caf289268168d8f4702a39"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c7f3201ec47d5207841402594f1d7950879ef890c0c495052fa62f58283fde1a"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c5ca78485a255e03c32b513f8c2bc39fedb7f5c5f8535545bdc223a03b24f248"}, + {file = "cryptography-41.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d6c391c021ab1f7a82da5d8d0b3cee2f4b2c455ec86c8aebbc84837a631ff309"}, + {file = "cryptography-41.0.7.tar.gz", hash = "sha256:13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"}, ] [package.dependencies] cffi = ">=1.12" [package.extras] -docs = ["sphinx (>=1.6.5,!=1.8.0,!=3.1.0,!=3.1.1)", "sphinx-rtd-theme"] +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)"] -pep8test = ["black", "flake8", "flake8-import-order", "pep8-naming"] -sdist = ["setuptools-rust (>=0.11.4)"] +nox = ["nox"] +pep8test = ["black", "check-sdist", "mypy", "ruff"] +sdist = ["build"] ssh = ["bcrypt (>=3.1.5)"] -test = ["hypothesis (>=1.11.4,!=3.79.2)", "iso8601", "pretend", "pytest (>=6.2.0)", "pytest-cov", "pytest-subtests", "pytest-xdist", "pytz"] +test = ["pretend", "pytest (>=6.2.0)", "pytest-benchmark", "pytest-cov", "pytest-xdist"] +test-randomorder = ["pytest-randomly"] [[package]] name = "dbt-core" -version = "1.6.5" +version = "1.7.4" description = "With dbt, data analysts and engineers can build analytics the way engineers build applications." optional = false python-versions = ">=3.8" files = [ - {file = "dbt-core-1.6.5.tar.gz", hash = "sha256:c820c82cab8f2e98cb688c6ff9440a687181130369af9111d6cf3d0e9460122d"}, - {file = "dbt_core-1.6.5-py3-none-any.whl", hash = "sha256:6dc3c094a71e400adb1081417265513267248c354b82420db9ad195a72a2f910"}, + {file = "dbt-core-1.7.4.tar.gz", hash = "sha256:769b95949210cb0d1eafdb7be48b01e59984650403f86510fdee65bd0f70f76d"}, + {file = "dbt_core-1.7.4-py3-none-any.whl", hash = "sha256:50050ae44fe9bad63e1b639810ed3629822cdc7a2af0eff6e08461c94c4527c0"}, ] [package.dependencies] agate = ">=1.7.0,<1.8.0" cffi = ">=1.9,<2.0.0" -click = "<9" +click = ">=8.0.2,<9" colorama = ">=0.3.9,<0.5" -dbt-extractor = ">=0.4.1,<0.5.0" -dbt-semantic-interfaces = ">=0.2.0,<0.3.0" -hologram = ">=0.0.16,<0.1.0" +dbt-extractor = ">=0.5.0,<0.6.0" +dbt-semantic-interfaces = ">=0.4.2,<0.5.0" idna = ">=2.5,<4" isodate = ">=0.6,<0.7" Jinja2 = ">=3.1.2,<3.2.0" +jsonschema = ">=3.0" logbook = ">=1.5,<1.6" -mashumaro = {version = ">=3.8.1,<3.9.0", extras = ["msgpack"]} +mashumaro = {version = ">=3.9,<4.0", extras = ["msgpack"]} minimal-snowplow-tracker = ">=0.0.2,<0.1.0" networkx = ">=2.3,<4" packaging = ">20.9" @@ -511,60 +572,60 @@ urllib3 = ">=1.0,<2.0" [[package]] name = "dbt-extractor" -version = "0.4.1" +version = "0.5.1" description = "A tool to analyze and extract information from Jinja used in dbt projects." optional = false python-versions = ">=3.6.1" files = [ - {file = "dbt_extractor-0.4.1-cp36-abi3-macosx_10_7_x86_64.whl", hash = "sha256:4dc715bd740e418d8dc1dd418fea508e79208a24cf5ab110b0092a3cbe96bf71"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:bc9e0050e3a2f4ea9fe58e8794bc808e6709a0c688ed710fc7c5b6ef3e5623ec"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76872cdee659075d6ce2df92dc62e59a74ba571be62acab2e297ca478b49d766"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:81435841610be1b07806d72cd89b1956c6e2a84c360b9ceb3f949c62a546d569"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:7c291f9f483eae4f60dd5859097d7ba51d5cb6c4725f08973ebd18cdea89d758"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:822b1e911db230e1b9701c99896578e711232001027b518c44c32f79a46fa3f9"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:554d27741a54599c39e5c0b7dbcab77400d83f908caba284a3e960db812e5814"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a805d51a25317f53cbff951c79b9cf75421cf48e4b3e1dfb3e9e8de6d824b76c"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cad90ddc708cb4182dc16fe2c87b1f088a1679877b93e641af068eb68a25d582"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:34783d788b133f223844e280e37b3f5244f2fb60acc457aa75c2667e418d5442"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:9da211869a1220ea55c5552c1567a3ea5233a6c52fa89ca87a22465481c37bc9"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-musllinux_1_2_i686.whl", hash = "sha256:7d7c47774dc051b8c18690281a55e2e3d3320e823b17e04b06bc3ff81b1874ba"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:037907a7c7ae0391045d81338ca77ddaef899a91d80f09958f09fe374594e19b"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-win32.whl", hash = "sha256:3fe8d8e28a7bd3e0884896147269ca0202ca432d8733113386bdc84c824561bf"}, - {file = "dbt_extractor-0.4.1-cp36-abi3-win_amd64.whl", hash = "sha256:35265a0ae0a250623b0c2e3308b2738dc8212e40e0aa88407849e9ea090bb312"}, - {file = "dbt_extractor-0.4.1.tar.gz", hash = "sha256:75b1c665699ec0f1ffce1ba3d776f7dfce802156f22e70a7b9c8f0b4d7e80f42"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:3b91e6106b967d908b34f83929d3f50ee2b498876a1be9c055fe060ed728c556"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-macosx_10_12_x86_64.whl", hash = "sha256:3614ce9f83ae4cd0dc95f77730034a793a1c090a52dcf698ba1c94050afe3a8b"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ea4edf33035d0a060b1e01c42fb2d99316457d44c954d6ed4eed9f1948664d87"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3b9bf50eb062b4344d9546fe42038996c6e7e7daa10724aa955d64717260e5d"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c0ce901d4ebf0664977e4e1cbf596d4afc6c1339fcc7d2cf67ce3481566a626f"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:cbe338b76e9ffaa18275456e041af56c21bb517f6fbda7a58308138703da0996"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1b25fa7a276ab26aa2d70ff6e0cf4cfb1490d7831fb57ee1337c24d2b0333b84"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c5651e458be910ff567c0da3ea2eb084fd01884cc88888ac2cf1e240dcddacc2"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62e4f040fd338b652683421ce48e903812e27fd6e7af58b1b70a4e1f9f2c79e3"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:91e25ad78f1f4feadd27587ebbcc46ad909cfad843118908f30336d08d8400ca"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-musllinux_1_2_armv7l.whl", hash = "sha256:cdf9938b36cd098bcdd80f43dc03864da3f69f57d903a9160a32236540d4ddcd"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-musllinux_1_2_i686.whl", hash = "sha256:475e2c05b17eb4976eff6c8f7635be42bec33f15a74ceb87a40242c94a99cebf"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:100453ba06e169cbdb118234ab3f06f6722a2e0e316089b81c88dea701212abc"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-win32.whl", hash = "sha256:6916aae085fd5f2af069fd6947933e78b742c9e3d2165e1740c2e28ae543309a"}, + {file = "dbt_extractor-0.5.1-cp38-abi3-win_amd64.whl", hash = "sha256:eecc08f3743e802a8ede60c89f7b2bce872acc86120cbc0ae7df229bb8a95083"}, + {file = "dbt_extractor-0.5.1.tar.gz", hash = "sha256:cd5d95576a8dea4190240aaf9936a37fd74b4b7913ca69a3c368fc4472bb7e13"}, ] [[package]] name = "dbt-semantic-interfaces" -version = "0.2.0" +version = "0.4.2" description = "The shared semantic layer definitions that dbt-core and MetricFlow use" optional = false python-versions = ">=3.8" files = [ - {file = "dbt_semantic_interfaces-0.2.0-py3-none-any.whl", hash = "sha256:823c9bd53745604cae2af854c7d5064056383d0304560c35236a33c5f0e52090"}, - {file = "dbt_semantic_interfaces-0.2.0.tar.gz", hash = "sha256:4afecc6dc56f85ecce7ac424dea07561513467e0bf28ead7307b78a22e6b999b"}, + {file = "dbt_semantic_interfaces-0.4.2-py3-none-any.whl", hash = "sha256:feee60eed3b4601ca92f541ed9337c6c1077cf97b10374848d7f4f6d33c358e2"}, + {file = "dbt_semantic_interfaces-0.4.2.tar.gz", hash = "sha256:7b222719cb57e77b2570033cd258b8e3e1ed575cdc1864ff74be97ba9c3394b9"}, ] [package.dependencies] click = ">=7.0,<9.0" importlib-metadata = ">=6.0,<7.0" jinja2 = ">=3.0,<4.0" -jsonschema = ">=3.0,<4.0" -more-itertools = ">=8.0,<9.0" +jsonschema = ">=4.0,<5.0" +more-itertools = ">=8.0,<11.0" pydantic = ">=1.10,<2.0" python-dateutil = ">=2.0,<3.0" pyyaml = ">=6.0,<7.0" -typing-extensions = ">=4.0,<5.0" +typing-extensions = ">=4.4,<5.0" [[package]] name = "distlib" -version = "0.3.7" +version = "0.3.8" description = "Distribution utilities" optional = false python-versions = "*" files = [ - {file = "distlib-0.3.7-py2.py3-none-any.whl", hash = "sha256:2e24928bc811348f0feb63014e97aaae3037f2cf48712d51ae61df7fd6075057"}, - {file = "distlib-0.3.7.tar.gz", hash = "sha256:9dafe54b34a028eafd95039d5e5d4851a13734540f1331060d31c9916e7147a8"}, + {file = "distlib-0.3.8-py2.py3-none-any.whl", hash = "sha256:034db59a0b96f8ca18035f36290806a9a6e6bd9d1ff91e45a7f172eb17e51784"}, + {file = "distlib-0.3.8.tar.gz", hash = "sha256:1530ea13e350031b6312d8580ddb6b27a104275a31106523b8f123787f494f64"}, ] [[package]] @@ -579,109 +640,77 @@ files = [ [[package]] name = "duckdb" -version = "0.7.1" +version = "0.9.2" description = "DuckDB embedded database" optional = false -python-versions = "*" -files = [ - {file = "duckdb-0.7.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3e0170be6cc315c179169dfa3e06485ef7009ef8ce399cd2908f29105ef2c67b"}, - {file = "duckdb-0.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6360d41023e726646507d5479ba60960989a09f04527b36abeef3643c61d8c48"}, - {file = "duckdb-0.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:578c269d7aa27184e8d45421694f89deda3f41fe6bd2a8ce48b262b9fc975326"}, - {file = "duckdb-0.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:36aae9a923c9f78da1cf3fcf75873f62d32ea017d4cef7c706d16d3eca527ca2"}, - {file = "duckdb-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:630e0122a02f19bb1fafae00786350b2c31ae8422fce97c827bd3686e7c386af"}, - {file = "duckdb-0.7.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:9b9ca2d294725e523ce207bc37f28787478ae6f7a223e2cf3a213a2d498596c3"}, - {file = "duckdb-0.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0bd89f388205b6c99b62650169efe9a02933555ee1d46ddf79fbd0fb9e62652b"}, - {file = "duckdb-0.7.1-cp310-cp310-win32.whl", hash = "sha256:a9e987565a268fd8da9f65e54621d28f39c13105b8aee34c96643074babe6d9c"}, - {file = "duckdb-0.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:5d986b5ad1307b069309f9707c0c5051323e29865aefa059eb6c3b22dc9751b6"}, - {file = "duckdb-0.7.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:54606dfd24d7181d3098030ca6858f6be52f3ccbf42fff05f7587f2d9cdf4343"}, - {file = "duckdb-0.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd9367ae650b6605ffe00412183cf0edb688a5fc9fbb03ed757e8310e7ec3b6c"}, - {file = "duckdb-0.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:aaf33aeb543c7816bd915cd10141866d54f92f698e1b5712de9d8b7076da19df"}, - {file = "duckdb-0.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e56b0329c38c0356b40449917bab6fce6ac27d356257b9a9da613d2a0f064e0"}, - {file = "duckdb-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:604b8b476d6cc6bf91625d8c2722ef9c50c402b3d64bc518c838d6c279e6d93b"}, - {file = "duckdb-0.7.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:32a268508c6d7fdc99d5442736051de74c28a5166c4cc3dcbbf35d383299b941"}, - {file = "duckdb-0.7.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90794406fa2111414877ee9db154fef940911f3920c312c1cf69947621737c8d"}, - {file = "duckdb-0.7.1-cp311-cp311-win32.whl", hash = "sha256:bf20c5ee62cbbf10b39ebdfd70d454ce914e70545c7cb6cb78cb5befef96328a"}, - {file = "duckdb-0.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:bb2700785cab37cd1e7a76c4547a5ab0f8a7c28ad3f3e4d02a8fae52be223090"}, - {file = "duckdb-0.7.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:b09741cfa31388b8f9cdf5c5200e0995d55a5b54d2d1a75b54784e2f5c042f7f"}, - {file = "duckdb-0.7.1-cp36-cp36m-win32.whl", hash = "sha256:766e6390f7ace7f1e322085c2ca5d0ad94767bde78a38d168253d2b0b4d5cd5c"}, - {file = "duckdb-0.7.1-cp36-cp36m-win_amd64.whl", hash = "sha256:6a3f3315e2b553db3463f07324f62dfebaf3b97656a87558e59e2f1f816eaf15"}, - {file = "duckdb-0.7.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:278edb8c912d836b3b77fd1695887e1dbd736137c3912478af3608c9d7307bb0"}, - {file = "duckdb-0.7.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e189b558d10b58fe6ed85ce79f728e143eb4115db1e63147a44db613cd4dd0d9"}, - {file = "duckdb-0.7.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b91ec3544ee4dc9e6abbdf2669475d5adedaaea51987c67acf161673e6b7443"}, - {file = "duckdb-0.7.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:3fe3f3dbd62b76a773144eef31aa29794578c359da932e77fef04516535318ca"}, - {file = "duckdb-0.7.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1e78c7f59325e99f0b3d9fe7c2bad4aaadf42d2c7711925cc26331d7647a91b2"}, - {file = "duckdb-0.7.1-cp37-cp37m-win32.whl", hash = "sha256:bc2a12d9f4fc8ef2fd1022d610287c9fc9972ea06b7510fc87387f1fa256a390"}, - {file = "duckdb-0.7.1-cp37-cp37m-win_amd64.whl", hash = "sha256:53e3db1bc0f445ee48b23cde47bfba08c7fa5a69976c740ec8cdf89543d2405d"}, - {file = "duckdb-0.7.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1247cc11bac17f2585d11681329806c86295e32242f84a10a604665e697d5c81"}, - {file = "duckdb-0.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5feaff16a012075b49dfa09d4cb24455938d6b0e06b08e1404ec00089119dba2"}, - {file = "duckdb-0.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b411a0c361eab9b26dcd0d0c7a0d1bc0ad6b214068555de7e946fbdd2619961a"}, - {file = "duckdb-0.7.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c76d8694ecdb579241ecfeaf03c51d640b984dbbe8e1d9f919089ebf3cdea6"}, - {file = "duckdb-0.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:193b896eed44d8751a755ccf002a137630020af0bc3505affa21bf19fdc90df3"}, - {file = "duckdb-0.7.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7da132ee452c80a3784b8daffd86429fa698e1b0e3ecb84660db96d36c27ad55"}, - {file = "duckdb-0.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5fd08c97c3e8cb5bec3822cf78b966b489213dcaab24b25c05a99f7caf8db467"}, - {file = "duckdb-0.7.1-cp38-cp38-win32.whl", hash = "sha256:9cb956f94fa55c4782352dac7cc7572a58312bd7ce97332bb14591d6059f0ea4"}, - {file = "duckdb-0.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:289a5f65213e66d320ebcd51a94787e7097b9d1c3492d01a121a2c809812bf19"}, - {file = "duckdb-0.7.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8085ad58c9b5854ee3820804fa1797e6b3134429c1506c3faab3cb96e71b07e9"}, - {file = "duckdb-0.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b47c19d1f2f662a5951fc6c5f6939d0d3b96689604b529cdcffd9afdcc95bff2"}, - {file = "duckdb-0.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6a611f598226fd634b7190f509cc6dd668132ffe436b0a6b43847b4b32b99e4a"}, - {file = "duckdb-0.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6730f03b5b78f3943b752c90bdf37b62ae3ac52302282a942cc675825b4a8dc9"}, - {file = "duckdb-0.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fe23e938d29cd8ea6953d77dc828b7f5b95a4dbc7cd7fe5bcc3531da8cec3dba"}, - {file = "duckdb-0.7.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:feffe503c2e2a99480e1e5e15176f37796b3675e4dadad446fe7c2cc672aed3c"}, - {file = "duckdb-0.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:72fceb06f5bf24ad6bb5974c60d397a7a7e61b3d847507a22276de076f3392e2"}, - {file = "duckdb-0.7.1-cp39-cp39-win32.whl", hash = "sha256:c4d5217437d20d05fe23317bbc161befa1f9363f3622887cd1d2f4719b407936"}, - {file = "duckdb-0.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:066885e1883464ce3b7d1fd844f9431227dcffe1ee39bfd2a05cd6d53f304557"}, - {file = "duckdb-0.7.1.tar.gz", hash = "sha256:a7db6da0366b239ea1e4541fcc19556b286872f5015c9a54c2e347146e25a2ad"}, +python-versions = ">=3.7.0" +files = [ + {file = "duckdb-0.9.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:aadcea5160c586704c03a8a796c06a8afffbefefb1986601104a60cb0bfdb5ab"}, + {file = "duckdb-0.9.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:08215f17147ed83cbec972175d9882387366de2ed36c21cbe4add04b39a5bcb4"}, + {file = "duckdb-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee6c2a8aba6850abef5e1be9dbc04b8e72a5b2c2b67f77892317a21fae868fe7"}, + {file = "duckdb-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ff49f3da9399900fd58b5acd0bb8bfad22c5147584ad2427a78d937e11ec9d0"}, + {file = "duckdb-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd5ac5baf8597efd2bfa75f984654afcabcd698342d59b0e265a0bc6f267b3f0"}, + {file = "duckdb-0.9.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:81c6df905589a1023a27e9712edb5b724566587ef280a0c66a7ec07c8083623b"}, + {file = "duckdb-0.9.2-cp310-cp310-win32.whl", hash = "sha256:a298cd1d821c81d0dec8a60878c4b38c1adea04a9675fb6306c8f9083bbf314d"}, + {file = "duckdb-0.9.2-cp310-cp310-win_amd64.whl", hash = "sha256:492a69cd60b6cb4f671b51893884cdc5efc4c3b2eb76057a007d2a2295427173"}, + {file = "duckdb-0.9.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:061a9ea809811d6e3025c5de31bc40e0302cfb08c08feefa574a6491e882e7e8"}, + {file = "duckdb-0.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a43f93be768af39f604b7b9b48891f9177c9282a408051209101ff80f7450d8f"}, + {file = "duckdb-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac29c8c8f56fff5a681f7bf61711ccb9325c5329e64f23cb7ff31781d7b50773"}, + {file = "duckdb-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b14d98d26bab139114f62ade81350a5342f60a168d94b27ed2c706838f949eda"}, + {file = "duckdb-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:796a995299878913e765b28cc2b14c8e44fae2f54ab41a9ee668c18449f5f833"}, + {file = "duckdb-0.9.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6cb64ccfb72c11ec9c41b3cb6181b6fd33deccceda530e94e1c362af5f810ba1"}, + {file = "duckdb-0.9.2-cp311-cp311-win32.whl", hash = "sha256:930740cb7b2cd9e79946e1d3a8f66e15dc5849d4eaeff75c8788d0983b9256a5"}, + {file = "duckdb-0.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:c28f13c45006fd525001b2011cdf91fa216530e9751779651e66edc0e446be50"}, + {file = "duckdb-0.9.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fbce7bbcb4ba7d99fcec84cec08db40bc0dd9342c6c11930ce708817741faeeb"}, + {file = "duckdb-0.9.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15a82109a9e69b1891f0999749f9e3265f550032470f51432f944a37cfdc908b"}, + {file = "duckdb-0.9.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9490fb9a35eb74af40db5569d90df8a04a6f09ed9a8c9caa024998c40e2506aa"}, + {file = "duckdb-0.9.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:696d5c6dee86c1a491ea15b74aafe34ad2b62dcd46ad7e03b1d00111ca1a8c68"}, + {file = "duckdb-0.9.2-cp37-cp37m-win32.whl", hash = "sha256:4f0935300bdf8b7631ddfc838f36a858c1323696d8c8a2cecbd416bddf6b0631"}, + {file = "duckdb-0.9.2-cp37-cp37m-win_amd64.whl", hash = "sha256:0aab900f7510e4d2613263865570203ddfa2631858c7eb8cbed091af6ceb597f"}, + {file = "duckdb-0.9.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7d8130ed6a0c9421b135d0743705ea95b9a745852977717504e45722c112bf7a"}, + {file = "duckdb-0.9.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:974e5de0294f88a1a837378f1f83330395801e9246f4e88ed3bfc8ada65dcbee"}, + {file = "duckdb-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4fbc297b602ef17e579bb3190c94d19c5002422b55814421a0fc11299c0c1100"}, + {file = "duckdb-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1dd58a0d84a424924a35b3772419f8cd78a01c626be3147e4934d7a035a8ad68"}, + {file = "duckdb-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11a1194a582c80dfb57565daa06141727e415ff5d17e022dc5f31888a5423d33"}, + {file = "duckdb-0.9.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:be45d08541002a9338e568dca67ab4f20c0277f8f58a73dfc1435c5b4297c996"}, + {file = "duckdb-0.9.2-cp38-cp38-win32.whl", hash = "sha256:dd6f88aeb7fc0bfecaca633629ff5c986ac966fe3b7dcec0b2c48632fd550ba2"}, + {file = "duckdb-0.9.2-cp38-cp38-win_amd64.whl", hash = "sha256:28100c4a6a04e69aa0f4a6670a6d3d67a65f0337246a0c1a429f3f28f3c40b9a"}, + {file = "duckdb-0.9.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ae5bf0b6ad4278e46e933e51473b86b4b932dbc54ff097610e5b482dd125552"}, + {file = "duckdb-0.9.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:e5d0bb845a80aa48ed1fd1d2d285dd352e96dc97f8efced2a7429437ccd1fe1f"}, + {file = "duckdb-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ce262d74a52500d10888110dfd6715989926ec936918c232dcbaddb78fc55b4"}, + {file = "duckdb-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6935240da090a7f7d2666f6d0a5e45ff85715244171ca4e6576060a7f4a1200e"}, + {file = "duckdb-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5cfb93e73911696a98b9479299d19cfbc21dd05bb7ab11a923a903f86b4d06e"}, + {file = "duckdb-0.9.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:64e3bc01751f31e7572d2716c3e8da8fe785f1cdc5be329100818d223002213f"}, + {file = "duckdb-0.9.2-cp39-cp39-win32.whl", hash = "sha256:6e5b80f46487636368e31b61461940e3999986359a78660a50dfdd17dd72017c"}, + {file = "duckdb-0.9.2-cp39-cp39-win_amd64.whl", hash = "sha256:e6142a220180dbeea4f341708bd5f9501c5c962ce7ef47c1cadf5e8810b4cb13"}, + {file = "duckdb-0.9.2.tar.gz", hash = "sha256:3843afeab7c3fc4a4c0b53686a4cc1d9cdbdadcbb468d60fef910355ecafd447"}, ] [[package]] name = "filelock" -version = "3.12.2" +version = "3.13.1" description = "A platform independent file lock." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "filelock-3.12.2-py3-none-any.whl", hash = "sha256:cbb791cdea2a72f23da6ac5b5269ab0a0d161e9ef0100e653b69049a7706d1ec"}, - {file = "filelock-3.12.2.tar.gz", hash = "sha256:002740518d8aa59a26b0c76e10fb8c6e15eae825d34b6fdf670333fd7b938d81"}, + {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, + {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, ] [package.extras] -docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)", "sphinx-autodoc-typehints (>=1.23,!=1.23.4)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "pytest-mock (>=3.10)", "pytest-timeout (>=2.1)"] - -[[package]] -name = "future" -version = "0.18.3" -description = "Clean single-source support for Python 3 and 2" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" -files = [ - {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, -] - -[[package]] -name = "hologram" -version = "0.0.16" -description = "JSON schema generation from dataclasses" -optional = false -python-versions = "*" -files = [ - {file = "hologram-0.0.16-py3-none-any.whl", hash = "sha256:4e56bd525336bb64a18916f871977a4125b64be8aaa750233583003333cda361"}, - {file = "hologram-0.0.16.tar.gz", hash = "sha256:1c2c921b4e575361623ea0e0d0aa5aee377b1a333cc6c6a879e213ed34583e55"}, -] - -[package.dependencies] -jsonschema = ">=3.0" -python-dateutil = ">=2.8,<2.9" +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +typing = ["typing-extensions (>=4.8)"] [[package]] name = "identify" -version = "2.5.31" +version = "2.5.33" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.31-py2.py3-none-any.whl", hash = "sha256:90199cb9e7bd3c5407a9b7e81b4abec4bb9d249991c79439ec8af740afc6293d"}, - {file = "identify-2.5.31.tar.gz", hash = "sha256:7736b3c7a28233637e3c36550646fc6389bedd74ae84cb788200cc8e2dd60b75"}, + {file = "identify-2.5.33-py2.py3-none-any.whl", hash = "sha256:d40ce5fcd762817627670da8a7d8d8e65f24342d14539c59488dc603bf662e34"}, + {file = "identify-2.5.33.tar.gz", hash = "sha256:161558f9fe4559e1557e1bff323e8631f6a0e4837f7497767c1782832f16b62d"}, ] [package.extras] @@ -689,51 +718,51 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.4" +version = "3.6" description = "Internationalized Domain Names in Applications (IDNA)" 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 = "importlib-metadata" -version = "6.8.0" +version = "6.11.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-6.8.0-py3-none-any.whl", hash = "sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb"}, - {file = "importlib_metadata-6.8.0.tar.gz", hash = "sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743"}, + {file = "importlib_metadata-6.11.0-py3-none-any.whl", hash = "sha256:f0afba6205ad8f8947c7d338b5342d5db2afbfd82f9cbef7879a9539cc12eb9b"}, + {file = "importlib_metadata-6.11.0.tar.gz", hash = "sha256:1231cf92d825c9e03cfc4da076a16de6422c863558229ea0b22b675657463443"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] [[package]] name = "importlib-resources" -version = "5.12.0" +version = "6.1.1" description = "Read resources from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, - {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, + {file = "importlib_resources-6.1.1-py3-none-any.whl", hash = "sha256:e8bf90d8213b486f428c9c39714b920041cb02c184686a3dee24905aaa8105d6"}, + {file = "importlib_resources-6.1.1.tar.gz", hash = "sha256:3893a00122eafde6894c59914446a512f728a0c1a45f9bb9b63721b6bacf0b4a"}, ] [package.dependencies] zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff", "zipp (>=3.17)"] [[package]] name = "isodate" @@ -751,21 +780,21 @@ six = "*" [[package]] name = "jaraco-classes" -version = "3.2.3" +version = "3.3.0" description = "Utility functions for Python class constructs" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jaraco.classes-3.2.3-py3-none-any.whl", hash = "sha256:2353de3288bc6b82120752201c6b1c1a14b058267fa424ed5ce5984e3b922158"}, - {file = "jaraco.classes-3.2.3.tar.gz", hash = "sha256:89559fa5c1d3c34eff6f631ad80bb21f378dbcbb35dd161fd2c6b93f5be2f98a"}, + {file = "jaraco.classes-3.3.0-py3-none-any.whl", hash = "sha256:10afa92b6743f25c0cf5f37c6bb6e18e2c5bb84a16527ccfc0040ea377e7aaeb"}, + {file = "jaraco.classes-3.3.0.tar.gz", hash = "sha256:c063dd08e89217cee02c8d5e5ec560f2c8ce6cdc2fcdc2e68f7b2e5547ed3621"}, ] [package.dependencies] more-itertools = "*" [package.extras] -docs = ["jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "jeepney" @@ -801,34 +830,51 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "3.1.1" +version = "4.20.0" description = "An implementation of JSON Schema validation for Python" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "jsonschema-3.1.1-py2.py3-none-any.whl", hash = "sha256:94c0a13b4a0616458b42529091624e66700a17f847453e52279e35509a5b7631"}, - {file = "jsonschema-3.1.1.tar.gz", hash = "sha256:2fa0684276b6333ff3c0b1b27081f4b2305f0a36cf702a23db50edb141893c3f"}, + {file = "jsonschema-4.20.0-py3-none-any.whl", hash = "sha256:ed6231f0429ecf966f5bc8dfef245998220549cbbcf140f913b7464c52c3b6b3"}, + {file = "jsonschema-4.20.0.tar.gz", hash = "sha256:4f614fd46d8d61258610998997743ec5492a648b33cf478c1ddc23ed4598a5fa"}, ] [package.dependencies] -attrs = ">=17.4.0" -importlib-metadata = "*" -pyrsistent = ">=0.14.0" -setuptools = "*" -six = ">=1.11.0" +attrs = ">=22.2.0" +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +jsonschema-specifications = ">=2023.03.6" +pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} +referencing = ">=0.28.4" +rpds-py = ">=0.7.1" [package.extras] -format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] +format = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3987", "uri-template", "webcolors (>=1.11)"] +format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339-validator", "rfc3986-validator (>0.1.0)", "uri-template", "webcolors (>=1.11)"] + +[[package]] +name = "jsonschema-specifications" +version = "2023.11.2" +description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" +optional = false +python-versions = ">=3.8" +files = [ + {file = "jsonschema_specifications-2023.11.2-py3-none-any.whl", hash = "sha256:e74ba7c0a65e8cb49dc26837d6cfe576557084a8b423ed16a420984228104f93"}, + {file = "jsonschema_specifications-2023.11.2.tar.gz", hash = "sha256:9472fc4fea474cd74bea4a2b190daeccb5a9e4db2ea80efcf7a1b582fc9a81b8"}, +] + +[package.dependencies] +importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} +referencing = ">=0.31.0" [[package]] name = "keyring" -version = "23.13.1" +version = "24.3.0" description = "Store and access your passwords safely." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "keyring-23.13.1-py3-none-any.whl", hash = "sha256:771ed2a91909389ed6148631de678f82ddc73737d85a927f382a8a1b157898cd"}, - {file = "keyring-23.13.1.tar.gz", hash = "sha256:ba2e15a9b35e21908d0aaf4e0a47acc52d6ae33444df0da2b49d41a46ef6d678"}, + {file = "keyring-24.3.0-py3-none-any.whl", hash = "sha256:4446d35d636e6a10b8bce7caa66913dd9eca5fd222ca03a3d42c38608ac30836"}, + {file = "keyring-24.3.0.tar.gz", hash = "sha256:e730ecffd309658a08ee82535a3b5ec4b4c8669a9be11efb66249d8e0aeb9a25"}, ] [package.dependencies] @@ -840,9 +886,9 @@ pywin32-ctypes = {version = ">=0.2.0", markers = "sys_platform == \"win32\""} SecretStorage = {version = ">=3.2", markers = "sys_platform == \"linux\""} [package.extras] -completion = ["shtab"] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +completion = ["shtab (>=1.1.0)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [[package]] name = "lark-parser" @@ -902,93 +948,98 @@ sqlalchemy = ["sqlalchemy"] test = ["mock", "pytest", "pytest-cov (<2.6)"] zmq = ["pyzmq"] +[[package]] +name = "markdown-it-py" +version = "3.0.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +optional = false +python-versions = ">=3.8" +files = [ + {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, + {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, +] + +[package.dependencies] +mdurl = ">=0.1,<1.0" + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark"] +code-style = ["pre-commit (>=3.0,<4.0)"] +compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] +linkify = ["linkify-it-py (>=1,<3)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + [[package]] name = "markupsafe" -version = "2.0.1" +version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:add36cb2dbb8b736611303cd3bfcee00afd96471b09cda130da3581cbdc56a6d"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:168cd0a3642de83558a5153c8bd34f175a9a6e7f6dc6384b9655d2697312a646"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4dc8f9fb58f7364b63fd9f85013b780ef83c11857ae79f2feda41e270468dd9b"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:20dca64a3ef2d6e4d5d615a3fd418ad3bde77a47ec8a23d984a12b5b4c74491a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cdfba22ea2f0029c9261a4bd07e830a8da012291fbe44dc794e488b6c9bb353a"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win32.whl", hash = "sha256:99df47edb6bda1249d3e80fdabb1dab8c08ef3975f69aed437cb69d0a5de1e28"}, - {file = "MarkupSafe-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:e0f138900af21926a02425cf736db95be9f4af72ba1bb21453432a07f6082134"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f9081981fe268bd86831e5c75f7de206ef275defcb82bc70740ae6dc507aee51"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:0955295dd5eec6cb6cc2fe1698f4c6d84af2e92de33fbcac4111913cd100a6ff"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0446679737af14f45767963a1a9ef7620189912317d095f2d9ffa183a4d25d2b"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_i686.whl", hash = "sha256:f826e31d18b516f653fe296d967d700fddad5901ae07c622bb3705955e1faa94"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2010_x86_64.whl", hash = "sha256:fa130dd50c57d53368c9d59395cb5526eda596d3ffe36666cd81a44d56e48872"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux2014_aarch64.whl", hash = "sha256:905fec760bd2fa1388bb5b489ee8ee5f7291d692638ea5f67982d968366bef9f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf5d821ffabf0ef3533c39c518f3357b171a1651c1ff6827325e4489b0e46c3c"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:0d4b31cc67ab36e3392bbf3862cfbadac3db12bdd8b02a2731f509ed5b829724"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:baa1a4e8f868845af802979fcdbf0bb11f94f1cb7ced4c4b8a351bb60d108145"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:deb993cacb280823246a026e3b2d81c493c53de6acfd5e6bfe31ab3402bb37dd"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:63f3268ba69ace99cab4e3e3b5840b03340efed0948ab8f78d2fd87ee5442a4f"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:8d206346619592c6200148b01a2142798c989edcb9c896f9ac9722a99d4e77e6"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win32.whl", hash = "sha256:6c4ca60fa24e85fe25b912b01e62cb969d69a23a5d5867682dd3e80b5b02581d"}, - {file = "MarkupSafe-2.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:b2f4bf27480f5e5e8ce285a8c8fd176c0b03e93dcc6646477d4630e83440c6a9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0717a7390a68be14b8c793ba258e075c6f4ca819f15edfc2a3a027c823718567"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:6557b31b5e2c9ddf0de32a691f2312a32f77cd7681d8af66c2692efdbef84c18"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:49e3ceeabbfb9d66c3aef5af3a60cc43b85c33df25ce03d0031a608b0a8b2e3f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_i686.whl", hash = "sha256:d7f9850398e85aba693bb640262d3611788b1f29a79f0c93c565694658f4071f"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2010_x86_64.whl", hash = "sha256:6a7fae0dd14cf60ad5ff42baa2e95727c3d81ded453457771d02b7d2b3f9c0c2"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b7f2d075102dc8c794cbde1947378051c4e5180d52d276987b8d28a3bd58c17d"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9936f0b261d4df76ad22f8fee3ae83b60d7c3e871292cd42f40b81b70afae85"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2a7d351cbd8cfeb19ca00de495e224dea7e7d919659c2841bbb7f420ad03e2d6"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:60bf42e36abfaf9aff1f50f52644b336d4f0a3fd6d8a60ca0d054ac9f713a864"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d6c7ebd4e944c85e2c3421e612a7057a2f48d478d79e61800d81468a8d842207"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f0567c4dc99f264f49fe27da5f735f414c4e7e7dd850cfd8e69f0862d7c74ea9"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:89c687013cb1cd489a0f0ac24febe8c7a666e6e221b783e53ac50ebf68e45d86"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win32.whl", hash = "sha256:a30e67a65b53ea0a5e62fe23682cfe22712e01f453b95233b25502f7c61cb415"}, - {file = "MarkupSafe-2.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:611d1ad9a4288cf3e3c16014564df047fe08410e628f89805e475368bd304914"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5bb28c636d87e840583ee3adeb78172efc47c8b26127267f54a9c0ec251d41a9"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be98f628055368795d818ebf93da628541e10b75b41c559fdf36d104c5787066"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:1d609f577dc6e1aa17d746f8bd3c31aa4d258f4070d61b2aa5c4166c1539de35"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7d91275b0245b1da4d4cfa07e0faedd5b0812efc15b702576d103293e252af1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_i686.whl", hash = "sha256:01a9b8ea66f1658938f65b93a85ebe8bc016e6769611be228d797c9d998dd298"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2010_x86_64.whl", hash = "sha256:47ab1e7b91c098ab893b828deafa1203de86d0bc6ab587b160f78fe6c4011f75"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:97383d78eb34da7e1fa37dd273c20ad4320929af65d156e35a5e2d89566d9dfb"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fcf051089389abe060c9cd7caa212c707e58153afa2c649f00346ce6d260f1b"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5855f8438a7d1d458206a2466bf82b0f104a3724bf96a1c781ab731e4201731a"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3dd007d54ee88b46be476e293f48c85048603f5f516008bee124ddd891398ed6"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:aca6377c0cb8a8253e493c6b451565ac77e98c2951c45f913e0b52facdcff83f"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:04635854b943835a6ea959e948d19dcd311762c5c0c6e1f0e16ee57022669194"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6300b8454aa6930a24b9618fbb54b5a68135092bc666f7b06901f897fa5c2fee"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win32.whl", hash = "sha256:023cb26ec21ece8dc3907c0e8320058b2e0cb3c55cf9564da612bc325bed5e64"}, - {file = "MarkupSafe-2.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:984d76483eb32f1bcb536dc27e4ad56bba4baa70be32fa87152832cdd9db0833"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2ef54abee730b502252bcdf31b10dacb0a416229b72c18b19e24a4509f273d26"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c112550557578c26af18a1ccc9e090bfe03832ae994343cfdacd287db6a6ae7"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_i686.whl", hash = "sha256:53edb4da6925ad13c07b6d26c2a852bd81e364f95301c66e930ab2aef5b5ddd8"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:f5653a225f31e113b152e56f154ccbe59eeb1c7487b39b9d9f9cdb58e6c79dc5"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_i686.whl", hash = "sha256:4efca8f86c54b22348a5467704e3fec767b2db12fc39c6d963168ab1d3fc9135"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2010_x86_64.whl", hash = "sha256:ab3ef638ace319fa26553db0624c4699e31a28bb2a835c5faca8f8acf6a5a902"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:f8ba0e8349a38d3001fae7eadded3f6606f0da5d748ee53cc1dab1d6527b9509"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c47adbc92fc1bb2b3274c4b3a43ae0e4573d9fbff4f54cd484555edbf030baf1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:37205cac2a79194e3750b0af2a5720d95f786a55ce7df90c3af697bfa100eaac"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1f2ade76b9903f39aa442b4aadd2177decb66525062db244b35d71d0ee8599b6"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4296f2b1ce8c86a6aea78613c34bb1a672ea0e3de9c6ba08a960efe0b0a09047"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:9f02365d4e99430a12647f09b6cc8bab61a6564363f313126f775eb4f6ef798e"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5b6d930f030f8ed98e3e6c98ffa0652bdb82601e7a016ec2ab5d7ff23baa78d1"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win32.whl", hash = "sha256:10f82115e21dc0dfec9ab5c0223652f7197feb168c940f3ef61563fc2d6beb74"}, - {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, - {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, + {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"}, ] [[package]] name = "mashumaro" -version = "3.8.1" +version = "3.10" description = "Fast serialization library on top of dataclasses" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mashumaro-3.8.1-py3-none-any.whl", hash = "sha256:e060469a4bec1c86f8145ea27ecd99027ea3e343075a4efcb5e8a969a45b9fb9"}, - {file = "mashumaro-3.8.1.tar.gz", hash = "sha256:8bae8b25e2287b75094655b8ba8635f34016c09ca16498188f2f3b198d88b7ef"}, + {file = "mashumaro-3.10-py3-none-any.whl", hash = "sha256:d2c0fd5e7878987629d41f4986d9b0903d362a92eeb299b7d88b87eb113f4f48"}, + {file = "mashumaro-3.10.tar.gz", hash = "sha256:0248a5c8574aa6cd20696621502d38a7ea66af3d6d93c5d03f93b33298edc878"}, ] [package.dependencies] @@ -1001,6 +1052,17 @@ orjson = ["orjson"] toml = ["tomli (>=1.1.0)", "tomli-w (>=1.0)"] yaml = ["pyyaml (>=3.13)"] +[[package]] +name = "mdurl" +version = "0.1.2" +description = "Markdown URL utilities" +optional = false +python-versions = ">=3.7" +files = [ + {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, + {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, +] + [[package]] name = "minimal-snowplow-tracker" version = "0.0.2" @@ -1017,74 +1079,78 @@ six = ">=1.9.0,<2.0" [[package]] name = "more-itertools" -version = "8.14.0" +version = "10.1.0" description = "More routines for operating on iterables, beyond itertools" optional = false -python-versions = ">=3.5" +python-versions = ">=3.8" files = [ - {file = "more-itertools-8.14.0.tar.gz", hash = "sha256:c09443cd3d5438b8dafccd867a6bc1cb0894389e90cb53d227456b0b0bccb750"}, - {file = "more_itertools-8.14.0-py3-none-any.whl", hash = "sha256:1bc4f91ee5b1b31ac7ceacc17c09befe6a40a503907baf9c839c229b5095cfd2"}, + {file = "more-itertools-10.1.0.tar.gz", hash = "sha256:626c369fa0eb37bac0291bce8259b332fd59ac792fa5497b59837309cd5b114a"}, + {file = "more_itertools-10.1.0-py3-none-any.whl", hash = "sha256:64e0735fcfdc6f3464ea133afe8ea4483b1c5fe3a3d69852e6503b43a0b222e6"}, ] [[package]] name = "msgpack" -version = "1.0.4" +version = "1.0.7" description = "MessagePack serializer" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4ab251d229d10498e9a2f3b1e68ef64cb393394ec477e3370c457f9430ce9250"}, - {file = "msgpack-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:112b0f93202d7c0fef0b7810d465fde23c746a2d482e1e2de2aafd2ce1492c88"}, - {file = "msgpack-1.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:002b5c72b6cd9b4bafd790f364b8480e859b4712e91f43014fe01e4f957b8467"}, - {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35bc0faa494b0f1d851fd29129b2575b2e26d41d177caacd4206d81502d4c6a6"}, - {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4733359808c56d5d7756628736061c432ded018e7a1dff2d35a02439043321aa"}, - {file = "msgpack-1.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eb514ad14edf07a1dbe63761fd30f89ae79b42625731e1ccf5e1f1092950eaa6"}, - {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c23080fdeec4716aede32b4e0ef7e213c7b1093eede9ee010949f2a418ced6ba"}, - {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:49565b0e3d7896d9ea71d9095df15b7f75a035c49be733051c34762ca95bbf7e"}, - {file = "msgpack-1.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:aca0f1644d6b5a73eb3e74d4d64d5d8c6c3d577e753a04c9e9c87d07692c58db"}, - {file = "msgpack-1.0.4-cp310-cp310-win32.whl", hash = "sha256:0dfe3947db5fb9ce52aaea6ca28112a170db9eae75adf9339a1aec434dc954ef"}, - {file = "msgpack-1.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dea20515f660aa6b7e964433b1808d098dcfcabbebeaaad240d11f909298075"}, - {file = "msgpack-1.0.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:e83f80a7fec1a62cf4e6c9a660e39c7f878f603737a0cdac8c13131d11d97f52"}, - {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c11a48cf5e59026ad7cb0dc29e29a01b5a66a3e333dc11c04f7e991fc5510a9"}, - {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1276e8f34e139aeff1c77a3cefb295598b504ac5314d32c8c3d54d24fadb94c9"}, - {file = "msgpack-1.0.4-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c9566f2c39ccced0a38d37c26cc3570983b97833c365a6044edef3574a00c08"}, - {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:fcb8a47f43acc113e24e910399376f7277cf8508b27e5b88499f053de6b115a8"}, - {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:76ee788122de3a68a02ed6f3a16bbcd97bc7c2e39bd4d94be2f1821e7c4a64e6"}, - {file = "msgpack-1.0.4-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0a68d3ac0104e2d3510de90a1091720157c319ceeb90d74f7b5295a6bee51bae"}, - {file = "msgpack-1.0.4-cp36-cp36m-win32.whl", hash = "sha256:85f279d88d8e833ec015650fd15ae5eddce0791e1e8a59165318f371158efec6"}, - {file = "msgpack-1.0.4-cp36-cp36m-win_amd64.whl", hash = "sha256:c1683841cd4fa45ac427c18854c3ec3cd9b681694caf5bff04edb9387602d661"}, - {file = "msgpack-1.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a75dfb03f8b06f4ab093dafe3ddcc2d633259e6c3f74bb1b01996f5d8aa5868c"}, - {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9667bdfdf523c40d2511f0e98a6c9d3603be6b371ae9a238b7ef2dc4e7a427b0"}, - {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11184bc7e56fd74c00ead4f9cc9a3091d62ecb96e97653add7a879a14b003227"}, - {file = "msgpack-1.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac5bd7901487c4a1dd51a8c58f2632b15d838d07ceedaa5e4c080f7190925bff"}, - {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:1e91d641d2bfe91ba4c52039adc5bccf27c335356055825c7f88742c8bb900dd"}, - {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2a2df1b55a78eb5f5b7d2a4bb221cd8363913830145fad05374a80bf0877cb1e"}, - {file = "msgpack-1.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:545e3cf0cf74f3e48b470f68ed19551ae6f9722814ea969305794645da091236"}, - {file = "msgpack-1.0.4-cp37-cp37m-win32.whl", hash = "sha256:2cc5ca2712ac0003bcb625c96368fd08a0f86bbc1a5578802512d87bc592fe44"}, - {file = "msgpack-1.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:eba96145051ccec0ec86611fe9cf693ce55f2a3ce89c06ed307de0e085730ec1"}, - {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:7760f85956c415578c17edb39eed99f9181a48375b0d4a94076d84148cf67b2d"}, - {file = "msgpack-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:449e57cc1ff18d3b444eb554e44613cffcccb32805d16726a5494038c3b93dab"}, - {file = "msgpack-1.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:d603de2b8d2ea3f3bcb2efe286849aa7a81531abc52d8454da12f46235092bcb"}, - {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:48f5d88c99f64c456413d74a975bd605a9b0526293218a3b77220a2c15458ba9"}, - {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6916c78f33602ecf0509cc40379271ba0f9ab572b066bd4bdafd7434dee4bc6e"}, - {file = "msgpack-1.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:81fc7ba725464651190b196f3cd848e8553d4d510114a954681fd0b9c479d7e1"}, - {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d5b5b962221fa2c5d3a7f8133f9abffc114fe218eb4365e40f17732ade576c8e"}, - {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:77ccd2af37f3db0ea59fb280fa2165bf1b096510ba9fe0cc2bf8fa92a22fdb43"}, - {file = "msgpack-1.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b17be2478b622939e39b816e0aa8242611cc8d3583d1cd8ec31b249f04623243"}, - {file = "msgpack-1.0.4-cp38-cp38-win32.whl", hash = "sha256:2bb8cdf50dd623392fa75525cce44a65a12a00c98e1e37bf0fb08ddce2ff60d2"}, - {file = "msgpack-1.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:26b8feaca40a90cbe031b03d82b2898bf560027160d3eae1423f4a67654ec5d6"}, - {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:462497af5fd4e0edbb1559c352ad84f6c577ffbbb708566a0abaaa84acd9f3ae"}, - {file = "msgpack-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2999623886c5c02deefe156e8f869c3b0aaeba14bfc50aa2486a0415178fce55"}, - {file = "msgpack-1.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f0029245c51fd9473dc1aede1160b0a29f4a912e6b1dd353fa6d317085b219da"}, - {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed6f7b854a823ea44cf94919ba3f727e230da29feb4a99711433f25800cf747f"}, - {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0df96d6eaf45ceca04b3f3b4b111b86b33785683d682c655063ef8057d61fd92"}, - {file = "msgpack-1.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6a4192b1ab40f8dca3f2877b70e63799d95c62c068c84dc028b40a6cb03ccd0f"}, - {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0e3590f9fb9f7fbc36df366267870e77269c03172d086fa76bb4eba8b2b46624"}, - {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1576bd97527a93c44fa856770197dec00d223b0b9f36ef03f65bac60197cedf8"}, - {file = "msgpack-1.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:63e29d6e8c9ca22b21846234913c3466b7e4ee6e422f205a2988083de3b08cae"}, - {file = "msgpack-1.0.4-cp39-cp39-win32.whl", hash = "sha256:fb62ea4b62bfcb0b380d5680f9a4b3f9a2d166d9394e9bbd9666c0ee09a3645c"}, - {file = "msgpack-1.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:4d5834a2a48965a349da1c5a79760d94a1a0172fbb5ab6b5b33cbf8447e109ce"}, - {file = "msgpack-1.0.4.tar.gz", hash = "sha256:f5d869c18f030202eb412f08b28d2afeea553d6613aee89e200d7aca7ef01f5f"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:04ad6069c86e531682f9e1e71b71c1c3937d6014a7c3e9edd2aa81ad58842862"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cca1b62fe70d761a282496b96a5e51c44c213e410a964bdffe0928e611368329"}, + {file = "msgpack-1.0.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e50ebce52f41370707f1e21a59514e3375e3edd6e1832f5e5235237db933c98b"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b4f35de6a304b5533c238bee86b670b75b03d31b7797929caa7a624b5dda6"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28efb066cde83c479dfe5a48141a53bc7e5f13f785b92ddde336c716663039ee"}, + {file = "msgpack-1.0.7-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4cb14ce54d9b857be9591ac364cb08dc2d6a5c4318c1182cb1d02274029d590d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b573a43ef7c368ba4ea06050a957c2a7550f729c31f11dd616d2ac4aba99888d"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:ccf9a39706b604d884d2cb1e27fe973bc55f2890c52f38df742bc1d79ab9f5e1"}, + {file = "msgpack-1.0.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb70766519500281815dfd7a87d3a178acf7ce95390544b8c90587d76b227681"}, + {file = "msgpack-1.0.7-cp310-cp310-win32.whl", hash = "sha256:b610ff0f24e9f11c9ae653c67ff8cc03c075131401b3e5ef4b82570d1728f8a9"}, + {file = "msgpack-1.0.7-cp310-cp310-win_amd64.whl", hash = "sha256:a40821a89dc373d6427e2b44b572efc36a2778d3f543299e2f24eb1a5de65415"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:576eb384292b139821c41995523654ad82d1916da6a60cff129c715a6223ea84"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:730076207cb816138cf1af7f7237b208340a2c5e749707457d70705715c93b93"}, + {file = "msgpack-1.0.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85765fdf4b27eb5086f05ac0491090fc76f4f2b28e09d9350c31aac25a5aaff8"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3476fae43db72bd11f29a5147ae2f3cb22e2f1a91d575ef130d2bf49afd21c46"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d4c80667de2e36970ebf74f42d1088cc9ee7ef5f4e8c35eee1b40eafd33ca5b"}, + {file = "msgpack-1.0.7-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5b0bf0effb196ed76b7ad883848143427a73c355ae8e569fa538365064188b8e"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f9a7c509542db4eceed3dcf21ee5267ab565a83555c9b88a8109dcecc4709002"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:84b0daf226913133f899ea9b30618722d45feffa67e4fe867b0b5ae83a34060c"}, + {file = "msgpack-1.0.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ec79ff6159dffcc30853b2ad612ed572af86c92b5168aa3fc01a67b0fa40665e"}, + {file = "msgpack-1.0.7-cp311-cp311-win32.whl", hash = "sha256:3e7bf4442b310ff154b7bb9d81eb2c016b7d597e364f97d72b1acc3817a0fdc1"}, + {file = "msgpack-1.0.7-cp311-cp311-win_amd64.whl", hash = "sha256:3f0c8c6dfa6605ab8ff0611995ee30d4f9fcff89966cf562733b4008a3d60d82"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f0936e08e0003f66bfd97e74ee530427707297b0d0361247e9b4f59ab78ddc8b"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98bbd754a422a0b123c66a4c341de0474cad4a5c10c164ceed6ea090f3563db4"}, + {file = "msgpack-1.0.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b291f0ee7961a597cbbcc77709374087fa2a9afe7bdb6a40dbbd9b127e79afee"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebbbba226f0a108a7366bf4b59bf0f30a12fd5e75100c630267d94d7f0ad20e5"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e2d69948e4132813b8d1131f29f9101bc2c915f26089a6d632001a5c1349672"}, + {file = "msgpack-1.0.7-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bdf38ba2d393c7911ae989c3bbba510ebbcdf4ecbdbfec36272abe350c454075"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:993584fc821c58d5993521bfdcd31a4adf025c7d745bbd4d12ccfecf695af5ba"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:52700dc63a4676669b341ba33520f4d6e43d3ca58d422e22ba66d1736b0a6e4c"}, + {file = "msgpack-1.0.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e45ae4927759289c30ccba8d9fdce62bb414977ba158286b5ddaf8df2cddb5c5"}, + {file = "msgpack-1.0.7-cp312-cp312-win32.whl", hash = "sha256:27dcd6f46a21c18fa5e5deed92a43d4554e3df8d8ca5a47bf0615d6a5f39dbc9"}, + {file = "msgpack-1.0.7-cp312-cp312-win_amd64.whl", hash = "sha256:7687e22a31e976a0e7fc99c2f4d11ca45eff652a81eb8c8085e9609298916dcf"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5b6ccc0c85916998d788b295765ea0e9cb9aac7e4a8ed71d12e7d8ac31c23c95"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:235a31ec7db685f5c82233bddf9858748b89b8119bf4538d514536c485c15fe0"}, + {file = "msgpack-1.0.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cab3db8bab4b7e635c1c97270d7a4b2a90c070b33cbc00c99ef3f9be03d3e1f7"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bfdd914e55e0d2c9e1526de210f6fe8ffe9705f2b1dfcc4aecc92a4cb4b533d"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36e17c4592231a7dbd2ed09027823ab295d2791b3b1efb2aee874b10548b7524"}, + {file = "msgpack-1.0.7-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:38949d30b11ae5f95c3c91917ee7a6b239f5ec276f271f28638dec9156f82cfc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ff1d0899f104f3921d94579a5638847f783c9b04f2d5f229392ca77fba5b82fc"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dc43f1ec66eb8440567186ae2f8c447d91e0372d793dfe8c222aec857b81a8cf"}, + {file = "msgpack-1.0.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dd632777ff3beaaf629f1ab4396caf7ba0bdd075d948a69460d13d44357aca4c"}, + {file = "msgpack-1.0.7-cp38-cp38-win32.whl", hash = "sha256:4e71bc4416de195d6e9b4ee93ad3f2f6b2ce11d042b4d7a7ee00bbe0358bd0c2"}, + {file = "msgpack-1.0.7-cp38-cp38-win_amd64.whl", hash = "sha256:8f5b234f567cf76ee489502ceb7165c2a5cecec081db2b37e35332b537f8157c"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bfef2bb6ef068827bbd021017a107194956918ab43ce4d6dc945ffa13efbc25f"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:484ae3240666ad34cfa31eea7b8c6cd2f1fdaae21d73ce2974211df099a95d81"}, + {file = "msgpack-1.0.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3967e4ad1aa9da62fd53e346ed17d7b2e922cba5ab93bdd46febcac39be636fc"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8dd178c4c80706546702c59529ffc005681bd6dc2ea234c450661b205445a34d"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6ffbc252eb0d229aeb2f9ad051200668fc3a9aaa8994e49f0cb2ffe2b7867e7"}, + {file = "msgpack-1.0.7-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:822ea70dc4018c7e6223f13affd1c5c30c0f5c12ac1f96cd8e9949acddb48a61"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:384d779f0d6f1b110eae74cb0659d9aa6ff35aaf547b3955abf2ab4c901c4819"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f64e376cd20d3f030190e8c32e1c64582eba56ac6dc7d5b0b49a9d44021b52fd"}, + {file = "msgpack-1.0.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ed82f5a7af3697b1c4786053736f24a0efd0a1b8a130d4c7bfee4b9ded0f08f"}, + {file = "msgpack-1.0.7-cp39-cp39-win32.whl", hash = "sha256:f26a07a6e877c76a88e3cecac8531908d980d3d5067ff69213653649ec0f60ad"}, + {file = "msgpack-1.0.7-cp39-cp39-win_amd64.whl", hash = "sha256:1dc93e8e4653bdb5910aed79f11e165c85732067614f180f70534f056da97db3"}, + {file = "msgpack-1.0.7.tar.gz", hash = "sha256:572efc93db7a4d27e404501975ca6d2d9775705c2d922390d878fcf768d92c87"}, ] [[package]] @@ -1124,21 +1190,21 @@ gssapi = ["gssapi (>=1.6.9)"] [[package]] name = "networkx" -version = "2.6.3" +version = "3.1" description = "Python package for creating and manipulating graphs and networks" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "networkx-2.6.3-py3-none-any.whl", hash = "sha256:80b6b89c77d1dfb64a4c7854981b60aeea6360ac02c6d4e4913319e0a313abef"}, - {file = "networkx-2.6.3.tar.gz", hash = "sha256:c0946ed31d71f1b732b5aaa6da5a0388a345019af232ce2f49c766e2d6795c51"}, + {file = "networkx-3.1-py3-none-any.whl", hash = "sha256:4f33f68cb2afcf86f28a45f43efc27a9386b535d567d2127f8f61d51dec58d36"}, + {file = "networkx-3.1.tar.gz", hash = "sha256:de346335408f84de0eada6ff9fafafff9bcda11f0a0dfaa931133debb146ab61"}, ] [package.extras] -default = ["matplotlib (>=3.3)", "numpy (>=1.19)", "pandas (>=1.1)", "scipy (>=1.5,!=1.6.1)"] -developer = ["black (==21.5b1)", "pre-commit (>=2.12)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.1)", "pillow (>=8.2)", "pydata-sphinx-theme (>=0.6,<1.0)", "sphinx (>=4.0,<5.0)", "sphinx-gallery (>=0.9,<1.0)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.5)", "pydot (>=1.4.1)", "pygraphviz (>=1.7)"] -test = ["codecov (>=2.1)", "pytest (>=6.2)", "pytest-cov (>=2.12)"] +default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=1.1)", "pre-commit (>=3.2)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.4)", "pydata-sphinx-theme (>=0.13)", "sphinx (>=6.1)", "sphinx-gallery (>=0.12)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] +test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] name = "nodeenv" @@ -1156,81 +1222,69 @@ setuptools = "*" [[package]] name = "oracledb" -version = "1.3.2" +version = "1.4.2" description = "Python interface to Oracle Database" optional = true python-versions = ">=3.6" files = [ - {file = "oracledb-1.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bee717f90118a95f0c661d27e7a65255eb5e400b95cbe4019b75014b3691ef90"}, - {file = "oracledb-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:000c5a31ecc5569e6dec4dcaf4552509d88a19051e57deb0af96296f9937dc6a"}, - {file = "oracledb-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c37c249c4323b61c3e333c2cf724e19e6416d35130acf0f684eefad17a73b040"}, - {file = "oracledb-1.3.2-cp310-cp310-win32.whl", hash = "sha256:2680f460708904a2d2e4f853990bce10a963905205acf0e709c32cad353a5d2f"}, - {file = "oracledb-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:0fdfa5e119270332eab1ee5900a503423e87d1b8ae6da17c426dd34822217213"}, - {file = "oracledb-1.3.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0ada0cbea8b1524f0798cedc38dabc9a8bfcb67f738b914e7a8eb873cc854a"}, - {file = "oracledb-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:138904100c5218c33005ec5b07688ce68f40ea20c28b3b840738401ae2a862a1"}, - {file = "oracledb-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:839f7a4d8d34130dd99a44c064bc9eea130a0d2406f723398ebb0b29b6d3a8cf"}, - {file = "oracledb-1.3.2-cp311-cp311-win32.whl", hash = "sha256:8e37e2b41900a113894049f3c9d7b64e93f613ed52104f2f05ef3284e2e1bb8f"}, - {file = "oracledb-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:cedd48e7d107884d4a19c9ad449b3c3cb3b3e4d67a6eddacb966b1370cc1f35e"}, - {file = "oracledb-1.3.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a285f35edf435a7f60f54074d9925deb63146b4cc0f6998eba75a282c8ce497"}, - {file = "oracledb-1.3.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e86e5203767e1216ceeda6b7c087b804fa2f44041680d5099900c3cf5724915"}, - {file = "oracledb-1.3.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:043d7d5fdda0ea43734cd4cf67771efddc9307eef10cc83afc19599d39a23d72"}, - {file = "oracledb-1.3.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08cff689d8117c817458a633859a35c21fc44f39bf56c9c8f62ec02789d0e1e0"}, - {file = "oracledb-1.3.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2279f8550d80ed30315ef84e88b8ec5b533064e8a81ef96265647019ccee8e85"}, - {file = "oracledb-1.3.2-cp37-cp37m-win32.whl", hash = "sha256:af8d8635453961556b84e37a1dd40c94e18d1b5d3b54020fafce0f3e67472b90"}, - {file = "oracledb-1.3.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6e8710cdb14c4510f65c11c02f1d97c079d20e0692a431a1af0e964064b7e32c"}, - {file = "oracledb-1.3.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9808e4169e3f330f2ea6dd15376432886d7ed84344f447048d9305a520f31a7a"}, - {file = "oracledb-1.3.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0b760c58f73a262af01e093fc9b183de59516b618319fb53b281eedde1dccbc"}, - {file = "oracledb-1.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ea5a26481c798978210505a1252eec6814cf28005e18a80f935cbcf5b74dabb"}, - {file = "oracledb-1.3.2-cp38-cp38-win32.whl", hash = "sha256:790798eb1e9b96639c02e91f3b3f00934d722d9de0ac375adcda37b83bba61a6"}, - {file = "oracledb-1.3.2-cp38-cp38-win_amd64.whl", hash = "sha256:796b900fe85af572ff3d7227372ca3a2edd5f756e538e95ffbfc689df3881696"}, - {file = "oracledb-1.3.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f669d7fa78a865d10ad9840a2cb6958b395c572c119ff51489a4a738302727e"}, - {file = "oracledb-1.3.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d5e20ed24335c59f42003750be3063f3d75f371af35eff47cc9177e9a4193af2"}, - {file = "oracledb-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb49ebd84d65080703ea8a2b2edde3ac27a6fdc9c491db2dbde0b960f40e3c10"}, - {file = "oracledb-1.3.2-cp39-cp39-win32.whl", hash = "sha256:022a6631ac779f0d600870fea1f7600a03eabcb4609138e91ac77b8126a9373b"}, - {file = "oracledb-1.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:4fdeb8b2158d5fb93451d57152f9cfb25f0d876dcbb90305133267196c9efd84"}, - {file = "oracledb-1.3.2.tar.gz", hash = "sha256:bb3c391c167b5778ddb15a7538a2b36db5c9b88a50c86c61781ca9ff302bb643"}, + {file = "oracledb-1.4.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1fba71bbc0ec8fc806236a30d1212d2f516519c0658f0022f3d5fb593cb4e9b2"}, + {file = "oracledb-1.4.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f1d7c4d3d68572fa0ef3d3973dd0905c4f30e31d91de6a8da771223937fefa9"}, + {file = "oracledb-1.4.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a5b9542d77b86c80dcc0314458cb15619831c06f232bbdbd77863f8ab5921b3"}, + {file = "oracledb-1.4.2-cp310-cp310-win32.whl", hash = "sha256:db99de736ed7996bd428ad0a4eb154543d6dd4add2a2b67b46a51cbf761e01ec"}, + {file = "oracledb-1.4.2-cp310-cp310-win_amd64.whl", hash = "sha256:facf47d6787a0d2ab7cf8dfa68572ea4a3f1cb022843a8ff3b9f87d75ba7c815"}, + {file = "oracledb-1.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56667754b7d4add421edebb624e772f64f3a192e9ff5a7d3ed32d79ed1d37a01"}, + {file = "oracledb-1.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abc152418518fb8e433403afe39b6d2a71faa8653316d6a8e1853bb152584e84"}, + {file = "oracledb-1.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2152dffc586fd7544bd0dd883db4ab93cf17a0bfece8f4d305353f4bdebc627c"}, + {file = "oracledb-1.4.2-cp311-cp311-win32.whl", hash = "sha256:99d08c406752c38c3f3e863db372d1f74adb4d23dd6a34437ddea9fe3f437a37"}, + {file = "oracledb-1.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e5ab88775074b6a758951fea09e53a824343ab53cb84e5a662a52ef5c5799a2b"}, + {file = "oracledb-1.4.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e482cd62cf2c1eb9d655f95d5e87e7903ad83fd759b3c2b2b634d4480ff9d086"}, + {file = "oracledb-1.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69302569a08a9bc136c1032d72222545271100460d1dcde7f9bb8fa928efb11f"}, + {file = "oracledb-1.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:21f74ed6de46465020b23f8fe765f246d835e121482009f7389cb693686f3151"}, + {file = "oracledb-1.4.2-cp312-cp312-win32.whl", hash = "sha256:7e13acc1dab125506b87e536d0e3ed2e1482b61cadae7ba140471c4d2b9315e3"}, + {file = "oracledb-1.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:dea6a0c5150ebb52c0ba617b636d2f5af40fef1d0901e3df3f3f0bcc03359ac7"}, + {file = "oracledb-1.4.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecdebcca26e9964903dd36d01bb95bbf64cd4403a741f8ec7ad9122073fb30a8"}, + {file = "oracledb-1.4.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52a8b99e00cda8de6ca8e887e00dfb60753eab2b98cf1812c7fb7033e757b5fc"}, + {file = "oracledb-1.4.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d77808966802c36995ac81107ee8e3ec188030fc81f753d813edbb604c8bf584"}, + {file = "oracledb-1.4.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:420fd1571426bd4d645849977c4660dcb953387166684d55e5032abf25aac2ed"}, + {file = "oracledb-1.4.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a6028c8edf53fa13781cdd9324c02e41d6072f5b753e6c6a37c1e1081587e6b2"}, + {file = "oracledb-1.4.2-cp37-cp37m-win32.whl", hash = "sha256:2154d4c71f421d2be8fbcbd51174e6fc7194346e74e903882c6be43e6ac03fed"}, + {file = "oracledb-1.4.2-cp37-cp37m-win_amd64.whl", hash = "sha256:c99e5ade66a04e57b8ff98dd9e1a3068426835446c76d7fa6b8d2100f1d32a52"}, + {file = "oracledb-1.4.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:34fabe0b96a4ca3369bfd3edf570455aad16d64e62563bb493cd4870c51724e3"}, + {file = "oracledb-1.4.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf56e92ad93b3822918dec26f6c0948904a3ac5ab49a8246c1e48c65933bbcaa"}, + {file = "oracledb-1.4.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5050aff415b9ef516b271f52e667f52dde9f236bd36ffb6c2e080b9011e6d19d"}, + {file = "oracledb-1.4.2-cp38-cp38-win32.whl", hash = "sha256:1d21b92854b8ea7fd6b216743e7e8585b666031ca2d2b3700c23b62710648c03"}, + {file = "oracledb-1.4.2-cp38-cp38-win_amd64.whl", hash = "sha256:87243baec69b71b3bdb2b9e3962812d66f75953ae1773251c8db510426470761"}, + {file = "oracledb-1.4.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a8e8b306d8032436d0619191021379f298215cc90ae1d9cc0e064529d5cfbb61"}, + {file = "oracledb-1.4.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a31bfbbfec42e9c4f518c9fb4c0a70dda7154ae01539a697688107a75047297f"}, + {file = "oracledb-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29b0188a0ecf4951114c5bdd5a252725f9637fe2a7786e454036720d5f6aa9bf"}, + {file = "oracledb-1.4.2-cp39-cp39-win32.whl", hash = "sha256:035432c89f92ad1b36cd9ce8cd70ddcbe7a2b8e281d8951e77136a977c82a135"}, + {file = "oracledb-1.4.2-cp39-cp39-win_amd64.whl", hash = "sha256:c839cf0f3f90b953243dc65debcfc66dfbd3c885ff9fd2e68d16de986d25e01c"}, + {file = "oracledb-1.4.2.tar.gz", hash = "sha256:e28ed9046f2735dc2dd5bbcdf3667f284e384e0ec7eed3eeb3798fa8a7d47e36"}, ] [package.dependencies] cryptography = ">=3.2.1" -[[package]] -name = "oscrypto" -version = "1.3.0" -description = "TLS (SSL) sockets, key generation, encryption, decryption, signing, verification and KDFs using the OS crypto libraries. Does not require a compiler, and relies on the OS for patching. Works on Windows, OS X and Linux/BSD." -optional = false -python-versions = "*" -files = [ - {file = "oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085"}, - {file = "oscrypto-1.3.0.tar.gz", hash = "sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4"}, -] - -[package.dependencies] -asn1crypto = ">=1.5.1" - [[package]] name = "packaging" -version = "21.3" +version = "23.2" description = "Core utilities for Python packages" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, - {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, + {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, + {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -[package.dependencies] -pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" - [[package]] name = "parameterized" -version = "0.8.1" +version = "0.9.0" description = "Parameterized testing with any Python test framework" optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "parameterized-0.8.1-py2.py3-none-any.whl", hash = "sha256:9cbb0b69a03e8695d68b3399a8a5825200976536fe1cb79db60ed6a4c8c9efe9"}, - {file = "parameterized-0.8.1.tar.gz", hash = "sha256:41bbff37d6186430f77f900d777e5bb6a24928a1c46fb1de692f8b52b8833b5c"}, + {file = "parameterized-0.9.0-py2.py3-none-any.whl", hash = "sha256:4e0758e3d41bea3bbd05ec14fc2c24736723f243b28d702081aef438c9372b1b"}, + {file = "parameterized-0.9.0.tar.gz", hash = "sha256:7fc905272cefa4f364c1a3429cbbe9c0f98b793988efb5bf90aac80f08db09b1"}, ] [package.extras] @@ -1238,18 +1292,15 @@ dev = ["jinja2"] [[package]] name = "parsedatetime" -version = "2.4" +version = "2.6" description = "Parse human-readable date/time text." optional = false python-versions = "*" files = [ - {file = "parsedatetime-2.4-py2-none-any.whl", hash = "sha256:9ee3529454bf35c40a77115f5a596771e59e1aee8c53306f346c461b8e913094"}, - {file = "parsedatetime-2.4.tar.gz", hash = "sha256:3d817c58fb9570d1eec1dd46fa9448cd644eeed4fb612684b02dfda3a79cb84b"}, + {file = "parsedatetime-2.6-py3-none-any.whl", hash = "sha256:cb96edd7016872f58479e35879294258c71437195760746faffedb692aef000b"}, + {file = "parsedatetime-2.6.tar.gz", hash = "sha256:4cb368fbb18a0b7231f4d76119165451c8d2e35951455dfee97c62a87b04d455"}, ] -[package.dependencies] -future = "*" - [[package]] name = "pathspec" version = "0.11.2" @@ -1261,6 +1312,17 @@ files = [ {file = "pathspec-0.11.2.tar.gz", hash = "sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"}, ] +[[package]] +name = "pkgutil-resolve-name" +version = "1.3.10" +description = "Resolve a name to an object." +optional = false +python-versions = ">=3.6" +files = [ + {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, + {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, +] + [[package]] name = "platformdirs" version = "3.11.0" @@ -1343,13 +1405,13 @@ tests = ["google-auth", "httpretty", "pytest", "pytest-runner", "requests-kerber [[package]] name = "prompt-toolkit" -version = "3.0.36" +version = "3.0.43" description = "Library for building powerful interactive command lines in Python" optional = false -python-versions = ">=3.6.2" +python-versions = ">=3.7.0" files = [ - {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, - {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, + {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] @@ -1357,46 +1419,44 @@ wcwidth = "*" [[package]] name = "protobuf" -version = "4.22.3" +version = "4.25.1" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "protobuf-4.22.3-cp310-abi3-win32.whl", hash = "sha256:8b54f56d13ae4a3ec140076c9d937221f887c8f64954673d46f63751209e839a"}, - {file = "protobuf-4.22.3-cp310-abi3-win_amd64.whl", hash = "sha256:7760730063329d42a9d4c4573b804289b738d4931e363ffbe684716b796bde51"}, - {file = "protobuf-4.22.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:d14fc1a41d1a1909998e8aff7e80d2a7ae14772c4a70e4bf7db8a36690b54425"}, - {file = "protobuf-4.22.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:70659847ee57a5262a65954538088a1d72dfc3e9882695cab9f0c54ffe71663b"}, - {file = "protobuf-4.22.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:13233ee2b9d3bd9a5f216c1fa2c321cd564b93d8f2e4f521a85b585447747997"}, - {file = "protobuf-4.22.3-cp37-cp37m-win32.whl", hash = "sha256:ecae944c6c2ce50dda6bf76ef5496196aeb1b85acb95df5843cd812615ec4b61"}, - {file = "protobuf-4.22.3-cp37-cp37m-win_amd64.whl", hash = "sha256:d4b66266965598ff4c291416be429cef7989d8fae88b55b62095a2331511b3fa"}, - {file = "protobuf-4.22.3-cp38-cp38-win32.whl", hash = "sha256:f08aa300b67f1c012100d8eb62d47129e53d1150f4469fd78a29fa3cb68c66f2"}, - {file = "protobuf-4.22.3-cp38-cp38-win_amd64.whl", hash = "sha256:f2f4710543abec186aee332d6852ef5ae7ce2e9e807a3da570f36de5a732d88e"}, - {file = "protobuf-4.22.3-cp39-cp39-win32.whl", hash = "sha256:7cf56e31907c532e460bb62010a513408e6cdf5b03fb2611e4b67ed398ad046d"}, - {file = "protobuf-4.22.3-cp39-cp39-win_amd64.whl", hash = "sha256:e0e630d8e6a79f48c557cd1835865b593d0547dce221c66ed1b827de59c66c97"}, - {file = "protobuf-4.22.3-py3-none-any.whl", hash = "sha256:52f0a78141078077cfe15fe333ac3e3a077420b9a3f5d1bf9b5fe9d286b4d881"}, - {file = "protobuf-4.22.3.tar.gz", hash = "sha256:23452f2fdea754a8251d0fc88c0317735ae47217e0d27bf330a30eec2848811a"}, + {file = "protobuf-4.25.1-cp310-abi3-win32.whl", hash = "sha256:193f50a6ab78a970c9b4f148e7c750cfde64f59815e86f686c22e26b4fe01ce7"}, + {file = "protobuf-4.25.1-cp310-abi3-win_amd64.whl", hash = "sha256:3497c1af9f2526962f09329fd61a36566305e6c72da2590ae0d7d1322818843b"}, + {file = "protobuf-4.25.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:0bf384e75b92c42830c0a679b0cd4d6e2b36ae0cf3dbb1e1dfdda48a244f4bcd"}, + {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:0f881b589ff449bf0b931a711926e9ddaad3b35089cc039ce1af50b21a4ae8cb"}, + {file = "protobuf-4.25.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:ca37bf6a6d0046272c152eea90d2e4ef34593aaa32e8873fc14c16440f22d4b7"}, + {file = "protobuf-4.25.1-cp38-cp38-win32.whl", hash = "sha256:abc0525ae2689a8000837729eef7883b9391cd6aa7950249dcf5a4ede230d5dd"}, + {file = "protobuf-4.25.1-cp38-cp38-win_amd64.whl", hash = "sha256:1484f9e692091450e7edf418c939e15bfc8fc68856e36ce399aed6889dae8bb0"}, + {file = "protobuf-4.25.1-cp39-cp39-win32.whl", hash = "sha256:8bdbeaddaac52d15c6dce38c71b03038ef7772b977847eb6d374fc86636fa510"}, + {file = "protobuf-4.25.1-cp39-cp39-win_amd64.whl", hash = "sha256:becc576b7e6b553d22cbdf418686ee4daa443d7217999125c045ad56322dda10"}, + {file = "protobuf-4.25.1-py3-none-any.whl", hash = "sha256:a19731d5e83ae4737bb2a089605e636077ac001d18781b3cf489b9546c7c80d6"}, + {file = "protobuf-4.25.1.tar.gz", hash = "sha256:57d65074b4f5baa4ab5da1605c02be90ac20c8b40fb137d6a8df9f416b0d0ce2"}, ] [[package]] name = "psycopg2" -version = "2.9.5" +version = "2.9.9" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "psycopg2-2.9.5-cp310-cp310-win32.whl", hash = "sha256:d3ef67e630b0de0779c42912fe2cbae3805ebaba30cda27fea2a3de650a9414f"}, - {file = "psycopg2-2.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:4cb9936316d88bfab614666eb9e32995e794ed0f8f6b3b718666c22819c1d7ee"}, - {file = "psycopg2-2.9.5-cp311-cp311-win32.whl", hash = "sha256:093e3894d2d3c592ab0945d9eba9d139c139664dcf83a1c440b8a7aa9bb21955"}, - {file = "psycopg2-2.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:920bf418000dd17669d2904472efeab2b20546efd0548139618f8fa305d1d7ad"}, - {file = "psycopg2-2.9.5-cp36-cp36m-win32.whl", hash = "sha256:b9ac1b0d8ecc49e05e4e182694f418d27f3aedcfca854ebd6c05bb1cffa10d6d"}, - {file = "psycopg2-2.9.5-cp36-cp36m-win_amd64.whl", hash = "sha256:fc04dd5189b90d825509caa510f20d1d504761e78b8dfb95a0ede180f71d50e5"}, - {file = "psycopg2-2.9.5-cp37-cp37m-win32.whl", hash = "sha256:922cc5f0b98a5f2b1ff481f5551b95cd04580fd6f0c72d9b22e6c0145a4840e0"}, - {file = "psycopg2-2.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:1e5a38aa85bd660c53947bd28aeaafb6a97d70423606f1ccb044a03a1203fe4a"}, - {file = "psycopg2-2.9.5-cp38-cp38-win32.whl", hash = "sha256:f5b6320dbc3cf6cfb9f25308286f9f7ab464e65cfb105b64cc9c52831748ced2"}, - {file = "psycopg2-2.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:1a5c7d7d577e0eabfcf15eb87d1e19314c8c4f0e722a301f98e0e3a65e238b4e"}, - {file = "psycopg2-2.9.5-cp39-cp39-win32.whl", hash = "sha256:322fd5fca0b1113677089d4ebd5222c964b1760e361f151cbb2706c4912112c5"}, - {file = "psycopg2-2.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:190d51e8c1b25a47484e52a79638a8182451d6f6dff99f26ad9bd81e5359a0fa"}, - {file = "psycopg2-2.9.5.tar.gz", hash = "sha256:a5246d2e683a972e2187a8714b5c2cf8156c064629f9a9b1a873c1730d9e245a"}, + {file = "psycopg2-2.9.9-cp310-cp310-win32.whl", hash = "sha256:38a8dcc6856f569068b47de286b472b7c473ac7977243593a288ebce0dc89516"}, + {file = "psycopg2-2.9.9-cp310-cp310-win_amd64.whl", hash = "sha256:426f9f29bde126913a20a96ff8ce7d73fd8a216cfb323b1f04da402d452853c3"}, + {file = "psycopg2-2.9.9-cp311-cp311-win32.whl", hash = "sha256:ade01303ccf7ae12c356a5e10911c9e1c51136003a9a1d92f7aa9d010fb98372"}, + {file = "psycopg2-2.9.9-cp311-cp311-win_amd64.whl", hash = "sha256:121081ea2e76729acfb0673ff33755e8703d45e926e416cb59bae3a86c6a4981"}, + {file = "psycopg2-2.9.9-cp312-cp312-win32.whl", hash = "sha256:d735786acc7dd25815e89cc4ad529a43af779db2e25aa7c626de864127e5a024"}, + {file = "psycopg2-2.9.9-cp312-cp312-win_amd64.whl", hash = "sha256:a7653d00b732afb6fc597e29c50ad28087dcb4fbfb28e86092277a559ae4e693"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win32.whl", hash = "sha256:5e0d98cade4f0e0304d7d6f25bbfbc5bd186e07b38eac65379309c4ca3193efa"}, + {file = "psycopg2-2.9.9-cp37-cp37m-win_amd64.whl", hash = "sha256:7e2dacf8b009a1c1e843b5213a87f7c544b2b042476ed7755be813eaf4e8347a"}, + {file = "psycopg2-2.9.9-cp38-cp38-win32.whl", hash = "sha256:ff432630e510709564c01dafdbe996cb552e0b9f3f065eb89bdce5bd31fabf4c"}, + {file = "psycopg2-2.9.9-cp38-cp38-win_amd64.whl", hash = "sha256:bac58c024c9922c23550af2a581998624d6e02350f4ae9c5f0bc642c633a2d5e"}, + {file = "psycopg2-2.9.9-cp39-cp39-win32.whl", hash = "sha256:c92811b2d4c9b6ea0285942b2e7cac98a59e166d59c588fe5cfe1eda58e72d59"}, + {file = "psycopg2-2.9.9-cp39-cp39-win_amd64.whl", hash = "sha256:de80739447af31525feddeb8effd640782cf5998e1a4e9192ebdf829717e3913"}, + {file = "psycopg2-2.9.9.tar.gz", hash = "sha256:d1454bde93fb1e224166811694d600e746430c006fbb031ea06ecc2ea41bf156"}, ] [[package]] @@ -1410,41 +1470,6 @@ files = [ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] -[[package]] -name = "pycryptodomex" -version = "3.16.0" -description = "Cryptographic library for Python" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "pycryptodomex-3.16.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:b3d04c00d777c36972b539fb79958790126847d84ec0129fce1efef250bfe3ce"}, - {file = "pycryptodomex-3.16.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:e5a670919076b71522c7d567a9043f66f14b202414a63c3a078b5831ae342c03"}, - {file = "pycryptodomex-3.16.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:ce338a9703f54b2305a408fc9890eb966b727ce72b69f225898bb4e9d9ed3f1f"}, - {file = "pycryptodomex-3.16.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:a1c0ae7123448ecb034c75c713189cb00ebe2d415b11682865b6c54d200d9c93"}, - {file = "pycryptodomex-3.16.0-cp27-cp27m-win32.whl", hash = "sha256:8851585ff19871e5d69e1790f4ca5f6fd1699d6b8b14413b472a4c0dbc7ea780"}, - {file = "pycryptodomex-3.16.0-cp27-cp27m-win_amd64.whl", hash = "sha256:8dd2d9e3c617d0712ed781a77efd84ea579e76c5f9b2a4bc0b684ebeddf868b2"}, - {file = "pycryptodomex-3.16.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2ad9bb86b355b6104796567dd44c215b3dc953ef2fae5e0bdfb8516731df92cf"}, - {file = "pycryptodomex-3.16.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:e25a2f5667d91795f9417cb856f6df724ccdb0cdd5cbadb212ee9bf43946e9f8"}, - {file = "pycryptodomex-3.16.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:b0789a8490114a2936ed77c87792cfe77582c829cb43a6d86ede0f9624ba8aa3"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0da835af786fdd1c9930994c78b23e88d816dc3f99aa977284a21bbc26d19735"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:22aed0868622d95179217c298e37ed7410025c7b29dac236d3230617d1e4ed56"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1619087fb5b31510b0b0b058a54f001a5ffd91e6ffee220d9913064519c6a69d"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:70288d9bfe16b2fd0d20b6c365db614428f1bcde7b20d56e74cf88ade905d9eb"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7993d26dae4d83b8f4ce605bb0aecb8bee330bb3c95475ef06f3694403621e71"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:1cda60207be8c1cf0b84b9138f9e3ca29335013d2b690774a5e94678ff29659a"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:04610536921c1ec7adba158ef570348550c9f3a40bc24be9f8da2ef7ab387981"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-win32.whl", hash = "sha256:daa67f5ebb6fbf1ee9c90decaa06ca7fc88a548864e5e484d52b0920a57fe8a5"}, - {file = "pycryptodomex-3.16.0-cp35-abi3-win_amd64.whl", hash = "sha256:231dc8008cbdd1ae0e34645d4523da2dbc7a88c325f0d4a59635a86ee25b41dd"}, - {file = "pycryptodomex-3.16.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:4dbbe18cc232b5980c7633972ae5417d0df76fe89e7db246eefd17ef4d8e6d7a"}, - {file = "pycryptodomex-3.16.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:893f8a97d533c66cc3a56e60dd3ed40a3494ddb4aafa7e026429a08772f8a849"}, - {file = "pycryptodomex-3.16.0-pp27-pypy_73-win32.whl", hash = "sha256:6a465e4f856d2a4f2a311807030c89166529ccf7ccc65bef398de045d49144b6"}, - {file = "pycryptodomex-3.16.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ba57ac7861fd2c837cdb33daf822f2a052ff57dd769a2107807f52a36d0e8d38"}, - {file = "pycryptodomex-3.16.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:f2b971a7b877348a27dcfd0e772a0343fb818df00b74078e91c008632284137d"}, - {file = "pycryptodomex-3.16.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e2453162f473c1eae4826eb10cd7bce19b5facac86d17fb5f29a570fde145abd"}, - {file = "pycryptodomex-3.16.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:0ba28aa97cdd3ff5ed1a4f2b7f5cd04e721166bd75bd2b929e2734433882b583"}, - {file = "pycryptodomex-3.16.0.tar.gz", hash = "sha256:e9ba9d8ed638733c9e95664470b71d624a6def149e2db6cc52c1aca5a6a2df1d"}, -] - [[package]] name = "pydantic" version = "1.10.12" @@ -1499,27 +1524,28 @@ email = ["email-validator (>=1.0.3)"] [[package]] name = "pygments" -version = "2.15.1" +version = "2.17.2" description = "Pygments is a syntax highlighting package written in Python." optional = false python-versions = ">=3.7" files = [ - {file = "Pygments-2.15.1-py3-none-any.whl", hash = "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1"}, - {file = "Pygments-2.15.1.tar.gz", hash = "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c"}, + {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 = "PyJWT" -version = "2.6.0" +name = "pyjwt" +version = "2.8.0" description = "JSON Web Token implementation in Python" optional = false python-versions = ">=3.7" files = [ - {file = "PyJWT-2.6.0-py3-none-any.whl", hash = "sha256:d83c3d892a77bbb74d3e1a2cfa90afaadb60945205d1095d9221f04466f64c14"}, - {file = "PyJWT-2.6.0.tar.gz", hash = "sha256:69285c7e31fc44f68a1feb309e948e0df53259d579295e6cfe2b1792329f05fd"}, + {file = "PyJWT-2.8.0-py3-none-any.whl", hash = "sha256:59127c392cc44c2da5bb3192169a91f429924e17aff6534d70fdc02ab3e04320"}, + {file = "PyJWT-2.8.0.tar.gz", hash = "sha256:57e28d156e3d5c10088e0c68abb90bfac3df82b40a71bd0daa20c65ccd5c23de"}, ] [package.extras] @@ -1574,72 +1600,22 @@ files = [ [[package]] name = "pyopenssl" -version = "22.0.0" +version = "23.3.0" description = "Python wrapper module around the OpenSSL library" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-22.0.0-py2.py3-none-any.whl", hash = "sha256:ea252b38c87425b64116f808355e8da644ef9b07e429398bfece610f893ee2e0"}, - {file = "pyOpenSSL-22.0.0.tar.gz", hash = "sha256:660b1b1425aac4a1bea1d94168a85d99f0b3144c869dd4390d27629d0087f1bf"}, + {file = "pyOpenSSL-23.3.0-py3-none-any.whl", hash = "sha256:6756834481d9ed5470f4a9393455154bc92fe7a64b7bc6ee2c804e78c52099b2"}, + {file = "pyOpenSSL-23.3.0.tar.gz", hash = "sha256:6b2cba5cc46e822750ec3e5a81ee12819850b11303630d575e98108a079c2b12"}, ] [package.dependencies] -cryptography = ">=35.0" +cryptography = ">=41.0.5,<42" [package.extras] -docs = ["sphinx", "sphinx-rtd-theme"] +docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] test = ["flaky", "pretend", "pytest (>=3.0.1)"] -[[package]] -name = "pyparsing" -version = "3.0.9" -description = "pyparsing module - Classes and methods to define and execute parsing grammars" -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"}, -] - -[package.extras] -diagrams = ["jinja2", "railroad-diagrams"] - -[[package]] -name = "pyrsistent" -version = "0.19.3" -description = "Persistent/Functional/Immutable data structures" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, - {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, - {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, - {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, - {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, - {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, - {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, - {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, - {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, - {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, - {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, - {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, - {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, - {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, -] - [[package]] name = "python-dateutil" version = "2.8.2" @@ -1656,13 +1632,13 @@ six = ">=1.5" [[package]] name = "python-slugify" -version = "7.0.0" +version = "8.0.1" description = "A Python slugify application that also handles Unicode" optional = false python-versions = ">=3.7" files = [ - {file = "python-slugify-7.0.0.tar.gz", hash = "sha256:7a0f21a39fa6c1c4bf2e5984c9b9ae944483fd10b54804cb0e23a3ccd4954f0b"}, - {file = "python_slugify-7.0.0-py2.py3-none-any.whl", hash = "sha256:003aee64f9fd955d111549f96c4b58a3f40b9319383c70fad6277a4974bbf570"}, + {file = "python-slugify-8.0.1.tar.gz", hash = "sha256:ce0d46ddb668b3be82f4ed5e503dbc33dd815d83e2eb6824211310d3fb172a27"}, + {file = "python_slugify-8.0.1-py2.py3-none-any.whl", hash = "sha256:70ca6ea68fe63ecc8fa4fcf00ae651fc8a5d02d93dcd12ae6d4fc7ca46c4d395"}, ] [package.dependencies] @@ -1684,106 +1660,116 @@ files = [ [[package]] name = "pytz" -version = "2022.6" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2022.6-py2.py3-none-any.whl", hash = "sha256:222439474e9c98fced559f1709d89e6c9cbf8d79c794ff3eb9f8800064291427"}, - {file = "pytz-2022.6.tar.gz", hash = "sha256:e89512406b793ca39f5971bc999cc538ce125c0e51c27941bef4568b460095e2"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] -[[package]] -name = "pytz-deprecation-shim" -version = "0.1.0.post0" -description = "Shims to make deprecation of pytz easier" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,>=2.7" -files = [ - {file = "pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl", hash = "sha256:8314c9692a636c8eb3bda879b9f119e350e93223ae83e70e80c31675a0fdc1a6"}, - {file = "pytz_deprecation_shim-0.1.0.post0.tar.gz", hash = "sha256:af097bae1b616dde5c5744441e2ddc69e74dfdcb0c263129610d85b87445a59d"}, -] - -[package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version >= \"3.6\" and python_version < \"3.9\""} -tzdata = {version = "*", markers = "python_version >= \"3.6\""} - [[package]] name = "pywin32-ctypes" -version = "0.2.0" -description = "" +version = "0.2.2" +description = "A (partial) reimplementation of pywin32 using ctypes/cffi" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"}, - {file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"}, + {file = "pywin32-ctypes-0.2.2.tar.gz", hash = "sha256:3426e063bdd5fd4df74a14fa3cf80a0b42845a87e1d1e81f6549f9daec593a60"}, + {file = "pywin32_ctypes-0.2.2-py3-none-any.whl", hash = "sha256:bf490a1a709baf35d688fe0ecf980ed4de11d2b3e37b51e5442587a75d9957e7"}, ] [[package]] name = "pyyaml" -version = "6.0" +version = "6.0.1" description = "YAML parser and emitter for Python" optional = false python-versions = ">=3.6" files = [ - {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, - {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, - {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, - {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, - {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"}, - {file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"}, - {file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"}, - {file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"}, - {file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"}, - {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, - {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, - {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, - {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, - {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, - {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, - {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, - {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, - {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, - {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, - {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, - {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, - {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, - {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, - {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, - {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, - {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, + {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"}, + {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"}, + {file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"}, + {file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"}, + {file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"}, + {file = "PyYAML-6.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f003ed9ad21d6a4713f0a9b5a7a0a79e08dd0f221aff4525a2be4c346ee60aab"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"}, + {file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"}, + {file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"}, + {file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"}, + {file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"}, + {file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"}, + {file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"}, + {file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"}, + {file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"}, + {file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"}, + {file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"}, + {file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afd7e57eddb1a54f0f1a974bc4391af8bcce0b444685d936840f125cf046d5bd"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win32.whl", hash = "sha256:fca0e3a251908a499833aa292323f32437106001d436eca0e6e7833256674585"}, + {file = "PyYAML-6.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:f22ac1c3cac4dbc50079e965eba2c1058622631e526bd9afd45fedd49ba781fa"}, + {file = "PyYAML-6.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1275ad35a5d18c62a7220633c913e1b42d44b46ee12554e5fd39c70a243d6a3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18aeb1bf9a78867dc38b259769503436b7c72f7a1f1f4c93ff9a17de54319b27"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:596106435fa6ad000c2991a98fa58eeb8656ef2325d7e158344fb33864ed87e3"}, + {file = "PyYAML-6.0.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa90d3f661d43131ca170712d903e6295d1f7a0f595074f151c0aed377c9b9c"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win32.whl", hash = "sha256:9046c58c4395dff28dd494285c82ba00b546adfc7ef001486fbf0324bc174fba"}, + {file = "PyYAML-6.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:4fb147e7a67ef577a588a0e2c17b6db51dda102c71de36f8549b6816a96e1867"}, + {file = "PyYAML-6.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1d4c7e777c441b20e32f52bd377e0c409713e8bb1386e1099c2415f26e479595"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"}, + {file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"}, + {file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"}, + {file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"}, + {file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"}, + {file = "PyYAML-6.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c8098ddcc2a85b61647b2590f825f3db38891662cfc2fc776415143f599bb859"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"}, + {file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"}, + {file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"}, + {file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"}, + {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, + {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, +] + +[[package]] +name = "referencing" +version = "0.32.0" +description = "JSON Referencing + Python" +optional = false +python-versions = ">=3.8" +files = [ + {file = "referencing-0.32.0-py3-none-any.whl", hash = "sha256:bdcd3efb936f82ff86f993093f6da7435c7de69a3b3a5a06678a6050184bee99"}, + {file = "referencing-0.32.0.tar.gz", hash = "sha256:689e64fe121843dcfd57b71933318ef1f91188ffb45367332700a86ac8fd6161"}, ] +[package.dependencies] +attrs = ">=22.2.0" +rpds-py = ">=0.7.0" + [[package]] name = "requests" -version = "2.28.1" +version = "2.31.0" description = "Python HTTP for Humans." optional = false -python-versions = ">=3.7, <4" +python-versions = ">=3.7" files = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, + {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<1.27" +urllib3 = ">=1.21.1,<3" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] @@ -1791,46 +1777,155 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rich" -version = "12.0.1" +version = "13.7.0" description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" optional = false -python-versions = ">=3.6.2,<4.0.0" +python-versions = ">=3.7.0" files = [ - {file = "rich-12.0.1-py3-none-any.whl", hash = "sha256:ce5c714e984a2d185399e4e1dd1f8b2feacb7cecfc576f1522425643a36a57ea"}, - {file = "rich-12.0.1.tar.gz", hash = "sha256:3fba9dd15ebe048e2795a02ac19baee79dc12cc50b074ef70f2958cd651b59a9"}, + {file = "rich-13.7.0-py3-none-any.whl", hash = "sha256:6da14c108c4866ee9520bbffa71f6fe3962e193b7da68720583850cd4548e235"}, + {file = "rich-13.7.0.tar.gz", hash = "sha256:5cb5123b5cf9ee70584244246816e9114227e0b98ad9176eede6ad54bf5403fa"}, ] [package.dependencies] -commonmark = ">=0.9.0,<0.10.0" -pygments = ">=2.6.0,<3.0.0" +markdown-it-py = ">=2.2.0" +pygments = ">=2.13.0,<3.0.0" +typing-extensions = {version = ">=4.0.0,<5.0", markers = "python_version < \"3.9\""} [package.extras] -jupyter = ["ipywidgets (>=7.5.1,<8.0.0)"] +jupyter = ["ipywidgets (>=7.5.1,<9)"] + +[[package]] +name = "rpds-py" +version = "0.15.2" +description = "Python bindings to Rust's persistent data structures (rpds)" +optional = false +python-versions = ">=3.8" +files = [ + {file = "rpds_py-0.15.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:337a8653fb11d2fbe7157c961cc78cb3c161d98cf44410ace9a3dc2db4fad882"}, + {file = "rpds_py-0.15.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:813a65f95bfcb7c8f2a70dd6add9b51e9accc3bdb3e03d0ff7a9e6a2d3e174bf"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:082e0e55d73690ffb4da4352d1b5bbe1b5c6034eb9dc8c91aa2a3ee15f70d3e2"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5595c80dd03d7e6c6afb73f3594bf3379a7d79fa57164b591d012d4b71d6ac4c"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fb10bb720348fe1647a94eb605accb9ef6a9b1875d8845f9e763d9d71a706387"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:53304cc14b1d94487d70086e1cb0cb4c29ec6da994d58ae84a4d7e78c6a6d04d"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d64a657de7aae8db2da60dc0c9e4638a0c3893b4d60101fd564a3362b2bfeb34"}, + {file = "rpds_py-0.15.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ee40206d1d6e95eaa2b7b919195e3689a5cf6ded730632de7f187f35a1b6052c"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1607cda6129f815493a3c184492acb5ae4aa6ed61d3a1b3663aa9824ed26f7ac"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3e6e2e502c4043c52a99316d89dc49f416acda5b0c6886e0dd8ea7bb35859e8"}, + {file = "rpds_py-0.15.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:044f6f46d62444800402851afa3c3ae50141f12013060c1a3a0677e013310d6d"}, + {file = "rpds_py-0.15.2-cp310-none-win32.whl", hash = "sha256:c827a931c6b57f50f1bb5de400dcfb00bad8117e3753e80b96adb72d9d811514"}, + {file = "rpds_py-0.15.2-cp310-none-win_amd64.whl", hash = "sha256:3bbc89ce2a219662ea142f0abcf8d43f04a41d5b1880be17a794c39f0d609cb0"}, + {file = "rpds_py-0.15.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:1fd0f0b1ccd7d537b858a56355a250108df692102e08aa2036e1a094fd78b2dc"}, + {file = "rpds_py-0.15.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b414ef79f1f06fb90b5165db8aef77512c1a5e3ed1b4807da8476b7e2c853283"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c31272c674f725dfe0f343d73b0abe8c878c646967ec1c6106122faae1efc15b"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a6945c2d61c42bb7e818677f43638675b8c1c43e858b67a96df3eb2426a86c9d"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02744236ac1895d7be837878e707a5c35fb8edc5137602f253b63623d7ad5c8c"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2181e86d4e1cdf49a7320cb72a36c45efcb7670d0a88f09fd2d3a7967c0540fd"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a8ff8e809da81363bffca2b965cb6e4bf6056b495fc3f078467d1f8266fe27f"}, + {file = "rpds_py-0.15.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:97532802f14d383f37d603a56e226909f825a83ff298dc1b6697de00d2243999"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:13716e53627ad97babf72ac9e01cf9a7d4af2f75dd5ed7b323a7a9520e948282"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2f1f295a5c28cfa74a7d48c95acc1c8a7acd49d7d9072040d4b694fe11cd7166"}, + {file = "rpds_py-0.15.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8ec464f20fe803ae00419bd1610934e3bda963aeba1e6181dfc9033dc7e8940c"}, + {file = "rpds_py-0.15.2-cp311-none-win32.whl", hash = "sha256:b61d5096e75fd71018b25da50b82dd70ec39b5e15bb2134daf7eb7bbbc103644"}, + {file = "rpds_py-0.15.2-cp311-none-win_amd64.whl", hash = "sha256:9d41ebb471a6f064c0d1c873c4f7dded733d16ca5db7d551fb04ff3805d87802"}, + {file = "rpds_py-0.15.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:13ff62d3561a23c17341b4afc78e8fcfd799ab67c0b1ca32091d71383a98ba4b"}, + {file = "rpds_py-0.15.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b70b45a40ad0798b69748b34d508259ef2bdc84fb2aad4048bc7c9cafb68ddb3"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ecbba7efd82bd2a4bb88aab7f984eb5470991c1347bdd1f35fb34ea28dba6e"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9d38494a8d21c246c535b41ecdb2d562c4b933cf3d68de03e8bc43a0d41be652"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:13152dfe7d7c27c40df8b99ac6aab12b978b546716e99f67e8a67a1d441acbc3"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:164fcee32f15d04d61568c9cb0d919e37ff3195919cd604039ff3053ada0461b"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a5122b17a4faf5d7a6d91fa67b479736c0cacc7afe791ddebb7163a8550b799"}, + {file = "rpds_py-0.15.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:46b4f3d47d1033db569173be62365fbf7808c2bd3fb742314d251f130d90d44c"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c61e42b4ceb9759727045765e87d51c1bb9f89987aca1fcc8a040232138cad1c"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:d2aa3ca9552f83b0b4fa6ca8c6ce08da6580f37e3e0ab7afac73a1cfdc230c0e"}, + {file = "rpds_py-0.15.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec19e823b4ccd87bd69e990879acbce9e961fc7aebe150156b8f4418d4b27b7f"}, + {file = "rpds_py-0.15.2-cp312-none-win32.whl", hash = "sha256:afeabb382c1256a7477b739820bce7fe782bb807d82927102cee73e79b41b38b"}, + {file = "rpds_py-0.15.2-cp312-none-win_amd64.whl", hash = "sha256:422b0901878a31ef167435c5ad46560362891816a76cc0d150683f3868a6f0d1"}, + {file = "rpds_py-0.15.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:baf744e5f9d5ee6531deea443be78b36ed1cd36c65a0b95ea4e8d69fa0102268"}, + {file = "rpds_py-0.15.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7e072f5da38d6428ba1fc1115d3cc0dae895df671cb04c70c019985e8c7606be"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f138f550b83554f5b344d6be35d3ed59348510edc3cb96f75309db6e9bfe8210"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2a4cd924d0e2f4b1a68034abe4cadc73d69ad5f4cf02db6481c0d4d749f548f"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5eb05b654a41e0f81ab27a7c3e88b6590425eb3e934e1d533ecec5dc88a6ffff"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2ee066a64f0d2ba45391cac15b3a70dcb549e968a117bd0500634754cfe0e5fc"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c51a899792ee2c696072791e56b2020caff58b275abecbc9ae0cb71af0645c95"}, + {file = "rpds_py-0.15.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ac2ac84a4950d627d84b61f082eba61314373cfab4b3c264b62efab02ababe83"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:62b292fff4739c6be89e6a0240c02bda5a9066a339d90ab191cf66e9fdbdc193"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:98ee201a52a7f65608e5494518932e1473fd43535f12cade0a1b4ab32737fe28"}, + {file = "rpds_py-0.15.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3d40fb3ca22e3d40f494d577441b263026a3bd8c97ae6ce89b2d3c4b39ac9581"}, + {file = "rpds_py-0.15.2-cp38-none-win32.whl", hash = "sha256:30479a9f1fce47df56b07460b520f49fa2115ec2926d3b1303c85c81f8401ed1"}, + {file = "rpds_py-0.15.2-cp38-none-win_amd64.whl", hash = "sha256:2df3d07a16a3bef0917b28cd564778fbb31f3ffa5b5e33584470e2d1b0f248f0"}, + {file = "rpds_py-0.15.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:56b51ba29a18e5f5810224bcf00747ad931c0716e3c09a76b4a1edd3d4aba71f"}, + {file = "rpds_py-0.15.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3c11bc5814554b018f6c5d6ae0969e43766f81e995000b53a5d8c8057055e886"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2faa97212b0dc465afeedf49045cdd077f97be1188285e646a9f689cb5dfff9e"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:86c01299942b0f4b5b5f28c8701689181ad2eab852e65417172dbdd6c5b3ccc8"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd7d3608589072f63078b4063a6c536af832e76b0b3885f1bfe9e892abe6c207"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:938518a11780b39998179d07f31a4a468888123f9b00463842cd40f98191f4d3"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dccc623725d0b298f557d869a68496a2fd2a9e9c41107f234fa5f7a37d278ac"}, + {file = "rpds_py-0.15.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d46ee458452727a147d7897bb33886981ae1235775e05decae5d5d07f537695a"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:d9d7ebcd11ea76ba0feaae98485cd8e31467c3d7985210fab46983278214736b"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:8a5f574b92b3ee7d254e56d56e37ec0e1416acb1ae357c4956d76a1788dc58fb"}, + {file = "rpds_py-0.15.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:3db0c998c92b909d7c90b66c965590d4f3cd86157176a6cf14aa1f867b77b889"}, + {file = "rpds_py-0.15.2-cp39-none-win32.whl", hash = "sha256:bbc7421cbd28b4316d1d017db338039a7943f945c6f2bb15e1439b14b5682d28"}, + {file = "rpds_py-0.15.2-cp39-none-win_amd64.whl", hash = "sha256:1c24e30d720c0009b6fb2e1905b025da56103c70a8b31b99138e4ed1c2a6c5b0"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:1e6fcd0a0f62f2997107f758bb372397b8d5fd5f39cc6dcb86f7cb98a2172d6c"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:d800a8e2ac62db1b9ea5d6d1724f1a93c53907ca061de4d05ed94e8dfa79050c"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e09d017e3f4d9bd7d17a30d3f59e4d6d9ba2d2ced280eec2425e84112cf623f"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b88c3ab98556bc351b36d6208a6089de8c8db14a7f6e1f57f82a334bd2c18f0b"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f333bfe782a2d05a67cfaa0cc9cd68b36b39ee6acfe099f980541ed973a7093"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b629db53fe17e6ce478a969d30bd1d0e8b53238c46e3a9c9db39e8b65a9ef973"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:485fbdd23becb822804ed05622907ee5c8e8a5f43f6f43894a45f463b2217045"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:893e38d0f4319dfa70c0f36381a37cc418985c87b11d9784365b1fff4fa6973b"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:8ffdeb7dbd0160d4e391e1f857477e4762d00aa2199c294eb95dfb9451aa1d9f"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:fc33267d58dfbb2361baed52668c5d8c15d24bc0372cecbb79fed77339b55e0d"}, + {file = "rpds_py-0.15.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:2e7e5633577b3bd56bf3af2ef6ae3778bbafb83743989d57f0e7edbf6c0980e4"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:8b9650f92251fdef843e74fc252cdfd6e3c700157ad686eeb0c6d7fdb2d11652"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:07a2e1d78d382f7181789713cdf0c16edbad4fe14fe1d115526cb6f0eef0daa3"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:03f9c5875515820633bd7709a25c3e60c1ea9ad1c5d4030ce8a8c203309c36fd"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:580182fa5b269c2981e9ce9764367cb4edc81982ce289208d4607c203f44ffde"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa1e626c524d2c7972c0f3a8a575d654a3a9c008370dc2a97e46abd0eaa749b9"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ae9d83a81b09ce3a817e2cbb23aabc07f86a3abc664c613cd283ce7a03541e95"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9235be95662559141934fced8197de6fee8c58870f36756b0584424b6d708393"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a72e00826a2b032dda3eb25aa3e3579c6d6773d22d8446089a57a123481cc46c"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ab095edf1d840a6a6a4307e1a5b907a299a94e7b90e75436ee770b8c35d22a25"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:3b79c63d29101cbaa53a517683557bb550462394fb91044cc5998dd2acff7340"}, + {file = "rpds_py-0.15.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:911e600e798374c0d86235e7ef19109cf865d1336942d398ff313375a25a93ba"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3cd61e759c4075510052d1eca5cddbd297fe1164efec14ef1fce3f09b974dfe4"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:9d2ae79f31da5143e020a8d4fc74e1f0cbcb8011bdf97453c140aa616db51406"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e99d6510c8557510c220b865d966b105464740dcbebf9b79ecd4fbab30a13d9"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:6c43e1b89099279cc03eb1c725c5de12af6edcd2f78e2f8a022569efa639ada3"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac7187bee72384b9cfedf09a29a3b2b6e8815cc64c095cdc8b5e6aec81e9fd5f"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3423007fc0661827e06f8a185a3792c73dda41f30f3421562f210cf0c9e49569"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2974e6dff38afafd5ccf8f41cb8fc94600b3f4fd9b0a98f6ece6e2219e3158d5"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:93c18a1696a8e0388ed84b024fe1a188a26ba999b61d1d9a371318cb89885a8c"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:c7cd0841a586b7105513a7c8c3d5c276f3adc762a072d81ef7fae80632afad1e"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:709dc11af2f74ba89c68b1592368c6edcbccdb0a06ba77eb28c8fe08bb6997da"}, + {file = "rpds_py-0.15.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:fc066395e6332da1e7525d605b4c96055669f8336600bef8ac569d5226a7c76f"}, + {file = "rpds_py-0.15.2.tar.gz", hash = "sha256:373b76eeb79e8c14f6d82cb1d4d5293f9e4059baec6c1b16dca7ad13b6131b39"}, +] [[package]] name = "ruff" -version = "0.1.4" +version = "0.1.8" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.1.4-py3-none-macosx_10_7_x86_64.whl", hash = "sha256:864958706b669cce31d629902175138ad8a069d99ca53514611521f532d91495"}, - {file = "ruff-0.1.4-py3-none-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl", hash = "sha256:9fdd61883bb34317c788af87f4cd75dfee3a73f5ded714b77ba928e418d6e39e"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4eaca8c9cc39aa7f0f0d7b8fe24ecb51232d1bb620fc4441a61161be4a17539"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a9a1301dc43cbf633fb603242bccd0aaa34834750a14a4c1817e2e5c8d60de17"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:78e8db8ab6f100f02e28b3d713270c857d370b8d61871d5c7d1702ae411df683"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:80fea754eaae06335784b8ea053d6eb8e9aac75359ebddd6fee0858e87c8d510"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6bc02a480d4bfffd163a723698da15d1a9aec2fced4c06f2a753f87f4ce6969c"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9862811b403063765b03e716dac0fda8fdbe78b675cd947ed5873506448acea4"}, - {file = "ruff-0.1.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58826efb8b3efbb59bb306f4b19640b7e366967a31c049d49311d9eb3a4c60cb"}, - {file = "ruff-0.1.4-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:fdfd453fc91d9d86d6aaa33b1bafa69d114cf7421057868f0b79104079d3e66e"}, - {file = "ruff-0.1.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:e8791482d508bd0b36c76481ad3117987301b86072158bdb69d796503e1c84a8"}, - {file = "ruff-0.1.4-py3-none-musllinux_1_2_i686.whl", hash = "sha256:01206e361021426e3c1b7fba06ddcb20dbc5037d64f6841e5f2b21084dc51800"}, - {file = "ruff-0.1.4-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:645591a613a42cb7e5c2b667cbefd3877b21e0252b59272ba7212c3d35a5819f"}, - {file = "ruff-0.1.4-py3-none-win32.whl", hash = "sha256:99908ca2b3b85bffe7e1414275d004917d1e0dfc99d497ccd2ecd19ad115fd0d"}, - {file = "ruff-0.1.4-py3-none-win_amd64.whl", hash = "sha256:1dfd6bf8f6ad0a4ac99333f437e0ec168989adc5d837ecd38ddb2cc4a2e3db8a"}, - {file = "ruff-0.1.4-py3-none-win_arm64.whl", hash = "sha256:d98ae9ebf56444e18a3e3652b3383204748f73e247dea6caaf8b52d37e6b32da"}, - {file = "ruff-0.1.4.tar.gz", hash = "sha256:21520ecca4cc555162068d87c747b8f95e1e95f8ecfcbbe59e8dd00710586315"}, + {file = "ruff-0.1.8-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:7de792582f6e490ae6aef36a58d85df9f7a0cfd1b0d4fe6b4fb51803a3ac96fa"}, + {file = "ruff-0.1.8-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:c8e3255afd186c142eef4ec400d7826134f028a85da2146102a1172ecc7c3696"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff78a7583020da124dd0deb835ece1d87bb91762d40c514ee9b67a087940528b"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd8ee69b02e7bdefe1e5da2d5b6eaaddcf4f90859f00281b2333c0e3a0cc9cd6"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a05b0ddd7ea25495e4115a43125e8a7ebed0aa043c3d432de7e7d6e8e8cd6448"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:e6f08ca730f4dc1b76b473bdf30b1b37d42da379202a059eae54ec7fc1fbcfed"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f35960b02df6b827c1b903091bb14f4b003f6cf102705efc4ce78132a0aa5af3"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7d076717c67b34c162da7c1a5bda16ffc205e0e0072c03745275e7eab888719f"}, + {file = "ruff-0.1.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6a21ab023124eafb7cef6d038f835cb1155cd5ea798edd8d9eb2f8b84be07d9"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:ce697c463458555027dfb194cb96d26608abab920fa85213deb5edf26e026664"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:db6cedd9ffed55548ab313ad718bc34582d394e27a7875b4b952c2d29c001b26"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_i686.whl", hash = "sha256:05ffe9dbd278965271252704eddb97b4384bf58b971054d517decfbf8c523f05"}, + {file = "ruff-0.1.8-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:5daaeaf00ae3c1efec9742ff294b06c3a2a9db8d3db51ee4851c12ad385cda30"}, + {file = "ruff-0.1.8-py3-none-win32.whl", hash = "sha256:e49fbdfe257fa41e5c9e13c79b9e79a23a79bd0e40b9314bc53840f520c2c0b3"}, + {file = "ruff-0.1.8-py3-none-win_amd64.whl", hash = "sha256:f41f692f1691ad87f51708b823af4bb2c5c87c9248ddd3191c8f088e66ce590a"}, + {file = "ruff-0.1.8-py3-none-win_arm64.whl", hash = "sha256:aa8ee4f8440023b0a6c3707f76cadce8657553655dcbb5fc9b2f9bb9bee389f6"}, + {file = "ruff-0.1.8.tar.gz", hash = "sha256:f7ee467677467526cfe135eab86a40a0e8db43117936ac4f9b469ce9cdb3fb62"}, ] [[package]] @@ -1861,19 +1956,19 @@ jeepney = ">=0.6" [[package]] name = "setuptools" -version = "65.6.3" +version = "69.0.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, + {file = "setuptools-69.0.2-py3-none-any.whl", hash = "sha256:1e8fdff6797d3865f37397be788a4e3cba233608e9b509382a2777d25ebde7f2"}, + {file = "setuptools-69.0.2.tar.gz", hash = "sha256:735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "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-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] (>=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" @@ -1888,36 +1983,32 @@ files = [ [[package]] name = "snowflake-connector-python" -version = "3.0.4" +version = "3.6.0" description = "Snowflake Connector for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "snowflake-connector-python-3.0.4.tar.gz", hash = "sha256:f0253a58909dcf57bcde4ce1ef613fe346fc18bc01ba20101d1499ac22f6d9b2"}, - {file = "snowflake_connector_python-3.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:75810c8964ff34e3fdced982c9bdf4b73335436585bcb538672f660ea14e74bd"}, - {file = "snowflake_connector_python-3.0.4-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:dfdad463fe68c3372d9a80018452360d11dba455865613fd94850195fdd9c989"}, - {file = "snowflake_connector_python-3.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:099dca938a52419be3ce4d332f7af2587f1316b2a63b109b2e1e18aac00e9ba9"}, - {file = "snowflake_connector_python-3.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23f2f28702f59d04bd28eb27a0a87b5270b263f152ffa046b6ff058c09c0a945"}, - {file = "snowflake_connector_python-3.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:48c3a1026ab83ab6205716fb9ecdf707534deb28b7891ea0708e57f8fef8472b"}, - {file = "snowflake_connector_python-3.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c71f2db386de6cba165aa2b758aeae691f2319a9a280a1cd89937d87db89bf86"}, - {file = "snowflake_connector_python-3.0.4-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:91e75ff12d47a0ec0015aec7c14f7d8bb2b0100a287c412ade11a78c5a1037b1"}, - {file = "snowflake_connector_python-3.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcab2f51a143f9ea808dfeaa5bd72fc37149546f93bffa198132c333c4da8f00"}, - {file = "snowflake_connector_python-3.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34646dde0ce84d03632734597577a4bf1aec5d6dee7edefb7aa71d6d6236a332"}, - {file = "snowflake_connector_python-3.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:c61602bd9447988d24f95eafd0fc1d5af498e17e8669e81eef1b8699c1530120"}, - {file = "snowflake_connector_python-3.0.4-cp37-cp37m-macosx_11_0_x86_64.whl", hash = "sha256:834227edb0608d7544404fa35d857983a1ab373d0781a229c3572de6227cf5d5"}, - {file = "snowflake_connector_python-3.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:08b2041c6e33379cb4ec482b4e6ba3106580abc5c89f8647b6c99c203fb910ac"}, - {file = "snowflake_connector_python-3.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b5b1c89cb4b6d04bcd2e7a378cae6ab9915bdd8bb0ef6dc4f27533b70c3eb3cb"}, - {file = "snowflake_connector_python-3.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:d994540b8eb68c25bea917ab6a933dd775939b4a4beec34b0b942400f959cd7a"}, - {file = "snowflake_connector_python-3.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bb7b10842053b8f478baadbb7ea7160dc10c7f7085d69cb7a6e240afe231b078"}, - {file = "snowflake_connector_python-3.0.4-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:61b6e04853029302d90d6ad3d3c189d1ed22f202c34e60fb3d33fb8957fb3661"}, - {file = "snowflake_connector_python-3.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebaabef48dfe84fe4a705d42fd29c464c6d71ab1fc2b5606409672586ce6697f"}, - {file = "snowflake_connector_python-3.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4514bd5ff67099af29b23a6c0a2c3e3634a023f4bba4324fd2a9763a61c448d"}, - {file = "snowflake_connector_python-3.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:106efd608c243daac8f75067c716805aa5cc902d39538918edaf5661b622b4a1"}, - {file = "snowflake_connector_python-3.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:acb0c2b825d6489feadd189bb16ad416da6df9bc39e5786a910e00cc19c3955a"}, - {file = "snowflake_connector_python-3.0.4-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:b68ce7fd755a43149caafe3f5738628606ee03557d3030881c9a5f08d1754c0f"}, - {file = "snowflake_connector_python-3.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f7c79c0a3fb2c3490f46f23ac4ae1915c2a47e26c4b2df8b5d4116877c4c61"}, - {file = "snowflake_connector_python-3.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:17692755b8e79b1ad489b7e5966bb819c530c2239cb309c0b6c728fa135937f8"}, - {file = "snowflake_connector_python-3.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:3af27737afdfc795b19066b6365e315fab314936b2ea71b486e8fd476834c249"}, + {file = "snowflake-connector-python-3.6.0.tar.gz", hash = "sha256:15667a918780d79da755e6a60bbf6918051854951e8f56ccdf5692283e9a8479"}, + {file = "snowflake_connector_python-3.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4093b38cf9abf95c38119f0b23b07e23dc7a8689b956cd5d34975e1875741f20"}, + {file = "snowflake_connector_python-3.6.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:cf5a964fe01b177063f8c44d14df3a72715580bcd195788ec2822090f37330a5"}, + {file = "snowflake_connector_python-3.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55a6418cec585b050e6f05404f25e62b075a3bbea587dc1f903de15640565c58"}, + {file = "snowflake_connector_python-3.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7c76aea92b87f6ecd604e9c934aac8a779f2e20f3be1d990d53bb5b6d87b009"}, + {file = "snowflake_connector_python-3.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:9dfcf178271e892e64e4092b9e011239a066ce5de848afd2efe3f13197a9f8b3"}, + {file = "snowflake_connector_python-3.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4916f9b4a0efd7c96d1fa50a157e05907b6935f91492cca7f200b43cc178a25e"}, + {file = "snowflake_connector_python-3.6.0-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:f15024c66db5e87d359216ec733a2974d7562aa38f3f18c8b6e65489839e00d7"}, + {file = "snowflake_connector_python-3.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bcbd3102f807ebbbae52b1b5683d45cd7b3dcb0eaec131233ba6b156e8d70fa4"}, + {file = "snowflake_connector_python-3.6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7662e2de25b885abe08ab866cf7c7b026ad1af9faa39c25e2c25015ef807abe3"}, + {file = "snowflake_connector_python-3.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:d1fa102f55ee166cc766aeee3f9333b17b4bede6fb088eee1e1f022df15b6d81"}, + {file = "snowflake_connector_python-3.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fde1e0727e2f23c2a07b49b30e1bc0f49977f965d08ddfda10015b24a2beeb76"}, + {file = "snowflake_connector_python-3.6.0-cp38-cp38-macosx_11_0_x86_64.whl", hash = "sha256:1b51fe000c8cf6372d30b73c7136275e52788e6af47010cd1984c9fb03378e86"}, + {file = "snowflake_connector_python-3.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7a11699689a19916e65794ce58dca72b8a40fe6a7eea06764931ede10b47bcc"}, + {file = "snowflake_connector_python-3.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d810be5b180c6f47ce9b6f989fe64b9984383e4b77e30b284a83e33f229a3a82"}, + {file = "snowflake_connector_python-3.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b5db47d4164d6b7a07c413a46f9edc4a1d687e3df44fd9d5fa89a89aecb94a8e"}, + {file = "snowflake_connector_python-3.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bf8c1ad5aab5304fefa2a4178061a24c96da45e3e3db9d901621e9953e005402"}, + {file = "snowflake_connector_python-3.6.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1058ab5c98cc62fde8b3f021f0a5076cb7865b5cdab8a9bccde0df88b9e91334"}, + {file = "snowflake_connector_python-3.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b93f55989f80d69278e0f40a7a1c0e737806b7c0ddb0351513a752b837243e8"}, + {file = "snowflake_connector_python-3.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:50dd954ea5918d3242ded69225b72f701963cd9c043ee7d9ab35dc22211611c8"}, + {file = "snowflake_connector_python-3.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4ad42613b87f31441d07a8ea242f4c28ed5eb7b6e05986f9e94a7e44b96d3d1e"}, ] [package.dependencies] @@ -1925,24 +2016,24 @@ asn1crypto = ">0.24.0,<2.0.0" certifi = ">=2017.4.17" cffi = ">=1.9,<2.0.0" charset-normalizer = ">=2,<4" -cryptography = ">=3.1.0,<41.0.0" +cryptography = ">=3.1.0,<42.0.0" filelock = ">=3.5,<4" idna = ">=2.5,<4" -oscrypto = "<2.0.0" packaging = "*" -pycryptodomex = ">=3.2,<3.5.0 || >3.5.0,<4.0.0" +platformdirs = ">=2.6.0,<4.0.0" pyjwt = "<3.0.0" pyOpenSSL = ">=16.2.0,<24.0.0" pytz = "*" requests = "<3.0.0" sortedcontainers = ">=2.4.0" +tomlkit = "*" typing-extensions = ">=4.3,<5" -urllib3 = ">=1.21.1,<1.27" +urllib3 = {version = ">=1.21.1,<2.0.0", markers = "python_version < \"3.10\""} [package.extras] -development = ["Cython", "coverage", "more-itertools", "numpy (<1.25.0)", "pendulum (!=2.1.1)", "pexpect", "pytest (<7.4.0)", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist", "pytzdata"] -pandas = ["pandas (>=1.0.0,<2.1.0)", "pyarrow (>=10.0.1,<10.1.0)"] -secure-local-storage = ["keyring (!=16.1.0,<24.0.0)"] +development = ["Cython", "coverage", "more-itertools", "numpy (<1.27.0)", "pendulum (!=2.1.1)", "pexpect", "pytest (<7.5.0)", "pytest-cov", "pytest-rerunfailures", "pytest-timeout", "pytest-xdist", "pytzdata"] +pandas = ["pandas (>=1.0.0,<2.2.0)", "pyarrow"] +secure-local-storage = ["keyring (!=16.1.0,<25.0.0)"] [[package]] name = "sortedcontainers" @@ -1957,15 +2048,20 @@ files = [ [[package]] name = "sqlparse" -version = "0.4.3" +version = "0.4.4" description = "A non-validating SQL parser." optional = false python-versions = ">=3.5" files = [ - {file = "sqlparse-0.4.3-py3-none-any.whl", hash = "sha256:0323c0ec29cd52bceabc1b4d9d579e311f3e4961b98d174201d5622a23b85e34"}, - {file = "sqlparse-0.4.3.tar.gz", hash = "sha256:69ca804846bb114d2ec380e4360a8a340db83f0ccf3afceeb1404df028f57268"}, + {file = "sqlparse-0.4.4-py3-none-any.whl", hash = "sha256:5430a4fe2ac7d0f93e66f1efc6e1338a41884b7ddf2a350cedd20ccc4d9d28f3"}, + {file = "sqlparse-0.4.4.tar.gz", hash = "sha256:d446183e84b8349fa3061f0fe7f06ca94ba65b426946ffebe6e3e8295332420c"}, ] +[package.extras] +dev = ["build", "flake8"] +doc = ["sphinx"] +test = ["pytest", "pytest-cov"] + [[package]] name = "tabulate" version = "0.9.0" @@ -2002,6 +2098,17 @@ files = [ {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, ] +[[package]] +name = "tomlkit" +version = "0.12.3" +description = "Style preserving TOML library" +optional = false +python-versions = ">=3.7" +files = [ + {file = "tomlkit-0.12.3-py3-none-any.whl", hash = "sha256:b0a645a9156dc7cb5d3a1f0d4bab66db287fcb8e0430bdd4664a095ea16414ba"}, + {file = "tomlkit-0.12.3.tar.gz", hash = "sha256:75baf5012d06501f07bee5bf8e801b9f343e7aac5a92581f20f80ce632e6b5a4"}, +] + [[package]] name = "trino" version = "0.314.0" @@ -2024,57 +2131,66 @@ kerberos = ["requests-kerberos"] sqlalchemy = ["sqlalchemy (>=1.3,<2.0)"] tests = ["click", "httpretty (<1.1)", "pytest", "pytest-runner", "requests-kerberos", "sqlalchemy (>=1.3,<2.0)"] +[[package]] +name = "types-python-dateutil" +version = "2.8.19.14" +description = "Typing stubs for python-dateutil" +optional = false +python-versions = "*" +files = [ + {file = "types-python-dateutil-2.8.19.14.tar.gz", hash = "sha256:1f4f10ac98bb8b16ade9dbee3518d9ace017821d94b057a425b069f834737f4b"}, + {file = "types_python_dateutil-2.8.19.14-py3-none-any.whl", hash = "sha256:f977b8de27787639986b4e28963263fd0e5158942b3ecef91b9335c130cb1ce9"}, +] + [[package]] name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" +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 = "tzdata" -version = "2022.7" +version = "2023.3" description = "Provider of IANA time zone data" optional = false python-versions = ">=2" files = [ - {file = "tzdata-2022.7-py2.py3-none-any.whl", hash = "sha256:2b88858b0e3120792a3c0635c23daf36a7d7eeeca657c323da299d2094402a0d"}, - {file = "tzdata-2022.7.tar.gz", hash = "sha256:fe5f866eddd8b96e9fcba978f8e503c909b19ea7efda11e52e39494bad3a7bfa"}, + {file = "tzdata-2023.3-py2.py3-none-any.whl", hash = "sha256:7e65763eef3120314099b6939b5546db7adce1e7d6f2e179e3df563c70511eda"}, + {file = "tzdata-2023.3.tar.gz", hash = "sha256:11ef1e08e54acb0d4f95bdb1be05da659673de4acbd21bf9c69e94cc5e907a3a"}, ] [[package]] name = "tzlocal" -version = "4.2" +version = "5.2" description = "tzinfo object for the local timezone" optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "tzlocal-4.2-py3-none-any.whl", hash = "sha256:89885494684c929d9191c57aa27502afc87a579be5cdd3225c77c463ea043745"}, - {file = "tzlocal-4.2.tar.gz", hash = "sha256:ee5842fa3a795f023514ac2d801c4a81d1743bbe642e3940143326b3a00addd7"}, + {file = "tzlocal-5.2-py3-none-any.whl", hash = "sha256:49816ef2fe65ea8ac19d19aa7a1ae0551c834303d5014c6d5a62e4cbda8047b8"}, + {file = "tzlocal-5.2.tar.gz", hash = "sha256:8d399205578f1a9342816409cc1e46a93ebd5755e39ea2d85334bea911bf0e6e"}, ] [package.dependencies] "backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} -pytz-deprecation-shim = "*" tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] -devenv = ["black", "pyroma", "pytest-cov", "zest.releaser"] -test = ["pytest (>=4.3)", "pytest-mock (>=3.3)"] +devenv = ["check-manifest", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] [[package]] name = "unittest-parallel" -version = "1.5.3" +version = "1.6.1" description = "Parallel unit test runner with coverage support" optional = false python-versions = "*" files = [ - {file = "unittest-parallel-1.5.3.tar.gz", hash = "sha256:32182bb2230371d651e6fc9795ddf52c134eb36f5064dc339fdbb5984a639517"}, - {file = "unittest_parallel-1.5.3-py3-none-any.whl", hash = "sha256:5670c9eca19450dedb493e9dad2ca4dcbbe12e04477d934ff6c92071d36bace7"}, + {file = "unittest-parallel-1.6.1.tar.gz", hash = "sha256:bbd8aee80eab882cbf1a0acf397658bb2b9beaa4ccf68cf78376f6a1f3d3688f"}, + {file = "unittest_parallel-1.6.1-py3-none-any.whl", hash = "sha256:e5a8885e3df0e275d1cea579e91386a3b423922946eca6b175ad1fd06c3ea2e1"}, ] [package.dependencies] @@ -2082,29 +2198,29 @@ coverage = ">=5.1" [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.18" description = "HTTP library with thread-safe connection pooling, file post, and more." optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, + {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, ] [package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] [[package]] name = "vertica-python" -version = "1.3.2" +version = "1.3.7" description = "Official native Python client for the Vertica database." optional = false python-versions = ">=3.7" files = [ - {file = "vertica-python-1.3.2.tar.gz", hash = "sha256:3664f0610c16cd5d606b8bbe5c0a50359b1e979d9383c07967bbd49d4990a02f"}, - {file = "vertica_python-1.3.2-py3-none-any.whl", hash = "sha256:e0096e430c0f8249dae0e15c1dd0d28a4e7fcd5216e12643d48eadc8e1cb0540"}, + {file = "vertica-python-1.3.7.tar.gz", hash = "sha256:2a5f0d0111d3cc466b87923ffd3c262132a9fa0e38964e43eef90a3ccda57452"}, + {file = "vertica_python-1.3.7-py3-none-any.whl", hash = "sha256:e8d3ceaa2b7a61a861590c8b5d822d2d71afad9ff3399fc67ee9888c5565ff74"}, ] [package.dependencies] @@ -2113,19 +2229,19 @@ six = ">=1.10.0" [[package]] name = "virtualenv" -version = "20.24.6" +version = "20.25.0" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.6-py3-none-any.whl", hash = "sha256:520d056652454c5098a00c0f073611ccbea4c79089331f60bf9d7ba247bb7381"}, - {file = "virtualenv-20.24.6.tar.gz", hash = "sha256:02ece4f56fbf939dbbc33c0715159951d6bf14aaf5457b092e4548e1382455af"}, + {file = "virtualenv-20.25.0-py3-none-any.whl", hash = "sha256:4238949c5ffe6876362d9c0180fc6c3a824a7b12b80604eeb8085f2ed7460de3"}, + {file = "virtualenv-20.25.0.tar.gz", hash = "sha256:bf51c0d9c7dd63ea8e44086fa1e4fb1093a31e963b86959257378aef020e1f1b"}, ] [package.dependencies] distlib = ">=0.3.7,<1" filelock = ">=3.12.2,<4" -platformdirs = ">=3.9.1,<4" +platformdirs = ">=3.9.1,<5" [package.extras] docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] @@ -2133,29 +2249,29 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess [[package]] name = "wcwidth" -version = "0.2.5" +version = "0.2.12" description = "Measures the displayed width of unicode strings in a terminal" optional = false python-versions = "*" files = [ - {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, - {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, + {file = "wcwidth-0.2.12-py2.py3-none-any.whl", hash = "sha256:f26ec43d96c8cbfed76a5075dac87680124fa84e0855195a6184da9c187f133c"}, + {file = "wcwidth-0.2.12.tar.gz", hash = "sha256:f01c104efdf57971bcb756f054dd58ddec5204dd15fa31d6503ea57947d97c02"}, ] [[package]] name = "zipp" -version = "3.11.0" +version = "3.17.0" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, - {file = "zipp-3.11.0.tar.gz", hash = "sha256:a7a22e05929290a67401440b39690ae6563279bced5f314609d9d03798f56766"}, + {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, + {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] -testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] [extras] clickhouse = ["clickhouse-driver"] @@ -2174,4 +2290,4 @@ vertica = ["vertica-python"] [metadata] lock-version = "2.0" python-versions = "^3.8.0" -content-hash = "b7f8880be9658fa523ff4737d1fdefd09d124ab09fac22fa9ec6a83454940c1d" +content-hash = "54f5248145c8920e27de3e781bb01461b3f68bc6335d75d8793b19dffd5f4163" diff --git a/pyproject.toml b/pyproject.toml index 1b380dde..edc3f0b8 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -56,10 +56,10 @@ psycopg2 = "*" snowflake-connector-python = ">=3.0.2,<4.0.0" cryptography = "*" trino = "^0.314.0" -presto-python-client = "*" +presto-python-client = "0.8.3" clickhouse-driver = "*" vertica-python = "*" -duckdb = "^0.7.0" +duckdb = "^0.9.0" dbt-core = "^1.0.0" ruff = "^0.1.4" # google-cloud-bigquery = "*" diff --git a/tests/dbt_artifacts/jaffle_shop.duckdb b/tests/dbt_artifacts/jaffle_shop.duckdb index 5c1ad7d97678c4ed204c75e5e76a7aa9ce99cc4c..b0899b5f32b35b8e12da6cb2236d98a05a7b6b6a 100644 GIT binary patch literal 3158016 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 z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL uKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|00D&nf@c#o=FM^o> literal 4730880 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 z7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EE zfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u z1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4Qe zMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-ok zU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u z0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r z5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE> z7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EE zfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u z1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4Qe zMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-ok zU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u z0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r z5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE> z7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EE zfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u z1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4Qe zMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-okU<4QeMt~7u1Q-EEfDvE>7y(9r5nu!u0Y-ok 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

    o+ ziCWWkimj;r+VJqu>X+N*LYo4VXgjlV^pinfF}ADCxJ$%={wEB{g3 zle(Y2o0S4}6x$y6QUc}dmM$#gqg&&VT->yKsLw1ZP&x;63GsarIa!gA`g@&ZVMD>={WjzYcT_t5Wp`r8KwqngV?g587D zvR|sUdj`LCPJ~Xo>!~V`y;CmQZFSu36qR&4;kG!5Zcej1hm^1t=(&_KoN|zyj{^#y<6#5;7$@e>&b%qoixb|d%eW6IMF*qoP^=m^=5toXabFf%Wd(NKzQZcpW5&Au-1hEh zM{Vs+wa2J3{>ea4#XPw(k--F62IXoOBkFy{JyU-^*^{eK?U=E6&CKZzily49xME$n zPOjNmoN8k+8vCLx#$LPh^i?TYZMR$UwZnMgqD!)Iucxe_H-M4U#!GyCxVA-KT|IR3 z?6cB!?yI?(tsb&(lKeHV!pNi8-5PCfs7tif)LmZZk?EkCp_V-BDUn?U^+rct53=Id z$c{BpJ73{t*5yAQ?ey(_ zz1)g!ARZ_m8mQwQs-u(fzv&0!{`QyYn~XJre&;05ueM zOR0Fb`-kc*i>)uk9)VqV%r^(j9)T>zkR(JbjHI33U9l7Dwi`^`v$f~ET zMyRDL*U?_rnaMQMqU`lI|3+Mui2d!=&yD2nc6HsoftKH6U8v`1T1t;i=yhwbYcsk{ zxW26PcUOq@qLzEvsc7Nu0GazyB}Dwdr=95+Lw=bb%Ic(EUeYU)dZ3i(m+92Za4c`K zn|uDvGNi2V$#hRvHxC7xT4Yn5xHNdTWz=+6>n;M-LX#4vj2_ja#!T$N(z1MH=s1-z|&nLF;d{$jhE?8w<@o498 zdta6V?EpkIuKDtnDzmaI0kv4cf?!aWllYPmO+E{@PWLFp1nHF z@$qilzq*WBcVbyQlYW)x?2%W7vF_QsMVh z7x5N}kC*j^fYpWGKMtA|xxl;Wex&p4arQYIUT1QY)xYrIhU{(?efZ#auKyne_TG`JP#7#FmdUc7Ln%Su7s82A|D&1~T3R2SSTFp}ta z39blGRg|-}0_U`$KVvN%q)40Z>Eu%*sRxC#n!dSD!I{PU#G)#%=6WGBrjgw(bv)zL z9U{E6cJb2XE@$Fz^)aw4H@$jL>v0y9L1{96QvJ8z@VOkmVz}ItvT}*{HyTw$ z#j(MBhT3*LtXMj8r-Jq0wu~%9d5ah`SxU1@6>4RmSWGkPAzfF~bf`Hk(Y09_vy+=F z(>Ctp-|~~SG`&6SSjn1a=3ka+rn#KJ5|wL<#)op%ge-cFWx;A?*@;XVK(XE5+a1eW z9-sct<1m=8L+^Kk>QeZoK&1vg%&Tt&&z}`Grq?{<+V+Xup@2X?3vox^U8m z1%Qz!CCl=^zm|AP88@j^uBKKQp?lxFNh>p2?K}C^*mu+GTc$qx4qj>Xo!mn2yLgu<*!hgRZ=990MO%Tnx^}sG zY8yT7RLYFVGEClAC`gjE=GMre4mp`2cyKDI+dDu}5fuaZQi5&vR_$fysgHIwc1&2* zc)N+XvK&Sw!Qw8;bSS)>LO-a5wgkA zmyhJF6|+!aJXeV_9_=-v=jCmeUAcr_OUp)2cI0O}d{fBHTcc_yrUy-Owm{wz(kGJb zf{hsmo85nruMc0U*VCL@x0)qHoy#2CB&cxaFF&rbds}$Onuk7aRm__Oihw%Q*6tuy zUKf`UrwrueORQ@-8Y@)|3A1w{>hzXc)KcHUS+~$NVymzk7dVmE2y>DmGUemWS&H9O zUv8GeWwD?|t5wP`B|vGV(40?7&T96f;j1Jlqa;b@0cxP8)4sDIudqojO5qR}GmXfK zNWoUD)zOUH{#-F$R+;WhJHiX#){CPpdN?k_@O(N}zQ(N>IElY$_FwWj#G*BU1_P}l8DgLiD6??I z`Rc{Xy#@+ly4-@D_lu#YQ&7U|(iSi3RUtZ;dD|^#iyEpW_EzZh3P`X-l&{dKzQC<5 z?mI;Oa$DBC+s?xrJ=1Z8gI=2gr=Pcr9aT2}_wLAfEXZ3DXcI{6=?G2I>udt3MyW%LP z*KMg&vsb-_q{gGV5asnU))_g%ijF8NJhf6y=hNrxO5Wf&aW7o)yt4L`l&7{QSfWXC z%W2fZDJZa2>57-!nD4GdI9@iTQ_ySd`jof4R42WH>?nNv<7ytETUFW2$|{8JKTOlB zwUp*qEoW7}`MFqU1TS2^`c#)4dsWA7$^291ed-IW2i}57$?+7F$XJ@DJYO$qZcMFUNS3# z6z@;vJ3z}%jAaR=V{g1@ZQ8Y~mn5g#_O`k#sY%7qJE<{^H~EK=o`!74wepfJ`XEnX@s0z}%e z3v2Rc%U$bf#iEs_i%)eq_^#@o8mMMpnqJq7>+&>yt<7{ z=MZE;XvH?vB|X(vOl%9r+0n^1SybfCs#3Piv^5&bF|)m$u_|JsaHjd2$Ex-gh|#6|t0{c-`~7+3MykvDR&Vc%h3C$FS!h!bz1E z>7vc3)7hy1tiFP(-U!7B8!D|ItEgTgz=V^7qWqp{1&%3W`($RSKCVRiJCL)D{6fFPc1$KO)Vf`%tNv`C3ct=-9w zoXVD^nes6YvCOmJEjfbn+Q!b&$X;5jWn}%ar+9waz{H~dyP~?!tmBq54FCLoHaKoFlv5YL}N`Vw(zWkoRrA=aB=b3s$fq4F8b?p5>}dZ?jX^TRzzji zM%{B4MzTI0ytT0}XGm8!wzg!nD)(lr=uASzjO6WX=werFrP)V!5F{VD_?*7sA^H4gKdJ8e zklREy<$4iwTu2@BSC?7pBBm}avEP@VYPmUtIyQgrFs<)=H|)37Tal9#PleG!noD$iZxDZ3BQw<+A4 zNAhOPJsstf&a+me)q7=5Aa!1F*DC--#)T2)nAcjbi`eTJm$y)61oxpIH| zUKm<7=5E{Ay40G*YU1V0;l)c`mQnKxZZ2i3Y2#fFvn~E6rfFMwUrJLmAEYi`@MExS zfp-Mdwe{D0$X~dI{_4dp2Wson7M-QXazKsn z+3fo#ooPIwQ^wPC&hd~LefxSzWEVVdvvRMi37Jg(74mJMVg2?l?sr89Z@VyD$xn`P^V>ac-*duDuh zdw(2X=!*Coq)y2=aC_5eA)5tHdYZKCQrd{9=uPS{RCXyff$W~8vjuftZYh%cT((C$ zTV~ny=B~bUee>?NT&!N)S2rH*sP7`0O)|TGCFNXsQ6G(z&#Q_EGi_1N%BS9s*L6Y7 zj9%BD4lE0>Lp8a;{pRjDxx4-5?*4}Cs2oOP*U@D09`40rmHj4XIiy0y?rQY+af^eEcp zix;{abMZ@_yu7`x-odJ=u(_96)Kx3IUo{Owx2mBwP`1(pG%V^9!ZnrnKcjRNHW7#Lx%gIh1*V`$!GB{OOOH*~FTw&`fYxh#^ zEZaqOUbK;*bXFI;tVH{{YKlrtvCllrqR<=B{ffLF);z6mZ%IO&{EH^FWnW}O))aQP zxh{7U($i#0=}sW~LdoXd(eB~O$IhwVVpoO=@&(^5IknNXP|Hmdsne^n97{fyRn9_fJBV_W(U-r-v1fZYg@E<0NJStqZNC~OC45JrcaPv!z!)&6LRimIMVE>&xDQbn(5$lXZU z5wjK5XIxjePs!v;;<=mMvwK~C###=x9mx#h*67amuCC2;#nZ;_og?|E=k;ZoXBH>u zvqJ`>uZ%X24oA-v#acO-f#JP(3$t(#|;?d7#r-}ClLubkWREBR%%x{}>b zUKg<=dF{Z_v^dO|)eC!qK?gCl%0{71^l2*jDvhe@Ciybpl^LwM?^cGzc3(Q9<;UnT zFYssCbKT7(?|74HB1Ab)nf*5o@9qT%3x!0J@zJe&+lTAM-}=w)-6~pj4}zPbkI0?H zFMj&jPd}4=%ly7T$OMQ4vHijjc`}=zbG6Kl)+&o(x(G7CeXsRp)r!I?j=I^PhOQUx+ zwesuSNUgKnIsbfJC%Ljfsb~XDvPV;88;)5n*cq8imoIeLl?m=Rb(f?Ar-g5T%lgI_ zk$rz|J1m#-ja3V4T4mKxx@&mGyNGpm(GAb*ZhkY6i8i+X>GFtB02_TNLOY1*DS+E?c~LHuqRuqJC3GRc;S_T`nS$QdV@+*Kcn~_hqG;K0+#@E%s`CRmY=t zD^0Oiom+M+S--&~1yOzHpd$Knt648%wmVy|*E%aBc|W;mt67(ydb;Mb_2p}_>^-Ei zF*Q=dK(EY}90w}8HnP?O_b@=-N{YHpuEg|>m*3E*`UYp$w{JGeHTF??K!*(nPM5-eoDJ@@9yv z8_VEIW(o3I(nyA6`?6^vVWnRX+aio;pu*T@UCO-bkeni~9;KX1|8#ip#=0DA%EsJs z!s*~(?_ecYSC86{FWEa7HEO^H) zYmb7K$V?4CqnjXUfwXkf4$0JOqmXBr&>dYoZ!W6Apv_ciYvjJ=`#EfRc3u_C zMsscpl+8pX#8=e9urzw()q{=g@hEJEM9pm7z>W zD+e-7EbLS%DTW2tmrXM->zB3!XAM&kLRVE)`O1Ri5Uv_&$mQ~@SIq4|0`IXh=C-)AYkwszkt*cUrsBhK1CZ-raIokw=Z4Yk$gyES3Vgb*=MSbH(87OSoD@Dnk-SeqJ4^a&u-Un zy3Q>%)GGD&szB(Xzq|LkAEsD6*g7nFRy&S;;`t|j>WR-kaa&p^)6{k79v7<%ymDdf zT9<1RP2=K~vdn6LVs&)5y)%B&$ZNF_5DQST5Kw3tFGt2bF9gLv$nGi?Z#x>V#rgT^ z+N9C#4Oy64U(Xa=wBm6|UIdY>&9{2i?M|3FiCbPg%1?-7$#J(FLbnAkF%fm+MJMo> zl_4`?F&IwtDWNMDuB>%wA`V9TI~$w+dWf|fEXy;29a@PXL`5^qb~%)^Q~gO;f8 zVyY{#WgB{T^tv(Tdq(bjs@#lZlJa&Wsg*g^xW~3JHgyZu$Xr~LUZ_taW789DWvt`E zm$|(Ca5Rn=zR+iFiP5tH(+XvRv$IrsSajbU`d5oQ#ae^(dU=5^x#ZMmF__0*-Oy7Yr#YNCx)kukD^GSy8DW-M&v4PAV~q)2Ixm!rU= zEfuyv=?+o%oZ~mmb+O5tZ>kGpRg03XC~LvecGa#iE?UXBe67oiGG?{PYeq7w!I}{x zuR}TT15`94g_iN`H|{I4gDItXEE@oMQ&K+^GU4*ZMD|1q3AS*kHKA5z!&!gMi({tv zq7|EKYuCDTKVfpBElQC`!?Y+y-q0l}OiFW$V)SrJhBLs)9KDfDQHJ~hi`ULbPj`|U znoDaJJ9R;_z9qM8dM%Aw^HO$$H8q*Q4kaWAQPJ2qipE=;%!59tp%%&2VzKOL%G$P^ zCQ|RDDi7)ygjpWlxVLZjCF%w?nbf>7>LPxMwko`C+NS>ao2(E1(ObW_^~1k;{R2zp z?-BV?|K7c{^yr_;-&Y;`cPaCYtAG4!uRM0?Z@zT(`o<@Jd;Q+6U;o0H?|k}CCLj6n zD}VQ2{K9*`K1%=SH@g_Y1%AA3pru-~7dIed)vhar-+jecWckk}rN)S7U;_lY_zxM5~f9R!`KKt31KJ?XJde2wi_swr?oY9`wR5%I$nEE|0RzENQ zB-qkB<=gdlxuoen{xS7?UaWpz{zpJpZ-Ff9mbWU&#LdQDgYV-+uP($A9;iM*rr!_Y@5I6Ome~$Xj~9 z{QD94_fh$$u|ZcenTVM_UJ@!=r=U_5IQA*7ok5&Aog3JEKEuJ=#*b@CN}1 zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uWea0`Fd0dh~C9X7}+Y z-+Ju+<4fl65&2R7vcLB&eN~%M@%xxc%TDH?{Jcw2S5AT-+Ae~Kl|MO@%MlASI@liFB1`XX-UN+@tsk>Kc?cy{vMOx zH=kWv`uRs+c>met>p!=0BYpSVla=@W;;Zj@JNX-LucXNnUt2o!=+CXZcj?bteb1{f z^6zQ+_fGkzWPIcCb8r93^Iv=Xr`~@21@r%3Fox$pd-jF5N5A`>k1w4OZ%ZO$>HYHW zN95l}<)4zZzq7G9+8W>8-rpZ>9gGf-4tCe~N4s0wyLUGC?(Of44z2ZQOX>fTmbA3= zUJ2{|eZYN)n3b;X-}~GLG5@E*bNKk@0t+WkwaYsK_wX^)H+28r&?0#LGr@EC_=ADP z4+qap=?miz<5T(U{)O?mZp!>ap+)c<>hos<_we!i0t;1+>i(Ma3*!rUg|fr+e}CX1 zOm9|917F2slY1zy2x&}zKCt*tg6FV&hwdK^{DZ_>9(zel8%eoX$U|2-P{wQj~o?7wHSP_CN_rKDMjuA7O^xESfir)uS-ovQ#4 zT7M`66FfK7gOFobZUS+-{SNKi=dfP5Zp!>W%c^YM)>hSF)2f=EXEJ=F9F2E)2!WLq*gAQ5LB zf3Q)6iOD)kY(NIvaWW1DWNTx2Ehi)fKR(F!0eKmdd?6cqS9@+%-Ku*}-MaPY>Yg6y zztWjH_q@-4A9ZiNng9U;1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+0D-L`u(MLx{vTiUKmO}y-|+T-a6zTBYzq%b2zjR^quhU5rSg^SmCBhR z?VJ#jau13n{UQ8p2oHtuzlHGO5PmU)kA?7mhVaP{ej|i`9>Qls_(BN3AHu&5 z;Y%TWHH7~Z!ha3ne}wQ<2-}14*&#e9gy)5DaR}8AUKYYDL-<=ETphxm5Uvd&*(UoN z^_3gy&Eq#N9a>#(99&##E;o+vuOE8bvBvV!O5?!N(fW1G#$Bt;?60ph*7i4!9&OyPbZD{OSWZT;r`cFpsPC=cv$Sx{!rSZ3g=?0V-dVr1 zv9@^Y(&5#$#p5@wHV@a6lHCTADePZ8x_GP}=D)bQTt9lt>d{6rjsx{$&HBF8q>(*g zTF3VvTR46onO~c0snKrf;GxyEwPYmMH$suUA+LVj@@jLb9$1#@2Ud?Q9c}DwtgI{@ z?anw%XmxqvV3^?kB>63kW-^dQGf3aMxO%vLG-<4dwx_Z3*81V4m1HBN@%hlg%56)B z)>fPCdET(J9HbTwhRxX7GGXvN?ft8ZD=WvZUpjneqq%&1{%}3$+}hqS2iF?+G?KoT z8;zCu!(rn#g6m52csj0RYu_EF5jI{j+{NBF_b(kjd_1jraIyaOmF@=UoQqx>j-5Xa zVIhR%7(YFP`TOSYuYT^5%lGf!`*T0{hj%`3fS%R_M#tp=nr@N z(6v{*_O$Q#{4ZYodq)nxcIYCSOyZv$ zlm066-}B#p`Ayree9!IQ^ZoS$pTFbqo&V&v9iO=A+qHKs-}2Fy{f+A5t>5|4n?8Ep zllQ;x(VMUM%D=zusJwkswlE<{a&xd%@->>bhR9Y`w{iUz|Q8R`!dL(EJ^$>5H~rF+ z|9S1|53huhmFuga)vMd{JJwveV^>&vR|u~O;fxTrhw$L#uXyMe_x;S}H#~It>pK5` zuoKz$Lzlhop~mC4oL|`yiY0ASo*Tl8LU?HiNn1yj>xUW(M;Dil9BC{x8*51)M;a>& zODlIBT0MMZxv`ceHx`ol?rXPHshkz+W|s@HD+Tdntl8zf>`I6~KU$AhzavUWwr_Sh zJ-bp6kH;GqIX6y-*3XI7BjW6ym_KMq%=YM`wAf9h`H;qd5S4ZW??e%MRVwXe-&x_XM{X5QoK~z58 ze@FEnd&TWX%~#^%C(cjK4cR3=zOs2qJRbk3@y6x1Rknq5SMu++%4r3UXrERsWpg5b^&wpE@J!nq+lH-yAB31?QGdg}K0!0k3PYJRa-+<$yN8q!U#+Nk-) z=c8W5ZX`ZF;`~w1f1{4iQT;zF?l4*(HNN=#GOGM2&r#z&I~rfSI%<22IzC42AEVCi zqvjWHuTlNQ=Z8`IcYMBxJ>uv8*e^ZCI_IyO&+le6Ws zy1wU!$8$pHY?b89c}57GZ53ay#^;xKbBx;mVyF1{inl|&9`FD0^+Y_L`1pxkU7jC)nEMhUw!-k-BwG=C2b{- zFAL>z_`XNU0I5H1ZNY4fh7x2)Z9sNP(-v%Yfo9c#_{ z%F(wpnuk`89a&vD)NCv)b#kBjqfj^jE#(nz#PqPaQe1Hxzzg*S#;f?>&#)di@z+{@nRHzp(e#voC(Eb>#Nb{^)!f~pZtM0KPw$|=JDJ!lkKo0akUU2K!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 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 z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!8A7U}vSW{rR_F`FEdP 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
    lSD-dnzT*Vj*f=RZ90kqf_m`h9=rZ$JF}OD=fp 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") == 5 + # 4 with no diffs + assert diff_string.count("No row differences") == 4 + # 1 with a diff + assert diff_string.count(" Rows Added Rows Removed") == 1 + def test_integration_cloud_dbt(self): project_dir = os.environ.get("DATA_DIFF_DBT_PROJ") if project_dir is not None: From e5f1d84e4ee28f68fbaf229cf913ba6184098bec Mon Sep 17 00:00:00 2001 From: Dan Date: Tue, 19 Dec 2023 10:51:13 -0700 Subject: [PATCH 15/15] v0.10.0 --- data_diff/version.py | 2 +- pyproject.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data_diff/version.py b/data_diff/version.py index 90ebae8a..61fb31ca 100644 --- a/data_diff/version.py +++ b/data_diff/version.py @@ -1 +1 @@ -__version__ = "0.10.0rc0" +__version__ = "0.10.0" diff --git a/pyproject.toml b/pyproject.toml index edc3f0b8..3a2f07a6 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "data-diff" -version = "0.10.0rc0" +version = "0.10.0" description = "Command-line tool and Python library to efficiently diff rows across two different databases." authors = ["Datafold "] license = "MIT" pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy