From ad3281e4ab10a6d81e8d7050ed2eb670ef3c566c Mon Sep 17 00:00:00 2001 From: Amrit K Date: Tue, 29 Aug 2023 16:58:10 -0400 Subject: [PATCH 01/10] Fix bug in And/Or and also add example in tutorial --- cyclops/query/ops.py | 133 +++++++++--------- docs/source/tutorials/mimiciv/query_api.ipynb | 50 ++++++- tests/cyclops/query/test_ops.py | 12 +- 3 files changed, 123 insertions(+), 72 deletions(-) diff --git a/cyclops/query/ops.py b/cyclops/query/ops.py index c710f59a4..672212ff9 100644 --- a/cyclops/query/ops.py +++ b/cyclops/query/ops.py @@ -9,6 +9,7 @@ import logging import typing +from abc import ABC, abstractmethod from dataclasses import dataclass, field from datetime import datetime, timedelta @@ -102,25 +103,13 @@ def __post_init__(self) -> None: self.join_table_cols = to_list_optional(self.join_table_cols) -class QueryOp(type): - """Metaclass type for query operations.""" +class QueryOp(ABC): + """Base type for query operations.""" - def __repr__(cls) -> str: - """Return the name of the class.""" - return "QueryOp" - - -def _chain_ops( - query: Subquery, - ops: typing.Union[typing.List[QueryOp], Sequential], -) -> Subquery: - if isinstance(ops, typing.List): - for op_ in ops: - query = op_(query) - if isinstance(ops, Sequential): - query = _chain_ops(query, ops.ops) - - return query + @abstractmethod + def __call__(self, *args: typing.Any, **kwargs: typing.Any) -> Subquery: + """Implement a calling function.""" + pass class Sequential: @@ -131,17 +120,33 @@ class Sequential: """ - def __init__(self, ops: typing.Union[typing.List[QueryOp], Sequential]) -> None: + def __init__(self, *ops: typing.Sequence[typing.Any]) -> None: """Initialize the Sequential class. Parameters ---------- - ops: typing.Union[typing.List[QueryOp], Sequential] - typing.List of query operations to be chained. + ops: tuple of QueryOp or Sequential or list of QueryOp + Query operations to be chained. """ self.ops = ops + def _chain_ops( + self, + query: Subquery, + ops: typing.Sequence[typing.Any], + ) -> Subquery: + for op_ in ops: + if isinstance(op_, Sequential): + query = self._chain_ops(query, op_.ops) + if isinstance(op_, list): + query = self._chain_ops(query, op_) + if isinstance(op_, QueryOp): + query = op_(query) + + return query + + @table_params_to_type(Subquery) def __call__(self, table: TableTypes) -> Subquery: """Execute the query operations on the table. @@ -156,7 +161,7 @@ def __call__(self, table: TableTypes) -> Subquery: Query result after chaining the query operations. """ - return _chain_ops(table, self.ops) + return self._chain_ops(table, self.ops) def _append_if_missing( @@ -243,7 +248,7 @@ def _process_checks( @dataclass -class FillNull(metaclass=QueryOp): +class FillNull(QueryOp): """Fill NULL values with a given value. Parameters @@ -309,7 +314,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Drop(metaclass=QueryOp): +class Drop(QueryOp): """Drop some columns. Parameters @@ -346,7 +351,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Rename(metaclass=QueryOp): +class Rename(QueryOp): """Rename some columns. Parameters @@ -387,7 +392,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Substring(metaclass=QueryOp): +class Substring(QueryOp): """Get substring of a string column. Parameters @@ -438,7 +443,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Reorder(metaclass=QueryOp): +class Reorder(QueryOp): """Reorder the columns in a table. Parameters @@ -474,7 +479,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class ReorderAfter(metaclass=QueryOp): +class ReorderAfter(QueryOp): """Reorder a number of columns to come after a specified column. Parameters @@ -518,7 +523,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Keep(metaclass=QueryOp): +class Keep(QueryOp): """Keep only the specified columns in a table. Parameters @@ -555,7 +560,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Trim(metaclass=QueryOp): +class Trim(QueryOp): """Trim the whitespace from some string columns. Parameters @@ -598,7 +603,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Literal(metaclass=QueryOp): +class Literal(QueryOp): """Add a literal column to a table. Parameters @@ -637,7 +642,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class ExtractTimestampComponent(metaclass=QueryOp): +class ExtractTimestampComponent(QueryOp): """Extract a component such as year or month from a timestamp column. Parameters @@ -690,7 +695,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class AddNumeric(metaclass=QueryOp): +class AddNumeric(QueryOp): """Add a numeric value to some columns. Parameters @@ -762,7 +767,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class AddDeltaConstant(metaclass=QueryOp): +class AddDeltaConstant(QueryOp): """Construct and add a datetime.timedelta object to some columns. Parameters @@ -816,7 +821,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class AddColumn(metaclass=QueryOp): +class AddColumn(QueryOp): """Add a column to some columns. Parameters @@ -895,7 +900,7 @@ def __call__(self, table: TableTypes) -> Subquery: ) -class AddDeltaColumn(metaclass=QueryOp): +class AddDeltaColumn(QueryOp): """Construct and add an interval column to some columns. Parameters @@ -971,7 +976,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Cast(metaclass=QueryOp): +class Cast(QueryOp): """Cast columns to a specified type. Currently supporting conversions to str, int, float, date, bool and timestamp. @@ -1038,7 +1043,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Union(metaclass=QueryOp): +class Union(QueryOp): """Union two tables. Parameters @@ -1080,7 +1085,7 @@ def __call__(self, table: TableTypes) -> Subquery: return select(table).union(select(union_table)).subquery() -class Join(metaclass=QueryOp): +class Join(QueryOp): """Join a table with another table. Parameters @@ -1231,7 +1236,7 @@ def __call__(self, table: TableTypes) -> Subquery: ).subquery() -class ConditionEquals(metaclass=QueryOp): +class ConditionEquals(QueryOp): """Filter rows based on being equal, or not equal, to some value. Parameters @@ -1310,7 +1315,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionGreaterThan(metaclass=QueryOp): +class ConditionGreaterThan(QueryOp): """Filter rows based on greater than (or equal), to some value. Parameters @@ -1394,7 +1399,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionLessThan(metaclass=QueryOp): +class ConditionLessThan(QueryOp): """Filter rows based on less than (or equal), to some value. Parameters @@ -1479,7 +1484,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionRegexMatch(metaclass=QueryOp): +class ConditionRegexMatch(QueryOp): """Filter rows based on matching a regular expression. Parameters @@ -1540,7 +1545,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionIn(metaclass=QueryOp): +class ConditionIn(QueryOp): """Filter rows based on having a value in list of values. Parameters @@ -1619,7 +1624,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionSubstring(metaclass=QueryOp): +class ConditionSubstring(QueryOp): """Filter rows on based on having substrings. Can be specified whether it must have any or all of the specified substrings. @@ -1703,7 +1708,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionStartsWith(metaclass=QueryOp): +class ConditionStartsWith(QueryOp): """Filter rows based on starting with some string. Parameters @@ -1782,7 +1787,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -class ConditionEndsWith(metaclass=QueryOp): +class ConditionEndsWith(QueryOp): """Filter rows based on ending with some string. Parameters @@ -1862,7 +1867,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionInYears(metaclass=QueryOp): +class ConditionInYears(QueryOp): """Filter rows based on a timestamp column being in a list of years. Parameters @@ -1932,7 +1937,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionInMonths(metaclass=QueryOp): +class ConditionInMonths(QueryOp): """Filter rows based on a timestamp being in a list of years. Parameters @@ -2002,7 +2007,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionBeforeDate(metaclass=QueryOp): +class ConditionBeforeDate(QueryOp): """Filter rows based on a timestamp being before some date. Parameters @@ -2069,7 +2074,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionAfterDate(metaclass=QueryOp): +class ConditionAfterDate(QueryOp): """Filter rows based on a timestamp being after some date. Parameters @@ -2136,7 +2141,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class ConditionLike(metaclass=QueryOp): +class ConditionLike(QueryOp): """Filter rows by a LIKE condition. Parameters @@ -2199,7 +2204,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class OR(metaclass=QueryOp): +class Or(QueryOp): """Combine multiple condition query ops using an OR. Parameters @@ -2209,7 +2214,7 @@ class OR(metaclass=QueryOp): Examples -------- - >>> OR([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) + >>> Or([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) """ @@ -2241,8 +2246,8 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class AND(metaclass=QueryOp): - """Combine multiple condition query ops using an AND. +class And(QueryOp): + """Combine multiple condition query ops using an And. Parameters ---------- @@ -2251,7 +2256,7 @@ class AND(metaclass=QueryOp): Examples -------- - >>> AND([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) + >>> And([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) """ @@ -2283,7 +2288,7 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: @dataclass -class Limit(metaclass=QueryOp): +class Limit(QueryOp): """Limit the number of rows returned in a query. Parameters @@ -2318,7 +2323,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class RandomizeOrder(metaclass=QueryOp): +class RandomizeOrder(QueryOp): """Randomize order of table rows. Useful when the data is ordered, so certain rows cannot @@ -2353,7 +2358,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class DropNulls(metaclass=QueryOp): +class DropNulls(QueryOp): """Remove rows with null values in some specified columns. Parameters @@ -2393,7 +2398,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Apply(metaclass=QueryOp): +class Apply(QueryOp): """Apply function(s) to column(s). The function can take a sqlalchemy column object and also return a column object. @@ -2469,7 +2474,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class OrderBy(metaclass=QueryOp): +class OrderBy(QueryOp): """Order, or sort, the rows of a table by some columns. Parameters @@ -2524,7 +2529,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class GroupByAggregate(metaclass=QueryOp): +class GroupByAggregate(QueryOp): """Aggregate over a group by object. Parameters @@ -2639,7 +2644,7 @@ def __call__(self, table: TableTypes) -> Subquery: @dataclass -class Distinct(metaclass=QueryOp): +class Distinct(QueryOp): """Get distinct rows. Parameters diff --git a/docs/source/tutorials/mimiciv/query_api.ipynb b/docs/source/tutorials/mimiciv/query_api.ipynb index 2c555cbdf..e70aa1c2a 100644 --- a/docs/source/tutorials/mimiciv/query_api.ipynb +++ b/docs/source/tutorials/mimiciv/query_api.ipynb @@ -245,12 +245,58 @@ "print(f\"{len(labs)} rows extracted!\")" ] }, + { + "cell_type": "markdown", + "id": "b0a9bc12-dda3-4445-9156-52d295a1c48f", + "metadata": {}, + "source": [ + "## Example 6. Get radiology reports and filter on keywords `lymphadenopathy` and `infectious` occurring together." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f00d270c-d78f-4dc0-8dae-ff4d52958c8b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "admissions_ops = qo.Sequential(\n", + " [\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2009\"),\n", + " ],\n", + ")\n", + "patients = querier.patients()\n", + "admissions = querier.mimiciv_hosp.admissions(\n", + " join=qo.JoinArgs(join_table=patients.query, on=\"subject_id\"),\n", + " ops=admissions_ops,\n", + ")\n", + "radiology_notes_ops = qo.Sequential(\n", + " qo.And(\n", + " [\n", + " qo.ConditionLike(\"text\", \"% lymphadenopathy %\"),\n", + " qo.ConditionLike(\"text\", \"% infectious %\"),\n", + " ],\n", + " ),\n", + ")\n", + "radiology_notes = querier.mimiciv_note.radiology(\n", + " join=qo.JoinArgs(\n", + " join_table=admissions.query,\n", + " on=[\"subject_id\", \"hadm_id\"],\n", + " ),\n", + " ops=radiology_notes_ops,\n", + ").run(limit=100)\n", + "print(f\"{len(radiology_notes)} rows extracted!\")" + ] + }, { "cell_type": "markdown", "id": "801c5ec5-6c7e-44af-8fb7-275d66ca82b0", "metadata": {}, "source": [ - "## Example 6. Get all female patient encounters from year 2015, and return as dask dataframe (lazy evaluation) with 4 partitions (batches) aggregated based on `subject_id`." + "## Example 7. Get all female patient encounters from year 2015, and return as dask dataframe (lazy evaluation) with 4 partitions (batches) aggregated based on `subject_id`." ] }, { @@ -283,7 +329,7 @@ "id": "e1ed2708", "metadata": {}, "source": [ - "## Example 7. Running a raw SQL string." + "## Example 8. Running a raw SQL string." ] }, { diff --git a/tests/cyclops/query/test_ops.py b/tests/cyclops/query/test_ops.py index fd89528c1..1f56c8724 100644 --- a/tests/cyclops/query/test_ops.py +++ b/tests/cyclops/query/test_ops.py @@ -8,10 +8,9 @@ from cyclops.query.omop import OMOPQuerier from cyclops.query.ops import ( - AND, - OR, AddColumn, AddNumeric, + And, Apply, Cast, ConditionAfterDate, @@ -35,6 +34,7 @@ GroupByAggregate, Limit, Literal, + Or, OrderBy, Rename, ReorderAfter, @@ -542,8 +542,8 @@ def test_sequential(visits_input): @pytest.mark.integration_test() def test_or(visits_input): - """Test OR.""" - visits = OR( + """Test Or.""" + visits = Or( [ ConditionEquals("visit_concept_name", "Outpatient Visit"), ConditionLike("visit_concept_name", "%Emergency%"), @@ -558,8 +558,8 @@ def test_or(visits_input): @pytest.mark.integration_test() def test_and(visits_input): - """Test AND.""" - visits = AND( + """Test And.""" + visits = And( [ ConditionEquals("visit_concept_name", "Outpatient Visit"), ConditionLike("visit_concept_name", "%Emergency%", not_=True), From d1d251a2e2bb88a3017a66e4d904eaf9b9f58ede Mon Sep 17 00:00:00 2001 From: Amrit K Date: Tue, 5 Sep 2023 15:33:16 -0400 Subject: [PATCH 02/10] Improve query op class with additional methods --- cyclops/evaluate/metrics/utils.py | 2 +- cyclops/query/interface.py | 2 +- cyclops/query/ops.py | 530 +++++- cyclops/query/util.py | 126 +- cyclops/report/report.py | 3 +- docs/source/conf.py | 1 + docs/source/tutorials/eicu/query_api.ipynb | 42 +- docs/source/tutorials/gemini/query_api.ipynb | 26 +- .../source/tutorials/mimiciii/query_api.ipynb | 44 +- docs/source/tutorials/mimiciv/query_api.ipynb | 64 +- poetry.lock | 1503 +++++++++-------- pyproject.toml | 40 +- tests/cyclops/query/test_ops.py | 4 +- tests/cyclops/query/test_util.py | 15 - 14 files changed, 1382 insertions(+), 1020 deletions(-) diff --git a/cyclops/evaluate/metrics/utils.py b/cyclops/evaluate/metrics/utils.py index 3c4bbc8f6..2a39a7dc4 100644 --- a/cyclops/evaluate/metrics/utils.py +++ b/cyclops/evaluate/metrics/utils.py @@ -135,7 +135,7 @@ def common_input_checks_and_format( def sigmoid(arr: npt.ArrayLike) -> npt.NDArray[np.float_]: """Sigmoid function.""" arr = np.asanyarray(arr) - return 1 / (1 + np.exp(-arr)) + return 1 / (1 + np.exp(-arr)) # type: ignore def check_topk(top_k: int, type_preds: str, type_target: str, n_classes: int) -> None: diff --git a/cyclops/query/interface.py b/cyclops/query/interface.py index c1dddfb04..07e9b508a 100644 --- a/cyclops/query/interface.py +++ b/cyclops/query/interface.py @@ -25,7 +25,7 @@ class QueryInterface: Parameters ---------- - database: cyclops.orm.Database + database Database object to create ORM, and query data. query: cyclops.query.util.TableTypes The query. diff --git a/cyclops/query/ops.py b/cyclops/query/ops.py index 672212ff9..c643e799c 100644 --- a/cyclops/query/ops.py +++ b/cyclops/query/ops.py @@ -1,17 +1,20 @@ -"""Low-level query operations. +"""Query operations. -This module contains query operation modules such which can be used in high-level query -API functions specific to datasets. +This module contains query operations. You can use query operations instead of SQL +code to filter rows using conditions, join tables, etc. """ from __future__ import annotations import logging +import operator import typing -from abc import ABC, abstractmethod +from abc import abstractmethod +from collections import OrderedDict from dataclasses import dataclass, field from datetime import datetime, timedelta +from itertools import islice import sqlalchemy from sqlalchemy import and_, cast, extract, func, literal_column, or_, select @@ -63,19 +66,20 @@ class JoinArgs: Parameters ---------- - join_table: cyclops.query.util.TableTypes + join_table Table to join. - on: list of str or tuple, optional - on_to_type: list of type, optional + on + Column(s) to join on. + on_to_type A list of types to which to convert the on columns before joining. Useful when two columns have the same values but in different format, e.g., strings of int. - cond: BinaryExpression, optional + cond Condition on which to join to tables. - table_cols: str or list of str, optional + table_cols Filters to keep only these columns from the table. - join_table_cols: + join_table_cols Filters to keep only these columns from the join_table. - isouter: + isouter Flag to say if the join is a left outer join. """ @@ -103,48 +107,402 @@ def __post_init__(self) -> None: self.join_table_cols = to_list_optional(self.join_table_cols) -class QueryOp(ABC): - """Base type for query operations.""" +def _addindent(s_: str, num_spaces: int = 4) -> str: + """Add spaces to a string. + + Parameters + ---------- + s_ + String to add spaces to. + num_spaces + Number of spaces to add. + + Returns + ------- + str + String with spaces added. + + """ + s = s_.split("\n") + if len(s) == 1: + return s_ + first = s.pop(0) + s = [(num_spaces * " ") + line for line in s] + s = "\n".join(s) # type: ignore + + return first + "\n" + s # type: ignore + + +class QueryOp: + """Base class for query operations.""" + + _ops: typing.Dict[str, "QueryOp"] + + def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None: + """Initialize the object.""" + super().__setattr__("_ops", OrderedDict()) @abstractmethod def __call__(self, *args: typing.Any, **kwargs: typing.Any) -> Subquery: """Implement a calling function.""" pass + def add_op(self, name: str, op_: "QueryOp") -> None: + """Add a child operation to the current query operation. + + The query op can be accessed as an attribute using the given name. + + Parameters + ---------- + name + Name of the child op. The child op can be accessed from this op using + the given name + op_ + Child op to be added to the parent query op. + + """ + if not isinstance(op_, QueryOp) and op_ is not None: + raise TypeError("{} is not a QueryOp subclass".format(str(op_))) + if not isinstance(name, str): + raise TypeError("Query op name should be a string") + if hasattr(self, name) and name not in self._ops: + raise KeyError("Attribute '{}' already exists".format(name)) + if "." in name: + raise KeyError('Query op name can\'t contain ".", got: {}'.format(name)) + if name == "": + raise KeyError('Query op name can\'t be empty string ""') + self._ops[name] = op_ + + def ops(self) -> typing.Iterator["QueryOp"]: + """Return an iterator over the child operations. + + Returns + ------- + typing.Iterator[QueryOp] + Iterator over the child operations. + + """ + for _, op_ in self._ops.items(): + yield op_ + + def _get_name(self) -> str: + """Get the name of the query op. + + Returns + ------- + str + Name of the query op. + + """ + return self.__class__.__name__ + + def __setattr__(self, name: str, value: "QueryOp") -> None: + """Set an attribute. -class Sequential: + Parameters + ---------- + name + Name of the attribute. + value + Value of the attribute. + + """ + ops = self.__dict__.get("_ops") + if isinstance(value, QueryOp): + if ops is None: + raise AttributeError("Can't assign op before QueryOp.__init__() call") + ops[name] = value + elif ops is not None and name in ops: + if value is not None: + raise TypeError( + "Cannot assign '{}' as child op '{}' " "(QueryOp or None expected)", + ) + ops[name] = value + else: + super().__setattr__(name, value) + + def extra_repr(self) -> str: + """Set the extra representation of the query op. + + To print customized extra information, you should re-implement + this method in your own query ops. Both single-line and multi-line + strings are acceptable. + + Returns + ------- + str + Extra representation of the query op. + + """ + return "" + + def __repr__(self) -> str: + """Return the string representation of the query op. + + Returns + ------- + str + String representation of the query op. + + """ + extra_lines = [] + extra_repr = self.extra_repr() + if extra_repr: + extra_lines = extra_repr.split("\n") + child_lines = [] + for key, op_ in self._ops.items(): + mod_str = repr(op_) + mod_str = _addindent(mod_str, 2) + child_lines.append("(" + key + "): " + mod_str) + lines = extra_lines + child_lines + main_str = self._get_name() + "(" + if lines: + if len(extra_lines) == 1 and not child_lines: + main_str += extra_lines[0] + else: + main_str += "\n " + "\n ".join(lines) + "\n" + main_str += ")" + + return main_str + + +def _chain_ops( + query: Subquery, + ops: typing.Iterator[QueryOp], +) -> Subquery: + """Chain query ops. + + Parameters + ---------- + query + Query to chain the ops to. + ops + Query ops to chain. + + Returns + ------- + Subquery + Query with the ops chained. + + """ + for op_ in ops: + if isinstance(op_, Sequential): + query = _chain_ops(query, op_.ops()) + elif isinstance(op_, QueryOp): + query = op_(query) + + return query + + +class Sequential(QueryOp): """Sequential query operations class. - Chains a list of sequential query operations and executes the final query on a - table. + Chains a sequence of query operations and executes the final query on a table. """ - def __init__(self, *ops: typing.Sequence[typing.Any]) -> None: - """Initialize the Sequential class. + @typing.overload + def __init__(self, *ops: QueryOp) -> None: + ... + + @typing.overload + def __init__(self, ops: typing.List[QueryOp]) -> None: + ... + + @typing.overload + def __init__(self, op: OrderedDict[str, QueryOp]) -> None: + ... + + def __init__(self, *args: QueryOp) -> None: # type: ignore + """Initialize the class. Parameters ---------- - ops: tuple of QueryOp or Sequential or list of QueryOp - Query operations to be chained. + args + Query operations to be chained sequentially. """ - self.ops = ops + super().__init__() + if len(args) == 1 and isinstance(args[0], OrderedDict): + for key, op_ in args[0].items(): + self.add_op(key, op_) + elif len(args) == 1 and isinstance(args[0], list): + for idx, op_ in enumerate(args[0]): + self.add_op(str(idx), op_) + else: + for idx, op_ in enumerate(args): + self.add_op(str(idx), op_) + + def __len__(self) -> int: + """Return the number of query ops in the Sequential. + + Returns + ------- + int + Number of query ops in the Sequential. + + """ + return len(self._ops) + + def __iter__(self) -> typing.Iterator[QueryOp]: + """Return an iterator over the query ops. + + Returns + ------- + typing.Iterator[QueryOp] + Iterator over the query ops. - def _chain_ops( + """ + return iter(self._ops.values()) + + def __add__(self, other: "Sequential") -> "Sequential": + """Add two Sequential objects. + + Parameters + ---------- + other + Sequential object to be added. + + Returns + ------- + Sequential + Sequential object with the two Sequential objects chained. + + """ + if isinstance(other, Sequential): + ret = Sequential() + for op_ in self: + ret.append(op_) + for op_ in other: + ret.append(op_) + return ret + raise ValueError( + "Add operator supports only objects " + "of Sequential class, but {} is given.".format(str(type(other))), + ) + + def __iadd__(self, other: "Sequential") -> "Sequential": + """Add two Sequential objects inplace. + + Parameters + ---------- + other + Sequential object to be added. + + Returns + ------- + Sequential + Sequential object with the two Sequential objects chained. + + """ + if isinstance(other, Sequential): + offset = len(self) + for i, op_ in enumerate(other): + self.add_op(str(i + offset), op_) + return self + raise ValueError( + "Add operator supports only objects " + "of Sequential class, but {} is given.".format(str(type(other))), + ) + + def _get_item_by_idx( self, - query: Subquery, - ops: typing.Sequence[typing.Any], - ) -> Subquery: - for op_ in ops: - if isinstance(op_, Sequential): - query = self._chain_ops(query, op_.ops) - if isinstance(op_, list): - query = self._chain_ops(query, op_) - if isinstance(op_, QueryOp): - query = op_(query) - - return query + iterator: typing.Iterator[typing.Any], + idx: int, + ) -> typing.Any: + """Get the idx-th item of the iterator. + + Parameters + ---------- + iterator + Iterator to get the item from. + idx + Index of the item to get. + + Returns + ------- + QueryOp + The idx-th item of the iterator. + + """ + size = len(self) + idx = operator.index(idx) + if not -size <= idx < size: + raise IndexError("index {} is out of range".format(idx)) + idx %= size + + return next(islice(iterator, idx, None)) + + def __getitem__( + self, + idx: typing.Union[slice, int], + ) -> typing.Any: + """Get the idx-th item of the sequential query op. + + Parameters + ---------- + idx + Index of the item to get. + + Returns + ------- + Sequential or QueryOp + The idx-th item of the sequential query op. + + """ + if isinstance(idx, slice): + return self.__class__(OrderedDict(list(self._ops.items())[idx])) + + return self._get_item_by_idx(self._ops.values(), idx) # type: ignore + + def __setitem__(self, idx: int, op_: QueryOp) -> None: + """Set the idx-th item of the sequential query op. + + Parameters + ---------- + idx + Index of the item to set. + op_ + Query op to set. + + """ + key: str = self._get_item_by_idx(self._ops.keys(), idx) # type: ignore + return setattr(self, key, op_) + + def __delitem__(self, idx: typing.Union[slice, int]) -> None: + """Delete the idx-th item of the sequential query op. + + Parameters + ---------- + idx + Index of the item to delete. + + """ + if isinstance(idx, slice): + for key in list(self._ops.keys())[idx]: + delattr(self, key) + else: + key = self._get_item_by_idx(self._ops.keys(), idx) # type: ignore + delattr(self, key) + str_indices = [str(i) for i in range(len(self._ops))] + self._ops = OrderedDict(list(zip(str_indices, self._ops.values()))) + + def append(self, op_: QueryOp) -> "Sequential": + """Append a given query op to the end. + + Parameters + ---------- + op_ + Query op to append. + + Returns + ------- + Sequential + Sequential object with the query op appended. + + """ + self.add_op(str(len(self)), op_) + return self @table_params_to_type(Subquery) def __call__(self, table: TableTypes) -> Subquery: @@ -152,7 +510,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table: TableTypes + table Table to be queried. Returns @@ -161,7 +519,7 @@ def __call__(self, table: TableTypes) -> Subquery: Query result after chaining the query operations. """ - return self._chain_ops(table, self.ops) + return _chain_ops(table, self.ops()) def _append_if_missing( @@ -173,11 +531,11 @@ def _append_if_missing( Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - keep_cols: str or list of str, optional + keep_cols Columns to keep. - force_include_cols: str or list of str, optional + force_include_cols Columns to include (forcefully). """ @@ -198,8 +556,15 @@ def _none_add(obj1: typing.Any, obj2: typing.Any) -> typing.Any: Parameters ---------- - obj1: typing.Any - obj2: typing.Any + obj1 + First object to add. + obj2 + Second object to add. + + Returns + ------- + typing.Any + Result of adding the two objects. """ if obj1 is None: @@ -219,11 +584,11 @@ def _process_checks( Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - cols: str or list of str, optional + cols Columns to check. - timestamp_cols: str or list of str, optional + timestamp_cols Timestamp columns to check. Returns @@ -247,17 +612,16 @@ def _process_checks( return table -@dataclass class FillNull(QueryOp): """Fill NULL values with a given value. Parameters ---------- - cols: str or list of str + cols Columns to fill. - fill_values: typing.Any or list of typing.Any + fill_values Value(s) to fill with. - new_col_names: str or list of str, optional + new_col_names New column name(s) for the filled columns. If not provided, Examples @@ -268,9 +632,16 @@ class FillNull(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - fill_values: typing.Union[typing.Any, typing.List[typing.Any]] - new_col_names: typing.Optional[typing.Union[str, typing.List[str]]] = None + def __init__( + self, + cols: typing.Union[str, typing.List[str]], + fill_values: typing.Union[typing.Any, typing.List[typing.Any]], + new_col_names: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ) -> None: + super().__init__() + self.cols = cols + self.fill_values = fill_values + self.new_col_names = new_col_names def __call__(self, table: TableTypes) -> Subquery: """Fill NULL values with a given value. @@ -313,7 +684,6 @@ def __call__(self, table: TableTypes) -> Subquery: return table -@dataclass class Drop(QueryOp): """Drop some columns. @@ -329,7 +699,9 @@ class Drop(QueryOp): """ - cols: typing.Union[str, typing.List[str]] + def __init__(self, cols: typing.Union[str, typing.List[str]]) -> None: + super().__init__() + self.cols = cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. @@ -402,7 +774,9 @@ class Substring(QueryOp): to be extracted. start_index: int Start index of substring. - stop_index: str + stop_index: int + Stop index of substring. + new_col_name: str, optional Name of the new column with extracted substring. Examples @@ -414,7 +788,7 @@ class Substring(QueryOp): col: str start_index: int stop_index: int - new_col_label: str + new_col_label: typing.Optional[str] = None def __call__(self, table: TableTypes) -> Subquery: """Process the table. @@ -431,15 +805,18 @@ def __call__(self, table: TableTypes) -> Subquery: Processed table. """ - table = _process_checks(table, cols=self.col) - return select( + table = _process_checks(table, cols=self.col, cols_not_in=self.new_col_label) + + return apply_to_columns( table, - func.substr( - get_column(table, self.col), + self.col, + lambda x: func.substr( + process_column(x, to_str=True), self.start_index, self.stop_index, - ).label(self.new_col_label), - ).subquery() + ), + new_col_labels=self.new_col_label, + ) @dataclass @@ -907,8 +1284,6 @@ class AddDeltaColumn(QueryOp): ---------- add_to: str or list of str Column names specifying to which columns is being added. - add: Column - Column object of type interval. negative: bool, optional Subtract the object rather than adding. new_col_labels: str or list of str, optional @@ -934,6 +1309,7 @@ def __init__( **delta_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.add_to = add_to self.negative = negative self.new_col_labels = new_col_labels @@ -1142,6 +1518,7 @@ def __init__( isouter: typing.Optional[bool] = False, ) -> None: """Initialize.""" + super().__init__() if on is not None and cond is not None: raise ValueError("Cannot specify both the 'on' and 'cond' arguments.") @@ -1268,6 +1645,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.value = value self.not_ = not_ @@ -1350,6 +1728,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.value = value self.equal = equal @@ -1434,6 +1813,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.value = value self.equal = equal @@ -1577,6 +1957,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.values = values self.not_ = not_ @@ -1664,6 +2045,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.substrings = to_list(substrings) self.any_ = any_ @@ -1740,6 +2122,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.string = string self.not_ = not_ @@ -1819,6 +2202,7 @@ def __init__( **cond_kwargs: typing.Any, ) -> None: """Initialize.""" + super().__init__() self.col = col self.string = string self.not_ = not_ @@ -2209,8 +2593,8 @@ class Or(QueryOp): Parameters ---------- - ops: QueryOp or List[QueryOp] - Query ops to combine. + cond_ops: QueryOp or List[QueryOp] + Condition Query ops to combine. Examples -------- @@ -2218,7 +2602,7 @@ class Or(QueryOp): """ - ops: typing.Union[QueryOp, typing.List[QueryOp]] + cond_ops: typing.Union[QueryOp, typing.List[QueryOp]] def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. @@ -2236,9 +2620,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Processed table. """ - if isinstance(self.ops, QueryOp): - return self.ops(table, return_cond=return_cond) - cond = or_(*[op(table, return_cond=True) for op in self.ops]) + if isinstance(self.cond_ops, QueryOp): + return self.cond_ops(table, return_cond=return_cond) + cond = or_(*[op(table, return_cond=True) for op in self.cond_ops]) if return_cond: return cond @@ -2260,7 +2644,7 @@ class And(QueryOp): """ - ops: typing.Union[QueryOp, typing.List[QueryOp]] + cond_ops: typing.Union[QueryOp, typing.List[QueryOp]] def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. @@ -2278,9 +2662,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Processed table. """ - if isinstance(self.ops, QueryOp): - return self.ops(table, return_cond=return_cond) - cond = and_(*[op(table, return_cond=True) for op in self.ops]) + if isinstance(self.cond_ops, QueryOp): + return self.cond_ops(table, return_cond=return_cond) + cond = and_(*[op(table, return_cond=True) for op in self.cond_ops]) if return_cond: return cond diff --git a/cyclops/query/util.py b/cyclops/query/util.py index ef7bd1304..3d646a17f 100644 --- a/cyclops/query/util.py +++ b/cyclops/query/util.py @@ -1,7 +1,5 @@ """Utility functions for querying.""" -# mypy: ignore-errors - import logging from dataclasses import dataclass from functools import wraps @@ -67,49 +65,7 @@ class DBTable: TABLE_OBJECTS = [Table, Select, Subquery, DBTable] TableTypes = Union[Select, Subquery, Table, DBTable] - - -def ckwarg(kwargs: dict, kwarg: str): - """Get the value of a conditional keyword argument. - - A keyword argument may or may not be specified in some - keyword arguments. If specified, return the value, - otherwise return None. - - Parameters - ---------- - kwargs: dict - Process keyword arguments. - kwarg: str - The keyword argument of interest. - - Returns - ------- - any, optional - The value of the keyword argument if it exists, otherwise None. - - """ - if kwarg in kwargs: - return kwargs[kwarg] - return None - - -def remove_kwargs(process_kwargs: dict, kwargs: Union[str, List[str]]): - """Remove some keyword arguments from process_kwargs if they exist. - - Parameters - ---------- - process_kwargs: dict - Process keyword arguments. - kwargs: str or list of str - The keyword arguments to remove should they exist. - - """ - kwargs = to_list(kwargs) - for kwarg in kwargs: - if kwarg in process_kwargs: - del process_kwargs[kwarg] - return process_kwargs +CastableTypes = Union[Date, DateTime, Float, Integer, Interval, String] def _to_subquery(table: TableTypes) -> Subquery: @@ -176,7 +132,10 @@ def _to_select(table: TableTypes) -> Select: ) -def param_types_to_type(relevant_types: List[Any], to_type_fn: Callable) -> Callable: +def param_types_to_type( + relevant_types: List[Any], + to_type_fn: Callable[..., Any], +) -> Callable[..., Any]: """Convert TableTypes parameters to a specified type. A decorator which processes a function's arguments by taking all @@ -197,16 +156,16 @@ def param_types_to_type(relevant_types: List[Any], to_type_fn: Callable) -> Call """ - def decorator(func_: Callable) -> Callable: + def decorator(func_: Callable[..., Any]) -> Callable[..., Any]: """Decorate function to convert TableTypes parameters to a specified type.""" @wraps(func_) - def wrapper_func(*args, **kwargs) -> Callable: + def wrapper_func(*args: Any, **kwargs: Any) -> Any: # Convert relevant arguments. - args = list(args) - for i, arg in enumerate(args): + args_list = list(args) + for i, arg in enumerate(args_list): if type(arg) in relevant_types: - args[i] = to_type_fn(arg) + args_list[i] = to_type_fn(arg) # Convert relevant keyword arguments. kwargs = dict(kwargs) @@ -214,14 +173,14 @@ def wrapper_func(*args, **kwargs) -> Callable: if type(kwarg) in relevant_types: kwargs[key] = to_type_fn(kwarg) - return func_(*tuple(args), **kwargs) + return func_(*tuple(args_list), **kwargs) return wrapper_func return decorator -def table_params_to_type(to_type: TableTypes) -> Callable: +def table_params_to_type(to_type: TableTypes) -> Callable[..., Any]: """Decorate to convert TableTypes params to a specified type. Parameters @@ -254,7 +213,7 @@ def table_params_to_type(to_type: TableTypes) -> Callable: def get_column( table: TableTypes, col: str, -): +) -> Column: """Extract a column object from a table by name. Parameters @@ -274,7 +233,7 @@ def get_column( if col not in col_names: raise ValueError(f"Table does not contain column {col}") - return table.c[col_names.index(col)] + return table.c[col_names.index(col)] # type: ignore @table_params_to_type(Subquery) @@ -303,7 +262,7 @@ def filter_columns( for col in cols: if col not in col_names: continue - filtered.append(table.c[col_names.index(col)]) + filtered.append(table.c[col_names.index(col)]) # type: ignore return select(filtered).subquery() @@ -312,7 +271,7 @@ def filter_columns( def get_columns( table: TableTypes, cols: Union[str, List[str]], -): +) -> List[Column]: """Extract a number of columns from the table. Parameters @@ -332,7 +291,7 @@ def get_columns( @table_params_to_type(Subquery) -def get_column_names(table: TableTypes): +def get_column_names(table: TableTypes) -> List[str]: """Extract column names from a table. Parameters @@ -346,7 +305,7 @@ def get_column_names(table: TableTypes): The table column names. """ - return [c.name for c in table.columns] + return [c.name for c in table.columns] # type: ignore @table_params_to_type(Subquery) @@ -354,7 +313,7 @@ def has_columns( table: TableTypes, cols: Union[str, List[str]], raise_error: bool = False, -): +) -> bool: """Check whether a table has all of the specified columns. Parameters @@ -385,7 +344,10 @@ def has_columns( @table_params_to_type(Subquery) -def assert_table_has_columns(*args, **kwargs) -> Callable: +def assert_table_has_columns( + *args: Any, + **kwargs: Any, +) -> Callable[[TableTypes], TableTypes]: """Assert that TableTypes params have the necessary columns. assert_table_has_columns(["A", "B"], None) is equivalent to @@ -409,9 +371,11 @@ def assert_table_has_columns(*args, **kwargs) -> Callable: """ - def decorator(func_: Callable) -> Callable: + def decorator( + func_: Callable[..., Any], + ) -> Callable[..., Any]: @wraps(func_) - def wrapper_func(*fn_args, **fn_kwargs) -> Callable: + def wrapper_func(*fn_args: Any, **fn_kwargs: Any) -> Any: # Check only the table arguments table_args = [i for i in fn_args if isinstance(i, Subquery)] @@ -438,7 +402,7 @@ def wrapper_func(*fn_args, **fn_kwargs) -> Callable: return wrapper_func - return decorator + return decorator # type: ignore @table_params_to_type(Subquery) @@ -465,11 +429,11 @@ def drop_columns( """ drop_cols = get_columns(table, drop_cols) - return select(*[c for c in table.c if c not in drop_cols]).subquery() + return select(*[c for c in table.c if c not in drop_cols]).subquery() # type: ignore @table_params_to_type(Subquery) -def rename_columns(table: TableTypes, rename_map: dict) -> Subquery: +def rename_columns(table: TableTypes, rename_map: Dict[str, str]) -> Subquery: """Rename a table's columns. Rename the table's columns according to a dictionary of strings, @@ -491,7 +455,7 @@ def rename_columns(table: TableTypes, rename_map: dict) -> Subquery: return select( *[ c.label(rename_map[c.name]) if c.name in rename_map else c - for c in table.columns + for c in table.columns # type: ignore ], ).subquery() @@ -529,7 +493,7 @@ def reorder_columns(table: TableTypes, cols: List[str]) -> Subquery: # Reorder the columns. new_cols = [] for col in new_order: - new_cols.append(table.c[old_order.index(col)]) + new_cols.append(table.c[old_order.index(col)]) # type: ignore return select(*new_cols).subquery() @@ -540,7 +504,7 @@ def apply_to_columns( col_names: Union[str, List[str]], funcs: Union[ Callable[[sqlalchemy.sql.schema.Column], sqlalchemy.sql.schema.Column], - List[Callable], + List[Callable[[sqlalchemy.sql.schema.Column], sqlalchemy.sql.schema.Column]], ], new_col_labels: Optional[Union[str, List[str]]] = None, ) -> Subquery: @@ -768,7 +732,7 @@ def equals( value: Any, lower: bool = True, trim: bool = True, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column has some value. @@ -810,7 +774,7 @@ def greater_than( lower: bool = True, trim: bool = True, equal: bool = False, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column is greater than some value. @@ -861,7 +825,7 @@ def less_than( lower: bool = True, trim: bool = True, equal: bool = False, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column is less than some value. @@ -987,7 +951,7 @@ def has_substring( col: Column, substring: Any, lower: bool = True, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column has some substring. @@ -1020,7 +984,7 @@ def starts_with( value: Any, lower: bool = True, trim: bool = True, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column starts with some value/string. @@ -1057,7 +1021,7 @@ def ends_with( value: Any, lower: bool = True, trim: bool = True, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column ends with some value/string. @@ -1094,7 +1058,7 @@ def in_( lst: List[Any], lower: bool = True, trim: bool = True, - **kwargs: Dict[str, bool], + **kwargs: bool, ) -> BinaryExpression: """Condition that a column value is in a list of values. @@ -1131,8 +1095,8 @@ def _check_column_type( table: TableTypes, cols: Union[str, List[str]], types: Union[Any, List[Any]], - raise_error=False, -): + raise_error: bool = False, +) -> bool: """Check whether some columns are each one of a number of types. Parameters @@ -1175,8 +1139,8 @@ def _check_column_type( def check_timestamp_columns( table: TableTypes, cols: Union[str, List[str]], - raise_error=False, -): + raise_error: bool = False, +) -> bool: """Check whether some columns are Date or DateTime columns. Parameters @@ -1232,7 +1196,7 @@ def get_delta_column( """ - def get_col_or_none(col): + def get_col_or_none(col: Optional[str] = None) -> Optional[Column]: """If col is not None, get interval column from names.""" return None if col is None else get_column(table, col) diff --git a/cyclops/report/report.py b/cyclops/report/report.py index 25b54ead1..c0b8d1576 100644 --- a/cyclops/report/report.py +++ b/cyclops/report/report.py @@ -182,8 +182,7 @@ def log_descriptor( KeyError If the given section name is not valid. ValueError - If the given name conflicts with a defined class in the `model_card` - module. + If the given name conflicts with a defined class in the `model_card` module. Examples -------- diff --git a/docs/source/conf.py b/docs/source/conf.py index 534be55a1..5ca5984ce 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -58,6 +58,7 @@ autosectionlabel_prefix_document = True copybutton_prompt_text = r">>> |\.\.\. " copybutton_prompt_is_regexp = True +nbsphinx_execute = "never" intersphinx_mapping = { "python": ("https://docs.python.org/3.9/", None), diff --git a/docs/source/tutorials/eicu/query_api.ipynb b/docs/source/tutorials/eicu/query_api.ipynb index b9a2bb39e..a51ff85eb 100644 --- a/docs/source/tutorials/eicu/query_api.ipynb +++ b/docs/source/tutorials/eicu/query_api.ipynb @@ -74,10 +74,8 @@ "outputs": [], "source": [ "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"hospitaldischargeyear\", 2014),\n", - " qo.ConditionEquals(\"gender\", \"Female\"),\n", - " ],\n", + " qo.ConditionEquals(\"hospitaldischargeyear\", 2014),\n", + " qo.ConditionEquals(\"gender\", \"Female\"),\n", ")\n", "patients = querier.eicu_crd.patient(ops=ops).run(limit=100)\n", "print(f\"{len(patients)} rows extracted!\")" @@ -102,17 +100,9 @@ }, "outputs": [], "source": [ - "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"hospitaldischargeyear\", 2015),\n", - " ],\n", - ")\n", + "ops = qo.ConditionEquals(\"hospitaldischargeyear\", 2015)\n", "patients = querier.eicu_crd.patient(ops=ops)\n", - "diagnosis_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"diagnosisstring\", \"schizophrenia\"),\n", - " ],\n", - ")\n", + "diagnosis_ops = qo.ConditionSubstring(\"diagnosisstring\", \"schizophrenia\")\n", "diagnoses = querier.eicu_crd.diagnosis(\n", " join=qo.JoinArgs(\n", " join_table=patients.query,\n", @@ -142,19 +132,13 @@ "source": [ "hospitals = querier.eicu_crd.hospital()\n", "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"hospitaldischargeyear\", 2015),\n", - " qo.ConditionEquals(\"teachingstatus\", True),\n", - " ],\n", + " qo.ConditionEquals(\"hospitaldischargeyear\", 2015),\n", + " qo.ConditionEquals(\"teachingstatus\", True),\n", ")\n", "patients = querier.eicu_crd.patient(\n", " join=qo.JoinArgs(join_table=hospitals.query, on=\"hospitalid\"), ops=ops,\n", ")\n", - "lab_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"labname\", \"potassium\"),\n", - " ],\n", - ")\n", + "lab_ops = qo.ConditionEquals(\"labname\", \"potassium\")\n", "labs = querier.eicu_crd.lab(\n", " join=qo.JoinArgs(\n", " join_table=patients.query,\n", @@ -183,17 +167,11 @@ "outputs": [], "source": [ "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"hospitaldischargeyear\", 2014),\n", - " qo.ConditionEquals(\"gender\", \"Female\"),\n", - " ],\n", + " qo.ConditionEquals(\"hospitaldischargeyear\", 2014),\n", + " qo.ConditionEquals(\"gender\", \"Female\"),\n", ")\n", "patients = querier.eicu_crd.patient(ops=ops)\n", - "medications_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"drugname\", \"glucose\"),\n", - " ],\n", - ")\n", + "medications_ops = qo.ConditionSubstring(\"drugname\", \"glucose\")\n", "medications = querier.eicu_crd.medication(\n", " join=qo.JoinArgs(join_table=patients.query, on=\"patientunitstayid\"),\n", " ops=medications_ops,\n", diff --git a/docs/source/tutorials/gemini/query_api.ipynb b/docs/source/tutorials/gemini/query_api.ipynb index e0790d849..d09e41064 100644 --- a/docs/source/tutorials/gemini/query_api.ipynb +++ b/docs/source/tutorials/gemini/query_api.ipynb @@ -112,12 +112,10 @@ ], "source": [ "ops = qo.Sequential(\n", - " [\n", - " qo.OrderBy(\n", - " [\"patient_id_hashed\", \"discharge_date_time\"], ascending=[True, False],\n", - " ),\n", - " qo.Distinct(\"patient_id_hashed\"),\n", - " ],\n", + " qo.OrderBy(\n", + " [\"patient_id_hashed\", \"discharge_date_time\"], ascending=[True, False],\n", + " ),\n", + " qo.Distinct(\"patient_id_hashed\"),\n", ")\n", "encounters_qi = querier.public.ip_administrative(ops=ops)\n", "encounters = encounters_qi.run()\n", @@ -156,10 +154,8 @@ ], "source": [ "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionAfterDate(\"discharge_date_time\", \"2015-04-01\"),\n", - " qo.ConditionBeforeDate(\"discharge_date_time\", \"2016-03-31\"),\n", - " ],\n", + " qo.ConditionAfterDate(\"discharge_date_time\", \"2015-04-01\"),\n", + " qo.ConditionBeforeDate(\"discharge_date_time\", \"2016-03-31\"),\n", ")\n", "encounters_qi = querier.get_interface(encounters_qi.query, ops=ops)\n", "encounters = encounters_qi.run()\n", @@ -281,12 +277,10 @@ "encounter_ops = qo.ConditionEquals(\"hospital_id\", \"SMH\")\n", "encounters_qi = querier.public.ip_administrative(ops=encounter_ops)\n", "lab_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionAfterDate(\"sample_collection_date_time\", \"2015-04-01\"),\n", - " qo.ConditionBeforeDate(\"sample_collection_date_time\", \"2015-05-31\"),\n", - " qo.ConditionSubstring(\"lab_test_name_mapped\", \"sodium\"),\n", - " qo.GroupByAggregate(\"hospital_id\", {\"hospital_id\": (\"count\", \"count\")}),\n", - " ],\n", + " qo.ConditionAfterDate(\"sample_collection_date_time\", \"2015-04-01\"),\n", + " qo.ConditionBeforeDate(\"sample_collection_date_time\", \"2015-05-31\"),\n", + " qo.ConditionSubstring(\"lab_test_name_mapped\", \"sodium\"),\n", + " qo.GroupByAggregate(\"hospital_id\", {\"hospital_id\": (\"count\", \"count\")}),\n", ")\n", "lab_qi = querier.public.lab(\n", " ops=lab_ops, join=qo.JoinArgs(join_table=encounters_qi.query, on=\"genc_id\"),\n", diff --git a/docs/source/tutorials/mimiciii/query_api.ipynb b/docs/source/tutorials/mimiciii/query_api.ipynb index 56b97f04c..eba11d290 100644 --- a/docs/source/tutorials/mimiciii/query_api.ipynb +++ b/docs/source/tutorials/mimiciii/query_api.ipynb @@ -74,10 +74,8 @@ "outputs": [], "source": [ "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"expire_flag\", 1),\n", - " qo.ConditionEquals(\"gender\", \"M\"),\n", - " ],\n", + " qo.ConditionEquals(\"expire_flag\", 1),\n", + " qo.ConditionEquals(\"gender\", \"M\"),\n", ")\n", "patients = querier.mimiciii.patients(ops=ops).run(limit=100)\n", "print(f\"{len(patients)} rows extracted!\")" @@ -102,16 +100,8 @@ }, "outputs": [], "source": [ - "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"gender\", \"F\"),\n", - " ],\n", - ")\n", - "diagnoses_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"long_title\", \"gastroenteritis\"),\n", - " ],\n", - ")\n", + "ops = qo.ConditionEquals(\"gender\", \"F\")\n", + "diagnoses_ops = qo.ConditionSubstring(\"long_title\", \"gastroenteritis\")\n", "patients = querier.mimiciii.patients(ops=ops)\n", "admissions = querier.mimiciii.admissions(\n", " join=qo.JoinArgs(join_table=patients.query, on=\"subject_id\"),\n", @@ -143,17 +133,9 @@ }, "outputs": [], "source": [ - "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"gender\", \"F\"),\n", - " ],\n", - ")\n", + "ops = qo.ConditionEquals(\"gender\", \"F\")\n", "patients = querier.mimiciii.patients(ops=ops)\n", - "lab_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"label\", \"potassium\"),\n", - " ],\n", - ")\n", + "lab_ops = qo.ConditionEquals(\"label\", \"potassium\")\n", "labs = querier.labevents(ops=lab_ops).run(limit=100)\n", "print(f\"{len(labs)} rows extracted!\")" ] @@ -175,17 +157,11 @@ }, "outputs": [], "source": [ - "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"gender\", \"M\"),\n", - " ],\n", - ")\n", + "ops = qo.ConditionEquals(\"gender\", \"M\")\n", "chartevents_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"dbsource\", \"carevue\"),\n", - " qo.ConditionEquals(\"label\", \"AaDO2\"),\n", - " qo.ConditionLessThan(\"valuenum\", 20),\n", - " ],\n", + " qo.ConditionEquals(\"dbsource\", \"carevue\"),\n", + " qo.ConditionEquals(\"label\", \"AaDO2\"),\n", + " qo.ConditionLessThan(\"valuenum\", 20),\n", ")\n", "patients = querier.mimiciii.patients(ops=ops)\n", "chart_events = querier.chartevents(ops=chartevents_ops).run(limit=100)\n", diff --git a/docs/source/tutorials/mimiciv/query_api.ipynb b/docs/source/tutorials/mimiciv/query_api.ipynb index e70aa1c2a..eeccf1c32 100644 --- a/docs/source/tutorials/mimiciv/query_api.ipynb +++ b/docs/source/tutorials/mimiciv/query_api.ipynb @@ -75,10 +75,8 @@ "source": [ "patients = querier.patients()\n", "ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionAfterDate(\"admittime\", \"2021-01-01\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionAfterDate(\"admittime\", \"2021-01-01\"),\n", ")\n", "admissions = querier.mimiciv_hosp.admissions(\n", " join=qo.JoinArgs(join_table=patients.query, on=\"subject_id\"),\n", @@ -103,16 +101,12 @@ "outputs": [], "source": [ "diagnoses_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"icd_version\", 10),\n", - " qo.ConditionSubstring(\"long_title\", \"schizophrenia\"),\n", - " ],\n", + " qo.ConditionEquals(\"icd_version\", 10),\n", + " qo.ConditionSubstring(\"long_title\", \"schizophrenia\"),\n", ")\n", "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2015\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2015\"),\n", ")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", @@ -145,16 +139,12 @@ "outputs": [], "source": [ "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2015\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2015\"),\n", ")\n", "diagnoses_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionEquals(\"icd_version\", 9),\n", - " qo.ConditionRegexMatch(\"long_title\", r\"(?=.*schizophrenia)(?=.*chronic)\"),\n", - " ],\n", + " qo.ConditionEquals(\"icd_version\", 9),\n", + " qo.ConditionRegexMatch(\"long_title\", r\"(?=.*schizophrenia)(?=.*chronic)\"),\n", ")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", @@ -187,12 +177,10 @@ "outputs": [], "source": [ "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2015\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2015\"),\n", ")\n", - "chartevents_ops = qo.Sequential([qo.ConditionEquals(\"category\", \"Routine Vital Signs\")])\n", + "chartevents_ops = qo.ConditionEquals(\"category\", \"Routine Vital Signs\")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", " join=qo.JoinArgs(join_table=patients.query, on=\"subject_id\"),\n", @@ -224,12 +212,10 @@ "outputs": [], "source": [ "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2009\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2009\"),\n", ")\n", - "labevents_ops = qo.Sequential([qo.ConditionEquals(\"label\", \"hemoglobin\")])\n", + "labevents_ops = qo.ConditionEquals(\"label\", \"hemoglobin\")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", " join=qo.JoinArgs(join_table=patients.query, on=\"subject_id\"),\n", @@ -263,10 +249,8 @@ "outputs": [], "source": [ "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2009\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2009\"),\n", ")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", @@ -293,7 +277,7 @@ }, { "cell_type": "markdown", - "id": "801c5ec5-6c7e-44af-8fb7-275d66ca82b0", + "id": "9550ba62-c128-4259-a075-0cbd9c70b662", "metadata": {}, "source": [ "## Example 7. Get all female patient encounters from year 2015, and return as dask dataframe (lazy evaluation) with 4 partitions (batches) aggregated based on `subject_id`." @@ -307,12 +291,10 @@ "outputs": [], "source": [ "admissions_ops = qo.Sequential(\n", - " [\n", - " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", - " qo.ConditionInYears(\"admittime\", \"2015\"),\n", - " qo.Cast(\"gender\", \"str\"),\n", - " qo.ConditionEquals(\"gender\", \"F\"),\n", - " ],\n", + " qo.AddDeltaColumn([\"admittime\", \"dischtime\"], years=\"anchor_year_difference\"),\n", + " qo.ConditionInYears(\"admittime\", \"2015\"),\n", + " qo.Cast(\"gender\", \"str\"),\n", + " qo.ConditionEquals(\"gender\", \"F\"),\n", ")\n", "patients = querier.patients()\n", "admissions = querier.mimiciv_hosp.admissions(\n", diff --git a/poetry.lock b/poetry.lock index 7a7d3561c..5cdf35e3a 100644 --- a/poetry.lock +++ b/poetry.lock @@ -161,18 +161,16 @@ files = [ [[package]] name = "alembic" -version = "1.11.3" +version = "1.12.0" description = "A database migration tool for SQLAlchemy." optional = false python-versions = ">=3.7" files = [ - {file = "alembic-1.11.3-py3-none-any.whl", hash = "sha256:d6c96c2482740592777c400550a523bc7a9aada4e210cae2e733354ddae6f6f8"}, - {file = "alembic-1.11.3.tar.gz", hash = "sha256:3db4ce81a9072e1b5aa44c2d202add24553182672a12daf21608d6f62a8f9cf9"}, + {file = "alembic-1.12.0-py3-none-any.whl", hash = "sha256:03226222f1cf943deee6c85d9464261a6c710cd19b4fe867a3ad1f25afda610f"}, + {file = "alembic-1.12.0.tar.gz", hash = "sha256:8e7645c32e4f200675e69f0745415335eb59a3663f5feb487abfa0b30c45888b"}, ] [package.dependencies] -importlib-metadata = {version = "*", markers = "python_version < \"3.9\""} -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} Mako = "*" SQLAlchemy = ">=1.3.0" typing-extensions = ">=4" @@ -182,77 +180,78 @@ tz = ["python-dateutil"] [[package]] name = "alibi" -version = "0.8.0" +version = "0.9.4" description = "Algorithms for monitoring and explaining machine learning models" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "alibi-0.8.0-py3-none-any.whl", hash = "sha256:79617d26bb5ba5cd3decee22bdbbbf8efdbcac448e9d4328ba16dcebefdfb88a"}, - {file = "alibi-0.8.0.tar.gz", hash = "sha256:639187c894a15b3008617e6aa8791d8303a65d92da2bf8d94ec6f5e29ac10bbd"}, + {file = "alibi-0.9.4-py3-none-any.whl", hash = "sha256:85f014f3d451273209f3aea3e31dd79b7cdd2969224718c19c171dc94873e4b0"}, + {file = "alibi-0.9.4.tar.gz", hash = "sha256:96d2dec2f2bdf6fc7ea30d35372b1f078128568db656849a26f37d69f5c89a83"}, ] [package.dependencies] -attrs = ">=19.2.0,<23.0.0" +attrs = ">=19.2.0,<24.0.0" blis = "<0.8.0" dill = ">=0.3.0,<0.4.0" matplotlib = ">=3.0.0,<4.0.0" -numba = {version = ">=0.50.0,<0.54.0 || >0.54.0,<0.57.0", optional = true, markers = "extra == \"shap\""} +numba = {version = ">=0.50.0,<0.54.0 || >0.54.0,<0.58.0", optional = true, markers = "extra == \"shap\""} numpy = ">=1.16.2,<2.0.0" -pandas = ">=0.23.3,<2.0.0" +pandas = ">=1.0.0,<3.0.0" Pillow = ">=5.4.1,<10.0" requests = ">=2.21.0,<3.0.0" -scikit-image = ">=0.17.2,<0.20" +scikit-image = ">=0.17.2,<0.22" scikit-learn = ">=1.0.0,<2.0.0" scipy = ">=1.1.0,<2.0.0" -shap = {version = ">=0.40.0,<0.42.0", optional = true, markers = "extra == \"shap\""} +shap = {version = ">=0.40.0,<0.43.0", optional = true, markers = "extra == \"shap\""} spacy = {version = ">=2.0.0,<4.0.0", extras = ["lookups"]} tqdm = ">=4.28.1,<5.0.0" transformers = ">=4.7.0,<5.0.0" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["numba (>=0.50.0,!=0.54.0,<0.57.0)", "ray (>=0.8.7,<3.0.0)", "shap (>=0.40.0,<0.42.0)", "tensorflow (>=2.0.0,!=2.6.0,!=2.6.1,<2.11.0)", "torch (>=1.9.0,<2.0.0)"] +all = ["numba (>=0.50.0,!=0.54.0,<0.58.0)", "ray (>=0.8.7,<3.0.0)", "shap (>=0.40.0,<0.43.0)", "tensorflow (>=2.0.0,!=2.6.0,!=2.6.1,<2.13.0)", "torch (>=1.9.0,<3.0.0)"] ray = ["ray (>=0.8.7,<3.0.0)"] -shap = ["numba (>=0.50.0,!=0.54.0,<0.57.0)", "shap (>=0.40.0,<0.42.0)"] -tensorflow = ["tensorflow (>=2.0.0,!=2.6.0,!=2.6.1,<2.11.0)"] +shap = ["numba (>=0.50.0,!=0.54.0,<0.58.0)", "shap (>=0.40.0,<0.43.0)"] +tensorflow = ["tensorflow (>=2.0.0,!=2.6.0,!=2.6.1,<2.13.0)"] torch = ["torch (>=1.9.0,<2.0.0)"] [[package]] name = "alibi-detect" -version = "0.10.5" +version = "0.11.4" description = "Algorithms for outlier detection, concept drift and metrics." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "alibi-detect-0.10.5.tar.gz", hash = "sha256:4199474ccf6916784a0d7334894be6420db0acff5b36a8c9853897d586d75582"}, - {file = "alibi_detect-0.10.5-py3-none-any.whl", hash = "sha256:3057a44fd61e6c5f31874e34cfb3beb08a984cc0d60be2849b69569936d1fe0e"}, + {file = "alibi-detect-0.11.4.tar.gz", hash = "sha256:5e81eee628260a264e5ebf27d9ab400a34f8ab53d1c0e883547c4c6f9b1aa1be"}, + {file = "alibi_detect-0.11.4-py3-none-any.whl", hash = "sha256:d1273a160583df44eaa17d557762152f70dda0ef064963c622655f3fef8d4aa3"}, ] [package.dependencies] catalogue = ">=2.0.0,<3.0.0" dill = ">=0.3.0,<0.4.0" matplotlib = ">=3.0.0,<4.0.0" -numba = ">=0.50.0,<0.54.0 || >0.54.0,<0.56.0" +numba = ">=0.50.0,<0.54.0 || >0.54.0,<0.58.0" numpy = ">=1.16.2,<2.0.0" opencv-python = ">=3.2.0,<5.0.0" -pandas = ">=0.23.3,<2.0.0" +pandas = ">=1.0.0,<3.0.0" Pillow = ">=5.4.1,<10.0.0" pydantic = ">=1.8.0,<2.0.0" requests = ">=2.21.0,<3.0.0" -scikit-image = ">=0.14.2,<0.17.1 || >0.17.1,<0.20" +scikit-image = ">=0.14.2,<0.17.1 || >0.17.1,<0.22" scikit-learn = ">=0.20.2,<2.0.0" scipy = ">=1.3.0,<2.0.0" toml = ">=0.10.1,<1.0.0" -torch = {version = ">=1.7.0,<1.13.0", optional = true, markers = "extra == \"torch\""} +torch = {version = ">=1.7.0,<1.14.0", optional = true, markers = "extra == \"torch\""} tqdm = ">=4.28.1,<5.0.0" transformers = ">=4.0.0,<5.0.0" typing-extensions = ">=3.7.4.3" [package.extras] -all = ["fbprophet (>=0.5,<0.7)", "holidays (==0.9.11)", "pystan (<3.0)", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1,<2.10.0)", "tensorflow-probability (>=0.8.0,<0.18.0)", "torch (>=1.7.0,<1.13.0)"] -prophet = ["fbprophet (>=0.5,<0.7)", "holidays (==0.9.11)", "pystan (<3.0)"] -tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1,<2.10.0)", "tensorflow-probability (>=0.8.0,<0.18.0)"] -torch = ["torch (>=1.7.0,<1.13.0)"] +all = ["prophet (>=1.1.0,<2.0.0)", "pykeops (>=2.0.0,<2.2.0)", "tensorflow (>=2.2.0,!=2.6.0,!=2.6.1,<2.13.0)", "tensorflow-probability (>=0.8.0,<0.20.0)", "torch (>=1.7.0,<1.14.0)"] +keops = ["pykeops (>=2.0.0,<2.2.0)", "torch (>=1.7.0,<1.14.0)"] +prophet = ["prophet (>=1.1.0,<2.0.0)"] +tensorflow = ["tensorflow (>=2.2.0,!=2.6.0,!=2.6.1,<2.13.0)", "tensorflow-probability (>=0.8.0,<0.20.0)"] +torch = ["torch (>=1.7.0,<1.14.0)"] [[package]] name = "ansi2html" @@ -279,6 +278,17 @@ files = [ {file = "antlr4-python3-runtime-4.9.3.tar.gz", hash = "sha256:f224469b4168294902bb1efa80a8bf7855f24c99aef99cbefc1bcd3cce77881b"}, ] +[[package]] +name = "anyascii" +version = "0.3.2" +description = "Unicode to ASCII transliteration" +optional = false +python-versions = ">=3.3" +files = [ + {file = "anyascii-0.3.2-py3-none-any.whl", hash = "sha256:3b3beef6fc43d9036d3b0529050b0c48bfad8bc960e9e562d7223cfb94fe45d4"}, + {file = "anyascii-0.3.2.tar.gz", hash = "sha256:9d5d32ef844fe225b8bc7cba7f950534fae4da27a9bf3a6bea2cb0ea46ce4730"}, +] + [[package]] name = "anyio" version = "3.7.1" @@ -429,21 +439,24 @@ files = [ [package.dependencies] lazy-object-proxy = ">=1.4.0" typing-extensions = {version = ">=4.0.0", markers = "python_version < \"3.11\""} -wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} +wrapt = [ + {version = ">=1.11,<2", markers = "python_version < \"3.11\""}, + {version = ">=1.14,<2", markers = "python_version >= \"3.11\""}, +] [[package]] name = "asttokens" -version = "2.2.1" +version = "2.4.0" description = "Annotate AST trees with source code positions" optional = false python-versions = "*" files = [ - {file = "asttokens-2.2.1-py2.py3-none-any.whl", hash = "sha256:6b0ac9e93fb0335014d382b8fa9b3afa7df546984258005da0b9e7095b3deb1c"}, - {file = "asttokens-2.2.1.tar.gz", hash = "sha256:4622110b2a6f30b77e1473affaa97e711bc2f07d3f10848420ff1898edbe94f3"}, + {file = "asttokens-2.4.0-py2.py3-none-any.whl", hash = "sha256:cf8fc9e61a86461aa9fb161a14a0841a03c405fa829ac6b202670b3495d2ce69"}, + {file = "asttokens-2.4.0.tar.gz", hash = "sha256:2e0171b991b2c959acc6c49318049236844a5da1d65ba2672c4880c1c894834e"}, ] [package.dependencies] -six = "*" +six = ">=1.12.0" [package.extras] test = ["astroid", "pytest"] @@ -514,21 +527,21 @@ test = ["flake8 (>=5.0,<6.0)", "uvloop (>=0.15.3)"] [[package]] name = "attrs" -version = "22.2.0" +version = "23.1.0" description = "Classes Without Boilerplate" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, - {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, ] [package.extras] -cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] -dev = ["attrs[docs,tests]"] -docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] -tests = ["attrs[tests-no-zope]", "zope.interface"] -tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "babel" @@ -541,9 +554,6 @@ files = [ {file = "Babel-2.12.1.tar.gz", hash = "sha256:cc2d99999cd01d44420ae725a21c9e3711b3aadc7976d6147f622d8581963455"}, ] -[package.dependencies] -pytz = {version = ">=2015.7", markers = "python_version < \"3.9\""} - [[package]] name = "backcall" version = "0.2.0" @@ -556,32 +566,22 @@ files = [ ] [[package]] -name = "backports-zoneinfo" -version = "0.2.1" -description = "Backport of the standard library zoneinfo module" +name = "beartype" +version = "0.15.0" +description = "Unbearably fast runtime type checking in pure Python." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8.0" files = [ - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:da6013fd84a690242c310d77ddb8441a559e9cb3d3d59ebac9aca1a57b2e18bc"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:89a48c0d158a3cc3f654da4c2de1ceba85263fafb861b98b59040a5086259722"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:1c5742112073a563c81f786e77514969acb58649bcdf6cdf0b4ed31a348d4546"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win32.whl", hash = "sha256:e8236383a20872c0cdf5a62b554b27538db7fa1bbec52429d8d106effbaeca08"}, - {file = "backports.zoneinfo-0.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:8439c030a11780786a2002261569bdf362264f605dfa4d65090b64b05c9f79a7"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:f04e857b59d9d1ccc39ce2da1021d196e47234873820cbeaad210724b1ee28ac"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:17746bd546106fa389c51dbea67c8b7c8f0d14b5526a579ca6ccf5ed72c526cf"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:5c144945a7752ca544b4b78c8c41544cdfaf9786f25fe5ffb10e838e19a27570"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win32.whl", hash = "sha256:e55b384612d93be96506932a786bbcde5a2db7a9e6a4bb4bffe8b733f5b9036b"}, - {file = "backports.zoneinfo-0.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:a76b38c52400b762e48131494ba26be363491ac4f9a04c1b7e92483d169f6582"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:8961c0f32cd0336fb8e8ead11a1f8cd99ec07145ec2931122faaac1c8f7fd987"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:e81b76cace8eda1fca50e345242ba977f9be6ae3945af8d46326d776b4cf78d1"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7b0a64cda4145548fed9efc10322770f929b944ce5cee6c0dfe0c87bf4c0c8c9"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win32.whl", hash = "sha256:1b13e654a55cd45672cb54ed12148cd33628f672548f373963b0bff67b217328"}, - {file = "backports.zoneinfo-0.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:4a0f800587060bf8880f954dbef70de6c11bbe59c673c3d818921f042f9954a6"}, - {file = "backports.zoneinfo-0.2.1.tar.gz", hash = "sha256:fadbfe37f74051d024037f223b8e001611eac868b5c5b06144ef4d8b799862f2"}, + {file = "beartype-0.15.0-py3-none-any.whl", hash = "sha256:52cd2edea72fdd84e4e7f8011a9e3007bf0125c3d6d7219e937b9d8868169177"}, + {file = "beartype-0.15.0.tar.gz", hash = "sha256:2af6a8d8a7267ccf7d271e1a3bd908afbc025d2a09aa51123567d7d7b37438df"}, ] [package.extras] -tzdata = ["tzdata"] +all = ["typing-extensions (>=3.10.0.0)"] +dev = ["autoapi (>=0.9.0)", "coverage (>=5.5)", "mypy (>=0.800)", "numpy", "pandera", "pydata-sphinx-theme (<=0.7.2)", "pytest (>=4.0.0)", "sphinx", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)", "tox (>=3.20.1)", "typing-extensions (>=3.10.0.0)"] +doc-rtd = ["autoapi (>=0.9.0)", "pydata-sphinx-theme (<=0.7.2)", "sphinx (>=4.2.0,<6.0.0)", "sphinxext-opengraph (>=0.7.5)"] +test-tox = ["mypy (>=0.800)", "numpy", "pandera", "pytest (>=4.0.0)", "sphinx", "typing-extensions (>=3.10.0.0)"] +test-tox-coverage = ["coverage (>=5.5)"] [[package]] name = "beautifulsoup4" @@ -692,10 +692,7 @@ files = [ ] [package.dependencies] -numpy = [ - {version = ">=1.15.0", markers = "python_version < \"3.9\""}, - {version = ">=1.19.0", markers = "python_version >= \"3.9\""}, -] +numpy = {version = ">=1.19.0", markers = "python_version >= \"3.9\""} [[package]] name = "boolean-py" @@ -753,7 +750,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} numpy = ">=1.14.0" pandas = ">=1.0.5" patsy = ">=0.5.1" @@ -1273,13 +1269,13 @@ files = [ [[package]] name = "dash" -version = "2.12.1" +version = "2.13.0" description = "A Python framework for building reactive web-apps. Developed by Plotly." optional = false python-versions = ">=3.6" files = [ - {file = "dash-2.12.1-py3-none-any.whl", hash = "sha256:23fcde95e59e353c34712c8fa3e90e784a7247a9e5f6ef47e467add10b7e91ab"}, - {file = "dash-2.12.1.tar.gz", hash = "sha256:c7d3dccafff2d041a371dcf5bbb2a1701a38ca178c12dce93e64207e3aecbaeb"}, + {file = "dash-2.13.0-py3-none-any.whl", hash = "sha256:ca21f01f720652c7e2d16d04d4e27803c2b60c4c2a382e750c3d8d778c06e209"}, + {file = "dash-2.13.0.tar.gz", hash = "sha256:07c192db694b9bb4c87d57b6da877413f2695bfcb1d5c51f08995de7dcdd1e92"}, ] [package.dependencies] @@ -1600,13 +1596,13 @@ ssh = ["paramiko (>=2.4.3)"] [[package]] name = "docutils" -version = "0.17.1" +version = "0.20.1" description = "Docutils -- Python Documentation Utilities" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" files = [ - {file = "docutils-0.17.1-py2.py3-none-any.whl", hash = "sha256:cf316c8370a737a022b72b56874f6602acf974a37a9fba42ec2876387549fc61"}, - {file = "docutils-0.17.1.tar.gz", hash = "sha256:686577d2e4c32380bb50cbb22f575ed742d58168cee37e99117a854bcd88f125"}, + {file = "docutils-0.20.1-py3-none-any.whl", hash = "sha256:96f387a2c5562db4476f09f13bbab2192e764cac08ebbf3a34a95d9b1e4a59d6"}, + {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] [[package]] @@ -1676,16 +1672,17 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] [[package]] name = "fastapi" -version = "0.103.0" +version = "0.103.1" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.7" files = [ - {file = "fastapi-0.103.0-py3-none-any.whl", hash = "sha256:61ab72c6c281205dd0cbaccf503e829a37e0be108d965ac223779a8479243665"}, - {file = "fastapi-0.103.0.tar.gz", hash = "sha256:4166732f5ddf61c33e9fa4664f73780872511e0598d4d5434b1816dc1e6d9421"}, + {file = "fastapi-0.103.1-py3-none-any.whl", hash = "sha256:5e5f17e826dbd9e9b5a5145976c5cd90bcaa61f2bf9a69aca423f2bcebe44d83"}, + {file = "fastapi-0.103.1.tar.gz", hash = "sha256:345844e6a82062f06a096684196aaf96c1198b25c06b72c1311b882aa2d8a35d"}, ] [package.dependencies] +anyio = ">=3.7.1,<4.0.0" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" starlette = ">=0.27.0,<0.28.0" typing-extensions = ">=4.5.0" @@ -1709,18 +1706,21 @@ devel = ["colorama", "json-spec", "jsonschema", "pylint", "pytest", "pytest-benc [[package]] name = "filelock" -version = "3.12.2" +version = "3.12.3" 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.12.3-py3-none-any.whl", hash = "sha256:f067e40ccc40f2b48395a80fcbd4728262fab54e232e090a4063ab804179efeb"}, + {file = "filelock-3.12.3.tar.gz", hash = "sha256:0ecc1dd2ec4672a10c8550a8182f1bd0c0a5088470ecd5a125e45f49472fac3d"}, ] +[package.dependencies] +typing-extensions = {version = ">=4.7.1", markers = "python_version < \"3.11\""} + [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)"] +docs = ["furo (>=2023.7.26)", "sphinx (>=7.1.2)", "sphinx-autodoc-typehints (>=1.24)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3)", "diff-cover (>=7.7)", "pytest (>=7.4)", "pytest-cov (>=4.1)", "pytest-mock (>=3.11.1)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" @@ -1915,13 +1915,13 @@ files = [ [[package]] name = "fsspec" -version = "2023.6.0" +version = "2023.9.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.6.0-py3-none-any.whl", hash = "sha256:1cbad1faef3e391fba6dc005ae9b5bdcbf43005c9167ce78c915549c352c869a"}, - {file = "fsspec-2023.6.0.tar.gz", hash = "sha256:d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"}, + {file = "fsspec-2023.9.0-py3-none-any.whl", hash = "sha256:d55b9ab2a4c1f2b759888ae9f93e40c2aa72c0808132e87e282b549f9e6c4254"}, + {file = "fsspec-2023.9.0.tar.gz", hash = "sha256:4dbf0fefee035b7c6d3bbbe6bc99b2f201f40d4dca95b67c2b719be77bcd917f"}, ] [package.dependencies] @@ -1968,13 +1968,13 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.32" +version = "3.1.34" description = "GitPython is a Python library used to interact with Git repositories" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.32-py3-none-any.whl", hash = "sha256:e3d59b1c2c6ebb9dfa7a184daf3b6dd4914237e7488a1730a6d8f6f5d0b4187f"}, - {file = "GitPython-3.1.32.tar.gz", hash = "sha256:8d9b8cb1e80b9735e8717c9362079d3ce4c6e5ddeebedd0361b228c3a67a62f6"}, + {file = "GitPython-3.1.34-py3-none-any.whl", hash = "sha256:5d3802b98a3bae1c2b8ae0e1ff2e4aa16bcdf02c145da34d092324f599f01395"}, + {file = "GitPython-3.1.34.tar.gz", hash = "sha256:85f7d365d1f6bf677ae51039c1ef67ca59091c7ebd5a3509aa399d4eda02d6dd"}, ] [package.dependencies] @@ -2095,13 +2095,13 @@ test = ["objgraph", "psutil"] [[package]] name = "griffe" -version = "0.35.2" +version = "0.36.1" description = "Signatures for entire Python programs. Extract the structure, the frame, the skeleton of your project, to generate API documentation or find breaking changes in your API." optional = false python-versions = ">=3.8" files = [ - {file = "griffe-0.35.2-py3-none-any.whl", hash = "sha256:9650d6d0369c22f29f2c1bec9548ddc7f448f8ca38698a5799f92f736824e749"}, - {file = "griffe-0.35.2.tar.gz", hash = "sha256:84ecfe3df17454993b8dd485201566609ac6706a2eb22e3f402da2a39f9f6b5f"}, + {file = "griffe-0.36.1-py3-none-any.whl", hash = "sha256:859b653fcde0a0af0e841a0109bac2b63a2f683132ae1ec8dae5fa81e94617a0"}, + {file = "griffe-0.36.1.tar.gz", hash = "sha256:11df63f1c85f605c73e4485de70ec13784049695d228241b0b582364a20c0536"}, ] [package.dependencies] @@ -2254,7 +2254,6 @@ files = [ [package.dependencies] antlr4-python3-runtime = "==4.9.*" -importlib-resources = {version = "*", markers = "python_version < \"3.9\""} omegaconf = ">=2.2,<2.4" packaging = "*" @@ -2296,13 +2295,13 @@ files = [ [[package]] name = "imageio" -version = "2.31.2" +version = "2.31.3" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "imageio-2.31.2-py3-none-any.whl", hash = "sha256:a78fbcb33432042a4d6993c87f3ea1f136d908318ce7dda857846ccff73294de"}, - {file = "imageio-2.31.2.tar.gz", hash = "sha256:ae19221f4a8f118f1c9451e8f5357faeeacdf956198cf374bc8ab00f1ff7d525"}, + {file = "imageio-2.31.3-py3-none-any.whl", hash = "sha256:ea777be55bfa4bd6aee126c7dfa3bf1759bf87be982876c50f1a976d1b65446d"}, + {file = "imageio-2.31.3.tar.gz", hash = "sha256:74c6a832d81b7ad5a8a80976dea58ee033d3e2b99a54990cbd789b4cb0b31461"}, ] [package.dependencies] @@ -2386,13 +2385,13 @@ files = [ [[package]] name = "ipykernel" -version = "6.25.1" +version = "6.25.2" description = "IPython Kernel for Jupyter" optional = false python-versions = ">=3.8" files = [ - {file = "ipykernel-6.25.1-py3-none-any.whl", hash = "sha256:c8a2430b357073b37c76c21c52184db42f6b4b0e438e1eb7df3c4440d120497c"}, - {file = "ipykernel-6.25.1.tar.gz", hash = "sha256:050391364c0977e768e354bdb60cbbfbee7cbb943b1af1618382021136ffd42f"}, + {file = "ipykernel-6.25.2-py3-none-any.whl", hash = "sha256:2e2ee359baba19f10251b99415bb39de1e97d04e1fab385646f24f0596510b77"}, + {file = "ipykernel-6.25.2.tar.gz", hash = "sha256:f468ddd1f17acb48c8ce67fcfa49ba6d46d4f9ac0438c1f441be7c3d1372230b"}, ] [package.dependencies] @@ -2442,13 +2441,13 @@ docs = ["Sphinx (>=1.5)", "myst-nb", "sphinx-book-theme", "sphinx-copybutton", " [[package]] name = "ipython" -version = "8.12.2" +version = "8.15.0" description = "IPython: Productive Interactive Computing" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "ipython-8.12.2-py3-none-any.whl", hash = "sha256:ea8801f15dfe4ffb76dea1b09b847430ffd70d827b41735c64a0638a04103bfc"}, - {file = "ipython-8.12.2.tar.gz", hash = "sha256:c7b80eb7f5a855a88efc971fda506ff7a91c280b42cdae26643e0f601ea281ea"}, + {file = "ipython-8.15.0-py3-none-any.whl", hash = "sha256:45a2c3a529296870a97b7de34eda4a31bee16bc7bf954e07d39abe49caf8f887"}, + {file = "ipython-8.15.0.tar.gz", hash = "sha256:2baeb5be6949eeebf532150f81746f8333e2ccce02de1c7eedde3f23ed5e9f1e"}, ] [package.dependencies] @@ -2456,6 +2455,7 @@ appnope = {version = "*", markers = "sys_platform == \"darwin\""} backcall = "*" colorama = {version = "*", markers = "sys_platform == \"win32\""} decorator = "*" +exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} jedi = ">=0.16" matplotlib-inline = "*" pexpect = {version = ">4.3", markers = "sys_platform != \"win32\""} @@ -2467,9 +2467,9 @@ traitlets = ">=5" typing-extensions = {version = "*", markers = "python_version < \"3.10\""} [package.extras] -all = ["black", "curio", "docrepr", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] +all = ["black", "curio", "docrepr", "exceptiongroup", "ipykernel", "ipyparallel", "ipywidgets", "matplotlib", "matplotlib (!=3.2.0)", "nbconvert", "nbformat", "notebook", "numpy (>=1.21)", "pandas", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "qtconsole", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "trio", "typing-extensions"] black = ["black"] -doc = ["docrepr", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] +doc = ["docrepr", "exceptiongroup", "ipykernel", "matplotlib", "pytest (<7)", "pytest (<7.1)", "pytest-asyncio", "setuptools (>=18.5)", "sphinx (>=1.3)", "sphinx-rtd-theme", "stack-data", "testpath", "typing-extensions"] kernel = ["ipykernel"] nbconvert = ["nbconvert"] nbformat = ["nbformat"] @@ -2937,11 +2937,9 @@ files = [ attrs = ">=22.2.0" fqdn = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} idna = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} isoduration = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} jsonpointer = {version = ">1.13", optional = true, markers = "extra == \"format-nongpl\""} jsonschema-specifications = ">=2023.03.6" -pkgutil-resolve-name = {version = ">=1.3.10", markers = "python_version < \"3.9\""} referencing = ">=0.28.4" rfc3339-validator = {version = "*", optional = true, markers = "extra == \"format-nongpl\""} rfc3986-validator = {version = ">0.1.0", optional = true, markers = "extra == \"format-nongpl\""} @@ -2965,7 +2963,6 @@ files = [ ] [package.dependencies] -importlib-resources = {version = ">=1.4.0", markers = "python_version < \"3.9\""} referencing = ">=0.28.0" [[package]] @@ -3083,13 +3080,13 @@ test = ["click", "pre-commit", "pytest (>=7.0)", "pytest-asyncio (>=0.19.0)", "p [[package]] name = "jupyter-server" -version = "2.7.2" +version = "2.7.3" description = "The backend—i.e. core services, APIs, and REST endpoints—to Jupyter web applications." optional = false python-versions = ">=3.8" files = [ - {file = "jupyter_server-2.7.2-py3-none-any.whl", hash = "sha256:98a375347b580e837e7016007c24680a4261ed8ad7cd35196ac087d229f48e5a"}, - {file = "jupyter_server-2.7.2.tar.gz", hash = "sha256:d64fb4e593907290e5df916e3c9399c15ab2cd7bdb71cbcd1d36452dbfb30523"}, + {file = "jupyter_server-2.7.3-py3-none-any.whl", hash = "sha256:8e4b90380b59d7a1e31086c4692231f2a2ea4cb269f5516e60aba72ce8317fc9"}, + {file = "jupyter_server-2.7.3.tar.gz", hash = "sha256:d4916c8581c4ebbc534cebdaa8eca2478d9f3bfdd88eae29fcab0120eac57649"}, ] [package.dependencies] @@ -3471,6 +3468,21 @@ files = [ [package.dependencies] six = ">=1.4.1" +[[package]] +name = "lazy-loader" +version = "0.3" +description = "lazy_loader" +optional = false +python-versions = ">=3.7" +files = [ + {file = "lazy_loader-0.3-py3-none-any.whl", hash = "sha256:1e9e76ee8631e264c62ce10006718e80b2cfc74340d17d1031e0f84af7478554"}, + {file = "lazy_loader-0.3.tar.gz", hash = "sha256:3b68898e34f5b2a29daaaac172c6555512d0f32074f147e2254e4a6d9d838f37"}, +] + +[package.extras] +lint = ["pre-commit (>=3.3)"] +test = ["pytest (>=7.4)", "pytest-cov (>=4.1)"] + [[package]] name = "lazy-object-proxy" version = "1.9.0" @@ -3536,36 +3548,35 @@ testing = ["black", "isort", "pytest (>=6,!=7.0.0)", "pytest-xdist (>=2)", "twin [[package]] name = "llvmlite" -version = "0.38.0" +version = "0.40.1" description = "lightweight wrapper around basic LLVM functionality" optional = false -python-versions = ">=3.7,<3.11" -files = [ - {file = "llvmlite-0.38.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0497a19428083a0544663732a925994d74e3b15c3c94946c6e7b6bf21a391264"}, - {file = "llvmlite-0.38.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b040d392e998582883cd680e81afb4cd2d331d69cb93d605c735bfd2caa09805"}, - {file = "llvmlite-0.38.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b88cc3c6c0010df8a720c777ef1c0879d304404e0727c4ac9e3dc98d5815e10"}, - {file = "llvmlite-0.38.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87805405ccdd1add51f51d85997fbff01c920adf4da600dbe197e1f3eebd1e57"}, - {file = "llvmlite-0.38.0-cp310-cp310-win32.whl", hash = "sha256:17140e1462aa7f9250428fff7dd24187ea30498034a832bdb7385cbdc28fd4bf"}, - {file = "llvmlite-0.38.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0f11feda33f2b49abf5acc11828eebb3098050bbf6cd1cd75e2b05eb7676cb1"}, - {file = "llvmlite-0.38.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:f7a438917c30e87ac79bb89c773c100560dc346e0f0b03aabd88a6f6de3556c6"}, - {file = "llvmlite-0.38.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e8bbb8e97d7cc0b6d124ba9f8577955fdc7639715f925c410abe02d2bc92862"}, - {file = "llvmlite-0.38.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5845432b4660c530d27c46434b9669290f205d9b1c1e02e52f43f6d11782b4be"}, - {file = "llvmlite-0.38.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a91e25488609cc91db91de206e023b7fe0889ac007adb31c713e685384497ba"}, - {file = "llvmlite-0.38.0-cp37-cp37m-win32.whl", hash = "sha256:2426bfff67fdab577c7d5321c252d880434911caa6f9152f5be98da71b30e084"}, - {file = "llvmlite-0.38.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6b48c8fffc3512a2e97c6f70deb09eb49c419af66ced79e317cc2323117dcec6"}, - {file = "llvmlite-0.38.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e1095557a27b041f1217036e568a5449d4b385c2415cb4316b2f5476f96e9a58"}, - {file = "llvmlite-0.38.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:081d9c36d8e012b86bac02af49e225d883975ab5978ba33c3cc291474620c84d"}, - {file = "llvmlite-0.38.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:63e178c6f7872a39572e210cb266fb6db6386f5e622e2d8c79491b6d8c7aa942"}, - {file = "llvmlite-0.38.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48558fddce5ff351f9de98beff35888aa351598e5635b3b91d67ec9e10d458cc"}, - {file = "llvmlite-0.38.0-cp38-cp38-win32.whl", hash = "sha256:7e07bacc2bb2ef1bf33dbf64d4bd13330baeae2287902100b144e43bcd1b066b"}, - {file = "llvmlite-0.38.0-cp38-cp38-win_amd64.whl", hash = "sha256:37b66bf3624dd0b3739b4cf1b3cc3735dbe7799bc90d2a7a79a54b0ce37e1a38"}, - {file = "llvmlite-0.38.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f43861f382b954fbf2ff88db5f13b00ac11ec4353445d3ba80e1eadcdd06c149"}, - {file = "llvmlite-0.38.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fb7cb2907814dd03a152549d1c4dfee4854881d9cc7da85414b77903a681aa6"}, - {file = "llvmlite-0.38.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c967b96d708556597e003217fd99f0c20e73d09c91d6d5054c538becc396ba79"}, - {file = "llvmlite-0.38.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f7b2838898c80557e959f83fb28d260e5e2301396f34830f3ec6811ae53f6be"}, - {file = "llvmlite-0.38.0-cp39-cp39-win32.whl", hash = "sha256:de321a680690d1ce040f34294d215ed0ac5fdcf7c98f044d11ac9b9d9ebc969f"}, - {file = "llvmlite-0.38.0-cp39-cp39-win_amd64.whl", hash = "sha256:70734d46c2611f3fe765985fe356aaec393dc79bbd735f7f4d23f910b5148dc3"}, - {file = "llvmlite-0.38.0.tar.gz", hash = "sha256:a99d166ccf3b116f3b9ed23b9b70ba2415640a9c978f3aaa13fad49c58f4965c"}, +python-versions = ">=3.8" +files = [ + {file = "llvmlite-0.40.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:84ce9b1c7a59936382ffde7871978cddcda14098e5a76d961e204523e5c372fb"}, + {file = "llvmlite-0.40.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3673c53cb21c65d2ff3704962b5958e967c6fc0bd0cff772998face199e8d87b"}, + {file = "llvmlite-0.40.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bba2747cf5b4954e945c287fe310b3fcc484e2a9d1b0c273e99eb17d103bb0e6"}, + {file = "llvmlite-0.40.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbd5e82cc990e5a3e343a3bf855c26fdfe3bfae55225f00efd01c05bbda79918"}, + {file = "llvmlite-0.40.1-cp310-cp310-win32.whl", hash = "sha256:09f83ea7a54509c285f905d968184bba00fc31ebf12f2b6b1494d677bb7dde9b"}, + {file = "llvmlite-0.40.1-cp310-cp310-win_amd64.whl", hash = "sha256:7b37297f3cbd68d14a97223a30620589d98ad1890e5040c9e5fc181063f4ed49"}, + {file = "llvmlite-0.40.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a66a5bd580951751b4268f4c3bddcef92682814d6bc72f3cd3bb67f335dd7097"}, + {file = "llvmlite-0.40.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:467b43836b388eaedc5a106d76761e388dbc4674b2f2237bc477c6895b15a634"}, + {file = "llvmlite-0.40.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c23edd196bd797dc3a7860799054ea3488d2824ecabc03f9135110c2e39fcbc"}, + {file = "llvmlite-0.40.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a36d9f244b6680cb90bbca66b146dabb2972f4180c64415c96f7c8a2d8b60a36"}, + {file = "llvmlite-0.40.1-cp311-cp311-win_amd64.whl", hash = "sha256:5b3076dc4e9c107d16dc15ecb7f2faf94f7736cd2d5e9f4dc06287fd672452c1"}, + {file = "llvmlite-0.40.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4a7525db121f2e699809b539b5308228854ccab6693ecb01b52c44a2f5647e20"}, + {file = "llvmlite-0.40.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:84747289775d0874e506f907a4513db889471607db19b04de97d144047fec885"}, + {file = "llvmlite-0.40.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e35766e42acef0fe7d1c43169a8ffc327a47808fae6a067b049fe0e9bbf84dd5"}, + {file = "llvmlite-0.40.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cda71de10a1f48416309e408ea83dab5bf36058f83e13b86a2961defed265568"}, + {file = "llvmlite-0.40.1-cp38-cp38-win32.whl", hash = "sha256:96707ebad8b051bbb4fc40c65ef93b7eeee16643bd4d579a14d11578e4b7a647"}, + {file = "llvmlite-0.40.1-cp38-cp38-win_amd64.whl", hash = "sha256:e44f854dc11559795bcdeaf12303759e56213d42dabbf91a5897aa2d8b033810"}, + {file = "llvmlite-0.40.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f643d15aacd0b0b0dc8b74b693822ba3f9a53fa63bc6a178c2dba7cc88f42144"}, + {file = "llvmlite-0.40.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:39a0b4d0088c01a469a5860d2e2d7a9b4e6a93c0f07eb26e71a9a872a8cadf8d"}, + {file = "llvmlite-0.40.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9329b930d699699846623054121ed105fd0823ed2180906d3b3235d361645490"}, + {file = "llvmlite-0.40.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2dbbb8424037ca287983b115a29adf37d806baf7e1bf4a67bd2cffb74e085ed"}, + {file = "llvmlite-0.40.1-cp39-cp39-win32.whl", hash = "sha256:e74e7bec3235a1e1c9ad97d897a620c5007d0ed80c32c84c1d787e7daa17e4ec"}, + {file = "llvmlite-0.40.1-cp39-cp39-win_amd64.whl", hash = "sha256:ff8f31111bb99d135ff296757dc81ab36c2dee54ed4bd429158a96da9807c316"}, + {file = "llvmlite-0.40.1.tar.gz", hash = "sha256:5cdb0d45df602099d833d50bd9e81353a5e036242d3c003c5b294fc61d1986b4"}, ] [[package]] @@ -3618,13 +3629,13 @@ testing = ["coverage", "pyyaml"] [[package]] name = "markdown-it-py" -version = "2.2.0" +version = "3.0.0" description = "Python port of markdown-it. Markdown parsing, done right!" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "markdown-it-py-2.2.0.tar.gz", hash = "sha256:7c9a5e412688bc771c67432cbfebcdd686c93ce6484913dccf06cb5a0bea35a1"}, - {file = "markdown_it_py-2.2.0-py3-none-any.whl", hash = "sha256:5a35f8d1870171d9acc47b99612dc146129b631baf04970128b568f190d0cc30"}, + {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] @@ -3637,7 +3648,7 @@ compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0 linkify = ["linkify-it-py (>=1,<3)"] plugins = ["mdit-py-plugins"] profiling = ["gprof2dot"] -rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] +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]] @@ -3788,21 +3799,21 @@ files = [ [[package]] name = "mdit-py-plugins" -version = "0.3.5" +version = "0.4.0" description = "Collection of plugins for markdown-it-py" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "mdit-py-plugins-0.3.5.tar.gz", hash = "sha256:eee0adc7195e5827e17e02d2a258a2ba159944a0748f59c5099a4a27f78fcf6a"}, - {file = "mdit_py_plugins-0.3.5-py3-none-any.whl", hash = "sha256:ca9a0714ea59a24b2b044a1831f48d817dd0c817e84339f20e7889f392d77c4e"}, + {file = "mdit_py_plugins-0.4.0-py3-none-any.whl", hash = "sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9"}, + {file = "mdit_py_plugins-0.4.0.tar.gz", hash = "sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b"}, ] [package.dependencies] -markdown-it-py = ">=1.0.0,<3.0.0" +markdown-it-py = ">=1.0.0,<4.0.0" [package.extras] code-style = ["pre-commit"] -rtd = ["attrs", "myst-parser (>=0.16.1,<0.17.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] +rtd = ["myst-parser", "sphinx-book-theme"] testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] [[package]] @@ -3871,27 +3882,27 @@ sqlserver = ["mlflow-dbstore"] [[package]] name = "monai" -version = "1.1.0" +version = "1.2.0" description = "AI Toolkit for Healthcare Imaging" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "monai-1.1.0-202212191849-py3-none-any.whl", hash = "sha256:28b47fc552309f1974a347fca6771969f25e98c228ef3a53a62eae250f3c0b8d"}, + {file = "monai-1.2.0-202306081546-py3-none-any.whl", hash = "sha256:941e3d1cd0ad9af46d6acc77a95c3ea6dd93b0046b71bb15125e6501db3d70f1"}, ] [package.dependencies] itk = {version = ">=5.2", optional = true, markers = "extra == \"itk\""} -numpy = ">=1.17" -torch = ">=1.8" +numpy = ">=1.20" +torch = ">=1.9" [package.extras] -all = ["cucim (>=22.8.1)", "einops", "fire", "gdown (>=4.4.0)", "h5py", "imagecodecs", "itk (>=5.2)", "jsonschema", "lmdb", "matplotlib", "mlflow", "nibabel", "ninja", "nni", "openslide-python (==1.1.2)", "optuna", "pandas", "pillow", "psutil", "pydicom", "pynrrd", "pytorch-ignite (==0.4.10)", "pyyaml", "scikit-image (>=0.14.2)", "tensorboard", "tensorboardX", "tifffile", "torchvision", "tqdm (>=4.47.0)", "transformers (<4.22)"] +all = ["clearml (>=1.10.0rc0)", "cucim (>=22.8.1)", "einops", "fire", "gdown (>=4.4.0)", "h5py", "imagecodecs", "itk (>=5.2)", "jsonschema", "lmdb", "matplotlib", "mlflow (>=1.28.0)", "nibabel", "ninja", "nni", "onnx (>=1.13.0)", "onnxruntime", "openslide-python (==1.1.2)", "optuna", "pandas", "pillow", "psutil", "pydicom", "pynrrd", "pytorch-ignite (==0.4.11)", "pyyaml", "scikit-image (>=0.14.2)", "tensorboard", "tensorboardX", "tifffile", "torchvision", "tqdm (>=4.47.0)", "transformers (<4.22)"] cucim = ["cucim (>=22.8.1)"] einops = ["einops"] fire = ["fire"] gdown = ["gdown (>=4.4.0)"] h5py = ["h5py"] -ignite = ["pytorch-ignite (==0.4.10)"] +ignite = ["pytorch-ignite (==0.4.11)"] imagecodecs = ["imagecodecs"] itk = ["itk (>=5.2)"] jsonschema = ["jsonschema"] @@ -3900,7 +3911,10 @@ matplotlib = ["matplotlib"] mlflow = ["mlflow"] nibabel = ["nibabel"] ninja = ["ninja"] +nni = ["nni"] +onnx = ["onnx (>=1.13.0)", "onnxruntime"] openslide = ["openslide-python (==1.1.2)"] +optuna = ["optuna"] pandas = ["pandas"] pillow = ["pillow (!=8.3.0)"] psutil = ["psutil"] @@ -4122,29 +4136,29 @@ files = [ [[package]] name = "myst-parser" -version = "0.18.1" -description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." +version = "2.0.0" +description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "myst-parser-0.18.1.tar.gz", hash = "sha256:79317f4bb2c13053dd6e64f9da1ba1da6cd9c40c8a430c447a7b146a594c246d"}, - {file = "myst_parser-0.18.1-py3-none-any.whl", hash = "sha256:61b275b85d9f58aa327f370913ae1bec26ebad372cc99f3ab85c8ec3ee8d9fb8"}, + {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, + {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, ] [package.dependencies] -docutils = ">=0.15,<0.20" +docutils = ">=0.16,<0.21" jinja2 = "*" -markdown-it-py = ">=1.0.0,<3.0.0" -mdit-py-plugins = ">=0.3.1,<0.4.0" +markdown-it-py = ">=3.0,<4.0" +mdit-py-plugins = ">=0.4,<1.0" pyyaml = "*" -sphinx = ">=4,<6" -typing-extensions = "*" +sphinx = ">=6,<8" [package.extras] -code-style = ["pre-commit (>=2.12,<3.0)"] -linkify = ["linkify-it-py (>=1.0,<2.0)"] -rtd = ["ipython", "sphinx-book-theme", "sphinx-design", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=6,<7)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx (<5.2)", "sphinx-pytest"] +code-style = ["pre-commit (>=3.0,<4.0)"] +linkify = ["linkify-it-py (>=2.0,<3.0)"] +rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.8.2,<0.9.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] [[package]] name = "nbclassic" @@ -4205,13 +4219,13 @@ test = ["flaky", "ipykernel (>=6.19.3)", "ipython", "ipywidgets", "nbconvert (>= [[package]] name = "nbconvert" -version = "7.7.4" +version = "7.8.0" description = "Converting Jupyter Notebooks" optional = false python-versions = ">=3.8" files = [ - {file = "nbconvert-7.7.4-py3-none-any.whl", hash = "sha256:ace26f4386d08eb5c55833596a942048c5502a95e05590cb523826a749a40a37"}, - {file = "nbconvert-7.7.4.tar.gz", hash = "sha256:1113d039fa3fc3a846ffa5a3b0a019e85aaa94c566a09fa0c400fb7638e46087"}, + {file = "nbconvert-7.8.0-py3-none-any.whl", hash = "sha256:aec605e051fa682ccc7934ccc338ba1e8b626cfadbab0db592106b630f63f0f2"}, + {file = "nbconvert-7.8.0.tar.gz", hash = "sha256:f5bc15a1247e14dd41ceef0c0a3bc70020e016576eb0578da62f1c5b4f950479"}, ] [package.dependencies] @@ -4416,75 +4430,76 @@ test = ["pytest", "pytest-console-scripts", "pytest-jupyter", "pytest-tornasync" [[package]] name = "numba" -version = "0.55.2" +version = "0.57.1" description = "compiling Python code using LLVM" optional = false -python-versions = ">=3.7,<3.11" -files = [ - {file = "numba-0.55.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:dd05f7c0ce64b6977596aa4e5a44747c6ef414d7989da1c7672337c54381a5ef"}, - {file = "numba-0.55.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e36232eccd172c583b1f021c5c48744c087ae6fc9dc5c5f0dd2cb2286e517bf8"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:25410557d0deb1d97397b71e142a36772133986a7dd4fe2935786e2dd149245f"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:676c081162cc9403706071c1d1d42e479c0741551ab28096ba13859a2e3e9b80"}, - {file = "numba-0.55.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2665ef28e900b3a55bf370daa81c12ebc64cd434116accd60c38a95a159a3182"}, - {file = "numba-0.55.2-cp310-cp310-win32.whl", hash = "sha256:d7ac9ea5feef9536ab8bfbbb3ded1a0617ea8794d7547800d535b7857800f996"}, - {file = "numba-0.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:29b89a68af162acf87adeb8fbf01f6bb1effae4711b28146f95108d82e905624"}, - {file = "numba-0.55.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:6e0f9b5d1c8ea1bdef39b0ad921a9bbf0cc4a88e76d722d756c68f1653787c35"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:135fb7694928f9f57b4ff5b1be58f20f4771fedd1680636a9affdead96051959"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:de1f93bd7e2d431451aec20a52ac651a020e98a4ba46797fad860bba338a7e64"}, - {file = "numba-0.55.2-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3eaf53e73e700370163e58257257299ac0d46fea4f244bf5476e4635bc31d808"}, - {file = "numba-0.55.2-cp37-cp37m-win32.whl", hash = "sha256:da4485e0f0b9562f39c78887149b33d13d787aa696553c9257b95575122905ed"}, - {file = "numba-0.55.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5559c6684bf6cce7a22c656d8fef3e7c38ff5fec5153abef5955f6f7cae9f102"}, - {file = "numba-0.55.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a85779adc5234f7857615d1bd2c7b514314521f9f0163c33017707ed9816e6e6"}, - {file = "numba-0.55.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:16a52a0641c342b09b39f6762dcbe3846e44aa9baaaf4703b2ca42a3aee7346f"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:46715180f87d5a1f3e4077d207ade66c96fc01159f5b7d49cee2d6ffb9e6539f"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:d1c3cef3289fefb5673ceae32024ab5a8a08d4f4380bcb8348d01f1ba570ccff"}, - {file = "numba-0.55.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:68bb33eaef1d6155fc1ae4fa6c915b8a42e5052c89a58742254eaad072eab118"}, - {file = "numba-0.55.2-cp38-cp38-win32.whl", hash = "sha256:dfddd633141608a09cbce275fb9fe7aa514918625ace20b0e587898a2d93c030"}, - {file = "numba-0.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:a669212aa66ffee4ad778016ac3819add33f9bcb96b4c384d3099531dd175085"}, - {file = "numba-0.55.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:dcde1a1a3a430fb5f83c7e095b0b6ac7adb5595f50a3ee05babb2964f31613c4"}, - {file = "numba-0.55.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69b2e823efa40d32b259f5c094476dde2226b92032f17015d8cd7c10472654ce"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:20de0139d2267c8f0e2470d4f88540446cd1bf40de0f29f31b7ab9bf25d49b45"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:09ff4d690abb05ffbb8a29a96d1cf35b46887a26796d3670de104beeec73d639"}, - {file = "numba-0.55.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1105449247f338e49d63eb04a4aaa5c440bb5435df00f718c8e6e7afad841bb0"}, - {file = "numba-0.55.2-cp39-cp39-win32.whl", hash = "sha256:32649584144c35ced239937ab2c416ab22bbc1490ef8d90609c30fff9f6aa1b8"}, - {file = "numba-0.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:8d5760a1e6a48d98d6b9cf774e4d2a64813d981cca60d7b7356af61195a6ca17"}, - {file = "numba-0.55.2.tar.gz", hash = "sha256:e428d9e11d9ba592849ccc9f7a009003eb7d30612007e365afe743ce7118c6f4"}, -] - -[package.dependencies] -llvmlite = ">=0.38.0rc1,<0.39" -numpy = ">=1.18,<1.23" -setuptools = "*" +python-versions = ">=3.8" +files = [ + {file = "numba-0.57.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db8268eb5093cae2288942a8cbd69c9352f6fe6e0bfa0a9a27679436f92e4248"}, + {file = "numba-0.57.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:643cb09a9ba9e1bd8b060e910aeca455e9442361e80fce97690795ff9840e681"}, + {file = "numba-0.57.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:53e9fab973d9e82c9f8449f75994a898daaaf821d84f06fbb0b9de2293dd9306"}, + {file = "numba-0.57.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c0602e4f896e6a6d844517c3ab434bc978e7698a22a733cc8124465898c28fa8"}, + {file = "numba-0.57.1-cp310-cp310-win32.whl", hash = "sha256:3d6483c27520d16cf5d122868b79cad79e48056ecb721b52d70c126bed65431e"}, + {file = "numba-0.57.1-cp310-cp310-win_amd64.whl", hash = "sha256:a32ee263649aa3c3587b833d6311305379529570e6c20deb0c6f4fb5bc7020db"}, + {file = "numba-0.57.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c078f84b5529a7fdb8413bb33d5100f11ec7b44aa705857d9eb4e54a54ff505"}, + {file = "numba-0.57.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e447c4634d1cc99ab50d4faa68f680f1d88b06a2a05acf134aa6fcc0342adeca"}, + {file = "numba-0.57.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4838edef2df5f056cb8974670f3d66562e751040c448eb0b67c7e2fec1726649"}, + {file = "numba-0.57.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9b17fbe4a69dcd9a7cd49916b6463cd9a82af5f84911feeb40793b8bce00dfa7"}, + {file = "numba-0.57.1-cp311-cp311-win_amd64.whl", hash = "sha256:93df62304ada9b351818ba19b1cfbddaf72cd89348e81474326ca0b23bf0bae1"}, + {file = "numba-0.57.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8e00ca63c5d0ad2beeb78d77f087b3a88c45ea9b97e7622ab2ec411a868420ee"}, + {file = "numba-0.57.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ff66d5b022af6c7d81ddbefa87768e78ed4f834ab2da6ca2fd0d60a9e69b94f5"}, + {file = "numba-0.57.1-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:60ec56386076e9eed106a87c96626d5686fbb16293b9834f0849cf78c9491779"}, + {file = "numba-0.57.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6c057ccedca95df23802b6ccad86bb318be624af45b5a38bb8412882be57a681"}, + {file = "numba-0.57.1-cp38-cp38-win32.whl", hash = "sha256:5a82bf37444039c732485c072fda21a361790ed990f88db57fd6941cd5e5d307"}, + {file = "numba-0.57.1-cp38-cp38-win_amd64.whl", hash = "sha256:9bcc36478773ce838f38afd9a4dfafc328d4ffb1915381353d657da7f6473282"}, + {file = "numba-0.57.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ae50c8c90c2ce8057f9618b589223e13faa8cbc037d8f15b4aad95a2c33a0582"}, + {file = "numba-0.57.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9a1b2b69448e510d672ff9a6b18d2db9355241d93c6a77677baa14bec67dc2a0"}, + {file = "numba-0.57.1-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3cf78d74ad9d289fbc1e5b1c9f2680fca7a788311eb620581893ab347ec37a7e"}, + {file = "numba-0.57.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f47dd214adc5dcd040fe9ad2adbd2192133c9075d2189ce1b3d5f9d72863ef05"}, + {file = "numba-0.57.1-cp39-cp39-win32.whl", hash = "sha256:a3eac19529956185677acb7f01864919761bfffbb9ae04bbbe5e84bbc06cfc2b"}, + {file = "numba-0.57.1-cp39-cp39-win_amd64.whl", hash = "sha256:9587ba1bf5f3035575e45562ada17737535c6d612df751e811d702693a72d95e"}, + {file = "numba-0.57.1.tar.gz", hash = "sha256:33c0500170d213e66d90558ad6aca57d3e03e97bb11da82e6d87ab793648cb17"}, +] + +[package.dependencies] +llvmlite = "==0.40.*" +numpy = ">=1.21,<1.25" [[package]] name = "numpy" -version = "1.22.4" -description = "NumPy is the fundamental package for array computing with Python." +version = "1.24.4" +description = "Fundamental package for array computing in Python" optional = false python-versions = ">=3.8" files = [ - {file = "numpy-1.22.4-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:ba9ead61dfb5d971d77b6c131a9dbee62294a932bf6a356e48c75ae684e635b3"}, - {file = "numpy-1.22.4-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:1ce7ab2053e36c0a71e7a13a7475bd3b1f54750b4b433adc96313e127b870887"}, - {file = "numpy-1.22.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7228ad13744f63575b3a972d7ee4fd61815b2879998e70930d4ccf9ec721dce0"}, - {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:43a8ca7391b626b4c4fe20aefe79fec683279e31e7c79716863b4b25021e0e74"}, - {file = "numpy-1.22.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a911e317e8c826ea632205e63ed8507e0dc877dcdc49744584dfc363df9ca08c"}, - {file = "numpy-1.22.4-cp310-cp310-win32.whl", hash = "sha256:9ce7df0abeabe7fbd8ccbf343dc0db72f68549856b863ae3dd580255d009648e"}, - {file = "numpy-1.22.4-cp310-cp310-win_amd64.whl", hash = "sha256:3e1ffa4748168e1cc8d3cde93f006fe92b5421396221a02f2274aab6ac83b077"}, - {file = "numpy-1.22.4-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:59d55e634968b8f77d3fd674a3cf0b96e85147cd6556ec64ade018f27e9479e1"}, - {file = "numpy-1.22.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c1d937820db6e43bec43e8d016b9b3165dcb42892ea9f106c70fb13d430ffe72"}, - {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4c5d5eb2ec8da0b4f50c9a843393971f31f1d60be87e0fb0917a49133d257d6"}, - {file = "numpy-1.22.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64f56fc53a2d18b1924abd15745e30d82a5782b2cab3429aceecc6875bd5add0"}, - {file = "numpy-1.22.4-cp38-cp38-win32.whl", hash = "sha256:fb7a980c81dd932381f8228a426df8aeb70d59bbcda2af075b627bbc50207cba"}, - {file = "numpy-1.22.4-cp38-cp38-win_amd64.whl", hash = "sha256:e96d7f3096a36c8754207ab89d4b3282ba7b49ea140e4973591852c77d09eb76"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:4c6036521f11a731ce0648f10c18ae66d7143865f19f7299943c985cdc95afb5"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:b89bf9b94b3d624e7bb480344e91f68c1c6c75f026ed6755955117de00917a7c"}, - {file = "numpy-1.22.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2d487e06ecbf1dc2f18e7efce82ded4f705f4bd0cd02677ffccfb39e5c284c7e"}, - {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3eb268dbd5cfaffd9448113539e44e2dd1c5ca9ce25576f7c04a5453edc26fa"}, - {file = "numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37431a77ceb9307c28382c9773da9f306435135fae6b80b62a11c53cfedd8802"}, - {file = "numpy-1.22.4-cp39-cp39-win32.whl", hash = "sha256:cc7f00008eb7d3f2489fca6f334ec19ca63e31371be28fd5dad955b16ec285bd"}, - {file = "numpy-1.22.4-cp39-cp39-win_amd64.whl", hash = "sha256:f0725df166cf4785c0bc4cbfb320203182b1ecd30fee6e541c8752a92df6aa32"}, - {file = "numpy-1.22.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0791fbd1e43bf74b3502133207e378901272f3c156c4df4954cad833b1380207"}, - {file = "numpy-1.22.4.zip", hash = "sha256:425b390e4619f58d8526b3dcf656dde069133ae5c240229821f01b5f44ea07af"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0bfb52d2169d58c1cdb8cc1f16989101639b34c7d3ce60ed70b19c63eba0b64"}, + {file = "numpy-1.24.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed094d4f0c177b1b8e7aa9cba7d6ceed51c0e569a5318ac0ca9a090680a6a1b1"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79fc682a374c4a8ed08b331bef9c5f582585d1048fa6d80bc6c35bc384eee9b4"}, + {file = "numpy-1.24.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ffe43c74893dbf38c2b0a1f5428760a1a9c98285553c89e12d70a96a7f3a4d6"}, + {file = "numpy-1.24.4-cp310-cp310-win32.whl", hash = "sha256:4c21decb6ea94057331e111a5bed9a79d335658c27ce2adb580fb4d54f2ad9bc"}, + {file = "numpy-1.24.4-cp310-cp310-win_amd64.whl", hash = "sha256:b4bea75e47d9586d31e892a7401f76e909712a0fd510f58f5337bea9572c571e"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f136bab9c2cfd8da131132c2cf6cc27331dd6fae65f95f69dcd4ae3c3639c810"}, + {file = "numpy-1.24.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e2926dac25b313635e4d6cf4dc4e51c8c0ebfed60b801c799ffc4c32bf3d1254"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:222e40d0e2548690405b0b3c7b21d1169117391c2e82c378467ef9ab4c8f0da7"}, + {file = "numpy-1.24.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7215847ce88a85ce39baf9e89070cb860c98fdddacbaa6c0da3ffb31b3350bd5"}, + {file = "numpy-1.24.4-cp311-cp311-win32.whl", hash = "sha256:4979217d7de511a8d57f4b4b5b2b965f707768440c17cb70fbf254c4b225238d"}, + {file = "numpy-1.24.4-cp311-cp311-win_amd64.whl", hash = "sha256:b7b1fc9864d7d39e28f41d089bfd6353cb5f27ecd9905348c24187a768c79694"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1452241c290f3e2a312c137a9999cdbf63f78864d63c79039bda65ee86943f61"}, + {file = "numpy-1.24.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:04640dab83f7c6c85abf9cd729c5b65f1ebd0ccf9de90b270cd61935eef0197f"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5425b114831d1e77e4b5d812b69d11d962e104095a5b9c3b641a218abcc050e"}, + {file = "numpy-1.24.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd80e219fd4c71fc3699fc1dadac5dcf4fd882bfc6f7ec53d30fa197b8ee22dc"}, + {file = "numpy-1.24.4-cp38-cp38-win32.whl", hash = "sha256:4602244f345453db537be5314d3983dbf5834a9701b7723ec28923e2889e0bb2"}, + {file = "numpy-1.24.4-cp38-cp38-win_amd64.whl", hash = "sha256:692f2e0f55794943c5bfff12b3f56f99af76f902fc47487bdfe97856de51a706"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:2541312fbf09977f3b3ad449c4e5f4bb55d0dbf79226d7724211acc905049400"}, + {file = "numpy-1.24.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9667575fb6d13c95f1b36aca12c5ee3356bf001b714fc354eb5465ce1609e62f"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a86ed21e4f87050382c7bc96571755193c4c1392490744ac73d660e8f564a9"}, + {file = "numpy-1.24.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d11efb4dbecbdf22508d55e48d9c8384db795e1b7b51ea735289ff96613ff74d"}, + {file = "numpy-1.24.4-cp39-cp39-win32.whl", hash = "sha256:6620c0acd41dbcb368610bb2f4d83145674040025e5536954782467100aa8835"}, + {file = "numpy-1.24.4-cp39-cp39-win_amd64.whl", hash = "sha256:befe2bf740fd8373cf56149a5c23a0f601e82869598d41f8e188a0e9869926f8"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:31f13e25b4e304632a4619d0e0777662c2ffea99fcae2029556b17d8ff958aef"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95f7ac6540e95bc440ad77f56e520da5bf877f87dca58bd095288dce8940532a"}, + {file = "numpy-1.24.4-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e98f220aa76ca2a977fe435f5b04d7b3470c0a2e6312907b37ba6068f26787f2"}, + {file = "numpy-1.24.4.tar.gz", hash = "sha256:80f5e3a4e498641401868df4208b74581206afbee7cf7b8329daae82676d9463"}, ] [[package]] @@ -4505,6 +4520,67 @@ sphinx = ">=4.2" [package.extras] testing = ["matplotlib", "pytest", "pytest-cov"] +[[package]] +name = "nvidia-cublas-cu11" +version = "11.10.3.66" +description = "CUBLAS native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cublas_cu11-11.10.3.66-py3-none-manylinux1_x86_64.whl", hash = "sha256:d32e4d75f94ddfb93ea0a5dda08389bcc65d8916a25cb9f37ac89edaeed3bded"}, + {file = "nvidia_cublas_cu11-11.10.3.66-py3-none-win_amd64.whl", hash = "sha256:8ac17ba6ade3ed56ab898a036f9ae0756f1e81052a317bf98f8c6d18dc3ae49e"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cuda-nvrtc-cu11" +version = "11.7.99" +description = "NVRTC native runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-2-py3-none-manylinux1_x86_64.whl", hash = "sha256:9f1562822ea264b7e34ed5930567e89242d266448e936b85bc97a3370feabb03"}, + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-py3-none-manylinux1_x86_64.whl", hash = "sha256:f7d9610d9b7c331fa0da2d1b2858a4a8315e6d49765091d28711c8946e7425e7"}, + {file = "nvidia_cuda_nvrtc_cu11-11.7.99-py3-none-win_amd64.whl", hash = "sha256:f2effeb1309bdd1b3854fc9b17eaf997808f8b25968ce0c7070945c4265d64a3"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cuda-runtime-cu11" +version = "11.7.99" +description = "CUDA Runtime native Libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cuda_runtime_cu11-11.7.99-py3-none-manylinux1_x86_64.whl", hash = "sha256:cc768314ae58d2641f07eac350f40f99dcb35719c4faff4bc458a7cd2b119e31"}, + {file = "nvidia_cuda_runtime_cu11-11.7.99-py3-none-win_amd64.whl", hash = "sha256:bc77fa59a7679310df9d5c70ab13c4e34c64ae2124dd1efd7e5474b71be125c7"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + +[[package]] +name = "nvidia-cudnn-cu11" +version = "8.5.0.96" +description = "cuDNN runtime libraries" +optional = false +python-versions = ">=3" +files = [ + {file = "nvidia_cudnn_cu11-8.5.0.96-2-py3-none-manylinux1_x86_64.whl", hash = "sha256:402f40adfc6f418f9dae9ab402e773cfed9beae52333f6d86ae3107a1b9527e7"}, + {file = "nvidia_cudnn_cu11-8.5.0.96-py3-none-manylinux1_x86_64.whl", hash = "sha256:71f8111eb830879ff2836db3cccf03bbd735df9b0d17cd93761732ac50a8a108"}, +] + +[package.dependencies] +setuptools = "*" +wheel = "*" + [[package]] name = "oauthlib" version = "3.2.2" @@ -4554,11 +4630,11 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\" and python_version >= \"3.8\""}, + {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, + {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, + {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, - {version = ">=1.17.3", markers = "(platform_system != \"Darwin\" and platform_system != \"Linux\") and python_version >= \"3.8\" and python_version < \"3.9\" or platform_system != \"Darwin\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_machine != \"aarch64\" or platform_machine != \"arm64\" and python_version >= \"3.8\" and python_version < \"3.9\" and platform_system != \"Linux\" or (platform_machine != \"arm64\" and platform_machine != \"aarch64\") and python_version >= \"3.8\" and python_version < \"3.9\""}, - {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\""}, - {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""}, ] [[package]] @@ -4691,7 +4767,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, + {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] python-dateutil = ">=2.8.1" pytz = ">=2020.1" @@ -4943,17 +5020,6 @@ files = [ docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] -[[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.10.0" @@ -5030,54 +5096,54 @@ virtualenv = ">=20.10.0" [[package]] name = "prefect" -version = "2.11.5" +version = "2.12.1" description = "Workflow orchestration and management." optional = false python-versions = ">=3.8" files = [ - {file = "prefect-2.11.5-py3-none-any.whl", hash = "sha256:a7f49155c9a8abd751faf5aa25b54d3e8b1da00adcbb384ab17988c35f8020ec"}, - {file = "prefect-2.11.5.tar.gz", hash = "sha256:7dd2ca1d95d34dc50be4812821def5354a56af6274b23348953d3b1f4698497e"}, + {file = "prefect-2.12.1-py3-none-any.whl", hash = "sha256:57a15edcefc7aaa79e4c587bc4fdb6ade1cc90d0233b4539ff5188c5388c8f0b"}, + {file = "prefect-2.12.1.tar.gz", hash = "sha256:70a61ce8412989ffacf24721ebb13958369dc5ba09e7a77785e8c8b14ef37f36"}, ] [package.dependencies] aiosqlite = ">=0.17.0" -alembic = ">=1.7.5" -anyio = ">=3.4.0" -apprise = ">=1.1.0" -asgi-lifespan = ">=1.0" +alembic = ">=1.7.5,<2.0.0" +anyio = ">=3.4.0,<4.0.0" +apprise = ">=1.1.0,<2.0.0" +asgi-lifespan = ">=1.0,<3.0" asyncpg = ">=0.23" click = ">=8.0,<8.2" -cloudpickle = ">=2.0" -coolname = ">=1.0.4" -croniter = ">=1.0.12" +cloudpickle = ">=2.0,<3.0" +coolname = ">=1.0.4,<3.0.0" +croniter = ">=1.0.12,<2.0.0" cryptography = ">=36.0.1" -dateparser = ">=1.1.1" -docker = ">=4.0" +dateparser = ">=1.1.1,<2.0.0" +docker = ">=4.0,<7.0" fastapi = ">=0.93" fsspec = ">=2022.5.0" graphviz = ">=0.20.1" griffe = ">=0.20.0" httpx = {version = ">=0.23,<0.23.2 || >0.23.2", extras = ["http2"]} importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -jinja2 = ">=3.0.0" -jsonpatch = ">=1.32" +jinja2 = ">=3.0.0,<4.0.0" +jsonpatch = ">=1.32,<2.0" jsonschema = ">=3.2.0,<5.0.0" -kubernetes = ">=24.2.0" -orjson = ">=3.7" -packaging = ">=21.3" +kubernetes = ">=24.2.0,<28.0.0" +orjson = ">=3.7,<4.0" +packaging = ">=21.3,<24.3" pathspec = ">=0.8.0" -pendulum = ">=2.1.2" +pendulum = ">=2.1.2,<4.0.0" pydantic = ">=1.10.0,<2.0.0" -python-slugify = ">=5.0" -pytz = ">=2021.1" -pyyaml = ">=5.4.1" -readchar = ">=4.0.0" -rich = ">=11.0" +python-slugify = ">=5.0,<9.0" +pytz = ">=2021.1,<2024" +pyyaml = ">=5.4.1,<7.0.0" +readchar = ">=4.0.0,<5.0.0" +rich = ">=11.0,<14.0" ruamel-yaml = ">=0.17.0" -sqlalchemy = {version = ">=1.4.22,<1.4.33 || >1.4.33", extras = ["asyncio"]} +sqlalchemy = {version = ">=1.4.22,<1.4.33 || >1.4.33,<3.0.0", extras = ["asyncio"]} toml = ">=0.10.0" typer = ">=0.4.2" -typing-extensions = ">=4.1.0" +typing-extensions = ">=4.1.0,<5.0.0" uvicorn = ">=0.14.0" websockets = ">=10.4" @@ -5218,24 +5284,22 @@ test = ["enum34", "ipaddress", "mock", "pywin32", "wmi"] [[package]] name = "psycopg2" -version = "2.9.6" +version = "2.9.7" description = "psycopg2 - Python-PostgreSQL Database Adapter" optional = false python-versions = ">=3.6" files = [ - {file = "psycopg2-2.9.6-cp310-cp310-win32.whl", hash = "sha256:f7a7a5ee78ba7dc74265ba69e010ae89dae635eea0e97b055fb641a01a31d2b1"}, - {file = "psycopg2-2.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:f75001a1cbbe523e00b0ef896a5a1ada2da93ccd752b7636db5a99bc57c44494"}, - {file = "psycopg2-2.9.6-cp311-cp311-win32.whl", hash = "sha256:53f4ad0a3988f983e9b49a5d9765d663bbe84f508ed655affdb810af9d0972ad"}, - {file = "psycopg2-2.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:b81fcb9ecfc584f661b71c889edeae70bae30d3ef74fa0ca388ecda50b1222b7"}, - {file = "psycopg2-2.9.6-cp36-cp36m-win32.whl", hash = "sha256:11aca705ec888e4f4cea97289a0bf0f22a067a32614f6ef64fcf7b8bfbc53744"}, - {file = "psycopg2-2.9.6-cp36-cp36m-win_amd64.whl", hash = "sha256:36c941a767341d11549c0fbdbb2bf5be2eda4caf87f65dfcd7d146828bd27f39"}, - {file = "psycopg2-2.9.6-cp37-cp37m-win32.whl", hash = "sha256:869776630c04f335d4124f120b7fb377fe44b0a7645ab3c34b4ba42516951889"}, - {file = "psycopg2-2.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:a8ad4a47f42aa6aec8d061fdae21eaed8d864d4bb0f0cade5ad32ca16fcd6258"}, - {file = "psycopg2-2.9.6-cp38-cp38-win32.whl", hash = "sha256:2362ee4d07ac85ff0ad93e22c693d0f37ff63e28f0615a16b6635a645f4b9214"}, - {file = "psycopg2-2.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:d24ead3716a7d093b90b27b3d73459fe8cd90fd7065cf43b3c40966221d8c394"}, - {file = "psycopg2-2.9.6-cp39-cp39-win32.whl", hash = "sha256:1861a53a6a0fd248e42ea37c957d36950da00266378746588eab4f4b5649e95f"}, - {file = "psycopg2-2.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:ded2faa2e6dfb430af7713d87ab4abbfc764d8d7fb73eafe96a24155f906ebf5"}, - {file = "psycopg2-2.9.6.tar.gz", hash = "sha256:f15158418fd826831b28585e2ab48ed8df2d0d98f502a2b4fe619e7d5ca29011"}, + {file = "psycopg2-2.9.7-cp310-cp310-win32.whl", hash = "sha256:1a6a2d609bce44f78af4556bea0c62a5e7f05c23e5ea9c599e07678995609084"}, + {file = "psycopg2-2.9.7-cp310-cp310-win_amd64.whl", hash = "sha256:b22ed9c66da2589a664e0f1ca2465c29b75aaab36fa209d4fb916025fb9119e5"}, + {file = "psycopg2-2.9.7-cp311-cp311-win32.whl", hash = "sha256:44d93a0109dfdf22fe399b419bcd7fa589d86895d3931b01fb321d74dadc68f1"}, + {file = "psycopg2-2.9.7-cp311-cp311-win_amd64.whl", hash = "sha256:91e81a8333a0037babfc9fe6d11e997a9d4dac0f38c43074886b0d9dead94fe9"}, + {file = "psycopg2-2.9.7-cp37-cp37m-win32.whl", hash = "sha256:d1210fcf99aae6f728812d1d2240afc1dc44b9e6cba526a06fb8134f969957c2"}, + {file = "psycopg2-2.9.7-cp37-cp37m-win_amd64.whl", hash = "sha256:e9b04cbef584310a1ac0f0d55bb623ca3244c87c51187645432e342de9ae81a8"}, + {file = "psycopg2-2.9.7-cp38-cp38-win32.whl", hash = "sha256:d5c5297e2fbc8068d4255f1e606bfc9291f06f91ec31b2a0d4c536210ac5c0a2"}, + {file = "psycopg2-2.9.7-cp38-cp38-win_amd64.whl", hash = "sha256:8275abf628c6dc7ec834ea63f6f3846bf33518907a2b9b693d41fd063767a866"}, + {file = "psycopg2-2.9.7-cp39-cp39-win32.whl", hash = "sha256:c7949770cafbd2f12cecc97dea410c514368908a103acf519f2a346134caa4d5"}, + {file = "psycopg2-2.9.7-cp39-cp39-win_amd64.whl", hash = "sha256:b6bd7d9d3a7a63faae6edf365f0ed0e9b0a1aaf1da3ca146e6b043fb3eb5d723"}, + {file = "psycopg2-2.9.7.tar.gz", hash = "sha256:f00cc35bd7119f1fed17b85bd1007855194dde2cbd8de01ab8ebb17487440ad8"}, ] [[package]] @@ -5502,13 +5566,13 @@ tomli = {version = "*", markers = "python_version < \"3.11\""} [[package]] name = "pytest" -version = "7.4.0" +version = "7.4.1" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-7.4.0-py3-none-any.whl", hash = "sha256:78bf16451a2eb8c7a2ea98e32dc119fd2aa758f1d5d66dbf0a59d69a3969df32"}, - {file = "pytest-7.4.0.tar.gz", hash = "sha256:b4bf8c45bd59934ed84001ad51e11b4ee40d40a1229d2c79f9c592b0a3f6bd8a"}, + {file = "pytest-7.4.1-py3-none-any.whl", hash = "sha256:460c9a59b14e27c602eb5ece2e47bec99dc5fc5f6513cf924a7d03a578991b1f"}, + {file = "pytest-7.4.1.tar.gz", hash = "sha256:2f2301e797521b23e4d2585a0a3d7b5e50fdddaaf7e7d6773ea26ddb17c213ab"}, ] [package.dependencies] @@ -5584,13 +5648,13 @@ unidecode = ["Unidecode (>=1.1.1)"] [[package]] name = "pytz" -version = "2023.3" +version = "2023.3.post1" description = "World timezone definitions, modern and historical" optional = false python-versions = "*" files = [ - {file = "pytz-2023.3-py2.py3-none-any.whl", hash = "sha256:a151b3abb88eda1d4e34a9814df37de2a80e301e68ba0fd856fb9b46bfbbbffb"}, - {file = "pytz-2023.3.tar.gz", hash = "sha256:1d8ce29db189191fb55338ee6d0387d82ab59f3d00eac103412d64e0ebd0c588"}, + {file = "pytz-2023.3.post1-py2.py3-none-any.whl", hash = "sha256:ce42d816b81b68506614c11e8937d3aa9e41007ceb50bfdcb0749b921bf646c7"}, + {file = "pytz-2023.3.post1.tar.gz", hash = "sha256:7b4fddbeb94a1eba4b557da24f19fdf9db575192544270a9101d8509f9f43d7b"}, ] [[package]] @@ -5816,13 +5880,13 @@ py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qtconsole" -version = "5.4.3" +version = "5.4.4" description = "Jupyter Qt console" optional = false python-versions = ">= 3.7" files = [ - {file = "qtconsole-5.4.3-py3-none-any.whl", hash = "sha256:35fd6e87b1f6d1fd41801b07e69339f8982e76afd4fa8ef35595bc6036717189"}, - {file = "qtconsole-5.4.3.tar.gz", hash = "sha256:5e4082a86a201796b2a5cfd4298352d22b158b51b57736531824715fc2a979dd"}, + {file = "qtconsole-5.4.4-py3-none-any.whl", hash = "sha256:a3b69b868e041c2c698bdc75b0602f42e130ffb256d6efa48f9aa756c97672aa"}, + {file = "qtconsole-5.4.4.tar.gz", hash = "sha256:b7ffb53d74f23cee29f4cdb55dd6fabc8ec312d94f3c46ba38e1dde458693dfb"}, ] [package.dependencies] @@ -5833,7 +5897,7 @@ jupyter-core = "*" packaging = "*" pygments = "*" pyzmq = ">=17.1" -qtpy = ">=2.0.1" +qtpy = ">=2.4.0" traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" [package.extras] @@ -5842,13 +5906,13 @@ test = ["flaky", "pytest", "pytest-qt"] [[package]] name = "qtpy" -version = "2.3.1" +version = "2.4.0" description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." optional = false python-versions = ">=3.7" files = [ - {file = "QtPy-2.3.1-py3-none-any.whl", hash = "sha256:5193d20e0b16e4d9d3bc2c642d04d9f4e2c892590bd1b9c92bfe38a95d5a2e12"}, - {file = "QtPy-2.3.1.tar.gz", hash = "sha256:a8c74982d6d172ce124d80cafd39653df78989683f760f2281ba91a6e7b9de8b"}, + {file = "QtPy-2.4.0-py3-none-any.whl", hash = "sha256:4d4f045a41e09ac9fa57fcb47ef05781aa5af294a0a646acc1b729d14225e741"}, + {file = "QtPy-2.4.0.tar.gz", hash = "sha256:db2d508167aa6106781565c8da5c6f1487debacba33519cedc35fa8997d424d4"}, ] [package.dependencies] @@ -5873,13 +5937,13 @@ six = "*" [[package]] name = "rdflib" -version = "6.3.2" +version = "7.0.0" description = "RDFLib is a Python library for working with RDF, a simple yet powerful language for representing information." optional = false -python-versions = ">=3.7,<4.0" +python-versions = ">=3.8.1,<4.0.0" files = [ - {file = "rdflib-6.3.2-py3-none-any.whl", hash = "sha256:36b4e74a32aa1e4fa7b8719876fb192f19ecd45ff932ea5ebbd2e417a0247e63"}, - {file = "rdflib-6.3.2.tar.gz", hash = "sha256:72af591ff704f4caacea7ecc0c5a9056b8553e0489dd4f35a9bc52dbd41522e0"}, + {file = "rdflib-7.0.0-py3-none-any.whl", hash = "sha256:0438920912a642c866a513de6fe8a0001bd86ef975057d6962c79ce4771687cd"}, + {file = "rdflib-7.0.0.tar.gz", hash = "sha256:9995eb8569428059b8c1affd26b25eac510d64f5043d9ce8c84e0d0036e995ae"}, ] [package.dependencies] @@ -6110,115 +6174,114 @@ files = [ [package.dependencies] 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,<9)"] [[package]] name = "rpds-py" -version = "0.9.2" +version = "0.10.2" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.9.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:ab6919a09c055c9b092798ce18c6c4adf49d24d4d9e43a92b257e3f2548231e7"}, - {file = "rpds_py-0.9.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d55777a80f78dd09410bd84ff8c95ee05519f41113b2df90a69622f5540c4f8b"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a216b26e5af0a8e265d4efd65d3bcec5fba6b26909014effe20cd302fd1138fa"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:29cd8bfb2d716366a035913ced99188a79b623a3512292963d84d3e06e63b496"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:44659b1f326214950a8204a248ca6199535e73a694be8d3e0e869f820767f12f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:745f5a43fdd7d6d25a53ab1a99979e7f8ea419dfefebcab0a5a1e9095490ee5e"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a987578ac5214f18b99d1f2a3851cba5b09f4a689818a106c23dbad0dfeb760f"}, - {file = "rpds_py-0.9.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf4151acb541b6e895354f6ff9ac06995ad9e4175cbc6d30aaed08856558201f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:03421628f0dc10a4119d714a17f646e2837126a25ac7a256bdf7c3943400f67f"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:13b602dc3e8dff3063734f02dcf05111e887f301fdda74151a93dbbc249930fe"}, - {file = "rpds_py-0.9.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:fae5cb554b604b3f9e2c608241b5d8d303e410d7dfb6d397c335f983495ce7f6"}, - {file = "rpds_py-0.9.2-cp310-none-win32.whl", hash = "sha256:47c5f58a8e0c2c920cc7783113df2fc4ff12bf3a411d985012f145e9242a2764"}, - {file = "rpds_py-0.9.2-cp310-none-win_amd64.whl", hash = "sha256:4ea6b73c22d8182dff91155af018b11aac9ff7eca085750455c5990cb1cfae6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:e564d2238512c5ef5e9d79338ab77f1cbbda6c2d541ad41b2af445fb200385e3"}, - {file = "rpds_py-0.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f411330a6376fb50e5b7a3e66894e4a39e60ca2e17dce258d53768fea06a37bd"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e7521f5af0233e89939ad626b15278c71b69dc1dfccaa7b97bd4cdf96536bb7"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8d3335c03100a073883857e91db9f2e0ef8a1cf42dc0369cbb9151c149dbbc1b"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d25b1c1096ef0447355f7293fbe9ad740f7c47ae032c2884113f8e87660d8f6e"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a5d3fbd02efd9cf6a8ffc2f17b53a33542f6b154e88dd7b42ef4a4c0700fdad"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c5934e2833afeaf36bd1eadb57256239785f5af0220ed8d21c2896ec4d3a765f"}, - {file = "rpds_py-0.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:095b460e117685867d45548fbd8598a8d9999227e9061ee7f012d9d264e6048d"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:91378d9f4151adc223d584489591dbb79f78814c0734a7c3bfa9c9e09978121c"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:24a81c177379300220e907e9b864107614b144f6c2a15ed5c3450e19cf536fae"}, - {file = "rpds_py-0.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:de0b6eceb46141984671802d412568d22c6bacc9b230174f9e55fc72ef4f57de"}, - {file = "rpds_py-0.9.2-cp311-none-win32.whl", hash = "sha256:700375326ed641f3d9d32060a91513ad668bcb7e2cffb18415c399acb25de2ab"}, - {file = "rpds_py-0.9.2-cp311-none-win_amd64.whl", hash = "sha256:0766babfcf941db8607bdaf82569ec38107dbb03c7f0b72604a0b346b6eb3298"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:b1440c291db3f98a914e1afd9d6541e8fc60b4c3aab1a9008d03da4651e67386"}, - {file = "rpds_py-0.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0f2996fbac8e0b77fd67102becb9229986396e051f33dbceada3debaacc7033f"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9f30d205755566a25f2ae0382944fcae2f350500ae4df4e795efa9e850821d82"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:159fba751a1e6b1c69244e23ba6c28f879a8758a3e992ed056d86d74a194a0f3"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a1f044792e1adcea82468a72310c66a7f08728d72a244730d14880cd1dabe36b"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9251eb8aa82e6cf88510530b29eef4fac825a2b709baf5b94a6094894f252387"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01899794b654e616c8625b194ddd1e5b51ef5b60ed61baa7a2d9c2ad7b2a4238"}, - {file = "rpds_py-0.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b0c43f8ae8f6be1d605b0465671124aa8d6a0e40f1fb81dcea28b7e3d87ca1e1"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:207f57c402d1f8712618f737356e4b6f35253b6d20a324d9a47cb9f38ee43a6b"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b52e7c5ae35b00566d244ffefba0f46bb6bec749a50412acf42b1c3f402e2c90"}, - {file = "rpds_py-0.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:978fa96dbb005d599ec4fd9ed301b1cc45f1a8f7982d4793faf20b404b56677d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:6aa8326a4a608e1c28da191edd7c924dff445251b94653988efb059b16577a4d"}, - {file = "rpds_py-0.9.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aad51239bee6bff6823bbbdc8ad85136c6125542bbc609e035ab98ca1e32a192"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4bd4dc3602370679c2dfb818d9c97b1137d4dd412230cfecd3c66a1bf388a196"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dd9da77c6ec1f258387957b754f0df60766ac23ed698b61941ba9acccd3284d1"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:190ca6f55042ea4649ed19c9093a9be9d63cd8a97880106747d7147f88a49d18"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:876bf9ed62323bc7dcfc261dbc5572c996ef26fe6406b0ff985cbcf460fc8a4c"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2818759aba55df50592ecbc95ebcdc99917fa7b55cc6796235b04193eb3c55"}, - {file = "rpds_py-0.9.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9ea4d00850ef1e917815e59b078ecb338f6a8efda23369677c54a5825dbebb55"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:5855c85eb8b8a968a74dc7fb014c9166a05e7e7a8377fb91d78512900aadd13d"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:14c408e9d1a80dcb45c05a5149e5961aadb912fff42ca1dd9b68c0044904eb32"}, - {file = "rpds_py-0.9.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:65a0583c43d9f22cb2130c7b110e695fff834fd5e832a776a107197e59a1898e"}, - {file = "rpds_py-0.9.2-cp38-none-win32.whl", hash = "sha256:71f2f7715935a61fa3e4ae91d91b67e571aeb5cb5d10331ab681256bda2ad920"}, - {file = "rpds_py-0.9.2-cp38-none-win_amd64.whl", hash = "sha256:674c704605092e3ebbbd13687b09c9f78c362a4bc710343efe37a91457123044"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:07e2c54bef6838fa44c48dfbc8234e8e2466d851124b551fc4e07a1cfeb37260"}, - {file = "rpds_py-0.9.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f7fdf55283ad38c33e35e2855565361f4bf0abd02470b8ab28d499c663bc5d7c"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:890ba852c16ace6ed9f90e8670f2c1c178d96510a21b06d2fa12d8783a905193"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:50025635ba8b629a86d9d5474e650da304cb46bbb4d18690532dd79341467846"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:517cbf6e67ae3623c5127206489d69eb2bdb27239a3c3cc559350ef52a3bbf0b"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0836d71ca19071090d524739420a61580f3f894618d10b666cf3d9a1688355b1"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c439fd54b2b9053717cca3de9583be6584b384d88d045f97d409f0ca867d80f"}, - {file = "rpds_py-0.9.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f68996a3b3dc9335037f82754f9cdbe3a95db42bde571d8c3be26cc6245f2324"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7d68dc8acded354c972116f59b5eb2e5864432948e098c19fe6994926d8e15c3"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:f963c6b1218b96db85fc37a9f0851eaf8b9040aa46dec112611697a7023da535"}, - {file = "rpds_py-0.9.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:5a46859d7f947061b4010e554ccd1791467d1b1759f2dc2ec9055fa239f1bc26"}, - {file = "rpds_py-0.9.2-cp39-none-win32.whl", hash = "sha256:e07e5dbf8a83c66783a9fe2d4566968ea8c161199680e8ad38d53e075df5f0d0"}, - {file = "rpds_py-0.9.2-cp39-none-win_amd64.whl", hash = "sha256:682726178138ea45a0766907957b60f3a1bf3acdf212436be9733f28b6c5af3c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:196cb208825a8b9c8fc360dc0f87993b8b260038615230242bf18ec84447c08d"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:c7671d45530fcb6d5e22fd40c97e1e1e01965fc298cbda523bb640f3d923b387"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83b32f0940adec65099f3b1c215ef7f1d025d13ff947975a055989cb7fd019a4"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f67da97f5b9eac838b6980fc6da268622e91f8960e083a34533ca710bec8611"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:03975db5f103997904c37e804e5f340c8fdabbb5883f26ee50a255d664eed58c"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:987b06d1cdb28f88a42e4fb8a87f094e43f3c435ed8e486533aea0bf2e53d931"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c861a7e4aef15ff91233751619ce3a3d2b9e5877e0fcd76f9ea4f6847183aa16"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:02938432352359805b6da099c9c95c8a0547fe4b274ce8f1a91677401bb9a45f"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:ef1f08f2a924837e112cba2953e15aacfccbbfcd773b4b9b4723f8f2ddded08e"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:35da5cc5cb37c04c4ee03128ad59b8c3941a1e5cd398d78c37f716f32a9b7f67"}, - {file = "rpds_py-0.9.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:141acb9d4ccc04e704e5992d35472f78c35af047fa0cfae2923835d153f091be"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:79f594919d2c1a0cc17d1988a6adaf9a2f000d2e1048f71f298b056b1018e872"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:a06418fe1155e72e16dddc68bb3780ae44cebb2912fbd8bb6ff9161de56e1798"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b2eb034c94b0b96d5eddb290b7b5198460e2d5d0c421751713953a9c4e47d10"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8b08605d248b974eb02f40bdcd1a35d3924c83a2a5e8f5d0fa5af852c4d960af"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0805911caedfe2736935250be5008b261f10a729a303f676d3d5fea6900c96a"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ab2299e3f92aa5417d5e16bb45bb4586171c1327568f638e8453c9f8d9e0f020"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c8d7594e38cf98d8a7df25b440f684b510cf4627fe038c297a87496d10a174f"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8b9ec12ad5f0a4625db34db7e0005be2632c1013b253a4a60e8302ad4d462afd"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1fcdee18fea97238ed17ab6478c66b2095e4ae7177e35fb71fbe561a27adf620"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:933a7d5cd4b84f959aedeb84f2030f0a01d63ae6cf256629af3081cf3e3426e8"}, - {file = "rpds_py-0.9.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:686ba516e02db6d6f8c279d1641f7067ebb5dc58b1d0536c4aaebb7bf01cdc5d"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:0173c0444bec0a3d7d848eaeca2d8bd32a1b43f3d3fde6617aac3731fa4be05f"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d576c3ef8c7b2d560e301eb33891d1944d965a4d7a2eacb6332eee8a71827db6"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed89861ee8c8c47d6beb742a602f912b1bb64f598b1e2f3d758948721d44d468"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1054a08e818f8e18910f1bee731583fe8f899b0a0a5044c6e680ceea34f93876"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:99e7c4bb27ff1aab90dcc3e9d37ee5af0231ed98d99cb6f5250de28889a3d502"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c545d9d14d47be716495076b659db179206e3fd997769bc01e2d550eeb685596"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9039a11bca3c41be5a58282ed81ae422fa680409022b996032a43badef2a3752"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fb39aca7a64ad0c9490adfa719dbeeb87d13be137ca189d2564e596f8ba32c07"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:2d8b3b3a2ce0eaa00c5bbbb60b6713e94e7e0becab7b3db6c5c77f979e8ed1f1"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:99b1c16f732b3a9971406fbfe18468592c5a3529585a45a35adbc1389a529a03"}, - {file = "rpds_py-0.9.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:c27ee01a6c3223025f4badd533bea5e87c988cb0ba2811b690395dfe16088cfe"}, - {file = "rpds_py-0.9.2.tar.gz", hash = "sha256:8d70e8f14900f2657c249ea4def963bed86a29b81f81f5b76b5a9215680de945"}, + {file = "rpds_py-0.10.2-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:9f00d54b18dd837f1431d66b076737deb7c29ce3ebb8412ceaf44d5e1954ac0c"}, + {file = "rpds_py-0.10.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f4d561f4728f825e3b793a53064b606ca0b6fc264f67d09e54af452aafc5b82"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:013d6c784150d10236a74b4094a79d96a256b814457e388fc5a4ba9efe24c402"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:bd1142d22fdb183a0fff66d79134bf644401437fed874f81066d314c67ee193c"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4a0536ed2b9297c75104e1a3da330828ba1b2639fa53b38d396f98bf7e3c68df"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:41bd430b7b63aa802c02964e331ac0b177148fef5f807d2c90d05ce71a52b4d4"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e8474f7233fe1949ce4e03bea698a600c2d5d6b51dab6d6e6336dbe69acf23e"}, + {file = "rpds_py-0.10.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d9d7efaad48b859053b90dedd69bc92f2095084251e732e4c57ac9726bcb1e64"}, + {file = "rpds_py-0.10.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5612b0b1de8d5114520094bd5fc3d04eb8af6f3e10d48ef05b7c8e77c1fd9545"}, + {file = "rpds_py-0.10.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5d5eaf988951f6ecb6854ca3300b87123599c711183c83da7ce39717a7cbdbce"}, + {file = "rpds_py-0.10.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:75c8766734ac0053e1d683567e65e85306c4ec62631b0591caeb287ac8f72e08"}, + {file = "rpds_py-0.10.2-cp310-none-win32.whl", hash = "sha256:8de9b88f0cbac73cfed34220d13c57849e62a7099a714b929142425e926d223a"}, + {file = "rpds_py-0.10.2-cp310-none-win_amd64.whl", hash = "sha256:2275f1a022e2383da5d2d101fe11ccdcbae799148c4b83260a4b9309fa3e1fc2"}, + {file = "rpds_py-0.10.2-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:dd91a7d7a9ce7f4983097c91ce211f3e5569cc21caa16f2692298a07e396f82b"}, + {file = "rpds_py-0.10.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e82b4a70cc67094f3f3fd77579702f48fcf1de7bdc67d79b8f1e24d089a6162c"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e281b71922208e00886e4b7ffbfcf27874486364f177418ab676f102130e7ec9"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b3eb1a0d2b6d232d1bcdfc3fcc5f7b004ab3fbd9203011a3172f051d4527c0b6"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:02945ae38fd78efc40900f509890de84cfd5ffe2cd2939eeb3a8800dc68b87cb"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ccfb77f6dc8abffa6f1c7e3975ed9070a41ce5fcc11154d2bead8c1baa940f09"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af52078719209bef33e38131486fd784832dd8d1dc9b85f00a44f6e7437dd021"}, + {file = "rpds_py-0.10.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:56ba7c1100ed079527f2b995bf5486a2e557e6d5b733c52e8947476338815b69"}, + {file = "rpds_py-0.10.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:899b03a3be785a7e1ff84b237da71f0efa2f021512f147dd34ffdf7aa82cb678"}, + {file = "rpds_py-0.10.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:22e6de18f00583f06928cc8d0993104ecc62f7c6da6478db2255de89a30e45d1"}, + {file = "rpds_py-0.10.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:edd74b760a6bb950397e7a7bd2f38e6700f6525062650b1d77c6d851b82f02c2"}, + {file = "rpds_py-0.10.2-cp311-none-win32.whl", hash = "sha256:18909093944727e068ebfc92e2e6ed1c4fa44135507c1c0555213ce211c53214"}, + {file = "rpds_py-0.10.2-cp311-none-win_amd64.whl", hash = "sha256:9568764e72d85cf7855ca78b48e07ed1be47bf230e2cea8dabda3c95f660b0ff"}, + {file = "rpds_py-0.10.2-cp312-cp312-macosx_10_7_x86_64.whl", hash = "sha256:0fc625059b83695fbb4fc8b7a8b66fa94ff9c7b78c84fb9986cd53ff88a28d80"}, + {file = "rpds_py-0.10.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c86231c66e4f422e7c13ea6200bb4048b3016c8bfd11b4fd0dabd04d2c8e3501"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56777c57246e048908b550af9b81b0ec9cf804fd47cb7502ccd93238bd6025c2"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a4cb372e22e9c879bd9a9cc9b20b7c1fbf30a605ac953da45ecec05d8a6e1c77"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa3b3a43dabc4cc57a7800f526cbe03f71c69121e21b863fdf497b59b462b163"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d222086daa55421d599609b32d0ebe544e57654c4a0a1490c54a7ebaa67561"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:529aab727f54a937085184e7436e1d0e19975cf10115eda12d37a683e4ee5342"}, + {file = "rpds_py-0.10.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:43e9b1531d6a898bdf086acb75c41265c7ec4331267d7619148d407efc72bd24"}, + {file = "rpds_py-0.10.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c2772bb95062e3f9774140205cd65d8997e39620715486cf5f843cf4ad8f744c"}, + {file = "rpds_py-0.10.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ba1b28e44f611f3f2b436bd8290050a61db4b59a8e24be4465f44897936b3824"}, + {file = "rpds_py-0.10.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5aba767e64b494483ad60c4873bec78d16205a21f8247c99749bd990d9c846c2"}, + {file = "rpds_py-0.10.2-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:e1954f4b239d1a92081647eecfd51cbfd08ea16eb743b8af1cd0113258feea14"}, + {file = "rpds_py-0.10.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:de4a2fd524993578fe093044f291b4b24aab134390030b3b9b5f87fd41ab7e75"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e69737bd56006a86fd5a78b2b85447580a6138c930a75eb9ef39fe03d90782b1"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f40abbcc0a7d9a8a80870af839d317e6932533f98682aabd977add6c53beeb23"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:29ec8507664f94cc08457d98cfc41c3cdbddfa8952438e644177a29b04937876"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bcde80aefe7054fad6277762fb7e9d35c72ea479a485ae1bb14629c640987b30"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a65de5c02884760a14a58304fb6303f9ddfc582e630f385daea871e1bdb18686"}, + {file = "rpds_py-0.10.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e92e5817eb6bfed23aa5e45bfe30647b83602bdd6f9e25d63524d4e6258458b0"}, + {file = "rpds_py-0.10.2-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:2c8fc6c841ada60a86d29c9ebe2e8757c47eda6553f3596c560e59ca6e9b6fa1"}, + {file = "rpds_py-0.10.2-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:8557c807388e6617161fe51b1a4747ea8d1133f2d2ad8e79583439abebe58fbd"}, + {file = "rpds_py-0.10.2-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:00e97d43a36811b78fa9ad9d3329bf34f76a31e891a7031a2ac01450c9b168ab"}, + {file = "rpds_py-0.10.2-cp38-none-win32.whl", hash = "sha256:1ed3d5385d14be894e12a9033be989e012214a9811e7194849c94032ad69682a"}, + {file = "rpds_py-0.10.2-cp38-none-win_amd64.whl", hash = "sha256:02b4a2e28eb24dac4ef43dda4f6a6f7766e355179b143f7d0c76a1c5488a307b"}, + {file = "rpds_py-0.10.2-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:2a55631b93e47956fbc97d69ba2054a8c6a4016f9a3064ec4e031f5f1030cb90"}, + {file = "rpds_py-0.10.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2ffbf1b38c88d0466de542e91b08225d51782282512f8e2b11715126c41fda48"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213f9ef5c02ec2f883c1075d25a873149daadbaea50d18d622e9db55ec9849c2"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b00150a9a3fd0a8efaa90bc2696c105b04039d50763dd1c95a34c88c5966cb57"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ab0f7aabdbce4a202e013083eeab71afdb85efa405dc4a06fea98cde81204675"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2cd0c9fb5d40887500b4ed818770c68ab4fa6e0395d286f9704be6751b1b7d98"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8578fc6c8bdd0201327503720fa581000b4bd3934abbf07e2628d1ad3de157d"}, + {file = "rpds_py-0.10.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2d27d08056fcd61ff47a0cd8407eff4d3e816c82cb6b9c6f0ce9a0ad49225f81"}, + {file = "rpds_py-0.10.2-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:c8f6526df47953b07c45b95c4d1da6b9a0861c0e5da0271db96bb1d807825412"}, + {file = "rpds_py-0.10.2-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:177c033e467a66a054dd3a9534167234a3d0b2e41445807b13b626e01da25d92"}, + {file = "rpds_py-0.10.2-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:9c74cbee9e532dc34371127f7686d6953e5153a1f22beab7f953d95ee4a0fe09"}, + {file = "rpds_py-0.10.2-cp39-none-win32.whl", hash = "sha256:05a1382905026bdd560f806c8c7c16e0f3e3fb359ba8868203ca6e5799884968"}, + {file = "rpds_py-0.10.2-cp39-none-win_amd64.whl", hash = "sha256:3fd503c27e7b7034128e30847ecdb4bff4ca5e60f29ad022a9f66ae8940d54ac"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-macosx_10_7_x86_64.whl", hash = "sha256:4a96147791e49e84207dd1530109aa0e9eeaf1c8b7a59f150047fc0fcdf9bb64"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:203eb1532d51591d32e8dfafd60b5d31347ea7278c8da02b4b550287f6abe28b"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2f416cdfe92f5fbb77177f5f3f7830059d1582db05f2c7119bf80069d1ab69b"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b2660000e1a113869c86eb5cc07f3343467490f3cd9d0299f81da9ddae7137b7"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1adb04e4b4e41bf30aaa77eeb169c1b9ba9e5010e2e6ce8d6c17e1446edc9b68"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2bca97521ee786087f0c5ef318fef3eef0266a9c3deff88205523cf353af7394"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4969592e3cdeefa4cbb15a26cec102cbd4a1d6e5b695fac9fa026e19741138c8"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:df61f818edf7c8626bfa392f825860fb670b5f8336e238eb0ec7e2a5689cdded"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:b589d93a60e78fe55d5bc76ee8c2bf945dbdbb7cd16044c53e0307604e448de1"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:73da69e1f612c3e682e34dcb971272d90d6f27b2c99acff444ca455a89978574"}, + {file = "rpds_py-0.10.2-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:89438e8885a186c69fe31f7ef98bb2bf29688c466c3caf9060f404c0be89ae80"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-macosx_10_7_x86_64.whl", hash = "sha256:c4ecc4e9a5d73a816cae36ee6b5d8b7a0c72013cae1e101406e832887c3dc2d8"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:907b214da5d2fcff0b6ddb83de1333890ca92abaf4bbf8d9c61dc1b95c87fd6e"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb44644371eaa29a3aba7b69b1862d0d56f073bb7585baa32e4271a71a91ee82"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:80c3cf46511653f94dfe07c7c79ab105c4164d6e1dfcb35b7214fb9af53eaef4"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eaba0613c759ebf95988a84f766ca6b7432d55ce399194f95dde588ad1be0878"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0527c97dcd8bb983822ee31d3760187083fd3ba18ac4dd22cf5347c89d5628f4"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9cdfd649011ce2d90cb0dd304c5aba1190fac0c266d19a9e2b96b81cfd150a09"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:75eea40355a8690459c7291ce6c8ce39c27bd223675c7da6619f510c728feb97"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4f1b804cfad04f862d6a84af9d1ad941b06f671878f0f7ecad6c92007d423de6"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:bf77f9017fcfa1232f98598a637406e6c33982ccba8a5922339575c3e2b90ea5"}, + {file = "rpds_py-0.10.2-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:46c4c550bf59ce05d6bff2c98053822549aaf9fbaf81103edea325e03350bca1"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-macosx_10_7_x86_64.whl", hash = "sha256:46af4a742b90c7460e94214f923452c2c1d050a9da1d2b8d4c70cbc045e692b7"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:2a86d246a160d98d820ee7d02dc18c923c228de095be362e57b9fd8970b2c4a1"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae141c9017f8f473a6ee07a9425da021816a9f8c0683c2e5442f0ccf56b0fc62"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e1147bc3d0dd1e549d991110d0a09557ec9f925dbc1ca62871fcdab2ec9d716b"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fce7a8ee8d0f682c953c0188735d823f0fcb62779bf92cd6ba473a8e730e26ad"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c7f9d70f99e1fbcbf57c75328b80e1c0a7f6cad43e75efa90a97221be5efe15"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b309908b6ff5ffbf6394818cb73b5a2a74073acee2c57fe8719046389aeff0d"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3ff1f585a0fdc1415bd733b804f33d386064a308672249b14828130dd43e7c31"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:0188b580c490bccb031e9b67e9e8c695a3c44ac5e06218b152361eca847317c3"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:abe081453166e206e3a8c6d8ace57214c17b6d9477d7601ac14a365344dbc1f4"}, + {file = "rpds_py-0.10.2-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9118de88c16947eaf5b92f749e65b0501ea69e7c2be7bd6aefc12551622360e1"}, + {file = "rpds_py-0.10.2.tar.gz", hash = "sha256:289073f68452b96e70990085324be7223944c7409973d13ddfe0eea1c1b5663b"}, ] [[package]] @@ -6386,54 +6449,53 @@ torch = ["numpy (>=1.21.6)", "torch (>=1.10)"] [[package]] name = "scikit-image" -version = "0.19.3" +version = "0.21.0" description = "Image processing in Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "scikit-image-0.19.3.tar.gz", hash = "sha256:24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450"}, - {file = "scikit_image-0.19.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:3a01372ae4bca223873304b0bff79b9d92446ac6d6177f73d89b45561e2d09d8"}, - {file = "scikit_image-0.19.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fdf48d9b1f13af69e4e2c78e05067e322e9c8c97463c315cd0ecb47a94e259fc"}, - {file = "scikit_image-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b6a8f98f2ac9bb73706461fd1dec875f6a5141759ed526850a5a49e90003d19"}, - {file = "scikit_image-0.19.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfbb073f23deb48e0e60c47f8741d8089121d89cc78629ea8c5b51096efc5be7"}, - {file = "scikit_image-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:cc24177de3fdceca5d04807ad9c87d665f0bf01032ed94a9055cd1ed2b3f33e9"}, - {file = "scikit_image-0.19.3-cp37-cp37m-macosx_10_13_x86_64.whl", hash = "sha256:fd9dd3994bb6f9f7a35f228323f3c4dc44b3cf2ff15fd72d895216e9333550c6"}, - {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ad5d8000207a264d1a55681a9276e6a739d3f05cf4429004ad00d61d1892235f"}, - {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:84baa3179f3ae983c3a5d81c1e404bc92dcf7daeb41bfe9369badcda3fb22b92"}, - {file = "scikit_image-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f9f8a1387afc6c70f2bed007c3854a2d7489f9f7713c242f16f32ee05934bc2"}, - {file = "scikit_image-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:9fb0923a3bfa99457c5e17888f27b3b8a83a3600b4fef317992e7b7234764732"}, - {file = "scikit_image-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:ce3d2207f253b8eb2c824e30d145a9f07a34a14212d57f3beca9f7e03c383cbe"}, - {file = "scikit_image-0.19.3-cp38-cp38-macosx_10_13_x86_64.whl", hash = "sha256:2a02d1bd0e2b53e36b952bd5fd6118d9ccc3ee51de35705d63d8eb1f2e86adef"}, - {file = "scikit_image-0.19.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:03779a7e1736fdf89d83c0ba67d44110496edd736a3bfce61a2b5177a1c8a099"}, - {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19a21a101a20c587a3b611a2cf6f86c35aae9f8d9563279b987e83ee1c9a9790"}, - {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f50b923f8099c1045fcde7418d86b206c87e333e43da980f41d8577b9605245"}, - {file = "scikit_image-0.19.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e207c6ce5ce121d7d9b9d2b61b9adca57d1abed112c902d8ffbfdc20fb42c12b"}, - {file = "scikit_image-0.19.3-cp38-cp38-win32.whl", hash = "sha256:a7c3985c68bfe05f7571167ee021d14f5b8d1a4a250c91f0b13be7fb07e6af34"}, - {file = "scikit_image-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:651de1c2ce1fbee834753b46b8e7d81cb12a5594898babba63ac82b30ddad49d"}, - {file = "scikit_image-0.19.3-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:8d8917fcf85b987b1f287f823f3a1a7dac38b70aaca759bc0200f3bc292d5ced"}, - {file = "scikit_image-0.19.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:0b0a199157ce8487c77de4fde0edc0b42d6d42818881c11f459262351d678b2d"}, - {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33dfd463ee6cc509defa279b963829f2230c9e0639ccd3931045be055878eea6"}, - {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a8714348ddd671f819457a797c97d4c672166f093def66d66c3254cbd1d43f83"}, - {file = "scikit_image-0.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff3b1025356508d41f4fe48528e509d95f9e4015e90cf158cd58c56dc63e0ac5"}, - {file = "scikit_image-0.19.3-cp39-cp39-win32.whl", hash = "sha256:9439e5294de3f18d6e82ec8eee2c46590231cf9c690da80545e83a0733b7a69e"}, - {file = "scikit_image-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:32fb88cc36203b99c9672fb972c9ef98635deaa5fc889fe969f3e11c44f22919"}, -] - -[package.dependencies] -imageio = ">=2.4.1" -networkx = ">=2.2" -numpy = ">=1.17.0" -packaging = ">=20.0" -pillow = ">=6.1.0,<7.1.0 || >7.1.0,<7.1.1 || >7.1.1,<8.3.0 || >8.3.0" + {file = "scikit_image-0.21.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:978ac3302252155a8556cdfe067bad2d18d5ccef4e91c2f727bc564ed75566bc"}, + {file = "scikit_image-0.21.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:82c22e008527e5ee26ab08e3ce919998ef164d538ff30b9e5764b223cfda06b1"}, + {file = "scikit_image-0.21.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd29d2631d3e975c377066acfc1f4cb2cc95e2257cf70e7fedfcb96441096e88"}, + {file = "scikit_image-0.21.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c6c12925ceb9f3aede555921e26642d601b2d37d1617002a2636f2cb5178ae2f"}, + {file = "scikit_image-0.21.0-cp310-cp310-win_amd64.whl", hash = "sha256:1f538d4de77e4f3225d068d9ea2965bed3f7dda7f457a8f89634fa22ffb9ad8c"}, + {file = "scikit_image-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ec9bab6920ac43037d7434058b67b5778d42c60f67b8679239f48a471e7ed6f8"}, + {file = "scikit_image-0.21.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:a54720430dba833ffbb6dedd93d9f0938c5dd47d20ab9ba3e4e61c19d95f6f19"}, + {file = "scikit_image-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e40dd102da14cdadc09210f930b4556c90ff8f99cd9d8bcccf9f73a86c44245"}, + {file = "scikit_image-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff5719c7eb99596a39c3e1d9b564025bae78ecf1da3ee6842d34f6965b5f1474"}, + {file = "scikit_image-0.21.0-cp311-cp311-win_amd64.whl", hash = "sha256:146c3824253eee9ff346c4ad10cb58376f91aefaf4a4bb2fe11aa21691f7de76"}, + {file = "scikit_image-0.21.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4e1b09f81a99c9c390215929194847b3cd358550b4b65bb6e42c5393d69cb74a"}, + {file = "scikit_image-0.21.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:9f7b5fb4a22f0d5ae0fa13beeb887c925280590145cd6d8b2630794d120ff7c7"}, + {file = "scikit_image-0.21.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4814033717f0b6491fee252facb9df92058d6a72ab78dd6408a50f3915a88b8"}, + {file = "scikit_image-0.21.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2b0d6ed6502cca0c9719c444caafa0b8cda0f9e29e01ca42f621a240073284be"}, + {file = "scikit_image-0.21.0-cp38-cp38-win_amd64.whl", hash = "sha256:9194cb7bc21215fde6c1b1e9685d312d2aa8f65ea9736bc6311126a91c860032"}, + {file = "scikit_image-0.21.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:54df1ddc854f37a912d42bc724e456e86858107e94048a81a27720bc588f9937"}, + {file = "scikit_image-0.21.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:c01e3ab0a1fabfd8ce30686d4401b7ed36e6126c9d4d05cb94abf6bdc46f7ac9"}, + {file = "scikit_image-0.21.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ef5d8d1099317b7b315b530348cbfa68ab8ce32459de3c074d204166951025c"}, + {file = "scikit_image-0.21.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78b1e96c59cab640ca5c5b22c501524cfaf34cbe0cb51ba73bd9a9ede3fb6e1d"}, + {file = "scikit_image-0.21.0-cp39-cp39-win_amd64.whl", hash = "sha256:9cffcddd2a5594c0a06de2ae3e1e25d662745a26f94fda31520593669677c010"}, + {file = "scikit_image-0.21.0.tar.gz", hash = "sha256:b33e823c54e6f11873ea390ee49ef832b82b9f70752c8759efd09d5a4e3d87f0"}, +] + +[package.dependencies] +imageio = ">=2.27" +lazy_loader = ">=0.2" +networkx = ">=2.8" +numpy = ">=1.21.1" +packaging = ">=21" +pillow = ">=9.0.1" PyWavelets = ">=1.1.1" -scipy = ">=1.4.1" -tifffile = ">=2019.7.26" +scipy = ">=1.8" +tifffile = ">=2022.8.12" [package.extras] -data = ["pooch (>=1.3.0)"] -docs = ["cloudpickle (>=0.2.1)", "dask[array] (>=0.15.0,!=2.17.0)", "ipywidgets", "kaleido", "matplotlib (>=3.3)", "myst-parser", "numpydoc (>=1.0)", "pandas (>=0.23.0)", "plotly (>=4.14.0)", "pooch (>=1.3.0)", "pytest-runner", "scikit-learn", "seaborn (>=0.7.1)", "sphinx (>=1.8)", "sphinx-copybutton", "sphinx-gallery (>=0.10.1)", "tifffile (>=2020.5.30)"] -optional = ["SimpleITK", "astropy (>=3.1.2)", "cloudpickle (>=0.2.1)", "dask[array] (>=1.0.0,!=2.17.0)", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", "pyamg", "qtpy"] -test = ["asv", "codecov", "flake8", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", "pytest (>=5.2.0)", "pytest-cov (>=2.7.0)", "pytest-faulthandler", "pytest-localserver"] +build = ["Cython (>=0.29.32)", "build", "meson-python (>=0.13)", "ninja", "numpy (>=1.21.1)", "packaging (>=21)", "pythran", "setuptools (>=67)", "spin (==0.3)", "wheel"] +data = ["pooch (>=1.6.0)"] +default = ["PyWavelets (>=1.1.1)", "imageio (>=2.27)", "lazy_loader (>=0.2)", "networkx (>=2.8)", "numpy (>=1.21.1)", "packaging (>=21)", "pillow (>=9.0.1)", "scipy (>=1.8)", "tifffile (>=2022.8.12)"] +developer = ["pre-commit", "rtoml"] +docs = ["dask[array] (>=2022.9.2)", "ipykernel", "ipywidgets", "kaleido", "matplotlib (>=3.5)", "myst-parser", "numpydoc (>=1.5)", "pandas (>=1.5)", "plotly (>=5.10)", "pooch (>=1.6)", "pydata-sphinx-theme (>=0.13)", "pytest-runner", "scikit-learn (>=0.24.0)", "seaborn (>=0.11)", "sphinx (>=5.0)", "sphinx-copybutton", "sphinx-gallery (>=0.11)", "sphinx_design (>=0.3)", "tifffile (>=2022.8.12)"] +optional = ["SimpleITK", "astropy (>=5.0)", "cloudpickle (>=0.2.1)", "dask[array] (>=2021.1.0)", "matplotlib (>=3.5)", "pooch (>=1.6.0)", "pyamg", "scikit-learn (>=0.24.0)"] +test = ["asv", "matplotlib (>=3.5)", "pooch (>=1.6.0)", "pytest (>=7.0)", "pytest-cov (>=2.11.0)", "pytest-faulthandler", "pytest-localserver"] [[package]] name = "scikit-learn" @@ -6479,40 +6541,44 @@ tests = ["black (>=23.3.0)", "matplotlib (>=3.1.3)", "mypy (>=1.3)", "numpydoc ( [[package]] name = "scipy" -version = "1.10.1" +version = "1.11.2" description = "Fundamental algorithms for scientific computing in Python" optional = false -python-versions = "<3.12,>=3.8" -files = [ - {file = "scipy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e7354fd7527a4b0377ce55f286805b34e8c54b91be865bac273f527e1b839019"}, - {file = "scipy-1.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:4b3f429188c66603a1a5c549fb414e4d3bdc2a24792e061ffbd607d3d75fd84e"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1553b5dcddd64ba9a0d95355e63fe6c3fc303a8fd77c7bc91e77d61363f7433f"}, - {file = "scipy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c0ff64b06b10e35215abce517252b375e580a6125fd5fdf6421b98efbefb2d2"}, - {file = "scipy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:fae8a7b898c42dffe3f7361c40d5952b6bf32d10c4569098d276b4c547905ee1"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0f1564ea217e82c1bbe75ddf7285ba0709ecd503f048cb1236ae9995f64217bd"}, - {file = "scipy-1.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:d925fa1c81b772882aa55bcc10bf88324dadb66ff85d548c71515f6689c6dac5"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aaea0a6be54462ec027de54fca511540980d1e9eea68b2d5c1dbfe084797be35"}, - {file = "scipy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15a35c4242ec5f292c3dd364a7c71a61be87a3d4ddcc693372813c0b73c9af1d"}, - {file = "scipy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:43b8e0bcb877faf0abfb613d51026cd5cc78918e9530e375727bf0625c82788f"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5678f88c68ea866ed9ebe3a989091088553ba12c6090244fdae3e467b1139c35"}, - {file = "scipy-1.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:39becb03541f9e58243f4197584286e339029e8908c46f7221abeea4b749fa88"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bce5869c8d68cf383ce240e44c1d9ae7c06078a9396df68ce88a1230f93a30c1"}, - {file = "scipy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:07c3457ce0b3ad5124f98a86533106b643dd811dd61b548e78cf4c8786652f6f"}, - {file = "scipy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:049a8bbf0ad95277ffba9b3b7d23e5369cc39e66406d60422c8cfef40ccc8415"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cd9f1027ff30d90618914a64ca9b1a77a431159df0e2a195d8a9e8a04c78abf9"}, - {file = "scipy-1.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:79c8e5a6c6ffaf3a2262ef1be1e108a035cf4f05c14df56057b64acc5bebffb6"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:51af417a000d2dbe1ec6c372dfe688e041a7084da4fdd350aeb139bd3fb55353"}, - {file = "scipy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4735d6c28aad3cdcf52117e0e91d6b39acd4272f3f5cd9907c24ee931ad601"}, - {file = "scipy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ff7f37b1bf4417baca958d254e8e2875d0cc23aaadbe65b3d5b3077b0eb23ea"}, - {file = "scipy-1.10.1.tar.gz", hash = "sha256:2cf9dfb80a7b4589ba4c40ce7588986d6d5cebc5457cad2c2880f6bc2d42f3a5"}, -] - -[package.dependencies] -numpy = ">=1.19.5,<1.27.0" - -[package.extras] -dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +python-versions = "<3.13,>=3.9" +files = [ + {file = "scipy-1.11.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2b997a5369e2d30c97995dcb29d638701f8000d04df01b8e947f206e5d0ac788"}, + {file = "scipy-1.11.2-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:95763fbda1206bec41157582bea482f50eb3702c85fffcf6d24394b071c0e87a"}, + {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e367904a0fec76433bf3fbf3e85bf60dae8e9e585ffd21898ab1085a29a04d16"}, + {file = "scipy-1.11.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d690e1ca993c8f7ede6d22e5637541217fc6a4d3f78b3672a6fe454dbb7eb9a7"}, + {file = "scipy-1.11.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d2b813bfbe8dec6a75164523de650bad41f4405d35b0fa24c2c28ae07fcefb20"}, + {file = "scipy-1.11.2-cp310-cp310-win_amd64.whl", hash = "sha256:afdb0d983f6135d50770dd979df50bf1c7f58b5b33e0eb8cf5c73c70600eae1d"}, + {file = "scipy-1.11.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8d9886f44ef8c9e776cb7527fb01455bf4f4a46c455c4682edc2c2cc8cd78562"}, + {file = "scipy-1.11.2-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:1342ca385c673208f32472830c10110a9dcd053cf0c4b7d4cd7026d0335a6c1d"}, + {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b133f237bd8ba73bad51bc12eb4f2d84cbec999753bf25ba58235e9fc2096d80"}, + {file = "scipy-1.11.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3aeb87661de987f8ec56fa6950863994cd427209158255a389fc5aea51fa7055"}, + {file = "scipy-1.11.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:90d3b1364e751d8214e325c371f0ee0dd38419268bf4888b2ae1040a6b266b2a"}, + {file = "scipy-1.11.2-cp311-cp311-win_amd64.whl", hash = "sha256:f73102f769ee06041a3aa26b5841359b1a93cc364ce45609657751795e8f4a4a"}, + {file = "scipy-1.11.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:fa4909c6c20c3d91480533cddbc0e7c6d849e7d9ded692918c76ce5964997898"}, + {file = "scipy-1.11.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ac74b1512d38718fb6a491c439aa7b3605b96b1ed3be6599c17d49d6c60fca18"}, + {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8425fa963a32936c9773ee3ce44a765d8ff67eed5f4ac81dc1e4a819a238ee9"}, + {file = "scipy-1.11.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:542a757e2a6ec409e71df3d8fd20127afbbacb1c07990cb23c5870c13953d899"}, + {file = "scipy-1.11.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ea932570b1c2a30edafca922345854ff2cd20d43cd9123b6dacfdecebfc1a80b"}, + {file = "scipy-1.11.2-cp312-cp312-win_amd64.whl", hash = "sha256:4447ad057d7597476f9862ecbd9285bbf13ba9d73ce25acfa4e4b11c6801b4c9"}, + {file = "scipy-1.11.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b0620240ef445b5ddde52460e6bc3483b7c9c750275369379e5f609a1050911c"}, + {file = "scipy-1.11.2-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:f28f1f6cfeb48339c192efc6275749b2a25a7e49c4d8369a28b6591da02fbc9a"}, + {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:214cdf04bbae7a54784f8431f976704ed607c4bc69ba0d5d5d6a9df84374df76"}, + {file = "scipy-1.11.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10eb6af2f751aa3424762948e5352f707b0dece77288206f227864ddf675aca0"}, + {file = "scipy-1.11.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0f3261f14b767b316d7137c66cc4f33a80ea05841b9c87ad83a726205b901423"}, + {file = "scipy-1.11.2-cp39-cp39-win_amd64.whl", hash = "sha256:2c91cf049ffb5575917f2a01da1da082fd24ed48120d08a6e7297dfcac771dcd"}, + {file = "scipy-1.11.2.tar.gz", hash = "sha256:b29318a5e39bd200ca4381d80b065cdf3076c7d7281c5e36569e99273867f61d"}, +] + +[package.dependencies] +numpy = ">=1.21.6,<1.28.0" + +[package.extras] +dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] @@ -6545,6 +6611,21 @@ numpy = ">=1.15" pandas = ">=0.23" scipy = ">=1.0" +[[package]] +name = "semantic-version" +version = "2.10.0" +description = "A library implementing the 'SemVer' scheme." +optional = false +python-versions = ">=2.7" +files = [ + {file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"}, + {file = "semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c"}, +] + +[package.extras] +dev = ["Django (>=1.11)", "check-manifest", "colorama (<=0.4.1)", "coverage", "flake8", "nose2", "readme-renderer (<25.0)", "tox", "wheel", "zest.releaser[recommended]"] +doc = ["Sphinx", "sphinx-rtd-theme"] + [[package]] name = "send2trash" version = "1.8.2" @@ -6579,37 +6660,36 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( [[package]] name = "shap" -version = "0.41.0" +version = "0.42.1" description = "A unified approach to explain the output of any machine learning model." optional = false -python-versions = "*" +python-versions = ">=3.7" files = [ - {file = "shap-0.41.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9e867dd8be6c0644c8d954dcc9efc51c0f0eec432de2d4cb253a7878489bb9f1"}, - {file = "shap-0.41.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:48d52fe9d2ebb7bd829484e55c3b8a2edd8f3e50c4ad9ab905d5b6b72741b018"}, - {file = "shap-0.41.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b4aae56ca7827075a73a72d3ae02e28371e3a5ef244d82390b06d2eb34fb7183"}, - {file = "shap-0.41.0-cp310-cp310-win32.whl", hash = "sha256:43722a25dba0acdd2110f3df663f2eaf218824d229d5e90265d213f469803683"}, - {file = "shap-0.41.0-cp310-cp310-win_amd64.whl", hash = "sha256:0b964a51b3a19b9510e79abb59a3dcdaab55e1ff6fb6fc5b72383289300cb89e"}, - {file = "shap-0.41.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:f99bc572dcc819e9ec81d1dbae8b20d5db1b4cd7499b5db2236485ed4b0b4c38"}, - {file = "shap-0.41.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9a67da53b8b8a6669236585abe1f2e86a80d1af480068d4e4df2d950351d09ad"}, - {file = "shap-0.41.0-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b025d362435572e321676bf605d5a9a56d0a82a45fcc142be2b27b51f02e062c"}, - {file = "shap-0.41.0-cp36-cp36m-win32.whl", hash = "sha256:fbbbab1be65569752d9742b08dc5ad4ffa5b32fbf11a2ec8a3e89eee8036ba96"}, - {file = "shap-0.41.0-cp36-cp36m-win_amd64.whl", hash = "sha256:613d0b5011cb781decb475cb3243441c55fc181ab181cf1916bc86df389c3d30"}, - {file = "shap-0.41.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d925d59868a8c16705e603221a94f6f9edba45e253fb62974c04f26404cfd0e5"}, - {file = "shap-0.41.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:696ac91922a07ab0798d68343eb159094a3b946a785bc8611b95332517cef0cd"}, - {file = "shap-0.41.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a668caa5efc8ddb4bd00d1d1201fcb4a829930a773d40020a936d1b2c9d5fb7f"}, - {file = "shap-0.41.0-cp37-cp37m-win32.whl", hash = "sha256:45656f42028d40ff83fddf670ba968297edf564bd5761f30f29f9eeb973d4b01"}, - {file = "shap-0.41.0-cp37-cp37m-win_amd64.whl", hash = "sha256:dab84f1540b8af1dbf2dca2b1f883c30b65ed3e4fb243e87c03bf2866655a4a7"}, - {file = "shap-0.41.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1e1b2e135098909d18c83dc29bd81532f1f800c84593c15c02a2b915bec4828c"}, - {file = "shap-0.41.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:39946283182c62b61b23f23288497220d4cb9c5175784b09b3cf8319f9e77dcd"}, - {file = "shap-0.41.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e171dd8f0814336e361081b415e8a079754ff9e6f22fcae9baf190e593d4c904"}, - {file = "shap-0.41.0-cp38-cp38-win32.whl", hash = "sha256:6a2e3f701f0eb61164d9aa3687f2e4a6ea9e0296be409372a69efe70c3fcca81"}, - {file = "shap-0.41.0-cp38-cp38-win_amd64.whl", hash = "sha256:a9cf919fb1892a7621074a65ea0c8859f5781848a57858304f782cdbadba0106"}, - {file = "shap-0.41.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:817569a4a661f4d80d0f3626392f0c2e1b4e04ef9051017d02266d04e072c24a"}, - {file = "shap-0.41.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:518e31bf20a31aa1eaf475935e45a4ef2806186f1bb1ddfa53680b4af12fc410"}, - {file = "shap-0.41.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa59b355537e3b29fa62daaddff4eaad6e8f885dc8a9fb8b936e12dde5c73fd8"}, - {file = "shap-0.41.0-cp39-cp39-win32.whl", hash = "sha256:2736eb55633d1fe95d091c54edde220fc30ba0a6f99cdf985337f19fd9eff8bd"}, - {file = "shap-0.41.0-cp39-cp39-win_amd64.whl", hash = "sha256:c7afe5d5e3547e4392bc43f47dc2b6cef2a4a8b366bd7ef8495736af7013c8e7"}, - {file = "shap-0.41.0.tar.gz", hash = "sha256:a49ea4d65aadbc845a695fa3d7ea0bdfc8c928b8e213b0feedf5868ade4b3ca5"}, + {file = "shap-0.42.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4c6106e59dbd446114bb5f7f0762ae0fa4ffa28bdf79a860d287e37ac5233d48"}, + {file = "shap-0.42.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:46cf52ce701eeee554d7b773b09ff907838f1210013c1cee5ddbee021a7f2c72"}, + {file = "shap-0.42.1-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5d4e6c8d63a1e3535c2f3fc64f47f09862d1cc437ad434e9cdc50225d360266"}, + {file = "shap-0.42.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:60d272e133f28cce322049dadec8909d2912c12c31ba38cb2eb861c01e3d16b8"}, + {file = "shap-0.42.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6d1b381a365a4a8582ac0fe1800282a89479757e20fb5f8d8db2ec8e853461c"}, + {file = "shap-0.42.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b6bfe78edf8478c5f0bc2ae1f4150ab1ae3065b5655fcce580fd99ef30601db7"}, + {file = "shap-0.42.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:53f6b6ab79f67dabb6fbc6613b373ebd726c200f8136f1f7e43d8a8068edcad1"}, + {file = "shap-0.42.1-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce0fc9654ab62c6edeaf375c235a781bb280a40ffbbdbce35102d3b2d1a323a4"}, + {file = "shap-0.42.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c570de5b91e26d26c93e6c028d13636845ef86619a3559145de98b7ec1148f1"}, + {file = "shap-0.42.1-cp311-cp311-win_amd64.whl", hash = "sha256:b32b13a5a5fc089594b676f32565d5c5ea3abf5f0755b0fa0d25ffc9d53cb6ea"}, + {file = "shap-0.42.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:34bc359b7c60f873d589133a54640929f76ead7cbe036d5faa35ddb96d2a8168"}, + {file = "shap-0.42.1-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f14bcad9dcc3b48082c3b9a93ca3577610d110a768674b1ce209ada18619c133"}, + {file = "shap-0.42.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56b1d4aa0c9bba4050279a2bfcc3efcabb1af45cb1657e6c57d629810b4b360f"}, + {file = "shap-0.42.1-cp37-cp37m-win_amd64.whl", hash = "sha256:26a3c8321852f12c650f685973159fbdcef75aae47405c4ceb702e3dbf49dcac"}, + {file = "shap-0.42.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:93c97525068868bd84a13a68f853b6286fafc035bbc308291e3a6497677c5d89"}, + {file = "shap-0.42.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:8d9b55b34e9027157f02f996bab71cc5e286ed246c031112a700461a1e2acb4f"}, + {file = "shap-0.42.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6acc29bd3e1bd8eebf94d22ec35421a791fce62d35260e34468e6e6cf008a7c5"}, + {file = "shap-0.42.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6bb4e3044240b300690d7e0282b512d4ffa4def49816e03fe0d6a06dcbde957"}, + {file = "shap-0.42.1-cp38-cp38-win_amd64.whl", hash = "sha256:00cf2878c4a5fa5a6fcb72520ace9d17a027d64dd49272bd2072c20f2f97121d"}, + {file = "shap-0.42.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:48511486c568a09d469381278bb40982cb0f74c1cf8a391dfb79d81e53843beb"}, + {file = "shap-0.42.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d43d31adeae9b1f628f49917179777580c7deceefa6156b5cf488a298287eabd"}, + {file = "shap-0.42.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9d0b2e82bb3a5938b41fa640bb86894dc14b4935d419597d33b7d04392cd6ad0"}, + {file = "shap-0.42.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de4bf0035265cbc127b39ad8ecd1272acb5619e89cae666808d87d17cf6a0b28"}, + {file = "shap-0.42.1-cp39-cp39-win_amd64.whl", hash = "sha256:dfc77a2a4c37ac1c74c54af60d92732991386bd60da8763660846225384fe592"}, + {file = "shap-0.42.1.tar.gz", hash = "sha256:64403915e4a07d2951e7eee4af0e835b1b519367b11806fe1aa4bd6d81adb626"}, ] [package.dependencies] @@ -6621,14 +6701,14 @@ pandas = "*" scikit-learn = "*" scipy = "*" slicer = "0.0.7" -tqdm = ">4.25.0" +tqdm = ">=4.27.0" [package.extras] -all = ["catboost", "ipython", "lightgbm", "lime", "matplotlib", "nbsphinx", "numpydoc", "opencv-python", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "sphinx", "sphinx-rtd-theme", "torch", "transformers", "xgboost"] docs = ["ipython", "matplotlib", "nbsphinx", "numpydoc", "sphinx", "sphinx-rtd-theme"] others = ["lime"] plots = ["ipython", "matplotlib"] -test = ["catboost", "lightgbm", "opencv-python", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "torch", "transformers", "xgboost"] +test = ["catboost", "lightgbm", "opencv-python", "protobuf (==3.20.3)", "pyod", "pyspark", "pytest", "pytest-cov", "pytest-mpl", "sentencepiece", "tensorflow", "torch", "torchvision", "transformers", "xgboost"] +test-core = ["pytest", "pytest-cov", "pytest-mpl"] [[package]] name = "six" @@ -6708,13 +6788,13 @@ files = [ [[package]] name = "soupsieve" -version = "2.4.1" +version = "2.5" description = "A modern CSS selector implementation for Beautiful Soup." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "soupsieve-2.4.1-py3-none-any.whl", hash = "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8"}, - {file = "soupsieve-2.4.1.tar.gz", hash = "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea"}, + {file = "soupsieve-2.5-py3-none-any.whl", hash = "sha256:eaa337ff55a1579b6549dc679565eac1e3d000563bcb1c8ab0d0fefbc0c2cdc7"}, + {file = "soupsieve-2.5.tar.gz", hash = "sha256:5663d5a7b3bfaeee0bc4372e7fc48f9cff4940b3eec54a6451cc5299f1097690"}, ] [[package]] @@ -6843,22 +6923,23 @@ setuptools = "*" [[package]] name = "spdx-tools" -version = "0.8.0a2" +version = "0.8.1" description = "SPDX parser and tools." optional = false python-versions = ">=3.7" files = [ - {file = "spdx-tools-0.8.0a2.tar.gz", hash = "sha256:cfc6793310df98f49482b251a4f0174fa81b7059f9bd1a6cc0c5863e6e1cdb89"}, - {file = "spdx_tools-0.8.0a2-py3-none-any.whl", hash = "sha256:0a66b17db5829b2a8fbc9831229d6389146413254ae04ec2df619896e8aeab33"}, + {file = "spdx-tools-0.8.1.tar.gz", hash = "sha256:c83652cd65b5726058dcbdaab85839dbe484c43ea6f61046137516aa1b8428ae"}, + {file = "spdx_tools-0.8.1-py3-none-any.whl", hash = "sha256:84eb4e524d2020da6120f19eab2e4ab1bb4e08453037ebe689159f74f7058684"}, ] [package.dependencies] +beartype = "*" click = "*" license-expression = "*" ply = "*" pyyaml = "*" rdflib = "*" -typeguard = "4.0.0" +semantic-version = "*" uritools = "*" xmltodict = "*" @@ -6866,83 +6947,84 @@ xmltodict = "*" code-style = ["black", "flake8", "isort"] development = ["black", "flake8", "isort", "networkx", "pytest"] graph-generation = ["networkx", "pygraphviz"] -test = ["pytest"] +test = ["pyshacl", "pytest"] [[package]] name = "sphinx" -version = "4.5.0" +version = "7.2.5" description = "Python documentation generator" optional = false -python-versions = ">=3.6" +python-versions = ">=3.9" files = [ - {file = "Sphinx-4.5.0-py3-none-any.whl", hash = "sha256:ebf612653238bcc8f4359627a9b7ce44ede6fdd75d9d30f68255c7383d3a6226"}, - {file = "Sphinx-4.5.0.tar.gz", hash = "sha256:7bf8ca9637a4ee15af412d1a1d9689fec70523a68ca9bb9127c2f3eeb344e2e6"}, + {file = "sphinx-7.2.5-py3-none-any.whl", hash = "sha256:9269f9ed2821c9ebd30e4204f5c2339f5d4980e377bc89cb2cb6f9b17409c20a"}, + {file = "sphinx-7.2.5.tar.gz", hash = "sha256:1a9290001b75c497fd087e92b0334f1bbfa1a1ae7fddc084990c4b7bd1130b88"}, ] [package.dependencies] alabaster = ">=0.7,<0.8" -babel = ">=1.3" -colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.14,<0.18" -imagesize = "*" -importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -Jinja2 = ">=2.3" -packaging = "*" -Pygments = ">=2.0" -requests = ">=2.5.0" -snowballstemmer = ">=1.1" +babel = ">=2.9" +colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.18.1,<0.21" +imagesize = ">=1.3" +importlib-metadata = {version = ">=4.8", markers = "python_version < \"3.10\""} +Jinja2 = ">=3.0" +packaging = ">=21.0" +Pygments = ">=2.14" +requests = ">=2.25.0" +snowballstemmer = ">=2.0" sphinxcontrib-applehelp = "*" sphinxcontrib-devhelp = "*" sphinxcontrib-htmlhelp = ">=2.0.0" sphinxcontrib-jsmath = "*" sphinxcontrib-qthelp = "*" -sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "types-requests", "types-typed-ast"] -test = ["cython", "html5lib", "pytest", "pytest-cov", "typed-ast"] +lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] +test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] [[package]] name = "sphinx-autoapi" -version = "2.0.1" +version = "2.1.1" description = "Sphinx API documentation generator" optional = false python-versions = ">=3.7" files = [ - {file = "sphinx-autoapi-2.0.1.tar.gz", hash = "sha256:cdf47968c20852f4feb0ccefd09e414bb820af8af8f82fab15a24b09a3d1baba"}, - {file = "sphinx_autoapi-2.0.1-py2.py3-none-any.whl", hash = "sha256:8ed197a0c9108770aa442a5445744c1405b356ea64df848e8553411b9b9e129b"}, + {file = "sphinx-autoapi-2.1.1.tar.gz", hash = "sha256:fbadb96e79020d6b0ec45d888517bf816d6b587a2d340fbe1ec31135e300a6c8"}, + {file = "sphinx_autoapi-2.1.1-py2.py3-none-any.whl", hash = "sha256:d8da890477bd18e3327cafdead9d5a44a7d798476c6fa32492100e288250a5a3"}, ] [package.dependencies] +anyascii = "*" astroid = ">=2.7" Jinja2 = "*" PyYAML = "*" -sphinx = ">=4.0" -unidecode = "*" +sphinx = ">=5.2.0" [package.extras] -docs = ["sphinx", "sphinx-rtd-theme"] +docs = ["furo", "sphinx", "sphinx-design"] dotnet = ["sphinxcontrib-dotnetdomain"] go = ["sphinxcontrib-golangdomain"] [[package]] name = "sphinx-autodoc-typehints" -version = "1.19.1" +version = "1.24.0" description = "Type hints (PEP 484) support for the Sphinx autodoc extension" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "sphinx_autodoc_typehints-1.19.1-py3-none-any.whl", hash = "sha256:9be46aeeb1b315eb5df1f3a7cb262149895d16c7d7dcd77b92513c3c3a1e85e6"}, - {file = "sphinx_autodoc_typehints-1.19.1.tar.gz", hash = "sha256:6c841db55e0e9be0483ff3962a2152b60e79306f4288d8c4e7e86ac84486a5ea"}, + {file = "sphinx_autodoc_typehints-1.24.0-py3-none-any.whl", hash = "sha256:6a73c0c61a9144ce2ed5ef2bed99d615254e5005c1cc32002017d72d69fb70e6"}, + {file = "sphinx_autodoc_typehints-1.24.0.tar.gz", hash = "sha256:94e440066941bb237704bb880785e2d05e8ae5406c88674feefbb938ad0dc6af"}, ] [package.dependencies] -Sphinx = ">=4.5" +sphinx = ">=7.0.1" [package.extras] -testing = ["covdefaults (>=2.2)", "coverage (>=6.3)", "diff-cover (>=6.4)", "nptyping (>=2.1.2)", "pytest (>=7.1)", "pytest-cov (>=3)", "sphobjinv (>=2)", "typing-extensions (>=4.1)"] -type-comments = ["typed-ast (>=1.5.2)"] +docs = ["furo (>=2023.5.20)", "sphinx (>=7.0.1)"] +numpy = ["nptyping (>=2.5)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "pytest (>=7.3.1)", "pytest-cov (>=4.1)", "sphobjinv (>=2.3.1)", "typing-extensions (>=4.6.3)"] [[package]] name = "sphinx-copybutton" @@ -6964,82 +7046,106 @@ rtd = ["ipython", "myst-nb", "sphinx", "sphinx-book-theme", "sphinx-examples"] [[package]] name = "sphinx-rtd-theme" -version = "1.1.1" +version = "2.0.0rc2" description = "Read the Docs theme for Sphinx" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" +python-versions = ">=3.6" files = [ - {file = "sphinx_rtd_theme-1.1.1-py2.py3-none-any.whl", hash = "sha256:31faa07d3e97c8955637fc3f1423a5ab2c44b74b8cc558a51498c202ce5cbda7"}, - {file = "sphinx_rtd_theme-1.1.1.tar.gz", hash = "sha256:6146c845f1e1947b3c3dd4432c28998a1693ccc742b4f9ad7c63129f0757c103"}, + {file = "sphinx_rtd_theme-2.0.0rc2-py2.py3-none-any.whl", hash = "sha256:f04df9213acf421c3b42f4f39005c8bc68fc4696c5b4ed4ef13d1678369713f7"}, + {file = "sphinx_rtd_theme-2.0.0rc2.tar.gz", hash = "sha256:d1270effe620df9164b1cd2d617909472a63531e21a716fd22d0fbcedf9d24ff"}, ] [package.dependencies] -docutils = "<0.18" -sphinx = ">=1.6,<6" +docutils = "<0.21" +sphinx = ">=5,<8" +sphinxcontrib-jquery = ">=4,<5" [package.extras] dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinxcontrib-apidoc" -version = "0.3.0" +version = "0.4.0" description = "A Sphinx extension for running 'sphinx-apidoc' on each build" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "sphinxcontrib-apidoc-0.3.0.tar.gz", hash = "sha256:729bf592cf7b7dd57c4c05794f732dc026127275d785c2a5494521fdde773fb9"}, - {file = "sphinxcontrib_apidoc-0.3.0-py2.py3-none-any.whl", hash = "sha256:6671a46b2c6c5b0dca3d8a147849d159065e50443df79614f921b42fbd15cb09"}, + {file = "sphinxcontrib-apidoc-0.4.0.tar.gz", hash = "sha256:fe59d15882472aa93c2737afbdea6bedb34ce35cbd34aa4947909f5df1500aad"}, + {file = "sphinxcontrib_apidoc-0.4.0-py3-none-any.whl", hash = "sha256:18b9fb0cd4816758ec5f8be41c64f8924991dd40fd7b10e666ec9eed2800baff"}, ] [package.dependencies] pbr = "*" -Sphinx = ">=1.6.0" +Sphinx = ">=5.0.0" [[package]] name = "sphinxcontrib-applehelp" -version = "1.0.4" +version = "1.0.7" description = "sphinxcontrib-applehelp is a Sphinx extension which outputs Apple help books" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-applehelp-1.0.4.tar.gz", hash = "sha256:828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"}, - {file = "sphinxcontrib_applehelp-1.0.4-py3-none-any.whl", hash = "sha256:29d341f67fb0f6f586b23ad80e072c8e6ad0b48417db2bde114a4c9746feb228"}, + {file = "sphinxcontrib_applehelp-1.0.7-py3-none-any.whl", hash = "sha256:094c4d56209d1734e7d252f6e0b3ccc090bd52ee56807a5d9315b19c122ab15d"}, + {file = "sphinxcontrib_applehelp-1.0.7.tar.gz", hash = "sha256:39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-devhelp" -version = "1.0.2" -description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +version = "1.0.5" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, - {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, + {file = "sphinxcontrib_devhelp-1.0.5-py3-none-any.whl", hash = "sha256:fe8009aed765188f08fcaadbb3ea0d90ce8ae2d76710b7e29ea7d047177dae2f"}, + {file = "sphinxcontrib_devhelp-1.0.5.tar.gz", hash = "sha256:63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-htmlhelp" -version = "2.0.1" +version = "2.0.4" description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-htmlhelp-2.0.1.tar.gz", hash = "sha256:0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"}, - {file = "sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl", hash = "sha256:c38cb46dccf316c79de6e5515e1770414b797162b23cd3d06e67020e1d2a6903"}, + {file = "sphinxcontrib_htmlhelp-2.0.4-py3-none-any.whl", hash = "sha256:8001661c077a73c29beaf4a79968d0726103c5605e27db92b9ebed8bab1359e9"}, + {file = "sphinxcontrib_htmlhelp-2.0.4.tar.gz", hash = "sha256:6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["html5lib", "pytest"] +[[package]] +name = "sphinxcontrib-jquery" +version = "4.1" +description = "Extension to include jQuery on newer Sphinx releases" +optional = false +python-versions = ">=2.7" +files = [ + {file = "sphinxcontrib-jquery-4.1.tar.gz", hash = "sha256:1620739f04e36a2c779f1a131a2dfd49b2fd07351bf1968ced074365933abc7a"}, + {file = "sphinxcontrib_jquery-4.1-py2.py3-none-any.whl", hash = "sha256:f936030d7d0147dd026a4f2b5a57343d233f1fc7b363f68b3d4f1cb0993878ae"}, +] + +[package.dependencies] +Sphinx = ">=1.8" + [[package]] name = "sphinxcontrib-jsmath" version = "1.0.1" @@ -7056,30 +7162,36 @@ test = ["flake8", "mypy", "pytest"] [[package]] name = "sphinxcontrib-qthelp" -version = "1.0.3" -description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +version = "1.0.6" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp documents" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, - {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, + {file = "sphinxcontrib_qthelp-1.0.6-py3-none-any.whl", hash = "sha256:bf76886ee7470b934e363da7a954ea2825650013d367728588732c7350f49ea4"}, + {file = "sphinxcontrib_qthelp-1.0.6.tar.gz", hash = "sha256:62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] [[package]] name = "sphinxcontrib-serializinghtml" -version = "1.1.5" -description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +version = "1.1.9" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)" optional = false -python-versions = ">=3.5" +python-versions = ">=3.9" files = [ - {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, - {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, + {file = "sphinxcontrib_serializinghtml-1.1.9-py3-none-any.whl", hash = "sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1"}, + {file = "sphinxcontrib_serializinghtml-1.1.9.tar.gz", hash = "sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"}, ] +[package.dependencies] +Sphinx = ">=5" + [package.extras] lint = ["docutils-stubs", "flake8", "mypy"] test = ["pytest"] @@ -7361,10 +7473,7 @@ catalogue = ">=2.0.4,<2.1.0" confection = ">=0.0.1,<1.0.0" cymem = ">=2.0.2,<2.1.0" murmurhash = ">=1.0.2,<1.1.0" -numpy = [ - {version = ">=1.15.0", markers = "python_version < \"3.9\""}, - {version = ">=1.19.0", markers = "python_version >= \"3.9\""}, -] +numpy = {version = ">=1.19.0", markers = "python_version >= \"3.9\""} packaging = ">=20.0" preshed = ">=3.0.2,<3.1.0" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<3.0.0" @@ -7409,20 +7518,20 @@ files = [ [[package]] name = "tifffile" -version = "2023.7.10" +version = "2023.8.30" description = "Read and write TIFF files" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "tifffile-2023.7.10-py3-none-any.whl", hash = "sha256:94dfdec321ace96abbfe872a66cfd824800c099a2db558443453eebc2c11b304"}, - {file = "tifffile-2023.7.10.tar.gz", hash = "sha256:c06ec460926d16796eeee249a560bcdddf243daae36ac62af3c84a953cd60b4a"}, + {file = "tifffile-2023.8.30-py3-none-any.whl", hash = "sha256:62364eef35a6fdcc7bc2ad6f97dd270f577efb01b31260ff800af76a66c1e145"}, + {file = "tifffile-2023.8.30.tar.gz", hash = "sha256:6a8c53b012a286b75d09a1498ab32f202f24cc6270a105b5d5911dc4426f162a"}, ] [package.dependencies] numpy = "*" [package.extras] -all = ["defusedxml", "fsspec", "imagecodecs (>=2023.1.23)", "lxml", "matplotlib", "zarr"] +all = ["defusedxml", "fsspec", "imagecodecs (>=2023.8.12)", "lxml", "matplotlib", "zarr"] [[package]] name = "tinycss2" @@ -7531,69 +7640,77 @@ files = [ [[package]] name = "torch" -version = "1.12.1" +version = "1.13.1" description = "Tensors and Dynamic neural networks in Python with strong GPU acceleration" optional = false python-versions = ">=3.7.0" files = [ - {file = "torch-1.12.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:9c038662db894a23e49e385df13d47b2a777ffd56d9bcd5b832593fab0a7e286"}, - {file = "torch-1.12.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:4e1b9c14cf13fd2ab8d769529050629a0e68a6fc5cb8e84b4a3cc1dd8c4fe541"}, - {file = "torch-1.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:e9c8f4a311ac29fc7e8e955cfb7733deb5dbe1bdaabf5d4af2765695824b7e0d"}, - {file = "torch-1.12.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:976c3f997cea38ee91a0dd3c3a42322785414748d1761ef926b789dfa97c6134"}, - {file = "torch-1.12.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:68104e4715a55c4bb29a85c6a8d57d820e0757da363be1ba680fa8cc5be17b52"}, - {file = "torch-1.12.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:743784ccea0dc8f2a3fe6a536bec8c4763bd82c1352f314937cb4008d4805de1"}, - {file = "torch-1.12.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:b5dbcca369800ce99ba7ae6dee3466607a66958afca3b740690d88168752abcf"}, - {file = "torch-1.12.1-cp37-cp37m-win_amd64.whl", hash = "sha256:f3b52a634e62821e747e872084ab32fbcb01b7fa7dbb7471b6218279f02a178a"}, - {file = "torch-1.12.1-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:8a34a2fbbaa07c921e1b203f59d3d6e00ed379f2b384445773bd14e328a5b6c8"}, - {file = "torch-1.12.1-cp37-none-macosx_11_0_arm64.whl", hash = "sha256:42f639501928caabb9d1d55ddd17f07cd694de146686c24489ab8c615c2871f2"}, - {file = "torch-1.12.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0b44601ec56f7dd44ad8afc00846051162ef9c26a8579dda0a02194327f2d55e"}, - {file = "torch-1.12.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:cd26d8c5640c3a28c526d41ccdca14cf1cbca0d0f2e14e8263a7ac17194ab1d2"}, - {file = "torch-1.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:42e115dab26f60c29e298559dbec88444175528b729ae994ec4c65d56fe267dd"}, - {file = "torch-1.12.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:a8320ba9ad87e80ca5a6a016e46ada4d1ba0c54626e135d99b2129a4541c509d"}, - {file = "torch-1.12.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:03e31c37711db2cd201e02de5826de875529e45a55631d317aadce2f1ed45aa8"}, - {file = "torch-1.12.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:9b356aea223772cd754edb4d9ecf2a025909b8615a7668ac7d5130f86e7ec421"}, - {file = "torch-1.12.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:6cf6f54b43c0c30335428195589bd00e764a6d27f3b9ba637aaa8c11aaf93073"}, - {file = "torch-1.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:f00c721f489089dc6364a01fd84906348fe02243d0af737f944fddb36003400d"}, - {file = "torch-1.12.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:bfec2843daa654f04fda23ba823af03e7b6f7650a873cdb726752d0e3718dada"}, - {file = "torch-1.12.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:69fe2cae7c39ccadd65a123793d30e0db881f1c1927945519c5c17323131437e"}, -] - -[package.dependencies] + {file = "torch-1.13.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:fd12043868a34a8da7d490bf6db66991108b00ffbeecb034228bfcbbd4197143"}, + {file = "torch-1.13.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:d9fe785d375f2e26a5d5eba5de91f89e6a3be5d11efb497e76705fdf93fa3c2e"}, + {file = "torch-1.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:98124598cdff4c287dbf50f53fb455f0c1e3a88022b39648102957f3445e9b76"}, + {file = "torch-1.13.1-cp310-none-macosx_10_9_x86_64.whl", hash = "sha256:393a6273c832e047581063fb74335ff50b4c566217019cc6ace318cd79eb0566"}, + {file = "torch-1.13.1-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:0122806b111b949d21fa1a5f9764d1fd2fcc4a47cb7f8ff914204fd4fc752ed5"}, + {file = "torch-1.13.1-cp311-cp311-manylinux1_x86_64.whl", hash = "sha256:22128502fd8f5b25ac1cd849ecb64a418382ae81dd4ce2b5cebaa09ab15b0d9b"}, + {file = "torch-1.13.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:76024be052b659ac1304ab8475ab03ea0a12124c3e7626282c9c86798ac7bc11"}, + {file = "torch-1.13.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:ea8dda84d796094eb8709df0fcd6b56dc20b58fdd6bc4e8d7109930dafc8e419"}, + {file = "torch-1.13.1-cp37-cp37m-win_amd64.whl", hash = "sha256:2ee7b81e9c457252bddd7d3da66fb1f619a5d12c24d7074de91c4ddafb832c93"}, + {file = "torch-1.13.1-cp37-none-macosx_10_9_x86_64.whl", hash = "sha256:0d9b8061048cfb78e675b9d2ea8503bfe30db43d583599ae8626b1263a0c1380"}, + {file = "torch-1.13.1-cp37-none-macosx_11_0_arm64.whl", hash = "sha256:f402ca80b66e9fbd661ed4287d7553f7f3899d9ab54bf5c67faada1555abde28"}, + {file = "torch-1.13.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:727dbf00e2cf858052364c0e2a496684b9cb5aa01dc8a8bc8bbb7c54502bdcdd"}, + {file = "torch-1.13.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:df8434b0695e9ceb8cc70650afc1310d8ba949e6db2a0525ddd9c3b2b181e5fe"}, + {file = "torch-1.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:5e1e722a41f52a3f26f0c4fcec227e02c6c42f7c094f32e49d4beef7d1e213ea"}, + {file = "torch-1.13.1-cp38-none-macosx_10_9_x86_64.whl", hash = "sha256:33e67eea526e0bbb9151263e65417a9ef2d8fa53cbe628e87310060c9dcfa312"}, + {file = "torch-1.13.1-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:eeeb204d30fd40af6a2d80879b46a7efbe3cf43cdbeb8838dd4f3d126cc90b2b"}, + {file = "torch-1.13.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:50ff5e76d70074f6653d191fe4f6a42fdbe0cf942fbe2a3af0b75eaa414ac038"}, + {file = "torch-1.13.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:2c3581a3fd81eb1f0f22997cddffea569fea53bafa372b2c0471db373b26aafc"}, + {file = "torch-1.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:0aa46f0ac95050c604bcf9ef71da9f1172e5037fdf2ebe051962d47b123848e7"}, + {file = "torch-1.13.1-cp39-none-macosx_10_9_x86_64.whl", hash = "sha256:6930791efa8757cb6974af73d4996b6b50c592882a324b8fb0589c6a9ba2ddaf"}, + {file = "torch-1.13.1-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:e0df902a7c7dd6c795698532ee5970ce898672625635d885eade9976e5a04949"}, +] + +[package.dependencies] +nvidia-cublas-cu11 = {version = "11.10.3.66", markers = "platform_system == \"Linux\""} +nvidia-cuda-nvrtc-cu11 = {version = "11.7.99", markers = "platform_system == \"Linux\""} +nvidia-cuda-runtime-cu11 = {version = "11.7.99", markers = "platform_system == \"Linux\""} +nvidia-cudnn-cu11 = {version = "8.5.0.96", markers = "platform_system == \"Linux\""} typing-extensions = "*" +[package.extras] +opt-einsum = ["opt-einsum (>=3.3)"] + [[package]] name = "torchvision" -version = "0.13.1" +version = "0.14.1" description = "image and video datasets and models for torch deep learning" optional = false python-versions = ">=3.7" files = [ - {file = "torchvision-0.13.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:19286a733c69dcbd417b86793df807bd227db5786ed787c17297741a9b0d0fc7"}, - {file = "torchvision-0.13.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:08f592ea61836ebeceb5c97f4d7a813b9d7dc651bbf7ce4401563ccfae6a21fc"}, - {file = "torchvision-0.13.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:ef5fe3ec1848123cd0ec74c07658192b3147dcd38e507308c790d5943e87b88c"}, - {file = "torchvision-0.13.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:099874088df104d54d8008f2a28539ca0117b512daed8bf3c2bbfa2b7ccb187a"}, - {file = "torchvision-0.13.1-cp310-cp310-win_amd64.whl", hash = "sha256:8e4d02e4d8a203e0c09c10dfb478214c224d080d31efc0dbf36d9c4051f7f3c6"}, - {file = "torchvision-0.13.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:5e631241bee3661de64f83616656224af2e3512eb2580da7c08e08b8c965a8ac"}, - {file = "torchvision-0.13.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:899eec0b9f3b99b96d6f85b9aa58c002db41c672437677b553015b9135b3be7e"}, - {file = "torchvision-0.13.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:83e9e2457f23110fd53b0177e1bc621518d6ea2108f570e853b768ce36b7c679"}, - {file = "torchvision-0.13.1-cp37-cp37m-win_amd64.whl", hash = "sha256:7552e80fa222252b8b217a951c85e172a710ea4cad0ae0c06fbb67addece7871"}, - {file = "torchvision-0.13.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f230a1a40ed70d51e463ce43df243ec520902f8725de2502e485efc5eea9d864"}, - {file = "torchvision-0.13.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e9a563894f9fa40692e24d1aa58c3ef040450017cfed3598ff9637f404f3fe3b"}, - {file = "torchvision-0.13.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:7cb789ceefe6dcd0dc8eeda37bfc45efb7cf34770eac9533861d51ca508eb5b3"}, - {file = "torchvision-0.13.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:87c137f343197769a51333076e66bfcd576301d2cd8614b06657187c71b06c4f"}, - {file = "torchvision-0.13.1-cp38-cp38-win_amd64.whl", hash = "sha256:4d8bf321c4380854ef04613935fdd415dce29d1088a7ff99e06e113f0efe9203"}, - {file = "torchvision-0.13.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0298bae3b09ac361866088434008d82b99d6458fe8888c8df90720ef4b347d44"}, - {file = "torchvision-0.13.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c5ed609c8bc88c575226400b2232e0309094477c82af38952e0373edef0003fd"}, - {file = "torchvision-0.13.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:3567fb3def829229ec217c1e38f08c5128ff7fb65854cac17ebac358ff7aa309"}, - {file = "torchvision-0.13.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:b167934a5943242da7b1e59318f911d2d253feeca0d13ad5d832b58eed943401"}, - {file = "torchvision-0.13.1-cp39-cp39-win_amd64.whl", hash = "sha256:0e77706cc90462653620e336bb90daf03d7bf1b88c3a9a3037df8d111823a56e"}, + {file = "torchvision-0.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb05dd9dd3af5428fee525400759daf8da8e4caec45ddd6908cfb36571f6433"}, + {file = "torchvision-0.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8d0766ea92affa7af248e327dd85f7c9cfdf51a57530b43212d4e1858548e9d7"}, + {file = "torchvision-0.14.1-cp310-cp310-manylinux1_x86_64.whl", hash = "sha256:6d7b35653113664ea3fdcb71f515cfbf29d2fe393000fd8aaff27a1284de6908"}, + {file = "torchvision-0.14.1-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:8a9eb773a2fa8f516e404ac09c059fb14e6882c48fdbb9c946327d2ce5dba6cd"}, + {file = "torchvision-0.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:13986f0c15377ff23039e1401012ccb6ecf71024ce53def27139e4eac5a57592"}, + {file = "torchvision-0.14.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:fb7a793fd33ce1abec24b42778419a3fb1e3159d7dfcb274a3ca8fb8cbc408dc"}, + {file = "torchvision-0.14.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:89fb0419780ec9a9eb9f7856a0149f6ac9f956b28f44b0c0080c6b5b48044db7"}, + {file = "torchvision-0.14.1-cp37-cp37m-manylinux2014_aarch64.whl", hash = "sha256:a2d4237d3c9705d7729eb4534e4eb06f1d6be7ff1df391204dfb51586d9b0ecb"}, + {file = "torchvision-0.14.1-cp37-cp37m-win_amd64.whl", hash = "sha256:92a324712a87957443cc34223274298ae9496853f115c252f8fc02b931f2340e"}, + {file = "torchvision-0.14.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:68ed03359dcd3da9cd21b8ab94da21158df8a6a0c5bad0bf4a42f0e448d28cb3"}, + {file = "torchvision-0.14.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:30fcf0e9fe57d4ac4ce6426659a57dce199637ccb6c70be1128670f177692624"}, + {file = "torchvision-0.14.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:0ed02aefd09bf1114d35f1aa7dce55aa61c2c7e57f9aa02dce362860be654e85"}, + {file = "torchvision-0.14.1-cp38-cp38-manylinux2014_aarch64.whl", hash = "sha256:a541e49fc3c4e90e49e6988428ab047415ed52ea97d0c0bfd147d8bacb8f4df8"}, + {file = "torchvision-0.14.1-cp38-cp38-win_amd64.whl", hash = "sha256:6099b3191dc2516099a32ae38a5fb349b42e863872a13545ab1a524b6567be60"}, + {file = "torchvision-0.14.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c5e744f56e5f5b452deb5fc0f3f2ba4d2f00612d14d8da0dbefea8f09ac7690b"}, + {file = "torchvision-0.14.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:758b20d079e810b4740bd60d1eb16e49da830e3360f9be379eb177ee221fa5d4"}, + {file = "torchvision-0.14.1-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:83045507ef8d3c015d4df6be79491375b2f901352cfca6e72b4723e9c4f9a55d"}, + {file = "torchvision-0.14.1-cp39-cp39-manylinux2014_aarch64.whl", hash = "sha256:eaed58cf454323ed9222d4e0dd5fb897064f454b400696e03a5200e65d3a1e76"}, + {file = "torchvision-0.14.1-cp39-cp39-win_amd64.whl", hash = "sha256:b337e1245ca4353623dd563c03cd8f020c2496a7c5d12bba4d2e381999c766e0"}, ] [package.dependencies] numpy = "*" pillow = ">=5.3.0,<8.3.dev0 || >=8.4.dev0" requests = "*" -torch = "1.12.1" +torch = "1.13.1" typing-extensions = "*" [package.extras] @@ -7601,16 +7718,17 @@ scipy = ["scipy"] [[package]] name = "torchxrayvision" -version = "0.0.37" +version = "1.2.0" description = "TorchXRayVision: A library of chest X-ray datasets and models" optional = false python-versions = ">=3.6" files = [ - {file = "torchxrayvision-0.0.37-py3-none-any.whl", hash = "sha256:7f59869b0c2b593df8fcf5773213ba771b50d08a3d397484379c18e5081035a5"}, - {file = "torchxrayvision-0.0.37.tar.gz", hash = "sha256:dd7357bfdbaccb14e86802752b8a9fcdc55528be4a002a3654fd9edc73f00ed4"}, + {file = "torchxrayvision-1.2.0-py3-none-any.whl", hash = "sha256:2e13e6137f397205fe6c62997530dd64f9ba611bb8e41ef610594d55c9baacd0"}, + {file = "torchxrayvision-1.2.0.tar.gz", hash = "sha256:6392832364034efb3da3d414804119af70dba099d12f1e9ca2a58159c5cb53a7"}, ] [package.dependencies] +imageio = "*" numpy = ">=1" pandas = ">=1" pillow = ">=5.3.0" @@ -7677,13 +7795,13 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] [[package]] name = "transformers" -version = "4.32.0" +version = "4.33.0" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.32.0-py3-none-any.whl", hash = "sha256:32d8adf0ed76285508e7fd66657b4448ec1f882599ae6bf6f9c36bd7bf798402"}, - {file = "transformers-4.32.0.tar.gz", hash = "sha256:ca510f9688d2fe7347abbbfbd13f2f6dcd3c8349870c8d0ed98beed5f579b354"}, + {file = "transformers-4.33.0-py3-none-any.whl", hash = "sha256:c3b7f818e90c4361bb50ad541ab94e28329aa0d97a1c45ffafa5a8b693bc73ec"}, + {file = "transformers-4.33.0.tar.gz", hash = "sha256:9e894dc62cfb02d92c1201e57219765b53be6486a306db8b60414e93fc2e39a5"}, ] [package.dependencies] @@ -7700,16 +7818,16 @@ tqdm = ">=4.27" [package.extras] accelerate = ["accelerate (>=0.20.3)"] -agents = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch (>=1.9,!=1.12.0)"] -all = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune]", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.9,!=1.12.0)", "torchaudio", "torchvision"] +agents = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "datasets (!=2.5.0)", "diffusers", "opencv-python", "sentencepiece (>=0.1.91,!=0.1.92)", "torch (>=1.10,!=1.12.0)"] +all = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune]", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.10,!=1.12.0)", "torchaudio", "torchvision"] audio = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] codecarbon = ["codecarbon (==1.2.0)"] deepspeed = ["accelerate (>=0.20.3)", "deepspeed (>=0.9.3)"] deepspeed-testing = ["GitPython (<3.1.19)", "accelerate (>=0.20.3)", "beautifulsoup4", "black (>=23.1,<24.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "deepspeed (>=0.9.3)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "optuna", "parameterized", "protobuf", "psutil", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "sentencepiece (>=0.1.91,!=0.1.92)", "timeout-decorator"] -dev = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "beautifulsoup4", "black (>=23.1,<24.0)", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "ray[tune]", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorflow (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.9,!=1.12.0)", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "beautifulsoup4", "black (>=23.1,<24.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorflow (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "urllib3 (<2.0.0)"] -dev-torch = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "accelerate (>=0.20.3)", "beautifulsoup4", "black (>=23.1,<24.0)", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "ray[tune]", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "timeout-decorator", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.9,!=1.12.0)", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] -docs = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune]", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.9,!=1.12.0)", "torchaudio", "torchvision"] +dev = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "beautifulsoup4", "black (>=23.1,<24.0)", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "decord (==0.6.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "flax (>=0.4.1,<=0.7.0)", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "ray[tune]", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "tensorflow (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx", "timeout-decorator", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.10,!=1.12.0)", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +dev-tensorflow = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "beautifulsoup4", "black (>=23.1,<24.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "isort (>=5.5.4)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "nltk", "onnxconverter-common", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "tensorflow (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx", "timeout-decorator", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "urllib3 (<2.0.0)"] +dev-torch = ["GitPython (<3.1.19)", "Pillow (<10.0.0)", "accelerate (>=0.20.3)", "beautifulsoup4", "black (>=23.1,<24.0)", "codecarbon (==1.2.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "fugashi (>=1.0)", "hf-doc-builder", "hf-doc-builder (>=0.3.0)", "ipadic (>=1.0.0,<2.0)", "isort (>=5.5.4)", "kenlm", "librosa", "nltk", "onnxruntime (>=1.4.0)", "onnxruntime-tools (>=1.4.2)", "optuna", "parameterized", "phonemizer", "protobuf", "psutil", "pyctcdecode (>=0.4.0)", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "ray[tune]", "rhoknp (>=1.1.0,<1.3.1)", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "ruff (>=0.0.241,<=0.0.259)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "scikit-learn", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "sudachidict-core (>=20220729)", "sudachipy (>=0.6.6)", "timeout-decorator", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.10,!=1.12.0)", "torchaudio", "torchvision", "unidic (>=1.0.2)", "unidic-lite (>=1.0.7)", "urllib3 (<2.0.0)"] +docs = ["Pillow (<10.0.0)", "accelerate (>=0.20.3)", "av (==9.2.0)", "codecarbon (==1.2.0)", "decord (==0.6.0)", "flax (>=0.4.1,<=0.7.0)", "hf-doc-builder", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "kenlm", "keras-nlp (>=0.3.1)", "librosa", "onnxconverter-common", "optax (>=0.0.8,<=0.1.4)", "optuna", "phonemizer", "protobuf", "pyctcdecode (>=0.4.0)", "ray[tune]", "sentencepiece (>=0.1.91,!=0.1.92)", "sigopt", "tensorflow (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx", "timm", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.10,!=1.12.0)", "torchaudio", "torchvision"] docs-specific = ["hf-doc-builder"] fairscale = ["fairscale (>0.3)"] flax = ["flax (>=0.4.1,<=0.7.0)", "jax (>=0.4.1,<=0.4.13)", "jaxlib (>=0.4.1,<=0.4.13)", "optax (>=0.0.8,<=0.1.4)"] @@ -7732,37 +7850,18 @@ sigopt = ["sigopt"] sklearn = ["scikit-learn"] speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] testing = ["GitPython (<3.1.19)", "beautifulsoup4", "black (>=23.1,<24.0)", "cookiecutter (==1.7.3)", "datasets (!=2.5.0)", "dill (<0.3.5)", "evaluate (>=0.2.0)", "faiss-cpu", "hf-doc-builder (>=0.3.0)", "nltk", "parameterized", "protobuf", "psutil", "pytest (>=7.2.0)", "pytest-timeout", "pytest-xdist", "rjieba", "rouge-score (!=0.0.7,!=0.0.8,!=0.1,!=0.1.1)", "sacrebleu (>=1.4.12,<2.0.0)", "sacremoses", "timeout-decorator"] -tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx"] -tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.14)", "tensorflow-text (<2.14)", "tf2onnx"] +tf = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx"] +tf-cpu = ["keras-nlp (>=0.3.1)", "onnxconverter-common", "tensorflow-cpu (>=2.6,<2.15)", "tensorflow-text (<2.15)", "tf2onnx"] tf-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)"] timm = ["timm"] tokenizers = ["tokenizers (>=0.11.1,!=0.11.3,<0.14)"] -torch = ["accelerate (>=0.20.3)", "torch (>=1.9,!=1.12.0)"] +torch = ["accelerate (>=0.20.3)", "torch (>=1.10,!=1.12.0)"] torch-speech = ["kenlm", "librosa", "phonemizer", "pyctcdecode (>=0.4.0)", "torchaudio"] torch-vision = ["Pillow (<10.0.0)", "torchvision"] -torchhub = ["filelock", "huggingface-hub (>=0.15.1,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.9,!=1.12.0)", "tqdm (>=4.27)"] +torchhub = ["filelock", "huggingface-hub (>=0.15.1,<1.0)", "importlib-metadata", "numpy (>=1.17)", "packaging (>=20.0)", "protobuf", "regex (!=2019.12.17)", "requests", "sentencepiece (>=0.1.91,!=0.1.92)", "tokenizers (>=0.11.1,!=0.11.3,<0.14)", "torch (>=1.10,!=1.12.0)", "tqdm (>=4.27)"] video = ["av (==9.2.0)", "decord (==0.6.0)"] vision = ["Pillow (<10.0.0)"] -[[package]] -name = "typeguard" -version = "4.0.0" -description = "Run-time type checker for Python" -optional = false -python-versions = ">=3.7.4" -files = [ - {file = "typeguard-4.0.0-py3-none-any.whl", hash = "sha256:c4a40af0ba8a41077221271b46d0a6d8d46045443e4d887887c69254ca861952"}, - {file = "typeguard-4.0.0.tar.gz", hash = "sha256:194fb3dbcb06ea9caf7088f3befee014de57961689f9c859ac5239b1ef61d987"}, -] - -[package.dependencies] -importlib-metadata = {version = ">=3.6", markers = "python_version < \"3.10\""} -typing-extensions = {version = ">=4.4.0", markers = "python_version < \"3.11\""} - -[package.extras] -doc = ["packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme"] -test = ["mypy (>=1.2.0)", "pytest (>=7)"] - [[package]] name = "typer" version = "0.9.0" @@ -7818,23 +7917,11 @@ files = [ ] [package.dependencies] -"backports.zoneinfo" = {version = "*", markers = "python_version < \"3.9\""} tzdata = {version = "*", markers = "platform_system == \"Windows\""} [package.extras] devenv = ["black", "check-manifest", "flake8", "pyroma", "pytest (>=4.3)", "pytest-cov", "pytest-mock (>=3.3)", "zest.releaser"] -[[package]] -name = "unidecode" -version = "1.3.6" -description = "ASCII transliterations of Unicode text" -optional = false -python-versions = ">=3.5" -files = [ - {file = "Unidecode-1.3.6-py3-none-any.whl", hash = "sha256:547d7c479e4f377b430dd91ac1275d593308dce0fc464fb2ab7d41f82ec653be"}, - {file = "Unidecode-1.3.6.tar.gz", hash = "sha256:fed09cf0be8cf415b391642c2a5addfc72194407caee4f98719e40ec2a72b830"}, -] - [[package]] name = "uri-template" version = "1.3.0" @@ -7851,13 +7938,13 @@ dev = ["flake8", "flake8-annotations", "flake8-bandit", "flake8-bugbear", "flake [[package]] name = "uritools" -version = "4.0.1" +version = "4.0.2" description = "URI parsing, classification and composition" optional = false -python-versions = "~=3.7" +python-versions = ">=3.7" files = [ - {file = "uritools-4.0.1-py3-none-any.whl", hash = "sha256:d122d394ed6e6e15ac0fddba6a5b19e9fa204e7797507815cbfb0e1455ac0475"}, - {file = "uritools-4.0.1.tar.gz", hash = "sha256:efc5c3a6de05404850685a8d3f34da8476b56aa3516fbf8eff5c8704c7a2826f"}, + {file = "uritools-4.0.2-py3-none-any.whl", hash = "sha256:607b15eae1e7b69a120f463a7d98f91a56671e1ab92aae13f8e1f25c017fe60e"}, + {file = "uritools-4.0.2.tar.gz", hash = "sha256:04df2b787d0eb76200e8319382a03562fbfe4741fd66c15506b08d3b8211d573"}, ] [[package]] @@ -7898,13 +7985,13 @@ standard = ["colorama (>=0.4)", "httptools (>=0.5.0)", "python-dotenv (>=0.13)", [[package]] name = "virtualenv" -version = "20.24.3" +version = "20.24.4" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.24.3-py3-none-any.whl", hash = "sha256:95a6e9398b4967fbcb5fef2acec5efaf9aa4972049d9ae41f95e0972a683fd02"}, - {file = "virtualenv-20.24.3.tar.gz", hash = "sha256:e5c3b4ce817b0b328af041506a2a299418c98747c4b1e68cb7527e74ced23efc"}, + {file = "virtualenv-20.24.4-py3-none-any.whl", hash = "sha256:29c70bb9b88510f6414ac3e55c8b413a1f96239b6b789ca123437d5e892190cb"}, + {file = "virtualenv-20.24.4.tar.gz", hash = "sha256:772b05bfda7ed3b8ecd16021ca9716273ad9f4467c801f27e83ac73430246dca"}, ] [package.dependencies] @@ -7913,7 +8000,7 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<4" [package.extras] -docs = ["furo (>=2023.5.20)", "proselint (>=0.13)", "sphinx (>=7.0.1)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] @@ -8094,6 +8181,20 @@ MarkupSafe = ">=2.1.1" [package.extras] watchdog = ["watchdog"] +[[package]] +name = "wheel" +version = "0.41.2" +description = "A built-package format for Python" +optional = false +python-versions = ">=3.7" +files = [ + {file = "wheel-0.41.2-py3-none-any.whl", hash = "sha256:75909db2664838d015e3d9139004ee16711748a52c8f336b52882266540215d8"}, + {file = "wheel-0.41.2.tar.gz", hash = "sha256:0c5ac5ff2afb79ac23ab82bab027a0be7b5dbcf2e54dc50efe4bf507de1f7985"}, +] + +[package.extras] +test = ["pytest (>=6.0.0)", "setuptools (>=65)"] + [[package]] name = "widgetsnbextension" version = "4.0.8" @@ -8524,5 +8625,5 @@ report = ["category-encoders", "kaleido", "pillow", "plotly", "pybtex", "pydanti [metadata] lock-version = "2.0" -python-versions = ">=3.8, <3.11" -content-hash = "9d5b2b1ddc430a72a1841a7adb2be6cb4d050e3b8502338ed80dea5c63da7ee7" +python-versions = ">=3.9, <3.12" +content-hash = "8a67fe016988f44a8fa9cca5e3ca3f0ffdbf9f734cea1c6671dcc654e5804612" diff --git a/pyproject.toml b/pyproject.toml index 89006c91d..79e397246 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,29 +12,29 @@ packages = [ readme = "README.md" [tool.poetry.dependencies] -python = ">=3.8, <3.11" +python = ">=3.9, <3.12" pandas = "^1.4.1" -numpy = "<=1.23.0" +numpy = "^1.23.0" datasets = "^2.10.1" psutil = "^5.9.4" pyarrow = "^11.0.0" -monai = { version = "1.1.0", extras = ["itk"] } +monai = { version = "^1.1.0", extras = ["itk"] } dask = { version = "^2022.9.1", extras = ["dataframe"] } -psycopg2 = { version = "2.9.6", optional = true } +psycopg2 = { version = "^2.9.6", optional = true } hydra-core = { version = "^1.2.0", optional = true } SQLAlchemy = { version = "^1.4.32, <2.0", optional = true } scikit-learn = { version = "^1.2.2", optional = true } torch = { version = "^1.11.0", optional = true } -torchxrayvision = { version = "^0.0.37", optional = true } +torchxrayvision = { version = "^1.2.0", optional = true } xgboost = { version = "^1.5.2", optional = true } -alibi = { version = "^0.8.0", optional = true, extras = ["shap"] } -alibi-detect = { version = "^0.10.4", optional = true, extras = ["torch"] } -llvmlite = { version = "0.38.0", optional = true } +alibi = { version = "^0.9.4", optional = true, extras = ["shap"] } +alibi-detect = { version = "^0.11.4", optional = true, extras = ["torch"] } +llvmlite = { version = "^0.40.0", optional = true } pydantic = { version = "^1.10.11", optional = true } -spdx-tools = { version = "0.8.0a2", optional = true } +spdx-tools = { version = "^0.8.1", optional = true } pybtex = { version = "^0.24.0", optional = true } -kaleido = { version = "^0.2.1", optional = true } +kaleido = { version = "0.2.1", optional = true } scour = { version = "^0.38.2", optional = true } category-encoders = { version = "^2.6.1", optional = true } plotly = { version = "^5.7.0", optional = true } @@ -49,15 +49,15 @@ SQLAlchemy = "^1.4.32, <2.0" hydra-core = "^1.2.0" scikit-learn = "^1.2.2" torch = "^1.11.0" -torchxrayvision = "^0.0.37" +torchxrayvision = "^1.2.0" xgboost = "^1.5.2" -alibi = { version = "^0.8.0", extras = ["shap"] } -alibi-detect = { version = "^0.10.4", extras = ["torch"] } -llvmlite = "0.38.0" +alibi = { version = "^0.9.4", extras = ["shap"] } +alibi-detect = { version = "^0.11.4", extras = ["torch"] } +llvmlite = "^0.40.0" [tool.poetry.group.report.dependencies] pydantic = "^1.10.11" -spdx-tools = "0.8.0a2" +spdx-tools = "^0.8.1" pybtex = "^0.24.0" kaleido = "0.2.1" scour = "^0.38.2" @@ -78,11 +78,11 @@ ruff = "^0.0.286" [tool.poetry.group.docs.dependencies] numpydoc = "^1.2" -Sphinx = "^4.4.0" -sphinx-rtd-theme = "1.1.1" -sphinxcontrib-apidoc = "^0.3.0" -sphinx-autodoc-typehints = "^1.18.1" -myst-parser = "^0.18.0" +sphinx = "^7.2.5" +sphinx-rtd-theme = "^2.0.0rc2" +sphinxcontrib-apidoc = "^0.4.0" +sphinx-autodoc-typehints = "^1.24.0" +myst-parser = "^2.0.0" sphinx-copybutton = "^0.5.0" sphinx-autoapi = "^2.0.0" nbsphinx = "^0.8.11" diff --git a/tests/cyclops/query/test_ops.py b/tests/cyclops/query/test_ops.py index 1f56c8724..01e72ea2b 100644 --- a/tests/cyclops/query/test_ops.py +++ b/tests/cyclops/query/test_ops.py @@ -516,9 +516,7 @@ def test_union(visits_input): def test_sequential(visits_input): """Test Sequential.""" substr_op = Sequential( - [ - Substring("visit_concept_name", 0, 4, "visit_concept_name_substr"), - ], + Substring("visit_concept_name", 0, 4, "visit_concept_name_substr"), ) operations = [ Literal(33, "const"), diff --git a/tests/cyclops/query/test_util.py b/tests/cyclops/query/test_util.py index cf69846ca..5e0b0fb6b 100644 --- a/tests/cyclops/query/test_util.py +++ b/tests/cyclops/query/test_util.py @@ -10,7 +10,6 @@ _check_column_type, _to_select, _to_subquery, - ckwarg, drop_columns, ends_with, equals, @@ -25,7 +24,6 @@ process_column, process_elem, process_list, - remove_kwargs, rename_columns, reorder_columns, starts_with, @@ -47,12 +45,6 @@ def test__check_column_type(test_table): assert _check_column_type(test_table, ["b"], Integer, raise_error=True) -def test_ckwarg(): - """Test ckwarg.""" - assert ckwarg({"arg1": 1}, "arg1") == 1 - assert ckwarg({"arg1": 1}, "arg2") is None - - def test_ends_with(): """Test ends_with.""" test_col = column("a") @@ -70,13 +62,6 @@ def test_starts_with(): ) -def test_remove_kwargs(): - """Test remove_kwargs.""" - kwargs = {"arg1": 1, "arg2": 2, "arg3": 3} - assert "arg2" not in remove_kwargs(kwargs, "arg2") - assert "arg1" not in remove_kwargs(kwargs, ["arg2", "arg1"]) - - def test__to_subquery(): """Test _to_subquery fn.""" assert isinstance(_to_subquery(select().subquery()), Subquery) From 30d9f97e433f6ca20460fa1d7a8f05835d444987 Mon Sep 17 00:00:00 2001 From: Amrit K Date: Tue, 5 Sep 2023 15:39:41 -0400 Subject: [PATCH 03/10] Remove config item to prevent nbsphinx build, remove unused type --- cyclops/query/util.py | 1 - docs/source/conf.py | 1 - 2 files changed, 2 deletions(-) diff --git a/cyclops/query/util.py b/cyclops/query/util.py index 3d646a17f..e35b05bfe 100644 --- a/cyclops/query/util.py +++ b/cyclops/query/util.py @@ -65,7 +65,6 @@ class DBTable: TABLE_OBJECTS = [Table, Select, Subquery, DBTable] TableTypes = Union[Select, Subquery, Table, DBTable] -CastableTypes = Union[Date, DateTime, Float, Integer, Interval, String] def _to_subquery(table: TableTypes) -> Subquery: diff --git a/docs/source/conf.py b/docs/source/conf.py index 5ca5984ce..534be55a1 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -58,7 +58,6 @@ autosectionlabel_prefix_document = True copybutton_prompt_text = r">>> |\.\.\. " copybutton_prompt_is_regexp = True -nbsphinx_execute = "never" intersphinx_mapping = { "python": ("https://docs.python.org/3.9/", None), From d6aca277b771b6c06ff1f859d15076bfa86fe148 Mon Sep 17 00:00:00 2001 From: akore Date: Tue, 5 Sep 2023 20:38:32 -0400 Subject: [PATCH 04/10] fix lkwrapper and transforms --- docs/source/tutorials/nihcxr/cxr_classification.ipynb | 6 +++--- docs/source/tutorials/nihcxr/monitor_api.ipynb | 7 ++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/source/tutorials/nihcxr/cxr_classification.ipynb b/docs/source/tutorials/nihcxr/cxr_classification.ipynb index 318a1262e..930eb3096 100644 --- a/docs/source/tutorials/nihcxr/cxr_classification.ipynb +++ b/docs/source/tutorials/nihcxr/cxr_classification.ipynb @@ -41,7 +41,7 @@ "import torch\n", "from datasets.combine import concatenate_datasets # noqa: E402\n", "from dateutil.relativedelta import relativedelta\n", - "from monai.transforms import AddChanneld, Compose, Lambdad, Resized, ToDeviced\n", + "from monai.transforms import Compose, Lambdad, Resized, ToDeviced\n", "from torchxrayvision.models import DenseNet\n", "\n", "from cyclops.data.loader import load_nihcxr\n", @@ -112,15 +112,15 @@ "\n", "transforms = Compose(\n", " [\n", - " AddChanneld(keys=(\"features\",), allow_missing_keys=True),\n", " Resized(\n", - " keys=(\"features\",), spatial_size=(1, 224, 224), allow_missing_keys=True,\n", + " keys=(\"features\",), spatial_size=(224, 224), allow_missing_keys=True,\n", " ),\n", " Lambdad(\n", " keys=(\"features\",),\n", " func=lambda x: ((2 * (x / 255.0)) - 1.0) * 1024,\n", " allow_missing_keys=True,\n", " ),\n", + " Lambdad((\"features\",), func=lambda x: np.mean(x, axis=0)[np.newaxis, np.newaxis, :] if x.shape[0] != 1 else x[np.newaxis, :], allow_missing_keys=True),\n", " ToDeviced(keys=(\"features\",), device=device, allow_missing_keys=True),\n", " ],\n", ")" diff --git a/docs/source/tutorials/nihcxr/monitor_api.ipynb b/docs/source/tutorials/nihcxr/monitor_api.ipynb index 379278290..cef7f26ae 100644 --- a/docs/source/tutorials/nihcxr/monitor_api.ipynb +++ b/docs/source/tutorials/nihcxr/monitor_api.ipynb @@ -27,7 +27,8 @@ "\n", "from functools import partial\n", "\n", - "from monai.transforms import AddChanneld, Compose, Lambdad, Resized, ToDeviced\n", + "import numpy as np\n", + "from monai.transforms import Compose, Lambdad, Resized, ToDeviced\n", "from torchxrayvision.models import DenseNet\n", "\n", "from cyclops.data.loader import load_nihcxr\n", @@ -65,15 +66,15 @@ "\n", "transforms = Compose(\n", " [\n", - " AddChanneld(keys=(\"features\",), allow_missing_keys=True),\n", " Resized(\n", - " keys=(\"features\",), spatial_size=(1, 224, 224), allow_missing_keys=True,\n", + " keys=(\"features\",), spatial_size=(224, 224), allow_missing_keys=True,\n", " ),\n", " Lambdad(\n", " keys=(\"features\",),\n", " func=lambda x: ((2 * (x / 255.0)) - 1.0) * 1024,\n", " allow_missing_keys=True,\n", " ),\n", + " Lambdad((\"features\",), func=lambda x: np.mean(x, axis=0)[np.newaxis, np.newaxis, :] if x.shape[0] != 1 else x[np.newaxis, :], allow_missing_keys=True),\n", " ToDeviced(keys=(\"features\",), device=device, allow_missing_keys=True),\n", " ],\n", ")\n", From ecf75a979f12f3241bd1b3d235f749d62dcde3d6 Mon Sep 17 00:00:00 2001 From: akore Date: Wed, 6 Sep 2023 08:40:09 -0400 Subject: [PATCH 05/10] fix utils --- cyclops/monitor/utils.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/cyclops/monitor/utils.py b/cyclops/monitor/utils.py index a6ef24778..097760a38 100644 --- a/cyclops/monitor/utils.py +++ b/cyclops/monitor/utils.py @@ -373,23 +373,26 @@ def __init__( x_ref_preprocessed: bool = False, preprocess_at_init: bool = True, update_x_ref: Optional[Dict[str, int]] = None, - preprocess_fn: Optional[Callable[..., Any]] = None, + preprocess_fn: Optional[Callable] = None, n_permutations: int = 100, + batch_size_permutations: int = 1000000, var_reg: float = 1e-5, - reg_loss_fn: Callable[..., Any] = (lambda kernel: 0), + reg_loss_fn: Callable = (lambda kernel: 0), train_size: Optional[float] = 0.75, retrain_from_scratch: bool = True, - optimizer: Optional[Callable[..., Any]] = None, + optimizer: Optional[Callable] = None, learning_rate: float = 1e-3, batch_size: int = 32, - preprocess_batch_fn: Optional[Callable[..., Any]] = None, + batch_size_predict: int = 32, + preprocess_batch_fn: Optional[Callable] = None, epochs: int = 3, + num_workers: int = 0, verbose: int = 0, - train_kwargs: Optional[Dict[str, Any]] = None, - device: Optional[str] = None, - dataset: Optional[Callable[..., Any]] = None, - dataloader: Optional[Callable[..., Any]] = None, - input_shape: Optional[Tuple[int, ...]] = None, + train_kwargs: Optional[dict] = None, + device: str = None, + dataset: Optional[Callable] = None, + dataloader: Optional[Callable] = None, + input_shape: Optional[tuple] = None, data_type: Optional[str] = None, kernel_a: Optional[nn.Module] = None, kernel_b: Optional[nn.Module] = None, @@ -411,6 +414,7 @@ def __init__( update_x_ref, preprocess_fn, n_permutations, + batch_size_permutations, var_reg, reg_loss_fn, train_size, @@ -418,8 +422,10 @@ def __init__( optimizer, learning_rate, batch_size, + batch_size_predict, preprocess_batch_fn, epochs, + num_workers, verbose, train_kwargs, device, From 9650ab91ec3a409d83ac8aea151210533e4a2d1f Mon Sep 17 00:00:00 2001 From: Amrit K Date: Wed, 6 Sep 2023 14:28:28 -0400 Subject: [PATCH 06/10] Update deps, nvidia driver + cuda to fix errors --- cyclops/query/ops.py | 783 +++++++++++++-------- docs/source/tutorials/omop/query_api.ipynb | 28 +- poetry.lock | 525 +++++++------- pyproject.toml | 4 +- 4 files changed, 752 insertions(+), 588 deletions(-) diff --git a/cyclops/query/ops.py b/cyclops/query/ops.py index c643e799c..291d87ccf 100644 --- a/cyclops/query/ops.py +++ b/cyclops/query/ops.py @@ -1,9 +1,4 @@ -"""Query operations. - -This module contains query operations. You can use query operations instead of SQL -code to filter rows using conditions, join tables, etc. - -""" +"""Query operations.""" from __future__ import annotations @@ -12,7 +7,7 @@ import typing from abc import abstractmethod from collections import OrderedDict -from dataclasses import dataclass, field +from dataclasses import dataclass from datetime import datetime, timedelta from itertools import islice @@ -139,7 +134,6 @@ class QueryOp: _ops: typing.Dict[str, "QueryOp"] def __init__(self, *args: typing.Any, **kwargs: typing.Any) -> None: - """Initialize the object.""" super().__setattr__("_ops", OrderedDict()) @abstractmethod @@ -147,7 +141,7 @@ def __call__(self, *args: typing.Any, **kwargs: typing.Any) -> Subquery: """Implement a calling function.""" pass - def add_op(self, name: str, op_: "QueryOp") -> None: + def _add_op(self, name: str, op_: "QueryOp") -> None: """Add a child operation to the current query operation. The query op can be accessed as an attribute using the given name. @@ -173,7 +167,7 @@ def add_op(self, name: str, op_: "QueryOp") -> None: raise KeyError('Query op name can\'t be empty string ""') self._ops[name] = op_ - def ops(self) -> typing.Iterator["QueryOp"]: + def _get_ops(self) -> typing.Iterator["QueryOp"]: """Return an iterator over the child operations. Returns @@ -221,7 +215,7 @@ def __setattr__(self, name: str, value: "QueryOp") -> None: else: super().__setattr__(name, value) - def extra_repr(self) -> str: + def _extra_repr(self) -> str: """Set the extra representation of the query op. To print customized extra information, you should re-implement @@ -246,7 +240,7 @@ def __repr__(self) -> str: """ extra_lines = [] - extra_repr = self.extra_repr() + extra_repr = self._extra_repr() if extra_repr: extra_lines = extra_repr.split("\n") child_lines = [] @@ -287,7 +281,7 @@ def _chain_ops( """ for op_ in ops: if isinstance(op_, Sequential): - query = _chain_ops(query, op_.ops()) + query = _chain_ops(query, op_._get_ops()) elif isinstance(op_, QueryOp): query = op_(query) @@ -299,6 +293,11 @@ class Sequential(QueryOp): Chains a sequence of query operations and executes the final query on a table. + Examples + -------- + >>> Sequential(Drop(["col1", "col2"]), ...) + >>> Sequential([Drop(["col1", "col2"]), ...]) + """ @typing.overload @@ -325,13 +324,13 @@ def __init__(self, *args: QueryOp) -> None: # type: ignore super().__init__() if len(args) == 1 and isinstance(args[0], OrderedDict): for key, op_ in args[0].items(): - self.add_op(key, op_) + self._add_op(key, op_) elif len(args) == 1 and isinstance(args[0], list): for idx, op_ in enumerate(args[0]): - self.add_op(str(idx), op_) + self._add_op(str(idx), op_) else: for idx, op_ in enumerate(args): - self.add_op(str(idx), op_) + self._add_op(str(idx), op_) def __len__(self) -> int: """Return the number of query ops in the Sequential. @@ -398,7 +397,7 @@ def __iadd__(self, other: "Sequential") -> "Sequential": if isinstance(other, Sequential): offset = len(self) for i, op_ in enumerate(other): - self.add_op(str(i + offset), op_) + self._add_op(str(i + offset), op_) return self raise ValueError( "Add operator supports only objects " @@ -501,7 +500,74 @@ def append(self, op_: QueryOp) -> "Sequential": Sequential object with the query op appended. """ - self.add_op(str(len(self)), op_) + self._add_op(str(len(self)), op_) + return self + + def pop(self, key: typing.Union[int, slice]) -> QueryOp: + """Pop the query op at the given index. + + Parameters + ---------- + key + Index of the query op to pop. + + Returns + ------- + QueryOp + Popped query op. + + """ + v = self[key] + del self[key] + + return v # type: ignore + + def insert(self, index: int, op_: QueryOp) -> "Sequential": + """Insert a given query op at the given index. + + Parameters + ---------- + index + Index to insert the query op at. + op_ + Query op to insert. + + Returns + ------- + Sequential + Sequential object with the query op inserted. + + """ + if not isinstance(op_, QueryOp): + raise AssertionError("Module should be of type: {}".format(QueryOp)) + n = len(self._ops) + if not (-n <= index <= n): + raise IndexError("Index out of range: {}".format(index)) + if index < 0: + index += n + for i in range(n, index, -1): + self._ops[str(i)] = self._ops[str(i - 1)] + self._ops[str(index)] = op_ + + return self + + def extend(self, sequential: "Sequential") -> "Sequential": + """Extend the sequential query op with another sequential query op. + + Parameters + ---------- + sequential + Sequential object to extend with. + + Returns + ------- + Sequential + Sequential object with the other sequential query op extended. + + """ + for op_ in sequential: + self.append(op_) + return self @table_params_to_type(Subquery) @@ -519,7 +585,7 @@ def __call__(self, table: TableTypes) -> Subquery: Query result after chaining the query operations. """ - return _chain_ops(table, self.ops()) + return _chain_ops(table, self._get_ops()) def _append_if_missing( @@ -648,7 +714,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table: TableTypes + table Table on which to perform the operation. Returns @@ -689,7 +755,7 @@ class Drop(QueryOp): Parameters ---------- - cols: str or list of str + cols Columns to drop. Examples @@ -708,7 +774,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -722,15 +788,14 @@ def __call__(self, table: TableTypes) -> Subquery: return drop_columns(table, self.cols) -@dataclass class Rename(QueryOp): """Rename some columns. Parameters ---------- - rename_map: dict + rename_map Map from an existing column name to another name. - check_exists: bool, optional + check_exists Whether to check if all of the keys in the map exist as columns. Examples @@ -739,16 +804,17 @@ class Rename(QueryOp): """ - rename_map: typing.Dict[str, str] - check_exists: bool = True + def __init__(self, rename_map: typing.Dict[str, str], check_exists: bool = True): + super().__init__() + self.rename_map = rename_map + self.check_exists = check_exists def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : sqlalchemy.sql.selectable.Select or sqlalchemy.sql.selectable.Subquery - or sqlalchemy.sql.schema.Table or cyclops.query.utils.DBTable + table Table on which to perform the operation. Returns @@ -763,20 +829,19 @@ def __call__(self, table: TableTypes) -> Subquery: return rename_columns(table, self.rename_map) -@dataclass class Substring(QueryOp): """Get substring of a string column. Parameters ---------- - col: str + col Name of column which has string, where substring needs to be extracted. - start_index: int + start_index Start index of substring. - stop_index: int + stop_index Stop index of substring. - new_col_name: str, optional + new_col_name Name of the new column with extracted substring. Examples @@ -785,18 +850,25 @@ class Substring(QueryOp): """ - col: str - start_index: int - stop_index: int - new_col_label: typing.Optional[str] = None + def __init__( + self, + col: str, + start_index: int, + stop_index: int, + new_col_label: typing.Optional[str] = None, + ): + super().__init__() + self.col = col + self.start_index = start_index + self.stop_index = stop_index + self.new_col_label = new_col_label def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : sqlalchemy.sql.selectable.Select or sqlalchemy.sql.selectable.Subquery - or sqlalchemy.sql.schema.Table or cyclops.query.utils.DBTable + table Table on which to perform the operation. Returns @@ -819,13 +891,12 @@ def __call__(self, table: TableTypes) -> Subquery: ) -@dataclass class Reorder(QueryOp): """Reorder the columns in a table. Parameters ---------- - cols: list of str + cols Complete list of table column names in the new order. Examples @@ -834,14 +905,16 @@ class Reorder(QueryOp): """ - cols: typing.List[str] + def __init__(self, cols: typing.List[str]): + super().__init__() + self.cols = cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -855,15 +928,14 @@ def __call__(self, table: TableTypes) -> Subquery: return reorder_columns(table, self.cols) -@dataclass class ReorderAfter(QueryOp): """Reorder a number of columns to come after a specified column. Parameters ---------- - cols: list of str + cols Ordered list of column names which will come after a specified column. - after: str + after Column name for the column after which the other columns will follow. Examples @@ -872,15 +944,17 @@ class ReorderAfter(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - after: str + def __init__(self, cols: typing.Union[str, typing.List[str]], after: str): + super().__init__() + self.cols = cols + self.after = after def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -899,13 +973,12 @@ def __call__(self, table: TableTypes) -> Subquery: return Reorder(new_order)(table) -@dataclass class Keep(QueryOp): """Keep only the specified columns in a table. Parameters ---------- - cols: str or list of str + cols The columns to keep. Examples @@ -915,14 +988,16 @@ class Keep(QueryOp): """ - cols: typing.Union[str, typing.List[str]] + def __init__(self, cols: typing.Union[str, typing.List[str]]): + super().__init__() + self.cols = cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -936,15 +1011,14 @@ def __call__(self, table: TableTypes) -> Subquery: return filter_columns(table, self.cols) -@dataclass class Trim(QueryOp): """Trim the whitespace from some string columns. Parameters ---------- - cols: str or list of str + cols Columns to trim. - new_col_labels: str or list of str, optional + new_col_labels If specified, create new columns with these labels. Otherwise, apply the function to the existing columns. @@ -957,15 +1031,21 @@ class Trim(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None + def __init__( + self, + cols: typing.Union[str, typing.List[str]], + new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ): + super().__init__() + self.cols = cols + self.new_col_labels = new_col_labels def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -979,15 +1059,14 @@ def __call__(self, table: TableTypes) -> Subquery: return trim_columns(table, self.cols, new_col_labels=self.new_col_labels) -@dataclass class Literal(QueryOp): """Add a literal column to a table. Parameters ---------- - value: any + value Value of the literal, e.g., a string or integer. - col: str + col Label of the new literal column. Examples @@ -996,15 +1075,17 @@ class Literal(QueryOp): """ - value: typing.Any - col: str + def __init__(self, value: typing.Any, col: str): + super().__init__() + self.value = value + self.col = col def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1018,17 +1099,16 @@ def __call__(self, table: TableTypes) -> Subquery: return select(table, literal(self.value).label(self.col)).subquery() -@dataclass class ExtractTimestampComponent(QueryOp): """Extract a component such as year or month from a timestamp column. Parameters ---------- - timestamp_col: str + timestamp_col Timestamp column from which to extract the time component. - extract_str: str + extract_str Information to extract, e.g., "year", "month" - label: str + label Column label for the extracted column. Examples @@ -1038,16 +1118,18 @@ class ExtractTimestampComponent(QueryOp): """ - timestamp_col: str - extract_str: str - label: str + def __init__(self, timestamp_col: str, extract_str: str, label: str): + super().__init__() + self.timestamp_col = timestamp_col + self.extract_str = extract_str + self.label = label def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1071,17 +1153,16 @@ def __call__(self, table: TableTypes) -> Subquery: return Cast(self.label, "int")(table) -@dataclass class AddNumeric(QueryOp): """Add a numeric value to some columns. Parameters ---------- - add_to: str or list of str + add_to Column names specifying to which columns is being added. - add: int or float or list of int or float + add Adds this value to the add_to columns. - new_col_labels: str or list of str, optional + new_col_labels If specified, create new columns with these labels. Otherwise, apply the function to the existing columns. @@ -1095,9 +1176,16 @@ class AddNumeric(QueryOp): """ - add_to: typing.Union[str, typing.List[str]] - add: typing.Union[int, float, typing.List[int], typing.List[float]] - new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None + def __init__( + self, + add_to: typing.Union[str, typing.List[str]], + add: typing.Union[int, float, typing.List[int], typing.List[float]], + new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ): + super().__init__() + self.add_to = add_to + self.add = add + self.new_col_labels = new_col_labels def _gen_lambda( self, @@ -1111,7 +1199,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1143,17 +1231,16 @@ def __call__(self, table: TableTypes) -> Subquery: ) -@dataclass class AddDeltaConstant(QueryOp): """Construct and add a datetime.timedelta object to some columns. Parameters ---------- - add_to: str or list of str + add_to Column names specifying to which columns is being added. - delta: datetime.timedelta + delta A timedelta object. - new_col_labels: str or list of str, optional + new_col_labels If specified, create new columns with these labels. Otherwise, apply the function to the existing columns. @@ -1165,16 +1252,23 @@ class AddDeltaConstant(QueryOp): """ - add_to: typing.Union[str, typing.List[str]] - delta: timedelta - new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None + def __init__( + self, + add_to: typing.Union[str, typing.List[str]], + delta: timedelta, + new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ): + super().__init__() + self.add_to = add_to + self.delta = delta + self.new_col_labels = new_col_labels def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1197,19 +1291,18 @@ def __call__(self, table: TableTypes) -> Subquery: ) -@dataclass class AddColumn(QueryOp): """Add a column to some columns. Parameters ---------- - add_to: str or list of str + add_to Column names specifying to which columns is being added. - col: str + col Column name of column to add to the add_to columns. - negative: bool, optional + negative Subtract the column rather than adding. - new_col_labels: str or list of str, optional + new_col_labels If specified, create new columns with these labels. Otherwise, apply the function to the existing columns. @@ -1228,17 +1321,25 @@ class AddColumn(QueryOp): """ - add_to: typing.Union[str, typing.List[str]] - col: str - negative: typing.Optional[bool] = False - new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None + def __init__( + self, + add_to: typing.Union[str, typing.List[str]], + col: str, + negative: typing.Optional[bool] = False, + new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ): + super().__init__() + self.add_to = add_to + self.col = col + self.negative = negative + self.new_col_labels = new_col_labels def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1282,11 +1383,11 @@ class AddDeltaColumn(QueryOp): Parameters ---------- - add_to: str or list of str + add_to Column names specifying to which columns is being added. - negative: bool, optional + negative Subtract the object rather than adding. - new_col_labels: str or list of str, optional + new_col_labels If specified, create new columns with these labels. Otherwise, apply the function to the existing columns. **delta_kwargs @@ -1308,7 +1409,6 @@ def __init__( new_col_labels: typing.Optional[typing.Union[str, typing.List[str]]] = None, **delta_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.add_to = add_to self.negative = negative @@ -1320,7 +1420,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1351,7 +1451,6 @@ def __call__(self, table: TableTypes) -> Subquery: ) -@dataclass class Cast(QueryOp): """Cast columns to a specified type. @@ -1359,9 +1458,9 @@ class Cast(QueryOp): Parameters ---------- - cols : str or list of str - Columns to = cast. - type_ : str + cols + Columns to cast. + type_ Name of type to which to convert. Must be supported. Examples @@ -1375,15 +1474,17 @@ class Cast(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - type_: str + def __init__(self, cols: typing.Union[str, typing.List[str]], type_: str): + super().__init__() + self.cols = cols + self.type_ = type_ def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1418,15 +1519,14 @@ def __call__(self, table: TableTypes) -> Subquery: ) -@dataclass class Union(QueryOp): """Union two tables. Parameters ---------- - union_table : cyclops.query.util.TableTypes + union_table Table to union with the first table. - union_all : bool, optional + union_all Whether to use the all keyword in the union. Examples @@ -1436,15 +1536,21 @@ class Union(QueryOp): """ - union_table: TableTypes - union_all: typing.Optional[bool] = False + def __init__( + self, + union_table: TableTypes, + union_all: typing.Optional[bool] = False, + ): + super().__init__() + self.union_table = union_table + self.union_all = union_all def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1466,24 +1572,24 @@ class Join(QueryOp): Parameters ---------- - join_table: cyclops.query.util.TableTypes + join_table Table on which to join. - on: list of str or tuple, optional + on A list of strings or tuples representing columns on which to join. Strings represent columns of same name in both tables. A tuple of style (table_col, join_table_col) is used to join on columns of different names. Suggested to specify this parameter as opposed to cond. - on_to_type: list of type, optional + on_to_type A list of types to which to convert the on columns before joining. Useful when two columns have the same values but in different format, e.g., strings of int. - cond: BinaryExpression, optional + cond Condition on which to join to tables. - table_cols: str or list of str, optional + table_cols Filters to keep only these columns from the table. - join_table_cols: + join_table_cols Filters to keep only these columns from the join_table. - isouter: + isouter Flag to say if the join is a left outer join. Examples @@ -1517,7 +1623,6 @@ def __init__( join_table_cols: typing.Optional[typing.Union[str, typing.List[str]]] = None, isouter: typing.Optional[bool] = False, ) -> None: - """Initialize.""" super().__init__() if on is not None and cond is not None: raise ValueError("Cannot specify both the 'on' and 'cond' arguments.") @@ -1536,7 +1641,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -1618,16 +1723,16 @@ class ConditionEquals(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - value: any + value Value to equal. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -1644,7 +1749,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.value = value @@ -1657,9 +1761,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -1698,18 +1802,18 @@ class ConditionGreaterThan(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - value: any + value Value greater than. - equal: bool, default=False + equal Include equality to the value. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -1727,7 +1831,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.value = value @@ -1741,9 +1844,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -1783,18 +1886,18 @@ class ConditionLessThan(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - value: any + value Value greater than. - equal: bool, default=False + equal Include equality to the value. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -1812,7 +1915,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.value = value @@ -1826,9 +1928,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -1863,19 +1965,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionRegexMatch(QueryOp): """Filter rows based on matching a regular expression. Parameters ---------- - col: str + col Column name on which to condition. - regex: str + regex Regular expression to match. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -1885,19 +1986,27 @@ class ConditionRegexMatch(QueryOp): """ - col: str - regex: str - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + col: str, + regex: str, + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.col = col + self.regex = regex + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -1930,16 +2039,16 @@ class ConditionIn(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - values: any or list of any + values Values in which the column value must be. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -1956,7 +2065,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.values = values @@ -1969,9 +2077,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2013,19 +2121,19 @@ class ConditionSubstring(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - substrings: any + substrings Substrings. - any_: bool, default=True + any_ If true, the row must have just one of the substrings. If false, it must have all of the substrings. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -2044,7 +2152,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.substrings = to_list(substrings) @@ -2058,8 +2165,10 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. + return_cond + Return the condition instead of filtering. Returns ------- @@ -2104,7 +2213,7 @@ class ConditionStartsWith(QueryOp): binarize_col: str, optional If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -2121,7 +2230,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.string = string @@ -2134,9 +2242,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2175,16 +2283,16 @@ class ConditionEndsWith(QueryOp): Parameters ---------- - col: str + col Column name on which to condition. - string: any - String. - not_: bool, default=False + string + String to end with. + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. **cond_kwargs - typing.Optional keyword arguments for processing the condition. + Optional keyword arguments for processing the condition. Examples -------- @@ -2201,7 +2309,6 @@ def __init__( binarize_col: typing.Optional[str] = None, **cond_kwargs: typing.Any, ) -> None: - """Initialize.""" super().__init__() self.col = col self.string = string @@ -2214,9 +2321,9 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2250,19 +2357,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionInYears(QueryOp): """Filter rows based on a timestamp column being in a list of years. Parameters ---------- - timestamp_col: str + timestamp_col Timestamp column name. - years: int or list of int + years Years in which the timestamps must be. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -2273,19 +2379,27 @@ class ConditionInYears(QueryOp): """ - timestamp_col: str - years: typing.Union[int, typing.List[int]] - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + timestamp_col: str, + years: typing.Union[int, typing.List[int]], + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.timestamp_col = timestamp_col + self.years = years + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2320,19 +2434,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionInMonths(QueryOp): """Filter rows based on a timestamp being in a list of years. Parameters ---------- - timestamp_col: str + timestamp_col Timestamp column name. - months: int or list of int + months Months in which the timestamps must be. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -2343,19 +2456,27 @@ class ConditionInMonths(QueryOp): """ - timestamp_col: str - months: typing.Union[int, typing.List[int]] - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + timestamp_col: str, + months: typing.Union[int, typing.List[int]], + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.timestamp_col = timestamp_col + self.months = months + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2390,19 +2511,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionBeforeDate(QueryOp): """Filter rows based on a timestamp being before some date. Parameters ---------- - timestamp_col: str + timestamp_col Timestamp column name. - timestamp: str or datetime.datetime + timestamp A datetime object or str in YYYY-MM-DD format. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -2413,19 +2533,27 @@ class ConditionBeforeDate(QueryOp): """ - timestamp_col: str - timestamp: typing.Union[str, datetime] - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + timestamp_col: str, + timestamp: typing.Union[str, datetime], + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.timestamp_col = timestamp_col + self.timestamp = timestamp + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2457,19 +2585,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionAfterDate(QueryOp): """Filter rows based on a timestamp being after some date. Parameters ---------- - timestamp_col: str + timestamp_col Timestamp column name. - timestamp: str or datetime.datetime + timestamp A datetime object or str in YYYY-MM-DD format. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -2480,19 +2607,27 @@ class ConditionAfterDate(QueryOp): """ - timestamp_col: str - timestamp: typing.Union[str, datetime] - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + timestamp_col: str, + timestamp: typing.Union[str, datetime], + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.timestamp_col = timestamp_col + self.timestamp = timestamp + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2524,19 +2659,18 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class ConditionLike(QueryOp): """Filter rows by a LIKE condition. Parameters ---------- - col: str + col Column to filter on. - pattern: str + pattern Pattern to filter on. - not_: bool, default=False + not_ Take negation of condition. - binarize_col: str, optional + binarize_col If specified, create a Boolean column of name binarize_col instead of filtering. Examples @@ -2547,19 +2681,27 @@ class ConditionLike(QueryOp): """ - col: str - pattern: str - not_: bool = False - binarize_col: typing.Optional[str] = None + def __init__( + self, + col: str, + pattern: str, + not_: bool = False, + binarize_col: typing.Optional[str] = None, + ): + super().__init__() + self.col = col + self.pattern = pattern + self.not_ = not_ + self.binarize_col = binarize_col def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2587,31 +2729,33 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class Or(QueryOp): """Combine multiple condition query ops using an OR. Parameters ---------- - cond_ops: QueryOp or List[QueryOp] + cond_ops Condition Query ops to combine. Examples -------- + >>> Or(ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])) >>> Or([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) """ - cond_ops: typing.Union[QueryOp, typing.List[QueryOp]] + def __init__(self, *cond_ops: typing.Union[QueryOp, typing.List[QueryOp]]): + super().__init__() + self.cond_ops = cond_ops def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2620,22 +2764,24 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Processed table. """ - if isinstance(self.cond_ops, QueryOp): - return self.cond_ops(table, return_cond=return_cond) - cond = or_(*[op(table, return_cond=True) for op in self.cond_ops]) + for cond_op in self.cond_ops: + if isinstance(cond_op, list): + cond = or_(*[op(table, return_cond=True) for op in cond_op]) + if isinstance(cond_op, QueryOp): + return cond_op(table, return_cond=return_cond) + cond = or_(*[op(table, return_cond=True) for op in self.cond_ops]) # type: ignore if return_cond: return cond return select(table).where(cond).subquery() -@dataclass class And(QueryOp): """Combine multiple condition query ops using an And. Parameters ---------- - ops: QueryOp or List[QueryOp] + ops Query ops to combine. Examples @@ -2644,16 +2790,18 @@ class And(QueryOp): """ - cond_ops: typing.Union[QueryOp, typing.List[QueryOp]] + def __init__(self, cond_ops: typing.Union[QueryOp, typing.List[QueryOp]]): + super().__init__() + self.cond_ops = cond_ops def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. - return_cond : bool, default=False + return_cond Return the condition instead of filtering. Returns @@ -2671,13 +2819,12 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: return select(table).where(cond).subquery() -@dataclass class Limit(QueryOp): """Limit the number of rows returned in a query. Parameters ---------- - number: int + number Number of rows to return in the limit. Examples @@ -2686,7 +2833,9 @@ class Limit(QueryOp): """ - number: int + def __init__(self, number: int): + super().__init__() + self.number = number @table_params_to_type(Select) def __call__(self, table: TableTypes) -> Subquery: @@ -2694,7 +2843,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -2706,7 +2855,6 @@ def __call__(self, table: TableTypes) -> Subquery: return table.limit(self.number).subquery() # type: ignore -@dataclass class RandomizeOrder(QueryOp): """Randomize order of table rows. @@ -2729,7 +2877,7 @@ def __call__(self, table: TableTypes) -> Subquery: Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -2741,15 +2889,13 @@ def __call__(self, table: TableTypes) -> Subquery: return select(table).order_by(func.random()).subquery() -@dataclass class DropNulls(QueryOp): """Remove rows with null values in some specified columns. Parameters ---------- - cols: str or list of str - Columns in which, if a value is null, the corresponding row - is removed. + cols + Columns in which, if a value is null, the corresponding row is removed. Examples -------- @@ -2758,14 +2904,16 @@ class DropNulls(QueryOp): """ - cols: typing.Union[str, typing.List[str]] + def __init__(self, cols: typing.Union[str, typing.List[str]]): + super().__init__() + self.cols = cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -2781,7 +2929,6 @@ def __call__(self, table: TableTypes) -> Subquery: return select(table).where(cond).subquery() -@dataclass class Apply(QueryOp): """Apply function(s) to column(s). @@ -2792,12 +2939,12 @@ class Apply(QueryOp): Parameters ---------- - cols: str or list of str + cols Column(s) to apply the function to. - funcs: typing.Callable or list of typing.Callable + funcs Function(s) that takes in sqlalchemy column(s) object and returns column(s) after applying the function or list of functions to apply to each column. - new_cols: str or list of str, optional + new_cols New column name(s) after function is applied to the specified column(s). Examples @@ -2810,24 +2957,34 @@ class Apply(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - funcs: typing.Union[ - typing.Callable[[sqlalchemy.sql.schema.Column], sqlalchemy.sql.schema.Column], - typing.List[ + def __init__( + self, + cols: typing.Union[str, typing.List[str]], + funcs: typing.Union[ typing.Callable[ [sqlalchemy.sql.schema.Column], sqlalchemy.sql.schema.Column, - ] + ], + typing.List[ + typing.Callable[ + [sqlalchemy.sql.schema.Column], + sqlalchemy.sql.schema.Column, + ] + ], ], - ] - new_cols: typing.Optional[typing.Union[str, typing.List[str]]] = None + new_cols: typing.Optional[typing.Union[str, typing.List[str]]] = None, + ): + super().__init__() + self.cols = cols + self.funcs = funcs + self.new_cols = new_cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -2857,15 +3014,14 @@ def __call__(self, table: TableTypes) -> Subquery: return apply_to_columns(table, self.cols, self.funcs, self.new_cols) -@dataclass class OrderBy(QueryOp): """Order, or sort, the rows of a table by some columns. Parameters ---------- - cols: str or list of str + cols Columns by which to order. - ascending: bool or list of bool + ascending Whether to order each columns by ascending (True) or descending (False). If not provided, orders all by ascending. @@ -2878,15 +3034,21 @@ class OrderBy(QueryOp): """ - cols: typing.Union[str, typing.List[str]] - ascending: typing.Optional[typing.Union[bool, typing.List[bool]]] = None + def __init__( + self, + cols: typing.Union[str, typing.List[str]], + ascending: typing.Optional[typing.Union[bool, typing.List[bool]]] = None, + ): + super().__init__() + self.cols = cols + self.ascending = ascending def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -2912,21 +3074,20 @@ def __call__(self, table: TableTypes) -> Subquery: return select(table).order_by(*order_cols).subquery() -@dataclass class GroupByAggregate(QueryOp): """Aggregate over a group by object. Parameters ---------- - groupby_cols: str or list of str + groupby_cols Columns by which to group. - aggfuncs: dict + aggfuncs Specify a dictionary of key-value pairs: column name: aggfunc string or column name: (aggfunc string, new column label) This labelling prevents the aggregation of the same column using multiple aggregation functions. - aggseps: dict, optional + aggseps Specify a dictionary of key-value pairs: column name: string_aggfunc separator If string_agg used as aggfunc for a column, then a separator must be provided @@ -2941,19 +3102,28 @@ class GroupByAggregate(QueryOp): """ - groupby_cols: typing.Union[str, typing.List[str]] - aggfuncs: typing.Union[ - typing.Dict[str, typing.Sequence[str]], - typing.Dict[str, str], - ] - aggseps: typing.Dict[str, str] = field(default_factory=dict) + def __init__( + self, + groupby_cols: typing.Union[str, typing.List[str]], + aggfuncs: typing.Union[ + typing.Dict[str, typing.Sequence[str]], + typing.Dict[str, str], + ], + aggseps: typing.Optional[typing.Dict[str, str]] = None, + ): + super().__init__() + self.groupby_cols = groupby_cols + self.aggfuncs = aggfuncs + if aggseps is None: + aggseps = {} + self.aggseps = aggseps def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns @@ -3027,13 +3197,12 @@ def __call__(self, table: TableTypes) -> Subquery: return select(*groupby_cols, *agg_cols).group_by(*groupby_cols).subquery() -@dataclass class Distinct(QueryOp): """Get distinct rows. Parameters ---------- - cols: str or list of str + cols Columns to use for distinct. Examples @@ -3043,14 +3212,16 @@ class Distinct(QueryOp): """ - cols: typing.Union[str, typing.List[str]] + def __init__(self, cols: typing.Union[str, typing.List[str]]): + super().__init__() + self.cols = cols def __call__(self, table: TableTypes) -> Subquery: """Process the table. Parameters ---------- - table : cyclops.query.util.TableTypes + table Table on which to perform the operation. Returns diff --git a/docs/source/tutorials/omop/query_api.ipynb b/docs/source/tutorials/omop/query_api.ipynb index 7884f819d..d9d2acc3e 100644 --- a/docs/source/tutorials/omop/query_api.ipynb +++ b/docs/source/tutorials/omop/query_api.ipynb @@ -84,7 +84,7 @@ "metadata": {}, "outputs": [], "source": [ - "ops = qo.Sequential([qo.ConditionAfterDate(\"visit_start_date\", \"2010-01-01\")])\n", + "ops = qo.ConditionAfterDate(\"visit_start_date\", \"2010-01-01\")\n", "visits = querier.visit_occurrence(ops=ops).run(limit=100)\n", "print(f\"{len(visits)} rows extracted!\")\n", "pd.to_datetime(visits[\"visit_start_date\"]).dt.year.value_counts().sort_index()" @@ -105,7 +105,7 @@ "metadata": {}, "outputs": [], "source": [ - "ops = qo.Sequential([qo.ConditionAfterDate(\"visit_start_date\", \"2020-01-01\")])\n", + "ops = qo.Sequential(qo.ConditionAfterDate(\"visit_start_date\", \"2020-01-01\"))\n", "visits = querier.visit_occurrence(ops=ops)\n", "measurements = querier.measurement(\n", " join=qo.JoinArgs(join_table=visits.query, on=\"visit_occurrence_id\"),\n", @@ -182,11 +182,7 @@ }, "outputs": [], "source": [ - "ops = qo.Sequential(\n", - " [\n", - " qo.ConditionAfterDate(\"visit_start_date\", \"2010-01-01\"),\n", - " ],\n", - ")\n", + "ops = qo.ConditionAfterDate(\"visit_start_date\", \"2010-01-01\")\n", "visits = querier.visit_occurrence(ops=ops)\n", "visits_concept_mapped = querier.map_concept_ids_to_name(\n", " visits.query,\n", @@ -195,11 +191,7 @@ " \"admitting_concept_id\",\n", " ],\n", ")\n", - "visits_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"discharge_to_concept_name\", \"died\"),\n", - " ],\n", - ")\n", + "visits_ops = qo.ConditionSubstring(\"discharge_to_concept_name\", \"died\")\n", "visits = querier.get_interface(visits_concept_mapped, ops=visits_ops).run(limit=100)\n", "print(f\"{len(visits)} rows extracted!\")" ] @@ -223,11 +215,7 @@ }, "outputs": [], "source": [ - "persons_ops = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"gender_concept_name\", \"FEMALE\"),\n", - " ],\n", - ")\n", + "persons_ops = qo.ConditionSubstring(\"gender_concept_name\", \"FEMALE\")\n", "cohort = querier.person(ops=persons_ops)\n", "cohort = querier.visit_occurrence(join=qo.JoinArgs(cohort.query, on=\"person_id\"))\n", "cohort = querier.omop.condition_occurrence(\n", @@ -245,10 +233,8 @@ " ],\n", ")\n", "sepsis_died_filter = qo.Sequential(\n", - " [\n", - " qo.ConditionSubstring(\"discharge_to_concept_name\", \"died\"),\n", - " qo.ConditionSubstring(\"condition_concept_name\", \"sepsis\"),\n", - " ],\n", + " qo.ConditionSubstring(\"discharge_to_concept_name\", \"died\"),\n", + " qo.ConditionSubstring(\"condition_concept_name\", \"sepsis\"),\n", ")\n", "cohort = querier.get_interface(cohort_query, ops=sepsis_died_filter).run(limit=100)\n", "print(f\"{len(cohort)} rows extracted!\")" diff --git a/poetry.lock b/poetry.lock index 5cdf35e3a..7d91ee261 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "aiofiles" @@ -291,24 +291,24 @@ files = [ [[package]] name = "anyio" -version = "3.7.1" +version = "4.0.0" description = "High level compatibility layer for multiple asynchronous event loop implementations" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "anyio-3.7.1-py3-none-any.whl", hash = "sha256:91dee416e570e92c64041bd18b900d1d6fa78dff7048769ce5ac5ddad004fbb5"}, - {file = "anyio-3.7.1.tar.gz", hash = "sha256:44a3c9aba0f5defa43261a8b3efb97891f2bd7d804e0e1f56419befa1adfc780"}, + {file = "anyio-4.0.0-py3-none-any.whl", hash = "sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f"}, + {file = "anyio-4.0.0.tar.gz", hash = "sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a"}, ] [package.dependencies] -exceptiongroup = {version = "*", markers = "python_version < \"3.11\""} +exceptiongroup = {version = ">=1.0.2", markers = "python_version < \"3.11\""} idna = ">=2.8" sniffio = ">=1.1" [package.extras] -doc = ["Sphinx", "packaging", "sphinx-autodoc-typehints (>=1.2.0)", "sphinx-rtd-theme (>=1.2.2)", "sphinxcontrib-jquery"] -test = ["anyio[trio]", "coverage[toml] (>=4.5)", "hypothesis (>=4.0)", "mock (>=4)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] -trio = ["trio (<0.22)"] +doc = ["Sphinx (>=7)", "packaging", "sphinx-autodoc-typehints (>=1.2.0)"] +test = ["anyio[trio]", "coverage[toml] (>=7)", "hypothesis (>=4.0)", "psutil (>=5.9)", "pytest (>=7.0)", "pytest-mock (>=3.6.1)", "trustme", "uvloop (>=0.17)"] +trio = ["trio (>=0.22)"] [[package]] name = "appnope" @@ -1011,13 +1011,13 @@ typing = ["mypy (>=0.990)"] [[package]] name = "confection" -version = "0.1.1" +version = "0.1.2" description = "The sweetest config system for Python" optional = false python-versions = ">=3.6" files = [ - {file = "confection-0.1.1-py3-none-any.whl", hash = "sha256:d2d9e53a5a61395caae1ab09281bab17b08a23fa94aabd1cc24c134880d41c30"}, - {file = "confection-0.1.1.tar.gz", hash = "sha256:4678652fb4aab94f40631c853e2dd76a5a420205f877cb6a9f2459a44fd7aa29"}, + {file = "confection-0.1.2-py3-none-any.whl", hash = "sha256:8bde19143fe36c38ea6e7241dec7be14b8a16e51c9d7ade93d19f72d9f8f1115"}, + {file = "confection-0.1.2.tar.gz", hash = "sha256:7163eb9bdde62cc61a71c6284fb0f0b50b2723b7ef8ab79c7061a7bd659a058e"}, ] [package.dependencies] @@ -1095,63 +1095,63 @@ files = [ [[package]] name = "coverage" -version = "7.3.0" +version = "7.3.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:db76a1bcb51f02b2007adacbed4c88b6dee75342c37b05d1822815eed19edee5"}, - {file = "coverage-7.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c02cfa6c36144ab334d556989406837336c1d05215a9bdf44c0bc1d1ac1cb637"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:477c9430ad5d1b80b07f3c12f7120eef40bfbf849e9e7859e53b9c93b922d2af"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ce2ee86ca75f9f96072295c5ebb4ef2a43cecf2870b0ca5e7a1cbdd929cf67e1"}, - {file = "coverage-7.3.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d8a0426b49c053013e631c0cdc09b952d857efa8f68121746b339912d27a12"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b3eb0c93e2ea6445b2173da48cb548364f8f65bf68f3d090404080d338e3a689"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:90b6e2f0f66750c5a1178ffa9370dec6c508a8ca5265c42fbad3ccac210a7977"}, - {file = "coverage-7.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:96d7d761aea65b291a98c84e1250cd57b5b51726821a6f2f8df65db89363be51"}, - {file = "coverage-7.3.0-cp310-cp310-win32.whl", hash = "sha256:63c5b8ecbc3b3d5eb3a9d873dec60afc0cd5ff9d9f1c75981d8c31cfe4df8527"}, - {file = "coverage-7.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:97c44f4ee13bce914272589b6b41165bbb650e48fdb7bd5493a38bde8de730a1"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74c160285f2dfe0acf0f72d425f3e970b21b6de04157fc65adc9fd07ee44177f"}, - {file = "coverage-7.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b543302a3707245d454fc49b8ecd2c2d5982b50eb63f3535244fd79a4be0c99d"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad0f87826c4ebd3ef484502e79b39614e9c03a5d1510cfb623f4a4a051edc6fd"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:13c6cbbd5f31211d8fdb477f0f7b03438591bdd077054076eec362cf2207b4a7"}, - {file = "coverage-7.3.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fac440c43e9b479d1241fe9d768645e7ccec3fb65dc3a5f6e90675e75c3f3e3a"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3c9834d5e3df9d2aba0275c9f67989c590e05732439b3318fa37a725dff51e74"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4c8e31cf29b60859876474034a83f59a14381af50cbe8a9dbaadbf70adc4b214"}, - {file = "coverage-7.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:7a9baf8e230f9621f8e1d00c580394a0aa328fdac0df2b3f8384387c44083c0f"}, - {file = "coverage-7.3.0-cp311-cp311-win32.whl", hash = "sha256:ccc51713b5581e12f93ccb9c5e39e8b5d4b16776d584c0f5e9e4e63381356482"}, - {file = "coverage-7.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:887665f00ea4e488501ba755a0e3c2cfd6278e846ada3185f42d391ef95e7e70"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d000a739f9feed900381605a12a61f7aaced6beae832719ae0d15058a1e81c1b"}, - {file = "coverage-7.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:59777652e245bb1e300e620ce2bef0d341945842e4eb888c23a7f1d9e143c446"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9737bc49a9255d78da085fa04f628a310c2332b187cd49b958b0e494c125071"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5247bab12f84a1d608213b96b8af0cbb30d090d705b6663ad794c2f2a5e5b9fe"}, - {file = "coverage-7.3.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e2ac9a1de294773b9fa77447ab7e529cf4fe3910f6a0832816e5f3d538cfea9a"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:85b7335c22455ec12444cec0d600533a238d6439d8d709d545158c1208483873"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:36ce5d43a072a036f287029a55b5c6a0e9bd73db58961a273b6dc11a2c6eb9c2"}, - {file = "coverage-7.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:211a4576e984f96d9fce61766ffaed0115d5dab1419e4f63d6992b480c2bd60b"}, - {file = "coverage-7.3.0-cp312-cp312-win32.whl", hash = "sha256:56afbf41fa4a7b27f6635bc4289050ac3ab7951b8a821bca46f5b024500e6321"}, - {file = "coverage-7.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:7f297e0c1ae55300ff688568b04ff26b01c13dfbf4c9d2b7d0cb688ac60df479"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ac0dec90e7de0087d3d95fa0533e1d2d722dcc008bc7b60e1143402a04c117c1"}, - {file = "coverage-7.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:438856d3f8f1e27f8e79b5410ae56650732a0dcfa94e756df88c7e2d24851fcd"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1084393c6bda8875c05e04fce5cfe1301a425f758eb012f010eab586f1f3905e"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49ab200acf891e3dde19e5aa4b0f35d12d8b4bd805dc0be8792270c71bd56c54"}, - {file = "coverage-7.3.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a67e6bbe756ed458646e1ef2b0778591ed4d1fcd4b146fc3ba2feb1a7afd4254"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8f39c49faf5344af36042b293ce05c0d9004270d811c7080610b3e713251c9b0"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:7df91fb24c2edaabec4e0eee512ff3bc6ec20eb8dccac2e77001c1fe516c0c84"}, - {file = "coverage-7.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:34f9f0763d5fa3035a315b69b428fe9c34d4fc2f615262d6be3d3bf3882fb985"}, - {file = "coverage-7.3.0-cp38-cp38-win32.whl", hash = "sha256:bac329371d4c0d456e8d5f38a9b0816b446581b5f278474e416ea0c68c47dcd9"}, - {file = "coverage-7.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b859128a093f135b556b4765658d5d2e758e1fae3e7cc2f8c10f26fe7005e543"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed8d310afe013db1eedd37176d0839dc66c96bcfcce8f6607a73ffea2d6ba"}, - {file = "coverage-7.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61260ec93f99f2c2d93d264b564ba912bec502f679793c56f678ba5251f0393"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97af9554a799bd7c58c0179cc8dbf14aa7ab50e1fd5fa73f90b9b7215874ba28"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3558e5b574d62f9c46b76120a5c7c16c4612dc2644c3d48a9f4064a705eaee95"}, - {file = "coverage-7.3.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:37d5576d35fcb765fca05654f66aa71e2808d4237d026e64ac8b397ffa66a56a"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:07ea61bcb179f8f05ffd804d2732b09d23a1238642bf7e51dad62082b5019b34"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:80501d1b2270d7e8daf1b64b895745c3e234289e00d5f0e30923e706f110334e"}, - {file = "coverage-7.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4eddd3153d02204f22aef0825409091a91bf2a20bce06fe0f638f5c19a85de54"}, - {file = "coverage-7.3.0-cp39-cp39-win32.whl", hash = "sha256:2d22172f938455c156e9af2612650f26cceea47dc86ca048fa4e0b2d21646ad3"}, - {file = "coverage-7.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:60f64e2007c9144375dd0f480a54d6070f00bb1a28f65c408370544091c9bc9e"}, - {file = "coverage-7.3.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:5492a6ce3bdb15c6ad66cb68a0244854d9917478877a25671d70378bdc8562d0"}, - {file = "coverage-7.3.0.tar.gz", hash = "sha256:49dbb19cdcafc130f597d9e04a29d0a032ceedf729e41b181f51cd170e6ee865"}, + {file = "coverage-7.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cd0f7429ecfd1ff597389907045ff209c8fdb5b013d38cfa7c60728cb484b6e3"}, + {file = "coverage-7.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:966f10df9b2b2115da87f50f6a248e313c72a668248be1b9060ce935c871f276"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0575c37e207bb9b98b6cf72fdaaa18ac909fb3d153083400c2d48e2e6d28bd8e"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:245c5a99254e83875c7fed8b8b2536f040997a9b76ac4c1da5bff398c06e860f"}, + {file = "coverage-7.3.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c96dd7798d83b960afc6c1feb9e5af537fc4908852ef025600374ff1a017392"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:de30c1aa80f30af0f6b2058a91505ea6e36d6535d437520067f525f7df123887"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:50dd1e2dd13dbbd856ffef69196781edff26c800a74f070d3b3e3389cab2600d"}, + {file = "coverage-7.3.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b9c0c19f70d30219113b18fe07e372b244fb2a773d4afde29d5a2f7930765136"}, + {file = "coverage-7.3.1-cp310-cp310-win32.whl", hash = "sha256:770f143980cc16eb601ccfd571846e89a5fe4c03b4193f2e485268f224ab602f"}, + {file = "coverage-7.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:cdd088c00c39a27cfa5329349cc763a48761fdc785879220d54eb785c8a38520"}, + {file = "coverage-7.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74bb470399dc1989b535cb41f5ca7ab2af561e40def22d7e188e0a445e7639e3"}, + {file = "coverage-7.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:025ded371f1ca280c035d91b43252adbb04d2aea4c7105252d3cbc227f03b375"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6191b3a6ad3e09b6cfd75b45c6aeeffe7e3b0ad46b268345d159b8df8d835f9"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7eb0b188f30e41ddd659a529e385470aa6782f3b412f860ce22b2491c89b8593"}, + {file = "coverage-7.3.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75c8f0df9dfd8ff745bccff75867d63ef336e57cc22b2908ee725cc552689ec8"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7eb3cd48d54b9bd0e73026dedce44773214064be93611deab0b6a43158c3d5a0"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:ac3c5b7e75acac31e490b7851595212ed951889918d398b7afa12736c85e13ce"}, + {file = "coverage-7.3.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5b4ee7080878077af0afa7238df1b967f00dc10763f6e1b66f5cced4abebb0a3"}, + {file = "coverage-7.3.1-cp311-cp311-win32.whl", hash = "sha256:229c0dd2ccf956bf5aeede7e3131ca48b65beacde2029f0361b54bf93d36f45a"}, + {file = "coverage-7.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:c6f55d38818ca9596dc9019eae19a47410d5322408140d9a0076001a3dcb938c"}, + {file = "coverage-7.3.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:5289490dd1c3bb86de4730a92261ae66ea8d44b79ed3cc26464f4c2cde581fbc"}, + {file = "coverage-7.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ca833941ec701fda15414be400c3259479bfde7ae6d806b69e63b3dc423b1832"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd694e19c031733e446c8024dedd12a00cda87e1c10bd7b8539a87963685e969"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aab8e9464c00da5cb9c536150b7fbcd8850d376d1151741dd0d16dfe1ba4fd26"}, + {file = "coverage-7.3.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:87d38444efffd5b056fcc026c1e8d862191881143c3aa80bb11fcf9dca9ae204"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8a07b692129b8a14ad7a37941a3029c291254feb7a4237f245cfae2de78de037"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2829c65c8faaf55b868ed7af3c7477b76b1c6ebeee99a28f59a2cb5907a45760"}, + {file = "coverage-7.3.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1f111a7d85658ea52ffad7084088277135ec5f368457275fc57f11cebb15607f"}, + {file = "coverage-7.3.1-cp312-cp312-win32.whl", hash = "sha256:c397c70cd20f6df7d2a52283857af622d5f23300c4ca8e5bd8c7a543825baa5a"}, + {file = "coverage-7.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:5ae4c6da8b3d123500f9525b50bf0168023313963e0e2e814badf9000dd6ef92"}, + {file = "coverage-7.3.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ca70466ca3a17460e8fc9cea7123c8cbef5ada4be3140a1ef8f7b63f2f37108f"}, + {file = "coverage-7.3.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f2781fd3cabc28278dc982a352f50c81c09a1a500cc2086dc4249853ea96b981"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6407424621f40205bbe6325686417e5e552f6b2dba3535dd1f90afc88a61d465"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:04312b036580ec505f2b77cbbdfb15137d5efdfade09156961f5277149f5e344"}, + {file = "coverage-7.3.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac9ad38204887349853d7c313f53a7b1c210ce138c73859e925bc4e5d8fc18e7"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:53669b79f3d599da95a0afbef039ac0fadbb236532feb042c534fbb81b1a4e40"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:614f1f98b84eb256e4f35e726bfe5ca82349f8dfa576faabf8a49ca09e630086"}, + {file = "coverage-7.3.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f1a317fdf5c122ad642db8a97964733ab7c3cf6009e1a8ae8821089993f175ff"}, + {file = "coverage-7.3.1-cp38-cp38-win32.whl", hash = "sha256:defbbb51121189722420a208957e26e49809feafca6afeef325df66c39c4fdb3"}, + {file = "coverage-7.3.1-cp38-cp38-win_amd64.whl", hash = "sha256:f4f456590eefb6e1b3c9ea6328c1e9fa0f1006e7481179d749b3376fc793478e"}, + {file = "coverage-7.3.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f12d8b11a54f32688b165fd1a788c408f927b0960984b899be7e4c190ae758f1"}, + {file = "coverage-7.3.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f09195dda68d94a53123883de75bb97b0e35f5f6f9f3aa5bf6e496da718f0cb6"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6601a60318f9c3945be6ea0f2a80571f4299b6801716f8a6e4846892737ebe4"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:07d156269718670d00a3b06db2288b48527fc5f36859425ff7cec07c6b367745"}, + {file = "coverage-7.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:636a8ac0b044cfeccae76a36f3b18264edcc810a76a49884b96dd744613ec0b7"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5d991e13ad2ed3aced177f524e4d670f304c8233edad3210e02c465351f785a0"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:586649ada7cf139445da386ab6f8ef00e6172f11a939fc3b2b7e7c9082052fa0"}, + {file = "coverage-7.3.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4aba512a15a3e1e4fdbfed2f5392ec221434a614cc68100ca99dcad7af29f3f8"}, + {file = "coverage-7.3.1-cp39-cp39-win32.whl", hash = "sha256:6bc6f3f4692d806831c136c5acad5ccedd0262aa44c087c46b7101c77e139140"}, + {file = "coverage-7.3.1-cp39-cp39-win_amd64.whl", hash = "sha256:553d7094cb27db58ea91332e8b5681bac107e7242c23f7629ab1316ee73c4981"}, + {file = "coverage-7.3.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:220eb51f5fb38dfdb7e5d54284ca4d0cd70ddac047d750111a68ab1798945194"}, + {file = "coverage-7.3.1.tar.gz", hash = "sha256:6cb7fe1581deb67b782c153136541e20901aa312ceedaf1467dcb35255787952"}, ] [package.dependencies] @@ -1437,19 +1437,19 @@ tabulate = ">=0.7.7" [[package]] name = "datasets" -version = "2.14.4" +version = "2.14.5" description = "HuggingFace community-driven open-source library of datasets" optional = false python-versions = ">=3.8.0" files = [ - {file = "datasets-2.14.4-py3-none-any.whl", hash = "sha256:29336bd316a7d827ccd4da2236596279b20ca2ac78f64c04c9483da7cbc2459b"}, - {file = "datasets-2.14.4.tar.gz", hash = "sha256:ef29c2b5841de488cd343cfc26ab979bff77efa4d2285af51f1ad7db5c46a83b"}, + {file = "datasets-2.14.5-py3-none-any.whl", hash = "sha256:dd4155091034cba04d5a28711f2ed3944275ed15c5d0c5a2d0b6b9ea34a2bdfe"}, + {file = "datasets-2.14.5.tar.gz", hash = "sha256:b738a86540ab8e1a7806c8a3790b67be0056318d0c5d5a58a1b0dbdd76c0f568"}, ] [package.dependencies] aiohttp = "*" dill = ">=0.3.0,<0.3.8" -fsspec = {version = ">=2021.11.1", extras = ["http"]} +fsspec = {version = ">=2023.1.0,<2023.9.0", extras = ["http"]} huggingface-hub = ">=0.14.0,<1.0.0" multiprocess = "*" numpy = ">=1.17" @@ -1672,17 +1672,16 @@ tests = ["asttokens", "littleutils", "pytest", "rich"] [[package]] name = "fastapi" -version = "0.103.1" +version = "0.103.0" description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production" optional = false python-versions = ">=3.7" files = [ - {file = "fastapi-0.103.1-py3-none-any.whl", hash = "sha256:5e5f17e826dbd9e9b5a5145976c5cd90bcaa61f2bf9a69aca423f2bcebe44d83"}, - {file = "fastapi-0.103.1.tar.gz", hash = "sha256:345844e6a82062f06a096684196aaf96c1198b25c06b72c1311b882aa2d8a35d"}, + {file = "fastapi-0.103.0-py3-none-any.whl", hash = "sha256:61ab72c6c281205dd0cbaccf503e829a37e0be108d965ac223779a8479243665"}, + {file = "fastapi-0.103.0.tar.gz", hash = "sha256:4166732f5ddf61c33e9fa4664f73780872511e0598d4d5434b1816dc1e6d9421"}, ] [package.dependencies] -anyio = ">=3.7.1,<4.0.0" pydantic = ">=1.7.4,<1.8 || >1.8,<1.8.1 || >1.8.1,<2.0.0 || >2.0.0,<2.0.1 || >2.0.1,<2.1.0 || >2.1.0,<3.0.0" starlette = ">=0.27.0,<0.28.0" typing-extensions = ">=4.5.0" @@ -1915,13 +1914,13 @@ files = [ [[package]] name = "fsspec" -version = "2023.9.0" +version = "2023.6.0" description = "File-system specification" optional = false python-versions = ">=3.8" files = [ - {file = "fsspec-2023.9.0-py3-none-any.whl", hash = "sha256:d55b9ab2a4c1f2b759888ae9f93e40c2aa72c0808132e87e282b549f9e6c4254"}, - {file = "fsspec-2023.9.0.tar.gz", hash = "sha256:4dbf0fefee035b7c6d3bbbe6bc99b2f201f40d4dca95b67c2b719be77bcd917f"}, + {file = "fsspec-2023.6.0-py3-none-any.whl", hash = "sha256:1cbad1faef3e391fba6dc005ae9b5bdcbf43005c9167ce78c915549c352c869a"}, + {file = "fsspec-2023.6.0.tar.gz", hash = "sha256:d0b2f935446169753e7a5c5c55681c54ea91996cc67be93c39a154fb3a2742af"}, ] [package.dependencies] @@ -2987,27 +2986,26 @@ qtconsole = "*" [[package]] name = "jupyter-client" -version = "7.4.9" +version = "8.3.1" description = "Jupyter protocol implementation and client libraries" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "jupyter_client-7.4.9-py3-none-any.whl", hash = "sha256:214668aaea208195f4c13d28eb272ba79f945fc0cf3f11c7092c20b2ca1980e7"}, - {file = "jupyter_client-7.4.9.tar.gz", hash = "sha256:52be28e04171f07aed8f20e1616a5a552ab9fee9cbbe6c1896ae170c3880d392"}, + {file = "jupyter_client-8.3.1-py3-none-any.whl", hash = "sha256:5eb9f55eb0650e81de6b7e34308d8b92d04fe4ec41cd8193a913979e33d8e1a5"}, + {file = "jupyter_client-8.3.1.tar.gz", hash = "sha256:60294b2d5b869356c893f57b1a877ea6510d60d45cf4b38057f1672d85699ac9"}, ] [package.dependencies] -entrypoints = "*" -jupyter-core = ">=4.9.2" -nest-asyncio = ">=1.5.4" +importlib-metadata = {version = ">=4.8.3", markers = "python_version < \"3.10\""} +jupyter-core = ">=4.12,<5.0.dev0 || >=5.1.dev0" python-dateutil = ">=2.8.2" pyzmq = ">=23.0" tornado = ">=6.2" -traitlets = "*" +traitlets = ">=5.3" [package.extras] -doc = ["ipykernel", "myst-parser", "sphinx (>=1.3.6)", "sphinx-rtd-theme", "sphinxcontrib-github-alt"] -test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] +docs = ["ipykernel", "myst-parser", "pydata-sphinx-theme", "sphinx (>=4)", "sphinx-autodoc-typehints", "sphinxcontrib-github-alt", "sphinxcontrib-spelling"] +test = ["coverage", "ipykernel (>=6.14)", "mypy", "paramiko", "pre-commit", "pytest", "pytest-cov", "pytest-jupyter[client] (>=0.4.1)", "pytest-timeout"] [[package]] name = "jupyter-console" @@ -3712,52 +3710,52 @@ files = [ [[package]] name = "matplotlib" -version = "3.7.1" +version = "3.7.2" description = "Python plotting package" optional = false python-versions = ">=3.8" files = [ - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:95cbc13c1fc6844ab8812a525bbc237fa1470863ff3dace7352e910519e194b1"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:08308bae9e91aca1ec6fd6dda66237eef9f6294ddb17f0d0b3c863169bf82353"}, - {file = "matplotlib-3.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:544764ba51900da4639c0f983b323d288f94f65f4024dc40ecb1542d74dc0500"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56d94989191de3fcc4e002f93f7f1be5da476385dde410ddafbb70686acf00ea"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99bc9e65901bb9a7ce5e7bb24af03675cbd7c70b30ac670aa263240635999a4"}, - {file = "matplotlib-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb7d248c34a341cd4c31a06fd34d64306624c8cd8d0def7abb08792a5abfd556"}, - {file = "matplotlib-3.7.1-cp310-cp310-win32.whl", hash = "sha256:ce463ce590f3825b52e9fe5c19a3c6a69fd7675a39d589e8b5fbe772272b3a24"}, - {file = "matplotlib-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3d7bc90727351fb841e4d8ae620d2d86d8ed92b50473cd2b42ce9186104ecbba"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:770a205966d641627fd5cf9d3cb4b6280a716522cd36b8b284a8eb1581310f61"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:f67bfdb83a8232cb7a92b869f9355d677bce24485c460b19d01970b64b2ed476"}, - {file = "matplotlib-3.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2bf092f9210e105f414a043b92af583c98f50050559616930d884387d0772aba"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:89768d84187f31717349c6bfadc0e0d8c321e8eb34522acec8a67b1236a66332"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83111e6388dec67822e2534e13b243cc644c7494a4bb60584edbff91585a83c6"}, - {file = "matplotlib-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a867bf73a7eb808ef2afbca03bcdb785dae09595fbe550e1bab0cd023eba3de0"}, - {file = "matplotlib-3.7.1-cp311-cp311-win32.whl", hash = "sha256:fbdeeb58c0cf0595efe89c05c224e0a502d1aa6a8696e68a73c3efc6bc354304"}, - {file = "matplotlib-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:c0bd19c72ae53e6ab979f0ac6a3fafceb02d2ecafa023c5cca47acd934d10be7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6eb88d87cb2c49af00d3bbc33a003f89fd9f78d318848da029383bfc08ecfbfb"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:cf0e4f727534b7b1457898c4f4ae838af1ef87c359b76dcd5330fa31893a3ac7"}, - {file = "matplotlib-3.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:46a561d23b91f30bccfd25429c3c706afe7d73a5cc64ef2dfaf2b2ac47c1a5dc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8704726d33e9aa8a6d5215044b8d00804561971163563e6e6591f9dcf64340cc"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4cf327e98ecf08fcbb82685acaf1939d3338548620ab8dfa02828706402c34de"}, - {file = "matplotlib-3.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:617f14ae9d53292ece33f45cba8503494ee199a75b44de7717964f70637a36aa"}, - {file = "matplotlib-3.7.1-cp38-cp38-win32.whl", hash = "sha256:7c9a4b2da6fac77bcc41b1ea95fadb314e92508bf5493ceff058e727e7ecf5b0"}, - {file = "matplotlib-3.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:14645aad967684e92fc349493fa10c08a6da514b3d03a5931a1bac26e6792bd1"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:81a6b377ea444336538638d31fdb39af6be1a043ca5e343fe18d0f17e098770b"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:28506a03bd7f3fe59cd3cd4ceb2a8d8a2b1db41afede01f66c42561b9be7b4b7"}, - {file = "matplotlib-3.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8c587963b85ce41e0a8af53b9b2de8dddbf5ece4c34553f7bd9d066148dc719c"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8bf26ade3ff0f27668989d98c8435ce9327d24cffb7f07d24ef609e33d582439"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:def58098f96a05f90af7e92fd127d21a287068202aa43b2a93476170ebd99e87"}, - {file = "matplotlib-3.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f883a22a56a84dba3b588696a2b8a1ab0d2c3d41be53264115c71b0a942d8fdb"}, - {file = "matplotlib-3.7.1-cp39-cp39-win32.whl", hash = "sha256:4f99e1b234c30c1e9714610eb0c6d2f11809c9c78c984a613ae539ea2ad2eb4b"}, - {file = "matplotlib-3.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:3ba2af245e36990facf67fde840a760128ddd71210b2ab6406e640188d69d136"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3032884084f541163f295db8a6536e0abb0db464008fadca6c98aaf84ccf4717"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a2cb34336110e0ed8bb4f650e817eed61fa064acbefeb3591f1b33e3a84fd96"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b867e2f952ed592237a1828f027d332d8ee219ad722345b79a001f49df0936eb"}, - {file = "matplotlib-3.7.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:57bfb8c8ea253be947ccb2bc2d1bb3862c2bccc662ad1b4626e1f5e004557042"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:438196cdf5dc8d39b50a45cb6e3f6274edbcf2254f85fa9b895bf85851c3a613"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:21e9cff1a58d42e74d01153360de92b326708fb205250150018a52c70f43c290"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:75d4725d70b7c03e082bbb8a34639ede17f333d7247f56caceb3801cb6ff703d"}, - {file = "matplotlib-3.7.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:97cc368a7268141afb5690760921765ed34867ffb9655dd325ed207af85c7529"}, - {file = "matplotlib-3.7.1.tar.gz", hash = "sha256:7b73305f25eab4541bd7ee0b96d87e53ae9c9f1823be5659b806cd85786fe882"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:2699f7e73a76d4c110f4f25be9d2496d6ab4f17345307738557d345f099e07de"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:a8035ba590658bae7562786c9cc6ea1a84aa49d3afab157e414c9e2ea74f496d"}, + {file = "matplotlib-3.7.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2f8e4a49493add46ad4a8c92f63e19d548b2b6ebbed75c6b4c7f46f57d36cdd1"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71667eb2ccca4c3537d9414b1bc00554cb7f91527c17ee4ec38027201f8f1603"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:152ee0b569a37630d8628534c628456b28686e085d51394da6b71ef84c4da201"}, + {file = "matplotlib-3.7.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070f8dddd1f5939e60aacb8fa08f19551f4b0140fab16a3669d5cd6e9cb28fc8"}, + {file = "matplotlib-3.7.2-cp310-cp310-win32.whl", hash = "sha256:fdbb46fad4fb47443b5b8ac76904b2e7a66556844f33370861b4788db0f8816a"}, + {file = "matplotlib-3.7.2-cp310-cp310-win_amd64.whl", hash = "sha256:23fb1750934e5f0128f9423db27c474aa32534cec21f7b2153262b066a581fd1"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:30e1409b857aa8a747c5d4f85f63a79e479835f8dffc52992ac1f3f25837b544"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:50e0a55ec74bf2d7a0ebf50ac580a209582c2dd0f7ab51bc270f1b4a0027454e"}, + {file = "matplotlib-3.7.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ac60daa1dc83e8821eed155796b0f7888b6b916cf61d620a4ddd8200ac70cd64"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:305e3da477dc8607336ba10bac96986d6308d614706cae2efe7d3ffa60465b24"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1c308b255efb9b06b23874236ec0f10f026673ad6515f602027cc8ac7805352d"}, + {file = "matplotlib-3.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:60c521e21031632aa0d87ca5ba0c1c05f3daacadb34c093585a0be6780f698e4"}, + {file = "matplotlib-3.7.2-cp311-cp311-win32.whl", hash = "sha256:26bede320d77e469fdf1bde212de0ec889169b04f7f1179b8930d66f82b30cbc"}, + {file = "matplotlib-3.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:af4860132c8c05261a5f5f8467f1b269bf1c7c23902d75f2be57c4a7f2394b3e"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:a1733b8e84e7e40a9853e505fe68cc54339f97273bdfe6f3ed980095f769ddc7"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:d9881356dc48e58910c53af82b57183879129fa30492be69058c5b0d9fddf391"}, + {file = "matplotlib-3.7.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f081c03f413f59390a80b3e351cc2b2ea0205839714dbc364519bcf51f4b56ca"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1cd120fca3407a225168238b790bd5c528f0fafde6172b140a2f3ab7a4ea63e9"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2c1590b90aa7bd741b54c62b78de05d4186271e34e2377e0289d943b3522273"}, + {file = "matplotlib-3.7.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d2ff3c984b8a569bc1383cd468fc06b70d7b59d5c2854ca39f1436ae8394117"}, + {file = "matplotlib-3.7.2-cp38-cp38-win32.whl", hash = "sha256:5dea00b62d28654b71ca92463656d80646675628d0828e08a5f3b57e12869e13"}, + {file = "matplotlib-3.7.2-cp38-cp38-win_amd64.whl", hash = "sha256:0f506a1776ee94f9e131af1ac6efa6e5bc7cb606a3e389b0ccb6e657f60bb676"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:6515e878f91894c2e4340d81f0911857998ccaf04dbc1bba781e3d89cbf70608"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:71f7a8c6b124e904db550f5b9fe483d28b896d4135e45c4ea381ad3b8a0e3256"}, + {file = "matplotlib-3.7.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:12f01b92ecd518e0697da4d97d163b2b3aa55eb3eb4e2c98235b3396d7dad55f"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7e28d6396563955f7af437894a36bf2b279462239a41028323e04b85179058b"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbcf59334ff645e6a67cd5f78b4b2cdb76384cdf587fa0d2dc85f634a72e1a3e"}, + {file = "matplotlib-3.7.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:318c89edde72ff95d8df67d82aca03861240512994a597a435a1011ba18dbc7f"}, + {file = "matplotlib-3.7.2-cp39-cp39-win32.whl", hash = "sha256:ce55289d5659b5b12b3db4dc9b7075b70cef5631e56530f14b2945e8836f2d20"}, + {file = "matplotlib-3.7.2-cp39-cp39-win_amd64.whl", hash = "sha256:2ecb5be2b2815431c81dc115667e33da0f5a1bcf6143980d180d09a717c4a12e"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fdcd28360dbb6203fb5219b1a5658df226ac9bebc2542a9e8f457de959d713d0"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c3cca3e842b11b55b52c6fb8bd6a4088693829acbfcdb3e815fa9b7d5c92c1b"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ebf577c7a6744e9e1bd3fee45fc74a02710b214f94e2bde344912d85e0c9af7c"}, + {file = "matplotlib-3.7.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:936bba394682049919dda062d33435b3be211dc3dcaa011e09634f060ec878b2"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:bc221ffbc2150458b1cd71cdd9ddd5bb37962b036e41b8be258280b5b01da1dd"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35d74ebdb3f71f112b36c2629cf32323adfbf42679e2751252acd468f5001c07"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:717157e61b3a71d3d26ad4e1770dc85156c9af435659a25ee6407dc866cb258d"}, + {file = "matplotlib-3.7.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:20f844d6be031948148ba49605c8b96dfe7d3711d1b63592830d650622458c11"}, + {file = "matplotlib-3.7.2.tar.gz", hash = "sha256:a8cdb91dddb04436bd2f098b8fdf4b81352e68cf4d2c6756fcc414791076569b"}, ] [package.dependencies] @@ -3769,7 +3767,7 @@ kiwisolver = ">=1.0.1" numpy = ">=1.20" packaging = ">=20.0" pillow = ">=6.2.0" -pyparsing = ">=2.3.1" +pyparsing = ">=2.3.1,<3.1" python-dateutil = ">=2.7" [[package]] @@ -4379,13 +4377,13 @@ setuptools = "*" [[package]] name = "notebook" -version = "6.5.5" +version = "6.5.4" description = "A web-based notebook environment for interactive computing" optional = false python-versions = ">=3.7" files = [ - {file = "notebook-6.5.5-py3-none-any.whl", hash = "sha256:171039245a5b1a8f8233165091210632c21250ce2a652daed38fe8f94389984f"}, - {file = "notebook-6.5.5.tar.gz", hash = "sha256:457caa1fa1c647395420945b2b7559f603eedbc9aeb2a59a0c286c8029e31efa"}, + {file = "notebook-6.5.4-py3-none-any.whl", hash = "sha256:dd17e78aefe64c768737b32bf171c1c766666a21cc79a44d37a1700771cab56f"}, + {file = "notebook-6.5.4.tar.gz", hash = "sha256:517209568bd47261e2def27a140e97d49070602eea0d226a696f42a7f16c9a4e"}, ] [package.dependencies] @@ -4393,14 +4391,14 @@ argon2-cffi = "*" ipykernel = "*" ipython-genutils = "*" jinja2 = "*" -jupyter-client = ">=5.3.4,<8" +jupyter-client = ">=5.3.4" jupyter-core = ">=4.6.1" nbclassic = ">=0.4.7" nbconvert = ">=5" nbformat = "*" nest-asyncio = ">=1.5" prometheus-client = "*" -pyzmq = ">=17,<25" +pyzmq = ">=17" Send2Trash = ">=1.8.0" terminado = ">=0.8.3" tornado = ">=6.1" @@ -4630,11 +4628,13 @@ files = [ [package.dependencies] numpy = [ - {version = ">=1.21.0", markers = "python_version == \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, + {version = ">=1.21.0", markers = "python_version <= \"3.9\" and platform_system == \"Darwin\" and platform_machine == \"arm64\""}, + {version = ">=1.19.3", markers = "python_version >= \"3.6\" and platform_system == \"Linux\" and platform_machine == \"aarch64\" or python_version >= \"3.9\""}, + {version = ">=1.17.0", markers = "python_version >= \"3.7\""}, + {version = ">=1.17.3", markers = "python_version >= \"3.8\""}, + {version = ">=1.21.2", markers = "python_version >= \"3.10\""}, + {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\""}, {version = ">=1.23.5", markers = "python_version >= \"3.11\""}, - {version = ">=1.21.4", markers = "python_version >= \"3.10\" and platform_system == \"Darwin\" and python_version < \"3.11\""}, - {version = ">=1.21.2", markers = "platform_system != \"Darwin\" and python_version >= \"3.10\" and python_version < \"3.11\""}, - {version = ">=1.19.3", markers = "platform_system == \"Linux\" and platform_machine == \"aarch64\" and python_version >= \"3.8\" and python_version < \"3.10\" or python_version > \"3.9\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_system != \"Darwin\" and python_version < \"3.10\" or python_version >= \"3.9\" and platform_machine != \"arm64\" and python_version < \"3.10\""}, ] [[package]] @@ -4767,8 +4767,8 @@ files = [ [package.dependencies] numpy = [ {version = ">=1.20.3", markers = "python_version < \"3.10\""}, + {version = ">=1.21.0", markers = "python_version >= \"3.10\""}, {version = ">=1.23.2", markers = "python_version >= \"3.11\""}, - {version = ">=1.21.0", markers = "python_version >= \"3.10\" and python_version < \"3.11\""}, ] python-dateutil = ">=2.8.1" pytz = ">=2020.1" @@ -5096,54 +5096,54 @@ virtualenv = ">=20.10.0" [[package]] name = "prefect" -version = "2.12.1" +version = "2.11.5" description = "Workflow orchestration and management." optional = false python-versions = ">=3.8" files = [ - {file = "prefect-2.12.1-py3-none-any.whl", hash = "sha256:57a15edcefc7aaa79e4c587bc4fdb6ade1cc90d0233b4539ff5188c5388c8f0b"}, - {file = "prefect-2.12.1.tar.gz", hash = "sha256:70a61ce8412989ffacf24721ebb13958369dc5ba09e7a77785e8c8b14ef37f36"}, + {file = "prefect-2.11.5-py3-none-any.whl", hash = "sha256:a7f49155c9a8abd751faf5aa25b54d3e8b1da00adcbb384ab17988c35f8020ec"}, + {file = "prefect-2.11.5.tar.gz", hash = "sha256:7dd2ca1d95d34dc50be4812821def5354a56af6274b23348953d3b1f4698497e"}, ] [package.dependencies] aiosqlite = ">=0.17.0" -alembic = ">=1.7.5,<2.0.0" -anyio = ">=3.4.0,<4.0.0" -apprise = ">=1.1.0,<2.0.0" -asgi-lifespan = ">=1.0,<3.0" +alembic = ">=1.7.5" +anyio = ">=3.4.0" +apprise = ">=1.1.0" +asgi-lifespan = ">=1.0" asyncpg = ">=0.23" click = ">=8.0,<8.2" -cloudpickle = ">=2.0,<3.0" -coolname = ">=1.0.4,<3.0.0" -croniter = ">=1.0.12,<2.0.0" +cloudpickle = ">=2.0" +coolname = ">=1.0.4" +croniter = ">=1.0.12" cryptography = ">=36.0.1" -dateparser = ">=1.1.1,<2.0.0" -docker = ">=4.0,<7.0" +dateparser = ">=1.1.1" +docker = ">=4.0" fastapi = ">=0.93" fsspec = ">=2022.5.0" graphviz = ">=0.20.1" griffe = ">=0.20.0" httpx = {version = ">=0.23,<0.23.2 || >0.23.2", extras = ["http2"]} importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} -jinja2 = ">=3.0.0,<4.0.0" -jsonpatch = ">=1.32,<2.0" +jinja2 = ">=3.0.0" +jsonpatch = ">=1.32" jsonschema = ">=3.2.0,<5.0.0" -kubernetes = ">=24.2.0,<28.0.0" -orjson = ">=3.7,<4.0" -packaging = ">=21.3,<24.3" +kubernetes = ">=24.2.0" +orjson = ">=3.7" +packaging = ">=21.3" pathspec = ">=0.8.0" -pendulum = ">=2.1.2,<4.0.0" +pendulum = ">=2.1.2" pydantic = ">=1.10.0,<2.0.0" -python-slugify = ">=5.0,<9.0" -pytz = ">=2021.1,<2024" -pyyaml = ">=5.4.1,<7.0.0" -readchar = ">=4.0.0,<5.0.0" -rich = ">=11.0,<14.0" +python-slugify = ">=5.0" +pytz = ">=2021.1" +pyyaml = ">=5.4.1" +readchar = ">=4.0.0" +rich = ">=11.0" ruamel-yaml = ">=0.17.0" -sqlalchemy = {version = ">=1.4.22,<1.4.33 || >1.4.33,<3.0.0", extras = ["asyncio"]} +sqlalchemy = {version = ">=1.4.22,<1.4.33 || >1.4.33", extras = ["asyncio"]} toml = ">=0.10.0" typer = ">=0.4.2" -typing-extensions = ">=4.1.0,<5.0.0" +typing-extensions = ">=4.1.0" uvicorn = ">=0.14.0" websockets = ">=10.4" @@ -5327,17 +5327,6 @@ files = [ [package.extras] tests = ["pytest"] -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, - {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, -] - [[package]] name = "pyarrow" version = "11.0.0" @@ -5537,13 +5526,13 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] [[package]] name = "pyparsing" -version = "3.1.1" +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.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] [package.extras] @@ -5793,90 +5782,108 @@ files = [ [[package]] name = "pyzmq" -version = "24.0.1" +version = "25.1.1" description = "Python bindings for 0MQ" optional = false python-versions = ">=3.6" files = [ - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:28b119ba97129d3001673a697b7cce47fe6de1f7255d104c2f01108a5179a066"}, - {file = "pyzmq-24.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bcbebd369493d68162cddb74a9c1fcebd139dfbb7ddb23d8f8e43e6c87bac3a6"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ae61446166983c663cee42c852ed63899e43e484abf080089f771df4b9d272ef"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:87f7ac99b15270db8d53f28c3c7b968612993a90a5cf359da354efe96f5372b4"}, - {file = "pyzmq-24.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dca7c3956b03b7663fac4d150f5e6d4f6f38b2462c1e9afd83bcf7019f17913"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:8c78bfe20d4c890cb5580a3b9290f700c570e167d4cdcc55feec07030297a5e3"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:48f721f070726cd2a6e44f3c33f8ee4b24188e4b816e6dd8ba542c8c3bb5b246"}, - {file = "pyzmq-24.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:afe1f3bc486d0ce40abb0a0c9adb39aed3bbac36ebdc596487b0cceba55c21c1"}, - {file = "pyzmq-24.0.1-cp310-cp310-win32.whl", hash = "sha256:3e6192dbcefaaa52ed81be88525a54a445f4b4fe2fffcae7fe40ebb58bd06bfd"}, - {file = "pyzmq-24.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:86de64468cad9c6d269f32a6390e210ca5ada568c7a55de8e681ca3b897bb340"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:838812c65ed5f7c2bd11f7b098d2e5d01685a3f6d1f82849423b570bae698c00"}, - {file = "pyzmq-24.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dfb992dbcd88d8254471760879d48fb20836d91baa90f181c957122f9592b3dc"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7abddb2bd5489d30ffeb4b93a428130886c171b4d355ccd226e83254fcb6b9ef"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94010bd61bc168c103a5b3b0f56ed3b616688192db7cd5b1d626e49f28ff51b3"}, - {file = "pyzmq-24.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8242543c522d84d033fe79be04cb559b80d7eb98ad81b137ff7e0a9020f00ace"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:ccb94342d13e3bf3ffa6e62f95b5e3f0bc6bfa94558cb37f4b3d09d6feb536ff"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:6640f83df0ae4ae1104d4c62b77e9ef39be85ebe53f636388707d532bee2b7b8"}, - {file = "pyzmq-24.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a180dbd5ea5d47c2d3b716d5c19cc3fb162d1c8db93b21a1295d69585bfddac1"}, - {file = "pyzmq-24.0.1-cp311-cp311-win32.whl", hash = "sha256:624321120f7e60336be8ec74a172ae7fba5c3ed5bf787cc85f7e9986c9e0ebc2"}, - {file = "pyzmq-24.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:1724117bae69e091309ffb8255412c4651d3f6355560d9af312d547f6c5bc8b8"}, - {file = "pyzmq-24.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:15975747462ec49fdc863af906bab87c43b2491403ab37a6d88410635786b0f4"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b947e264f0e77d30dcbccbb00f49f900b204b922eb0c3a9f0afd61aaa1cedc3d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ec91f1bad66f3ee8c6deb65fa1fe418e8ad803efedd69c35f3b5502f43bd1dc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:db03704b3506455d86ec72c3358a779e9b1d07b61220dfb43702b7b668edcd0d"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:e7e66b4e403c2836ac74f26c4b65d8ac0ca1eef41dfcac2d013b7482befaad83"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:7a23ccc1083c260fa9685c93e3b170baba45aeed4b524deb3f426b0c40c11639"}, - {file = "pyzmq-24.0.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:fa0ae3275ef706c0309556061185dd0e4c4cd3b7d6f67ae617e4e677c7a41e2e"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win32.whl", hash = "sha256:f01de4ec083daebf210531e2cca3bdb1608dbbbe00a9723e261d92087a1f6ebc"}, - {file = "pyzmq-24.0.1-cp36-cp36m-win_amd64.whl", hash = "sha256:de4217b9eb8b541cf2b7fde4401ce9d9a411cc0af85d410f9d6f4333f43640be"}, - {file = "pyzmq-24.0.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:78068e8678ca023594e4a0ab558905c1033b2d3e806a0ad9e3094e231e115a33"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77c2713faf25a953c69cf0f723d1b7dd83827b0834e6c41e3fb3bbc6765914a1"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8bb4af15f305056e95ca1bd086239b9ebc6ad55e9f49076d27d80027f72752f6"}, - {file = "pyzmq-24.0.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0f14cffd32e9c4c73da66db97853a6aeceaac34acdc0fae9e5bbc9370281864c"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:0108358dab8c6b27ff6b985c2af4b12665c1bc659648284153ee501000f5c107"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d66689e840e75221b0b290b0befa86f059fb35e1ee6443bce51516d4d61b6b99"}, - {file = "pyzmq-24.0.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae08ac90aa8fa14caafc7a6251bd218bf6dac518b7bff09caaa5e781119ba3f2"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win32.whl", hash = "sha256:8421aa8c9b45ea608c205db9e1c0c855c7e54d0e9c2c2f337ce024f6843cab3b"}, - {file = "pyzmq-24.0.1-cp37-cp37m-win_amd64.whl", hash = "sha256:54d8b9c5e288362ec8595c1d98666d36f2070fd0c2f76e2b3c60fbad9bd76227"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:acbd0a6d61cc954b9f535daaa9ec26b0a60a0d4353c5f7c1438ebc88a359a47e"}, - {file = "pyzmq-24.0.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:47b11a729d61a47df56346283a4a800fa379ae6a85870d5a2e1e4956c828eedc"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:abe6eb10122f0d746a0d510c2039ae8edb27bc9af29f6d1b05a66cc2401353ff"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:07bec1a1b22dacf718f2c0e71b49600bb6a31a88f06527dfd0b5aababe3fa3f7"}, - {file = "pyzmq-24.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d945a85b70da97ae86113faf9f1b9294efe66bd4a5d6f82f2676d567338b66"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1b7928bb7580736ffac5baf814097be342ba08d3cfdfb48e52773ec959572287"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:b946da90dc2799bcafa682692c1d2139b2a96ec3c24fa9fc6f5b0da782675330"}, - {file = "pyzmq-24.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c8840f064b1fb377cffd3efeaad2b190c14d4c8da02316dae07571252d20b31f"}, - {file = "pyzmq-24.0.1-cp38-cp38-win32.whl", hash = "sha256:4854f9edc5208f63f0841c0c667260ae8d6846cfa233c479e29fdc85d42ebd58"}, - {file = "pyzmq-24.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:42d4f97b9795a7aafa152a36fe2ad44549b83a743fd3e77011136def512e6c2a"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:52afb0ac962963fff30cf1be775bc51ae083ef4c1e354266ab20e5382057dd62"}, - {file = "pyzmq-24.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8bad8210ad4df68c44ff3685cca3cda448ee46e20d13edcff8909eba6ec01ca4"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dabf1a05318d95b1537fd61d9330ef4313ea1216eea128a17615038859da3b3b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5bd3d7dfd9cd058eb68d9a905dec854f86649f64d4ddf21f3ec289341386c44b"}, - {file = "pyzmq-24.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8012bce6836d3f20a6c9599f81dfa945f433dab4dbd0c4917a6fb1f998ab33d"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c31805d2c8ade9b11feca4674eee2b9cce1fec3e8ddb7bbdd961a09dc76a80ea"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3104f4b084ad5d9c0cb87445cc8cfd96bba710bef4a66c2674910127044df209"}, - {file = "pyzmq-24.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df0841f94928f8af9c7a1f0aaaffba1fb74607af023a152f59379c01c53aee58"}, - {file = "pyzmq-24.0.1-cp39-cp39-win32.whl", hash = "sha256:a435ef8a3bd95c8a2d316d6e0ff70d0db524f6037411652803e118871d703333"}, - {file = "pyzmq-24.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:2032d9cb994ce3b4cba2b8dfae08c7e25bc14ba484c770d4d3be33c27de8c45b"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb5635c851eef3a7a54becde6da99485eecf7d068bd885ac8e6d173c4ecd68b0"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:83ea1a398f192957cb986d9206ce229efe0ee75e3c6635baff53ddf39bd718d5"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:941fab0073f0a54dc33d1a0460cb04e0d85893cb0c5e1476c785000f8b359409"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e8f482c44ccb5884bf3f638f29bea0f8dc68c97e38b2061769c4cb697f6140d"}, - {file = "pyzmq-24.0.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:613010b5d17906c4367609e6f52e9a2595e35d5cc27d36ff3f1b6fa6e954d944"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:65c94410b5a8355cfcf12fd600a313efee46ce96a09e911ea92cf2acf6708804"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:20e7eeb1166087db636c06cae04a1ef59298627f56fb17da10528ab52a14c87f"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a2712aee7b3834ace51738c15d9ee152cc5a98dc7d57dd93300461b792ab7b43"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a7c280185c4da99e0cc06c63bdf91f5b0b71deb70d8717f0ab870a43e376db8"}, - {file = "pyzmq-24.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:858375573c9225cc8e5b49bfac846a77b696b8d5e815711b8d4ba3141e6e8879"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:80093b595921eed1a2cead546a683b9e2ae7f4a4592bb2ab22f70d30174f003a"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f3f3154fde2b1ff3aa7b4f9326347ebc89c8ef425ca1db8f665175e6d3bd42f"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:abb756147314430bee5d10919b8493c0ccb109ddb7f5dfd2fcd7441266a25b75"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44e706bac34e9f50779cb8c39f10b53a4d15aebb97235643d3112ac20bd577b4"}, - {file = "pyzmq-24.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:687700f8371643916a1d2c61f3fdaa630407dd205c38afff936545d7b7466066"}, - {file = "pyzmq-24.0.1.tar.gz", hash = "sha256:216f5d7dbb67166759e59b0479bca82b8acf9bed6015b526b8eb10143fb08e77"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:381469297409c5adf9a0e884c5eb5186ed33137badcbbb0560b86e910a2f1e76"}, + {file = "pyzmq-25.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:955215ed0604dac5b01907424dfa28b40f2b2292d6493445dd34d0dfa72586a8"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:985bbb1316192b98f32e25e7b9958088431d853ac63aca1d2c236f40afb17c83"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:afea96f64efa98df4da6958bae37f1cbea7932c35878b185e5982821bc883369"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76705c9325d72a81155bb6ab48d4312e0032bf045fb0754889133200f7a0d849"}, + {file = "pyzmq-25.1.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:77a41c26205d2353a4c94d02be51d6cbdf63c06fbc1295ea57dad7e2d3381b71"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:12720a53e61c3b99d87262294e2b375c915fea93c31fc2336898c26d7aed34cd"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:57459b68e5cd85b0be8184382cefd91959cafe79ae019e6b1ae6e2ba8a12cda7"}, + {file = "pyzmq-25.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:292fe3fc5ad4a75bc8df0dfaee7d0babe8b1f4ceb596437213821f761b4589f9"}, + {file = "pyzmq-25.1.1-cp310-cp310-win32.whl", hash = "sha256:35b5ab8c28978fbbb86ea54958cd89f5176ce747c1fb3d87356cf698048a7790"}, + {file = "pyzmq-25.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:11baebdd5fc5b475d484195e49bae2dc64b94a5208f7c89954e9e354fc609d8f"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:d20a0ddb3e989e8807d83225a27e5c2eb2260eaa851532086e9e0fa0d5287d83"}, + {file = "pyzmq-25.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e1c1be77bc5fb77d923850f82e55a928f8638f64a61f00ff18a67c7404faf008"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d89528b4943d27029a2818f847c10c2cecc79fa9590f3cb1860459a5be7933eb"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:90f26dc6d5f241ba358bef79be9ce06de58d477ca8485e3291675436d3827cf8"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c2b92812bd214018e50b6380ea3ac0c8bb01ac07fcc14c5f86a5bb25e74026e9"}, + {file = "pyzmq-25.1.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f957ce63d13c28730f7fd6b72333814221c84ca2421298f66e5143f81c9f91f"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:047a640f5c9c6ade7b1cc6680a0e28c9dd5a0825135acbd3569cc96ea00b2505"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:7f7e58effd14b641c5e4dec8c7dab02fb67a13df90329e61c869b9cc607ef752"}, + {file = "pyzmq-25.1.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c2910967e6ab16bf6fbeb1f771c89a7050947221ae12a5b0b60f3bca2ee19bca"}, + {file = "pyzmq-25.1.1-cp311-cp311-win32.whl", hash = "sha256:76c1c8efb3ca3a1818b837aea423ff8a07bbf7aafe9f2f6582b61a0458b1a329"}, + {file = "pyzmq-25.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:44e58a0554b21fc662f2712814a746635ed668d0fbc98b7cb9d74cb798d202e6"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:e1ffa1c924e8c72778b9ccd386a7067cddf626884fd8277f503c48bb5f51c762"}, + {file = "pyzmq-25.1.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1af379b33ef33757224da93e9da62e6471cf4a66d10078cf32bae8127d3d0d4a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cff084c6933680d1f8b2f3b4ff5bbb88538a4aac00d199ac13f49d0698727ecb"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e2400a94f7dd9cb20cd012951a0cbf8249e3d554c63a9c0cdfd5cbb6c01d2dec"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2d81f1ddae3858b8299d1da72dd7d19dd36aab654c19671aa8a7e7fb02f6638a"}, + {file = "pyzmq-25.1.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:255ca2b219f9e5a3a9ef3081512e1358bd4760ce77828e1028b818ff5610b87b"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a882ac0a351288dd18ecae3326b8a49d10c61a68b01419f3a0b9a306190baf69"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:724c292bb26365659fc434e9567b3f1adbdb5e8d640c936ed901f49e03e5d32e"}, + {file = "pyzmq-25.1.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ca1ed0bb2d850aa8471387882247c68f1e62a4af0ce9c8a1dbe0d2bf69e41fb"}, + {file = "pyzmq-25.1.1-cp312-cp312-win32.whl", hash = "sha256:b3451108ab861040754fa5208bca4a5496c65875710f76789a9ad27c801a0075"}, + {file = "pyzmq-25.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:eadbefd5e92ef8a345f0525b5cfd01cf4e4cc651a2cffb8f23c0dd184975d787"}, + {file = "pyzmq-25.1.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:db0b2af416ba735c6304c47f75d348f498b92952f5e3e8bff449336d2728795d"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c7c133e93b405eb0d36fa430c94185bdd13c36204a8635470cccc200723c13bb"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:273bc3959bcbff3f48606b28229b4721716598d76b5aaea2b4a9d0ab454ec062"}, + {file = "pyzmq-25.1.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:cbc8df5c6a88ba5ae385d8930da02201165408dde8d8322072e3e5ddd4f68e22"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:18d43df3f2302d836f2a56f17e5663e398416e9dd74b205b179065e61f1a6edf"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:73461eed88a88c866656e08f89299720a38cb4e9d34ae6bf5df6f71102570f2e"}, + {file = "pyzmq-25.1.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:34c850ce7976d19ebe7b9d4b9bb8c9dfc7aac336c0958e2651b88cbd46682123"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win32.whl", hash = "sha256:d2045d6d9439a0078f2a34b57c7b18c4a6aef0bee37f22e4ec9f32456c852c71"}, + {file = "pyzmq-25.1.1-cp36-cp36m-win_amd64.whl", hash = "sha256:458dea649f2f02a0b244ae6aef8dc29325a2810aa26b07af8374dc2a9faf57e3"}, + {file = "pyzmq-25.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7cff25c5b315e63b07a36f0c2bab32c58eafbe57d0dce61b614ef4c76058c115"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1579413ae492b05de5a6174574f8c44c2b9b122a42015c5292afa4be2507f28"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d0a409d3b28607cc427aa5c30a6f1e4452cc44e311f843e05edb28ab5e36da0"}, + {file = "pyzmq-25.1.1-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:21eb4e609a154a57c520e3d5bfa0d97e49b6872ea057b7c85257b11e78068222"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:034239843541ef7a1aee0c7b2cb7f6aafffb005ede965ae9cbd49d5ff4ff73cf"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:f8115e303280ba09f3898194791a153862cbf9eef722ad8f7f741987ee2a97c7"}, + {file = "pyzmq-25.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:1a5d26fe8f32f137e784f768143728438877d69a586ddeaad898558dc971a5ae"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win32.whl", hash = "sha256:f32260e556a983bc5c7ed588d04c942c9a8f9c2e99213fec11a031e316874c7e"}, + {file = "pyzmq-25.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:abf34e43c531bbb510ae7e8f5b2b1f2a8ab93219510e2b287a944432fad135f3"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:87e34f31ca8f168c56d6fbf99692cc8d3b445abb5bfd08c229ae992d7547a92a"}, + {file = "pyzmq-25.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c9c6c9b2c2f80747a98f34ef491c4d7b1a8d4853937bb1492774992a120f475d"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:5619f3f5a4db5dbb572b095ea3cb5cc035335159d9da950830c9c4db2fbb6995"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5a34d2395073ef862b4032343cf0c32a712f3ab49d7ec4f42c9661e0294d106f"}, + {file = "pyzmq-25.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25f0e6b78220aba09815cd1f3a32b9c7cb3e02cb846d1cfc526b6595f6046618"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:3669cf8ee3520c2f13b2e0351c41fea919852b220988d2049249db10046a7afb"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2d163a18819277e49911f7461567bda923461c50b19d169a062536fffe7cd9d2"}, + {file = "pyzmq-25.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:df27ffddff4190667d40de7beba4a950b5ce78fe28a7dcc41d6f8a700a80a3c0"}, + {file = "pyzmq-25.1.1-cp38-cp38-win32.whl", hash = "sha256:a382372898a07479bd34bda781008e4a954ed8750f17891e794521c3e21c2e1c"}, + {file = "pyzmq-25.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:52533489f28d62eb1258a965f2aba28a82aa747202c8fa5a1c7a43b5db0e85c1"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:03b3f49b57264909aacd0741892f2aecf2f51fb053e7d8ac6767f6c700832f45"}, + {file = "pyzmq-25.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:330f9e188d0d89080cde66dc7470f57d1926ff2fb5576227f14d5be7ab30b9fa"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:2ca57a5be0389f2a65e6d3bb2962a971688cbdd30b4c0bd188c99e39c234f414"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d457aed310f2670f59cc5b57dcfced452aeeed77f9da2b9763616bd57e4dbaae"}, + {file = "pyzmq-25.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c56d748ea50215abef7030c72b60dd723ed5b5c7e65e7bc2504e77843631c1a6"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f03d3f0d01cb5a018debeb412441996a517b11c5c17ab2001aa0597c6d6882c"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:820c4a08195a681252f46926de10e29b6bbf3e17b30037bd4250d72dd3ddaab8"}, + {file = "pyzmq-25.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:17ef5f01d25b67ca8f98120d5fa1d21efe9611604e8eb03a5147360f517dd1e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win32.whl", hash = "sha256:04ccbed567171579ec2cebb9c8a3e30801723c575601f9a990ab25bcac6b51e2"}, + {file = "pyzmq-25.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:e61f091c3ba0c3578411ef505992d356a812fb200643eab27f4f70eed34a29ef"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ade6d25bb29c4555d718ac6d1443a7386595528c33d6b133b258f65f963bb0f6"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0c95ddd4f6e9fca4e9e3afaa4f9df8552f0ba5d1004e89ef0a68e1f1f9807c7"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:48e466162a24daf86f6b5ca72444d2bf39a5e58da5f96370078be67c67adc978"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abc719161780932c4e11aaebb203be3d6acc6b38d2f26c0f523b5b59d2fc1996"}, + {file = "pyzmq-25.1.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:1ccf825981640b8c34ae54231b7ed00271822ea1c6d8ba1090ebd4943759abf5"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c2f20ce161ebdb0091a10c9ca0372e023ce24980d0e1f810f519da6f79c60800"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:deee9ca4727f53464daf089536e68b13e6104e84a37820a88b0a057b97bba2d2"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:aa8d6cdc8b8aa19ceb319aaa2b660cdaccc533ec477eeb1309e2a291eaacc43a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:019e59ef5c5256a2c7378f2fb8560fc2a9ff1d315755204295b2eab96b254d0a"}, + {file = "pyzmq-25.1.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:b9af3757495c1ee3b5c4e945c1df7be95562277c6e5bccc20a39aec50f826cd0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:548d6482dc8aadbe7e79d1b5806585c8120bafa1ef841167bc9090522b610fa6"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:057e824b2aae50accc0f9a0570998adc021b372478a921506fddd6c02e60308e"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:2243700cc5548cff20963f0ca92d3e5e436394375ab8a354bbea2b12911b20b0"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79986f3b4af059777111409ee517da24a529bdbd46da578b33f25580adcff728"}, + {file = "pyzmq-25.1.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:11d58723d44d6ed4dd677c5615b2ffb19d5c426636345567d6af82be4dff8a55"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:49d238cf4b69652257db66d0c623cd3e09b5d2e9576b56bc067a396133a00d4a"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fedbdc753827cf014c01dbbee9c3be17e5a208dcd1bf8641ce2cd29580d1f0d4"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bc16ac425cc927d0a57d242589f87ee093884ea4804c05a13834d07c20db203c"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11c1d2aed9079c6b0c9550a7257a836b4a637feb334904610f06d70eb44c56d2"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e8a701123029cc240cea61dd2d16ad57cab4691804143ce80ecd9286b464d180"}, + {file = "pyzmq-25.1.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:61706a6b6c24bdece85ff177fec393545a3191eeda35b07aaa1458a027ad1304"}, + {file = "pyzmq-25.1.1.tar.gz", hash = "sha256:259c22485b71abacdfa8bf79720cd7bcf4b9d128b30ea554f01ae71fdbfdaa23"}, ] [package.dependencies] cffi = {version = "*", markers = "implementation_name == \"pypy\""} -py = {version = "*", markers = "implementation_name == \"pypy\""} [[package]] name = "qtconsole" @@ -7210,7 +7217,7 @@ files = [ ] [package.dependencies] -greenlet = {version = "!=0.4.17", optional = true, markers = "python_version >= \"3\" and (platform_machine == \"aarch64\" or platform_machine == \"ppc64le\" or platform_machine == \"x86_64\" or platform_machine == \"amd64\" or platform_machine == \"AMD64\" or platform_machine == \"win32\" or platform_machine == \"WIN32\" or extra == \"asyncio\")"} +greenlet = {version = "!=0.4.17", optional = true, markers = "python_version >= \"3\" and (platform_machine == \"win32\" or platform_machine == \"WIN32\" or platform_machine == \"AMD64\" or platform_machine == \"amd64\" or platform_machine == \"x86_64\" or platform_machine == \"ppc64le\" or platform_machine == \"aarch64\" or extra == \"asyncio\")"} [package.extras] aiomysql = ["aiomysql", "greenlet (!=0.4.17)"] @@ -7795,13 +7802,13 @@ test = ["argcomplete (>=2.0)", "pre-commit", "pytest", "pytest-mock"] [[package]] name = "transformers" -version = "4.33.0" +version = "4.33.1" description = "State-of-the-art Machine Learning for JAX, PyTorch and TensorFlow" optional = false python-versions = ">=3.8.0" files = [ - {file = "transformers-4.33.0-py3-none-any.whl", hash = "sha256:c3b7f818e90c4361bb50ad541ab94e28329aa0d97a1c45ffafa5a8b693bc73ec"}, - {file = "transformers-4.33.0.tar.gz", hash = "sha256:9e894dc62cfb02d92c1201e57219765b53be6486a306db8b60414e93fc2e39a5"}, + {file = "transformers-4.33.1-py3-none-any.whl", hash = "sha256:0630c2d26448d7c6cb78435e6c43910c89e99387badea6be1f565ffa3f093f1d"}, + {file = "transformers-4.33.1.tar.gz", hash = "sha256:744265e9f0724d22c229938f28376af54abce730ef647f35bd1685abf49912a4"}, ] [package.dependencies] @@ -8626,4 +8633,4 @@ report = ["category-encoders", "kaleido", "pillow", "plotly", "pybtex", "pydanti [metadata] lock-version = "2.0" python-versions = ">=3.9, <3.12" -content-hash = "8a67fe016988f44a8fa9cca5e3ca3f0ffdbf9f734cea1c6671dcc654e5804612" +content-hash = "d007665f76cbea0de1fe458ba875062942018187fc98600d43213e2d83ebb8ec" diff --git a/pyproject.toml b/pyproject.toml index 2b918c40e..43ca44009 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ torch = { version = "^1.11.0", optional = true } torchxrayvision = { version = "^1.2.0", optional = true } xgboost = { version = "^1.5.2", optional = true } alibi = { version = "^0.9.4", optional = true, extras = ["shap"] } -alibi-detect = { version = "^0.11.4", optional = true, extras = ["torch"] } +alibi-detect = { version = "^0.11.0", optional = true, extras = ["torch"] } llvmlite = { version = "^0.40.0", optional = true } pydantic = { version = "^1.10.11", optional = true } spdx-tools = { version = "^0.8.1", optional = true } @@ -52,7 +52,7 @@ torch = "^1.11.0" torchxrayvision = "^1.2.0" xgboost = "^1.5.2" alibi = { version = "^0.9.4", extras = ["shap"] } -alibi-detect = { version = "^0.11.4", extras = ["torch"] } +alibi-detect = { version = "^0.11.0", extras = ["torch"] } llvmlite = "^0.40.0" [tool.poetry.group.report.dependencies] From 67f33d558211246893069ad91b87259c35ae5e0c Mon Sep 17 00:00:00 2001 From: Amrit K Date: Wed, 6 Sep 2023 17:11:15 -0400 Subject: [PATCH 07/10] Fixes, add codecov.yml file --- .github/workflows/docs_build.yml | 11 ++++++++++ .github/workflows/integration_tests.yml | 1 - codecov.yml | 20 ++++++++++++++++++ cyclops/query/ops.py | 28 ++++++++++++++++++------- tests/cyclops/query/test_ops.py | 6 ++++++ 5 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 codecov.yml diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index 33c581cf6..75623b791 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -38,6 +38,17 @@ jobs: # pandoc README.md -f markdown -t rst -s -o docs/source/intro.rst cd docs && rm -rf source/reference/api/_autosummary && make html cd .. && coverage run -m pytest -m "not integration_test" && coverage xml && coverage report -m + - name: Upload coverage to Codecov + uses: Wandalen/wretry.action@v1.0.36 + with: + action: codecov/codecov-action@v3.1.3 + with: | + token: ${{ secrets.CODECOV_TOKEN }} + file: ./coverage.xml + name: codecov-umbrella + fail_ci_if_error: true + attempt_limit: 5 + attempt_delay: 30000 - uses: actions/setup-node@v3 with: node-version: 18 diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index 3fd676297..07d4b3c22 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -51,7 +51,6 @@ jobs: poetry install --without dev,docs,interface coverage run -m pytest -m integration_test && coverage xml && coverage report -m - name: Upload coverage to Codecov - if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} uses: Wandalen/wretry.action@v1.0.36 with: action: codecov/codecov-action@v3.1.3 diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 000000000..ea5647800 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,20 @@ +codecov: + require_ci_to_pass: true +comment: + behavior: default + layout: reach,diff,flags,tree,reach + show_carryforward_flags: false +coverage: + precision: 2 + range: + - 55.0 + - 100.0 + round: down + status: + changes: false + default_rules: + flag_coverage_not_uploaded_behavior: include + patch: true + project: true +github_checks: + annotations: true diff --git a/cyclops/query/ops.py b/cyclops/query/ops.py index 291d87ccf..debd30cac 100644 --- a/cyclops/query/ops.py +++ b/cyclops/query/ops.py @@ -2764,12 +2764,17 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Processed table. """ + ops = [] for cond_op in self.cond_ops: if isinstance(cond_op, list): - cond = or_(*[op(table, return_cond=True) for op in cond_op]) + if len(self.cond_ops) != 1: + raise ValueError("Cannot combine multiple lists of conditions.") + ops = [op(table, return_cond=True) for op in cond_op] if isinstance(cond_op, QueryOp): - return cond_op(table, return_cond=return_cond) - cond = or_(*[op(table, return_cond=True) for op in self.cond_ops]) # type: ignore + if len(self.cond_ops) == 1: + return cond_op(table, return_cond=return_cond) + ops.append(cond_op(table, return_cond=True)) + cond = or_(*ops) if return_cond: return cond @@ -2787,10 +2792,11 @@ class And(QueryOp): Examples -------- >>> And([ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])]) + >>> And(ConditionLike("lab_name", "HbA1c"), ConditionIn("name", ["John", "Jane"])) """ - def __init__(self, cond_ops: typing.Union[QueryOp, typing.List[QueryOp]]): + def __init__(self, *cond_ops: typing.Union[QueryOp, typing.List[QueryOp]]): super().__init__() self.cond_ops = cond_ops @@ -2810,9 +2816,17 @@ def __call__(self, table: TableTypes, return_cond: bool = False) -> Subquery: Processed table. """ - if isinstance(self.cond_ops, QueryOp): - return self.cond_ops(table, return_cond=return_cond) - cond = and_(*[op(table, return_cond=True) for op in self.cond_ops]) + ops = [] + for cond_op in self.cond_ops: + if isinstance(cond_op, list): + if len(self.cond_ops) != 1: + raise ValueError("Cannot combine multiple lists of conditions.") + ops = [op(table, return_cond=True) for op in cond_op] + if isinstance(cond_op, QueryOp): + if len(self.cond_ops) == 1: + return cond_op(table, return_cond=return_cond) + ops.append(cond_op(table, return_cond=True)) + cond = and_(*ops) if return_cond: return cond diff --git a/tests/cyclops/query/test_ops.py b/tests/cyclops/query/test_ops.py index 01e72ea2b..59ac0382b 100644 --- a/tests/cyclops/query/test_ops.py +++ b/tests/cyclops/query/test_ops.py @@ -565,6 +565,12 @@ def test_and(visits_input): )(visits_input) visits = QUERIER.get_interface(visits).run() assert len(visits) == 4057 + visits = And( + ConditionEquals("visit_concept_name", "Outpatient Visit"), + ConditionLike("visit_concept_name", "%Emergency%", not_=True), + )(visits_input) + visits = QUERIER.get_interface(visits).run() + assert len(visits) == 4057 @pytest.mark.integration_test() From aeba889beffea1188cb79c2bfd21c4ed952cade5 Mon Sep 17 00:00:00 2001 From: Amrit K Date: Thu, 7 Sep 2023 11:48:59 -0400 Subject: [PATCH 08/10] Update codecov config --- codecov.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/codecov.yml b/codecov.yml index ea5647800..c0553d7ce 100644 --- a/codecov.yml +++ b/codecov.yml @@ -4,6 +4,7 @@ comment: behavior: default layout: reach,diff,flags,tree,reach show_carryforward_flags: false + require_changes: true coverage: precision: 2 range: @@ -11,9 +12,9 @@ coverage: - 100.0 round: down status: - changes: false + changes: true default_rules: - flag_coverage_not_uploaded_behavior: include + flag_coverage_not_uploaded_behavior: exclude patch: true project: true github_checks: From 11f16972e184d556079085a7cebe1d1381cdef88 Mon Sep 17 00:00:00 2001 From: Amrit K Date: Thu, 7 Sep 2023 11:53:06 -0400 Subject: [PATCH 09/10] Update codecov config, after_n_builds --- codecov.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/codecov.yml b/codecov.yml index c0553d7ce..cfb6d78ea 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,4 +1,5 @@ codecov: + after_n_builds: 2 require_ci_to_pass: true comment: behavior: default From acab90a73bcec830195449dd3eb38136a5992213 Mon Sep 17 00:00:00 2001 From: Amrit K Date: Thu, 7 Sep 2023 12:03:58 -0400 Subject: [PATCH 10/10] Update codecov config, flag_coverage_not_uploaded_behavior --- codecov.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codecov.yml b/codecov.yml index cfb6d78ea..7c862c96a 100644 --- a/codecov.yml +++ b/codecov.yml @@ -15,7 +15,7 @@ coverage: status: changes: true default_rules: - flag_coverage_not_uploaded_behavior: exclude + flag_coverage_not_uploaded_behavior: include patch: true project: true github_checks: