From f7ff796953972264bc6c6dbeeef5f36fcdf9dcf1 Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Mon, 31 Mar 2025 17:00:34 +0800 Subject: [PATCH 1/7] FEAT add jac for narx --- .github/workflows/ci.yml | 2 +- examples/plot_narx.py | 9 +- examples/plot_narx_msa.py | 6 +- fastcan/narx.py | 519 ++++++++++++++++++++++++++------------ pixi.lock | 371 ++++++++++++++++----------- tests/test_narx.py | 102 ++++++-- tests/test_narx_jac.py | 209 +++++++++++++++ 7 files changed, 881 insertions(+), 337 deletions(-) create mode 100644 tests/test_narx_jac.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ac942ee..2f6fef5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Build wheels - uses: pypa/cibuildwheel@v2.23.1 + uses: pypa/cibuildwheel@v2.23.2 env: CIBW_BUILD: cp3*-* CIBW_SKIP: pp* *i686* *musllinux* *-macosx_universal2 *-manylinux_ppc64le *-manylinux_s390x diff --git a/examples/plot_narx.py b/examples/plot_narx.py index 971abbb..591f99c 100644 --- a/examples/plot_narx.py +++ b/examples/plot_narx.py @@ -125,11 +125,14 @@ # In the printed NARX model, it is found that :class:`FastCan` selects the correct # terms and the coefficients are close to the true values. -from fastcan.narx import NARX, print_narx +from fastcan.narx import NARX, _pt2fd, print_narx + +# Convert poly_ids and time_shift_ids to feat_ids and delay_ids +feat_ids, delay_ids = _pt2fd(selected_poly_ids, time_shift_ids) narx_model = NARX( - time_shift_ids=time_shift_ids, - poly_ids=selected_poly_ids, + feat_ids=feat_ids, + delay_ids=delay_ids, ) narx_model.fit(X, y) diff --git a/examples/plot_narx_msa.py b/examples/plot_narx_msa.py index c82e80d..be907ff 100644 --- a/examples/plot_narx_msa.py +++ b/examples/plot_narx_msa.py @@ -15,7 +15,7 @@ # Nonlinear system # ---------------- # -# `Duffing equation ` is used to +# `Duffing equation `_ is used to # generate simulated data. The mathematical model is given by # # .. math:: @@ -130,7 +130,7 @@ def plot_prediction(ax, t, y_true, y_pred, title): y_train_osa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) y_test_osa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) -narx_model.fit(u_train, y_train, coef_init="one_step_ahead", method="Nelder-Mead") +narx_model.fit(u_train, y_train, coef_init="one_step_ahead") y_train_msa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) y_test_msa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) @@ -169,7 +169,7 @@ def plot_prediction(ax, t, y_true, y_pred, title): y_train_osa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) y_test_osa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) -narx_model.fit(u_all, y_all, coef_init="one_step_ahead", method="Nelder-Mead") +narx_model.fit(u_all, y_all, coef_init="one_step_ahead") y_train_msa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) y_test_msa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) diff --git a/fastcan/narx.py b/fastcan/narx.py index d0dbdf8..e8ea254 100644 --- a/fastcan/narx.py +++ b/fastcan/narx.py @@ -12,7 +12,7 @@ from numbers import Integral import numpy as np -from scipy.optimize import minimize +from scipy.optimize import least_squares from scipy.stats import rankdata from sklearn.base import BaseEstimator, MultiOutputMixin, RegressorMixin from sklearn.linear_model import LinearRegression @@ -272,33 +272,74 @@ def make_poly_ids( return np.delete(ids, const_id, 0) # remove the constant featrue -def _mask_missing_value(*arr): +def _mask_missing_value(*arr, return_mask=False): """Remove missing value for all arrays.""" mask_nomissing = np.all(np.isfinite(np.c_[arr]), axis=1) + if return_mask: + return mask_nomissing return tuple([x[mask_nomissing] for x in arr]) +def _fd2pt(feat_ids, delay_ids): + """ + Convert feat_ids and delay_ids to poly_ids and time_shift_ids + """ + featd = np.c_[feat_ids.flatten(), delay_ids.flatten()] + # Ensure featd has at least one [-1, -1] + time_shift_ids = np.unique(np.r_[[[-1, -1]], featd], axis=0) + poly_ids = np.array( + [np.where((time_shift_ids == row).all(axis=1))[0][0] for row in featd] + ).reshape(feat_ids.shape) + time_shift_ids = time_shift_ids[time_shift_ids[:, 0] != -1] + return poly_ids, time_shift_ids + + +def _pt2fd(poly_ids, time_shift_ids): + """ + Convert poly_ids and time_shift_ids to feat_ids and delay_ids + """ + feat_ids = np.full_like(poly_ids, -1, dtype=int) + delay_ids = np.full_like(poly_ids, -1, dtype=int) + for i, poly_id in enumerate(poly_ids): + for j, variable_id in enumerate(poly_id): + if variable_id != 0: + feat_ids[i, j] = time_shift_ids[variable_id - 1, 0] + delay_ids[i, j] = time_shift_ids[variable_id - 1, 1] + feat_ids = feat_ids + delay_ids = delay_ids + return feat_ids, delay_ids + + class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): """The Nonlinear Autoregressive eXogenous (NARX) model class. For example, a (polynomial) NARX model is like y(t) = y(t-1)*u(t-1) + u(t-1)^2 + u(t-2) + 1.5 where y(t) is the system output at time t, u(t) is the system input at time t, - u(t-1) is called a (time shift) variable, and - u(t-1)^2 is called a (polynomial) term. + u and y is called features, + u(t-1) is called a (time shift) variable, + u(t-1)^2 is called a (polynomial) term, and + 1.5 is called an intercept. Parameters ---------- - time_shift_ids : array-like of shape (n_variables, 2), default=None - The unique id numbers of time shift variables, which are - (feature_idx, delay). The ids are used to generate time - shift variables, such as u(k-1), and y(k-2). - - poly_ids : array-like of shape (n_polys, degree), default=None - The unique id numbers of polynomial terms, excluding the intercept. - Here n_terms = n_polys + n_outputs (intercept). - The ids are used to generate polynomial terms, such as u(k-1)^2, - and u(k-1)*y(k-2). + feat_ids : array-like of shape (n_terms, degree), default=None + The unique id numbers of features to form polynomial terms. + The id -1 stands for the constant 1. + The id 0 to `n_features_in_`-1 are the input features. + The id `n_features_in_` to `n_features_in_ + n_outputs_`-1 are + the output features. + E.g., for a 2-input 1-output system, the feat_ids [[-1, 0], [-1, 1], [0, 2]] + may represent the polynomial terms 1*u(k-1, 0), 1*u(k, 1), + and u(k-1, 0)*y(k-2, 0). + + delay_ids : array-like of shape (n_terms, degree), default=None + The delays of each feature in polynomial terms. + The id -1 stands for empty. + The id 0 stands for 0 delay. + The positive integer id k stands for k-th delay. + E.g. for the polynomial terms 1*u(k-1, 0), 1*u(k, 1), + and u(k-1, 0)*y(k-2, 0), the delay_ids [[-1, 1], [-1, 0], [1, 2]]. output_ids : array-like of shape (n_polys,), default=None The id numbers indicate which output the polynomial term belongs to. @@ -326,12 +367,13 @@ class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): max_delay_ : int The maximum time delay of the time shift variables. - time_shift_ids_ : array-like of shape (n_variables, 2) - The unique id numbers of time shift variables, which are - (feature_idx, delay). + feat_ids_ : array-like of shape (n_terms, degree) + The unique id numbers of features to form polynomial terms. + The id -1 stands for the constant 1. - poly_ids_ : array-like of shape (n_polys, degree) - The unique id numbers of polynomial terms, excluding the intercept. + delay_ids_ : array-like of shape (n_terms, degree) + The delays of each feature in polynomial terms. + The id -1 stands for empty. References ---------- @@ -353,39 +395,38 @@ class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): ... y[i] = 0.5*y[i-1] + 0.7*u[i-2] + 1.5*u[i-1]*u[i-3] + 1 >>> y = y[max_delay:]+e >>> X = u[max_delay:].reshape(-1, 1) - >>> time_shift_ids = [[0, 1], # u(k-1) - ... [0, 2], # u(k-2) - ... [0, 3], # u(k-3) - ... [1, 1]] # y(k-1) - >>> poly_ids = [[0, 2], # 1*u(k-1) - ... [0, 4], # 1*y(k-1) - ... [1, 3]] # u(k-1)*u(k-3) - >>> narx = NARX(time_shift_ids=time_shift_ids, - ... poly_ids=poly_ids).fit(X, y, coef_init="one_step_ahead") + >>> feat_ids = [[-1, 1], # 1*y + ... [-1, 0], # 1*u + ... [0, 0]] # u^2 + >>> delay_ids = [[-1, 1], # 1*y(k-1) + ... [-1, 2], # 1*u(k-2) + ... [1, 3]] # u(k-1)*u(k-3) + >>> narx = NARX(feat_ids=feat_ids, + ... delay_ids=delay_ids).fit(X, y, coef_init="one_step_ahead") >>> print_narx(narx) - | y idx | Term | Coef | - ========================================= - | 0 | Intercept | 1.008 | - | 0 | X[k-2,0] | 0.701 | - | 0 | y_hat[k-1,0] | 0.498 | - | 0 | X[k-1,0]*X[k-3,0] | 1.496 | + | yid | Term | Coef | + ======================================= + | 0 | Intercept | 1.008 | + | 0 | y_hat[k-1,0] | 0.498 | + | 0 | X[k-2,0] | 0.701 | + | 0 | X[k-1,0]*X[k-3,0] | 1.496 | """ _parameter_constraints: dict = { - "time_shift_ids": [None, "array-like"], - "poly_ids": [None, "array-like"], + "feat_ids": [None, "array-like"], + "delay_ids": [None, "array-like"], "output_ids": [None, "array-like"], } def __init__( self, *, # keyword call only - time_shift_ids=None, - poly_ids=None, + feat_ids=None, + delay_ids=None, output_ids=None, ): - self.time_shift_ids = time_shift_ids - self.poly_ids = poly_ids + self.feat_ids = feat_ids + self.delay_ids = delay_ids self.output_ids = output_ids @validate_params( @@ -446,69 +487,76 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): if y.ndim == 1: y = y.reshape(-1, 1) self.n_outputs_ = y.shape[1] + n_samples, n_features = X.shape - # Validate time_shift_ids - if self.time_shift_ids is None: - self.time_shift_ids_ = make_time_shift_ids( - n_features=X.shape[1], - max_delay=0, - include_zero_delay=True, - ) + # Validate feat_ids + if self.feat_ids is None: + self.feat_ids_ = make_poly_ids(n_features, 1) - 1 else: - self.time_shift_ids_ = check_array( - self.time_shift_ids, + self.feat_ids_ = check_array( + self.feat_ids, ensure_2d=True, - dtype=Integral, + dtype=int, ) - if (self.time_shift_ids_[:, 0].min() < 0) or ( - self.time_shift_ids_[:, 0].max() >= X.shape[1] + self.n_outputs_ + if (self.feat_ids_.min() < -1) or ( + self.feat_ids_.max() > n_features + self.n_outputs_ - 1 ): raise ValueError( - "The element x of the first column of time_shift_ids should " - f"satisfy 0 <= x < {X.shape[1] + self.n_outputs_}." + "The element x of feat_ids should " + f"satisfy -1 <= x <= {n_features + self.n_outputs_ - 1}." ) - if (self.time_shift_ids_[:, 1].min() < 0) or ( - self.time_shift_ids_[:, 1].max() >= X.shape[0] - ): - raise ValueError( - "The element x of the second column of time_shift_ids should " - f"satisfy 0 <= x < {X.shape[0]}." - ) - # Validate poly_ids - if self.poly_ids is None: - self.poly_ids_ = make_poly_ids(X.shape[1], 1) + if self.delay_ids is None: + self.delay_ids_ = np.copy(self.feat_ids_) + self.delay_ids_[(self.feat_ids_ > -1) & (self.feat_ids_ < n_features)] = 0 + self.delay_ids_[(self.feat_ids_ >= n_features)] = 1 else: - self.poly_ids_ = check_array( - self.poly_ids, + self.delay_ids_ = check_array( + self.delay_ids, ensure_2d=True, - dtype=Integral, + dtype=int, ) - if (self.poly_ids_.min() < 0) or ( - self.poly_ids_.max() > self.time_shift_ids_.shape[0] - ): + if self.delay_ids_.shape != self.feat_ids_.shape: + raise ValueError( + "The shape of delay_ids should be equal to " + f"the shape of feat_ids {self.feat_ids_.shape}, " + f"but got {self.delay_ids_.shape}." + ) + if ((self.delay_ids_ == -1) != (self.feat_ids_ == -1)).any(): raise ValueError( - "The element x of poly_ids should " - f"satisfy 0 <= x <= {self.time_shift_ids_.shape[0]}." + "The element x of delay_ids should be -1 " + "if and only if the element x of feat_ids is -1." + ) + if (self.delay_ids_.min() < -1) or (self.delay_ids_.max() >= n_samples): + raise ValueError( + "The element x of delay_ids should " + f"satisfy -1 <= x < {n_samples}." ) + n_terms = self.feat_ids_.shape[0] # Validate output_ids if self.output_ids is None: - self.output_ids_ = np.zeros(self.poly_ids_.shape[0], dtype=int) + self.output_ids_ = np.zeros(n_terms, dtype=int) else: self.output_ids_ = column_or_1d( self.output_ids, - dtype=Integral, + dtype=int, warn=True, ) - if len(self.output_ids_) != self.poly_ids_.shape[0]: + if len(self.output_ids_) != n_terms: raise ValueError( "The length of output_ids should be equal to " - f"the number of polynomial terms, {self.poly_ids_.shape[0]}, " + f"the number of polynomial terms, {n_terms}, " f"but got {len(self.output_ids_)}." ) + if (self.output_ids_.min() < 0) or ( + self.output_ids_.max() >= self.n_outputs_ + ): + raise ValueError( + "The element x of output_ids should " + f"satisfy 0 <= x < {self.n_outputs_}." + ) # Check if self.output_ids_ contains all values from 0 to n_outputs-1 - required_values = set(range(self.n_outputs_)) - if not required_values.issubset(self.output_ids_): + if set(self.output_ids_) != set(range(self.n_outputs_)): warnings.warn( f"output_ids got {self.output_ids_}, which does not " f"contain all values from 0 to {self.n_outputs_ - 1}." @@ -516,20 +564,21 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): UserWarning, ) - self.max_delay_ = self.time_shift_ids_[:, 1].max() - n_terms = self.poly_ids_.shape[0] + self.n_outputs_ + self.max_delay_ = self.delay_ids_.max() + n_coef_intercept = n_terms + self.n_outputs_ if isinstance(coef_init, (type(None), str)): # fit a one-step-ahead NARX model + poly_ids, time_shift_ids = _fd2pt(self.feat_ids_, self.delay_ids_) xy_hstack = np.c_[X, y] osa_narx = LinearRegression() - time_shift_vars = make_time_shift_features(xy_hstack, self.time_shift_ids_) - poly_terms = make_poly_features(time_shift_vars, self.poly_ids_) + time_shift_vars = make_time_shift_features(xy_hstack, time_shift_ids) + poly_terms = make_poly_features(time_shift_vars, poly_ids) # Remove missing values poly_terms_masked, y_masked, sample_weight_masked = _mask_missing_value( poly_terms, y, sample_weight ) - coef = np.zeros(self.poly_ids_.shape[0], dtype=float) + coef = np.zeros(n_terms, dtype=float) intercept = np.zeros(self.n_outputs_, dtype=float) for i in range(self.n_outputs_): output_i_mask = self.output_ids_ == i @@ -554,22 +603,29 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): ensure_2d=False, dtype=np.float64, ) - if coef_init.shape[0] != n_terms: + if coef_init.shape[0] != n_coef_intercept: raise ValueError( "`coef_init` should have the shape of " - f"(`n_terms`,), i.e., ({(n_terms,)}), " - f"but got {coef_init.shape}." + f"({(n_coef_intercept,)}), but got {coef_init.shape}." ) - res = minimize( + cfd_ids = NARX._get_cfd_ids( + self.feat_ids_, self.delay_ids_, self.output_ids_, X.shape[1] + ) + sample_weight_sqrt = np.sqrt(sample_weight).reshape(-1, 1) + res = least_squares( NARX._loss, x0=coef_init, + jac=NARX._grad, args=( - self._expression, + NARX._expression, X, y, - self.max_delay_, - sample_weight, + self.feat_ids_, + self.delay_ids_, + self.output_ids_, + sample_weight_sqrt, + cfd_ids, ), **params, ) @@ -577,34 +633,35 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): self.intercept_ = res.x[-self.n_outputs_ :] return self - def _get_variable(self, time_shift_id, X, y_hat, k): - if time_shift_id[0] < self.n_features_in_: - variable = X[k - time_shift_id[1], time_shift_id[0]] - else: - variable = y_hat[ - k - time_shift_id[1], time_shift_id[0] - self.n_features_in_ - ] - return variable - - def _get_term(self, term_id, X, y_hat, k): + @staticmethod + def _evaluate_term(term_id, delay_id, X, y_hat, k): + n_features_in = X.shape[1] term = 1 - for _, variable_id in enumerate(term_id): - if variable_id != 0: - time_shift_id = self.time_shift_ids_[variable_id - 1] - term *= self._get_variable(time_shift_id, X, y_hat, k) + for i, feat_id in enumerate(term_id): + if feat_id != -1: + if feat_id < n_features_in: + term *= X[k - delay_id[i], feat_id] + else: + term *= y_hat[k - delay_id[i], feat_id - n_features_in] return term - def _expression(self, X, y_hat, coef, intercept, k): + @staticmethod + def _expression(X, y_hat, coef, intercept, feat_ids, delay_ids, output_ids, k): y_pred = np.copy(intercept) - for i, term_id in enumerate(self.poly_ids_): - output_i = self.output_ids_[i] - y_pred[output_i] += coef[i] * self._get_term(term_id, X, y_hat, k) + for i, term_id in enumerate(feat_ids): + output_i = output_ids[i] + y_pred[output_i] += coef[i] * NARX._evaluate_term( + term_id, delay_ids[i], X, y_hat, k + ) return y_pred @staticmethod - def _predict(expression, X, y_ref, coef, intercept, max_delay): + def _predict( + expression, X, y_ref, coef, intercept, feat_ids, delay_ids, output_ids + ): n_samples = X.shape[0] n_ref, n_outputs = y_ref.shape + max_delay = np.max(delay_ids) y_hat = np.zeros((n_samples, n_outputs), dtype=float) at_init = True init_k = 0 @@ -620,33 +677,159 @@ def _predict(expression, X, y_ref, coef, intercept, max_delay): if at_init: y_hat[k] = y_ref[k % n_ref] else: - y_hat[k] = expression(X, y_hat, coef, intercept, k) + y_hat[k] = expression( + X, y_hat, coef, intercept, feat_ids, delay_ids, output_ids, k + ) if np.any(y_hat[k] > 1e20): y_hat[k:] = 1e20 return y_hat return y_hat + @staticmethod + def _get_cfd_ids(feat_ids, delay_ids, output_ids, n_features_in): + n_y = np.max(output_ids) + 1 # number of output + n_d = np.max(delay_ids) # max delay + + n_c = feat_ids.shape[0] # number of coef + # number of dy/dx, [dy0(k)/dx, dy1(k)/dx, dy0(k-1)/dx, dy1(k-1)/dx, ...] + n_dydx = n_y * n_d + c_ids = np.arange(n_c) # Coef index + + # Coef ids, feature ids, delay ids + # cfd_ids is n_y * n_dydx + cfd_ids = [[[] for _ in range(n_dydx)] for _ in range(n_y)] + for i in range(n_y): + for j in range(n_dydx): + # Get dy[y_j](k - d_j)/dx + d_j = j // n_y + 1 # delay + y_j = j % n_y + n_features_in # output index + output_mask = output_ids == i + terms = feat_ids[output_mask] + delays = delay_ids[output_mask] + c_id = c_ids[output_mask] + for t, (term, delay) in enumerate(zip(terms, delays)): + if np.any((y_j == term) & (d_j == delay)): + a_ij = [] + for f, (feat, k) in enumerate(zip(term, delay)): + if (feat == y_j) and (k == d_j): + a_ij += [ + [c_id[t], np.delete(term, f), np.delete(delay, f)] + ] + cfd_ids[i][j] += a_ij + return cfd_ids + + @staticmethod + def _update_cfd(X, y_hat, coef, cfd_ids, k): + n_y = y_hat.shape[1] + n_dydx = len(cfd_ids[0]) + cfd = np.zeros((n_y, n_dydx)) + for i in range(n_y): + for j in range(n_dydx): + if cfd_ids[i][j]: + a_ij = 0 + for coef_id, term_id, delay_id in cfd_ids[i][j]: + a_ij += coef[coef_id] * NARX._evaluate_term( + term_id, delay_id, X, y_hat, k + ) + cfd[i, j] = a_ij + return cfd + + @staticmethod + def _update_dydx(X, y_hat, coef, feat_ids, delay_ids, output_ids, cfd_ids): + n_samples = X.shape[0] + n_y = y_hat.shape[1] + max_delay = np.max(delay_ids) + n_c = feat_ids.shape[0] + n_x = n_c + n_y + output_x_ids = np.r_[output_ids, np.arange(n_y)] + if max_delay == 0: + dydx = np.zeros((n_samples, n_x, n_y)) + else: + dydx = np.zeros((n_samples, n_x, n_y * max_delay)) + for k in range(max_delay, n_samples): + for i in range(n_x): + if i < n_c: + term = NARX._evaluate_term(feat_ids[i], delay_ids[i], X, y_hat, k) + else: + term = 1 + + if ~np.isfinite(term): + continue + dydx[k, i, output_x_ids[i]] = term + if max_delay != 0: + cfd = NARX._update_cfd(X, y_hat, coef, cfd_ids, k) + if ~np.all(np.isfinite(cfd)): + continue + dydx[k, i, :n_y] += cfd @ dydx[k - 1, i] + dydx[k, i, n_y:] = dydx[k - 1, i, :-n_y] + if np.any(dydx[k] > 1e20): + dydx[k:] = 1e20 + return dydx[:, :, :n_y] + return dydx[:, :, :n_y] + @staticmethod def _loss( coef_intercept, expression, X, y, - max_delay, - sample_weight, + feat_ids, + delay_ids, + output_ids, + sample_weight_sqrt, + *args, + ): + # Sum of squared errors + n_outputs = y.shape[1] + coef = coef_intercept[:-n_outputs] + intercept = coef_intercept[-n_outputs:] + + y_hat = NARX._predict( + expression, X, y, coef, intercept, feat_ids, delay_ids, output_ids + ) + + y_masked, y_hat_masked, sample_weight_sqrt_masked = _mask_missing_value( + y, y_hat, sample_weight_sqrt + ) + + return (sample_weight_sqrt_masked * (y_hat_masked - y_masked)).sum(axis=1) + + @staticmethod + def _grad( + coef_intercept, + expression, + X, + y, + feat_ids, + delay_ids, + output_ids, + sample_weight_sqrt, + cfd_ids, ): # Sum of squared errors n_outputs = y.shape[1] coef = coef_intercept[:-n_outputs] intercept = coef_intercept[-n_outputs:] - y_hat = NARX._predict(expression, X, y, coef, intercept, max_delay) + y_hat = NARX._predict( + expression, X, y, coef, intercept, feat_ids, delay_ids, output_ids + ) + dydx = NARX._update_dydx( + X, y_hat, coef, feat_ids, delay_ids, output_ids, cfd_ids + ) - y_masked, y_hat_masked, sample_weight_masked = _mask_missing_value( - y, y_hat, sample_weight + mask_nomissing = _mask_missing_value( + y, y_hat, sample_weight_sqrt, return_mask=True ) + y_masked = y[mask_nomissing] + y_hat_masked = y_hat[mask_nomissing] + sample_weight_sqrt_masked = sample_weight_sqrt[mask_nomissing] + dydx_masked = dydx[mask_nomissing] - return np.sum(sample_weight_masked @ (y_masked - y_hat_masked) ** 2) + e = y_hat_masked - y_masked + return (e[:, np.newaxis, :] * dydx_masked).sum( + axis=2 + ) * sample_weight_sqrt_masked @validate_params( { @@ -679,7 +862,11 @@ def predict(self, X, y_init=None): y_init = np.zeros((self.max_delay_, self.n_outputs_)) else: y_init = check_array( - y_init, ensure_2d=False, dtype=float, ensure_min_samples=0 + y_init, + ensure_2d=False, + dtype=float, + ensure_min_samples=0, + ensure_all_finite="allow-nan", ) if y_init.ndim == 1: y_init = y_init.reshape(-1, 1) @@ -690,12 +877,14 @@ def predict(self, X, y_init=None): ) y_hat = NARX._predict( - self._expression, + NARX._expression, X, y_init, self.coef_, self.intercept_, - self.max_delay_, + self.feat_ids_, + self.delay_ids_, + self.output_ids_, ) if self.n_outputs_ == 1: y_hat = y_hat.flatten() @@ -751,51 +940,51 @@ def print_narx( >>> from fastcan.narx import print_narx, NARX >>> X, y = load_diabetes(return_X_y=True) >>> print_narx(NARX().fit(X, y), term_space=10, coef_space=5, float_precision=0) - | y idx | Term |Coef | - ========================== - | 0 |Intercept | 152 | - | 0 | X[k-0,0] | -10 | - | 0 | X[k-0,1] |-240 | - | 0 | X[k-0,2] | 520 | - | 0 | X[k-0,3] | 324 | - | 0 | X[k-0,4] |-792 | - | 0 | X[k-0,5] | 477 | - | 0 | X[k-0,6] | 101 | - | 0 | X[k-0,7] | 177 | - | 0 | X[k-0,8] | 751 | - | 0 | X[k-0,9] | 68 | + | yid | Term |Coef | + ======================== + | 0 |Intercept | 152 | + | 0 | X[k,0] | -10 | + | 0 | X[k,1] |-240 | + | 0 | X[k,2] | 520 | + | 0 | X[k,3] | 324 | + | 0 | X[k,4] |-792 | + | 0 | X[k,5] | 477 | + | 0 | X[k,6] | 101 | + | 0 | X[k,7] | 177 | + | 0 | X[k,8] | 751 | + | 0 | X[k,9] | 68 | """ check_is_fitted(narx) - def _get_variable_str(time_shift_id): - if time_shift_id[0] < narx.n_features_in_: - variable_str = f"X[k-{time_shift_id[1]},{time_shift_id[0]}]" - else: - variable_str = ( - f"y_hat[k-{time_shift_id[1]},{time_shift_id[0]-narx.n_features_in_}]" - ) - return variable_str - - def _get_term_str(term_id): + def _get_term_str(term_feat_ids, term_delay_ids): term_str = "" - for _, variable_id in enumerate(term_id): - if variable_id != 0: - time_shift_id = narx.time_shift_ids_[variable_id - 1] - term_str += "*" + _get_variable_str(time_shift_id) + for _, (feat_id, delay_id) in enumerate(zip(term_feat_ids, term_delay_ids)): + if -1 < feat_id < narx.n_features_in_: + if delay_id == 0: + term_str += f"*X[k,{feat_id}]" + else: + term_str += f"*X[k-{delay_id},{feat_id}]" + elif feat_id >= narx.n_features_in_: + term_str += f"*y_hat[k-{delay_id},{feat_id-narx.n_features_in_}]" return term_str[1:] - print("| y idx " + f"|{'Term':^{term_space}}" + f"|{'Coef':^{coef_space}}|") - print("=" * (term_space + coef_space + 11)) + yid_space = 5 + print( + f"|{'yid':^{yid_space}}" + + f"|{'Term':^{term_space}}" + + f"|{'Coef':^{coef_space}}|" + ) + print("=" * (yid_space + term_space + coef_space + 4)) for i in range(narx.n_outputs_): print( - f"|{i:^7}|" + f"|{i:^{yid_space}}|" + f"{'Intercept':^{term_space}}|" + f"{narx.intercept_[i]:^{coef_space}.{float_precision}f}|" ) - for i, term_id in enumerate(narx.poly_ids_): + for i, term_id in enumerate(zip(narx.feat_ids_, narx.delay_ids_)): print( - f"|{narx.output_ids_[i]:^7}|" - + f"{_get_term_str(term_id):^{term_space}}|" + f"|{narx.output_ids_[i]:^{yid_space}}|" + + f"{_get_term_str(*term_id):^{term_space}}|" + f"{narx.coef_[i]:^{coef_space}.{float_precision}f}|" ) @@ -923,13 +1112,13 @@ def make_narx( >>> print(f"{mean_squared_error(y, narx.fit(X, y).predict(X)):.4f}") 0.0289 >>> print_narx(narx) - | y idx | Term | Coef | - ========================================= - | 0 | Intercept | 1.054 | - | 0 | y_hat[k-1,0] | 0.483 | - | 0 | X[k-0,0]*X[k-0,0] | 0.307 | - | 0 | X[k-1,0]*X[k-3,0] | 1.999 | - | 0 | X[k-2,0]*X[k-0,1] | 1.527 | + | yid | Term | Coef | + ======================================= + | 0 | Intercept | 1.054 | + | 0 | y_hat[k-1,0] | 0.483 | + | 0 | X[k,0]*X[k,0] | 0.307 | + | 0 | X[k-1,0]*X[k-3,0] | 1.999 | + | 0 | X[k-2,0]*X[k,1] | 1.527 | """ X = check_array(X, dtype=float, ensure_2d=True, ensure_all_finite="allow-nan") y = check_array(y, dtype=float, ensure_2d=False, ensure_all_finite="allow-nan") @@ -940,7 +1129,7 @@ def make_narx( if isinstance(n_terms_to_select, Integral): n_terms_to_select = np.full(n_outputs, n_terms_to_select, dtype=int) else: - n_terms_to_select = column_or_1d(n_terms_to_select, dtype=Integral, warn=True) + n_terms_to_select = column_or_1d(n_terms_to_select, dtype=int, warn=True) if len(n_terms_to_select) != n_outputs: raise ValueError( "The length of `n_terms_to_select` should be equal to " @@ -991,7 +1180,7 @@ def make_narx( indices, _ = refine( csf, drop=refine_drop, max_iter=refine_max_iter, verbose=refine_verbose ) - support = np.zeros(shape=csf.n_features_in_, dtype=bool) + support = np.zeros(shape=poly_ids_all.shape[0], dtype=bool) support[indices] = True else: support = csf.get_support() @@ -1011,4 +1200,10 @@ def make_narx( ) output_ids = [i for i in range(n_outputs) for _ in range(n_terms_to_select[i])] - return NARX(time_shift_ids=time_shift_ids, poly_ids=poly_ids, output_ids=output_ids) + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + + return NARX( + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=output_ids, + ) diff --git a/pixi.lock b/pixi.lock index be20d39..aa95c74 100644 --- a/pixi.lock +++ b/pixi.lock @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: . osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda @@ -197,7 +197,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: . win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-9.0.1-h266115a_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-9.0.1-he0572af_5.conda @@ -507,7 +507,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py313h536fd9c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/48/e791a7ed487dbb9729ef32bb5d1af16693d8925f4366befef54119b2e576/furo-2024.8.6-py3-none-any.whl @@ -658,7 +658,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 @@ -754,7 +754,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py313h63b0ddb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/48/e791a7ed487dbb9729ef32bb5d1af16693d8925f4366befef54119b2e576/furo-2024.8.6-py3-none-any.whl @@ -905,7 +905,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 @@ -1001,7 +1001,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py313h90d716c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/48/e791a7ed487dbb9729ef32bb5d1af16693d8925f4366befef54119b2e576/furo-2024.8.6-py3-none-any.whl @@ -1140,7 +1140,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda @@ -1239,7 +1239,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-ha9f60a1_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py313ha7868ed_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/48/e791a7ed487dbb9729ef32bb5d1af16693d8925f4366befef54119b2e576/furo-2024.8.6-py3-none-any.whl @@ -1264,11 +1264,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda @@ -1277,24 +1277,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py313hfe82de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py312hf79aa60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda @@ -1776,21 +1777,21 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 145482 timestamp: 1738740460562 -- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py313h78bf25f_0.conda - sha256: f6b6e2e529fbac828c9cb630f09333a66749dab5291aa067407ba2593689d2d7 - md5: 9ea587916fdf7b23e723e428f02c1bb5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef + md5: 986a60de52eec10b36c61bb3890858ff depends: - click >=8.0.0 - mypy_extensions >=0.4.3 - packaging >=22.0 - pathspec >=0.9 - platformdirs >=2 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 398823 - timestamp: 1738616111923 + size: 394760 + timestamp: 1738616131766 - conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py313habf4b1d_0.conda sha256: 293c0048448eec702c58f12aa7ccab71102e5e61482d3ad6439208ab4d7b5ada md5: c4f8ef5281c64a0f15ec659e51bb079f @@ -2827,6 +2828,19 @@ packages: name: cython version: 3.1.0b0 requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda + sha256: de815476da537b911e2ceeb7f76b445d0c76b3d5fad35600ed28bc8d19302127 + md5: e5d2a28866ee990a340bde1eabde587a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 3766553 + timestamp: 1739228870146 - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda sha256: 8341920c1a53a418a359c2afc52ca5a8b9440667599bf149eebc7c925b639554 md5: 24a42a0c1cc33743e33572d63d489b54 @@ -5526,6 +5540,15 @@ packages: purls: [] size: 88657 timestamp: 1723861474602 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 md5: 7c7927b404672409d9917d49bff5f2d6 @@ -5956,6 +5979,14 @@ packages: purls: [] size: 1208687 timestamp: 1727279378819 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb md5: e7e5b0652227d646b44abdcbd989da7b @@ -6465,18 +6496,19 @@ packages: - pkg:pypi/meson-python?source=hash-mapping size: 74270 timestamp: 1733419510995 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda - sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 - md5: 0982b0f06168fe3421d09f70596ca1f0 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda + sha256: a67484d7dd11e815a81786580f18b6e4aa2392f292f29183631a6eccc8dc37b3 + md5: 7ec6576e328bc128f4982cd646eeba85 depends: - python >=3.9 - typing_extensions + - python license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/mistune?source=compressed-mapping - size: 68903 - timestamp: 1739952304731 + - pkg:pypi/mistune?source=hash-mapping + size: 72749 + timestamp: 1742402716323 - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd md5: 302dff2807f2927b3e9e0d19d60121de @@ -6545,21 +6577,21 @@ packages: - pkg:pypi/munkres?source=hash-mapping size: 12452 timestamp: 1600387789153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda - sha256: ba62b6ccf6775290dcc4ca01c160b29f1fb67300928609fff60126fdae38034d - md5: 80b1cac6f9ca2ab7d96690b8aff3114d +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 + md5: a84061bc7e166712deb33bf7b32f756d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - mypy_extensions >=1.0.0 - psutil >=4.0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - typing_extensions >=4.1.0 license: MIT license_family: MIT - size: 17058016 - timestamp: 1738767732637 + size: 18664849 + timestamp: 1738767977895 - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py313h63b0ddb_0.conda sha256: ec50dc7be70eff5008d73b4bd29fba72e02e499e9b60060a49ece4c1e12a9d55 md5: e9dc60a2c2c62f4d2e24f61603f00bdc @@ -7397,6 +7429,18 @@ packages: - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271905 timestamp: 1737453457168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852 md5: 8f315d1fce04a046c1b93fa6e536661d @@ -7748,6 +7792,33 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 26256 timestamp: 1733223113491 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 + md5: d82342192dfc9145185190e651065aa9 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31670716 + timestamp: 1741130026152 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-h4724d56_1_cp313t.conda build_number: 1 sha256: c403e3fbe15d61d14fdf14a169f3f892627bd3f7b21d14ba5c682f6232b7f826 @@ -8025,6 +8096,16 @@ packages: - pkg:pypi/tzdata?source=hash-mapping size: 143794 timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda build_number: 5 sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 @@ -8576,21 +8657,21 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 254956 timestamp: 1740153099772 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py313hfe82de2_0.conda - sha256: 56560cfd9e9d969794a99068efac0125e2de4a240f32386d052c1f25212c2062 - md5: 1440e62f2d47384775ccda10c30cadac +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py312hf79aa60_0.conda + sha256: 58aa0b5bcbfa85c05f1e116c03b97253196fa6ce88ad90b3ed701659c6a1dd24 + md5: 3656d8e5c4e5874ba021d465fa612920 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 8880867 - timestamp: 1741967951536 + size: 8855739 + timestamp: 1741967960430 - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.0-py313h2e013d6_0.conda sha256: 0e7f776da8bd1418cd1ba7d938232a8e5b5e0dc2ee416bf04de2c5e3dd4320c8 md5: 84fb1dacc9d34ef71e14252283a602db @@ -8637,31 +8718,31 @@ packages: name: scikit-learn version: 1.7.dev0 requires_dist: - - numpy>=1.19.5 - - scipy>=1.6.0 + - numpy>=1.22.0 + - scipy>=1.8.0 - joblib>=1.2.0 - threadpoolctl>=3.1.0 - - numpy>=1.19.5 ; extra == 'build' - - scipy>=1.6.0 ; extra == 'build' + - numpy>=1.22.0 ; extra == 'build' + - scipy>=1.8.0 ; extra == 'build' - cython>=3.0.10 ; extra == 'build' - meson-python>=0.16.0 ; extra == 'build' - - numpy>=1.19.5 ; extra == 'install' - - scipy>=1.6.0 ; extra == 'install' + - numpy>=1.22.0 ; extra == 'install' + - scipy>=1.8.0 ; extra == 'install' - joblib>=1.2.0 ; extra == 'install' - threadpoolctl>=3.1.0 ; extra == 'install' - - matplotlib>=3.3.4 ; extra == 'benchmark' - - pandas>=1.2.0 ; extra == 'benchmark' + - matplotlib>=3.5.0 ; extra == 'benchmark' + - pandas>=1.4.0 ; extra == 'benchmark' - memory-profiler>=0.57.0 ; extra == 'benchmark' - - matplotlib>=3.3.4 ; extra == 'docs' - - scikit-image>=0.17.2 ; extra == 'docs' - - pandas>=1.2.0 ; extra == 'docs' + - matplotlib>=3.5.0 ; extra == 'docs' + - scikit-image>=0.19.0 ; extra == 'docs' + - pandas>=1.4.0 ; extra == 'docs' - seaborn>=0.9.0 ; extra == 'docs' - memory-profiler>=0.57.0 ; extra == 'docs' - sphinx>=7.3.7 ; extra == 'docs' - sphinx-copybutton>=0.5.2 ; extra == 'docs' - sphinx-gallery>=0.17.1 ; extra == 'docs' - numpydoc>=1.2.0 ; extra == 'docs' - - pillow>=7.1.2 ; extra == 'docs' + - pillow>=8.4.0 ; extra == 'docs' - pooch>=1.6.0 ; extra == 'docs' - sphinx-prompt>=1.4.0 ; extra == 'docs' - sphinxext-opengraph>=0.9.1 ; extra == 'docs' @@ -8673,56 +8754,56 @@ packages: - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' - towncrier>=24.8.0 ; extra == 'docs' - - matplotlib>=3.3.4 ; extra == 'examples' - - scikit-image>=0.17.2 ; extra == 'examples' - - pandas>=1.2.0 ; extra == 'examples' + - matplotlib>=3.5.0 ; extra == 'examples' + - scikit-image>=0.19.0 ; extra == 'examples' + - pandas>=1.4.0 ; extra == 'examples' - seaborn>=0.9.0 ; extra == 'examples' - pooch>=1.6.0 ; extra == 'examples' - plotly>=5.14.0 ; extra == 'examples' - - matplotlib>=3.3.4 ; extra == 'tests' - - scikit-image>=0.17.2 ; extra == 'tests' - - pandas>=1.2.0 ; extra == 'tests' + - matplotlib>=3.5.0 ; extra == 'tests' + - scikit-image>=0.19.0 ; extra == 'tests' + - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - ruff>=0.5.1 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - mypy>=1.9 ; extra == 'tests' - - pyamg>=4.0.0 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' - numpydoc>=1.2.0 ; extra == 'tests' - pooch>=1.6.0 ; extra == 'tests' - conda-lock==2.5.7 ; extra == 'maintenance' - requires_python: '>=3.9' + requires_python: '>=3.10' - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-macosx_12_0_arm64.whl name: scikit-learn version: 1.7.dev0 requires_dist: - - numpy>=1.19.5 - - scipy>=1.6.0 + - numpy>=1.22.0 + - scipy>=1.8.0 - joblib>=1.2.0 - threadpoolctl>=3.1.0 - - numpy>=1.19.5 ; extra == 'build' - - scipy>=1.6.0 ; extra == 'build' + - numpy>=1.22.0 ; extra == 'build' + - scipy>=1.8.0 ; extra == 'build' - cython>=3.0.10 ; extra == 'build' - meson-python>=0.16.0 ; extra == 'build' - - numpy>=1.19.5 ; extra == 'install' - - scipy>=1.6.0 ; extra == 'install' + - numpy>=1.22.0 ; extra == 'install' + - scipy>=1.8.0 ; extra == 'install' - joblib>=1.2.0 ; extra == 'install' - threadpoolctl>=3.1.0 ; extra == 'install' - - matplotlib>=3.3.4 ; extra == 'benchmark' - - pandas>=1.2.0 ; extra == 'benchmark' + - matplotlib>=3.5.0 ; extra == 'benchmark' + - pandas>=1.4.0 ; extra == 'benchmark' - memory-profiler>=0.57.0 ; extra == 'benchmark' - - matplotlib>=3.3.4 ; extra == 'docs' - - scikit-image>=0.17.2 ; extra == 'docs' - - pandas>=1.2.0 ; extra == 'docs' + - matplotlib>=3.5.0 ; extra == 'docs' + - scikit-image>=0.19.0 ; extra == 'docs' + - pandas>=1.4.0 ; extra == 'docs' - seaborn>=0.9.0 ; extra == 'docs' - memory-profiler>=0.57.0 ; extra == 'docs' - sphinx>=7.3.7 ; extra == 'docs' - sphinx-copybutton>=0.5.2 ; extra == 'docs' - sphinx-gallery>=0.17.1 ; extra == 'docs' - numpydoc>=1.2.0 ; extra == 'docs' - - pillow>=7.1.2 ; extra == 'docs' + - pillow>=8.4.0 ; extra == 'docs' - pooch>=1.6.0 ; extra == 'docs' - sphinx-prompt>=1.4.0 ; extra == 'docs' - sphinxext-opengraph>=0.9.1 ; extra == 'docs' @@ -8734,56 +8815,56 @@ packages: - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' - towncrier>=24.8.0 ; extra == 'docs' - - matplotlib>=3.3.4 ; extra == 'examples' - - scikit-image>=0.17.2 ; extra == 'examples' - - pandas>=1.2.0 ; extra == 'examples' + - matplotlib>=3.5.0 ; extra == 'examples' + - scikit-image>=0.19.0 ; extra == 'examples' + - pandas>=1.4.0 ; extra == 'examples' - seaborn>=0.9.0 ; extra == 'examples' - pooch>=1.6.0 ; extra == 'examples' - plotly>=5.14.0 ; extra == 'examples' - - matplotlib>=3.3.4 ; extra == 'tests' - - scikit-image>=0.17.2 ; extra == 'tests' - - pandas>=1.2.0 ; extra == 'tests' + - matplotlib>=3.5.0 ; extra == 'tests' + - scikit-image>=0.19.0 ; extra == 'tests' + - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - ruff>=0.5.1 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - mypy>=1.9 ; extra == 'tests' - - pyamg>=4.0.0 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' - numpydoc>=1.2.0 ; extra == 'tests' - pooch>=1.6.0 ; extra == 'tests' - conda-lock==2.5.7 ; extra == 'maintenance' - requires_python: '>=3.9' + requires_python: '>=3.10' - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: scikit-learn version: 1.7.dev0 requires_dist: - - numpy>=1.19.5 - - scipy>=1.6.0 + - numpy>=1.22.0 + - scipy>=1.8.0 - joblib>=1.2.0 - threadpoolctl>=3.1.0 - - numpy>=1.19.5 ; extra == 'build' - - scipy>=1.6.0 ; extra == 'build' + - numpy>=1.22.0 ; extra == 'build' + - scipy>=1.8.0 ; extra == 'build' - cython>=3.0.10 ; extra == 'build' - meson-python>=0.16.0 ; extra == 'build' - - numpy>=1.19.5 ; extra == 'install' - - scipy>=1.6.0 ; extra == 'install' + - numpy>=1.22.0 ; extra == 'install' + - scipy>=1.8.0 ; extra == 'install' - joblib>=1.2.0 ; extra == 'install' - threadpoolctl>=3.1.0 ; extra == 'install' - - matplotlib>=3.3.4 ; extra == 'benchmark' - - pandas>=1.2.0 ; extra == 'benchmark' + - matplotlib>=3.5.0 ; extra == 'benchmark' + - pandas>=1.4.0 ; extra == 'benchmark' - memory-profiler>=0.57.0 ; extra == 'benchmark' - - matplotlib>=3.3.4 ; extra == 'docs' - - scikit-image>=0.17.2 ; extra == 'docs' - - pandas>=1.2.0 ; extra == 'docs' + - matplotlib>=3.5.0 ; extra == 'docs' + - scikit-image>=0.19.0 ; extra == 'docs' + - pandas>=1.4.0 ; extra == 'docs' - seaborn>=0.9.0 ; extra == 'docs' - memory-profiler>=0.57.0 ; extra == 'docs' - sphinx>=7.3.7 ; extra == 'docs' - sphinx-copybutton>=0.5.2 ; extra == 'docs' - sphinx-gallery>=0.17.1 ; extra == 'docs' - numpydoc>=1.2.0 ; extra == 'docs' - - pillow>=7.1.2 ; extra == 'docs' + - pillow>=8.4.0 ; extra == 'docs' - pooch>=1.6.0 ; extra == 'docs' - sphinx-prompt>=1.4.0 ; extra == 'docs' - sphinxext-opengraph>=0.9.1 ; extra == 'docs' @@ -8795,56 +8876,56 @@ packages: - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' - towncrier>=24.8.0 ; extra == 'docs' - - matplotlib>=3.3.4 ; extra == 'examples' - - scikit-image>=0.17.2 ; extra == 'examples' - - pandas>=1.2.0 ; extra == 'examples' + - matplotlib>=3.5.0 ; extra == 'examples' + - scikit-image>=0.19.0 ; extra == 'examples' + - pandas>=1.4.0 ; extra == 'examples' - seaborn>=0.9.0 ; extra == 'examples' - pooch>=1.6.0 ; extra == 'examples' - plotly>=5.14.0 ; extra == 'examples' - - matplotlib>=3.3.4 ; extra == 'tests' - - scikit-image>=0.17.2 ; extra == 'tests' - - pandas>=1.2.0 ; extra == 'tests' + - matplotlib>=3.5.0 ; extra == 'tests' + - scikit-image>=0.19.0 ; extra == 'tests' + - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - ruff>=0.5.1 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - mypy>=1.9 ; extra == 'tests' - - pyamg>=4.0.0 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' - numpydoc>=1.2.0 ; extra == 'tests' - pooch>=1.6.0 ; extra == 'tests' - conda-lock==2.5.7 ; extra == 'maintenance' - requires_python: '>=3.9' + requires_python: '>=3.10' - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-win_amd64.whl name: scikit-learn version: 1.7.dev0 requires_dist: - - numpy>=1.19.5 - - scipy>=1.6.0 + - numpy>=1.22.0 + - scipy>=1.8.0 - joblib>=1.2.0 - threadpoolctl>=3.1.0 - - numpy>=1.19.5 ; extra == 'build' - - scipy>=1.6.0 ; extra == 'build' + - numpy>=1.22.0 ; extra == 'build' + - scipy>=1.8.0 ; extra == 'build' - cython>=3.0.10 ; extra == 'build' - meson-python>=0.16.0 ; extra == 'build' - - numpy>=1.19.5 ; extra == 'install' - - scipy>=1.6.0 ; extra == 'install' + - numpy>=1.22.0 ; extra == 'install' + - scipy>=1.8.0 ; extra == 'install' - joblib>=1.2.0 ; extra == 'install' - threadpoolctl>=3.1.0 ; extra == 'install' - - matplotlib>=3.3.4 ; extra == 'benchmark' - - pandas>=1.2.0 ; extra == 'benchmark' + - matplotlib>=3.5.0 ; extra == 'benchmark' + - pandas>=1.4.0 ; extra == 'benchmark' - memory-profiler>=0.57.0 ; extra == 'benchmark' - - matplotlib>=3.3.4 ; extra == 'docs' - - scikit-image>=0.17.2 ; extra == 'docs' - - pandas>=1.2.0 ; extra == 'docs' + - matplotlib>=3.5.0 ; extra == 'docs' + - scikit-image>=0.19.0 ; extra == 'docs' + - pandas>=1.4.0 ; extra == 'docs' - seaborn>=0.9.0 ; extra == 'docs' - memory-profiler>=0.57.0 ; extra == 'docs' - sphinx>=7.3.7 ; extra == 'docs' - sphinx-copybutton>=0.5.2 ; extra == 'docs' - sphinx-gallery>=0.17.1 ; extra == 'docs' - numpydoc>=1.2.0 ; extra == 'docs' - - pillow>=7.1.2 ; extra == 'docs' + - pillow>=8.4.0 ; extra == 'docs' - pooch>=1.6.0 ; extra == 'docs' - sphinx-prompt>=1.4.0 ; extra == 'docs' - sphinxext-opengraph>=0.9.1 ; extra == 'docs' @@ -8856,27 +8937,27 @@ packages: - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' - towncrier>=24.8.0 ; extra == 'docs' - - matplotlib>=3.3.4 ; extra == 'examples' - - scikit-image>=0.17.2 ; extra == 'examples' - - pandas>=1.2.0 ; extra == 'examples' + - matplotlib>=3.5.0 ; extra == 'examples' + - scikit-image>=0.19.0 ; extra == 'examples' + - pandas>=1.4.0 ; extra == 'examples' - seaborn>=0.9.0 ; extra == 'examples' - pooch>=1.6.0 ; extra == 'examples' - plotly>=5.14.0 ; extra == 'examples' - - matplotlib>=3.3.4 ; extra == 'tests' - - scikit-image>=0.17.2 ; extra == 'tests' - - pandas>=1.2.0 ; extra == 'tests' + - matplotlib>=3.5.0 ; extra == 'tests' + - scikit-image>=0.19.0 ; extra == 'tests' + - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - ruff>=0.5.1 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - mypy>=1.9 ; extra == 'tests' - - pyamg>=4.0.0 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' - numpydoc>=1.2.0 ; extra == 'tests' - pooch>=1.6.0 ; extra == 'tests' - conda-lock==2.5.7 ; extra == 'maintenance' - requires_python: '>=3.9' + requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py313h8ef605b_0.conda sha256: 1bc3c0449187dd2336c1391702c8712a4f07d17653c0bb76ced5688c3178d8f2 md5: 0e241d6a47f284c06cc8483e5e4b148d @@ -10476,9 +10557,9 @@ packages: - pkg:pypi/zstandard?source=hash-mapping size: 449910 timestamp: 1741853538921 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda - sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da - md5: 02e4e2fa41a6528afba2e54cbc4280ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda + sha256: a4166e3d8ff4e35932510aaff7aa90772f84b4d07e9f6f83c614cba7ceefe0eb + md5: 6432cb5d4ac0046c3ac0a8a0f95842f9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -10487,33 +10568,33 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 567419 - timestamp: 1740255350233 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_1.conda - sha256: 60042f68a56124b72c7fedc3c45bf8da7a53665175fcebdf1e248f6d9a59f339 - md5: b6931d7aedc272edf329a632d840e3d9 + size: 567578 + timestamp: 1742433379869 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda + sha256: c171c43d0c47eed45085112cb00c8c7d4f0caa5a32d47f2daca727e45fb98dca + md5: cd60a4a5a8d6a476b30d8aa4bb49251a depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 486288 - timestamp: 1740255318890 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda - sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 - md5: 66e5c4b02aa97230459efdd4f64c8ce6 + size: 485754 + timestamp: 1742433356230 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda + sha256: 0d02046f57f7a1a3feae3e9d1aa2113788311f3cf37a3244c71e61a93177ba67 + md5: e6f69c7bcccdefa417f056fa593b40f0 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 399981 - timestamp: 1740255382232 -- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_1.conda - sha256: a59b096b95f20910158c927797e9144ed9c7970f1b4aca58e6d6c8db9f653006 - md5: bf190adcc22f146d8ec66da215c9d78b + size: 399979 + timestamp: 1742433432699 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda + sha256: bc64864377d809b904e877a98d0584f43836c9f2ef27d3d2a1421fa6eae7ca04 + md5: 21f56217d6125fb30c3c3f10c786d751 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -10522,5 +10603,5 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 353182 - timestamp: 1740255407949 + size: 354697 + timestamp: 1742433568506 diff --git a/tests/test_narx.py b/tests/test_narx.py index df7b58c..fdf52cc 100644 --- a/tests/test_narx.py +++ b/tests/test_narx.py @@ -3,9 +3,19 @@ import numpy as np import pytest from numpy.testing import assert_array_equal +from sklearn.metrics import r2_score from sklearn.utils.estimator_checks import check_estimator -from fastcan.narx import NARX, make_narx, make_poly_ids, make_time_shift_ids, print_narx +from fastcan.narx import ( + NARX, + _fd2pt, + _mask_missing_value, + _pt2fd, + make_narx, + make_poly_ids, + make_time_shift_ids, + print_narx, +) def test_narx_is_sklearn_estimator(): @@ -23,8 +33,8 @@ def test_time_ids(): make_time_shift_ids(3, 2, [False, True, False, True]) -@pytest.mark.parametrize("nan", [False, True]) @pytest.mark.parametrize("multi_output", [False, True]) +@pytest.mark.parametrize("nan", [False, True]) def test_narx(nan, multi_output): """Test NARX""" if multi_output: @@ -82,6 +92,27 @@ def test_narx(nan, multi_output): X[X_nan_ids] = np.nan y[y_nan_ids] = np.nan + if multi_output: + narx_score = make_narx( + X, + y, + n_terms_to_select=[5, 4], + max_delay=3, + poly_degree=2, + verbose=0, + ).fit(X, y) + else: + narx_score = make_narx( + X, + y, + n_terms_to_select=4, + max_delay=3, + poly_degree=2, + verbose=0, + ).fit(X, y) + + assert r2_score(*_mask_missing_value(y, narx_score.predict(X, y_init=y))) > 0.5 + params = { "n_terms_to_select": rng.integers(low=2, high=4), "max_delay": rng.integers(low=0, high=10), @@ -91,13 +122,13 @@ def test_narx(nan, multi_output): narx_default = make_narx(X=X, y=y, **params) if multi_output: - assert narx_default.poly_ids.shape[0] == params["n_terms_to_select"]*2 + assert narx_default.feat_ids.shape[0] == params["n_terms_to_select"]*2 else: - assert narx_default.poly_ids.shape[0] == params["n_terms_to_select"] + assert narx_default.feat_ids.shape[0] == params["n_terms_to_select"] params["include_zero_delay"] = [False, True] narx_0_delay = make_narx(X=X, y=y, **params) - time_shift_ids = narx_0_delay.time_shift_ids + _, time_shift_ids = _fd2pt(narx_0_delay.feat_ids, narx_0_delay.delay_ids) time_ids_u0 = time_shift_ids[time_shift_ids[:, 0] == 0] time_ids_u1 = time_shift_ids[time_shift_ids[:, 0] == 1] time_ids_y = time_shift_ids[time_shift_ids[:, 0] == 2] @@ -107,7 +138,7 @@ def test_narx(nan, multi_output): params["static_indices"] = [1] narx_static = make_narx(X=X, y=y, **params) - time_shift_ids = narx_static.time_shift_ids + _, time_shift_ids = _fd2pt(narx_static.feat_ids, narx_static.delay_ids) time_ids_u1 = time_shift_ids[time_shift_ids[:, 0] == 1] if time_ids_u1.size != 0: assert time_ids_u1[0, 1] == 0 @@ -127,17 +158,18 @@ def test_narx(nan, multi_output): output_ids[-1] = 1 else: output_ids = None + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) narx_osa = NARX( - time_shift_ids=time_shift_ids, poly_ids=poly_ids, output_ids=output_ids + feat_ids=feat_ids, delay_ids=delay_ids, output_ids=output_ids ).fit(X, y) assert narx_osa.coef_.size == poly_ids.shape[0] narx_osa_msa = narx_drop.fit(X, y, coef_init="one_step_ahead") narx_osa_msa_coef = narx_osa_msa.coef_ - assert np.any(narx_osa_msa_coef != narx_drop_coef) narx_array_init_msa = narx_osa_msa.fit( X, y, coef_init=np.zeros(narx_osa_msa_coef.size + n_outputs) ) - assert np.any(narx_array_init_msa.coef_ != narx_osa_msa_coef) + assert np.any(narx_array_init_msa.coef_ != narx_drop_coef) + assert np.any(narx_osa_msa_coef != narx_array_init_msa.coef_) if multi_output: y_init = np.ones((narx_array_init_msa.max_delay_, n_outputs)) @@ -155,15 +187,16 @@ def test_narx(nan, multi_output): X.shape[1] + n_outputs + 1, 3, include_zero_delay=False ) poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) if multi_output: n_terms = poly_ids.shape[0] output_ids = [0] * n_terms output_ids[-1] = 1 else: output_ids = None - with pytest.raises(ValueError, match=r"The element x of the first column of tim.*"): + with pytest.raises(ValueError, match=r"The element x of feat_ids should satisfy.*"): narx_osa = NARX( - time_shift_ids=time_shift_ids, poly_ids=poly_ids, output_ids=output_ids + feat_ids=feat_ids, delay_ids=delay_ids, output_ids=output_ids ).fit(X, y) time_shift_ids = np.array( @@ -175,43 +208,66 @@ def test_narx(nan, multi_output): ] ) poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) n_terms = poly_ids.shape[0] output_ids = [0] * n_terms output_ids[-1] = 1 - with pytest.raises(ValueError, match=r"The element x of the second column of ti.*"): + with pytest.raises(ValueError, match=r"The element x of delay_ids should be -1.*"): narx_osa = NARX( - time_shift_ids=time_shift_ids, poly_ids=poly_ids, output_ids=output_ids + feat_ids=feat_ids, delay_ids=delay_ids, output_ids=output_ids ).fit(X, y) time_shift_ids = make_time_shift_ids( X.shape[1] + n_outputs, 3, include_zero_delay=False ) - poly_ids = make_poly_ids(time_shift_ids.shape[0] + n_outputs, 2) + poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + delay_ids_shape_err = np.delete(delay_ids, 0, axis=0) n_terms = poly_ids.shape[0] output_ids = [0] * n_terms output_ids[-1] = 1 - with pytest.raises(ValueError, match=r"The element x of poly_ids should .*"): + with pytest.raises( + ValueError, match=r"The shape of delay_ids should be equal to .*" + ): + narx_osa = NARX( + feat_ids=feat_ids, delay_ids=delay_ids_shape_err, output_ids=output_ids + ).fit(X, y) + delay_ids_max_err = np.copy(delay_ids) + delay_ids_max_err[0, 1] = X.shape[0] + with pytest.raises( + ValueError, match=r"The element x of delay_ids should satisfy -1.*" + ): narx_osa = NARX( - time_shift_ids=time_shift_ids, poly_ids=poly_ids, output_ids=output_ids + feat_ids=feat_ids, delay_ids=delay_ids_max_err, output_ids=output_ids ).fit(X, y) def test_mulit_output_warn_error(): X = np.random.rand(10, 2) y = np.random.rand(10, 2) - time_shift_ids = [[0, 1], [1, 1]] - poly_ids = [[1, 1], [2, 2]] - output_ids = [0] + time_shift_ids = np.array([[0, 1], [1, 1]]) + poly_ids = np.array([[1, 1], [2, 2]]) + feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) with pytest.warns(UserWarning, match="output_ids got"): - narx = NARX(time_shift_ids=time_shift_ids, poly_ids=poly_ids) + narx = NARX(feat_ids=feat_ids, delay_ids=delay_ids) narx.fit(X, y) with pytest.raises(ValueError, match="The length of output_ids should"): narx = NARX( - time_shift_ids=time_shift_ids, - poly_ids=poly_ids, - output_ids=output_ids, + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=[0], + ) + narx.fit(X, y) + + with pytest.raises( + ValueError, match=r"The element x of output_ids should satisfy 0 <=.*" + ): + narx = NARX( + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=[0, 2], ) narx.fit(X, y) diff --git a/tests/test_narx_jac.py b/tests/test_narx_jac.py new file mode 100644 index 0000000..8a188a0 --- /dev/null +++ b/tests/test_narx_jac.py @@ -0,0 +1,209 @@ +"""Test Jacobian matrix of NARX""" + +import numpy as np +from numpy.testing import assert_allclose, assert_almost_equal, assert_array_equal + +from fastcan.narx import NARX + + +def test_simple(): + """Simple model + test model: y(k) = 0.4*y(k-1) + u(k-1) + 1 + initial y[-1] = 0 + u[0] = u[1] = u[2] = 1.5 + """ + # Ground truth + X = np.array([1.5, 1.5, 1.5]).reshape(-1, 1) + y = np.array([1, 2.9, 3.66]).reshape(-1, 1) + + feat_ids = np.array([1, 0]).reshape(-1, 1) + delay_ids = np.array([1, 1]).reshape(-1, 1) + output_ids = np.array([0, 0]) + coef = np.array([0.4, 1]) + intercept = np.array([1], dtype=float) + sample_weight = np.array([1, 1, 1], dtype=float) + + + y_hat = NARX._predict( + NARX._expression, + X=X, + y_ref=y, + coef=coef, + intercept=intercept, + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=output_ids, + ) + + assert_array_equal(y_hat, y) + + delta_w = 0.00001 + coef_1 = np.array([0.4+delta_w, 1]) + + y_hat_1 = NARX._predict( + NARX._expression, + X=X, + y_ref=y, + coef=coef_1, + intercept=intercept, + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=output_ids, + ) + + + e1 = y_hat_1 - y + grad_truth = np.array([ + np.sum(e1*np.array([0, y_hat_1[0, 0], y_hat_1[1, 0]+coef_1[0]]).reshape(-1, 1)), + np.sum(e1*np.array([0, X[0, 0], X[0, 0]*coef_1[0]+X[0, 0]]).reshape(-1, 1)), + np.sum(e1*np.array([0, 1, coef_1[0]+1]).reshape(-1, 1)), + ]) + + + cfd_ids = NARX._get_cfd_ids(feat_ids, delay_ids, output_ids, 1) + grad = NARX._grad( + np.r_[coef_1, intercept], + NARX._expression, + X, + y, + feat_ids, + delay_ids, + output_ids, + sample_weight_sqrt=np.sqrt(sample_weight), + cfd_ids=cfd_ids, + ) + + assert_almost_equal(grad.sum(axis=0), grad_truth, decimal=4) + + +def test_complex(): + """Complex model""" + # Simulated model + rng = np.random.default_rng(12345) + n_samples = 2000 + max_delay = 3 + e0 = rng.normal(0, 0.1, n_samples) + e1 = rng.normal(0, 0.02, n_samples) + u0 = rng.uniform(0, 1, n_samples + max_delay) + u1 = rng.normal(0, 0.1, n_samples + max_delay) + y0 = np.zeros(n_samples + max_delay) + y1 = np.zeros(n_samples + max_delay) + for i in range(max_delay, n_samples + max_delay): + y0[i] = ( + 0.5 * y0[i - 1] + + 0.8 * y1[i - 1] + + 0.3 * u0[i] ** 2 + + 2 * u0[i - 1] * u0[i - 3] + + 1.5 * u0[i - 2] * u1[i - 3] + + 1 + ) + y1[i] = ( + 0.6 * y1[i - 1] + - 0.2 * y0[i - 1] * y1[i - 2] + + 0.3 * u1[i] ** 2 + + 1.5 * u1[i - 2] * u0[i - 3] + + 0.5 + ) + y = np.c_[y0[max_delay:] + e0, y1[max_delay:] + e1] + X = np.c_[u0[max_delay:], u1[max_delay:]] + + feat_ids = np.array( + [ + [-1, 2], + [-1, 3], + [0, 0], + [0, 0], + [0, 1], + [-1, 3], + [2, 3], + [1, 1], + [1, 0], + ] + ) + + delay_ids = np.array( + [ + [-1, 1], + [-1, 1], + [0, 0], + [1, 3], + [2, 3], + [-1, 1], + [1, 2], + [0, 0], + [2, 3], + ] + ) + + output_ids = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1]) + + coef = np.array( + [ + 0.5, + 0.8, + 0.3, + 2, + 1.5, + 0.6, + -0.2, + 0.3, + 1.5, + ] + ) + + intercept = np.array([1, 0.5]) + + # NARX Jacobian + cfd_ids = NARX._get_cfd_ids(feat_ids, delay_ids, output_ids, X.shape[1]) + grad = NARX._grad( + np.r_[coef, intercept], + NARX._expression, + X, + y, + feat_ids, + delay_ids, + output_ids, + sample_weight_sqrt=np.sqrt(np.ones((y.shape[0], 1))), + cfd_ids=cfd_ids, + ) + + # Numerical gradient + y_hat_0 = NARX._predict( + NARX._expression, + X=X, + y_ref=y, + coef=coef, + intercept=intercept, + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=output_ids, + ) + loss_0 = 0.5*np.sum((y_hat_0 - y)**2) + + delta_w = 0.00001 + for i in range(len(coef)+len(intercept)): + if i < len(coef): + coef_1 = np.copy(coef) + coef_1[i] += delta_w + intercept_1 = np.copy(intercept) + else: + coef_1 = np.copy(coef) + intercept_1 = np.copy(intercept) + intercept_1[i-len(coef)] += delta_w + + y_hat_1 = NARX._predict( + NARX._expression, + X=X, + y_ref=y, + coef=coef_1, + intercept=intercept_1, + feat_ids=feat_ids, + delay_ids=delay_ids, + output_ids=output_ids, + ) + + e1 = y_hat_1 - y + loss_1 = 0.5*np.sum((e1)**2) + grad_num = (loss_1 - loss_0) / delta_w + + assert_allclose(grad.sum(axis=0)[i], grad_num, rtol=1e-1) From 539fa28dcf7ec53aae71bb9250fcc7408880e5cb Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:05:03 +0800 Subject: [PATCH 2/7] TST add divergence test for narx --- .github/workflows/lint.yml | 4 +- fastcan/narx.py | 8 +- pixi.lock | 1412 +++++++++++++++++------------------- pyproject.toml | 4 - tests/test_narx.py | 24 + 5 files changed, 691 insertions(+), 761 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 6f3a063..e150c3f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,14 +9,14 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: prefix-dev/setup-pixi@v0.8.3 + - uses: prefix-dev/setup-pixi@v0.8.4 with: environments: default cache: true - name: Re-install local run: | - pixi run rebuild + pixi reinstall --frozen fastcan - name: Lint with ruff run: | diff --git a/fastcan/narx.py b/fastcan/narx.py index e8ea254..acb0640 100644 --- a/fastcan/narx.py +++ b/fastcan/narx.py @@ -406,10 +406,10 @@ class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): >>> print_narx(narx) | yid | Term | Coef | ======================================= - | 0 | Intercept | 1.008 | - | 0 | y_hat[k-1,0] | 0.498 | - | 0 | X[k-2,0] | 0.701 | - | 0 | X[k-1,0]*X[k-3,0] | 1.496 | + | 0 | Intercept | 1.069 | + | 0 | y_hat[k-1,0] | 0.478 | + | 0 | X[k-2,0] | 0.716 | + | 0 | X[k-1,0]*X[k-3,0] | 1.504 | """ _parameter_constraints: dict = { diff --git a/pixi.lock b/pixi.lock index aa95c74..61d5059 100644 --- a/pixi.lock +++ b/pixi.lock @@ -16,8 +16,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda @@ -49,21 +49,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - pypi: . osx-64: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.9.0-h694c41f_0.conda @@ -74,17 +74,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda @@ -95,9 +96,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-he8ee3e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda @@ -121,7 +122,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: . @@ -129,15 +130,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.9.0-hdf49b6b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18-18.1.8-default_hf90f093_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18.1.8-default_h474c9e2_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-18.1.8-default_h1ffe849_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-18.1.8-h856b3c1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-18.1.8-h832e737_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.9.0-hce30654_0.conda @@ -148,17 +149,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp18.1-18.1.8-default_hf90f093_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -169,9 +171,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda @@ -195,7 +197,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: . @@ -207,8 +209,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-31_h641d27c_mkl.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda @@ -216,7 +218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda @@ -235,10 +237,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - pypi: . dev: channels: @@ -275,7 +277,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py313h33d0bda_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda @@ -286,7 +288,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 @@ -300,7 +302,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.0.0-h76408a6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -342,28 +344,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.7-default_hb5137d0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.7-default_h9c6a7e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.1-default_hb5137d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.1-default_h9c6a7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.0-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.7-ha7bfdaf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.1-ha7bfdaf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda @@ -381,7 +383,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda @@ -415,10 +417,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py313h8db990d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda @@ -428,10 +429,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.2-py313h5f61773_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.3-py313h5f61773_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda @@ -440,19 +441,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py313h8e95178_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.2-h588cce1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.3-h6441bc3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py313h6071e0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py313h6071e0b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py313h8ef605b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py313h86fcf2b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda @@ -470,10 +471,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda @@ -546,25 +547,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_24.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-18.1.8-h1020d70_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-18.1.8-hf2b8a54_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.9.0-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.1-py313ha0b1807_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py313h717bdf5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda @@ -587,6 +588,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -616,8 +618,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py313h0c4e38b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda @@ -625,12 +627,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda @@ -647,9 +649,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-he8ee3e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda @@ -681,9 +683,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.1.0-py313h0c4f865_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda @@ -695,7 +696,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.0-py313h19a8f7f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.0-py313h19a8f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -706,7 +707,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda @@ -717,7 +718,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py313h72dc32c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py313h72dc32c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.6.1-py313hedeaec8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py313h7e69c36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -737,10 +738,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -793,25 +794,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18-18.1.8-default_hf90f093_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18.1.8-default_h474c9e2_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_24.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-18.1.8-default_h1ffe849_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_23.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_23.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_24.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-18.1.8-h856b3c1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-18.1.8-h832e737_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.9.0-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.1-py313h0ebd0e5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py313ha9b7d5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.9.0-hba80287_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cython-3.0.12-py313hd607753_0.conda @@ -834,6 +835,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -863,8 +865,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py313hf9c7212_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda @@ -872,12 +874,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp18.1-18.1.8-default_hf90f093_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda @@ -894,9 +896,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda @@ -928,9 +930,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py313hb37fac4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda @@ -942,7 +943,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py313hb6afeec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py313hb6afeec_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda @@ -953,7 +954,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda @@ -964,7 +965,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py313hb5fa170_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py313hb5fa170_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.6.1-py313hecba28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py313h9a24e0a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda @@ -984,10 +985,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda @@ -1046,7 +1047,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.1-py313h1ec8472_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py313hb4c8b1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cython-3.0.12-py313h11c7957_0.conda @@ -1069,7 +1070,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.0.0-h9e37d49_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda @@ -1110,12 +1111,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.7-default_ha5278ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.1-default_ha5278ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.0-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda @@ -1131,7 +1132,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda @@ -1161,10 +1162,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.1.0-py313hda88b71_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.0.1-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda @@ -1173,10 +1173,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.2-py313h3e3797f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.3-py313h3e3797f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda @@ -1185,7 +1185,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda @@ -1193,12 +1193,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.2-h1259614_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.3-h72a539a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py313h54fc02f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py313h54fc02f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.6.1-py313h4f67946_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py313h2eca4b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda @@ -1217,16 +1217,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda @@ -1264,53 +1264,52 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py312hf79aa60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py313hfe82de2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda osx-64: - - conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda @@ -1321,18 +1320,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h534c281_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.0-py313h2e013d6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/black-25.1.0-py313h8f79df9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda @@ -1340,9 +1339,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cython-3.0.12-py313hd607753_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda @@ -1353,28 +1352,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.2-h81fe080_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.0-py313h35210b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.2-py313h35210b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/black-25.1.0-py313hfa70ccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cython-3.0.12-py313h11c7957_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda @@ -1384,20 +1383,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-h261c0b1_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.0-py313he8c32b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.2-py313he8c32b4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda nogil: channels: - url: https://conda.anaconda.org/conda-forge/ @@ -1411,8 +1410,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda @@ -1438,7 +1437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -1449,9 +1448,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda @@ -1471,7 +1470,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl @@ -1482,9 +1481,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda @@ -1504,7 +1503,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl @@ -1515,8 +1514,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2025.1.31-h56e8100_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda @@ -1534,10 +1533,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl @@ -1777,36 +1776,20 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 145482 timestamp: 1738740460562 -- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda - sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef - md5: 986a60de52eec10b36c61bb3890858ff +- conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + sha256: c68f110cd491dc839a69e340930862e54c00fb02cede5f1831fcf8a253bd68d2 + md5: b9b0c42e7316aa6043bdfd49883955b8 depends: - click >=8.0.0 - mypy_extensions >=0.4.3 - packaging >=22.0 - pathspec >=0.9 - platformdirs >=2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 394760 - timestamp: 1738616131766 -- conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py313habf4b1d_0.conda - sha256: 293c0048448eec702c58f12aa7ccab71102e5e61482d3ad6439208ab4d7b5ada - md5: c4f8ef5281c64a0f15ec659e51bb079f - depends: - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9 - - platformdirs >=2 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.11 license: MIT license_family: MIT - size: 401564 - timestamp: 1738616279268 + size: 172678 + timestamp: 1742502887437 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/black-25.1.0-py313h8f79df9_0.conda sha256: ef2f742f6abefc32506038a4c64bf0c086c8e13234c1fe80c8675c7f92589cc2 md5: 698e6c77b39a4f3d82c8e2e7d82b81c8 @@ -1823,21 +1806,6 @@ packages: license_family: MIT size: 400095 timestamp: 1738616517582 -- conda: https://conda.anaconda.org/conda-forge/win-64/black-25.1.0-py313hfa70ccb_0.conda - sha256: ab34cfafbe51d5bb0da065ae713d097f7c202d776a30f84e310e87255b907d73 - md5: ddf3f99b2a7fb620e22379e9215ef15b - depends: - - click >=8.0.0 - - mypy_extensions >=0.4.3 - - packaging >=22.0 - - pathspec >=0.9 - - platformdirs >=2 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - license: MIT - license_family: MIT - size: 425644 - timestamp: 1738616404980 - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd md5: f0b4c8e370446ef89797608d60a564b3 @@ -2200,33 +2168,33 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_3.conda - sha256: c2fa3a11ab0576ca569f6d4e349c1e4dc9f864fb9f8c85c09a427f7fbd3feb96 - md5: 35dcc7020f26efb8baf60ce6fa0b0c36 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda + sha256: 2113fe10f67ddaf2b34522c755924f0f89a4c9507604baddb5a3091b8fac03dc + md5: df1dfc9721444ad44d0916d9454e55f3 depends: - - cctools_osx-64 1010.6 hd19c6af_3 - - ld64 951.9 h4e51db5_3 + - cctools_osx-64 1010.6 hd19c6af_4 + - ld64 951.9 h4e51db5_4 - libllvm18 >=18.1.8,<18.2.0a0 license: APSL-2.0 license_family: Other purls: [] - size: 21297 - timestamp: 1738620872016 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_3.conda - sha256: 0db4f99ac1626a2f5dd1d1e61e11f66f545145e00798e740ae1ceda16b66eaad - md5: cd2b980fbc46ae69530ad1cead7a514d + size: 21571 + timestamp: 1742512411843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda + sha256: 02f7ab57ddf0bfe291dac3a3e59ab7c65a3ae0a3a086440a7e2666b0e862b922 + md5: 2fecdd2278ff651073e9373f32151e41 depends: - - cctools_osx-arm64 1010.6 h3b4f5d3_3 - - ld64 951.9 h4c6efb1_3 + - cctools_osx-arm64 1010.6 h3b4f5d3_4 + - ld64 951.9 h4c6efb1_4 - libllvm18 >=18.1.8,<18.2.0a0 license: APSL-2.0 license_family: Other purls: [] - size: 21328 - timestamp: 1738620750628 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_3.conda - sha256: 2694cafb16b591c6c0008b9862c2da45c5b618381aaa229a4b32f71df04cfcc0 - md5: b360b015bfbce96ceecc3e6eb85aed11 + size: 21539 + timestamp: 1742512631773 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda + sha256: 4ca98572322a0dcc227b499fec46e37a46f81dded92a7d299ac3ec6cc3a4beed + md5: 1ddf5221f68b7df9e22795cdb01933e2 depends: - __osx >=10.13 - ld64_osx-64 >=951.9,<951.10.0a0 @@ -2242,11 +2210,11 @@ packages: license: APSL-2.0 license_family: Other purls: [] - size: 1121052 - timestamp: 1738620829929 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_3.conda - sha256: 58df79fb5565df7e033a7fcda0807df4752de4a96ea7b95c4af67a6c47ceeff8 - md5: f99351319cd8e651a571c80071cee1a2 + size: 1119334 + timestamp: 1742512370787 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda + sha256: e223912a174344cddfe7ea8a598d091b18e5defbc63c2037c3e42165654b09dc + md5: 57ce83eec79eff26016ae3e1af07e431 depends: - __osx >=11.0 - ld64_osx-arm64 >=951.9,<951.10.0a0 @@ -2262,8 +2230,8 @@ packages: license: APSL-2.0 license_family: Other purls: [] - size: 1104781 - timestamp: 1738620712841 + size: 1104264 + timestamp: 1742512583707 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 md5: c207fa5ac7ea99b149344385a9c0880d @@ -2394,9 +2362,9 @@ packages: purls: [] size: 811547 timestamp: 1742266095150 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_23.conda - sha256: 1b6d10afcfc661500f98c81a3c6bf55a923e75ce74bc404e84c99f030fd647de - md5: 3f2a260a1febaafa4010aac7c2771c9e +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_24.conda + sha256: 27b5f4400cee37eea37160d0f65061804d34e403ed3d43a5e8fcad585b6efc6e + md5: 5224d53acc2604a86d790f664d7fcbc4 depends: - cctools_osx-64 - clang 18.1.8.* @@ -2406,11 +2374,11 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17783 - timestamp: 1731984965328 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_23.conda - sha256: 5f49818d2dc54690038e8ee8f9ca9f786add01e1eebdd0146c15c845d2735630 - md5: f89c390134d7f878f426bb1c4ef1d1c4 + size: 18260 + timestamp: 1742540331307 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_24.conda + sha256: a4c7e5be890ef35f88ee982ff400286a3e1f2d244fd32ca3e99b323ed3a8e161 + md5: 731d426a8f1944b0bd6067cddb226b2d depends: - cctools_osx-arm64 - clang 18.1.8.* @@ -2420,28 +2388,28 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17923 - timestamp: 1731985038776 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_23.conda - sha256: 07348ac1da6697b72623be27f145c0fbaa03a123244a0289f1c6779a889e8339 - md5: 207116d6cb3762c83661bb49e6976e7d + size: 18421 + timestamp: 1742540369820 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-18.1.8-h7e5c614_24.conda + sha256: 92312c3858147d734406e2c9f4d9543bb4df40efb7c27a30382e2fe0b8aad87f + md5: 24e1a9c1296772ec45bfcd6a0d855fa5 depends: - - clang_impl_osx-64 18.1.8 h6a44ed1_23 + - clang_impl_osx-64 18.1.8 h6a44ed1_24 license: BSD-3-Clause license_family: BSD purls: [] - size: 21092 - timestamp: 1731984970165 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_23.conda - sha256: 13e6ac210e2ad57ee20c5d1c74ba1b72af25d3731b3dedc51e339780c8ce1fb1 - md5: 29513735b8af0018e3ce8447531d69dd + size: 21517 + timestamp: 1742540335596 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-18.1.8-h07b0088_24.conda + sha256: d5faf5ad36c506a1b2e2834531bc217ee8831a59238a7afde724a66fbabb6d9c + md5: de649d74cfd4b57b40668fbeb25441be depends: - - clang_impl_osx-arm64 18.1.8 h2ae9ea5_23 + - clang_impl_osx-arm64 18.1.8 h2ae9ea5_24 license: BSD-3-Clause license_family: BSD purls: [] - size: 21100 - timestamp: 1731985043856 + size: 21584 + timestamp: 1742540373638 - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.8-default_heb2e8d1_8.conda sha256: a99947172ab2a3bf244ea1c024e7e3a8e1aabb8921cc5e648004f246f5df87c7 md5: 06a53a18fa886ec96f519b9022eeb449 @@ -2464,54 +2432,54 @@ packages: purls: [] size: 76359 timestamp: 1742266208123 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_23.conda - sha256: f8b2b92c1389ddaadf3eb8f11d63403fcbb5b532299d9f86f54cc1f256fad1c0 - md5: 8f15135d550beba3e9a0af94661bed16 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-18.1.8-h4b7810f_24.conda + sha256: 1735b123cebcffaa54699fcae4295c0bd308c9bf27df3924cab78f3b3d1a9890 + md5: 9d27517a71e7268679f1c47e7f34e47b depends: - - clang_osx-64 18.1.8 h7e5c614_23 + - clang_osx-64 18.1.8 h7e5c614_24 - clangxx 18.1.8.* - libcxx >=18 - libllvm18 >=18.1.8,<18.2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 17821 - timestamp: 1731984993303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_23.conda - sha256: fd9d6c6af62716a57bb3a0b57c041d402f13e1d6fd9198dd9319b1e7f080f207 - md5: 88db6c2693489e670a7c8190766f2918 + size: 18321 + timestamp: 1742540369852 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-18.1.8-h555f467_24.conda + sha256: e773469d2a6299307ccf1104cfc082745e14833385d98392c927bdaa4c355bc0 + md5: 32e1d91f44681b97571ee2a6ef5fbdea depends: - - clang_osx-arm64 18.1.8 h07b0088_23 + - clang_osx-arm64 18.1.8 h07b0088_24 - clangxx 18.1.8.* - libcxx >=18 - libllvm18 >=18.1.8,<18.2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 17960 - timestamp: 1731985074850 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_23.conda - sha256: 36315114552b56069cc6792289b119ab62d311f435d9abd98a4cc61a857c2970 - md5: b6ee451fb82e7e27ea070cbac3117d59 + size: 18451 + timestamp: 1742540405771 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-18.1.8-h7e5c614_24.conda + sha256: df7da4c9f0a36c8b600f98627c9b70b333f6349a6dd4deab5a7d263b81eb85d1 + md5: c1e7c7d5c04d0ea456aa48ddb8a9dc2b depends: - - clang_osx-64 18.1.8 h7e5c614_23 - - clangxx_impl_osx-64 18.1.8 h4b7810f_23 + - clang_osx-64 18.1.8 h7e5c614_24 + - clangxx_impl_osx-64 18.1.8 h4b7810f_24 license: BSD-3-Clause license_family: BSD purls: [] - size: 19451 - timestamp: 1731984998897 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_23.conda - sha256: 60f9b6601cf679fa0662f07861ac27353a4840e3a91ad535fa20fe6dfe36d167 - md5: 92b506ed612c7a9ab0b11a4b7cc6149d + size: 19911 + timestamp: 1742540376735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-18.1.8-h07b0088_24.conda + sha256: 39566229d6a47513b73dfc7c888176a6706d45533f84dbaf2042f91af6f1b4f8 + md5: b9b3c5e969fa6a46598d5f70fd293c8d depends: - - clang_osx-arm64 18.1.8 h07b0088_23 - - clangxx_impl_osx-arm64 18.1.8 h555f467_23 + - clang_osx-arm64 18.1.8 h07b0088_24 + - clangxx_impl_osx-arm64 18.1.8 h555f467_24 license: BSD-3-Clause license_family: BSD purls: [] - size: 19500 - timestamp: 1731985079756 + size: 19975 + timestamp: 1742540410050 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab md5: f22f4d4970e09d68a10b922cbb0408d3 @@ -2695,9 +2663,9 @@ packages: - pkg:pypi/contourpy?source=hash-mapping size: 217444 timestamp: 1731429291382 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.7.0-py313h8060acc_0.conda - sha256: 6f0ba84bc58a7720976c556d85216f6fde9cdd7299436c219fd3720caab86e43 - md5: 525d19c5d905e7e114b2c90bfa4d86bb +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.8.0-py313h8060acc_0.conda + sha256: 080e95415d3f93652c9d2db4203bb9253341f9d266f583b45fdbcf9c0d3aa046 + md5: 375064d30e709bf7c1d4580e70aaea61 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -2707,12 +2675,12 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 378978 - timestamp: 1742157149061 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.7.0-py313h717bdf5_0.conda - sha256: f1463d2b37d1544fdd86bfee2223f291fc45b34865928bf26adb850356360de2 - md5: db8b2b55a646df18328fcacacdc9eb46 + - pkg:pypi/coverage?source=compressed-mapping + size: 379520 + timestamp: 1743381407319 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.8.0-py313h717bdf5_0.conda + sha256: 6d9ad7206620b893525cd02f9211b58edcacd0e4c9b115eed55f2623572a53a6 + md5: 1215b56c8d9915318d1714cbd004035f depends: - __osx >=10.13 - python >=3.13,<3.14.0a0 @@ -2722,11 +2690,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 377705 - timestamp: 1742157025554 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.7.0-py313ha9b7d5b_0.conda - sha256: a984d8f54a56d46cc2a96d8431fa9bab64ba58025cc73ff027e971c4ba7b810d - md5: 10ab8915b3d9a96dcbbfa88605ce55f5 + size: 378116 + timestamp: 1743381459261 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.8.0-py313ha9b7d5b_0.conda + sha256: 19ab40f9c5424988029e0fa24f3ee8bdd6ab017a74318ab60bb8f401fec6c8af + md5: d2d7f1911137fdc0d747ebe3d200bc45 depends: - __osx >=11.0 - python >=3.13,<3.14.0a0 @@ -2736,12 +2704,12 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/coverage?source=hash-mapping - size: 377323 - timestamp: 1742157060268 -- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.7.0-py313hb4c8b1a_0.conda - sha256: 33888f01958910955d66d56a400f60fbd3c0a297c6c78fd60d629b66d9a60c82 - md5: 6cf3289aa6e75a352288bd4b39388eef + - pkg:pypi/coverage?source=compressed-mapping + size: 379556 + timestamp: 1743381478018 +- conda: https://conda.anaconda.org/conda-forge/win-64/coverage-7.8.0-py313hb4c8b1a_0.conda + sha256: 7d14ccc7cf4e54131966f7f830b9bf8e769c1ca7c8fe4ea8bc344edb9a51ab50 + md5: 6bf0550f69baeb8fd2c101d72d544fa2 depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -2753,8 +2721,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 404236 - timestamp: 1742157295512 + size: 404719 + timestamp: 1743381531629 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda noarch: generic sha256: 8a14917414b5e89d0eeda21594658b03e9fb05d9fa3791b8c5501328b9714f37 @@ -2828,19 +2796,6 @@ packages: name: cython version: 3.1.0b0 requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda - sha256: de815476da537b911e2ceeb7f76b445d0c76b3d5fad35600ed28bc8d19302127 - md5: e5d2a28866ee990a340bde1eabde587a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 3766553 - timestamp: 1739228870146 - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda sha256: 8341920c1a53a418a359c2afc52ca5a8b9440667599bf149eebc7c925b639554 md5: 24a42a0c1cc33743e33572d63d489b54 @@ -3056,22 +3011,22 @@ packages: - pkg:pypi/executing?source=hash-mapping size: 28348 timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 - md5: 1d6afef758879ef5ee78127eb4cd2c4a +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.7.0-h5888daf_0.conda + sha256: dd5530ddddca93b17318838b97a2c9d7694fa4d57fc676cf0d06da649085e57a + md5: d6845ae4dea52a2f90178bf1829a21f8 depends: - __glibc >=2.17,<3.0.a0 - - libexpat 2.6.4 h5888daf_0 + - libexpat 2.7.0 h5888daf_0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 138145 - timestamp: 1730967050578 + size: 140050 + timestamp: 1743431809745 - pypi: . name: fastcan version: 0.3.2 - sha256: f9bd1b579b67c308ff785361755ff0082aa1d300337218f68589a7633ace0aef + sha256: 03075a84c4818be567d7a56dedb876efa71f811733d411f41bcb2c93163cfdf4 requires_dist: - scikit-learn>=1.6.0 - furo ; extra == 'docs' @@ -3491,35 +3446,35 @@ packages: - pkg:pypi/h2?source=hash-mapping size: 53888 timestamp: 1738578623567 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.4.0-h76408a6_0.conda - sha256: 3b4ccabf170e1bf98c593f724cc4defe286d64cb19288751a50c63809ca32d5f - md5: 81f137b4153cf111ff8e3188b6fb8e73 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.0.0-h76408a6_0.conda + sha256: 9d33201d3e12a61d4ea4b1252a3468afb18b11a418f095dceffdf09bc6792f59 + md5: 347cb348bfc8d77062daee11c326e518 depends: - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - libexpat >=2.6.4,<3.0a0 - libgcc >=13 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1694183 - timestamp: 1741016164622 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-10.4.0-h9e37d49_0.conda - sha256: 4e8a5219328697247b682b161e02577613b50d20237d4b3e575713d811036895 - md5: 63185f1b04a3f5ebd728cf1bec2dbedc + size: 1720702 + timestamp: 1743082646624 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.0.0-h9e37d49_0.conda + sha256: f1ab5960a52a11186f528249bec5ce5e43bb4c44c87ffa24334255f07c3fd4b8 + md5: b7648427f5b6797ae3904ad76e4c7f19 depends: - - cairo >=1.18.2,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.4,<2.0a0 + - freetype >=2.13.3,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - libexpat >=2.6.4,<3.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -3527,8 +3482,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1112646 - timestamp: 1741017842033 + size: 1125019 + timestamp: 1743083466989 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -3594,6 +3549,26 @@ packages: purls: [] size: 12129203 timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + size: 11761697 + timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + size: 11857802 + timestamp: 1720853997952 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 md5: 8579b6bb8d18be7c0b27fb08adeeeb40 @@ -4342,11 +4317,11 @@ packages: purls: [] size: 510641 timestamp: 1739161381270 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_3.conda - sha256: 36e5a42c7aebad58d629c6bc1cb36243653a935e609e03a89b22005aa4ab2ddb - md5: d1743e343b8e13a4980dac16f050d2b6 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda + sha256: ec0bb8cc8cce0237fe84a737a6367fd3621126076b739ea89de49f451e92506a + md5: a35ccc73726f64d22dc9c4349f5c58bd depends: - - ld64_osx-64 951.9 h33512f0_3 + - ld64_osx-64 951.9 h33512f0_4 - libllvm18 >=18.1.8,<18.2.0a0 constrains: - cctools 1010.6.* @@ -4354,13 +4329,13 @@ packages: license: APSL-2.0 license_family: Other purls: [] - size: 18577 - timestamp: 1738620853804 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_3.conda - sha256: 85e239ab3c1fdf491e32d797995e5f4b7873e055aebcd2d1fdcb29cede1a6a10 - md5: 0fa58d2a5918cc82fc409e4f6973a02c + size: 18874 + timestamp: 1742512391779 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda + sha256: 4806f1356117fe4a6c0c9927587cd456ee9a891bb943e300b03aff9f17ad3a5c + md5: de921c0941f051f3b019d46a0c83fdda depends: - - ld64_osx-arm64 951.9 hb6b49e2_3 + - ld64_osx-arm64 951.9 hb6b49e2_4 - libllvm18 >=18.1.8,<18.2.0a0 constrains: - cctools 1010.6.* @@ -4368,11 +4343,11 @@ packages: license: APSL-2.0 license_family: Other purls: [] - size: 18607 - timestamp: 1738620734041 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_3.conda - sha256: 4e6a37e3ea23a3d2f9b25b1b476728be6b5a1bab326fa5a976997698c60f70c0 - md5: f5c97cad6996928bdffc55b8f5e70723 + size: 18894 + timestamp: 1742512610229 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda + sha256: 809c88c6ca19e08707320dff428ea4936b151324faed71ca5600f6bf54ce5504 + md5: b1678041160c249a3df7937be93c56aa depends: - __osx >=10.13 - libcxx @@ -4380,18 +4355,18 @@ packages: - sigtool - tapi >=1300.6.5,<1301.0a0 constrains: - - clang >=18.1.8,<19.0a0 - - ld 951.9.* - cctools_osx-64 1010.6.* - cctools 1010.6.* + - clang >=18.1.8,<19.0a0 + - ld 951.9.* license: APSL-2.0 license_family: Other purls: [] - size: 1100751 - timestamp: 1738620763081 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_3.conda - sha256: d79dbb1016fac31ee90b3b5202270c1d331bd9987d6418b35fda473fcde6c126 - md5: 34d3acfffa837eef8c2912cd7c2156f2 + size: 1099376 + timestamp: 1742512322014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda + sha256: 0376873d88573688168b5b7618391dd68fa0b309ddce7fa77c5f9037ada7cf66 + md5: d01a78a16542f235dd755ca66772795e depends: - __osx >=11.0 - libcxx @@ -4399,15 +4374,15 @@ packages: - sigtool - tapi >=1300.6.5,<1301.0a0 constrains: - - cctools_osx-arm64 1010.6.* - - cctools 1010.6.* - ld 951.9.* - clang >=18.1.8,<19.0a0 + - cctools 1010.6.* + - cctools_osx-arm64 1010.6.* license: APSL-2.0 license_family: Other purls: [] - size: 1018029 - timestamp: 1738620654864 + size: 1019138 + timestamp: 1742512519169 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 md5: 01f8d123c96816249efd255a31ad7712 @@ -4753,35 +4728,35 @@ packages: purls: [] size: 13330731 timestamp: 1742265504673 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.7-default_hb5137d0_2.conda - sha256: 658c8000f3be74ad926b376b48903036611b5beccc07f729417730c49bd73a30 - md5: 62d6f9353753a12a281ae99e0a3403c4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.1-default_hb5137d0_0.conda + sha256: 3b79cdf6bb6d5f42a73f5db5f3dd9fb5563b44f24e761d02faeb52b9506019f4 + md5: 331dee424fabc0c26331767acc93a074 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libllvm19 >=19.1.7,<19.2.0a0 + - libllvm20 >=20.1.1,<20.2.0a0 - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 20556230 - timestamp: 1742267376167 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.7-default_h9c6a7e4_2.conda - sha256: 433b262bb9c8ea74f8cb5a0826e2e82ed1596dcdd24472650d6200021090126c - md5: 60ad13c9ea9209cb604799d1e5eaac9a + size: 20878931 + timestamp: 1742506161165 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.1-default_h9c6a7e4_0.conda + sha256: e73fef6a7eeb800220b435561126597639e78e3bc1d8f2f32ad6f89de07b5308 + md5: f8b1b8c13c0a0fede5e1a204eafb48f8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libllvm19 >=19.1.7,<19.2.0a0 + - libllvm20 >=20.1.1,<20.2.0a0 - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 11820854 - timestamp: 1742267610795 -- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.7-default_ha5278ca_2.conda - sha256: ead8fb1f0368e48fe35967f6e3ea0f2cd05c6b400a4ed6e6d6e0ceaec97058df - md5: bffec6d2f83d4ec9c5c202490d6e126e + size: 12114034 + timestamp: 1742506367797 +- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.1-default_ha5278ca_0.conda + sha256: f8aa908391700fc19e736ab1c598a952bef1bbb72192790988a414216929cab8 + md5: c432d7ab334986169fd534725fc9375d depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -4791,8 +4766,8 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 26753816 - timestamp: 1742320088942 + size: 28339961 + timestamp: 1742537164 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 md5: d4529f4dff3057982a7617c7ac58fde3 @@ -4806,46 +4781,46 @@ packages: purls: [] size: 4519402 timestamp: 1689195353551 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.7-hf95d169_0.conda - sha256: 6b2fa3fb1e8cd2000b0ed259e0c4e49cbef7b76890157fac3e494bc659a20330 - md5: 4b8f8dc448d814169dbc58fc7286057d +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + sha256: b30ef239517cfffb71d8ece7b903afe2a1bac0425f5bd38976b35d3cbf77312b + md5: 85cff0ed95d940c4762d5a99a6fe34ae depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 527924 - timestamp: 1736877256721 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 - md5: 5b3e1610ff8bd5443476b91d618f5b77 + size: 562132 + timestamp: 1742449741333 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + sha256: 80dd8ae3fbcf508ed72f074ada2c7784298e822e8d19c3b84c266bb31456d77c + md5: 833c4899914bf96caf64b52ef415e319 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 523505 - timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_7.conda - sha256: 5d886a04be00a5a54a81fb040aacd238d0d55d4522c61c7875b675b803c748a3 - md5: 0c389f3214ce8cad37a12cb0bae44c54 + size: 561543 + timestamp: 1742449846779 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda + sha256: cb3cce2b312aa1fb7391672807001bbab4d6e2deb16d912caecf6219f58ee1f4 + md5: a9513c41f070a9e2d5c370ba5d6c0c00 depends: - libcxx >=18.1.8 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 792227 - timestamp: 1725403715206 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_7.conda - sha256: 4b5023b998f426b331db9d7f8de8260004c7f9b7ca96a31ad23860ba1e1b7b88 - md5: b0f818db788046d60ffc693ddec7e26e + size: 794361 + timestamp: 1742451346844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda + sha256: ff83d001603476033eca155ce77f7ba614d9dc70c5811e2ce9915a3cadacb56f + md5: fdf0850d6d1496f33e3996e377f605ed depends: - libcxx >=18.1.8 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 793242 - timestamp: 1725403658086 + size: 794791 + timestamp: 1742451369695 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 md5: 8dfae1d2e74767e9ce36d5fa0d8605db @@ -4948,89 +4923,91 @@ packages: purls: [] size: 44840 timestamp: 1731330973553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 - md5: db833e03127376d461e1e13e76f09b6c +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda + sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505 + md5: db0bfbe7dd197b68ad5f30333bae6ce0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 73304 - timestamp: 1730967041968 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 - md5: 20307f4049a735a78a29073be1be2626 + size: 74427 + timestamp: 1743431794976 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda + sha256: 976f2e23ad2bb2b8e92c99bfa2ead3ad557b17a129b170f7e2dfcf233193dd7e + md5: 026d0a1056ba2a3dbbea6d4b08188676 depends: - __osx >=10.13 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 70758 - timestamp: 1730967204736 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf + size: 71894 + timestamp: 1743431912423 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + sha256: ee550e44765a7bbcb2a0216c063dcd53ac914a7be5386dd0554bd06e6be61840 + md5: 6934bbb74380e045741eb8637641a65b depends: - __osx >=11.0 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 64693 - timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 - md5: eb383771c680aa792feb529eaf9df82f + size: 65714 + timestamp: 1743431789879 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda + sha256: 1a227c094a4e06bd54e8c2f3ec40c17ff99dcf3037d812294f842210aa66dbeb + md5: b6f5352fdb525662f4169a0431d2dd7a depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - expat 2.6.4.* + - expat 2.7.0.* license: MIT license_family: MIT purls: [] - size: 139068 - timestamp: 1730967442102 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da - md5: e3eb7806380bc8bcecba6d749ad5f026 + size: 140896 + timestamp: 1743432122520 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda + sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab + md5: ede4673863426c0883c0063d853bbd85 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: MIT license_family: MIT purls: [] - size: 53415 - timestamp: 1739260413716 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_0.conda - sha256: 7805fdc536a3da7fb63dc48e040105cd4260c69a1d2bf5804dadd31bde8bab51 - md5: b8667b0d0400b8dcb6844d8e06b2027d + size: 57433 + timestamp: 1743434498161 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda + sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3 + md5: 4ca9ea59839a9ca8df84170fab4ceb41 depends: - __osx >=10.13 license: MIT license_family: MIT purls: [] - size: 47258 - timestamp: 1739260651925 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 + size: 51216 + timestamp: 1743434595269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 + md5: c215a60c2935b517dcda8cad4705734d + depends: + - __osx >=11.0 license: MIT license_family: MIT purls: [] - size: 39020 - timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_0.conda - sha256: 77922d8dd2faf88ac6accaeebf06409d1820486fde710cff6b554d12273e46be - md5: 31d5107f75b2f204937728417e2e39e5 + size: 39839 + timestamp: 1743434670405 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda + sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 + md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 @@ -5038,8 +5015,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 40830 - timestamp: 1739260917585 + size: 44978 + timestamp: 1743435053850 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 md5: ef504d1acbd74b7cc6849ef8af47dd03 @@ -5175,28 +5152,28 @@ packages: purls: [] size: 134712 timestamp: 1731330998354 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 - md5: 37d1af619d999ee8f1f73cf5a06f4e2f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.0-h2ff4ddf_0.conda + sha256: 8e8737ca776d897d81a97e3de28c4bb33c45b5877bbe202b9b0ad2f61ca39397 + md5: 40cdeafb789a5513415f7bdbef053cf5 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.82.2 *_1 + - glib 2.84.0 *_0 license: LGPL-2.1-or-later purls: [] - size: 3923974 - timestamp: 1737037491054 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_1.conda - sha256: 77c4e6af9cc4e966a5100f48378ea3fb4ab7ed913f24af9217cc3a43242d65d5 - md5: 40596e78a77327f271acea904efdc911 + size: 3998765 + timestamp: 1743038881905 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.0-h7025463_0.conda + sha256: 0b4f9581e2dba58bc38cb00453e145140cf6230a56887ff1195e63e2b1e3f1c2 + md5: ea8df8a5c5c7adf4c03bf9e3db1637c3 depends: - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 + - libiconv >=1.18,<2.0a0 - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 @@ -5204,11 +5181,11 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.82.2 *_1 + - glib 2.84.0 *_0 license: LGPL-2.1-or-later purls: [] - size: 3783933 - timestamp: 1737038122172 + size: 3842095 + timestamp: 1743039211561 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 md5: 434ca7e50e40f4918ab701e3facd59a0 @@ -5443,21 +5420,21 @@ packages: purls: [] size: 25986548 timestamp: 1737837114740 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.7-ha7bfdaf_1.conda - sha256: 22909d64038bdc87de61311c4ae615dc574a548a7340b963bb7c9eb61b191669 - md5: 6d2362046dce932eefbdeb0540de0c38 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.1-ha7bfdaf_0.conda + sha256: 28c4f97a5d03e6fcd7fef80ae415e28ca1bdbe9605172c926099bdb92b092b8b + md5: 2e234fb7d6eeb5c32eb5b256403b5795 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - libxml2 >=2.13.5,<3.0a0 + - libxml2 >=2.13.6,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 40143643 - timestamp: 1737789465087 + size: 42997088 + timestamp: 1742460259690 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -5540,15 +5517,6 @@ packages: purls: [] size: 88657 timestamp: 1723861474602 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 md5: 7c7927b404672409d9917d49bff5f2d6 @@ -5979,14 +5947,6 @@ packages: purls: [] size: 1208687 timestamp: 1727279378819 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb md5: e7e5b0652227d646b44abdcbd989da7b @@ -6003,9 +5963,9 @@ packages: purls: [] size: 644992 timestamp: 1741762262672 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 - md5: 328382c0e0ca648e5c189d5ec336c604 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h8d12d68_0.conda + sha256: 98f0a11d6b52801daaeefd00bfb38078f439554d64d2e277d92f658faefac366 + md5: 109427e5576d0ce9c42257c2421b1680 depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -6016,41 +5976,39 @@ packages: license: MIT license_family: MIT purls: [] - size: 690296 - timestamp: 1739952967309 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.6-he8ee3e7_0.conda - sha256: 6238384f6d5b68e231f0b83d081aec23c8ac2a17458c097fc81baa089a06ab94 - md5: 0f7ae42cd61056bfb1298f53caaddbc7 + size: 691755 + timestamp: 1743091084063 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda + sha256: 21119df0a2267a9fc52d67bdf55e5449a2cdcc799865e2f90ab734fd61234ed8 + md5: 45786cf4067df4fbe9faf3d1c25d3acf depends: - __osx >=10.13 + - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT purls: [] - size: 609656 - timestamp: 1739953197263 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda - sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 - md5: 8654012bd68aa48b94eee6c9faab85b6 + size: 609769 + timestamp: 1743091248758 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda + sha256: d3ddc9ae8a5474f16f213ca41b3eda394e1eb1253f3ac85d3c6c99adcfb226d8 + md5: aa838a099ba09429cb80cc876b032ac4 depends: - __osx >=11.0 + - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.6.4,<6.0a0 - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 license: MIT license_family: MIT purls: [] - size: 582490 - timestamp: 1739953065675 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.6-he286e8c_0.conda - sha256: 2919f4e9fffefbf3ff6ecd8ebe81584d573c069b2b82eaeed797b1f56ac8d97b - md5: c66d5bece33033a9c028bbdf1e627ec5 + size: 582736 + timestamp: 1743091513375 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda + sha256: 99182f93f1e7b678534df5f07ff94d7bf13a51386050f8fa9411fec764d0f39f + md5: aec4cf455e4c6cc2644abb348de7ff20 depends: - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -6060,8 +6018,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1669569 - timestamp: 1739953461426 + size: 1513490 + timestamp: 1743091551681 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda sha256: 684e9b67ef7b9ca0ca993762eeb39705ec58e2e7f958555c758da7ef416db9f3 md5: e71f31f8cfb0a91439f2086fc8aa0461 @@ -6137,30 +6095,30 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.7-ha54dae1_0.conda - sha256: b5b06821b0d4143f66ba652ffe6f535696dc3a4096175d9be8b19b1a7350c86d - md5: 65d08c50518999e69f421838c1d5b91f +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda + sha256: 2aeb63d771120fc7a8129ca81417c07cea09e3a0f47e097f1967a9c24888f5cf + md5: a1c6289fb8ae152b8cb53a535639c2c7 depends: - __osx >=10.13 constrains: - - openmp 19.1.7|19.1.7.* + - openmp 20.1.1|20.1.1.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 304885 - timestamp: 1736986327031 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 - md5: c4d54bfd3817313ce758aa76283b118d + size: 306748 + timestamp: 1742533059358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda + sha256: ae57041a588cd190cb55b602c1ed0ef3604ce28d3891515386a85693edd3c175 + md5: 97236e94c3a82367c5fe3a90557e6207 depends: - __osx >=11.0 constrains: - - openmp 19.1.7|19.1.7.* + - openmp 20.1.1|20.1.1.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 280830 - timestamp: 1736986295869 + size: 282105 + timestamp: 1742533199558 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda sha256: 694ec5d1753cfff97785f3833173c1277d0ca0711d7c78ffc1011b40e7842741 md5: 2585f8254d2ce24399a601e9b4e15652 @@ -6577,21 +6535,21 @@ packages: - pkg:pypi/munkres?source=hash-mapping size: 12452 timestamp: 1600387789153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 - md5: a84061bc7e166712deb33bf7b32f756d +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda + sha256: ba62b6ccf6775290dcc4ca01c160b29f1fb67300928609fff60126fdae38034d + md5: 80b1cac6f9ca2ab7d96690b8aff3114d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - mypy_extensions >=1.0.0 - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - typing_extensions >=4.1.0 license: MIT license_family: MIT - size: 18664849 - timestamp: 1738767977895 + size: 17058016 + timestamp: 1738767732637 - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py313h63b0ddb_0.conda sha256: ec50dc7be70eff5008d73b4bd29fba72e02e499e9b60060a49ece4c1e12a9d55 md5: e9dc60a2c2c62f4d2e24f61603f00bdc @@ -7382,17 +7340,18 @@ packages: - pkg:pypi/pkgutil-resolve-name?source=hash-mapping size: 10693 timestamp: 1733344619659 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda + sha256: ae7d3e58224d53d6b59e1f5ac5809803bb1972f0ac4fb10cd9b8c87d4122d3e0 + md5: e57da6fe54bb3a5556cf36d199ff07d8 depends: - python >=3.9 + - python license: MIT license_family: MIT purls: - - pkg:pypi/platformdirs?source=hash-mapping - size: 20448 - timestamp: 1733232756001 + - pkg:pypi/platformdirs?source=compressed-mapping + size: 23291 + timestamp: 1742485085457 - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 md5: e9dcbce5f45f9ee500e728ae58b605b6 @@ -7429,18 +7388,6 @@ packages: - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271905 timestamp: 1737453457168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 - md5: 8e30db4239508a538e4a3b3cdf5b9616 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 466219 - timestamp: 1740663246825 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852 md5: 8f315d1fce04a046c1b93fa6e536661d @@ -7561,15 +7508,15 @@ packages: - pkg:pypi/pure-eval?source=hash-mapping size: 16668 timestamp: 1733569518868 -- conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.1-pyhd8ed1ab_1.conda - sha256: 8671d9dcbf458adb6435616ded0fd71925f0fa1b074528604db2f64fac54bf52 - md5: e895db5e6cee923018cbb1656c8ca7fa +- conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda + sha256: ac68912b6c367d99923e2c049da66814985abf40fcc5880657b40a4ef244cf8b + md5: 1337989ba999ea04f7b30232c491cbea depends: - python >=3.9 license: MIT license_family: MIT - size: 34350 - timestamp: 1733216302933 + size: 34983 + timestamp: 1743430206011 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -7654,17 +7601,17 @@ packages: - pkg:pypi/pyobjc-framework-cocoa?source=hash-mapping size: 384331 timestamp: 1736927195004 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda - sha256: f513fed4001fd228d3bf386269237b4ca6bff732c99ffc11fcbad8529b35407c - md5: 285e237b8f351e85e7574a2c7bfa6d46 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda + sha256: b92afb79b52fcf395fd220b29e0dd3297610f2059afac45298d44e00fcbf23b6 + md5: 513d3c262ee49b54a8fec85c5bc99764 depends: - python >=3.9 license: MIT license_family: MIT purls: - pkg:pypi/pyparsing?source=hash-mapping - size: 93082 - timestamp: 1735698406955 + size: 95988 + timestamp: 1743089832359 - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda sha256: 7eea506a4296ff86ccd1f3f07dfd262b2ee1970886d53185b2b975abc6b506b5 md5: 22ae7c6ea81e0c8661ef32168dda929b @@ -7689,41 +7636,41 @@ packages: - pkg:pypi/pyproject-hooks?source=hash-mapping size: 15528 timestamp: 1733710122949 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.2-py313h5f61773_1.conda - sha256: 632fe730a6dc7cf634e01fbafac7094ef4f950e0908a298702dfcc39c5a4ade3 - md5: ad32d79e54eaac473a26f4bc56c58c51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.3-py313h5f61773_0.conda + sha256: dbfe1e0480d0a4db631a9b54ce1306bc521995d8c8896d9ac1a5f5ade109462a + md5: 920bd63af614ba2bf6f5dd7d6922d5b7 depends: - __glibc >=2.17,<3.0.a0 - - libclang13 >=19.1.7 + - libclang13 >=20.1.1 - libegl >=1.7.0,<2.0a0 - libgcc >=13 - libgl >=1.7.0,<2.0a0 - libopengl >=1.7.0,<2.0a0 - libstdcxx >=13 - - libxml2 >=2.13.6,<3.0a0 + - libxml2 >=2.13.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.8.2.* - - qt6-main >=6.8.2,<6.9.0a0 + - qt6-main 6.8.3.* + - qt6-main >=6.8.3,<6.9.0a0 license: LGPL-3.0-only license_family: LGPL purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 10912850 - timestamp: 1740757358725 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.2-py313h3e3797f_1.conda - sha256: d170d087f4059587d1e31cd62cd0b484355931e071ee89a6460552b3aeb23ebc - md5: 57e832aa5c899d95383ba61dcb752fcd - depends: - - libclang13 >=19.1.7 - - libxml2 >=2.13.6,<3.0a0 + size: 10621151 + timestamp: 1743273698789 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.3-py313h3e3797f_0.conda + sha256: 752202c03ba87a81a494faefc34be4cd4cf199f119a8b7d8aab5097decfbb6e0 + md5: 8c3c5152587a06cfd1e98f99dd2e098d + depends: + - libclang13 >=20.1.1 + - libxml2 >=2.13.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.8.2.* - - qt6-main >=6.8.2,<6.9.0a0 + - qt6-main 6.8.3.* + - qt6-main >=6.8.3,<6.9.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -7732,8 +7679,8 @@ packages: purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 9771417 - timestamp: 1740757858347 + size: 9486007 + timestamp: 1743274268815 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca md5: e2fd202833c4a981ce8a65974fe4abd1 @@ -7792,33 +7739,6 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 26256 timestamp: 1733223113491 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 - md5: d82342192dfc9145185190e651065aa9 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - size: 31670716 - timestamp: 1741130026152 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-h4724d56_1_cp313t.conda build_number: 1 sha256: c403e3fbe15d61d14fdf14a169f3f892627bd3f7b21d14ba5c682f6232b7f826 @@ -8085,27 +8005,17 @@ packages: - pkg:pypi/python-json-logger?source=hash-mapping size: 13383 timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda + sha256: e8392a8044d56ad017c08fec2b0eb10ae3d1235ac967d0aab8bd7b41c4a5eaf0 + md5: 88476ae6ebd24f39261e0854ac244f33 depends: - python >=3.9 license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=hash-mapping - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - build_number: 5 - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - size: 6238 - timestamp: 1723823388266 + - pkg:pypi/tzdata?source=compressed-mapping + size: 144160 + timestamp: 1742745254292 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda build_number: 5 sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 @@ -8405,42 +8315,42 @@ packages: purls: [] size: 1377020 timestamp: 1720814433486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.2-h588cce1_0.conda - sha256: 8776405bb5b256456fa1749bd26946944577f2d73b8c749f9d7c1a5c187bdca2 - md5: 4d483b12b9fc7169d112d4f7a250c05c +- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.3-h6441bc3_1.conda + sha256: 8ae89546e5110af9ba37402313e4799369abedf51f08c833f304dae540ff0566 + md5: db96ef4241de437be7b41082045ef7d2 depends: - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.13,<1.3.0a0 - dbus >=1.13.6,<2.0a0 - - double-conversion >=3.3.0,<3.4.0a0 + - double-conversion >=3.3.1,<3.4.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 - - harfbuzz >=10.2.0,<11.0a0 + - freetype >=2.13.3,<3.0a0 + - harfbuzz >=11.0.0,<12.0a0 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libclang-cpp19.1 >=19.1.7,<19.2.0a0 - - libclang13 >=19.1.7 + - libclang-cpp20.1 >=20.1.1,<20.2.0a0 + - libclang13 >=20.1.1 - libcups >=2.3.3,<2.4.0a0 - libdrm >=2.4.124,<2.5.0a0 - libegl >=1.7.0,<2.0a0 - libgcc >=13 - libgl >=1.7.0,<2.0a0 - - libglib >=2.82.2,<3.0a0 + - libglib >=2.84.0,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libllvm19 >=19.1.7,<19.2.0a0 - - libpng >=1.6.46,<1.7.0a0 - - libpq >=17.2,<18.0a0 - - libsqlite >=3.48.0,<4.0a0 + - libllvm20 >=20.1.1,<20.2.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libpq >=17.4,<18.0a0 + - libsqlite >=3.49.1,<4.0a0 - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - - libxkbcommon >=1.7.0,<2.0a0 - - libxml2 >=2.13.5,<3.0a0 + - libxkbcommon >=1.8.1,<2.0a0 + - libxml2 >=2.13.7,<3.0a0 - libzlib >=1.3.1,<2.0a0 - mysql-libs >=9.0.1,<9.1.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - wayland >=1.23.1,<2.0a0 - xcb-util >=0.4.1,<0.5.0a0 @@ -8450,8 +8360,8 @@ packages: - xcb-util-renderutil >=0.3.10,<0.4.0a0 - xcb-util-wm >=0.4.2,<0.5.0a0 - xorg-libice >=1.1.2,<2.0a0 - - xorg-libsm >=1.2.5,<2.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libsm >=1.2.6,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 - xorg-libxcomposite >=0.4.6,<1.0a0 - xorg-libxcursor >=1.2.3,<2.0a0 - xorg-libxdamage >=1.1.6,<2.0a0 @@ -8459,43 +8369,43 @@ packages: - xorg-libxrandr >=1.5.4,<2.0a0 - xorg-libxtst >=1.2.5,<2.0a0 - xorg-libxxf86vm >=1.1.6,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.8.2 + - qt 6.8.3 license: LGPL-3.0-only license_family: LGPL purls: [] - size: 51501033 - timestamp: 1738333763120 -- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.2-h1259614_0.conda - sha256: 9646ef327f3deba284a043bfdee69e1b6e52214af343992b149d445ba3fa7841 - md5: d4efb20c96c35ad07dc9be1069f1c5f4 + size: 50854227 + timestamp: 1743393321721 +- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.3-h72a539a_1.conda + sha256: 25524f06ca96db6ed353f5a36b4b2f65ad9d2a7674116d0318252d53ca094082 + md5: 1f2b193841a71a412f8af19c9925caf0 depends: - - double-conversion >=3.3.0,<3.4.0a0 - - harfbuzz >=10.2.0,<11.0a0 + - double-conversion >=3.3.1,<3.4.0a0 + - harfbuzz >=11.0.0,<12.0a0 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libclang13 >=19.1.7 - - libglib >=2.82.2,<3.0a0 + - libclang13 >=20.1.1 + - libglib >=2.84.0,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.46,<1.7.0a0 - - libsqlite >=3.48.0,<4.0a0 + - libpng >=1.6.47,<1.7.0a0 + - libsqlite >=3.49.1,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.5.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.8.2 + - qt 6.8.3 license: LGPL-3.0-only license_family: LGPL purls: [] - size: 94138960 - timestamp: 1738337004104 + size: 93819325 + timestamp: 1743394251854 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -8592,13 +8502,13 @@ packages: - pyright==1.1.394 ; extra == 'lint' - pytest>=8 ; extra == 'test' requires_python: '>=3.9' -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py313h6071e0b_0.conda - sha256: 2e81d681d799fa7e579b1857a8b748413e0abc40d3f36577b2380336f55de350 - md5: b7563bb7e811249ac52d4483aa15ea72 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.24.0-py313h6071e0b_0.conda + sha256: dffb2a7b07d9670b45b15bb0279e076980a0f7c9b88594f42e5f7ade1ae58f44 + md5: 3306151813da4d27a7e028ce51a0c87f depends: - python - - libgcc >=13 - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 @@ -8606,11 +8516,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 393698 - timestamp: 1740153260116 -- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.23.1-py313h72dc32c_0.conda - sha256: 233dbfc2625e00b5e05ff09b55e0a2119af8cf5821c26a75803919dbc1c29760 - md5: 51531c54d82d181d48d0eb524964e30e + size: 393294 + timestamp: 1743037947499 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.24.0-py313h72dc32c_0.conda + sha256: 012ccc4669f08e9e02756a5c51d79ddb16f83c311687be54ba474ed5860e7b91 + md5: 0a9b64f508700152937eda5248bdb28d depends: - python - __osx >=10.13 @@ -8621,15 +8531,15 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 376391 - timestamp: 1740153109374 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py313hb5fa170_0.conda - sha256: c900a1d337f6f378c4d3d3c1dc5a6889bfb0bcc024011d71063b8cbf330b8afa - md5: 9f51837f1be39cef7216e00deacb43ae + size: 371947 + timestamp: 1743037524198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.24.0-py313hb5fa170_0.conda + sha256: 9fd38791a81fe5965e855bcb55ff28e98016aaed57bae6481a343f49ef29d0a6 + md5: cc72593d9ca3b72c472471fd525c0d0f depends: - python - - python 3.13.* *_cp313 - __osx >=11.0 + - python 3.13.* *_cp313 - python_abi 3.13.* *_cp313 constrains: - __osx >=11.0 @@ -8637,11 +8547,11 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 367445 - timestamp: 1740153140658 -- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.23.1-py313h54fc02f_0.conda - sha256: bd4d9ff4cea6ce426d9ffdfb93cf9fab24842f4c0a06441bf5e0dbd1a4f7a0cc - md5: 8ec868a872e7f4633462311dc8bdb1c0 + size: 362852 + timestamp: 1743037548292 +- conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.24.0-py313h54fc02f_0.conda + sha256: bcceb24e0462794507642caad40b4e0910942c5b70ba5e8640870157750bad5b + md5: 67eb9aea984cdc3ce949ba23402e8d89 depends: - python - vc >=14.2,<15 @@ -8655,26 +8565,26 @@ packages: license_family: MIT purls: - pkg:pypi/rpds-py?source=hash-mapping - size: 254956 - timestamp: 1740153099772 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.0-py312hf79aa60_0.conda - sha256: 58aa0b5bcbfa85c05f1e116c03b97253196fa6ce88ad90b3ed701659c6a1dd24 - md5: 3656d8e5c4e5874ba021d465fa612920 + size: 255547 + timestamp: 1743037492141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py313hfe82de2_0.conda + sha256: f25deaa5163f8baf0090908fae0cfeeffda650306f9bfb5ec5143bda7edc2a58 + md5: 520be555c706dbc4385f82d1cb9dc41c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 8855739 - timestamp: 1741967960430 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.0-py313h2e013d6_0.conda - sha256: 0e7f776da8bd1418cd1ba7d938232a8e5b5e0dc2ee416bf04de2c5e3dd4320c8 - md5: 84fb1dacc9d34ef71e14252283a602db + size: 8872400 + timestamp: 1742584319600 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda + sha256: 57502cc6d8485cde43b56ffaa78474e55865e826a929340b190d992770dcacb2 + md5: 1d4fc6acbbb5ef785e3553dc986a5fe0 depends: - __osx >=10.13 - libcxx >=18 @@ -8684,11 +8594,11 @@ packages: - __osx >=10.13 license: MIT license_family: MIT - size: 8171520 - timestamp: 1741968435130 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.0-py313h35210b4_0.conda - sha256: 2b452a386e2974d10ea70aecee6d03d6464c276510409afcfabe3768ae485568 - md5: 7df5d648cfed60ed60244e5d16a131e7 + size: 8171146 + timestamp: 1742584829512 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.2-py313h35210b4_0.conda + sha256: 70f8c750b2ea339d54679922cca6d61cee8b54ada05d2245ceac29d46a8ce594 + md5: 043f4d37ec2eb12e2ecbef8e5ac381b2 depends: - __osx >=11.0 - libcxx >=18 @@ -8699,11 +8609,11 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 7796464 - timestamp: 1741968610272 -- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.0-py313he8c32b4_0.conda - sha256: 9bc1fd5e67a7e9818b4953c407c3e302d0d84d7004705ed9975858ce59167a00 - md5: cc87a494344eb253032a01dcaa526bca + size: 7801806 + timestamp: 1742584905314 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.2-py313he8c32b4_0.conda + sha256: bb59f57e745e54452ccf7f8ef0be7ca3b2939b9da54cb4933f21c6bee92177aa + md5: 6aee141098589e299c99e8c5fb3de62e depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -8712,8 +8622,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 7956799 - timestamp: 1741968903526 + size: 7912086 + timestamp: 1742585732752 - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-macosx_10_13_x86_64.whl name: scikit-learn version: 1.7.dev0 @@ -8765,9 +8675,9 @@ packages: - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - - ruff>=0.5.1 ; extra == 'tests' + - ruff>=0.11.0 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - - mypy>=1.9 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' @@ -8826,9 +8736,9 @@ packages: - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - - ruff>=0.5.1 ; extra == 'tests' + - ruff>=0.11.0 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - - mypy>=1.9 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' @@ -8887,9 +8797,9 @@ packages: - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - - ruff>=0.5.1 ; extra == 'tests' + - ruff>=0.11.0 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - - mypy>=1.9 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' @@ -8948,9 +8858,9 @@ packages: - pandas>=1.4.0 ; extra == 'tests' - pytest>=7.1.2 ; extra == 'tests' - pytest-cov>=2.9.0 ; extra == 'tests' - - ruff>=0.5.1 ; extra == 'tests' + - ruff>=0.11.0 ; extra == 'tests' - black>=24.3.0 ; extra == 'tests' - - mypy>=1.9 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' - pyamg>=5.0.0 ; extra == 'tests' - polars>=0.20.30 ; extra == 'tests' - pyarrow>=12.0.0 ; extra == 'tests' @@ -9685,7 +9595,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/threadpoolctl?source=compressed-mapping + - pkg:pypi/threadpoolctl?source=hash-mapping size: 23869 timestamp: 1741878358548 - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda @@ -9851,28 +9761,28 @@ packages: - pkg:pypi/types-python-dateutil?source=hash-mapping size: 22104 timestamp: 1733612458611 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - noarch: python - sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 - md5: b6a408c64b78ec7b779a3e5c7a902433 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda + sha256: 4dc1002493f05bf4106e09f0de6df57060c9aab97ad709392ab544ceb62faadd + md5: 3fbcc45b908040dca030d3f78ed9a212 depends: - - typing_extensions 4.12.2 pyha770c72_1 + - typing_extensions ==4.13.0 pyh29332c3_1 license: PSF-2.0 license_family: PSF purls: [] - size: 10075 - timestamp: 1733188758872 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 + size: 89631 + timestamp: 1743201626659 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + sha256: 18eb76e8f19336ecc9733c02901b30503cdc4c1d8de94f7da7419f89b3ff4c2f + md5: 4c446320a86cc5d48e3b80e332d6ebd7 depends: - python >=3.9 + - python license: PSF-2.0 license_family: PSF purls: - pkg:pypi/typing-extensions?source=hash-mapping - size: 39637 - timestamp: 1733188758212 + size: 52077 + timestamp: 1743201626659 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c @@ -9884,13 +9794,13 @@ packages: - pkg:pypi/typing-utils?source=hash-mapping size: 15183 timestamp: 1733331395943 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de - md5: dbcace4706afdfb7eb891f7b37d07c04 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda + sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 + md5: 4222072737ccff51314b5ece9c7d6f5a license: LicenseRef-Public-Domain purls: [] - size: 122921 - timestamp: 1737119101255 + size: 122968 + timestamp: 1742727099393 - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 @@ -9926,40 +9836,40 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 100102 timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-hbf610ac_24.conda - sha256: 8ef83b62f9f0b885882d0dd41cbe47c2308f7ac0537fd508a5bbe6d3953a176e - md5: 9098c5cfb418fc0b0204bf2efc1e9afa +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda + sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 + md5: d3f0381e38093bde620a8d85f266ae55 depends: - - vc14_runtime >=14.42.34438 + - vc14_runtime >=14.42.34433 track_features: - vc14 license: BSD-3-Clause license_family: BSD purls: [] - size: 17469 - timestamp: 1741043406253 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_24.conda - sha256: fb36814355ac12dcb4a55b75b5ef0d49ec219ad9df30d7955f2ace88bd6919c4 - md5: 5fceb7d965d59955888d9a9732719aa8 + size: 17893 + timestamp: 1743195261486 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda + sha256: 30dcb71bb166e351aadbdc18f1718757c32cdaa0e1e5d9368469ee44f6bf4709 + md5: 91651a36d31aa20c7ba36299fb7068f4 depends: - ucrt >=10.0.20348.0 constrains: - - vs2015_runtime 14.42.34438.* *_24 + - vs2015_runtime 14.42.34438.* *_26 license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary purls: [] - size: 751362 - timestamp: 1741043402335 -- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_24.conda - sha256: a7104d3d605d191c8ee8d85d4175df3630d61830583494a5d1e62cd9f1260420 - md5: 1dd2e838eb13190ae1f1e2760c036fdc + size: 750733 + timestamp: 1743195092905 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34438-h7142326_26.conda + sha256: 432f2937206f1ad4a77e39f84fabc1ce7d2472b669836fb72bd2bfd19a2defc9 + md5: 3357e4383dbce31eed332008ede242ab depends: - vc14_runtime >=14.42.34438 license: BSD-3-Clause license_family: BSD purls: [] - size: 17474 - timestamp: 1741043406612 + size: 17873 + timestamp: 1743195097269 - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 md5: 0a732427643ae5e0486a727927791da1 diff --git a/pyproject.toml b/pyproject.toml index 4babcf3..e598a3e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,6 @@ mypy = "*" [tool.pixi.feature.build.dependencies] python-build = "*" -pip = "*" [tool.pixi.feature.nogil.dependencies] python-freethreading = "*" @@ -104,7 +103,6 @@ test-coverage = { cmd = "rm -rf .coverage && pytest --cov-report $FMT --cov=$PAC [tool.pixi.feature.build.tasks] build-wheel = "rm -rf dist && python -m build -wnx -Cinstall-args=--tags=runtime,python-runtime,devel" build-sdist = "rm -rf dist && python -m build --sdist" -rebuild = "rm -rf build && pip install --no-deps --force-reinstall -e ." [tool.pixi.feature.fmt.tasks] fmt = { cmd = "black .", cwd = "fastcan" } @@ -132,8 +130,6 @@ nogil-eta = { cmd = "python -Xgil=0 -m timeit -n 5 -s 'import numpy as np; from # Needed on Windows CI to compile with Visual Studio compiler # otherwise Meson detects a MINGW64 platform and use MINGW64 # toolchain -[tool.pixi.feature.build.target.win-64.tasks] -rebuild = "rm -rf build && pip install --no-deps --force-reinstall -e . -Csetup-args=--vsenv" [tool.pixi.feature.nogil.target.win-64.tasks] nogil-build = { cmd = "pip install --editable . --verbose --no-build-isolation --config-settings editable-verbose=true -Csetup-args=--vsenv" } diff --git a/tests/test_narx.py b/tests/test_narx.py index fdf52cc..e67ecc3 100644 --- a/tests/test_narx.py +++ b/tests/test_narx.py @@ -310,3 +310,27 @@ def test_sample_weight(): coef_ = narx.coef_ assert np.any(coef_w != coef_) + +def test_divergence(): + # Test divergence of NARX model + rng = np.random.default_rng(12345) + n_samples = 100 + max_delay = 3 + e = rng.normal(0, 0.1, n_samples) + u0 = rng.uniform(0, 1, n_samples + max_delay) + u1 = rng.normal(0, 0.1, n_samples) + y = np.zeros(n_samples + max_delay) + for i in range(max_delay, n_samples + max_delay): + y[i] = ( + 0.5 * y[i - 1] + + 0.3 * u0[i] ** 2 + + 2 * u0[i - 1] * u0[i - 3] + + 1.5 * u0[i - 2] * u1[i - max_delay] + + 1 + ) + y = y[max_delay:] + e + X = np.c_[u0[max_delay:], u1] + narx = make_narx(X, y, 3, 3, 2) + narx.fit(X, y, coef_init=[-10, 0, 0, 0]) + y_hat = narx.predict(X, y) + assert np.all(y_hat<=1e20) From ec54175099c0b4eac26cacb842a8a645b0fcb0f2 Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Tue, 1 Apr 2025 10:11:32 +0800 Subject: [PATCH 3/7] CI adopt new pixi (0.43.0) reinstall to replace manually rebuild --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5beeac9..1056a21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,7 +28,7 @@ jobs: - name: Re-install local run: | - pixi run rebuild + pixi reinstall --frozen fastcan - name: Test with pytest run: | From 9c5bfbabb1b315e9a8202fd28567255000b45c53 Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Tue, 1 Apr 2025 16:54:13 +0800 Subject: [PATCH 4/7] MNT improve readability of grad and change grad of minimize to grad of least_squares --- fastcan/narx.py | 178 ++++++++++++++++++++++------------------- tests/test_narx_jac.py | 18 ++--- 2 files changed, 102 insertions(+), 94 deletions(-) diff --git a/fastcan/narx.py b/fastcan/narx.py index acb0640..19c335e 100644 --- a/fastcan/narx.py +++ b/fastcan/narx.py @@ -406,10 +406,10 @@ class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): >>> print_narx(narx) | yid | Term | Coef | ======================================= - | 0 | Intercept | 1.069 | - | 0 | y_hat[k-1,0] | 0.478 | - | 0 | X[k-2,0] | 0.716 | - | 0 | X[k-1,0]*X[k-3,0] | 1.504 | + | 0 | Intercept | 1.008 | + | 0 | y_hat[k-1,0] | 0.498 | + | 0 | X[k-2,0] | 0.701 | + | 0 | X[k-1,0]*X[k-3,0] | 1.496 | """ _parameter_constraints: dict = { @@ -466,7 +466,7 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): **params : dict Keyword arguments passed to - `scipy.optimize.minimize`. + `scipy.optimize.least_squares`. Returns ------- @@ -601,7 +601,7 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): coef_init = check_array( coef_init, ensure_2d=False, - dtype=np.float64, + dtype=float, ) if coef_init.shape[0] != n_coef_intercept: raise ValueError( @@ -634,15 +634,15 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): return self @staticmethod - def _evaluate_term(term_id, delay_id, X, y_hat, k): + def _evaluate_term(feat_ids, delay_ids, X, y_hat, k): n_features_in = X.shape[1] term = 1 - for i, feat_id in enumerate(term_id): + for i, feat_id in enumerate(feat_ids): if feat_id != -1: if feat_id < n_features_in: - term *= X[k - delay_id[i], feat_id] + term *= X[k - delay_ids[i], feat_id] else: - term *= y_hat[k - delay_id[i], feat_id - n_features_in] + term *= y_hat[k - delay_ids[i], feat_id - n_features_in] return term @staticmethod @@ -666,7 +666,7 @@ def _predict( at_init = True init_k = 0 for k in range(n_samples): - if ~np.all(np.isfinite(X[k])): + if not np.all(np.isfinite(X[k])): at_init = True init_k = k + 1 y_hat[k] = np.nan @@ -687,85 +687,101 @@ def _predict( @staticmethod def _get_cfd_ids(feat_ids, delay_ids, output_ids, n_features_in): - n_y = np.max(output_ids) + 1 # number of output - n_d = np.max(delay_ids) # max delay - - n_c = feat_ids.shape[0] # number of coef - # number of dy/dx, [dy0(k)/dx, dy1(k)/dx, dy0(k-1)/dx, dy1(k-1)/dx, ...] - n_dydx = n_y * n_d - c_ids = np.arange(n_c) # Coef index - - # Coef ids, feature ids, delay ids - # cfd_ids is n_y * n_dydx - cfd_ids = [[[] for _ in range(n_dydx)] for _ in range(n_y)] - for i in range(n_y): - for j in range(n_dydx): - # Get dy[y_j](k - d_j)/dx - d_j = j // n_y + 1 # delay - y_j = j % n_y + n_features_in # output index - output_mask = output_ids == i - terms = feat_ids[output_mask] - delays = delay_ids[output_mask] - c_id = c_ids[output_mask] - for t, (term, delay) in enumerate(zip(terms, delays)): - if np.any((y_j == term) & (d_j == delay)): - a_ij = [] - for f, (feat, k) in enumerate(zip(term, delay)): - if (feat == y_j) and (k == d_j): - a_ij += [ - [c_id[t], np.delete(term, f), np.delete(delay, f)] - ] - cfd_ids[i][j] += a_ij + """ + Get ids of CFD (Coef, Feature, and Delay) matrix to update dyn(k)/dx. + Maps coefficients to their corresponding features and delays. + """ + n_outputs = np.max(output_ids) + 1 + max_delay = np.max(delay_ids) + + # Initialize cfd_ids as a list of lists n_outputs * n_outputs * max_delay + # axis-0 (i): [dy0(k)/dx, dy1(k)/dx, ..., dyn(k)/dx] + # axis-1 (j): [dy0(k-d)/dx, dy1(k-d)/dx, ..., dyn(k-d)/dx] + # axis-2 (d): [dyj(k-1)/dx, dyj(k-2)/dx, ..., dyj(k-max_delay)/dx] + cfd_ids = [ + [[[] for _ in range(max_delay)] for _ in range(n_outputs)] + for _ in range(n_outputs) + ] + + for coef_id, (term_feat_ids, term_delay_ids) in enumerate( + zip(feat_ids, delay_ids) + ): + row_y_id = output_ids[coef_id] + for var_id, (feat_id, delay_id) in enumerate( + zip(term_feat_ids, term_delay_ids) + ): + if feat_id >= n_features_in and delay_id > 0: + col_y_id = feat_id - n_features_in + cfd_ids[row_y_id][col_y_id][delay_id - 1].append( + [ + coef_id, + np.delete(term_feat_ids, var_id), + np.delete(term_delay_ids, var_id), + ] + ) + return cfd_ids @staticmethod def _update_cfd(X, y_hat, coef, cfd_ids, k): - n_y = y_hat.shape[1] - n_dydx = len(cfd_ids[0]) - cfd = np.zeros((n_y, n_dydx)) - for i in range(n_y): - for j in range(n_dydx): - if cfd_ids[i][j]: - a_ij = 0 - for coef_id, term_id, delay_id in cfd_ids[i][j]: - a_ij += coef[coef_id] * NARX._evaluate_term( - term_id, delay_id, X, y_hat, k + """ + Updates CFD matrix based on the current state. + """ + n_outputs, max_delay = y_hat.shape[1], len(cfd_ids[0][0]) + cfd = np.zeros((n_outputs, n_outputs, max_delay)) + + for i, yi_ids in enumerate(cfd_ids): + for j, yiyj in enumerate(yi_ids): + for d, yiyjd in enumerate(yiyj): + if yiyjd: + cfd[i, j, d] = sum( + coef[coef_id] + * NARX._evaluate_term(feat_id, delay_id, X, y_hat, k) + for coef_id, feat_id, delay_id in yiyjd ) - cfd[i, j] = a_ij return cfd @staticmethod def _update_dydx(X, y_hat, coef, feat_ids, delay_ids, output_ids, cfd_ids): - n_samples = X.shape[0] - n_y = y_hat.shape[1] + """ + Computation of the Jacobian matrix dydx. + + Returns + ------- + dydx : ndarray of shape (n_samples, n_outputs, n_x) + Jacobian matrix of the outputs with respect to coefficients and intercepts. + """ + n_samples, n_y = y_hat.shape max_delay = np.max(delay_ids) - n_c = feat_ids.shape[0] - n_x = n_c + n_y - output_x_ids = np.r_[output_ids, np.arange(n_y)] - if max_delay == 0: - dydx = np.zeros((n_samples, n_x, n_y)) - else: - dydx = np.zeros((n_samples, n_x, n_y * max_delay)) - for k in range(max_delay, n_samples): - for i in range(n_x): - if i < n_c: - term = NARX._evaluate_term(feat_ids[i], delay_ids[i], X, y_hat, k) - else: - term = 1 + n_coefs = feat_ids.shape[0] + n_x = n_coefs + n_y # Total number of coefficients and intercepts + y_ids = np.r_[output_ids, np.arange(n_y)] + x_ids = np.arange(n_x) - if ~np.isfinite(term): - continue - dydx[k, i, output_x_ids[i]] = term - if max_delay != 0: - cfd = NARX._update_cfd(X, y_hat, coef, cfd_ids, k) - if ~np.all(np.isfinite(cfd)): - continue - dydx[k, i, :n_y] += cfd @ dydx[k - 1, i] - dydx[k, i, n_y:] = dydx[k - 1, i, :-n_y] + dydx = np.zeros((n_samples, n_y, n_x), dtype=float) + for k in range(max_delay, n_samples): + # Compute terms for time step k + terms = np.ones(n_x, dtype=float) + for j in range(n_coefs): + terms[j] = NARX._evaluate_term(feat_ids[j], delay_ids[j], X, y_hat, k) + if not np.all(np.isfinite(terms)): + break + + # Update constant terms of Jacobian + dydx[k, y_ids, x_ids] = terms + + # Update dynamic terms of Jacobian + if max_delay > 0: + cfd = NARX._update_cfd(X, y_hat, coef, cfd_ids, k) + for d in range(max_delay): + dydx[k] += cfd[:, :, d] @ dydx[k - d - 1] + + # Handle divergence if np.any(dydx[k] > 1e20): dydx[k:] = 1e20 - return dydx[:, :, :n_y] - return dydx[:, :, :n_y] + break + + return dydx @staticmethod def _loss( @@ -821,15 +837,11 @@ def _grad( mask_nomissing = _mask_missing_value( y, y_hat, sample_weight_sqrt, return_mask=True ) - y_masked = y[mask_nomissing] - y_hat_masked = y_hat[mask_nomissing] + sample_weight_sqrt_masked = sample_weight_sqrt[mask_nomissing] dydx_masked = dydx[mask_nomissing] - e = y_hat_masked - y_masked - return (e[:, np.newaxis, :] * dydx_masked).sum( - axis=2 - ) * sample_weight_sqrt_masked + return dydx_masked.sum(axis=1) * sample_weight_sqrt_masked @validate_params( { diff --git a/tests/test_narx_jac.py b/tests/test_narx_jac.py index 8a188a0..953fcb8 100644 --- a/tests/test_narx_jac.py +++ b/tests/test_narx_jac.py @@ -51,12 +51,10 @@ def test_simple(): output_ids=output_ids, ) - - e1 = y_hat_1 - y grad_truth = np.array([ - np.sum(e1*np.array([0, y_hat_1[0, 0], y_hat_1[1, 0]+coef_1[0]]).reshape(-1, 1)), - np.sum(e1*np.array([0, X[0, 0], X[0, 0]*coef_1[0]+X[0, 0]]).reshape(-1, 1)), - np.sum(e1*np.array([0, 1, coef_1[0]+1]).reshape(-1, 1)), + np.sum(np.array([0, y_hat_1[0, 0], y_hat_1[1, 0]+coef_1[0]]).reshape(-1, 1)), + np.sum(np.array([0, X[0, 0], X[0, 0]*coef_1[0]+X[0, 0]]).reshape(-1, 1)), + np.sum(np.array([0, 1, coef_1[0]+1]).reshape(-1, 1)), ]) @@ -75,7 +73,6 @@ def test_simple(): assert_almost_equal(grad.sum(axis=0), grad_truth, decimal=4) - def test_complex(): """Complex model""" # Simulated model @@ -178,7 +175,7 @@ def test_complex(): delay_ids=delay_ids, output_ids=output_ids, ) - loss_0 = 0.5*np.sum((y_hat_0 - y)**2) + e_0 = y_hat_0 - y delta_w = 0.00001 for i in range(len(coef)+len(intercept)): @@ -202,8 +199,7 @@ def test_complex(): output_ids=output_ids, ) - e1 = y_hat_1 - y - loss_1 = 0.5*np.sum((e1)**2) - grad_num = (loss_1 - loss_0) / delta_w + e_1 = y_hat_1 - y + grad_num = (e_1 - e_0).sum(axis=1) / delta_w - assert_allclose(grad.sum(axis=0)[i], grad_num, rtol=1e-1) + assert_allclose(grad.sum(axis=0)[i], grad_num.sum(), rtol=1e-1) From 6f882fd0e3525f4a830058fbff9e7d8dc079876f Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Thu, 3 Apr 2025 15:01:38 +0800 Subject: [PATCH 5/7] MNT fix wrong grad when having missing values --- examples/plot_narx_msa.py | 15 +- fastcan/narx.py | 19 +- pixi.lock | 404 +++++++++++++++++++++++--------------- tests/test_narx_jac.py | 79 +++++++- 4 files changed, 349 insertions(+), 168 deletions(-) diff --git a/examples/plot_narx_msa.py b/examples/plot_narx_msa.py index be907ff..2bb1835 100644 --- a/examples/plot_narx_msa.py +++ b/examples/plot_narx_msa.py @@ -82,15 +82,18 @@ def auto_duffing_equation(y, t): dur = 10 n_samples = 1000 +rng = np.random.default_rng(12345) +e_train = rng.normal(0, 0.001, n_samples) +e_test = rng.normal(0, 0.001, n_samples) t = np.linspace(0, dur, n_samples) sol = odeint(duffing_equation, [0.6, 0.8], t) u_train = 2.5 * np.cos(2 * np.pi * t).reshape(-1, 1) -y_train = sol[:, 0] +y_train = sol[:, 0] + e_train -sol = odeint(auto_duffing_equation, [0.6, -0.8], t) +sol = odeint(duffing_equation, [0.6, -0.8], t) u_test = 2.5 * np.cos(2 * np.pi * t).reshape(-1, 1) -y_test = sol[:, 0] +y_test = sol[:, 0]+ e_test # %% # One-step-head VS. multi-step-ahead NARX @@ -105,12 +108,12 @@ def auto_duffing_equation(y, t): from fastcan.narx import make_narx -max_delay = 2 +max_delay = 3 narx_model = make_narx( X=u_train, y=y_train, - n_terms_to_select=10, + n_terms_to_select=5, max_delay=max_delay, poly_degree=3, verbose=0, @@ -159,7 +162,7 @@ def plot_prediction(ax, t, y_true, y_pred, title): narx_model = make_narx( X=u_all, y=y_all, - n_terms_to_select=10, + n_terms_to_select=5, max_delay=max_delay, poly_degree=3, verbose=0, diff --git a/fastcan/narx.py b/fastcan/narx.py index 19c335e..3d8b8c0 100644 --- a/fastcan/narx.py +++ b/fastcan/narx.py @@ -648,10 +648,10 @@ def _evaluate_term(feat_ids, delay_ids, X, y_hat, k): @staticmethod def _expression(X, y_hat, coef, intercept, feat_ids, delay_ids, output_ids, k): y_pred = np.copy(intercept) - for i, term_id in enumerate(feat_ids): + for i, feat_id in enumerate(feat_ids): output_i = output_ids[i] y_pred[output_i] += coef[i] * NARX._evaluate_term( - term_id, delay_ids[i], X, y_hat, k + feat_id, delay_ids[i], X, y_hat, k ) return y_pred @@ -759,13 +759,22 @@ def _update_dydx(X, y_hat, coef, feat_ids, delay_ids, output_ids, cfd_ids): x_ids = np.arange(n_x) dydx = np.zeros((n_samples, n_y, n_x), dtype=float) - for k in range(max_delay, n_samples): + at_init = True + init_k = 0 + for k in range(n_samples): + if not np.all(np.isfinite(X[k])): + at_init = True + init_k = k + 1 + continue + if k - init_k == max_delay: + at_init = False + + if at_init: + continue # Compute terms for time step k terms = np.ones(n_x, dtype=float) for j in range(n_coefs): terms[j] = NARX._evaluate_term(feat_ids[j], delay_ids[j], X, y_hat, k) - if not np.all(np.isfinite(terms)): - break # Update constant terms of Jacobian dydx[k, y_ids, x_ids] = terms diff --git a/pixi.lock b/pixi.lock index 61d5059..ceb8aeb 100644 --- a/pixi.lock +++ b/pixi.lock @@ -32,7 +32,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda @@ -41,7 +41,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py313h8ef605b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py313h86fcf2b_0.conda @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda @@ -98,10 +98,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda @@ -112,7 +112,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h534c281_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.6.1-py313hedeaec8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py313h7e69c36_0.conda @@ -157,7 +157,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp18.1-18.1.8-default_hf90f093_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda @@ -173,10 +173,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda @@ -187,7 +187,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.2-h81fe080_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.6.1-py313hecba28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py313h9a24e0a_0.conda @@ -220,7 +220,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda @@ -229,7 +229,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-h261c0b1_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.6.1-py313h4f67946_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py313h2eca4b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda @@ -319,7 +319,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -344,8 +344,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.1-default_hb5137d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.1-default_h9c6a7e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.2-default_hb5137d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.2-default_h9c6a7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda @@ -365,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.1-ha7bfdaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.2-ha7bfdaf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda @@ -373,7 +373,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.4-h27ae623_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.4-h27ae623_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda @@ -390,7 +390,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.1-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.1-py313h129903b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 @@ -442,7 +442,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py313h8e95178_0.conda @@ -601,7 +601,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -627,7 +627,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda @@ -651,14 +651,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.1-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.1-py313he981572_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda @@ -708,7 +708,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.1-py313h2d45800_0.conda @@ -848,7 +848,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -874,7 +874,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp18.1-18.1.8-default_hf90f093_8.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda @@ -898,14 +898,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.1-py313h39782a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.1-py313haaf02c0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda @@ -955,7 +955,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py313he6960b1_0.conda @@ -1088,7 +1088,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -1111,7 +1111,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-31_h5e41251_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.1-default_ha5278ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.2-default_ha5278ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda @@ -1139,7 +1139,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.1-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.1-py313h81b4f16_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.3-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda @@ -1186,7 +1186,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda @@ -1264,11 +1264,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda @@ -1277,24 +1277,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-6_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py313hfe82de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py312hf79aa60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda @@ -1307,7 +1308,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda @@ -1324,7 +1325,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h534c281_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda @@ -1339,7 +1340,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cython-3.0.12-py313hd607753_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda @@ -1356,7 +1357,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.2-h81fe080_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.2-py313h35210b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda @@ -1387,7 +1388,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.0.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-h261c0b1_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.2-py313he8c32b4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda @@ -1422,7 +1423,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda @@ -1448,14 +1449,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda @@ -1481,14 +1482,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda @@ -1520,7 +1521,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.1-ha4e3fda_0.conda @@ -1776,6 +1777,21 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 145482 timestamp: 1738740460562 +- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef + md5: 986a60de52eec10b36c61bb3890858ff + depends: + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9 + - platformdirs >=2 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 394760 + timestamp: 1738616131766 - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda sha256: c68f110cd491dc839a69e340930862e54c00fb02cede5f1831fcf8a253bd68d2 md5: b9b0c42e7316aa6043bdfd49883955b8 @@ -2796,6 +2812,19 @@ packages: name: cython version: 3.1.0b0 requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda + sha256: de815476da537b911e2ceeb7f76b445d0c76b3d5fad35600ed28bc8d19302127 + md5: e5d2a28866ee990a340bde1eabde587a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 3766553 + timestamp: 1739228870146 - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda sha256: 8341920c1a53a418a359c2afc52ca5a8b9440667599bf149eebc7c925b639554 md5: 24a42a0c1cc33743e33572d63d489b54 @@ -3853,17 +3882,16 @@ packages: - pkg:pypi/joblib?source=hash-mapping size: 220252 timestamp: 1733736157394 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f - md5: cd170f82d8e5b355dfdea6adab23e4af +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda + sha256: 72cc0f8f7b940c698bd6acca1a7b19fe283eeb29e91de42036be0d9411657181 + md5: bc54de495aadee09e46ec3ac49832b38 depends: - python >=3.9 license: Apache-2.0 - license_family: APACHE purls: - - pkg:pypi/json5?source=hash-mapping - size: 31573 - timestamp: 1733272196759 + - pkg:pypi/json5?source=compressed-mapping + size: 33810 + timestamp: 1743599415955 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda sha256: 18d412dc91ee7560f0f94c19bb1c3c23f413b9a7f55948e2bb3ce44340439a58 md5: 668d64b50e7ce7984cfe09ed7045b9fa @@ -4728,35 +4756,35 @@ packages: purls: [] size: 13330731 timestamp: 1742265504673 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.1-default_hb5137d0_0.conda - sha256: 3b79cdf6bb6d5f42a73f5db5f3dd9fb5563b44f24e761d02faeb52b9506019f4 - md5: 331dee424fabc0c26331767acc93a074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.2-default_hb5137d0_0.conda + sha256: d87e9fd20c05be07c236fd56ff1b559614648d4848d0ea9334221e71db55e556 + md5: 729198eae19e9dbf8e0ffe355d416bde depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libllvm20 >=20.1.1,<20.2.0a0 + - libllvm20 >=20.1.2,<20.2.0a0 - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 20878931 - timestamp: 1742506161165 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.1-default_h9c6a7e4_0.conda - sha256: e73fef6a7eeb800220b435561126597639e78e3bc1d8f2f32ad6f89de07b5308 - md5: f8b1b8c13c0a0fede5e1a204eafb48f8 + size: 20867052 + timestamp: 1743644318322 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-20.1.2-default_h9c6a7e4_0.conda + sha256: f7be7e0a914766e82046a9b0f1ddd6e6a4aba77404b897d96390d5c880ce9730 + md5: c5fe177150aecc6ec46609b0a6123f39 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libllvm20 >=20.1.1,<20.2.0a0 + - libllvm20 >=20.1.2,<20.2.0a0 - libstdcxx >=13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 12114034 - timestamp: 1742506367797 -- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.1-default_ha5278ca_0.conda - sha256: f8aa908391700fc19e736ab1c598a952bef1bbb72192790988a414216929cab8 - md5: c432d7ab334986169fd534725fc9375d + size: 12112427 + timestamp: 1743644530303 +- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-20.1.2-default_ha5278ca_0.conda + sha256: e6b68355a0d91cc4c42307eef3acaffac4de0b7b0639f255d74fc156e597f63d + md5: 4270e55ba56854c5098a51592e45809a depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -4766,8 +4794,8 @@ packages: license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 28339961 - timestamp: 1742537164 + size: 28341437 + timestamp: 1743649934240 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 md5: d4529f4dff3057982a7617c7ac58fde3 @@ -4781,26 +4809,26 @@ packages: purls: [] size: 4519402 timestamp: 1689195353551 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.1-hf95d169_0.conda - sha256: b30ef239517cfffb71d8ece7b903afe2a1bac0425f5bd38976b35d3cbf77312b - md5: 85cff0ed95d940c4762d5a99a6fe34ae +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda + sha256: 44a62b1fdc70ba07a9375eaca433bdac50518ffee6e0c6977eb65069fb70977e + md5: 25cc3210a5a8a1b332e12d20db11c6dd depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 562132 - timestamp: 1742449741333 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.1-ha82da77_0.conda - sha256: 80dd8ae3fbcf508ed72f074ada2c7784298e822e8d19c3b84c266bb31456d77c - md5: 833c4899914bf96caf64b52ef415e319 + size: 563556 + timestamp: 1743573278971 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda + sha256: e3ad5ba1ff49f988c1476f47f395499e841bdd8eafc3908cb1b64daae3a83f3b + md5: 85ea0d49eb61f57e02ce98dc29ca161f depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 561543 - timestamp: 1742449846779 + size: 566452 + timestamp: 1743573280445 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda sha256: cb3cce2b312aa1fb7391672807001bbab4d6e2deb16d912caecf6219f58ee1f4 md5: a9513c41f070a9e2d5c370ba5d6c0c00 @@ -5420,21 +5448,21 @@ packages: purls: [] size: 25986548 timestamp: 1737837114740 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.1-ha7bfdaf_0.conda - sha256: 28c4f97a5d03e6fcd7fef80ae415e28ca1bdbe9605172c926099bdb92b092b8b - md5: 2e234fb7d6eeb5c32eb5b256403b5795 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.2-ha7bfdaf_0.conda + sha256: fbb343514f3bcee38ea157bde5834b8b5afebb936fec6d521d3de1ee4e321369 + md5: 8354769527f9f441a3a04aa1c19188d9 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - libxml2 >=2.13.6,<3.0a0 + - libxml2 >=2.13.7,<3.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 42997088 - timestamp: 1742460259690 + size: 43003617 + timestamp: 1743601873840 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f md5: 42d5b6a0f30d3c10cd88cb8584fda1cb @@ -5517,6 +5545,15 @@ packages: purls: [] size: 88657 timestamp: 1723861474602 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 md5: 7c7927b404672409d9917d49bff5f2d6 @@ -5635,9 +5672,9 @@ packages: purls: [] size: 346101 timestamp: 1739953426806 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.4-h27ae623_0.conda - sha256: 9fe3b323116a47631a9492f33f4d2c147a7f925bcd48c3fe986fdd2cc9ad3a6a - md5: d67f3f3c33344ff3e9ef5270001e9011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.4-h27ae623_1.conda + sha256: ba2fd74be9d8c38489b9c6c18fa2fa87437dac76dfe285f86425c1b815e59fa2 + md5: 37fba334855ef3b51549308e61ed7a3d depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 @@ -5647,8 +5684,8 @@ packages: - openssl >=3.4.1,<4.0a0 license: PostgreSQL purls: [] - size: 2607018 - timestamp: 1740071165371 + size: 2736307 + timestamp: 1743504522214 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -5947,6 +5984,14 @@ packages: purls: [] size: 1208687 timestamp: 1727279378819 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb md5: e7e5b0652227d646b44abdcbd989da7b @@ -6095,30 +6140,28 @@ packages: purls: [] size: 55476 timestamp: 1727963768015 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.1-ha54dae1_1.conda - sha256: 2aeb63d771120fc7a8129ca81417c07cea09e3a0f47e097f1967a9c24888f5cf - md5: a1c6289fb8ae152b8cb53a535639c2c7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_0.conda + sha256: ed87c6faeee008dd4ea3957e14d410d754f00734a2121067cbb942910b5cdd4d + md5: 86e822e810ac7658cbed920d548f8398 depends: - __osx >=10.13 constrains: - - openmp 20.1.1|20.1.1.* + - openmp 20.1.2|20.1.2.* license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] - size: 306748 - timestamp: 1742533059358 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.1-hdb05f8b_1.conda - sha256: ae57041a588cd190cb55b602c1ed0ef3604ce28d3891515386a85693edd3c175 - md5: 97236e94c3a82367c5fe3a90557e6207 + size: 306881 + timestamp: 1743660179071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_0.conda + sha256: 3510c986f94d8baf8bfef834c0a4fa9f059dbaa5940abe59c60342761fb77e27 + md5: 922f10fcb42090cdb0b74340dee96c08 depends: - __osx >=11.0 constrains: - - openmp 20.1.1|20.1.1.* + - openmp 20.1.2|20.1.2.* license: Apache-2.0 WITH LLVM-exception - license_family: APACHE purls: [] - size: 282105 - timestamp: 1742533199558 + size: 282406 + timestamp: 1743660065194 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda sha256: 694ec5d1753cfff97785f3833173c1277d0ca0711d7c78ffc1011b40e7842741 md5: 2585f8254d2ce24399a601e9b4e15652 @@ -6425,9 +6468,9 @@ packages: - pkg:pypi/matplotlib-inline?source=hash-mapping size: 14467 timestamp: 1733417051523 -- conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.0-pyhd8ed1ab_0.conda - sha256: c776dd57994d19e2b75e46889e7ba7bc74d248053c2d54d39b3e0c2a9ca02a5c - md5: 6d4bbcce47061d2f9f2636409a8fe7c0 +- conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda + sha256: b7b301cf8998e7838b093457e949dc687e62664b08fa3ec3d7958178d4b121a8 + md5: 90018ee73b8741268027421ceac2809a depends: - ninja >=1.8.2 - python >=3.9 @@ -6436,8 +6479,8 @@ packages: license_family: APACHE purls: - pkg:pypi/meson?source=hash-mapping - size: 668246 - timestamp: 1737930122267 + size: 669828 + timestamp: 1743548816495 - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda sha256: 819692fa23d1cfdc05a4106789b413c83de2d0506df2e872c0a705b0df42bc43 md5: 7a02679229c6c2092571b4c025055440 @@ -6535,21 +6578,21 @@ packages: - pkg:pypi/munkres?source=hash-mapping size: 12452 timestamp: 1600387789153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda - sha256: ba62b6ccf6775290dcc4ca01c160b29f1fb67300928609fff60126fdae38034d - md5: 80b1cac6f9ca2ab7d96690b8aff3114d +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 + md5: a84061bc7e166712deb33bf7b32f756d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - mypy_extensions >=1.0.0 - psutil >=4.0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - typing_extensions >=4.1.0 license: MIT license_family: MIT - size: 17058016 - timestamp: 1738767732637 + size: 18664849 + timestamp: 1738767977895 - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py313h63b0ddb_0.conda sha256: ec50dc7be70eff5008d73b4bd29fba72e02e499e9b60060a49ece4c1e12a9d55 md5: e9dc60a2c2c62f4d2e24f61603f00bdc @@ -7388,6 +7431,18 @@ packages: - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271905 timestamp: 1737453457168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852 md5: 8f315d1fce04a046c1b93fa6e536661d @@ -7739,6 +7794,33 @@ packages: - pkg:pypi/pytest-cov?source=hash-mapping size: 26256 timestamp: 1733223113491 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 + md5: d82342192dfc9145185190e651065aa9 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31670716 + timestamp: 1741130026152 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-h4724d56_1_cp313t.conda build_number: 1 sha256: c403e3fbe15d61d14fdf14a169f3f892627bd3f7b21d14ba5c682f6232b7f826 @@ -8016,17 +8098,16 @@ packages: - pkg:pypi/tzdata?source=compressed-mapping size: 144160 timestamp: 1742745254292 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda - build_number: 5 - sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 - md5: 381bbd2a92c863f640a55b6ff3c35161 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-6_cp312.conda + build_number: 6 + sha256: 09aff7ca31d1dbee63a504dba89aefa079b7c13a50dae18e1fe40a40ea71063e + md5: 95bd67b1113859774c30418e8481f9d8 constrains: - - python 3.13.* *_cp313 + - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD - purls: [] - size: 6217 - timestamp: 1723823393322 + size: 6872 + timestamp: 1743483197238 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: 3405de6b376bc49b228b7650d2aa119a42224a7e567a82951a708fc4b914c035 @@ -8038,17 +8119,17 @@ packages: purls: [] size: 6247 timestamp: 1723823372966 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda - build_number: 5 - sha256: 075ad768648e88b78d2a94099563b43d3082e7c35979f457164f26d1079b7b5c - md5: 927a2186f1f997ac018d67c4eece90a6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 4cb3b498dac60c05ceeecfd63c6f046d8e94eec902b82238fd5af08e8f3cd048 + md5: ef1d8e55d61220011cceed0b94a920d2 constrains: - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: [] - size: 6291 - timestamp: 1723823083064 + size: 6858 + timestamp: 1743483201023 - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: a96553de64be6441400e88c2c6ad7123d91cbcea4898b5966a653163f30d9f55 @@ -8060,17 +8141,17 @@ packages: purls: [] size: 6300 timestamp: 1723823108577 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda - build_number: 5 - sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199 - md5: b8e82d0a5c1664638f87f63cc5d241fb +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: ef527337ae8fd3e7cef49bb1ebedb2ad34915f3a19ceb1e452d7691149f1b2e7 + md5: 1867172dd3044e5c3db5772b81d67796 constrains: - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: [] - size: 6322 - timestamp: 1723823058879 + size: 6952 + timestamp: 1743483227308 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: 2165466ff175e1890b66d079d64449a1b6dd9873fb0f5e977839ccc4639b813b @@ -8082,17 +8163,17 @@ packages: purls: [] size: 6317 timestamp: 1723823118660 -- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda - build_number: 5 - sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756 - md5: 44b4fe6f22b57103afb2299935c8b68e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 2f5205eba4d65bb6cb09c2f12c69e8981514222d5aee01b59d5610af9dc6917c + md5: c75e7f94ab431acc3942cc93b8ca6f8d constrains: - python 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD purls: [] - size: 6716 - timestamp: 1723823166911 + size: 6972 + timestamp: 1743483253239 - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: 859af9dbeb82ecf298a3ab003a41bcc6bf94c70d145a9dbb3b07b6bdf0079cd5 @@ -8104,6 +8185,17 @@ packages: purls: [] size: 6682 timestamp: 1723823193324 +- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda + build_number: 6 + sha256: 0816298ff9928059d3a0c647fda7de337a2364b26c974622d1a8a6435bb04ae6 + md5: e1746f65158fa51d5367ec02547db248 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 7361 + timestamp: 1743483194308 - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 md5: 3eeeeb9e4827ace8c0c1419c85d590ad @@ -8567,21 +8659,21 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 255547 timestamp: 1743037492141 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py313hfe82de2_0.conda - sha256: f25deaa5163f8baf0090908fae0cfeeffda650306f9bfb5ec5143bda7edc2a58 - md5: 520be555c706dbc4385f82d1cb9dc41c +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py312hf79aa60_0.conda + sha256: 72e1934499126cb9a3a5aa00e535fc430617206f0ecd8f34f5afd6bdb572a6a8 + md5: ce118d87ae26bd6204ac95aa7d7bd32e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 8872400 - timestamp: 1742584319600 + size: 8907135 + timestamp: 1742584315193 - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda sha256: 57502cc6d8485cde43b56ffaa78474e55865e826a929340b190d992770dcacb2 md5: 1d4fc6acbbb5ef785e3553dc986a5fe0 diff --git a/tests/test_narx_jac.py b/tests/test_narx_jac.py index 953fcb8..2404315 100644 --- a/tests/test_narx_jac.py +++ b/tests/test_narx_jac.py @@ -2,8 +2,10 @@ import numpy as np from numpy.testing import assert_allclose, assert_almost_equal, assert_array_equal +from scipy.integrate import odeint +from sklearn.metrics import r2_score -from fastcan.narx import NARX +from fastcan.narx import NARX, make_narx def test_simple(): @@ -203,3 +205,78 @@ def test_complex(): grad_num = (e_1 - e_0).sum(axis=1) / delta_w assert_allclose(grad.sum(axis=0)[i], grad_num.sum(), rtol=1e-1) + + +def test_score_nan(): + """Test fitting scores when data contain nan.""" + def duffing_equation(y, t): + """Non-autonomous system""" + y1, y2 = y + u = 2.5 * np.cos(2 * np.pi * t) + dydt = [y2, -0.1 * y2 + y1 - 0.25 * y1**3 + u] + return dydt + + + dur = 10 + n_samples = 1000 + + y0 = None + if y0 is None: + n_init = 10 + x0 = np.linspace(0, 2, n_init) + y0_y = np.cos(np.pi * x0) + y0_x = np.sin(np.pi * x0) + y0 = np.c_[y0_x, y0_y] + else: + n_init = len(y0) + + dur = 10 + n_samples = 1000 + rng = np.random.default_rng(12345) + e_train = rng.normal(0, 0.001, n_samples) + e_test = rng.normal(0, 0.001, n_samples) + + t = np.linspace(0, dur, n_samples) + + sol = odeint(duffing_equation, [0.6, 0.8], t) + u_train = 2.5 * np.cos(2 * np.pi * t).reshape(-1, 1) + y_train = sol[:, 0] + e_train + + sol = odeint(duffing_equation, [0.6, -0.8], t) + u_test = 2.5 * np.cos(2 * np.pi * t).reshape(-1, 1) + y_test = sol[:, 0] + e_test + + max_delay = 3 + + narx_model = make_narx( + X=u_train, + y=y_train, + n_terms_to_select=5, + max_delay=max_delay, + poly_degree=3, + verbose=0, + ) + + narx_model.fit(u_train, y_train, coef_init="one_step_ahead") + y_train_msa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) + y_test_msa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) + + assert r2_score(y_train, y_train_msa_pred) > 0.99 + assert r2_score(y_test, y_test_msa_pred) > -1 + + u_all = np.r_[u_train, [[np.nan]], u_test] + y_all = np.r_[y_train, [np.nan], y_test] + narx_model = make_narx( + X=u_all, + y=y_all, + n_terms_to_select=5, + max_delay=max_delay, + poly_degree=3, + verbose=0, + ) + narx_model.fit(u_all, y_all, coef_init="one_step_ahead") + y_train_msa_pred = narx_model.predict(u_train, y_init=y_train[:max_delay]) + y_test_msa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) + + assert r2_score(y_train, y_train_msa_pred) > 0.98 + assert r2_score(y_test, y_test_msa_pred) > 0.99 From ee26c612aba1b98de186ff3a4f2c7877ddb8d09d Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Mon, 7 Apr 2025 10:24:55 +0800 Subject: [PATCH 6/7] MNT fix poor msa narx results on windows --- examples/plot_narx_msa.py | 4 +- pixi.lock | 1248 ++++++++++++++++++------------------- tests/test_narx_jac.py | 6 +- 3 files changed, 613 insertions(+), 645 deletions(-) diff --git a/examples/plot_narx_msa.py b/examples/plot_narx_msa.py index 2bb1835..655b019 100644 --- a/examples/plot_narx_msa.py +++ b/examples/plot_narx_msa.py @@ -83,8 +83,8 @@ def auto_duffing_equation(y, t): n_samples = 1000 rng = np.random.default_rng(12345) -e_train = rng.normal(0, 0.001, n_samples) -e_test = rng.normal(0, 0.001, n_samples) +e_train = rng.normal(0, 0.0002, n_samples) +e_test = rng.normal(0, 0.0002, n_samples) t = np.linspace(0, dur, n_samples) sol = odeint(duffing_equation, [0.6, 0.8], t) diff --git a/pixi.lock b/pixi.lock index ceb8aeb..c718ba3 100644 --- a/pixi.lock +++ b/pixi.lock @@ -24,7 +24,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda @@ -45,7 +45,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py313h8ef605b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py313h86fcf2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda @@ -55,8 +55,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.9.0-h09a7c41_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.8-default_h3571c67_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.8-default_h576c50e_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-18.1.8-h6a44ed1_24.conda @@ -70,15 +70,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.9.0-h20888b2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.9.0-h02557f8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.3.0-hcc3c99d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.3.0-hbf5bf67_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.3.0-h3223c34_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.8-default_h3571c67_8.conda @@ -86,21 +86,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-18.1.8-h7c275be_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.3.0-h297be85_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-default_h3571c67_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.14.0-hebb159f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-default_h3571c67_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-default_h3571c67_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda @@ -116,7 +116,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.6.1-py313hedeaec8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py313h7e69c36_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda @@ -130,8 +130,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.9.0-hdf49b6b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18-18.1.8-default_hf90f093_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-18.1.8-default_h474c9e2_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-18.1.8-h2ae9ea5_24.conda @@ -145,15 +145,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.9.0-hba80287_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cython-3.0.12-py313hd607753_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.9.0-h5692697_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.3.0-h3ef1dbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.3.0-h16b3750_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.3.0-h3c33bd0_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp18.1-18.1.8-default_hf90f093_8.conda @@ -161,21 +160,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-18.1.8-h6dc3340_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.3.0-h5020ebb_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-hc4b4ae8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-default_hb458b26_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.14.0-hce475f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-default_hb458b26_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-default_hb458b26_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda @@ -191,7 +190,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.6.1-py313hecba28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py313h9a24e0a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1300.6.5-h03f4b80_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda @@ -214,11 +213,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-1.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/meson-python-0.17.1-pyh70fd9c4_1.conda @@ -232,7 +231,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.6.1-py313h4f67946_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py313h2eca4b9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda @@ -296,7 +295,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.56.0-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.57.0-py313h8060acc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-h48d6fc4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda @@ -319,7 +318,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -358,7 +357,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.0-h2ff4ddf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda @@ -366,7 +365,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.2-ha7bfdaf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda @@ -383,7 +382,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda @@ -432,10 +431,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.3-py313h5f61773_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.9.0-py313h5f61773_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -445,9 +444,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h8060acc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py313h8e95178_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py313h8e95178_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.3-h6441bc3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.9.0-h6441bc3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda @@ -457,7 +456,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.6.1-py313h8ef605b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.15.2-py313h86fcf2b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -471,8 +470,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.1-hf5ce1d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda @@ -547,8 +546,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -574,13 +573,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.56.0-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.57.0-py313h717bdf5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.9.0-h02557f8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h40dfd5c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.3.0-hcc3c99d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.3.0-hbf5bf67_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.3.0-h3223c34_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda @@ -601,7 +600,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py313habf4b1d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -618,8 +617,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py313h0c4e38b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.17-h72f5680_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda @@ -633,14 +632,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.3.0-h297be85_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-default_h3571c67_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda @@ -649,11 +648,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.14.0-hebb159f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-20.1.2-ha54dae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-default_h3571c67_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-default_h3571c67_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.1-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.1-py313he981572_0.conda @@ -701,7 +700,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h534c281_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -711,7 +710,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313h717bdf5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.1-py313h2d45800_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py313h2d45800_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -722,7 +721,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.6.1-py313hedeaec8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.15.2-py313h7e69c36_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -738,8 +737,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.1-hf5ce1d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda @@ -794,8 +793,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda @@ -821,13 +820,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.56.0-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.57.0-py313ha9b7d5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.9.0-h5692697_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-h1d14073_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.3.0-h3ef1dbf_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.3.0-h16b3750_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.3.0-h3c33bd0_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda @@ -835,7 +834,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda @@ -848,7 +846,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py313h8f79df9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -865,8 +863,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py313hf9c7212_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda @@ -880,14 +878,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.3.0-h5020ebb_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-hc4b4ae8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-default_hb458b26_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda @@ -896,11 +894,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.14.0-hce475f1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.2-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-default_hb458b26_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-default_hb458b26_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.1-py313h39782a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.1-py313haaf02c0_0.conda @@ -948,7 +946,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.2-h81fe080_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -958,7 +956,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313ha9b7d5b_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py313he6960b1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py313he6960b1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda @@ -969,7 +967,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.6.1-py313hecba28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.15.2-py313h9a24e0a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda @@ -985,8 +983,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.1-hf5ce1d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda @@ -1064,7 +1062,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.56.0-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.57.0-py313hb4c8b1a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.13.3-h0b5ce68_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda @@ -1088,7 +1086,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py313hfa70ccb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda @@ -1116,14 +1114,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-14.2.0-h1383e82_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.0-h7025463_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-14.2.0-h1383e82_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_ha69328c_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-h135ad9c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-31_h1aa476e_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.47-had7236b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda @@ -1132,7 +1130,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda @@ -1176,10 +1174,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject-metadata-0.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyproject_hooks-1.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.3-py313h3e3797f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.9.0-py313hb43cee3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-h261c0b1_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-build-1.2.2.post1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda @@ -1191,9 +1189,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-307-py313h5813708_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313hb4c8b1a_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py313h2100fd5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py313h2100fd5_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.3-h72a539a_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.9.0-h83cda92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda @@ -1202,7 +1200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.6.1-py313h4f67946_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py313h2eca4b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh5737063_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda @@ -1217,8 +1215,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.1-hf5ce1d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda @@ -1264,11 +1262,11 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda @@ -1276,62 +1274,60 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-6_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-hf636f53_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py312hf79aa60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.4-py313h22842b3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py312hb401068_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2025.1.31-h8857fd0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py312hdfbeeba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.1-hc426f3f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.7-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h534c281_101_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-6_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-6_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.4-py312h60e8e2e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/black-25.1.0-py313h8f79df9_0.conda @@ -1343,7 +1339,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda @@ -1359,11 +1355,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.2-h81fe080_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-6_cp313.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.2-py313h35210b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.4-py313hd3a9b03_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda win-64: - conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda @@ -1375,7 +1371,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cython-lint-0.16.6-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda @@ -1389,11 +1385,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.13.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-h261c0b1_101_cp313.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-6_cp313.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.2-py313he8c32b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.4-py313h9f3c1d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tokenize-rt-6.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda @@ -1416,7 +1412,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda @@ -1435,11 +1431,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-freethreading-3.13.2-h92d6c8b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313t.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl + - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b1/cython-3.1.0b1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/00/06/5306b8199bffac2a29d9119c11f457f6c7d41115a335b78d3f86fad4dbe8/numpy-2.2.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl @@ -1452,7 +1448,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.2-hf95d169_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.0-h240833e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.1-hdb6dae5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda @@ -1468,11 +1464,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-freethreading-3.13.2-h92d6c8b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313t.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl + - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b1/cython-3.1.0b1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fa/e2/793288ede17a0fdc921172916efb40f3cbc2aa97e76c5c84aba6dc7e8747/numpy-2.2.4-cp313-cp313t-macosx_10_13_x86_64.whl - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-macosx_10_13_x86_64.whl @@ -1485,7 +1481,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.2-ha82da77_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda @@ -1501,11 +1497,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-freethreading-3.13.2-h92d6c8b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313t.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl + - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b1/cython-3.1.0b1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/75/bb4573f6c462afd1ea5cbedcc362fe3e9bdbcc57aefd37c681be1155fbaa/numpy-2.2.4-cp313-cp313t-macosx_11_0_arm64.whl - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-macosx_12_0_arm64.whl @@ -1517,7 +1513,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.2-py313hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.49.1-h67fdade_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda @@ -1531,14 +1527,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.2-hd7c436d_1_cp313t.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-freethreading-3.13.2-h92d6c8b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313t.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34438-hfd919c2_26.conda - - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl + - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b1/cython-3.1.0b1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/05/eb7eec66b95cf697f08c754ef26c3549d03ebd682819f794cb039574a0a6/numpy-2.2.4-cp313-cp313t-win_amd64.whl - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-win_amd64.whl @@ -1777,35 +1773,35 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 145482 timestamp: 1738740460562 -- conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda - sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef - md5: 986a60de52eec10b36c61bb3890858ff +- conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda + sha256: c68f110cd491dc839a69e340930862e54c00fb02cede5f1831fcf8a253bd68d2 + md5: b9b0c42e7316aa6043bdfd49883955b8 depends: - click >=8.0.0 - mypy_extensions >=0.4.3 - packaging >=22.0 - pathspec >=0.9 - platformdirs >=2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.11 license: MIT license_family: MIT - size: 394760 - timestamp: 1738616131766 -- conda: https://conda.anaconda.org/conda-forge/noarch/black-25.1.0-pyh866005b_0.conda - sha256: c68f110cd491dc839a69e340930862e54c00fb02cede5f1831fcf8a253bd68d2 - md5: b9b0c42e7316aa6043bdfd49883955b8 + size: 172678 + timestamp: 1742502887437 +- conda: https://conda.anaconda.org/conda-forge/osx-64/black-25.1.0-py312hb401068_0.conda + sha256: e937f18e36e23ecf0ec9ab89fc3ef5263308e88b645c4278fe8807fd95bef4c1 + md5: d37d5213fcf23a33d946e40937578a02 depends: - click >=8.0.0 - mypy_extensions >=0.4.3 - packaging >=22.0 - pathspec >=0.9 - platformdirs >=2 - - python >=3.11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 172678 - timestamp: 1742502887437 + size: 393484 + timestamp: 1738616259890 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/black-25.1.0-py313h8f79df9_0.conda sha256: ef2f742f6abefc32506038a4c64bf0c086c8e13234c1fe80c8675c7f92589cc2 md5: 698e6c77b39a4f3d82c8e2e7d82b81c8 @@ -2184,33 +2180,33 @@ packages: purls: [] size: 1524254 timestamp: 1741555212198 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_4.conda - sha256: 2113fe10f67ddaf2b34522c755924f0f89a4c9507604baddb5a3091b8fac03dc - md5: df1dfc9721444ad44d0916d9454e55f3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-ha66f10e_6.conda + sha256: c716942cddaaf6afb618da32020c5a8ab2aec547bd3f0766c40b95680b998f05 + md5: a126dcde2752751ac781b67238f7fac4 depends: - - cctools_osx-64 1010.6 hd19c6af_4 - - ld64 951.9 h4e51db5_4 + - cctools_osx-64 1010.6 hd19c6af_6 + - ld64 951.9 h4e51db5_6 - libllvm18 >=18.1.8,<18.2.0a0 license: APSL-2.0 license_family: Other purls: [] - size: 21571 - timestamp: 1742512411843 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_4.conda - sha256: 02f7ab57ddf0bfe291dac3a3e59ab7c65a3ae0a3a086440a7e2666b0e862b922 - md5: 2fecdd2278ff651073e9373f32151e41 + size: 22135 + timestamp: 1743872208832 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hb4fb6a3_6.conda + sha256: 393fc3bf21b0187384e652aa4fab184d633e57e3e63f2b10f16a3d5f7bb0717b + md5: e0ba8df6997102eb4d367e3e70f90778 depends: - - cctools_osx-arm64 1010.6 h3b4f5d3_4 - - ld64 951.9 h4c6efb1_4 + - cctools_osx-arm64 1010.6 h3b4f5d3_6 + - ld64 951.9 h4c6efb1_6 - libllvm18 >=18.1.8,<18.2.0a0 license: APSL-2.0 license_family: Other purls: [] - size: 21539 - timestamp: 1742512631773 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_4.conda - sha256: 4ca98572322a0dcc227b499fec46e37a46f81dded92a7d299ac3ec6cc3a4beed - md5: 1ddf5221f68b7df9e22795cdb01933e2 + size: 22254 + timestamp: 1743872374133 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hd19c6af_6.conda + sha256: 7b2b765be41040c749d10ba848c4afbaae89a9ebb168bbf809c8133486f39bcb + md5: 4694e9e497454a8ce5b9fb61e50d9c5d depends: - __osx >=10.13 - ld64_osx-64 >=951.9,<951.10.0a0 @@ -2220,17 +2216,17 @@ packages: - llvm-tools 18.1.* - sigtool constrains: + - clang 18.1.* - cctools 1010.6.* - ld64 951.9.* - - clang 18.1.* license: APSL-2.0 license_family: Other purls: [] - size: 1119334 - timestamp: 1742512370787 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_4.conda - sha256: e223912a174344cddfe7ea8a598d091b18e5defbc63c2037c3e42165654b09dc - md5: 57ce83eec79eff26016ae3e1af07e431 + size: 1119992 + timestamp: 1743872180962 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h3b4f5d3_6.conda + sha256: 6e9463499dddad0ee61c999031c84bd1b8233676bcd220aece1b754667c680d7 + md5: b876da50fbe92a19737933c7aa92fb02 depends: - __osx >=11.0 - ld64_osx-arm64 >=951.9,<951.10.0a0 @@ -2240,14 +2236,14 @@ packages: - llvm-tools 18.1.* - sigtool constrains: - - clang 18.1.* - cctools 1010.6.* - ld64 951.9.* + - clang 18.1.* license: APSL-2.0 license_family: Other purls: [] - size: 1104264 - timestamp: 1742512583707 + size: 1103413 + timestamp: 1743872332962 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 md5: c207fa5ac7ea99b149344385a9c0880d @@ -2808,23 +2804,10 @@ packages: purls: [] size: 219527 timestamp: 1690061203707 -- pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b0/cython-3.1.0b0-py3-none-any.whl +- pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/cython/3.1.0b1/cython-3.1.0b1-py3-none-any.whl name: cython - version: 3.1.0b0 + version: 3.1.0b1 requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py312h2614dfc_0.conda - sha256: de815476da537b911e2ceeb7f76b445d0c76b3d5fad35600ed28bc8d19302127 - md5: e5d2a28866ee990a340bde1eabde587a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 3766553 - timestamp: 1739228870146 - conda: https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.12-py313h5dec8f5_0.conda sha256: 8341920c1a53a418a359c2afc52ca5a8b9440667599bf149eebc7c925b639554 md5: 24a42a0c1cc33743e33572d63d489b54 @@ -2840,6 +2823,18 @@ packages: - pkg:pypi/cython?source=hash-mapping size: 3766349 timestamp: 1739228643862 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py312hdfbeeba_0.conda + sha256: a186d286aedb2230dcdcaf2a8602c098112eaacdf9d8af39da2a474950bf1b98 + md5: 5801a15eece1bd00c7f6dc0c68640a9f + depends: + - __osx >=10.13 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 3455381 + timestamp: 1739228540351 - conda: https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.12-py313h9efc8c2_0.conda sha256: 132d6e81a95c042210f33c3d24f03d52632738434b3ea48cfb184a26684d365e md5: ddace7cae5c3073c031ad08ef01881da @@ -3150,9 +3145,9 @@ packages: purls: [] size: 4102 timestamp: 1566932280397 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.56.0-py313h8060acc_0.conda - sha256: 1262509cf3b8d2523dd7de483d5f9da61bc236f35896b69c61035819d12e641a - md5: 2011223fad66419512446914251be2a6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.57.0-py313h8060acc_0.conda + sha256: 069c91292b986dd1ceeaf186908ccd312aba9e461022949edfa6828f04d47abf + md5: 76b3a3367ac578a7cc43f4b7814e7e87 depends: - __glibc >=2.17,<3.0.a0 - brotli @@ -3164,11 +3159,11 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - size: 2890070 - timestamp: 1738941077544 -- conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.56.0-py313h717bdf5_0.conda - sha256: d6f800eec78629277427a08f2719485e9d991ab2573a406c2b45467fc49e8629 - md5: 1f3a7b59e9bf19440142f3fc45230935 + size: 2847860 + timestamp: 1743732656559 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.57.0-py313h717bdf5_0.conda + sha256: 8db8db18d55e5caf5b81506fcd918816bf3afbc702830ce4ff470f2db19c4bfe + md5: 190b8625dd6c38afe4f10e3be50122e4 depends: - __osx >=10.13 - brotli @@ -3179,11 +3174,11 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - size: 2777761 - timestamp: 1738940643322 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.56.0-py313ha9b7d5b_0.conda - sha256: 028b5fab6a452760bf1e1b4d9172d719661544c3b4c07cd1f4cedc07347bfef8 - md5: d6d9b47c49fc7e445aad69437c448033 + size: 2782598 + timestamp: 1743732450936 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.57.0-py313ha9b7d5b_0.conda + sha256: 4cf84b94c810e3802ae27e40f7e7166ff8ff428507e9f44a245609e654692a4c + md5: 789f1322ec25f3ebc370e0d18bc12668 depends: - __osx >=11.0 - brotli @@ -3195,11 +3190,11 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - size: 2755866 - timestamp: 1738940671974 -- conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.56.0-py313hb4c8b1a_0.conda - sha256: 11d66d9cfa0778f6304844dbbb66663d5c26b707a6a35497aea2a6df75db1f9d - md5: 49094a38da3e5a851adb2e25c5bae8a9 + size: 2802226 + timestamp: 1743732535385 +- conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.57.0-py313hb4c8b1a_0.conda + sha256: 750a7d94f1ab8f9452204f2f468b4bb50cc47e70c15296c4e89ba20241ba7471 + md5: a7cb72059cad745b6c193d7d8d922b82 depends: - brotli - munkres @@ -3212,8 +3207,8 @@ packages: license_family: MIT purls: - pkg:pypi/fonttools?source=hash-mapping - size: 2442238 - timestamp: 1738940590708 + size: 2449299 + timestamp: 1743732768155 - conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.9.0-h02557f8_0.conda sha256: 4cba8a2a83d2de9945d6156b29c4b7bdc06d8c512b0419c0eb58111f0fddd224 md5: 2cf645572d7ae534926093b6e9f3bdff @@ -3311,102 +3306,104 @@ packages: - sphinx-basic-ng>=1.0.0b2 - pygments>=2.7 requires_python: '>=3.8' -- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda - sha256: 5075f02a18644daeb16d0360ffad9ac8652e299ffb4a19ea776522a962592564 - md5: b5ad3b799b9ae996fcc8aab3a60fb48e +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.3.0-hcc3c99d_1.conda + sha256: 6dfcb28c051c258b566bf128c4df870f9df6e3dc1b7177d9cffcef0b0fcf7157 + md5: e1177b9b139c6cf43250427819f2f07b depends: - cctools - - gfortran_osx-64 13.2.0 + - gfortran_osx-64 13.3.0 - ld64 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 32023 - timestamp: 1694179582309 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda - sha256: 1232495ccd08cec4c80d475d584d1fc84365a1ef1b70e45bb0d9c317e9ec270e - md5: 9eac94b5f64ba2d59ef2424cc44bebea + size: 32387 + timestamp: 1742561765479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.3.0-h3ef1dbf_1.conda + sha256: 2a575b69b127f13efe8e1306bb25d5a03b945eaa12c01334a15e49e7e90b92e3 + md5: fa634965eafb7e70b443f99543755164 depends: - cctools - - gfortran_osx-arm64 13.2.0 + - gfortran_osx-arm64 13.3.0 - ld64 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 31973 - timestamp: 1694179448089 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda - sha256: af284f1df515e4a8623f23cc43298aab962260e890c620d079300d7d6d7acf08 - md5: 57aa4cb95277a27aa0a1834ed97be45b + size: 32295 + timestamp: 1742561783646 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.3.0-hbf5bf67_105.conda + sha256: c7d9cae04fa4becb2ba24cd6129748788f93ea0a0917e1266474322dea6df574 + md5: f56a107c8d1253346d01785ecece7977 depends: + - __osx >=10.13 - gmp >=6.3.0,<7.0a0 - isl 0.26.* - - libcxx >=16 - - libgfortran-devel_osx-64 13.2.0.* - - libgfortran5 >=13.2.0 - - libiconv >=1.17,<2.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libcxx >=17 + - libgfortran-devel_osx-64 13.3.0.* + - libgfortran5 >=13.3.0 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 - mpc >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - zlib license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 20378841 - timestamp: 1707328905745 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda - sha256: 1ba0d59650e2d54ebcfdd6d6e7ce6823241764183c34f082bc1313ec43b01c7a - md5: 4a020e943a2888b242b312a8e953eb9a + size: 20695550 + timestamp: 1743911459556 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.3.0-h16b3750_105.conda + sha256: 3c8937beb1aa609e00bb2f16d9a45d1bc721fa7c9402c0c2ef11e1fb21b31c00 + md5: fd79edb2a0fb2882f2e0348d522a91fd depends: + - __osx >=11.0 - gmp >=6.3.0,<7.0a0 - isl 0.26.* - - libcxx >=16 - - libgfortran-devel_osx-arm64 13.2.0.* - - libgfortran5 >=13.2.0 - - libiconv >=1.17,<2.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libcxx >=17 + - libgfortran-devel_osx-arm64 13.3.0.* + - libgfortran5 >=13.3.0 + - libiconv >=1.18,<2.0a0 + - libzlib >=1.3.1,<2.0a0 - mpc >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - zlib license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 18431819 - timestamp: 1707330710124 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda - sha256: 3ec61971be147b5f723293fc56e0d35a4730aa457b7c5e03aeb78b341f41ca2c - md5: 71d59c1ae3fea7a97154ff0e20b38df3 + size: 18726808 + timestamp: 1743912471838 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.3.0-h3223c34_1.conda + sha256: 3c0887454dc9ddf4d627181899119908db8f4740fe60f93fb98cf6dc408e90bf + md5: a6eeb1519091ac3239b88ee3914d6cb6 depends: - cctools_osx-64 - clang - clang_osx-64 - - gfortran_impl_osx-64 13.2.0 + - gfortran_impl_osx-64 13.3.0 - ld64_osx-64 - libgfortran 5.* - - libgfortran-devel_osx-64 13.2.0 - - libgfortran5 >=13.2.0 + - libgfortran-devel_osx-64 13.3.0 + - libgfortran5 >=13.3.0 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 34970 - timestamp: 1694179553303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda - sha256: 3b075f15aba705d43870fdfde5a8d3f1adc9a045d575b4665726afe244149a64 - md5: 13ca786286ed5efc9dc75f64b5101210 + size: 35730 + timestamp: 1742561746925 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.3.0-h3c33bd0_1.conda + sha256: 216063ac9e12888a76b7fc6f1d96b1625185391bc7900e0cecb434ef96583917 + md5: e9be7ea695e31496f0cabf85998c1bbc depends: - cctools_osx-arm64 - clang - clang_osx-arm64 - - gfortran_impl_osx-arm64 13.2.0 + - gfortran_impl_osx-arm64 13.3.0 - ld64_osx-arm64 - libgfortran 5.* - - libgfortran-devel_osx-arm64 13.2.0 - - libgfortran5 >=13.2.0 + - libgfortran-devel_osx-arm64 13.3.0 + - libgfortran5 >=13.3.0 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 35260 - timestamp: 1694179424284 + size: 35872 + timestamp: 1742561757708 - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc md5: 427101d13f19c4974552a4e5b072eef1 @@ -3588,16 +3585,6 @@ packages: purls: [] size: 11761697 timestamp: 1720853679409 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - purls: [] - size: 11857802 - timestamp: 1720853997952 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 md5: 8579b6bb8d18be7c0b27fb08adeeeb40 @@ -3882,16 +3869,17 @@ packages: - pkg:pypi/joblib?source=hash-mapping size: 220252 timestamp: 1733736157394 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.11.0-pyhd8ed1ab_0.conda - sha256: 72cc0f8f7b940c698bd6acca1a7b19fe283eeb29e91de42036be0d9411657181 - md5: bc54de495aadee09e46ec3ac49832b38 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.12.0-pyhd8ed1ab_0.conda + sha256: 889e2a49de796475b5a4bc57d0ba7f4606b368ee2098e353a6d9a14b0e2c6393 + md5: 56275442557b3b45752c10980abfe2db depends: - python >=3.9 license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/json5?source=compressed-mapping - size: 33810 - timestamp: 1743599415955 + - pkg:pypi/json5?source=hash-mapping + size: 34114 + timestamp: 1743722170015 - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py313h78bf25f_1.conda sha256: 18d412dc91ee7560f0f94c19bb1c3c23f413b9a7f55948e2bb3ce44340439a58 md5: 668d64b50e7ce7984cfe09ed7045b9fa @@ -4345,25 +4333,25 @@ packages: purls: [] size: 510641 timestamp: 1739161381270 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_4.conda - sha256: ec0bb8cc8cce0237fe84a737a6367fd3621126076b739ea89de49f451e92506a - md5: a35ccc73726f64d22dc9c4349f5c58bd +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h4e51db5_6.conda + sha256: e40a618bfa56eba6f18bc30ec45e5b63797e5be0c64b632a09e13853b216ed8c + md5: 45bf526d53b1bc95bc0b932a91a41576 depends: - - ld64_osx-64 951.9 h33512f0_4 + - ld64_osx-64 951.9 h33512f0_6 - libllvm18 >=18.1.8,<18.2.0a0 constrains: - - cctools 1010.6.* - cctools_osx-64 1010.6.* + - cctools 1010.6.* license: APSL-2.0 license_family: Other purls: [] - size: 18874 - timestamp: 1742512391779 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_4.conda - sha256: 4806f1356117fe4a6c0c9927587cd456ee9a891bb943e300b03aff9f17ad3a5c - md5: de921c0941f051f3b019d46a0c83fdda + size: 19401 + timestamp: 1743872196322 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h4c6efb1_6.conda + sha256: 2c796872c89dee18c8455bd5e4d7dcc6c4f8544c873856d12a64585ac60e315f + md5: f756d0a0ffba157687a29077f3408016 depends: - - ld64_osx-arm64 951.9 hb6b49e2_4 + - ld64_osx-arm64 951.9 hb6b49e2_6 - libllvm18 >=18.1.8,<18.2.0a0 constrains: - cctools 1010.6.* @@ -4371,11 +4359,11 @@ packages: license: APSL-2.0 license_family: Other purls: [] - size: 18894 - timestamp: 1742512610229 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_4.conda - sha256: 809c88c6ca19e08707320dff428ea4936b151324faed71ca5600f6bf54ce5504 - md5: b1678041160c249a3df7937be93c56aa + size: 19446 + timestamp: 1743872353403 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h33512f0_6.conda + sha256: e048342a05e77440f355c46a47871dc71d9d8884a4bf73dedf1a16c84aabb834 + md5: 6cd120f5c9dae65b858e1fad2b7959a0 depends: - __osx >=10.13 - libcxx @@ -4384,17 +4372,17 @@ packages: - tapi >=1300.6.5,<1301.0a0 constrains: - cctools_osx-64 1010.6.* - - cctools 1010.6.* - - clang >=18.1.8,<19.0a0 - ld 951.9.* + - clang >=18.1.8,<19.0a0 + - cctools 1010.6.* license: APSL-2.0 license_family: Other purls: [] - size: 1099376 - timestamp: 1742512322014 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_4.conda - sha256: 0376873d88573688168b5b7618391dd68fa0b309ddce7fa77c5f9037ada7cf66 - md5: d01a78a16542f235dd755ca66772795e + size: 1099095 + timestamp: 1743872136626 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hb6b49e2_6.conda + sha256: 5ab2c15358d0ebfe26bafd2f768f524962f1a785c81d42518afb4f5d397e83f9 + md5: 61743b006633f5e1f9aa9e707f44fcb1 depends: - __osx >=11.0 - libcxx @@ -4404,13 +4392,13 @@ packages: constrains: - ld 951.9.* - clang >=18.1.8,<19.0a0 - - cctools 1010.6.* - cctools_osx-arm64 1010.6.* + - cctools 1010.6.* license: APSL-2.0 license_family: Other purls: [] - size: 1019138 - timestamp: 1742512519169 + size: 1022641 + timestamp: 1743872275249 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 md5: 01f8d123c96816249efd255a31ad7712 @@ -5096,42 +5084,42 @@ packages: purls: [] size: 53733 timestamp: 1740240690977 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d - md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda + sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e + md5: 090b3c9ae1282c8f9b394ac9e4773b10 depends: - - libgfortran5 13.2.0 h2873a65_3 + - libgfortran5 14.2.0 h51e75f0_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 110106 - timestamp: 1707328956438 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf + size: 156202 + timestamp: 1743862427451 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 + md5: 044a210bc1d5b8367857755665157413 depends: - - libgfortran5 13.2.0 hf226fd6_3 + - libgfortran5 14.2.0 h6c33f7e_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 110233 - timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda - sha256: 841525b5e40b6a0fc7deb325721313cb26b6b50c2dcc202a508b746a851d0c1b - md5: 3a689f0d733e67828ad00eac5f3cf26e + size: 156291 + timestamp: 1743863532821 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.3.0-h297be85_105.conda + sha256: 6784e2ea1d76601162a90925e39c54944d871c6876e5e7ef4305529c4e7ebdc7 + md5: c4967f8e797d0ffef3c5650fcdc2cdb5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 457364 - timestamp: 1707328861468 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda - sha256: 932daa12d7af965db25cd08485031ca857a91886c80d56b02365d4636729362b - md5: 54386854330df39e779228c7922379a5 + size: 509153 + timestamp: 1743911443629 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.3.0-h5020ebb_105.conda + sha256: dbe0ae99689beabca9714e01c1457ee69011dd976b20b6b6a408ca94f45b9625 + md5: 76a60b647ce1d7590923f1122e3ea4b2 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1964427 - timestamp: 1707330674197 + size: 1961267 + timestamp: 1743912449509 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c md5: 556a4fdfac7287d349b8f09aba899693 @@ -5145,30 +5133,30 @@ packages: purls: [] size: 1461978 timestamp: 1740240671964 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda - sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b - md5: e4fb4d23ec2870ff3c40d10afe305aec +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 + md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 5.0.0 14_2_0_*_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1571379 - timestamp: 1707328880361 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a - md5: 66ac81d54e95c534ae488726c1f698ea + size: 1225013 + timestamp: 1743862382377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 + md5: 69806c1e957069f1d515830dcc9f6cbb depends: - llvm-openmp >=8.0.0 constrains: - - libgfortran 5.0.0 13_2_0_*_3 + - libgfortran 5.0.0 14_2_0_*_103 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 997381 - timestamp: 1707330687590 + size: 806566 + timestamp: 1743863491726 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d md5: 928b8be80851f5d8ffb016f9c81dae7a @@ -5180,27 +5168,27 @@ packages: purls: [] size: 134712 timestamp: 1731330998354 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.0-h2ff4ddf_0.conda - sha256: 8e8737ca776d897d81a97e3de28c4bb33c45b5877bbe202b9b0ad2f61ca39397 - md5: 40cdeafb789a5513415f7bdbef053cf5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.1-h2ff4ddf_0.conda + sha256: 18e354d30a60441b0bf5fcbb125b6b22fd0df179620ae834e2533d44d1598211 + md5: 0305434da649d4fb48a425e588b79ea6 depends: - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - libgcc >=13 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 constrains: - - glib 2.84.0 *_0 + - glib 2.84.1 *_0 license: LGPL-2.1-or-later purls: [] - size: 3998765 - timestamp: 1743038881905 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.0-h7025463_0.conda - sha256: 0b4f9581e2dba58bc38cb00453e145140cf6230a56887ff1195e63e2b1e3f1c2 - md5: ea8df8a5c5c7adf4c03bf9e3db1637c3 + size: 3947789 + timestamp: 1743773764878 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.1-h7025463_0.conda + sha256: 75a35a0134c7b2f3f41dbf24faa417be6a98a70db23dc1225b0c74ea45c0ce61 + md5: 6cbaea9075a4f007eb7d0a90bb9a2a09 depends: - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 @@ -5209,11 +5197,11 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - glib 2.84.0 *_0 + - glib 2.84.1 *_0 license: LGPL-2.1-or-later purls: [] - size: 3842095 - timestamp: 1743039211561 + size: 3806534 + timestamp: 1743774256525 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 md5: 434ca7e50e40f4918ab701e3facd59a0 @@ -5261,7 +5249,7 @@ packages: md5: b87a0ac5ab6495d8225db5dc72dd21cd depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca - - libxml2 >=2.13.4,<3.0a0 + - libxml2 >=2.13.4,<2.14.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -5420,34 +5408,34 @@ packages: purls: [] size: 3732648 timestamp: 1740088548986 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-hc29ff6c_3.conda - sha256: c488d96dcd0b2db0438b9ec7ea92627c1c36aa21491ebcd5cc87a9c58aa0a612 - md5: a04c2fc058fd6b0630c1a2faad322676 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.8-default_h3571c67_5.conda + sha256: 6ea08f3343727d171981be54e92117bea0da4199f227efe47c605e0ee345cf33 + md5: 01dd8559b569ad39b64fef0a61ded1e9 depends: - __osx >=10.13 - libcxx >=18 - - libxml2 >=2.13.5,<3.0a0 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 27771340 - timestamp: 1737837075440 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-hc4b4ae8_3.conda - sha256: eaf337e7323555705ef8fad64778de506828d3b6deab2493170c6fe8ad4b7a76 - md5: 202596038a5dc079ef688bd7e17ffec1 + size: 27768928 + timestamp: 1743989832901 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm18-18.1.8-default_hb458b26_5.conda + sha256: fbc2dd45ef620fd6282a5ad6a25260df921760d717ac727bf62e7702279ec9cc + md5: ce107cf167da0a1abbccc0c8f979ef59 depends: - __osx >=11.0 - libcxx >=18 - - libxml2 >=2.13.5,<3.0a0 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 25986548 - timestamp: 1737837114740 + size: 25982718 + timestamp: 1743989933062 - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.2-ha7bfdaf_0.conda sha256: fbb343514f3bcee38ea157bde5834b8b5afebb936fec6d521d3de1ee4e321369 md5: 8354769527f9f441a3a04aa1c19188d9 @@ -5455,7 +5443,7 @@ packages: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - libxml2 >=2.13.7,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception @@ -5463,45 +5451,45 @@ packages: purls: [] size: 43003617 timestamp: 1743601873840 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f - md5: 42d5b6a0f30d3c10cd88cb8584fda1cb +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_0.conda + sha256: f4f21dfc54b08d462f707b771ecce3fa9bc702a2a05b55654f64154f48b141ef + md5: 0e87378639676987af32fee53ba32258 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 license: 0BSD purls: [] - size: 111357 - timestamp: 1738525339684 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.4-hd471939_0.conda - sha256: a895b5b16468a6ed436f022d72ee52a657f9b58214b91fabfab6230e3592a6dd - md5: db9d7b0152613f097cdb61ccf9f70ef5 + size: 112709 + timestamp: 1743771086123 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_0.conda + sha256: 3369b8ef0b544d17aebc530a687c0480051e825e8ffcd001b1a5f594fe276159 + md5: 8e1197f652c67e87a9ece738d82cef4f depends: - __osx >=10.13 license: 0BSD purls: [] - size: 103749 - timestamp: 1738525448522 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda - sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c - md5: e3fd1f8320a100f2b210e690a57cd615 + size: 104689 + timestamp: 1743771137842 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_0.conda + sha256: 4291dde55ebe9868491dc29716b84ac3de21b8084cbd4d05c9eea79d206b8ab7 + md5: ba24e6f25225fea3d5b6912e2ac562f8 depends: - __osx >=11.0 license: 0BSD purls: [] - size: 98945 - timestamp: 1738525462560 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.4-h2466b09_0.conda - sha256: 3f552b0bdefdd1459ffc827ea3bf70a6a6920c7879d22b6bfd0d73015b55227b - md5: c48f6ad0ef0a555b27b233dfcab46a90 + size: 92295 + timestamp: 1743771392206 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_0.conda + sha256: 1477e9bff05318f3129d37be0e64c76cce0973c4b8c73d13a467d0b7f03d157c + md5: 8d5cb0016b645d6688e2ff57c5d51302 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: 0BSD purls: [] - size: 104465 - timestamp: 1738525557254 + size: 104682 + timestamp: 1743771561515 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 md5: aeb98fdeb2e8f25d43ef71fbacbeec80 @@ -5545,15 +5533,6 @@ packages: purls: [] size: 88657 timestamp: 1723861474602 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 33408 - timestamp: 1697359010159 - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 md5: 7c7927b404672409d9917d49bff5f2d6 @@ -5984,14 +5963,6 @@ packages: purls: [] size: 1208687 timestamp: 1727279378819 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c - md5: 5aa797f8787fe7a17d1b0821485b5adc - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 100393 - timestamp: 1702724383534 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.1-hc4a0caf_0.conda sha256: 61a282353fcc512b5643ee58898130f5c7f8757c329a21fe407a3ef397d449eb md5: e7e5b0652227d646b44abdcbd989da7b @@ -6000,7 +5971,7 @@ packages: - libgcc >=13 - libstdcxx >=13 - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.13.6,<3.0a0 + - libxml2 >=2.13.6,<2.14.0a0 - xkeyboard-config - xorg-libxau >=1.0.12,<2.0a0 license: MIT/X11 Derivative @@ -6008,52 +5979,53 @@ packages: purls: [] size: 644992 timestamp: 1741762262672 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h8d12d68_0.conda - sha256: 98f0a11d6b52801daaeefd00bfb38078f439554d64d2e277d92f658faefac366 - md5: 109427e5576d0ce9c42257c2421b1680 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.7-h4bc477f_1.conda + sha256: 01c471d9912c482297fd8e83afc193101ff4504c72361b6aec6d07f2fa379263 + md5: ad1f1f8238834cd3c88ceeaee8da444a depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 691755 - timestamp: 1743091084063 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.7-hebb159f_0.conda - sha256: 21119df0a2267a9fc52d67bdf55e5449a2cdcc799865e2f90ab734fd61234ed8 - md5: 45786cf4067df4fbe9faf3d1c25d3acf + size: 692101 + timestamp: 1743794568181 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.14.0-hebb159f_1.conda + sha256: 31ac4dd36d8867287d4b620547d8e577a1ff10ceb66bb564d6889a8e9c098de8 + md5: 513da8e60b2bb7ea377095f86e262dd0 depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 609769 - timestamp: 1743091248758 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.7-h178c5d8_0.conda - sha256: d3ddc9ae8a5474f16f213ca41b3eda394e1eb1253f3ac85d3c6c99adcfb226d8 - md5: aa838a099ba09429cb80cc876b032ac4 + size: 592694 + timestamp: 1743808327723 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.14.0-hce475f1_1.conda + sha256: a545461defec57af2f47ca9ffb293e8c7238d586fbb116425ffbae1003055c6e + md5: 4bd3baf1177f0a1bcf392512980c9785 depends: - __osx >=11.0 - - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - - liblzma >=5.6.4,<6.0a0 + - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 license: MIT license_family: MIT purls: [] - size: 582736 - timestamp: 1743091513375 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-he286e8c_0.conda - sha256: 99182f93f1e7b678534df5f07ff94d7bf13a51386050f8fa9411fec764d0f39f - md5: aec4cf455e4c6cc2644abb348de7ff20 + size: 564696 + timestamp: 1743808493582 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.7-h442d1da_1.conda + sha256: 0a013527f784f4702dc18460070d8ec79d1ebb5087dd9e678d6afbeaca68d2ac + md5: c14ff7f05e57489df9244917d2b55763 depends: - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -6063,8 +6035,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1513490 - timestamp: 1743091551681 + size: 1513740 + timestamp: 1743795035107 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda sha256: 684e9b67ef7b9ca0ca993762eeb39705ec58e2e7f958555c758da7ef416db9f3 md5: e71f31f8cfb0a91439f2086fc8aa0461 @@ -6080,7 +6052,7 @@ packages: sha256: 6e3d99466d2076c35e7ac8dcdfe604da3d593f55b74a5b8e96c2b2ff63c247aa md5: 279ee338c9b34871d578cb3c7aa68f70 depends: - - libxml2 >=2.12.1,<3.0.0a0 + - libxml2 >=2.12.1,<2.14.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 @@ -6148,6 +6120,7 @@ packages: constrains: - openmp 20.1.2|20.1.2.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] size: 306881 timestamp: 1743660179071 @@ -6159,77 +6132,78 @@ packages: constrains: - openmp 20.1.2|20.1.2.* license: Apache-2.0 WITH LLVM-exception + license_family: APACHE purls: [] size: 282406 timestamp: 1743660065194 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-hc29ff6c_3.conda - sha256: 694ec5d1753cfff97785f3833173c1277d0ca0711d7c78ffc1011b40e7842741 - md5: 2585f8254d2ce24399a601e9b4e15652 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.8-default_h3571c67_5.conda + sha256: 084f1504b38608542f6ff816f9ff7e7ae9ec38b454604144e8ac0d0ec0415f82 + md5: cc07ff74d2547da1f1452c42b67bafd6 depends: - __osx >=10.13 - - libllvm18 18.1.8 hc29ff6c_3 - - libxml2 >=2.13.5,<3.0a0 + - libllvm18 18.1.8 default_h3571c67_5 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-tools-18 18.1.8 hc29ff6c_3 - - zstd >=1.5.6,<1.6.0a0 + - llvm-tools-18 18.1.8 default_h3571c67_5 + - zstd >=1.5.7,<1.6.0a0 constrains: - - clang 18.1.8 - llvm 18.1.8 - clang-tools 18.1.8 - llvmdev 18.1.8 + - clang 18.1.8 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 88081 - timestamp: 1737837724397 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-hc4b4ae8_3.conda - sha256: 3bdd318088fbd425d933f40f149700793094348b47326faa70694fc5cfbffc0e - md5: 6ede59b3835d443abdeace7cad57c8c4 + size: 92923 + timestamp: 1743990036185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18.1.8-default_hb458b26_5.conda + sha256: caa3f3fcc12b84e815a431706634eb850f05eaafc073ca1216e3fd87ec93134c + md5: 704b3d78d5cd327f3ce1372d07be01fd depends: - __osx >=11.0 - - libllvm18 18.1.8 hc4b4ae8_3 - - libxml2 >=2.13.5,<3.0a0 + - libllvm18 18.1.8 default_hb458b26_5 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-tools-18 18.1.8 hc4b4ae8_3 - - zstd >=1.5.6,<1.6.0a0 + - llvm-tools-18 18.1.8 default_hb458b26_5 + - zstd >=1.5.7,<1.6.0a0 constrains: - - clang-tools 18.1.8 - - llvmdev 18.1.8 - llvm 18.1.8 + - llvmdev 18.1.8 + - clang-tools 18.1.8 - clang 18.1.8 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 88046 - timestamp: 1737837646765 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-hc29ff6c_3.conda - sha256: 7a302073bd476d19474272471a5ed7ecec935e65fe16bb3f35e3d5d070ce0466 - md5: 61dfcd8dc654e2ca399a214641ab549f + size: 92544 + timestamp: 1743990114058 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18-18.1.8-default_h3571c67_5.conda + sha256: 80e64944776325ebf5c30d3bd588bb29768c589418286ddfb277818a32161128 + md5: 4391981e855468ced32ca1940b3d7613 depends: - __osx >=10.13 - - libllvm18 18.1.8 hc29ff6c_3 - - libxml2 >=2.13.5,<3.0a0 + - libllvm18 18.1.8 default_h3571c67_5 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 25229705 - timestamp: 1737837655816 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-hc4b4ae8_3.conda - sha256: dae19f3596a8e0edadbf6c3037c8c5d9039d1a9ab57f384108580ec8fb89b06f - md5: 40b505161818b48957269998b4b41114 + size: 25076183 + timestamp: 1743989960006 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-18-18.1.8-default_hb458b26_5.conda + sha256: 5e12079d864b5ab523cb18e3b9f37dd4764d67a2dfc4450b49b3ad8ebd9cd4d8 + md5: c8734b82ae16cf86b7f74140f09f9121 depends: - __osx >=11.0 - - libllvm18 18.1.8 hc4b4ae8_3 - - libxml2 >=2.13.5,<3.0a0 + - libllvm18 18.1.8 default_hb458b26_5 + - libxml2 >=2.14.0,<2.15.0a0 - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 + - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 23610271 - timestamp: 1737837584505 + size: 23239573 + timestamp: 1743990043950 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda sha256: d812caf52efcea7c9fd0eafb21d45dadfd0516812f667b928bee50e87634fae5 md5: 21b62c55924f01b6eef6827167b46acb @@ -6578,35 +6552,35 @@ packages: - pkg:pypi/munkres?source=hash-mapping size: 12452 timestamp: 1600387789153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py312h66e93f0_0.conda - sha256: b57c8bd233087479c70cb3ee3420861e0625b8a5a697f5abe41f5103fb2c2e69 - md5: a84061bc7e166712deb33bf7b32f756d +- conda: https://conda.anaconda.org/conda-forge/linux-64/mypy-1.15.0-py313h536fd9c_0.conda + sha256: ba62b6ccf6775290dcc4ca01c160b29f1fb67300928609fff60126fdae38034d + md5: 80b1cac6f9ca2ab7d96690b8aff3114d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - mypy_extensions >=1.0.0 - psutil >=4.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - typing_extensions >=4.1.0 license: MIT license_family: MIT - size: 18664849 - timestamp: 1738767977895 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py313h63b0ddb_0.conda - sha256: ec50dc7be70eff5008d73b4bd29fba72e02e499e9b60060a49ece4c1e12a9d55 - md5: e9dc60a2c2c62f4d2e24f61603f00bdc + size: 17058016 + timestamp: 1738767732637 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mypy-1.15.0-py312h01d7ebd_0.conda + sha256: 38132c4b5de6686965f21b51a1656438e83b2a53d6f50e9589e73fb57a43dd49 + md5: 0251bb4d6702b729b06fd5c7918e9242 depends: - __osx >=10.13 - mypy_extensions >=1.0.0 - psutil >=4.0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - typing_extensions >=4.1.0 license: MIT license_family: MIT - size: 11022410 - timestamp: 1738768159908 + size: 12384787 + timestamp: 1738768017667 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mypy-1.15.0-py313h90d716c_0.conda sha256: 4dc7a5a30017c742c204311afd078c639ca434b7f44835dfba789a5fb972ea6c md5: d01a9742c8e3c425d3c3d5e412a43872 @@ -7431,18 +7405,6 @@ packages: - pkg:pypi/prompt-toolkit?source=hash-mapping size: 271905 timestamp: 1737453457168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 - md5: 8e30db4239508a538e4a3b3cdf5b9616 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 466219 - timestamp: 1740663246825 - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py313h536fd9c_0.conda sha256: 1b39f0ce5a345779d70c885664d77b5f8ef49f7378829bd7286a7fb98b7ea852 md5: 8f315d1fce04a046c1b93fa6e536661d @@ -7457,6 +7419,17 @@ packages: - pkg:pypi/psutil?source=hash-mapping size: 475101 timestamp: 1740663284505 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py312h01d7ebd_0.conda + sha256: bdfa40a1ef3a80c3bec425a5ed507ebda2bdebce2a19bccb000db9d5c931750c + md5: fcad6b89f4f7faa999fa4d887eab14ba + depends: + - __osx >=10.13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 473946 + timestamp: 1740663466925 - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.0.0-py313h63b0ddb_0.conda sha256: b117f61eaf3d5fb640d773c3021f222c833a69c2ac123d7f4b028b3e5d638dd4 md5: 2c8969aaee2cf24bc8931f5fc36cccfd @@ -7691,51 +7664,51 @@ packages: - pkg:pypi/pyproject-hooks?source=hash-mapping size: 15528 timestamp: 1733710122949 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.8.3-py313h5f61773_0.conda - sha256: dbfe1e0480d0a4db631a9b54ce1306bc521995d8c8896d9ac1a5f5ade109462a - md5: 920bd63af614ba2bf6f5dd7d6922d5b7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.9.0-py313h5f61773_0.conda + sha256: bd452d15edc3999aa33de9b408be51454950dd47eb4f5635dbde7a6f329276ed + md5: f51f25ec8fcbf777f8b186bb5deeed40 depends: - __glibc >=2.17,<3.0.a0 - - libclang13 >=20.1.1 + - libclang13 >=20.1.2 - libegl >=1.7.0,<2.0a0 - libgcc >=13 - libgl >=1.7.0,<2.0a0 - libopengl >=1.7.0,<2.0a0 - libstdcxx >=13 - - libxml2 >=2.13.7,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 - libxslt >=1.1.39,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.8.3.* - - qt6-main >=6.8.3,<6.9.0a0 + - qt6-main 6.9.0.* + - qt6-main >=6.9.0,<6.10.0a0 license: LGPL-3.0-only license_family: LGPL purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 10621151 - timestamp: 1743273698789 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.8.3-py313h3e3797f_0.conda - sha256: 752202c03ba87a81a494faefc34be4cd4cf199f119a8b7d8aab5097decfbb6e0 - md5: 8c3c5152587a06cfd1e98f99dd2e098d - depends: - - libclang13 >=20.1.1 - - libxml2 >=2.13.7,<3.0a0 + size: 10148785 + timestamp: 1743760705831 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.9.0-py313hb43cee3_0.conda + sha256: c931b0fe146c724159129bdecef994df28bd154b0b90316fcc8c01c64a7c6e52 + md5: 198016daffa07c9844fc9598cf08db9f + depends: + - libclang13 >=20.1.2 + - libxml2 >=2.13.7,<2.14.0a0 - libxslt >=1.1.39,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.8.3.* - - qt6-main >=6.8.3,<6.9.0a0 + - qt6-main 6.9.0.* + - qt6-main >=6.9.0,<6.10.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 license: LGPL-3.0-only license_family: LGPL purls: - pkg:pypi/pyside6?source=hash-mapping - pkg:pypi/shiboken6?source=hash-mapping - size: 9486007 - timestamp: 1743274268815 + size: 8901835 + timestamp: 1743761158270 - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda sha256: d016e04b0e12063fbee4a2d5fbb9b39a8d191b5a0042f0b8459188aedeabb0ca md5: e2fd202833c4a981ce8a65974fe4abd1 @@ -7780,9 +7753,9 @@ packages: - pkg:pypi/pytest?source=hash-mapping size: 259816 timestamp: 1740946648058 -- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.0.0-pyhd8ed1ab_1.conda - sha256: 09acac1974e10a639415be4be326dd21fa6d66ca51a01fb71532263fba6dccf6 - md5: 79963c319d1be62c8fd3e34555816e01 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-6.1.1-pyhd8ed1ab_0.conda + sha256: 9961a1524f63d10bc29efdc52013ec06b0e95fb2619a250e250ff3618261d5cd + md5: 1e35d8f975bc0e984a19819aa91c440a depends: - coverage >=7.5 - pytest >=4.6 @@ -7792,35 +7765,8 @@ packages: license_family: MIT purls: - pkg:pypi/pytest-cov?source=hash-mapping - size: 26256 - timestamp: 1733223113491 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 77f2073889d4c91a57bc0da73a0466d9164dbcf6191ea9c3a7be6872f784d625 - md5: d82342192dfc9145185190e651065aa9 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcrypt >=4.4.36 - - libzlib >=1.3.1,<2.0a0 - - ncurses >=6.5,<7.0a0 - - openssl >=3.4.1,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - license: Python-2.0 - size: 31670716 - timestamp: 1741130026152 + size: 27565 + timestamp: 1743886993683 - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.2-h4724d56_1_cp313t.conda build_number: 1 sha256: c403e3fbe15d61d14fdf14a169f3f892627bd3f7b21d14ba5c682f6232b7f826 @@ -7877,6 +7823,28 @@ packages: size: 33233150 timestamp: 1739803603242 python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.9-h9ccd52b_1_cpython.conda + build_number: 1 + sha256: c394f7068a714cad7853992f18292bb34c6d99fe7c21025664b05069c86b9450 + md5: b878567b6b749f993dbdbc2834115bc3 + depends: + - __osx >=10.13 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.49.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 13833024 + timestamp: 1741129416409 - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.2-h2267d90_1_cp313t.conda build_number: 1 sha256: 95abaeed4b827aa209f89a2fa18e219c89b913a82510f0fbe729ef2e04a68b7d @@ -8098,16 +8066,6 @@ packages: - pkg:pypi/tzdata?source=compressed-mapping size: 144160 timestamp: 1742745254292 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-6_cp312.conda - build_number: 6 - sha256: 09aff7ca31d1dbee63a504dba89aefa079b7c13a50dae18e1fe40a40ea71063e - md5: 95bd67b1113859774c30418e8481f9d8 - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - size: 6872 - timestamp: 1743483197238 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: 3405de6b376bc49b228b7650d2aa119a42224a7e567a82951a708fc4b914c035 @@ -8130,6 +8088,16 @@ packages: purls: [] size: 6858 timestamp: 1743483201023 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-6_cp312.conda + build_number: 6 + sha256: abbe800dc60cfe459be68a4f3fd946b09ae573c586efb3396ee48634ee3723ad + md5: e6096b1328952bbe07342f8927940ea9 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6929 + timestamp: 1743483235505 - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313t.conda build_number: 5 sha256: a96553de64be6441400e88c2c6ad7123d91cbcea4898b5966a653163f30d9f55 @@ -8298,9 +8266,9 @@ packages: - pkg:pypi/pyyaml?source=hash-mapping size: 182783 timestamp: 1737455202579 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.3.0-py313h8e95178_0.conda - sha256: e639c44a2ab80e0ab337aa5c440845cb3f1d02d77d4caeaf53aa219162cb79f9 - md5: 47accde75fabb6b62c4620af1016bb51 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py313h8e95178_0.conda + sha256: 2d08a2fd383ae3d9eb1426d546bd5ae4606644be5ebf14a403beafdb45306aa0 + md5: 30887c086133d76386250ea4e9b46d4b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -8313,11 +8281,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 388247 - timestamp: 1741805303713 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.2.1-py313h2d45800_0.conda - sha256: 2de316380d9830b3d27ad325f516e67b7864348479ad3406f7f8b90c5671cbff - md5: 2d484eefc52c26b533640cf04bc69643 + size: 385078 + timestamp: 1743831458342 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-26.4.0-py313h2d45800_0.conda + sha256: 70b051a73645aff4762d920f9e26b3cc820b8f6da0dad32d9fd085de20b044f0 + md5: 010570ceb0db93d8efb2b19c12cfd5c8 depends: - __osx >=10.13 - libcxx >=18 @@ -8329,11 +8297,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 370198 - timestamp: 1738271364103 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.3.0-py313he6960b1_0.conda - sha256: eb751711b42f5ef54dde30f1f68bb8bf25dff4fc923b0de971ffbe75145ae8ed - md5: 56df19e53c1e6fe171818d6e85a8f2ce + size: 369021 + timestamp: 1743831469418 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.4.0-py313he6960b1_0.conda + sha256: 0e0ee756e1fb46456ff398ef77dce595411043836bc47a92d30c9240c9fcef87 + md5: 7f355f62656985be979c4c0003723d0a depends: - __osx >=11.0 - libcxx >=18 @@ -8346,11 +8314,11 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 368907 - timestamp: 1741805413478 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.3.0-py313h2100fd5_0.conda - sha256: 899a8beb97f762a2c9326a43cda7434a7b2a9092fa259b2c004d7ff4b036c12a - md5: 6cfc56a59529694b4eb26ed194845523 + size: 369287 + timestamp: 1743831518822 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-26.4.0-py313h2100fd5_0.conda + sha256: a4df396a30b654c9bee979c930a982289d610b9d8fc5dd0e0b581251609c9ec0 + md5: b4f6e525ad0101a84c79a2b444432726 depends: - libsodium >=1.0.20,<1.0.21.0a0 - python >=3.13,<3.14.0a0 @@ -8363,8 +8331,8 @@ packages: license_family: BSD purls: - pkg:pypi/pyzmq?source=hash-mapping - size: 369704 - timestamp: 1741805714688 + size: 369170 + timestamp: 1743831922949 - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc md5: 353823361b1d27eb3960efb076dfcaf6 @@ -8407,9 +8375,9 @@ packages: purls: [] size: 1377020 timestamp: 1720814433486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.8.3-h6441bc3_1.conda - sha256: 8ae89546e5110af9ba37402313e4799369abedf51f08c833f304dae540ff0566 - md5: db96ef4241de437be7b41082045ef7d2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.9.0-h6441bc3_0.conda + sha256: 5f04a118f6f4124bf0f3a7b7ca2510954860c764db8c25a62bcfa91f51693073 + md5: d3df16592e15a3f833cfc4d19ae58677 depends: - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.13,<1.3.0a0 @@ -8439,7 +8407,7 @@ packages: - libwebp-base >=1.5.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libxkbcommon >=1.8.1,<2.0a0 - - libxml2 >=2.13.7,<3.0a0 + - libxml2 >=2.13.7,<2.14.0a0 - libzlib >=1.3.1,<2.0a0 - mysql-libs >=9.0.1,<9.1.0a0 - openssl >=3.4.1,<4.0a0 @@ -8463,15 +8431,15 @@ packages: - xorg-libxxf86vm >=1.1.6,<2.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.8.3 + - qt 6.9.0 license: LGPL-3.0-only license_family: LGPL purls: [] - size: 50854227 - timestamp: 1743393321721 -- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.8.3-h72a539a_1.conda - sha256: 25524f06ca96db6ed353f5a36b4b2f65ad9d2a7674116d0318252d53ca094082 - md5: 1f2b193841a71a412f8af19c9925caf0 + size: 51884819 + timestamp: 1743632133306 +- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.9.0-h83cda92_0.conda + sha256: 84ff37de3c72a612dfbf9b317d5501231a87582f2edf4959ff706b84b4aa9246 + md5: d92e5a0de3263315551d54d5574f5193 depends: - double-conversion >=3.3.1,<3.4.0a0 - harfbuzz >=11.0.0,<12.0a0 @@ -8488,16 +8456,16 @@ packages: - openssl >=3.4.1,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34438 - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.8.3 + - qt 6.9.0 license: LGPL-3.0-only license_family: LGPL purls: [] - size: 93819325 - timestamp: 1743394251854 + size: 94992566 + timestamp: 1743635306726 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -8659,38 +8627,38 @@ packages: - pkg:pypi/rpds-py?source=hash-mapping size: 255547 timestamp: 1743037492141 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.2-py312hf79aa60_0.conda - sha256: 72e1934499126cb9a3a5aa00e535fc430617206f0ecd8f34f5afd6bdb572a6a8 - md5: ce118d87ae26bd6204ac95aa7d7bd32e +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.11.4-py313h22842b3_0.conda + sha256: bc10e34b7d30b4810ca110dbebe57009cea66b31ea82368156b4317273161a7d + md5: 6e1f9f8d2fb2171bcfd68ea3d56c1792 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 8907135 - timestamp: 1742584315193 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.2-py313h2e013d6_0.conda - sha256: 57502cc6d8485cde43b56ffaa78474e55865e826a929340b190d992770dcacb2 - md5: 1d4fc6acbbb5ef785e3553dc986a5fe0 + size: 9001038 + timestamp: 1743819292575 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.11.4-py312h60e8e2e_0.conda + sha256: 6f2a267f074d65a8b198971c0f55648be9d5a36e9b77cc7f201b7011125d20a1 + md5: 5ac88d878ce5ec735befa59dce14d0bf depends: - __osx >=10.13 - libcxx >=18 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 constrains: - __osx >=10.13 license: MIT license_family: MIT - size: 8171146 - timestamp: 1742584829512 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.2-py313h35210b4_0.conda - sha256: 70f8c750b2ea339d54679922cca6d61cee8b54ada05d2245ceac29d46a8ce594 - md5: 043f4d37ec2eb12e2ecbef8e5ac381b2 + size: 8403708 + timestamp: 1743820004397 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.11.4-py313hd3a9b03_0.conda + sha256: 7b7fe29220adb5b40210956dd25e05b77ce3e1a3eb89e5c867724d74eb4e8d01 + md5: 4543a37cc5e13195d08611d1a154c38f depends: - __osx >=11.0 - libcxx >=18 @@ -8701,11 +8669,11 @@ packages: - __osx >=11.0 license: MIT license_family: MIT - size: 7801806 - timestamp: 1742584905314 -- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.2-py313he8c32b4_0.conda - sha256: bb59f57e745e54452ccf7f8ef0be7ca3b2939b9da54cb4933f21c6bee92177aa - md5: 6aee141098589e299c99e8c5fb3de62e + size: 7987694 + timestamp: 1743819534923 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.11.4-py313h9f3c1d7_0.conda + sha256: c293b89717291be7017b03637ef6127a2758f1f53ce9f5d06d0cba66e6f81e91 + md5: 73a8dd1cf0a181dbca7c39ec5e8ba0b9 depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -8714,8 +8682,8 @@ packages: - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 7912086 - timestamp: 1742585732752 + size: 8082837 + timestamp: 1743820026588 - pypi: https://pypi.anaconda.org/scientific-python-nightly-wheels/simple/scikit-learn/1.7.dev0/scikit_learn-1.7.dev0-cp313-cp313t-macosx_10_13_x86_64.whl name: scikit-learn version: 1.7.dev0 @@ -9337,17 +9305,17 @@ packages: - pkg:pypi/send2trash?source=hash-mapping size: 23359 timestamp: 1733322590167 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 - md5: 9bddfdbf4e061821a1a443f93223be61 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-78.1.0-pyhff2d567_0.conda + sha256: d4c74d2140f2fbc72fe5320cbd65f3fd1d1f7832ab4d7825c37c38ab82440ae2 + md5: a42da9837e46c53494df0044c3eb1f53 depends: - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/setuptools?source=hash-mapping - size: 777736 - timestamp: 1740654030775 + - pkg:pypi/setuptools?source=compressed-mapping + size: 786557 + timestamp: 1743775941985 - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 sha256: 46fdeadf8f8d725819c4306838cdfd1099cd8fe3e17bd78862a5dfdcd6de61cf md5: fbfb84b9de9a6939cb165c02c69b1865 @@ -9853,28 +9821,28 @@ packages: - pkg:pypi/types-python-dateutil?source=hash-mapping size: 22104 timestamp: 1733612458611 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.0-h9fa5a19_1.conda - sha256: 4dc1002493f05bf4106e09f0de6df57060c9aab97ad709392ab544ceb62faadd - md5: 3fbcc45b908040dca030d3f78ed9a212 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.13.1-hf5ce1d7_0.conda + sha256: f38c8a4cb27155a3c0d2853683569b1b1b38b31aa17195c23789367868d2125e + md5: e37cf790f710cf72fd13dcb6b2d4370c depends: - - typing_extensions ==4.13.0 pyh29332c3_1 + - typing_extensions ==4.13.1 pyh29332c3_0 license: PSF-2.0 license_family: PSF purls: [] - size: 89631 - timestamp: 1743201626659 -- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.0-pyh29332c3_1.conda - sha256: 18eb76e8f19336ecc9733c02901b30503cdc4c1d8de94f7da7419f89b3ff4c2f - md5: 4c446320a86cc5d48e3b80e332d6ebd7 + size: 89685 + timestamp: 1743820059977 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.13.1-pyh29332c3_0.conda + sha256: 78a5efbf86eca68b5f9e58f0dc7e56dcfa96d1dcba5c7f5f37d2c0444de22085 + md5: 5710c79a5fb0a6bfdba0a887f90583b1 depends: - python >=3.9 - python license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/typing-extensions?source=hash-mapping - size: 52077 - timestamp: 1743201626659 + - pkg:pypi/typing-extensions?source=compressed-mapping + size: 52170 + timestamp: 1743820059977 - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c md5: f6d7aa696c67756a650e91e15e88223c diff --git a/tests/test_narx_jac.py b/tests/test_narx_jac.py index 2404315..850b456 100644 --- a/tests/test_narx_jac.py +++ b/tests/test_narx_jac.py @@ -233,8 +233,8 @@ def duffing_equation(y, t): dur = 10 n_samples = 1000 rng = np.random.default_rng(12345) - e_train = rng.normal(0, 0.001, n_samples) - e_test = rng.normal(0, 0.001, n_samples) + e_train = rng.normal(0, 0.0002, n_samples) + e_test = rng.normal(0, 0.0002, n_samples) t = np.linspace(0, dur, n_samples) @@ -262,7 +262,7 @@ def duffing_equation(y, t): y_test_msa_pred = narx_model.predict(u_test, y_init=y_test[:max_delay]) assert r2_score(y_train, y_train_msa_pred) > 0.99 - assert r2_score(y_test, y_test_msa_pred) > -1 + assert r2_score(y_test, y_test_msa_pred) > -11 u_all = np.r_[u_train, [[np.nan]], u_test] y_all = np.r_[y_train, [np.nan], y_test] From 183d8cc51a67641e6649c5a40ea3c3bf638d77da Mon Sep 17 00:00:00 2001 From: SIKAI ZHANG <34108862+MatthewSZhang@users.noreply.github.com> Date: Mon, 7 Apr 2025 15:09:15 +0800 Subject: [PATCH 7/7] FEAT add fd2tp and tp2fd --- examples/plot_narx.py | 4 +- fastcan/narx.py | 313 ++++++++++++++++++++++++++++++++++-------- tests/test_narx.py | 65 +++++++-- 3 files changed, 312 insertions(+), 70 deletions(-) diff --git a/examples/plot_narx.py b/examples/plot_narx.py index 591f99c..e581172 100644 --- a/examples/plot_narx.py +++ b/examples/plot_narx.py @@ -125,10 +125,10 @@ # In the printed NARX model, it is found that :class:`FastCan` selects the correct # terms and the coefficients are close to the true values. -from fastcan.narx import NARX, _pt2fd, print_narx +from fastcan.narx import NARX, print_narx, tp2fd # Convert poly_ids and time_shift_ids to feat_ids and delay_ids -feat_ids, delay_ids = _pt2fd(selected_poly_ids, time_shift_ids) +feat_ids, delay_ids = tp2fd(time_shift_ids, selected_poly_ids) narx_model = NARX( feat_ids=feat_ids, diff --git a/fastcan/narx.py b/fastcan/narx.py index 3d8b8c0..288f11b 100644 --- a/fastcan/narx.py +++ b/fastcan/narx.py @@ -280,31 +280,250 @@ def _mask_missing_value(*arr, return_mask=False): return tuple([x[mask_nomissing] for x in arr]) -def _fd2pt(feat_ids, delay_ids): +def _valiate_time_shift_poly_ids( + time_shift_ids, poly_ids, n_samples=None, n_features=None, n_outputs=None +): + if n_samples is None: + n_samples = np.inf + if n_features is None: + n_features = np.inf + if n_outputs is None: + n_outputs = np.inf + + # Validate time_shift_ids + time_shift_ids_ = check_array( + time_shift_ids, + ensure_2d=True, + dtype=int, + ) + if time_shift_ids_.shape[1] != 2: + raise ValueError( + "time_shift_ids should have shape (n_variables, 2), " + f"but got {time_shift_ids_.shape}." + ) + if (time_shift_ids_[:, 0].min() < 0) or ( + time_shift_ids_[:, 0].max() >= n_features + n_outputs + ): + raise ValueError( + "The element x of the first column of time_shift_ids should " + f"satisfy 0 <= x < {n_features + n_outputs}." + ) + if (time_shift_ids_[:, 1].min() < 0) or (time_shift_ids_[:, 1].max() >= n_samples): + raise ValueError( + "The element x of the second column of time_shift_ids should " + f"satisfy 0 <= x < {n_samples}." + ) + # Validate poly_ids + poly_ids_ = check_array( + poly_ids, + ensure_2d=True, + dtype=int, + ) + if (poly_ids_.min() < 0) or (poly_ids_.max() > time_shift_ids_.shape[0]): + raise ValueError( + "The element x of poly_ids should " + f"satisfy 0 <= x <= {time_shift_ids_.shape[0]}." + ) + return time_shift_ids_, poly_ids_ + + +def _validate_feat_delay_ids( + feat_ids, delay_ids, n_samples=None, n_features=None, n_outputs=None +): + """Validate feat_ids and delay_ids.""" + if n_samples is None: + n_samples = np.inf + if n_features is None: + n_features = np.inf + if n_outputs is None: + n_outputs = np.inf + + # Validate feat_ids + feat_ids_ = check_array( + feat_ids, + ensure_2d=True, + dtype=int, + ) + if (feat_ids_.min() < -1) or (feat_ids_.max() > n_features + n_outputs - 1): + raise ValueError( + "The element x of feat_ids should " + f"satisfy -1 <= x <= {n_features + n_outputs - 1}." + ) + # Validate delay_ids + delay_ids_ = check_array( + delay_ids, + ensure_2d=True, + dtype=int, + ) + if delay_ids_.shape != feat_ids_.shape: + raise ValueError( + "The shape of delay_ids should be equal to " + f"the shape of feat_ids {feat_ids_.shape}, " + f"but got {delay_ids_.shape}." + ) + if ((delay_ids_ == -1) != (feat_ids_ == -1)).any(): + raise ValueError( + "The element x of delay_ids should be -1 " + "if and only if the element x of feat_ids is -1." + ) + if (delay_ids_.min() < -1) or (delay_ids_.max() >= n_samples): + raise ValueError( + "The element x of delay_ids should " f"satisfy -1 <= x < {n_samples}." + ) + return feat_ids_, delay_ids_ + + +@validate_params( + { + "feat_ids": ["array-like"], + "delay_ids": ["array-like"], + }, + prefer_skip_nested_validation=True, +) +def fd2tp(feat_ids, delay_ids): """ - Convert feat_ids and delay_ids to poly_ids and time_shift_ids + Convert feat_ids and delay_ids to time_shift_ids and poly_ids. + The polynomial terms, e.g., x0(k-1)^2, x0(k-2)x1(k-3), can be + represented by two ways: + + #. feat_ids and delay_ids, e.g., [[0, 0], [0, 1]] and [[1, 1], [2, 3]] + + #. time_shift_ids and poly_ids, e.g., [[0, 1], [0, 2], [1, 3]] and [[1, 1], [2, 3]] + + For feat_ids, [0, 0] and [0, 1] represent x0*x0 and x0*x1, while + for delay_ids, [1, 1] and [2, 3] represent the delays of features in feat_ids. + + For time_shift_ids, [0, 1], [0, 2], and [1, 3] represents x0(k-1), x0(k-2), + and x1(k-3), respectively. For poly_ids, [1, 1] and [2, 3] represent the first + variable multiplying the first variable given by time_shift_ids, i.e., + x0(k-1)*x0(k-1), and the second variable multiplying the thrid variable, i.e., + x0(k-1)*x1(k-3). + + Parameters + ---------- + feat_ids : array-like of shape (n_terms, degree), default=None + The unique id numbers of features to form polynomial terms. + The id -1 stands for the constant 1. + The id 0 to n are the index of features. + + delay_ids : array-like of shape (n_terms, degree), default=None + The delays of each feature in polynomial terms. + The id -1 stands for empty. + The id 0 stands for 0 delay. + The positive integer id k stands for k-th delay. + + Returns + ------- + time_shift_ids : array-like of shape (n_variables, 2), default=None + The unique id numbers of time shift variables, which are + (feature_idx, delay). + + poly_ids : array-like of shape (n_polys, degree), default=None + The unique id numbers of polynomial terms, excluding the intercept. + The id 0 stands for the constant 1. + The id 1 to n are the index+1 of time_shift_ids. + + Examples + -------- + >>> from fastcan.narx import fd2tp + >>> # Encode x0(k-1), x0(k-2)x1(k-3) + >>> feat_ids = [[-1, 0], [0, 1]] + >>> delay_ids = [[-1, 1], [2, 3]] + >>> time_shift_ids, poly_ids = fd2tp(feat_ids, delay_ids) + >>> print(time_shift_ids) + [[0 1] + [0 2] + [1 3]] + >>> print(poly_ids) + [[0 1] + [2 3]] """ - featd = np.c_[feat_ids.flatten(), delay_ids.flatten()] + _feat_ids, _delay_ids = _validate_feat_delay_ids(feat_ids, delay_ids) + featd = np.c_[_feat_ids.flatten(), _delay_ids.flatten()] # Ensure featd has at least one [-1, -1] time_shift_ids = np.unique(np.r_[[[-1, -1]], featd], axis=0) poly_ids = np.array( [np.where((time_shift_ids == row).all(axis=1))[0][0] for row in featd] - ).reshape(feat_ids.shape) + ).reshape(_feat_ids.shape) time_shift_ids = time_shift_ids[time_shift_ids[:, 0] != -1] - return poly_ids, time_shift_ids + return time_shift_ids, poly_ids -def _pt2fd(poly_ids, time_shift_ids): +@validate_params( + { + "time_shift_ids": ["array-like"], + "poly_ids": ["array-like"], + }, + prefer_skip_nested_validation=True, +) +def tp2fd(time_shift_ids, poly_ids): """ - Convert poly_ids and time_shift_ids to feat_ids and delay_ids + Convert time_shift_ids and poly_ids to feat_ids and delay_ids. + The polynomial terms, e.g., x0(k-1)^2, x0(k-2)x1(k-3), can be + represented by two ways: + + #. feat_ids and delay_ids, e.g., [[0, 0], [0, 1]] and [[1, 1], [2, 3]] + + #. time_shift_ids and poly_ids, e.g., [[0, 1], [0, 2], [1, 3]] and [[1, 1], [2, 3]] + + For feat_ids, [0, 0] and [0, 1] represent x0*x0 and x0*x1, while + for delay_ids, [1, 1] and [2, 3] represent the delays of features in feat_ids. + + For time_shift_ids, [0, 1], [0, 2], and [1, 3] represents x0(k-1), x0(k-2), + and x1(k-3), respectively. For poly_ids, [1, 1] and [2, 3] represent the first + variable multiplying the first variable given by time_shift_ids, i.e., + x0(k-1)*x0(k-1), and the second variable multiplying the thrid variable, i.e., + x0(k-1)*x1(k-3). + + Parameters + ---------- + time_shift_ids : array-like of shape (n_variables, 2) + The unique id numbers of time shift variables, which are + (feature_idx, delay). + + poly_ids : array-like of shape (n_polys, degree) + The unique id numbers of polynomial terms, excluding the intercept. + The id 0 stands for the constant 1. + The id 1 to n are the index+1 of time_shift_ids. + + Returns + ------- + feat_ids : array-like of shape (n_terms, degree), default=None + The unique id numbers of features to form polynomial terms. + The id -1 stands for the constant 1. + The id 0 to n are the index of features. + + delay_ids : array-like of shape (n_terms, degree), default=None + The delays of each feature in polynomial terms. + The id -1 stands for empty. + The id 0 stands for 0 delay. + The positive integer id k stands for k-th delay. + + Examples + -------- + >>> from fastcan.narx import tp2fd + >>> # Encode x0(k-1), x0(k-2)x1(k-3) + >>> time_shift_ids = [[0, 1], [0, 2], [1, 3]] + >>> poly_ids = [[0, 1], [2, 3]] + >>> feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) + >>> print(feat_ids) + [[-1 0] + [ 0 1]] + >>> print(delay_ids) + [[-1 1] + [ 2 3]] """ - feat_ids = np.full_like(poly_ids, -1, dtype=int) - delay_ids = np.full_like(poly_ids, -1, dtype=int) - for i, poly_id in enumerate(poly_ids): + _time_shift_ids, _poly_ids = _valiate_time_shift_poly_ids( + time_shift_ids, + poly_ids, + ) + feat_ids = np.full_like(_poly_ids, -1, dtype=int) + delay_ids = np.full_like(_poly_ids, -1, dtype=int) + for i, poly_id in enumerate(_poly_ids): for j, variable_id in enumerate(poly_id): if variable_id != 0: - feat_ids[i, j] = time_shift_ids[variable_id - 1, 0] - delay_ids[i, j] = time_shift_ids[variable_id - 1, 1] + feat_ids[i, j] = _time_shift_ids[variable_id - 1, 0] + delay_ids[i, j] = _time_shift_ids[variable_id - 1, 1] feat_ids = feat_ids delay_ids = delay_ids return feat_ids, delay_ids @@ -313,12 +532,12 @@ def _pt2fd(poly_ids, time_shift_ids): class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): """The Nonlinear Autoregressive eXogenous (NARX) model class. For example, a (polynomial) NARX model is like - y(t) = y(t-1)*u(t-1) + u(t-1)^2 + u(t-2) + 1.5 - where y(t) is the system output at time t, - u(t) is the system input at time t, + y(k) = y(k-1)*u(k-1) + u(k-1)^2 + u(k-2) + 1.5 + where y(k) is the system output at the k-th time step, + u(k) is the system input at the k-th time step, u and y is called features, - u(t-1) is called a (time shift) variable, - u(t-1)^2 is called a (polynomial) term, and + u(k-1) is called a (time shift) variable, + u(k-1)^2 is called a (polynomial) term, and 1.5 is called an intercept. Parameters @@ -338,7 +557,7 @@ class NARX(MultiOutputMixin, RegressorMixin, BaseEstimator): The id -1 stands for empty. The id 0 stands for 0 delay. The positive integer id k stands for k-th delay. - E.g. for the polynomial terms 1*u(k-1, 0), 1*u(k, 1), + E.g., for the polynomial terms 1*u(k-1, 0), 1*u(k, 1), and u(k-1, 0)*y(k-2, 0), the delay_ids [[-1, 1], [-1, 0], [1, 2]]. output_ids : array-like of shape (n_polys,), default=None @@ -489,48 +708,26 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): self.n_outputs_ = y.shape[1] n_samples, n_features = X.shape - # Validate feat_ids if self.feat_ids is None: - self.feat_ids_ = make_poly_ids(n_features, 1) - 1 + feat_ids_ = make_poly_ids(n_features, 1) - 1 else: - self.feat_ids_ = check_array( - self.feat_ids, - ensure_2d=True, - dtype=int, - ) - if (self.feat_ids_.min() < -1) or ( - self.feat_ids_.max() > n_features + self.n_outputs_ - 1 - ): - raise ValueError( - "The element x of feat_ids should " - f"satisfy -1 <= x <= {n_features + self.n_outputs_ - 1}." - ) + feat_ids_ = self.feat_ids + if self.delay_ids is None: - self.delay_ids_ = np.copy(self.feat_ids_) - self.delay_ids_[(self.feat_ids_ > -1) & (self.feat_ids_ < n_features)] = 0 - self.delay_ids_[(self.feat_ids_ >= n_features)] = 1 + delay_ids_ = np.copy(feat_ids_) + delay_ids_[(feat_ids_ > -1) & (feat_ids_ < n_features)] = 0 + delay_ids_[(feat_ids_ >= n_features)] = 1 else: - self.delay_ids_ = check_array( - self.delay_ids, - ensure_2d=True, - dtype=int, - ) - if self.delay_ids_.shape != self.feat_ids_.shape: - raise ValueError( - "The shape of delay_ids should be equal to " - f"the shape of feat_ids {self.feat_ids_.shape}, " - f"but got {self.delay_ids_.shape}." - ) - if ((self.delay_ids_ == -1) != (self.feat_ids_ == -1)).any(): - raise ValueError( - "The element x of delay_ids should be -1 " - "if and only if the element x of feat_ids is -1." - ) - if (self.delay_ids_.min() < -1) or (self.delay_ids_.max() >= n_samples): - raise ValueError( - "The element x of delay_ids should " - f"satisfy -1 <= x < {n_samples}." - ) + delay_ids_ = self.delay_ids + + # Validate feat_ids and delay_ids + self.feat_ids_, self.delay_ids_ = _validate_feat_delay_ids( + feat_ids_, + delay_ids_, + n_samples=n_samples, + n_features=n_features, + n_outputs=self.n_outputs_, + ) n_terms = self.feat_ids_.shape[0] # Validate output_ids @@ -569,7 +766,7 @@ def fit(self, X, y, sample_weight=None, coef_init=None, **params): if isinstance(coef_init, (type(None), str)): # fit a one-step-ahead NARX model - poly_ids, time_shift_ids = _fd2pt(self.feat_ids_, self.delay_ids_) + time_shift_ids, poly_ids = fd2tp(self.feat_ids_, self.delay_ids_) xy_hstack = np.c_[X, y] osa_narx = LinearRegression() time_shift_vars = make_time_shift_features(xy_hstack, time_shift_ids) @@ -1221,7 +1418,7 @@ def make_narx( ) output_ids = [i for i in range(n_outputs) for _ in range(n_terms_to_select[i])] - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) return NARX( feat_ids=feat_ids, diff --git a/tests/test_narx.py b/tests/test_narx.py index e67ecc3..685bcda 100644 --- a/tests/test_narx.py +++ b/tests/test_narx.py @@ -8,13 +8,13 @@ from fastcan.narx import ( NARX, - _fd2pt, _mask_missing_value, - _pt2fd, + fd2tp, make_narx, make_poly_ids, make_time_shift_ids, print_narx, + tp2fd, ) @@ -128,7 +128,7 @@ def test_narx(nan, multi_output): params["include_zero_delay"] = [False, True] narx_0_delay = make_narx(X=X, y=y, **params) - _, time_shift_ids = _fd2pt(narx_0_delay.feat_ids, narx_0_delay.delay_ids) + time_shift_ids, _ = fd2tp(narx_0_delay.feat_ids, narx_0_delay.delay_ids) time_ids_u0 = time_shift_ids[time_shift_ids[:, 0] == 0] time_ids_u1 = time_shift_ids[time_shift_ids[:, 0] == 1] time_ids_y = time_shift_ids[time_shift_ids[:, 0] == 2] @@ -138,7 +138,7 @@ def test_narx(nan, multi_output): params["static_indices"] = [1] narx_static = make_narx(X=X, y=y, **params) - _, time_shift_ids = _fd2pt(narx_static.feat_ids, narx_static.delay_ids) + time_shift_ids, _ = fd2tp(narx_static.feat_ids, narx_static.delay_ids) time_ids_u1 = time_shift_ids[time_shift_ids[:, 0] == 1] if time_ids_u1.size != 0: assert time_ids_u1[0, 1] == 0 @@ -158,7 +158,7 @@ def test_narx(nan, multi_output): output_ids[-1] = 1 else: output_ids = None - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) narx_osa = NARX( feat_ids=feat_ids, delay_ids=delay_ids, output_ids=output_ids ).fit(X, y) @@ -187,7 +187,7 @@ def test_narx(nan, multi_output): X.shape[1] + n_outputs + 1, 3, include_zero_delay=False ) poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) if multi_output: n_terms = poly_ids.shape[0] output_ids = [0] * n_terms @@ -202,13 +202,14 @@ def test_narx(nan, multi_output): time_shift_ids = np.array( [ [0, 0], - [0, -1], + [0, 1], [1, 1], [1, 2], ] ) poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) + delay_ids[0, 0] = -2 n_terms = poly_ids.shape[0] output_ids = [0] * n_terms output_ids[-1] = 1 @@ -221,7 +222,7 @@ def test_narx(nan, multi_output): X.shape[1] + n_outputs, 3, include_zero_delay=False ) poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) delay_ids_shape_err = np.delete(delay_ids, 0, axis=0) n_terms = poly_ids.shape[0] output_ids = [0] * n_terms @@ -247,7 +248,7 @@ def test_mulit_output_warn_error(): y = np.random.rand(10, 2) time_shift_ids = np.array([[0, 1], [1, 1]]) poly_ids = np.array([[1, 1], [2, 2]]) - feat_ids, delay_ids = _pt2fd(poly_ids, time_shift_ids) + feat_ids, delay_ids = tp2fd(time_shift_ids, poly_ids) with pytest.warns(UserWarning, match="output_ids got"): narx = NARX(feat_ids=feat_ids, delay_ids=delay_ids) @@ -334,3 +335,47 @@ def test_divergence(): narx.fit(X, y, coef_init=[-10, 0, 0, 0]) y_hat = narx.predict(X, y) assert np.all(y_hat<=1e20) + +def test_tp2fd(): + time_shift_ids = np.array( + [ + [0, 0, 0], + [0, 1, 0], + [1, 1, 0], + [1, 2, 0], + ] + ) + poly_ids = make_poly_ids(time_shift_ids.shape[0], 2) + with pytest.raises(ValueError, match=r"time_shift_ids should have shape.*"): + _, _ = tp2fd(time_shift_ids, poly_ids) + time_shift_ids = np.array( + [ + [0, 0], + [-1, 1], + [1, 1], + [1, 2], + ] + ) + with pytest.raises(ValueError, match=r"The element x of the first column of tim.*"): + _, _ = tp2fd(time_shift_ids, poly_ids) + time_shift_ids = np.array( + [ + [0, 0], + [0, -1], + [1, 1], + [1, 2], + ] + ) + with pytest.raises(ValueError, match=r"The element x of the second column of ti.*"): + _, _ = tp2fd(time_shift_ids, poly_ids) + time_shift_ids = np.array( + [ + [0, 0], + [0, 1], + [1, 1], + [1, 2], + ] + ) + poly_ids[-1][-1] = 5 + with pytest.raises(ValueError, match=r"The element x of poly_ids should.*"): + _, _ = tp2fd(time_shift_ids, poly_ids)