From d4612db337b1c98399236d02036d0aae2fef5812 Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Tue, 26 Aug 2025 21:38:46 -0400 Subject: [PATCH 01/43] new clean branch for the draft PR --- pyfixest/estimation/FixestMulti_.py | 10 +++- pyfixest/estimation/estimation.py | 15 +++++- pyfixest/estimation/feols_.py | 50 ++++++++++++++++-- pyfixest/estimation/vcov_utils.py | 82 +++++++++++++++++++++++++++++ 4 files changed, 151 insertions(+), 6 deletions(-) diff --git a/pyfixest/estimation/FixestMulti_.py b/pyfixest/estimation/FixestMulti_.py index 9a48afec2..bd4163e42 100644 --- a/pyfixest/estimation/FixestMulti_.py +++ b/pyfixest/estimation/FixestMulti_.py @@ -152,6 +152,7 @@ def _prepare_estimation( estimation: str, fml: str, vcov: Union[None, str, dict[str, str]] = None, + vcov_kwargs: dict[str, Any]= None, weights: Union[None, str] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: str = "none", @@ -177,6 +178,9 @@ def _prepare_estimation( A string or dictionary specifying the type of variance-covariance matrix to use for inference. See `feols()` or `fepois()`. + vcov_kwargs : dict[str, Any], optional + Additional keyword arguments for the variance-covariance matrix. + See `feols()` or `fepois()`. weights : Union[None, np.ndarray], optional An array of weights. Either None or a 1D array of length N. Default is None. @@ -239,6 +243,7 @@ def _prepare_estimation( def _estimate_all_models( self, vcov: Union[str, dict[str, str], None], + vcov_kwargs: dict[str, Any], solver: SolverOptions, demeaner_backend: DemeanerBackendOptions = "numba", collin_tol: float = 1e-6, @@ -254,9 +259,11 @@ def _estimate_all_models( vcov : Union[str, dict[str, str]] A string or dictionary specifying the type of variance-covariance matrix to use for inference. - - If a string, can be one of "iid", "hetero", "HC1", "HC2", "HC3". + - If a string, can be one of "iid", "hetero", "HC1", "HC2", "HC3", "NW", "DK". - If a dictionary, it should have the format {"CRV1": "clustervar"} for CRV1 inference or {"CRV3": "clustervar"} for CRV3 inference. + vcov_kwargs : dict[str, Any] + Additional keyword arguments for the variance-covariance matrix. solver: SolverOptions Solver to use for the estimation. demeaner_backend: DemeanerBackendOptions, optional @@ -434,6 +441,7 @@ def _estimate_all_models( vcov_type = _get_vcov_type(vcov, fval) FIT.vcov( vcov=vcov_type, + vcov_kwargs=vcov_kwargs, data=FIT._data if not isinstance(FIT, QuantregMulti) else FIT.all_quantregs[FIT.quantiles[0]]._data, diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index d14278728..8c203c045 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -24,6 +24,7 @@ def feols( fml: str, data: DataFrameType, # type: ignore vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, + vcov_kwargs: dict[str,any], weights: Union[None, str] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", @@ -61,7 +62,15 @@ def feols( vcov : Union[VcovTypeOptions, dict[str, str]] Type of variance-covariance matrix for inference. Options include "iid", - "hetero", "HC1", "HC2", "HC3", or a dictionary for CRV1/CRV3 inference. + "hetero", "HC1", "HC2", "HC3", "NW" for Newey-West HAC standard errors, + "DK" for Driscoll-Kraay HAC standard errors, or a dictionary for CRV1/CRV3 inference. + Note that NW and DK require to pass additional keyword arguments via the `vcov_kwargs` argument. + + vcov_kwargs : dict[str, any] + Additional keyword arguments to pass to the vcov function. These keywoards include + "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel + identifier used for NW and DK standard errors. weights : Union[None, str], optional. Default is None. Weights for WLS estimation. If None, all observations @@ -440,6 +449,7 @@ def _lspline(series: pd.Series, knots: list[float]) -> np.array: fml=fml, data=data, vcov=vcov, + vcov_kwargs=vcov_kwargs, weights=weights, ssc=ssc, fixef_rm=fixef_rm, @@ -476,12 +486,13 @@ def _lspline(series: pd.Series, knots: list[float]) -> np.array: estimation = "feols" if not use_compression else "compression" fixest._prepare_estimation( - estimation, fml, vcov, weights, ssc, fixef_rm, drop_intercept + estimation, fml, vcov, vcov_kwargs, weights, ssc, fixef_rm, drop_intercept ) # demean all models: based on fixed effects x split x missing value combinations fixest._estimate_all_models( vcov, + vcov_kwargs, collin_tol=collin_tol, solver=solver, demeaner_backend=demeaner_backend, diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index e00b83944..2c83fcb9e 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -569,7 +569,7 @@ def get_fit(self) -> None: self._get_predictors() def vcov( - self, vcov: Union[str, dict[str, str]], data: Optional[DataFrameType] = None + self, vcov: Union[str, dict[str, str]], vcov_kwargs: dict[str, any], data: Optional[DataFrameType] = None ) -> "Feols": """ Compute covariance matrices for an estimated regression model. @@ -579,11 +579,13 @@ def vcov( vcov : Union[str, dict[str, str]] A string or dictionary specifying the type of variance-covariance matrix to use for inference. - If a string, it can be one of "iid", "hetero", "HC1", "HC2", "HC3". + If a string, it can be one of "iid", "hetero", "HC1", "HC2", "HC3", "NW", "DK". If a dictionary, it should have the format {"CRV1": "clustervar"} for CRV1 inference or {"CRV3": "clustervar"} for CRV3 inference. Note that CRV3 inference is currently not supported for IV estimation. + vcov_kwargs : dict[str, any] + Additional keyword arguments for the variance-covariance matrix. data: Optional[DataFrameType], optional The data used for estimation. If None, tries to fetch the data from the model object. Defaults to None. @@ -668,6 +670,20 @@ def vcov( self._ssc, self._dof_k, self._df_t = get_ssc(**all_kwargs) self._vcov = self._ssc * self._vcov_hetero() + elif self._vcov_type == "HAC": + ssc_kwargs_hac = { + "k_fe_nested": 0, + "n_fe_fully_nested": 0, + "vcov_sign": 1, + "vcov_type": "HAC", + "G": self._N, + } + + all_kwargs = {**ssc_kwargs, **ssc_kwargs_hac} + self._ssc, self._dof_k, self._df_t = get_ssc(**all_kwargs) + + self._vcov = self._ssc * self._vcov_hac() + elif self._vcov_type == "nid": ssc_kwargs_hetero = { "k_fe_nested": 0, @@ -825,6 +841,28 @@ def _vcov_hetero(self): _meat = _tXZ @ _tZZinv @ Omega @ _tZZinv @ _tZX if _is_iv else Omega _vcov = _bread @ _meat @ _bread + return _vcov + + def _vcov_hac(self): + _scores = self._scores + _bread = self._bread + _tXZ = self._tXZ + _tZZinv = self._tZZinv + _tZX = self._tZX + _is_iv = self._is_iv + _vcov_type_detail = self._vcov_type_detail + + if _vcov_type_detail == "NW": + #Newey-West + _meat = _nw_meat() + elif _vcov_type_detail == "DK": + #Driscoll-Kraay + _meat = _dk_meat() + + _vcov = _bread @ _meat @ _bread + + + return _vcov def _vcov_nid(self): @@ -2816,9 +2854,11 @@ def _check_vcov_input(vcov: Union[str, dict[str, str]], data: pd.DataFrame): "HC1", "HC2", "HC3", + "NW", + "DK", "nid", ], ( - "vcov string must be iid, hetero, HC1, HC2, or HC3, or for quantile regression, 'nid'." + "vcov string must be iid, hetero, HC1, HC2, HC3, NW, or DK, or for quantile regression, 'nid'." ) @@ -2873,6 +2913,10 @@ def _deparse_vcov_input(vcov: Union[str, dict[str, str]], has_fixef: bool, is_iv raise VcovTypeNotSupportedError( "HC2 and HC3 inference types are not supported for IV regressions." ) + elif vcov_type_detail in ["NW", "DK"]: + vcov_type = "HAC" + is_clustered = False + elif vcov_type_detail in ["CRV1", "CRV3"]: vcov_type = "CRV" is_clustered = True diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index c96aab6d2..d4d20da31 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -96,6 +96,88 @@ def _get_vcov_type( return vcov_type # type: ignore +@nb.njit(parallel=False) +def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, + tXZ=None, tZZinv=None, tZX=None): + """ + Compute Newey-West HAC meat matrix. + Parameters + ---------- + scores: np.ndarray + The scores matrix. + time_var: np.ndarray, optional + The time variable for clustering. Default is None. + lags: int, optional + The number of lags for the HAC estimator. Defaults to floor (# of time periods)^(1/4). + data: pd.DataFrame, optional + The original data set. Default is None. + is_iv: bool, optional + Whether the model is an instrumental variable model. Default is False. + tXZ: np.ndarray, optional + The t(X)'Z matrix for IV models. Default is None. + + tZZinv: np.ndarray, optional + The (Z'Z)^(-1) matrix for IV models. Default is None. + tZX: np.ndarray, optional + The t(Z)X matrix for IV models. Default is None. + """ + + # Determine whether data is time ordered or not - if not provided, data is assumed to be time ordered + if time_var is None: + ordered_scores = scores + n_time = len(ordered_scores) + else: + time_data = data[time_var].to_numpy() # need to ensure that this is datetime format - might have to write an internal converter for pf. + order = np.argsort(time_data) + ordered_scores = scores[order] + n_time = len(np.unique(time_data)) + + # resolve lags + if lags is None: + lags = int(np.floor(n_time ** (1 / 4))) + + # bartlett kernel weights + weights = np.array([1 - j/(lags + 1) for j in range(lags + 1)]) + weights[0] = 0.5 # Halve first weight + + n, k = ordered_scores.shape + meat = np.zeros((k, k)) + + for j in range(lags + 1): + if j == 0: + gamma_j = ordered_scores.T @ ordered_scores + + + meat += weights[j] * gamma_j + else: + gamma_j = ordered_scores[j:].T @ ordered_scores[:-j] + meat += weights[j] * (gamma_j + gamma_j.T) + + meat = meat / n + + if is_iv: + meat = tXZ @ tZZinv @ meat @ tZZinv @ tZX + + return meat + +@nb.njit(parallel=False) +def _dk_meat(scores, time_var=None, lags=None, data=None, is_iv=False, + tXZ=None, tZZinv=None, tZX=None): + """ + Compute Driscoll-Kraay HAC meat matrix. + Parameters + ---------- + vcov : Union[str, dict[str, str], None] + The specified vcov type. + fval : str + The specified fixed effects. (i.e. "X1+X2") + Returns + ------- + + + str + vcov_type (str) : The specified vcov type. + """ def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] From 7a9a31d59acb76182d3115104076f279951b991a Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Wed, 27 Aug 2025 19:57:32 +0200 Subject: [PATCH 02/43] clarify origin of default lags --- pyfixest/estimation/vcov_utils.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index d4d20da31..3b810aa88 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -97,7 +97,7 @@ def _get_vcov_type( return vcov_type # type: ignore @nb.njit(parallel=False) -def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, +def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, tXZ=None, tZZinv=None, tZX=None): """ Compute Newey-West HAC meat matrix. @@ -114,8 +114,8 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, is_iv: bool, optional Whether the model is an instrumental variable model. Default is False. tXZ: np.ndarray, optional - The t(X)'Z matrix for IV models. Default is None. - + The t(X)'Z matrix for IV models. Default is None. + tZZinv: np.ndarray, optional The (Z'Z)^(-1) matrix for IV models. Default is None. tZX: np.ndarray, optional @@ -134,6 +134,8 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, # resolve lags if lags is None: + # these are the fixest default lags for HAC + # see https://lrberge.github.io/fixest/reference/vcov_hac.html lags = int(np.floor(n_time ** (1 / 4))) # bartlett kernel weights @@ -161,7 +163,7 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, return meat @nb.njit(parallel=False) -def _dk_meat(scores, time_var=None, lags=None, data=None, is_iv=False, +def _dk_meat(scores, time_var=None, lags=None, data=None, is_iv=False, tXZ=None, tZZinv=None, tZX=None): """ Compute Driscoll-Kraay HAC meat matrix. From 358b47bab61370f40589465d9580eb3277f5c6e5 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Thu, 28 Aug 2025 19:18:28 +0200 Subject: [PATCH 03/43] multiple smaller fixes --- pyfixest/estimation/FixestMulti_.py | 2 +- pyfixest/estimation/estimation.py | 52 +++++++++++++++++++++++++---- pyfixest/estimation/feols_.py | 31 +++++++++-------- pyfixest/estimation/vcov_utils.py | 43 +++++------------------- 4 files changed, 70 insertions(+), 58 deletions(-) diff --git a/pyfixest/estimation/FixestMulti_.py b/pyfixest/estimation/FixestMulti_.py index bd4163e42..359c6f4af 100644 --- a/pyfixest/estimation/FixestMulti_.py +++ b/pyfixest/estimation/FixestMulti_.py @@ -152,7 +152,7 @@ def _prepare_estimation( estimation: str, fml: str, vcov: Union[None, str, dict[str, str]] = None, - vcov_kwargs: dict[str, Any]= None, + vcov_kwargs: Optional[dict[str, Any]] = None, weights: Union[None, str] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: str = "none", diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 8c203c045..90ad0d92d 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -24,7 +24,7 @@ def feols( fml: str, data: DataFrameType, # type: ignore vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, - vcov_kwargs: dict[str,any], + vcov_kwargs: Optional[dict[str, any]] = None, weights: Union[None, str] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", @@ -66,7 +66,7 @@ def feols( "DK" for Driscoll-Kraay HAC standard errors, or a dictionary for CRV1/CRV3 inference. Note that NW and DK require to pass additional keyword arguments via the `vcov_kwargs` argument. - vcov_kwargs : dict[str, any] + vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel @@ -508,6 +508,7 @@ def fepois( fml: str, data: DataFrameType, # type: ignore vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, + vcov_kwargs: Optional[dict[str, any]] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", fixef_tol: float = 1e-08, @@ -546,9 +547,15 @@ def fepois( data : DataFrameType A pandas or polars dataframe containing the variables in the formula. - vcov : Union[VcovTypeOptions, dict[str, str]] - Type of variance-covariance matrix for inference. Options include "iid", - "hetero", "HC1", "HC2", "HC3", or a dictionary for CRV1/CRV3 inference. + vcov_kwargs : Optional[dict[str, any]] + Additional keyword arguments to pass to the vcov function. These keywoards include + "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel + identifier used for NW and DK standard errors. + + vcov_kwargs : Optional[dict[str, any]] + Additional keyword arguments for the variance-covariance matrix. + For example, "lags" for the Newey-West estimator. ssc : str A ssc object specifying the small sample correction for inference. @@ -663,6 +670,7 @@ def fepois( fml=fml, data=data, vcov=vcov, + vcov_kwargs=vcov_kwargs, weights=weights, ssc=ssc, fixef_rm=fixef_rm, @@ -726,6 +734,7 @@ def feglm( data: DataFrameType, # type: ignore family: str, vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, + vcov_kwargs: Optional[dict[str, any]] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", fixef_tol: float = 1e-08, @@ -771,6 +780,12 @@ def feglm( Type of variance-covariance matrix for inference. Options include "iid", "hetero", "HC1", "HC2", "HC3", or a dictionary for CRV1/CRV3 inference. + vcov_kwargs : Optional[dict[str, any]] + Additional keyword arguments to pass to the vcov function. These keywoards include + "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel + identifier used for NW and DK standard errors. + ssc : str A ssc object specifying the small sample correction for inference. @@ -914,6 +929,7 @@ def feglm( fml=fml, data=data, vcov=vcov, + vcov_kwargs=vcov_kwargs, weights=weights, ssc=ssc, fixef_rm=fixef_rm, @@ -1143,7 +1159,8 @@ def quantreg( _estimation_input_checks( fml=fml, data=data, - vcov=vcov, + vcov=vcov_type, + vcov_kwargs=None, weights=weights, ssc=ssc, fixef_rm=fixef_rm, @@ -1217,6 +1234,7 @@ def _estimation_input_checks( fml: str, data: DataFrameType, vcov: Optional[Union[str, dict[str, str]]], + vcov_kwargs: Optional[dict[str, any]], weights: Union[None, str], ssc: dict[str, Union[str, bool]], fixef_rm: str, @@ -1356,6 +1374,28 @@ def _estimation_input_checks( "The function argument `separation_check` must be a list of strings containing 'fe' and/or 'ir'." ) + if vcov_kwargs is not None: + # check that dict keys are either "lags", "time_id", or "panel_id" + if not all(key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs.keys()): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'.") + + # if lag provided, check that it is an int + if "lags" in vcov_kwargs: + if not isinstance(vcov_kwargs["lags"], int): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'.") + + if "time_id" in vcov_kwargs: + if not isinstance(vcov_kwargs["time_id"], str): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + if vcov_kwargs["time_id"] not in data.columns: + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + + if "panel_id" in vcov_kwargs: + if not isinstance(vcov_kwargs["panel_id"], str): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + if vcov_kwargs["panel_id"] not in data.columns: + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + def _quantreg_input_checks(quantile: float, tol: float, maxiter: Optional[int]): "Run custom input checks for quantreg." diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 2c83fcb9e..9fb29ed8e 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -569,7 +569,10 @@ def get_fit(self) -> None: self._get_predictors() def vcov( - self, vcov: Union[str, dict[str, str]], vcov_kwargs: dict[str, any], data: Optional[DataFrameType] = None + self, + vcov: Union[str, dict[str, str]], + vcov_kwargs: Optional[dict[str, any]] = None, + data: Optional[DataFrameType] = None, ) -> "Feols": """ Compute covariance matrices for an estimated regression model. @@ -584,7 +587,7 @@ def vcov( CRV1 inference or {"CRV3": "clustervar"} for CRV3 inference. Note that CRV3 inference is currently not supported for IV estimation. - vcov_kwargs : dict[str, any] + vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments for the variance-covariance matrix. data: Optional[DataFrameType], optional The data used for estimation. If None, tries to fetch the data from the @@ -670,7 +673,7 @@ def vcov( self._ssc, self._dof_k, self._df_t = get_ssc(**all_kwargs) self._vcov = self._ssc * self._vcov_hetero() - elif self._vcov_type == "HAC": + elif self._vcov_type == "HAC": ssc_kwargs_hac = { "k_fe_nested": 0, "n_fe_fully_nested": 0, @@ -842,28 +845,24 @@ def _vcov_hetero(self): _vcov = _bread @ _meat @ _bread return _vcov - + def _vcov_hac(self): _scores = self._scores _bread = self._bread - _tXZ = self._tXZ + _tXZ = self._tXZ _tZZinv = self._tZZinv _tZX = self._tZX _is_iv = self._is_iv _vcov_type_detail = self._vcov_type_detail if _vcov_type_detail == "NW": - #Newey-West - _meat = _nw_meat() + # Newey-West + raise NotImplementedError("Newey-West HAC standard errors are not yet implemented") elif _vcov_type_detail == "DK": - #Driscoll-Kraay - _meat = _dk_meat() - - _vcov = _bread @ _meat @ _bread - - - - return _vcov + # Driscoll-Kraay + raise NotImplementedError("Driscoll-Kraay HAC standard errors are not yet implemented") + else: + raise ValueError(f"Unknown HAC type: {_vcov_type_detail}") def _vcov_nid(self): raise NotImplementedError( @@ -2915,7 +2914,7 @@ def _deparse_vcov_input(vcov: Union[str, dict[str, str]], has_fixef: bool, is_iv ) elif vcov_type_detail in ["NW", "DK"]: vcov_type = "HAC" - is_clustered = False + is_clustered = False elif vcov_type_detail in ["CRV1", "CRV3"]: vcov_type = "CRV" diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 3b810aa88..66e31ad1c 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -96,11 +96,13 @@ def _get_vcov_type( return vcov_type # type: ignore + + @nb.njit(parallel=False) -def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, - tXZ=None, tZZinv=None, tZX=None): +def _nw_meat(scores, time_var=None, lags=None, data=None): """ Compute Newey-West HAC meat matrix. + Parameters ---------- scores: np.ndarray @@ -111,23 +113,15 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, The number of lags for the HAC estimator. Defaults to floor (# of time periods)^(1/4). data: pd.DataFrame, optional The original data set. Default is None. - is_iv: bool, optional - Whether the model is an instrumental variable model. Default is False. - tXZ: np.ndarray, optional - The t(X)'Z matrix for IV models. Default is None. - - tZZinv: np.ndarray, optional - The (Z'Z)^(-1) matrix for IV models. Default is None. - tZX: np.ndarray, optional - The t(Z)X matrix for IV models. Default is None. """ - # Determine whether data is time ordered or not - if not provided, data is assumed to be time ordered if time_var is None: ordered_scores = scores n_time = len(ordered_scores) else: - time_data = data[time_var].to_numpy() # need to ensure that this is datetime format - might have to write an internal converter for pf. + time_data = data[ + time_var + ].to_numpy() # need to ensure that this is datetime format - might have to write an internal converter for pf. order = np.argsort(time_data) ordered_scores = scores[order] n_time = len(np.unique(time_data)) @@ -139,7 +133,7 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, lags = int(np.floor(n_time ** (1 / 4))) # bartlett kernel weights - weights = np.array([1 - j/(lags + 1) for j in range(lags + 1)]) + weights = np.array([1 - j / (lags + 1) for j in range(lags + 1)]) weights[0] = 0.5 # Halve first weight n, k = ordered_scores.shape @@ -149,7 +143,6 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, if j == 0: gamma_j = ordered_scores.T @ ordered_scores - meat += weights[j] * gamma_j else: gamma_j = ordered_scores[j:].T @ ordered_scores[:-j] @@ -157,30 +150,10 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, meat = meat / n - if is_iv: - meat = tXZ @ tZZinv @ meat @ tZZinv @ tZX - return meat -@nb.njit(parallel=False) -def _dk_meat(scores, time_var=None, lags=None, data=None, is_iv=False, - tXZ=None, tZZinv=None, tZX=None): - """ - Compute Driscoll-Kraay HAC meat matrix. - Parameters - ---------- - vcov : Union[str, dict[str, str], None] - The specified vcov type. - fval : str - The specified fixed effects. (i.e. "X1+X2") - Returns - ------- - str - vcov_type (str) : The specified vcov type. - """ - def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] cluster_two = clustervar[1] From 3928dc51976941f79ce419e5de6f45a20ec8cc2c Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Sat, 30 Aug 2025 13:56:10 -0400 Subject: [PATCH 04/43] commit to allow merge --- pyfixest/estimation/feols_.py | 2 -- pyfixest/estimation/vcov_utils.py | 2 -- 2 files changed, 4 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 2c83fcb9e..93d060e7d 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -861,8 +861,6 @@ def _vcov_hac(self): _vcov = _bread @ _meat @ _bread - - return _vcov def _vcov_nid(self): diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index d4d20da31..3660a5da0 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -146,8 +146,6 @@ def _nw_meat(scores, time_var=None, lags=None, data=None, is_iv=False, for j in range(lags + 1): if j == 0: gamma_j = ordered_scores.T @ ordered_scores - - meat += weights[j] * gamma_j else: gamma_j = ordered_scores[j:].T @ ordered_scores[:-j] From fd20d59cf7c0ec2d2cee1d5ae82e793f26c86c2f Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Sat, 30 Aug 2025 15:43:51 -0400 Subject: [PATCH 05/43] updated NW Meat function to match fixest implementation --- pyfixest/estimation/vcov_utils.py | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 66e31ad1c..22e6320fb 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -133,22 +133,21 @@ def _nw_meat(scores, time_var=None, lags=None, data=None): lags = int(np.floor(n_time ** (1 / 4))) # bartlett kernel weights - weights = np.array([1 - j / (lags + 1) for j in range(lags + 1)]) + weights = np.array([1 - j / (lags + 1) for j in range(lags+1)]) weights[0] = 0.5 # Halve first weight n, k = ordered_scores.shape meat = np.zeros((k, k)) - for j in range(lags + 1): - if j == 0: - gamma_j = ordered_scores.T @ ordered_scores + # this implementation follows the same that fixest does in R + for l in range(lags + 1): + weight = weights[l] + gamma_l = np.zeros((k, k)) - meat += weights[j] * gamma_j - else: - gamma_j = ordered_scores[j:].T @ ordered_scores[:-j] - meat += weights[j] * (gamma_j + gamma_j.T) - - meat = meat / n + for t in range(l, n_time): + gamma_l += np.outer(ordered_scores[t, :], ordered_scores[t - l, :]) + + meat += weight * (gamma_l + gamma_l.T) return meat From 2b753d9d3ff69bc1ef4218c850ab2054f337b916 Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Sat, 30 Aug 2025 19:18:52 -0400 Subject: [PATCH 06/43] Newey-West complete. Tests and documentation pending --- pyfixest/estimation/feols_.py | 26 +++++++++++++++++++++++++- pyfixest/utils/utils.py | 8 ++++---- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 9fb29ed8e..a72a9f36e 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -45,6 +45,7 @@ _count_G_for_ssc_correction, _get_cluster_df, _prepare_twoway_clustering, + _nw_meat ) from pyfixest.utils.dev_utils import ( DataFrameType, @@ -635,6 +636,22 @@ def vcov( # compute vcov + # check if vcov_kwargs is empty + if vcov_kwargs is None: + vcov_kwargs = {} + + # Extract time variable and lag from vcov_kwargs + time_var_name = vcov_kwargs.get('time_var', None) + lags = vcov_kwargs.get('lags', None) + + if time_var_name is not None: + if time_var_name not in _data.columns: + raise ValueError(f"Time variable '{time_var_name}' not found in data columns.") + else: + self._time_var = _data[time_var_name].to_numpy() + + self._lags = lags + ssc_kwargs = { "ssc_dict": self._ssc_dict, "N": self._N, @@ -854,15 +871,22 @@ def _vcov_hac(self): _tZX = self._tZX _is_iv = self._is_iv _vcov_type_detail = self._vcov_type_detail + _time_var = self._time_var + _lags = self._lags + _data = self._data if _vcov_type_detail == "NW": # Newey-West - raise NotImplementedError("Newey-West HAC standard errors are not yet implemented") + newey_west_meat = _nw_meat(_scores, _time_var, _lags, _data) + _meat = _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX if _is_iv else newey_west_meat + _vcov = _bread @ _meat @ _bread elif _vcov_type_detail == "DK": # Driscoll-Kraay raise NotImplementedError("Driscoll-Kraay HAC standard errors are not yet implemented") else: raise ValueError(f"Unknown HAC type: {_vcov_type_detail}") + + return _vcov def _vcov_nid(self): raise NotImplementedError( diff --git a/pyfixest/utils/utils.py b/pyfixest/utils/utils.py index e95f44ab5..7777c70a0 100644 --- a/pyfixest/utils/utils.py +++ b/pyfixest/utils/utils.py @@ -141,7 +141,7 @@ def get_ssc( vcov_sign : array-like A vector that helps create the covariance matrix. vcov_type : str - The type of covariance matrix. Must be one of "iid", "hetero", or "CRV". + The type of covariance matrix. Must be one of "iid", "hetero", "HAC", or "CRV". Returns ------- @@ -151,7 +151,7 @@ def get_ssc( Raises ------ ValueError - If vcov_type is not "iid", "hetero", or "CRV", or if cluster_df is neither + If vcov_type is not "iid", "hetero", "HAC", or "CRV", or if cluster_df is neither "conventional" nor "min". """ adj = ssc_dict["adj"] @@ -190,7 +190,7 @@ def get_ssc( adj_value = (N - 1) / (N - dof_k) # cluster_adj applied with G = N for hetero but not for iid - if vcov_type in ["hetero", "CRV"] and cluster_adj: + if vcov_type in ["hetero", "HAC", "CRV"] and cluster_adj: if cluster_df == "conventional": cluster_adj_value = G / (G - 1) elif cluster_df == "min": @@ -199,7 +199,7 @@ def get_ssc( else: raise ValueError("cluster_df is neither conventional nor min.") - df_t = N - dof_k if vcov_type in ["iid", "hetero"] else G - 1 + df_t = N - dof_k if vcov_type in ["iid", "hetero", "HAC"] else G - 1 return np.array([adj_value * cluster_adj_value * vcov_sign]), dof_k, df_t From ecb3b612374f1beb471bf62de45543149a7257c5 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 10:57:44 +0200 Subject: [PATCH 07/43] pass function attributes along, force _nw_meat to work on arrays only (else numba does not compile) --- pyfixest/estimation/feols_.py | 39 ++++++++++++++----------------- pyfixest/estimation/vcov_utils.py | 26 ++++++++------------- 2 files changed, 27 insertions(+), 38 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index a72a9f36e..f6d2e4c1e 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -634,23 +634,10 @@ def vcov( self._bread = _compute_bread(_is_iv, _tXZ, _tZZinv, _tZX, _hessian) - # compute vcov - - # check if vcov_kwargs is empty - if vcov_kwargs is None: - vcov_kwargs = {} - - # Extract time variable and lag from vcov_kwargs - time_var_name = vcov_kwargs.get('time_var', None) - lags = vcov_kwargs.get('lags', None) - - if time_var_name is not None: - if time_var_name not in _data.columns: - raise ValueError(f"Time variable '{time_var_name}' not found in data columns.") - else: - self._time_var = _data[time_var_name].to_numpy() - - self._lags = lags + # HAC attributes + self._lags = vcov_kwargs.get('lags', None) + self._time_id = vcov_kwargs.get('time_id', None) + self._panel_id = vcov_kwargs.get('panel_id', None) ssc_kwargs = { "ssc_dict": self._ssc_dict, @@ -871,21 +858,29 @@ def _vcov_hac(self): _tZX = self._tZX _is_iv = self._is_iv _vcov_type_detail = self._vcov_type_detail - _time_var = self._time_var + _time_id = self._time_id + _panel_id = self._panel_id _lags = self._lags _data = self._data + _time_arr = _data[_time_id].to_numpy() + _panel_arr = _data[_panel_id].to_numpy() if _panel_id is not None else None + if _vcov_type_detail == "NW": # Newey-West - newey_west_meat = _nw_meat(_scores, _time_var, _lags, _data) - _meat = _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX if _is_iv else newey_west_meat - _vcov = _bread @ _meat @ _bread + if _panel_id is None: + newey_west_meat = _nw_meat(scores = _scores, time_arr = _time_arr, lags = _lags) + else: + raise NotImplementedError("Panel-clustered Newey-West HAC standard errors are not yet implemented") elif _vcov_type_detail == "DK": # Driscoll-Kraay raise NotImplementedError("Driscoll-Kraay HAC standard errors are not yet implemented") else: raise ValueError(f"Unknown HAC type: {_vcov_type_detail}") - + + _meat = _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX if _is_iv else newey_west_meat + _vcov = _bread @ _meat @ _bread + return _vcov def _vcov_nid(self): diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 22e6320fb..97891f746 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -99,7 +99,7 @@ def _get_vcov_type( @nb.njit(parallel=False) -def _nw_meat(scores, time_var=None, lags=None, data=None): +def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: int): """ Compute Newey-West HAC meat matrix. @@ -107,36 +107,30 @@ def _nw_meat(scores, time_var=None, lags=None, data=None): ---------- scores: np.ndarray The scores matrix. - time_var: np.ndarray, optional - The time variable for clustering. Default is None. + time_arr: np.ndarray, optional + The time variable for clustering. lags: int, optional The number of lags for the HAC estimator. Defaults to floor (# of time periods)^(1/4). - data: pd.DataFrame, optional - The original data set. Default is None. """ # Determine whether data is time ordered or not - if not provided, data is assumed to be time ordered - if time_var is None: + if time_arr is None: ordered_scores = scores - n_time = len(ordered_scores) else: - time_data = data[ - time_var - ].to_numpy() # need to ensure that this is datetime format - might have to write an internal converter for pf. - order = np.argsort(time_data) + order = np.argsort(time_arr) ordered_scores = scores[order] - n_time = len(np.unique(time_data)) + + time_periods, k = ordered_scores.shape # resolve lags if lags is None: # these are the fixest default lags for HAC # see https://lrberge.github.io/fixest/reference/vcov_hac.html - lags = int(np.floor(n_time ** (1 / 4))) + lags = int(np.floor(time_periods ** (1 / 4))) # bartlett kernel weights weights = np.array([1 - j / (lags + 1) for j in range(lags+1)]) weights[0] = 0.5 # Halve first weight - n, k = ordered_scores.shape meat = np.zeros((k, k)) # this implementation follows the same that fixest does in R @@ -144,9 +138,9 @@ def _nw_meat(scores, time_var=None, lags=None, data=None): weight = weights[l] gamma_l = np.zeros((k, k)) - for t in range(l, n_time): + for t in range(l, time_periods): gamma_l += np.outer(ordered_scores[t, :], ordered_scores[t - l, :]) - + meat += weight * (gamma_l + gamma_l.T) return meat From 9d4d7046f128ae8b0039cfef53f3dc1a8431d8c4 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 11:17:06 +0200 Subject: [PATCH 08/43] add basuc unit tests for HAC --- pyfixest/estimation/feols_.py | 26 +++-- pyfixest/estimation/vcov_utils.py | 16 ++- tests/test_hac_vs_fixest.py | 163 ++++++++++++++++++++++++++++++ 3 files changed, 188 insertions(+), 17 deletions(-) create mode 100644 tests/test_hac_vs_fixest.py diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index f6d2e4c1e..e61dd0ca8 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -44,8 +44,8 @@ _compute_bread, _count_G_for_ssc_correction, _get_cluster_df, + _nw_meat, _prepare_twoway_clustering, - _nw_meat ) from pyfixest.utils.dev_utils import ( DataFrameType, @@ -635,9 +635,9 @@ def vcov( self._bread = _compute_bread(_is_iv, _tXZ, _tZZinv, _tZX, _hessian) # HAC attributes - self._lags = vcov_kwargs.get('lags', None) - self._time_id = vcov_kwargs.get('time_id', None) - self._panel_id = vcov_kwargs.get('panel_id', None) + self._lags = vcov_kwargs.get("lags", None) + self._time_id = vcov_kwargs.get("time_id", None) + self._panel_id = vcov_kwargs.get("panel_id", None) ssc_kwargs = { "ssc_dict": self._ssc_dict, @@ -869,16 +869,26 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat(scores = _scores, time_arr = _time_arr, lags = _lags) + newey_west_meat = _nw_meat( + scores=_scores, time_arr=_time_arr, lags=_lags + ) else: - raise NotImplementedError("Panel-clustered Newey-West HAC standard errors are not yet implemented") + raise NotImplementedError( + "Panel-clustered Newey-West HAC standard errors are not yet implemented" + ) elif _vcov_type_detail == "DK": # Driscoll-Kraay - raise NotImplementedError("Driscoll-Kraay HAC standard errors are not yet implemented") + raise NotImplementedError( + "Driscoll-Kraay HAC standard errors are not yet implemented" + ) else: raise ValueError(f"Unknown HAC type: {_vcov_type_detail}") - _meat = _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX if _is_iv else newey_west_meat + _meat = ( + _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX + if _is_iv + else newey_west_meat + ) _vcov = _bread @ _meat @ _bread return _vcov diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 97891f746..d1b1c0233 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -97,7 +97,6 @@ def _get_vcov_type( return vcov_type # type: ignore - @nb.njit(parallel=False) def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: int): """ @@ -128,25 +127,24 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: int): lags = int(np.floor(time_periods ** (1 / 4))) # bartlett kernel weights - weights = np.array([1 - j / (lags + 1) for j in range(lags+1)]) + weights = np.array([1 - j / (lags + 1) for j in range(lags + 1)]) weights[0] = 0.5 # Halve first weight meat = np.zeros((k, k)) # this implementation follows the same that fixest does in R - for l in range(lags + 1): - weight = weights[l] - gamma_l = np.zeros((k, k)) + for lag in range(lags + 1): + weight = weights[lag] + gamma_lag = np.zeros((k, k)) - for t in range(l, time_periods): - gamma_l += np.outer(ordered_scores[t, :], ordered_scores[t - l, :]) + for t in range(lag, time_periods): + gamma_lag += np.outer(ordered_scores[t, :], ordered_scores[t - lag, :]) - meat += weight * (gamma_l + gamma_l.T) + meat += weight * (gamma_lag + gamma_lag.T) return meat - def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] cluster_two = clustervar[1] diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py new file mode 100644 index 000000000..376e6345d --- /dev/null +++ b/tests/test_hac_vs_fixest.py @@ -0,0 +1,163 @@ +import re + +import numpy as np +import pandas as pd +import pytest +import rpy2.robjects as ro +from rpy2.robjects import pandas2ri + +# rpy2 imports +from rpy2.robjects.packages import importr + +import pyfixest as pf +from pyfixest.utils.utils import get_data, ssc + +from tests.test_vs_fixest import _convert_f3, _get_r_inference, get_data_r, _c_to_as_factor + +pandas2ri.activate() + +fixest = importr("fixest") +stats = importr("stats") +broom = importr("broom") + +# note: tolerances are lowered below for +# fepois inference as it is not as precise as feols +# effective tolerances for fepois are 1e-04 and 1e-03 +# (the latter only for CRV inferece) +rtol = 1e-08 +atol = 1e-08 + +ols_fmls = [ + ("Y~X1"), + ("Y~X1+X2"), + ("Y~X1|f2"), + ("Y~X1|f2+f3"), +] + +@pytest.fixture(scope="module") +def data_feols(N=1000, seed=76540251, beta_type="2", error_type="2"): + data = pf.get_data( + N=N, seed=seed, beta_type=beta_type, error_type=error_type, model="Feols" + ) + + data["time"] = np.arange(data.shape[0]) + return data + + +rng = np.random.default_rng(875) + +def check_absolute_diff(x1, x2, tol, msg=None): + "Check for absolute differences." + if isinstance(x1, (int, float)): + x1 = np.array([x1]) + if isinstance(x2, (int, float)): + x2 = np.array([x2]) + msg = "" if msg is None else msg + + # handle nan values + nan_mask_x1 = np.isnan(x1) + nan_mask_x2 = np.isnan(x2) + + if not np.array_equal(nan_mask_x1, nan_mask_x2): + raise AssertionError(f"{msg}: NaN positions do not match") + + valid_mask = ~nan_mask_x1 # Mask for non-NaN elements (same for x1 and x2) + assert np.all(np.abs(x1[valid_mask] - x2[valid_mask]) < tol), msg + + +def na_omit(arr): + mask = ~np.isnan(arr) + return arr[mask] + + +def check_relative_diff(x1, x2, tol, msg=None): + msg = "" if msg is None else msg + assert np.all(np.abs(x1 - x2) / np.abs(x1) < tol), msg + + +test_counter_feols = 0 +test_counter_fepois = 0 +test_counter_feiv = 0 + +ALL_F3 = ["str", "object", "int", "categorical", "float"] +SINGLE_F3 = ALL_F3[0] +BACKEND_F3 = [ + *[("numba", t) for t in ALL_F3], + #*[(b, SINGLE_F3) for b in ("jax", "rust")], +] + + +@pytest.mark.against_r_core +@pytest.mark.parametrize("dropna", [False, True]) +@pytest.mark.parametrize("inference", ["NW"]) +@pytest.mark.parametrize("vcov_kwargs", [ + {"lags": 2, "time_id": "time"}, + {"lags": 5, "time_id": "time"} +]) +@pytest.mark.parametrize("weights", [None, "weights"]) +@pytest.mark.parametrize("fml", ols_fmls) +def test_single_fit_feols_hac( + data_feols, + dropna, + inference, + vcov_kwargs, + weights, + fml, +): + global test_counter_feols + test_counter_feols += 1 + + adj = True + cluster_adj = True + ssc_ = ssc(adj=adj, cluster_adj=cluster_adj) + + lags = vcov_kwargs.get("lags", None) + time_id = vcov_kwargs.get("time_id", None) + panel_id = vcov_kwargs.get("panel_id", None) + + data = data_feols.copy() + + if dropna: + data = data.dropna() + + # long story, but categories need to be strings to be converted to R factors, + # this then produces 'nan' values in the pd.DataFrame ... + data[data == "nan"] = np.nan + + data_r = get_data_r(fml, data) + r_fml = _c_to_as_factor(fml) + + r_inference = _get_r_inference(inference) + + mod = pf.feols( + fml=fml, + data=data, + vcov=inference, + vcov_kwargs=vcov_kwargs, + weights=weights, + ssc=ssc_, + ) + if weights is not None: + r_fixest = fixest.feols( + ro.Formula(r_fml), + vcov=fixest.vcov_NW(lag=lags, time=time_id), + data=data_r, + ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), + weights=ro.Formula("~" + weights), + ) + else: + r_fixest = fixest.feols( + ro.Formula(r_fml), + vcov=fixest.vcov_NW(lag=lags, time=time_id), + data=data_r, + ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), + ) + + # r_fixest to global r env, needed for + # operations as in dof.K + ro.globalenv["r_fixest"] = r_fixest + + py_vcov = mod._vcov[0, 0] + r_vcov = stats.vcov(r_fixest)[0, 0] + + check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") \ No newline at end of file From 3fb2e29e0f8a8c5b6e57c71d95b310270a867d91 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 12:00:51 +0200 Subject: [PATCH 09/43] fix test bug? --- pyfixest/estimation/estimation.py | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 90ad0d92d..04d490439 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -1379,22 +1379,22 @@ def _estimation_input_checks( if not all(key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs.keys()): raise ValueError("The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'.") - # if lag provided, check that it is an int - if "lags" in vcov_kwargs: - if not isinstance(vcov_kwargs["lags"], int): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'.") - - if "time_id" in vcov_kwargs: - if not isinstance(vcov_kwargs["time_id"], str): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") - if vcov_kwargs["time_id"] not in data.columns: - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") - - if "panel_id" in vcov_kwargs: - if not isinstance(vcov_kwargs["panel_id"], str): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") - if vcov_kwargs["panel_id"] not in data.columns: - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + # if lag provided, check that it is an int + if "lags" in vcov_kwargs: + if not isinstance(vcov_kwargs["lags"], int): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'.") + + if "time_id" in vcov_kwargs: + if not isinstance(vcov_kwargs["time_id"], str): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + if vcov_kwargs["time_id"] not in data.columns: + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + + if "panel_id" in vcov_kwargs: + if not isinstance(vcov_kwargs["panel_id"], str): + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + if vcov_kwargs["panel_id"] not in data.columns: + raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") def _quantreg_input_checks(quantile: float, tol: float, maxiter: Optional[int]): From 24b5b8e9f829a4201f49ac5616e9735d9669c6e6 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 12:06:27 +0200 Subject: [PATCH 10/43] one more fix --- pyfixest/estimation/estimation.py | 28 +++++++++++++++++++++------- pyfixest/estimation/feols_.py | 6 +++--- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 04d490439..2b6402f26 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -1376,25 +1376,39 @@ def _estimation_input_checks( if vcov_kwargs is not None: # check that dict keys are either "lags", "time_id", or "panel_id" - if not all(key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs.keys()): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'.") + if not all( + key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs.keys() + ): + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'." + ) # if lag provided, check that it is an int if "lags" in vcov_kwargs: if not isinstance(vcov_kwargs["lags"], int): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'.") + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'." + ) if "time_id" in vcov_kwargs: if not isinstance(vcov_kwargs["time_id"], str): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'." + ) if vcov_kwargs["time_id"] not in data.columns: - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'.") + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'." + ) if "panel_id" in vcov_kwargs: if not isinstance(vcov_kwargs["panel_id"], str): - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'." + ) if vcov_kwargs["panel_id"] not in data.columns: - raise ValueError("The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'.") + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'." + ) def _quantreg_input_checks(quantile: float, tol: float, maxiter: Optional[int]): diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index e61dd0ca8..118f7ed7c 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -635,9 +635,9 @@ def vcov( self._bread = _compute_bread(_is_iv, _tXZ, _tZZinv, _tZX, _hessian) # HAC attributes - self._lags = vcov_kwargs.get("lags", None) - self._time_id = vcov_kwargs.get("time_id", None) - self._panel_id = vcov_kwargs.get("panel_id", None) + self._lags = vcov_kwargs.get("lags", None) if vcov_kwargs is not None else None + self._time_id = vcov_kwargs.get("time_id", None) if vcov_kwargs is not None else None + self._panel_id = vcov_kwargs.get("panel_id", None) if vcov_kwargs is not None else None ssc_kwargs = { "ssc_dict": self._ssc_dict, From 46326821b7490d1e37a08f19bd46fe66f0efcda6 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 12:37:14 +0200 Subject: [PATCH 11/43] fix more bugs --- pyfixest/estimation/estimation.py | 7 +++++-- pyfixest/estimation/feols_compressed_.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 2b6402f26..7f2aa1d37 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -491,8 +491,8 @@ def _lspline(series: pd.Series, knots: list[float]) -> np.array: # demean all models: based on fixed effects x split x missing value combinations fixest._estimate_all_models( - vcov, - vcov_kwargs, + vcov = vcov, + vcov_kwargs=vcov_kwargs, collin_tol=collin_tol, solver=solver, demeaner_backend=demeaner_backend, @@ -715,6 +715,7 @@ def fepois( fixest._estimate_all_models( vcov=vcov, + vcov_kwargs=vcov_kwargs, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, @@ -975,6 +976,7 @@ def feglm( fixest._estimate_all_models( vcov=vcov, + vcov_kwargs=vcov_kwargs, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, @@ -1217,6 +1219,7 @@ def quantreg( fixest._estimate_all_models( vcov=vcov, + vcov_kwargs=vcov_kwargs, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, diff --git a/pyfixest/estimation/feols_compressed_.py b/pyfixest/estimation/feols_compressed_.py index b7ff81527..4594cf6e2 100644 --- a/pyfixest/estimation/feols_compressed_.py +++ b/pyfixest/estimation/feols_compressed_.py @@ -235,7 +235,7 @@ def prepare_model_matrix(self): self._data = compressed_dict.df_compressed.to_pandas() def vcov( - self, vcov: Union[str, dict[str, str]], data: Optional[DataFrameType] = None + self, vcov: Union[str, dict[str, str]], vcov_kwargs: Optional[dict[str, Any]] = None, data: Optional[DataFrameType] = None ): "Compute the variance-covariance matrix for the compressed regression." if self._use_mundlak and vcov in ["iid", "hetero", "HC1", "HC2", "HC3"]: From 2ae3cce9ce4a9ff56fa573b94de39a360020341d Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 13:51:13 +0200 Subject: [PATCH 12/43] fix tests --- pyfixest/estimation/FixestMulti_.py | 12 +++++++----- pyfixest/estimation/estimation.py | 21 +++++++++++---------- pyfixest/estimation/feols_compressed_.py | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) diff --git a/pyfixest/estimation/FixestMulti_.py b/pyfixest/estimation/FixestMulti_.py index 359c6f4af..838712df4 100644 --- a/pyfixest/estimation/FixestMulti_.py +++ b/pyfixest/estimation/FixestMulti_.py @@ -243,8 +243,8 @@ def _prepare_estimation( def _estimate_all_models( self, vcov: Union[str, dict[str, str], None], - vcov_kwargs: dict[str, Any], solver: SolverOptions, + vcov_kwargs: Optional[dict[str, Any]] = None, demeaner_backend: DemeanerBackendOptions = "numba", collin_tol: float = 1e-6, iwls_maxiter: int = 25, @@ -262,8 +262,8 @@ def _estimate_all_models( - If a string, can be one of "iid", "hetero", "HC1", "HC2", "HC3", "NW", "DK". - If a dictionary, it should have the format {"CRV1": "clustervar"} for CRV1 inference or {"CRV3": "clustervar"} for CRV3 inference. - vcov_kwargs : dict[str, Any] - Additional keyword arguments for the variance-covariance matrix. + vcov_kwargs : Optional[dict[str, Any]], optional + Additional keyword arguments for the variance-covariance matrix. Defaults to None. solver: SolverOptions Solver to use for the estimation. demeaner_backend: DemeanerBackendOptions, optional @@ -475,7 +475,7 @@ def to_list(self) -> list[Union[Feols, Fepois, Feiv]]: """ return list(self.all_fitted_models.values()) - def vcov(self, vcov: Union[str, dict[str, str]]): + def vcov(self, vcov: Union[str, dict[str, str]], vcov_kwargs: Optional[dict[str, any]] = None): """ Update regression inference "on the fly". @@ -491,6 +491,8 @@ def vcov(self, vcov: Union[str, dict[str, str]]): - If a string, can be one of "iid", "hetero", "HC1", "HC2", "HC3". - If a dictionary, it should have the format {"CRV1": "clustervar"} for CRV1 inference or {"CRV3": "clustervar"} for CRV3 inference. + vcov_kwargs : Optional[dict[str, any]] + Additional keyword arguments for the variance-covariance matrix. Returns ------- @@ -508,7 +510,7 @@ def vcov(self, vcov: Union[str, dict[str, str]]): _, ) = _deparse_vcov_input(vcov, False, False) - fxst.vcov(vcov=vcov) + fxst.vcov(vcov=vcov, vcov_kwargs=vcov_kwargs) fxst.get_inference() return self diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 7f2aa1d37..541bc0e60 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -486,15 +486,15 @@ def _lspline(series: pd.Series, knots: list[float]) -> np.array: estimation = "feols" if not use_compression else "compression" fixest._prepare_estimation( - estimation, fml, vcov, vcov_kwargs, weights, ssc, fixef_rm, drop_intercept + estimation = estimation, fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept ) # demean all models: based on fixed effects x split x missing value combinations fixest._estimate_all_models( - vcov = vcov, + vcov=vcov, + solver=solver, vcov_kwargs=vcov_kwargs, collin_tol=collin_tol, - solver=solver, demeaner_backend=demeaner_backend, ) @@ -706,7 +706,7 @@ def fepois( ) fixest._prepare_estimation( - "fepois", fml, vcov, weights, ssc, fixef_rm, drop_intercept + estimation = "fepois", fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept ) if fixest._is_iv: raise NotImplementedError( @@ -715,12 +715,12 @@ def fepois( fixest._estimate_all_models( vcov=vcov, + solver=solver, vcov_kwargs=vcov_kwargs, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, separation_check=separation_check, - solver=solver, demeaner_backend=demeaner_backend, ) @@ -967,7 +967,7 @@ def feglm( # same checks as for Poisson regression fixest._prepare_estimation( - f"feglm-{family}", fml, vcov, weights, ssc, fixef_rm, drop_intercept + estimation = f"feglm-{family}", fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept ) if fixest._is_iv: raise NotImplementedError( @@ -976,12 +976,12 @@ def feglm( fixest._estimate_all_models( vcov=vcov, + solver=solver, vcov_kwargs=vcov_kwargs, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, separation_check=separation_check, - solver=solver, ) if fixest._is_multiple_estimation: @@ -1161,7 +1161,7 @@ def quantreg( _estimation_input_checks( fml=fml, data=data, - vcov=vcov_type, + vcov=vcov, vcov_kwargs=None, weights=weights, ssc=ssc, @@ -1204,6 +1204,7 @@ def quantreg( estimation="quantreg" if not isinstance(quantile, list) else "quantreg_multi", fml=fml, vcov=vcov, + vcov_kwargs=None, weights=weights, ssc=ssc, fixef_rm=fixef_rm, @@ -1219,12 +1220,12 @@ def quantreg( fixest._estimate_all_models( vcov=vcov, - vcov_kwargs=vcov_kwargs, + solver=solver, + vcov_kwargs=None, iwls_tol=iwls_tol, iwls_maxiter=iwls_maxiter, collin_tol=collin_tol, separation_check=separation_check, - solver=solver, ) if fixest._is_multiple_estimation: diff --git a/pyfixest/estimation/feols_compressed_.py b/pyfixest/estimation/feols_compressed_.py index 4594cf6e2..ed476fcff 100644 --- a/pyfixest/estimation/feols_compressed_.py +++ b/pyfixest/estimation/feols_compressed_.py @@ -255,7 +255,7 @@ def vcov( f"The only supported clustered vcov type for compressed regression is CRV1, but {vcov} was specified." ) - super().vcov(vcov, data) + super().vcov(vcov = vcov, vcov_kwargs = vcov_kwargs, data = data) def _vcov_iid(self): _N = self._N From ed9c52bc5a02571d356cb535e345051ac9612588 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 18:17:57 +0200 Subject: [PATCH 13/43] pacify mypy' --- pyfixest/estimation/FixestMulti_.py | 6 ++- pyfixest/estimation/estimation.py | 48 +++++++++++++------ pyfixest/estimation/feols_.py | 10 ++-- pyfixest/estimation/quantreg/QuantregMulti.py | 7 ++- 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/pyfixest/estimation/FixestMulti_.py b/pyfixest/estimation/FixestMulti_.py index 838712df4..f3750945f 100644 --- a/pyfixest/estimation/FixestMulti_.py +++ b/pyfixest/estimation/FixestMulti_.py @@ -475,7 +475,11 @@ def to_list(self) -> list[Union[Feols, Fepois, Feiv]]: """ return list(self.all_fitted_models.values()) - def vcov(self, vcov: Union[str, dict[str, str]], vcov_kwargs: Optional[dict[str, any]] = None): + def vcov( + self, + vcov: Union[str, dict[str, str]], + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, + ): """ Update regression inference "on the fly". diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 541bc0e60..1b68a674c 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -24,7 +24,7 @@ def feols( fml: str, data: DataFrameType, # type: ignore vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, - vcov_kwargs: Optional[dict[str, any]] = None, + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, weights: Union[None, str] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", @@ -486,7 +486,14 @@ def _lspline(series: pd.Series, knots: list[float]) -> np.array: estimation = "feols" if not use_compression else "compression" fixest._prepare_estimation( - estimation = estimation, fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept + estimation=estimation, + fml=fml, + vcov=vcov, + vcov_kwargs=vcov_kwargs, + weights=weights, + ssc=ssc, + fixef_rm=fixef_rm, + drop_intercept=drop_intercept, ) # demean all models: based on fixed effects x split x missing value combinations @@ -508,7 +515,7 @@ def fepois( fml: str, data: DataFrameType, # type: ignore vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, - vcov_kwargs: Optional[dict[str, any]] = None, + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", fixef_tol: float = 1e-08, @@ -706,7 +713,14 @@ def fepois( ) fixest._prepare_estimation( - estimation = "fepois", fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept + estimation="fepois", + fml=fml, + vcov=vcov, + vcov_kwargs=vcov_kwargs, + weights=weights, + ssc=ssc, + fixef_rm=fixef_rm, + drop_intercept=drop_intercept, ) if fixest._is_iv: raise NotImplementedError( @@ -735,7 +749,7 @@ def feglm( data: DataFrameType, # type: ignore family: str, vcov: Optional[Union[VcovTypeOptions, dict[str, str]]] = None, - vcov_kwargs: Optional[dict[str, any]] = None, + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, ssc: Optional[dict[str, Union[str, bool]]] = None, fixef_rm: FixedRmOptions = "none", fixef_tol: float = 1e-08, @@ -967,7 +981,14 @@ def feglm( # same checks as for Poisson regression fixest._prepare_estimation( - estimation = f"feglm-{family}", fml = fml, vcov = vcov, vcov_kwargs = vcov_kwargs, weights = weights, ssc = ssc, fixef_rm = fixef_rm, drop_intercept = drop_intercept + estimation=f"feglm-{family}", + fml=fml, + vcov=vcov, + vcov_kwargs=vcov_kwargs, + weights=weights, + ssc=ssc, + fixef_rm=fixef_rm, + drop_intercept=drop_intercept, ) if fixest._is_iv: raise NotImplementedError( @@ -1238,7 +1259,7 @@ def _estimation_input_checks( fml: str, data: DataFrameType, vcov: Optional[Union[str, dict[str, str]]], - vcov_kwargs: Optional[dict[str, any]], + vcov_kwargs: Optional[dict[str, Union[str, int]]], weights: Union[None, str], ssc: dict[str, Union[str, bool]], fixef_rm: str, @@ -1380,19 +1401,16 @@ def _estimation_input_checks( if vcov_kwargs is not None: # check that dict keys are either "lags", "time_id", or "panel_id" - if not all( - key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs.keys() - ): + if not all(key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs): raise ValueError( "The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'." ) # if lag provided, check that it is an int - if "lags" in vcov_kwargs: - if not isinstance(vcov_kwargs["lags"], int): - raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'." - ) + if "lags" in vcov_kwargs and not isinstance(vcov_kwargs["lags"], int): + raise ValueError( + "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'." + ) if "time_id" in vcov_kwargs: if not isinstance(vcov_kwargs["time_id"], str): diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 118f7ed7c..0c09376a6 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -572,7 +572,7 @@ def get_fit(self) -> None: def vcov( self, vcov: Union[str, dict[str, str]], - vcov_kwargs: Optional[dict[str, any]] = None, + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, data: Optional[DataFrameType] = None, ) -> "Feols": """ @@ -636,8 +636,12 @@ def vcov( # HAC attributes self._lags = vcov_kwargs.get("lags", None) if vcov_kwargs is not None else None - self._time_id = vcov_kwargs.get("time_id", None) if vcov_kwargs is not None else None - self._panel_id = vcov_kwargs.get("panel_id", None) if vcov_kwargs is not None else None + self._time_id = ( + vcov_kwargs.get("time_id", None) if vcov_kwargs is not None else None + ) + self._panel_id = ( + vcov_kwargs.get("panel_id", None) if vcov_kwargs is not None else None + ) ssc_kwargs = { "ssc_dict": self._ssc_dict, diff --git a/pyfixest/estimation/quantreg/QuantregMulti.py b/pyfixest/estimation/quantreg/QuantregMulti.py index e8dafae38..598f66ae1 100644 --- a/pyfixest/estimation/quantreg/QuantregMulti.py +++ b/pyfixest/estimation/quantreg/QuantregMulti.py @@ -186,11 +186,14 @@ def _cfm2_fun(i, direction): return self.all_quantregs def vcov( - self, vcov: Union[str, dict[str, str]], data: Optional[DataFrameType] = None + self, + vcov: Union[str, dict[str, str]], + vcov_kwargs: Optional[dict[str, Union[str, int]]] = None, + data: Optional[DataFrameType] = None, ): "Compute variance-covariance matrices for all models in the quantile regression process." [ - QuantReg.vcov(vcov=vcov, data=data) + QuantReg.vcov(vcov=vcov, vcov_kwargs=vcov_kwargs, data=data) for QuantReg in self.all_quantregs.values() ] From 52052d19be2e63e427c64550efa8a8b464e55ada Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 18:29:13 +0200 Subject: [PATCH 14/43] test for errors --- tests/test_errors.py | 126 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/tests/test_errors.py b/tests/test_errors.py index aebc4b343..095307045 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -856,3 +856,129 @@ def test_errors_quantreg(data): def test_invalid_tolerance(tol): with pytest.raises(ValueError, match=r"tol must be in \(0, 1\)"): pf.quantreg("Y ~ X1", data=data, tol=tol) + + +def test_errors_vcov_kwargs(): + """Test all error conditions for vcov_kwargs in _estimation_input_checks.""" + data = pf.get_data() + + # Error 1: Invalid keys in vcov_kwargs + with pytest.raises( + ValueError, + match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"invalid_key": 5}) + + # Error 2: Multiple invalid keys + with pytest.raises( + ValueError, + match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"wrong1": 1, "wrong2": 2}) + + # Error 3: Mix of valid and invalid keys + with pytest.raises( + ValueError, + match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"lags": 5, "invalid_key": "test"}, + ) + + # Error 4: lags value is not an integer (string) + with pytest.raises( + ValueError, match="must be a dictionary with integer values for 'lags'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": "5"}) + + # Error 5: lags value is not an integer (float) + with pytest.raises( + ValueError, match="must be a dictionary with integer values for 'lags'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": 5.5}) + + # Error 6: lags value is not an integer (None) + with pytest.raises( + ValueError, match="must be a dictionary with integer values for 'lags'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": None}) + + # Error 7: time_id value is not a string (integer) + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'time_id'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"time_id": 123}) + + # Error 8: time_id value is not a string (None) + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'time_id'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"time_id": None}) + + # Error 9: time_id column does not exist in data + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'time_id'" + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"time_id": "nonexistent_column"}, + ) + + # Error 10: panel_id value is not a string (integer) + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'panel_id'" + ): + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"panel_id": 456}) + + # Error 11: panel_id value is not a string (list) + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'panel_id'" + ): + pf.feols( + "Y ~ X1", data=data, vcov="NW", vcov_kwargs={"panel_id": ["col1", "col2"]} + ) + + # Error 12: panel_id column does not exist in data + with pytest.raises( + ValueError, match="must be a dictionary with string values for 'panel_id'" + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"panel_id": "missing_panel_column"}, + ) + + +def test_errors_hac(): + """Test all error conditions for HAC (Heteroskedasticity and Autocorrelation Consistent) standard errors.""" + data = pf.get_data() + # Add a time variable for testing + data["time"] = np.arange(len(data)) + data["panel"] = np.repeat(np.arange(len(data) // 10), 10)[: len(data)] + + # Error 1: Driscoll-Kraay HAC not implemented + with pytest.raises( + NotImplementedError, + match="Driscoll-Kraay HAC standard errors are not yet implemented", + ): + pf.feols( + "Y ~ X1", data=data, vcov="DK", vcov_kwargs={"time_id": "time", "lags": 3} + ) + + # Error 2: Panel-clustered Newey-West HAC not implemented + with pytest.raises( + NotImplementedError, + match="Panel-clustered Newey-West HAC standard errors are not yet implemented", + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"time_id": "time", "panel_id": "panel", "lags": 3}, + ) From 8b4e7d7b79c93e9cc13505dacf3ce6a22916b15c Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 19:35:46 +0200 Subject: [PATCH 15/43] add test for update --- pyfixest/estimation/estimation.py | 10 ++--- tests/test_hac_vs_fixest.py | 61 ++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 23 deletions(-) diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 1b68a674c..1ab3a0b58 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -1409,27 +1409,27 @@ def _estimation_input_checks( # if lag provided, check that it is an int if "lags" in vcov_kwargs and not isinstance(vcov_kwargs["lags"], int): raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags'." + "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags' if explicitly provided." ) if "time_id" in vcov_kwargs: if not isinstance(vcov_kwargs["time_id"], str): raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'." + "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id' if explicitly provided." ) if vcov_kwargs["time_id"] not in data.columns: raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id'." + "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id' if explicitly provided." ) if "panel_id" in vcov_kwargs: if not isinstance(vcov_kwargs["panel_id"], str): raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'." + "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id' if explicitly provided." ) if vcov_kwargs["panel_id"] not in data.columns: raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id'." + "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id' if explicitly provided." ) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 376e6345d..8f5224827 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -1,7 +1,4 @@ -import re - import numpy as np -import pandas as pd import pytest import rpy2.robjects as ro from rpy2.robjects import pandas2ri @@ -10,9 +7,8 @@ from rpy2.robjects.packages import importr import pyfixest as pf -from pyfixest.utils.utils import get_data, ssc - -from tests.test_vs_fixest import _convert_f3, _get_r_inference, get_data_r, _c_to_as_factor +from pyfixest.utils.utils import ssc +from tests.test_vs_fixest import _c_to_as_factor, get_data_r pandas2ri.activate() @@ -34,9 +30,10 @@ ("Y~X1|f2+f3"), ] + @pytest.fixture(scope="module") def data_feols(N=1000, seed=76540251, beta_type="2", error_type="2"): - data = pf.get_data( + data = pf.get_data( N=N, seed=seed, beta_type=beta_type, error_type=error_type, model="Feols" ) @@ -46,6 +43,7 @@ def data_feols(N=1000, seed=76540251, beta_type="2", error_type="2"): rng = np.random.default_rng(875) + def check_absolute_diff(x1, x2, tol, msg=None): "Check for absolute differences." if isinstance(x1, (int, float)): @@ -83,17 +81,23 @@ def check_relative_diff(x1, x2, tol, msg=None): SINGLE_F3 = ALL_F3[0] BACKEND_F3 = [ *[("numba", t) for t in ALL_F3], - #*[(b, SINGLE_F3) for b in ("jax", "rust")], + # *[(b, SINGLE_F3) for b in ("jax", "rust")], ] @pytest.mark.against_r_core @pytest.mark.parametrize("dropna", [False, True]) @pytest.mark.parametrize("inference", ["NW"]) -@pytest.mark.parametrize("vcov_kwargs", [ - {"lags": 2, "time_id": "time"}, - {"lags": 5, "time_id": "time"} -]) +@pytest.mark.parametrize( + "vcov_kwargs", + [ + # {}, # default lags, assume sorting + # {"lags":7}, + # {"time_id": "time"}, + {"lags": 2, "time_id": "time"}, + {"lags": 5, "time_id": "time"}, + ], +) @pytest.mark.parametrize("weights", [None, "weights"]) @pytest.mark.parametrize("fml", ols_fmls) def test_single_fit_feols_hac( @@ -113,7 +117,7 @@ def test_single_fit_feols_hac( lags = vcov_kwargs.get("lags", None) time_id = vcov_kwargs.get("time_id", None) - panel_id = vcov_kwargs.get("panel_id", None) + # panel_id = vcov_kwargs.get("panel_id", None) data = data_feols.copy() @@ -127,8 +131,6 @@ def test_single_fit_feols_hac( data_r = get_data_r(fml, data) r_fml = _c_to_as_factor(fml) - r_inference = _get_r_inference(inference) - mod = pf.feols( fml=fml, data=data, @@ -140,7 +142,12 @@ def test_single_fit_feols_hac( if weights is not None: r_fixest = fixest.feols( ro.Formula(r_fml), - vcov=fixest.vcov_NW(lag=lags, time=time_id), + vcov=fixest.vcov_NW( + **{ + **({} if lags is None else {"lag": lags}), + **({} if time_id is None else {"time": time_id}), + } + ), data=data_r, ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), weights=ro.Formula("~" + weights), @@ -148,7 +155,12 @@ def test_single_fit_feols_hac( else: r_fixest = fixest.feols( ro.Formula(r_fml), - vcov=fixest.vcov_NW(lag=lags, time=time_id), + vcov=fixest.vcov_NW( + **{ + **({} if lags is None else {"lag": lags}), + **({} if time_id is None else {"time": time_id}), + } + ), data=data_r, ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), ) @@ -160,4 +172,17 @@ def test_single_fit_feols_hac( py_vcov = mod._vcov[0, 0] r_vcov = stats.vcov(r_fixest)[0, 0] - check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") \ No newline at end of file + check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") + + +def test_vcov_updating(data_feols): + fit_hetero = pf.feols("Y ~ X1", data=data_feols, vcov="hetero") + fit_nw = pf.feols( + "Y ~ X1", data=data_feols, vcov="NW", vcov_kwargs={"time_id": "time", "lags": 7} + ) + + fit_hetero.vcov(vcov="NW", vcov_kwargs={"lags": 7, "time_id": "time"}) + + assert fit_hetero._vcov_type == "HAC" + assert fit_hetero._vcov_type_detail == "NW" + check_absolute_diff(fit_hetero._vcov, fit_nw._vcov, 1e-08, "py_vcov != r_vcov") From d66b5d72f6efadfeaf085694e42a1f18b9c33a8e Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 31 Aug 2025 19:42:37 +0200 Subject: [PATCH 16/43] update type hints for lags --- pyfixest/estimation/vcov_utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index d1b1c0233..e62e137b0 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -1,4 +1,4 @@ -from typing import Union +from typing import Optional, Union import numba as nb import numpy as np @@ -98,7 +98,7 @@ def _get_vcov_type( @nb.njit(parallel=False) -def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: int): +def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: Optional[int] = None): """ Compute Newey-West HAC meat matrix. From cc98167d902279fdfeb65aeefdb415d4f8875d17 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Mon, 1 Sep 2025 14:33:31 +0200 Subject: [PATCH 17/43] rename arg from lags to lag for compatibility with fixest --- pyfixest/estimation/estimation.py | 18 +++++++++--------- pyfixest/estimation/feols_.py | 8 +++----- pyfixest/estimation/vcov_utils.py | 26 ++++++++++++++------------ tests/test_errors.py | 30 +++++++++++++++--------------- tests/test_hac_vs_fixest.py | 18 +++++++++--------- 5 files changed, 50 insertions(+), 50 deletions(-) diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 1ab3a0b58..f374dfd4d 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -68,7 +68,7 @@ def feols( vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include - "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel identifier used for NW and DK standard errors. @@ -556,13 +556,13 @@ def fepois( vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include - "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel identifier used for NW and DK standard errors. vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments for the variance-covariance matrix. - For example, "lags" for the Newey-West estimator. + For example, "lag" for the Newey-West estimator. ssc : str A ssc object specifying the small sample correction for inference. @@ -797,7 +797,7 @@ def feglm( vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include - "lags" for the number of lags to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. + "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel identifier used for NW and DK standard errors. @@ -1400,16 +1400,16 @@ def _estimation_input_checks( ) if vcov_kwargs is not None: - # check that dict keys are either "lags", "time_id", or "panel_id" - if not all(key in ["lags", "time_id", "panel_id"] for key in vcov_kwargs): + # check that dict keys are either "lag", "time_id", or "panel_id" + if not all(key in ["lag", "time_id", "panel_id"] for key in vcov_kwargs): raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with keys 'lags', 'time_id', or 'panel_id'." + "The function argument `vcov_kwargs` must be a dictionary with keys 'lag', 'time_id', or 'panel_id'." ) # if lag provided, check that it is an int - if "lags" in vcov_kwargs and not isinstance(vcov_kwargs["lags"], int): + if "lag" in vcov_kwargs and not isinstance(vcov_kwargs["lag"], int): raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lags' if explicitly provided." + "The function argument `vcov_kwargs` must be a dictionary with integer values for 'lag' if explicitly provided." ) if "time_id" in vcov_kwargs: diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 0c09376a6..7eb3931c3 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -635,7 +635,7 @@ def vcov( self._bread = _compute_bread(_is_iv, _tXZ, _tZZinv, _tZX, _hessian) # HAC attributes - self._lags = vcov_kwargs.get("lags", None) if vcov_kwargs is not None else None + self._lag = vcov_kwargs.get("lag", None) if vcov_kwargs is not None else None self._time_id = ( vcov_kwargs.get("time_id", None) if vcov_kwargs is not None else None ) @@ -864,7 +864,7 @@ def _vcov_hac(self): _vcov_type_detail = self._vcov_type_detail _time_id = self._time_id _panel_id = self._panel_id - _lags = self._lags + _lag = self._lag _data = self._data _time_arr = _data[_time_id].to_numpy() @@ -873,9 +873,7 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat( - scores=_scores, time_arr=_time_arr, lags=_lags - ) + newey_west_meat = _nw_meat(scores=_scores, time_arr=_time_arr, lag=_lag) else: raise NotImplementedError( "Panel-clustered Newey-West HAC standard errors are not yet implemented" diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index e62e137b0..930f377f6 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -98,7 +98,7 @@ def _get_vcov_type( @nb.njit(parallel=False) -def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: Optional[int] = None): +def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None): """ Compute Newey-West HAC meat matrix. @@ -108,8 +108,8 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: Optional[int] = Non The scores matrix. time_arr: np.ndarray, optional The time variable for clustering. - lags: int, optional - The number of lags for the HAC estimator. Defaults to floor (# of time periods)^(1/4). + lag: int, optional + The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). """ # Determine whether data is time ordered or not - if not provided, data is assumed to be time ordered if time_arr is None: @@ -120,25 +120,27 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lags: Optional[int] = Non time_periods, k = ordered_scores.shape - # resolve lags - if lags is None: - # these are the fixest default lags for HAC + # resolve lag + if lag is None: + # these are the fixest default lag for HAC # see https://lrberge.github.io/fixest/reference/vcov_hac.html - lags = int(np.floor(time_periods ** (1 / 4))) + lag = int(np.floor(time_periods ** (1 / 4))) # bartlett kernel weights - weights = np.array([1 - j / (lags + 1) for j in range(lags + 1)]) + weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) weights[0] = 0.5 # Halve first weight meat = np.zeros((k, k)) # this implementation follows the same that fixest does in R - for lag in range(lags + 1): - weight = weights[lag] + for lag_value in range(lag + 1): + weight = weights[lag_value] gamma_lag = np.zeros((k, k)) - for t in range(lag, time_periods): - gamma_lag += np.outer(ordered_scores[t, :], ordered_scores[t - lag, :]) + for t in range(lag_value, time_periods): + gamma_lag += np.outer( + ordered_scores[t, :], ordered_scores[t - lag_value, :] + ) meat += weight * (gamma_lag + gamma_lag.T) diff --git a/tests/test_errors.py b/tests/test_errors.py index 095307045..f1f3b59cd 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -865,46 +865,46 @@ def test_errors_vcov_kwargs(): # Error 1: Invalid keys in vcov_kwargs with pytest.raises( ValueError, - match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + match="must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", ): pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"invalid_key": 5}) # Error 2: Multiple invalid keys with pytest.raises( ValueError, - match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + match="must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", ): pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"wrong1": 1, "wrong2": 2}) # Error 3: Mix of valid and invalid keys with pytest.raises( ValueError, - match="must be a dictionary with keys 'lags', 'time_id', or 'panel_id'", + match="must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", ): pf.feols( "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"lags": 5, "invalid_key": "test"}, + vcov_kwargs={"lag": 5, "invalid_key": "test"}, ) - # Error 4: lags value is not an integer (string) + # Error 4: lag value is not an integer (string) with pytest.raises( - ValueError, match="must be a dictionary with integer values for 'lags'" + ValueError, match="must be a dictionary with integer values for 'lag'" ): - pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": "5"}) + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lag": "5"}) - # Error 5: lags value is not an integer (float) + # Error 5: lag value is not an integer (float) with pytest.raises( - ValueError, match="must be a dictionary with integer values for 'lags'" + ValueError, match="must be a dictionary with integer values for 'lag'" ): - pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": 5.5}) + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lag": 5.5}) - # Error 6: lags value is not an integer (None) + # Error 6: lag value is not an integer (None) with pytest.raises( - ValueError, match="must be a dictionary with integer values for 'lags'" + ValueError, match="must be a dictionary with integer values for 'lag'" ): - pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lags": None}) + pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lag": None}) # Error 7: time_id value is not a string (integer) with pytest.raises( @@ -968,7 +968,7 @@ def test_errors_hac(): match="Driscoll-Kraay HAC standard errors are not yet implemented", ): pf.feols( - "Y ~ X1", data=data, vcov="DK", vcov_kwargs={"time_id": "time", "lags": 3} + "Y ~ X1", data=data, vcov="DK", vcov_kwargs={"time_id": "time", "lag": 3} ) # Error 2: Panel-clustered Newey-West HAC not implemented @@ -980,5 +980,5 @@ def test_errors_hac(): "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"time_id": "time", "panel_id": "panel", "lags": 3}, + vcov_kwargs={"time_id": "time", "panel_id": "panel", "lag": 3}, ) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 8f5224827..7a24fd551 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -91,11 +91,11 @@ def check_relative_diff(x1, x2, tol, msg=None): @pytest.mark.parametrize( "vcov_kwargs", [ - # {}, # default lags, assume sorting - # {"lags":7}, + # {}, # default lag, assume sorting + # {"lag":7}, # {"time_id": "time"}, - {"lags": 2, "time_id": "time"}, - {"lags": 5, "time_id": "time"}, + {"lag": 2, "time_id": "time"}, + {"lag": 5, "time_id": "time"}, ], ) @pytest.mark.parametrize("weights", [None, "weights"]) @@ -115,7 +115,7 @@ def test_single_fit_feols_hac( cluster_adj = True ssc_ = ssc(adj=adj, cluster_adj=cluster_adj) - lags = vcov_kwargs.get("lags", None) + lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) # panel_id = vcov_kwargs.get("panel_id", None) @@ -144,7 +144,7 @@ def test_single_fit_feols_hac( ro.Formula(r_fml), vcov=fixest.vcov_NW( **{ - **({} if lags is None else {"lag": lags}), + **({} if lag is None else {"lag": lag}), **({} if time_id is None else {"time": time_id}), } ), @@ -157,7 +157,7 @@ def test_single_fit_feols_hac( ro.Formula(r_fml), vcov=fixest.vcov_NW( **{ - **({} if lags is None else {"lag": lags}), + **({} if lag is None else {"lag": lag}), **({} if time_id is None else {"time": time_id}), } ), @@ -178,10 +178,10 @@ def test_single_fit_feols_hac( def test_vcov_updating(data_feols): fit_hetero = pf.feols("Y ~ X1", data=data_feols, vcov="hetero") fit_nw = pf.feols( - "Y ~ X1", data=data_feols, vcov="NW", vcov_kwargs={"time_id": "time", "lags": 7} + "Y ~ X1", data=data_feols, vcov="NW", vcov_kwargs={"time_id": "time", "lag": 7} ) - fit_hetero.vcov(vcov="NW", vcov_kwargs={"lags": 7, "time_id": "time"}) + fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "time"}) assert fit_hetero._vcov_type == "HAC" assert fit_hetero._vcov_type_detail == "NW" From 43b8905b3cd0e5d11a4cf991e27d5e0d02c606bb Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Fri, 5 Sep 2025 22:44:21 +0200 Subject: [PATCH 18/43] require lag, time_id for HAC --- pyfixest/estimation/FixestMulti_.py | 2 +- pyfixest/estimation/estimation.py | 20 ++++++++++---- pyfixest/estimation/feols_.py | 22 +++++++++++++-- pyfixest/estimation/vcov_utils.py | 14 ++++------ tests/test_errors.py | 20 ++++++++++++++ tests/test_hac_vs_fixest.py | 42 +++++++++-------------------- 6 files changed, 74 insertions(+), 46 deletions(-) diff --git a/pyfixest/estimation/FixestMulti_.py b/pyfixest/estimation/FixestMulti_.py index f3750945f..273857c24 100644 --- a/pyfixest/estimation/FixestMulti_.py +++ b/pyfixest/estimation/FixestMulti_.py @@ -506,7 +506,7 @@ def vcov( fxst = self.all_fitted_models[model] _data = fxst._data - _check_vcov_input(vcov, _data) + _check_vcov_input(vcov=vcov, vcov_kwargs=vcov_kwargs, data=_data) ( fxst._vcov_type, fxst._vcov_type_detail, diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index f374dfd4d..48a8eff8b 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -65,6 +65,8 @@ def feols( "hetero", "HC1", "HC2", "HC3", "NW" for Newey-West HAC standard errors, "DK" for Driscoll-Kraay HAC standard errors, or a dictionary for CRV1/CRV3 inference. Note that NW and DK require to pass additional keyword arguments via the `vcov_kwargs` argument. + For time-series HAC, you need to pass the 'time_id' column. For panel-HAC, you need to add + pass both 'time_id' and 'panel_id'. See `vcov_kwargs` for details. vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include @@ -554,16 +556,20 @@ def fepois( data : DataFrameType A pandas or polars dataframe containing the variables in the formula. + vcov : Union[VcovTypeOptions, dict[str, str]] + Type of variance-covariance matrix for inference. Options include "iid", + "hetero", "HC1", "HC2", "HC3", "NW" for Newey-West HAC standard errors, + "DK" for Driscoll-Kraay HAC standard errors, or a dictionary for CRV1/CRV3 inference. + Note that NW and DK require to pass additional keyword arguments via the `vcov_kwargs` argument. + For time-series HAC, you need to pass the 'time_id' column. For panel-HAC, you need to add + pass both 'time_id' and 'panel_id'. See `vcov_kwargs` for details. + vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel identifier used for NW and DK standard errors. - vcov_kwargs : Optional[dict[str, any]] - Additional keyword arguments for the variance-covariance matrix. - For example, "lag" for the Newey-West estimator. - ssc : str A ssc object specifying the small sample correction for inference. @@ -793,7 +799,11 @@ def feglm( vcov : Union[VcovTypeOptions, dict[str, str]] Type of variance-covariance matrix for inference. Options include "iid", - "hetero", "HC1", "HC2", "HC3", or a dictionary for CRV1/CRV3 inference. + "hetero", "HC1", "HC2", "HC3", "NW" for Newey-West HAC standard errors, + "DK" for Driscoll-Kraay HAC standard errors, or a dictionary for CRV1/CRV3 inference. + Note that NW and DK require to pass additional keyword arguments via the `vcov_kwargs` argument. + For time-series HAC, you need to pass the 'time_id' column. For panel-HAC, you need to add + pass both 'time_id' and 'panel_id'. See `vcov_kwargs` for details. vcov_kwargs : Optional[dict[str, any]] Additional keyword arguments to pass to the vcov function. These keywoards include diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 7eb3931c3..a54210e4c 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -624,7 +624,8 @@ def vcov( # assign estimated fixed effects, and fixed effects nested within cluster. # deparse vcov input - _check_vcov_input(vcov, _data) + _check_vcov_input(vcov=vcov, vcov_kwargs=vcov_kwargs, data=_data) + ( self._vcov_type, self._vcov_type_detail, @@ -642,6 +643,9 @@ def vcov( self._panel_id = ( vcov_kwargs.get("panel_id", None) if vcov_kwargs is not None else None ) + self._is_sorted = ( + vcov_kwargs.get("is_sorted", None) if vcov_kwargs is not None else None + ) ssc_kwargs = { "ssc_dict": self._ssc_dict, @@ -2845,7 +2849,11 @@ def _drop_multicollinear_variables( return X, list(names_array), collin_vars, collin_index -def _check_vcov_input(vcov: Union[str, dict[str, str]], data: pd.DataFrame): +def _check_vcov_input( + vcov: Union[str, dict[str, str]], + vcov_kwargs: Optional[dict[str, Any]], + data: pd.DataFrame, +): """ Check the input for the vcov argument in the Feols class. @@ -2853,6 +2861,8 @@ def _check_vcov_input(vcov: Union[str, dict[str, str]], data: pd.DataFrame): ---------- vcov : Union[str, dict[str, str]] The vcov argument passed to the Feols class. + vcov_kwargs : Optional[dict[str, Any]] + The vcov_kwargs argument passed to the Feols class. data : pd.DataFrame The data passed to the Feols class. @@ -2891,6 +2901,14 @@ def _check_vcov_input(vcov: Union[str, dict[str, str]], data: pd.DataFrame): "vcov string must be iid, hetero, HC1, HC2, HC3, NW, or DK, or for quantile regression, 'nid'." ) + # check that time_id is provided if vcov is NW or DK + if ( + vcov in {"NW", "DK"} + and vcov_kwargs is not None + and "time_id" not in vcov_kwargs + ): + raise ValueError("Missing required 'time_id' for NW/DK vcov") + def _deparse_vcov_input(vcov: Union[str, dict[str, str]], has_fixef: bool, is_iv: bool): """ diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 930f377f6..b79829217 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -111,20 +111,16 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None lag: int, optional The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). """ - # Determine whether data is time ordered or not - if not provided, data is assumed to be time ordered - if time_arr is None: - ordered_scores = scores - else: - order = np.argsort(time_arr) - ordered_scores = scores[order] + order = np.argsort(time_arr) + ordered_scores = scores[order] time_periods, k = ordered_scores.shape # resolve lag if lag is None: - # these are the fixest default lag for HAC - # see https://lrberge.github.io/fixest/reference/vcov_hac.html - lag = int(np.floor(time_periods ** (1 / 4))) + raise ValueError( + "We still have not implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`." + ) # bartlett kernel weights weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) diff --git a/tests/test_errors.py b/tests/test_errors.py index f1f3b59cd..7f1c168b4 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -982,3 +982,23 @@ def test_errors_hac(): vcov="NW", vcov_kwargs={"time_id": "time", "panel_id": "panel", "lag": 3}, ) + + # Error 3: time_id is not provided if vcov is NW or DK + with pytest.raises( + ValueError, match="time_id must be provided if vcov is NW or DK" + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"lag": 3}, + ) + + # Error 4: lag is not provided if vcov is NW or DK + with pytest.raises(ValueError, match="lag must be provided if vcov is NW or DK"): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"time_id": "time"}, + ) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 7a24fd551..4c8f2f833 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -91,11 +91,10 @@ def check_relative_diff(x1, x2, tol, msg=None): @pytest.mark.parametrize( "vcov_kwargs", [ - # {}, # default lag, assume sorting - # {"lag":7}, - # {"time_id": "time"}, {"lag": 2, "time_id": "time"}, - {"lag": 5, "time_id": "time"}, + {"lag": 2, "time_id": "time"}, + {"lag": 8, "time_id": "time"}, + {"lag": 8, "time_id": "time"}, ], ) @pytest.mark.parametrize("weights", [None, "weights"]) @@ -139,31 +138,16 @@ def test_single_fit_feols_hac( weights=weights, ssc=ssc_, ) - if weights is not None: - r_fixest = fixest.feols( - ro.Formula(r_fml), - vcov=fixest.vcov_NW( - **{ - **({} if lag is None else {"lag": lag}), - **({} if time_id is None else {"time": time_id}), - } - ), - data=data_r, - ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), - weights=ro.Formula("~" + weights), - ) - else: - r_fixest = fixest.feols( - ro.Formula(r_fml), - vcov=fixest.vcov_NW( - **{ - **({} if lag is None else {"lag": lag}), - **({} if time_id is None else {"time": time_id}), - } - ), - data=data_r, - ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), - ) + + r_fixest = fixest.feols( + ro.Formula(r_fml), + vcov=fixest.vcov_NW( + **({"time": time_id} | ({"lag": lag} if lag is not None else {})) + ), + data=data_r, + ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), + ) # r_fixest to global r env, needed for # operations as in dof.K From b3b37f3cd5a3176ffe163c0913b045f4339f4ad3 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 6 Sep 2025 16:59:19 +0200 Subject: [PATCH 19/43] panel HAC first PR --- pixi.lock | 2 +- pyfixest/estimation/estimation.py | 4 +- pyfixest/estimation/feols_.py | 15 +++- pyfixest/estimation/vcov_utils.py | 63 +++++++++++++++ pyproject.toml | 18 ++--- tests/test_errors.py | 30 +++++--- tests/test_hac_vs_fixest.py | 122 +++++++++++++++++------------- 7 files changed, 174 insertions(+), 80 deletions(-) diff --git a/pixi.lock b/pixi.lock index 39ae7a5ef..421ebcd59 100644 --- a/pixi.lock +++ b/pixi.lock @@ -10595,7 +10595,7 @@ packages: - pypi: . name: pyfixest version: 0.30.2 - sha256: 4ba7dab876cf9b3f4bb02842a867bd8f9ae619ee1777376d3b149eca6a7ec6e4 + sha256: 57b986f90bf9020a9b311706dc2f86eb6f77180167043fcb8e100fb422c55077 requires_dist: - scipy>=1.6,<1.16 - formulaic>=1.1.0 diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 48a8eff8b..4685a3b25 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -1429,7 +1429,7 @@ def _estimation_input_checks( ) if vcov_kwargs["time_id"] not in data.columns: raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'time_id' if explicitly provided." + f"The variable '{vcov_kwargs['time_id']}' is not in the data." ) if "panel_id" in vcov_kwargs: @@ -1439,7 +1439,7 @@ def _estimation_input_checks( ) if vcov_kwargs["panel_id"] not in data.columns: raise ValueError( - "The function argument `vcov_kwargs` must be a dictionary with string values for 'panel_id' if explicitly provided." + f"The variable '{vcov_kwargs['panel_id']}' is not in the data." ) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index a54210e4c..d63110cea 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -45,6 +45,7 @@ _count_G_for_ssc_correction, _get_cluster_df, _nw_meat, + _nw_meat_panel, _prepare_twoway_clustering, ) from pyfixest.utils.dev_utils import ( @@ -877,10 +878,18 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat(scores=_scores, time_arr=_time_arr, lag=_lag) + newey_west_meat = _nw_meat( + scores=_scores, + time_arr=_time_arr, + lag=_lag + ) else: - raise NotImplementedError( - "Panel-clustered Newey-West HAC standard errors are not yet implemented" + newey_west_meat = _nw_meat_panel( + X=self._X, + u_hat=self._u_hat, + time_id=_time_arr, + panel_id=_panel_arr, + lag =_lag ) elif _vcov_type_detail == "DK": # Driscoll-Kraay diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index b79829217..336b95dae 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -143,6 +143,69 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None return meat +def _nw_meat_panel( + X: np.ndarray, u_hat: np.ndarray, time_id: np.ndarray, panel_id: np.ndarray, lag: Optional[int] = None +): + """ + Computes the panel Newey-West (HAC) covariance estimator. + + Parameters + ---------- + X : ndarray, shape (N*T, k) + Stacked regressor matrix, where each block of T rows corresponds to one panel unit. + u_hat : ndarray, shape (N*T,) + Residuals from the panel regression. + time_id : ndarray, shape (N*T,) + Time ID variable. + panel_id : ndarray, shape (N*T,) + Panel ID variable. + lag : int + Maximum lag for autocovariance. If not provided, defaults to floor(N**0.25), where + N is the number of time periods. + Returns + ------- + vcov_nw : ndarray, shape (k, k) + HAC Newey-West covariance matrix. + """ + + if lag is None: + lag = int(np.floor(len(np.unique(time_id)) ** 0.25)) + + order = np.lexsort((time_id, panel_id)) + X_sorted = X[order] + u_sorted = u_hat[order] + + N = len(np.unique(panel_id)) + T = len(np.unique(time_id)) + k = X.shape[1] + + meat_nw_panel = np.zeros((k, k)) + + for i in range(N): + gamma0 = np.zeros((k, k)) + for t in range(T): + idx = i * T + t + xi = X_sorted[idx, :] + gamma0 += np.outer(xi, xi) * u_sorted[idx] ** 2 + + gamma_l_sum = np.zeros((k, k)) + for l in range(1, lag + 1): + w = 1 - l / (lag + 1) + gamma_l = np.zeros((k, k)) + for t in range(l, T): + idx1 = i * T + t + idx2 = i * T + t - l + xi1 = X_sorted[idx1, :] * u_sorted[idx1] + xi2 = X_sorted[idx2, :] * u_sorted[idx2] + gamma_l += np.outer(xi1, xi2) + gamma_l_sum += w * (gamma_l + gamma_l.T) + + meat_nw_panel += gamma0 + gamma_l_sum + + return meat_nw_panel + + + def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] cluster_two = clustervar[1] diff --git a/pyproject.toml b/pyproject.toml index 4bf1602f4..c474696f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -109,15 +109,15 @@ jax = { features = ["jax"], solve-group = "default" } plots = { features = ["plots"], solve-group = "default" } [tool.pixi.feature.dev.tasks] -tests = "pytest -rs -n 4 --cov-report=term tests" -tests-against-r-core = "pytest -rs tests -n 4 -m \"against_r_core\" --cov=pyfixest --cov-report=xml" -tests-against-r-extended = "pytest -rs tests -n 4 -m \"against_r_extended\" --cov=pyfixest --cov-report=xml" -tests-regular = "pytest tests -n 4 -m \"not (extended or against_r_core or against_r_extended or plots)\" --cov=pyfixest --cov-report=xml" -tests-extended = "pytest tests -n 4 -m \"extended\" --cov=pyfixest --cov-report=xml" -tests-fixest = "pytest -rs tests/test_vs_fixest.py -n 4 --cov=pyfixest --cov-report=xml" -tests-plots-dev = "pixi run --environment dev pytest tests/test_plots.py -n 4" -tests-plots = "pixi run --environment plots pytest tests/test_plots.py -n 4" -tests-rerun = "pytest --lf -n 4" +tests = "pytest -rs -n 6 --cov-report=term tests" +tests-against-r-core = "pytest -rs tests -n 6 -m \"against_r_core\" --cov=pyfixest --cov-report=xml" +tests-against-r-extended = "pytest -rs tests -n 6 -m \"against_r_extended\" --cov=pyfixest --cov-report=xml" +tests-regular = "pytest tests -n 6 -m \"not (extended or against_r_core or against_r_extended or plots)\" --cov=pyfixest --cov-report=xml" +tests-extended = "pytest tests -n 6 -m \"extended\" --cov=pyfixest --cov-report=xml" +tests-fixest = "pytest -rs tests/test_vs_fixest.py -n 6 --cov=pyfixest --cov-report=xml" +tests-plots-dev = "pixi run --environment dev pytest tests/test_plots.py -n 6" +tests-plots = "pixi run --environment plots pytest tests/test_plots.py -n 6" +tests-rerun = "pytest --lf -n 6" debug = "python pyfixest/debug.py" update-test-data = "Rscript tests/r_test_comparisons.R" install-r-extended = "Rscript r_test_requirements.R" diff --git a/tests/test_errors.py b/tests/test_errors.py index 7f1c168b4..48fac7160 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -971,34 +971,40 @@ def test_errors_hac(): "Y ~ X1", data=data, vcov="DK", vcov_kwargs={"time_id": "time", "lag": 3} ) - # Error 2: Panel-clustered Newey-West HAC not implemented + # Error 3: time_id is not provided if vcov is NW or DK with pytest.raises( - NotImplementedError, - match="Panel-clustered Newey-West HAC standard errors are not yet implemented", + ValueError, match="Missing required 'time_id' for NW/DK vcov" ): pf.feols( "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"time_id": "time", "panel_id": "panel", "lag": 3}, + vcov_kwargs={"lag": 3}, ) - # Error 3: time_id is not provided if vcov is NW or DK - with pytest.raises( - ValueError, match="time_id must be provided if vcov is NW or DK" - ): + # Error 4: lag is not provided if vcov is NW or DK + with pytest.raises(ValueError, match="We still have not implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`."): pf.feols( "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"lag": 3}, + vcov_kwargs={"time_id": "time"}, ) - # Error 4: lag is not provided if vcov is NW or DK - with pytest.raises(ValueError, match="lag must be provided if vcov is NW or DK"): + # Error 5: time_id column does not exist in data + with pytest.raises(ValueError, match="The variable 'nonexistent_column' is not in the data."): pf.feols( "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"time_id": "time"}, + vcov_kwargs={"time_id": "nonexistent_column", "panel_id": "panel", "lag": 5}, + ) + + # Error 6: panel_id column does not exist in data + with pytest.raises(ValueError, match="The variable 'nonexistent_column' is not in the data."): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"panel_id": "nonexistent_column", "time_id": "time", "lag": 5}, ) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 4c8f2f833..d41851008 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -1,4 +1,5 @@ import numpy as np +import pandas as pd import pytest import rpy2.robjects as ro from rpy2.robjects import pandas2ri @@ -8,7 +9,8 @@ import pyfixest as pf from pyfixest.utils.utils import ssc -from tests.test_vs_fixest import _c_to_as_factor, get_data_r +from pyfixest.utils.dgps import get_sharkfin + pandas2ri.activate() @@ -24,26 +26,44 @@ atol = 1e-08 ols_fmls = [ - ("Y~X1"), - ("Y~X1+X2"), - ("Y~X1|f2"), - ("Y~X1|f2+f3"), + ("Y~treat"), + ("Y~treat + unit"), + ("Y~treat | unit"), + ("Y~treat | unit + year"), ] @pytest.fixture(scope="module") -def data_feols(N=1000, seed=76540251, beta_type="2", error_type="2"): - data = pf.get_data( - N=N, seed=seed, beta_type=beta_type, error_type=error_type, model="Feols" - ) +def data_panel(N=100,T=15,seed=42): + np.random.seed(seed) + units=np.repeat(np.arange(N),T) + time=np.tile(np.arange(T),N) + treated_units=np.random.choice(N,size=N//2,replace=False) + treat=np.zeros(N*T,dtype=int) + midpoint=T//2 + treat[(np.isin(units,treated_units))&(time>=midpoint)]=1 + ever_treated=np.isin(units,treated_units).astype(int) + alpha=np.random.normal(0,1,N) + gamma=np.random.normal(0,0.5,T) + epsilon=np.random.normal(0,0.5,N*T) + Y=alpha[units]+gamma[time]+treat+epsilon + weights=np.random.uniform(0,1,N*T) + return pd.DataFrame({"unit":units,"year":time,"treat":treat, "ever_treated":ever_treated,"Y":Y,"weights":weights}) - data["time"] = np.arange(data.shape[0]) +@pytest.fixture(scope="module") +def data_time(): + + N = 200 + rng = np.random.default_rng(9291) + data = pd.DataFrame({ + "unit": rng.normal(0, 1, N), + "year": np.arange(N), + "treat": rng.choice([0, 1], N), + "weights": rng.uniform(0, 1, N), + }) + data["Y"] = data["unit"] - data["year"] + 0.5 *data["treat"] + rng.normal(0, 1, N) return data - -rng = np.random.default_rng(875) - - def check_absolute_diff(x1, x2, tol, msg=None): "Check for absolute differences." if isinstance(x1, (int, float)): @@ -72,11 +92,6 @@ def check_relative_diff(x1, x2, tol, msg=None): msg = "" if msg is None else msg assert np.all(np.abs(x1 - x2) / np.abs(x1) < tol), msg - -test_counter_feols = 0 -test_counter_fepois = 0 -test_counter_feiv = 0 - ALL_F3 = ["str", "object", "int", "categorical", "float"] SINGLE_F3 = ALL_F3[0] BACKEND_F3 = [ @@ -91,44 +106,54 @@ def check_relative_diff(x1, x2, tol, msg=None): @pytest.mark.parametrize( "vcov_kwargs", [ - {"lag": 2, "time_id": "time"}, - {"lag": 2, "time_id": "time"}, - {"lag": 8, "time_id": "time"}, - {"lag": 8, "time_id": "time"}, + {"lag": 2, "time_id": "year"}, + {"lag": 8, "time_id": "year"}, + # now add panel id + {"lag": 2, "time_id": "year", "panel_id": "unit"}, + {"lag": 8, "time_id": "year", "panel_id": "unit"}, + # lag not required when panel_id is provided + {"time_id": "year", "panel_id": "unit"}, ], ) @pytest.mark.parametrize("weights", [None, "weights"]) @pytest.mark.parametrize("fml", ols_fmls) -def test_single_fit_feols_hac( - data_feols, +def test_single_fit_feols_hac_panel( + data_panel, + data_time, dropna, inference, vcov_kwargs, weights, fml, ): - global test_counter_feols - test_counter_feols += 1 - adj = True - cluster_adj = True + adj = False + cluster_adj = False ssc_ = ssc(adj=adj, cluster_adj=cluster_adj) lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) - # panel_id = vcov_kwargs.get("panel_id", None) - - data = data_feols.copy() + panel_id = vcov_kwargs.get("panel_id", None) + data = data_panel if panel_id is not None else data_time - if dropna: - data = data.dropna() + if "|" in fml and panel_id is None: + pytest.skip("Don't run fixed effect test when data is not a panel.") - # long story, but categories need to be strings to be converted to R factors, - # this then produces 'nan' values in the pd.DataFrame ... - data[data == "nan"] = np.nan + r_panel_kwars = ( + ({"time": time_id} if time_id is not None else {}) | + ({"lag": lag} if lag is not None else {}) | + ({"unit": panel_id} if panel_id is not None else {}) + ) - data_r = get_data_r(fml, data) - r_fml = _c_to_as_factor(fml) + r_fixest = fixest.feols( + ro.Formula(fml), + vcov=fixest.vcov_NW( + **r_panel_kwars + ), + data=data, + ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), + ) mod = pf.feols( fml=fml, @@ -139,15 +164,6 @@ def test_single_fit_feols_hac( ssc=ssc_, ) - r_fixest = fixest.feols( - ro.Formula(r_fml), - vcov=fixest.vcov_NW( - **({"time": time_id} | ({"lag": lag} if lag is not None else {})) - ), - data=data_r, - ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), - **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), - ) # r_fixest to global r env, needed for # operations as in dof.K @@ -158,14 +174,14 @@ def test_single_fit_feols_hac( check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") - -def test_vcov_updating(data_feols): - fit_hetero = pf.feols("Y ~ X1", data=data_feols, vcov="hetero") +@pytest.mark.against_r_core +def test_vcov_updating(data_panel): + fit_hetero = pf.feols("Y ~ treat", data=data_panel, vcov="hetero") fit_nw = pf.feols( - "Y ~ X1", data=data_feols, vcov="NW", vcov_kwargs={"time_id": "time", "lag": 7} + "Y ~ treat", data=data_panel, vcov="NW", vcov_kwargs={"time_id": "year", "lag": 7} ) - fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "time"}) + fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year"}) assert fit_hetero._vcov_type == "HAC" assert fit_hetero._vcov_type_detail == "NW" From e4022665ae2f3ffe20ce548c6ec0ef502f18cd72 Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Sat, 6 Sep 2025 11:13:52 -0400 Subject: [PATCH 20/43] added balance function --- pyfixest/utils/utils.py | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/pyfixest/utils/utils.py b/pyfixest/utils/utils.py index 7777c70a0..2285efbf7 100644 --- a/pyfixest/utils/utils.py +++ b/pyfixest/utils/utils.py @@ -393,3 +393,32 @@ def capture_context(context: Union[int, Mapping[str, Any]]) -> Mapping[str, Any] procedure like: `.get_model_matrix(..., context=)`. """ return _capture_context(context + 2) if isinstance(context, int) else context + +def _check_balanced(panel_arr: np.ndarray, time_arr: np.ndarray) -> bool: + """ + Check if the panel data is balanced. + + Parameters + ---------- + panel_arr: np.ndarray + The panel variable for clustering. + time_arr: np.ndarray + The time variable for clustering. + + Returns + ------- + bool + True if the panel data is balanced, False otherwise. + """ + unique_panels = np.unique(panel_arr) + unique_times = np.unique(time_arr) + expected_time_count = len(unique_times) + + for panel_id in unique_panels: + mask = panel_arr == panel_id + panel_times = np.unique(time_arr[mask]) + + if len(panel_times) != expected_time_count: + return False + + return True \ No newline at end of file From 7d312a488b3d0d381703122551348af7129b9c60 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 6 Sep 2025 18:23:12 +0200 Subject: [PATCH 21/43] allow for non-balances panel and non-consecutive data --- pyfixest/estimation/vcov_utils.py | 67 ++++++++++++++++------- tests/test_hac_vs_fixest.py | 88 ++++++++++++++++++++----------- 2 files changed, 105 insertions(+), 50 deletions(-) diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 336b95dae..2d5fb8fde 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -1,4 +1,4 @@ -from typing import Optional, Union +from typing import Optional, Tuple, Union import numba as nb import numpy as np @@ -143,8 +143,39 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None return meat +def _get_panel_idx( + panel_id: np.ndarray, time_id: np.ndarray +) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: + """ + Get indices for each unit. I.e. the first value ("starts") and how many + observations ("counts") each unit has. + + Parameters + ---------- + panel_id : ndarray, shape (N*T,) + Panel ID variable. + time_id : ndarray, shape (N*T,) + Time ID variable. + + Returns + ------- + order : indices that sort by (panel, time) + units : unique panel ids in sorted order + starts : start index of each unit slice in the sorted arrays + counts : length of each unit slice + """ + order = np.lexsort((time_id, panel_id)) # sort by panel, then time + p_sorted = panel_id[order] + units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) + return order, units, starts, counts + + def _nw_meat_panel( - X: np.ndarray, u_hat: np.ndarray, time_id: np.ndarray, panel_id: np.ndarray, lag: Optional[int] = None + X: np.ndarray, + u_hat: np.ndarray, + time_id: np.ndarray, + panel_id: np.ndarray, + lag: Optional[int] = None, ): """ Computes the panel Newey-West (HAC) covariance estimator. @@ -162,41 +193,42 @@ def _nw_meat_panel( lag : int Maximum lag for autocovariance. If not provided, defaults to floor(N**0.25), where N is the number of time periods. + Returns ------- vcov_nw : ndarray, shape (k, k) HAC Newey-West covariance matrix. """ - if lag is None: lag = int(np.floor(len(np.unique(time_id)) ** 0.25)) - order = np.lexsort((time_id, panel_id)) + # order the data by (panel, time) + order, units, starts, counts = _get_panel_idx(panel_id, time_id) + X_sorted = X[order] u_sorted = u_hat[order] - N = len(np.unique(panel_id)) - T = len(np.unique(time_id)) k = X.shape[1] meat_nw_panel = np.zeros((k, k)) - for i in range(N): + for start, count in zip(starts, counts): + end = start + count gamma0 = np.zeros((k, k)) - for t in range(T): - idx = i * T + t - xi = X_sorted[idx, :] - gamma0 += np.outer(xi, xi) * u_sorted[idx] ** 2 + for t in range(start, end): + xi = X_sorted[t, :] + gamma0 += np.outer(xi, xi) * u_sorted[t] ** 2 gamma_l_sum = np.zeros((k, k)) - for l in range(1, lag + 1): + Lmax = min(lag, count - 1) + for l in range(1, Lmax + 1): w = 1 - l / (lag + 1) gamma_l = np.zeros((k, k)) - for t in range(l, T): - idx1 = i * T + t - idx2 = i * T + t - l - xi1 = X_sorted[idx1, :] * u_sorted[idx1] - xi2 = X_sorted[idx2, :] * u_sorted[idx2] + for t in range(l, count): + curr_t = start + t + prev_t = start + t - l + xi1 = X_sorted[curr_t, :] * u_sorted[curr_t] + xi2 = X_sorted[prev_t, :] * u_sorted[prev_t] gamma_l += np.outer(xi1, xi2) gamma_l_sum += w * (gamma_l + gamma_l.T) @@ -205,7 +237,6 @@ def _nw_meat_panel( return meat_nw_panel - def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] cluster_two = clustervar[1] diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index d41851008..a6164baf2 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -9,8 +9,6 @@ import pyfixest as pf from pyfixest.utils.utils import ssc -from pyfixest.utils.dgps import get_sharkfin - pandas2ri.activate() @@ -34,36 +32,48 @@ @pytest.fixture(scope="module") -def data_panel(N=100,T=15,seed=42): +def data_panel(N=100, T=15, seed=42): np.random.seed(seed) - units=np.repeat(np.arange(N),T) - time=np.tile(np.arange(T),N) - treated_units=np.random.choice(N,size=N//2,replace=False) - treat=np.zeros(N*T,dtype=int) - midpoint=T//2 - treat[(np.isin(units,treated_units))&(time>=midpoint)]=1 - ever_treated=np.isin(units,treated_units).astype(int) - alpha=np.random.normal(0,1,N) - gamma=np.random.normal(0,0.5,T) - epsilon=np.random.normal(0,0.5,N*T) - Y=alpha[units]+gamma[time]+treat+epsilon - weights=np.random.uniform(0,1,N*T) - return pd.DataFrame({"unit":units,"year":time,"treat":treat, "ever_treated":ever_treated,"Y":Y,"weights":weights}) + units = np.repeat(np.arange(N), T) + time = np.tile(np.arange(T), N) + treated_units = np.random.choice(N, size=N // 2, replace=False) + treat = np.zeros(N * T, dtype=int) + midpoint = T // 2 + treat[(np.isin(units, treated_units)) & (time >= midpoint)] = 1 + ever_treated = np.isin(units, treated_units).astype(int) + alpha = np.random.normal(0, 1, N) + gamma = np.random.normal(0, 0.5, T) + epsilon = np.random.normal(0, 0.5, N * T) + Y = alpha[units] + gamma[time] + treat + epsilon + weights = np.random.uniform(0, 1, N * T) + return pd.DataFrame( + { + "unit": units, + "year": time, + "treat": treat, + "ever_treated": ever_treated, + "Y": Y, + "weights": weights, + } + ) + @pytest.fixture(scope="module") def data_time(): - N = 200 rng = np.random.default_rng(9291) - data = pd.DataFrame({ - "unit": rng.normal(0, 1, N), - "year": np.arange(N), - "treat": rng.choice([0, 1], N), - "weights": rng.uniform(0, 1, N), - }) - data["Y"] = data["unit"] - data["year"] + 0.5 *data["treat"] + rng.normal(0, 1, N) + data = pd.DataFrame( + { + "unit": rng.normal(0, 1, N), + "year": np.arange(N), + "treat": rng.choice([0, 1], N), + "weights": rng.uniform(0, 1, N), + } + ) + data["Y"] = data["unit"] - data["year"] + 0.5 * data["treat"] + rng.normal(0, 1, N) return data + def check_absolute_diff(x1, x2, tol, msg=None): "Check for absolute differences." if isinstance(x1, (int, float)): @@ -92,6 +102,7 @@ def check_relative_diff(x1, x2, tol, msg=None): msg = "" if msg is None else msg assert np.all(np.abs(x1 - x2) / np.abs(x1) < tol), msg + ALL_F3 = ["str", "object", "int", "categorical", "float"] SINGLE_F3 = ALL_F3[0] BACKEND_F3 = [ @@ -115,6 +126,7 @@ def check_relative_diff(x1, x2, tol, msg=None): {"time_id": "year", "panel_id": "unit"}, ], ) +@pytest.mark.parametrize("balanced", ["yes", "no-consecutive", "no-non-consecutive"]) @pytest.mark.parametrize("weights", [None, "weights"]) @pytest.mark.parametrize("fml", ols_fmls) def test_single_fit_feols_hac_panel( @@ -125,7 +137,12 @@ def test_single_fit_feols_hac_panel( vcov_kwargs, weights, fml, + balanced, ): + if balanced == "non-non-consecutive": + pytest.skip( + "Non-non-consecutive balanced panels are not supported yet and therefore not tested." + ) adj = False cluster_adj = False @@ -136,20 +153,24 @@ def test_single_fit_feols_hac_panel( panel_id = vcov_kwargs.get("panel_id", None) data = data_panel if panel_id is not None else data_time + if balanced in ["no-consecutive", "no-non-consecutive"] and panel_id is None: + # drop some units to make data non-balanced + rng = np.random.default_rng(42) + idx_to_drop = rng.choice([True, False], size=len(data), replace=True) + data = data[idx_to_drop] + if "|" in fml and panel_id is None: pytest.skip("Don't run fixed effect test when data is not a panel.") r_panel_kwars = ( - ({"time": time_id} if time_id is not None else {}) | - ({"lag": lag} if lag is not None else {}) | - ({"unit": panel_id} if panel_id is not None else {}) + ({"time": time_id} if time_id is not None else {}) + | ({"lag": lag} if lag is not None else {}) + | ({"unit": panel_id} if panel_id is not None else {}) ) r_fixest = fixest.feols( ro.Formula(fml), - vcov=fixest.vcov_NW( - **r_panel_kwars - ), + vcov=fixest.vcov_NW(**r_panel_kwars), data=data, ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), @@ -164,7 +185,6 @@ def test_single_fit_feols_hac_panel( ssc=ssc_, ) - # r_fixest to global r env, needed for # operations as in dof.K ro.globalenv["r_fixest"] = r_fixest @@ -174,11 +194,15 @@ def test_single_fit_feols_hac_panel( check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") + @pytest.mark.against_r_core def test_vcov_updating(data_panel): fit_hetero = pf.feols("Y ~ treat", data=data_panel, vcov="hetero") fit_nw = pf.feols( - "Y ~ treat", data=data_panel, vcov="NW", vcov_kwargs={"time_id": "year", "lag": 7} + "Y ~ treat", + data=data_panel, + vcov="NW", + vcov_kwargs={"time_id": "year", "lag": 7}, ) fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year"}) From a5241ad7a54209a6a19fc64ced57012574b5a073 Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Sun, 7 Sep 2025 01:42:37 -0400 Subject: [PATCH 22/43] _dk_meat added. documentation and tests are pending --- pyfixest/estimation/feols_.py | 4 +- pyfixest/estimation/vcov_utils.py | 75 +++++++++++++++++++++++++------ 2 files changed, 64 insertions(+), 15 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index d63110cea..31c5177ec 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -887,8 +887,8 @@ def _vcov_hac(self): newey_west_meat = _nw_meat_panel( X=self._X, u_hat=self._u_hat, - time_id=_time_arr, - panel_id=_panel_arr, + time_arr=_time_arr, + panel_arr=_panel_arr, lag =_lag ) elif _vcov_type_detail == "DK": diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 2d5fb8fde..acbd57b5a 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -109,7 +109,7 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None time_arr: np.ndarray, optional The time variable for clustering. lag: int, optional - The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). + The number of lag for the HAC estimator. """ order = np.argsort(time_arr) ordered_scores = scores[order] @@ -144,7 +144,7 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None def _get_panel_idx( - panel_id: np.ndarray, time_id: np.ndarray + panel_arr: np.ndarray, time_arr: np.ndarray ) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ Get indices for each unit. I.e. the first value ("starts") and how many @@ -152,9 +152,9 @@ def _get_panel_idx( Parameters ---------- - panel_id : ndarray, shape (N*T,) + panel_arr : ndarray, shape (N*T,) Panel ID variable. - time_id : ndarray, shape (N*T,) + time_arr : ndarray, shape (N*T,) Time ID variable. Returns @@ -164,7 +164,7 @@ def _get_panel_idx( starts : start index of each unit slice in the sorted arrays counts : length of each unit slice """ - order = np.lexsort((time_id, panel_id)) # sort by panel, then time + order = np.lexsort((time_arr, panel_arr)) # sort by panel, then time p_sorted = panel_id[order] units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) return order, units, starts, counts @@ -173,8 +173,8 @@ def _get_panel_idx( def _nw_meat_panel( X: np.ndarray, u_hat: np.ndarray, - time_id: np.ndarray, - panel_id: np.ndarray, + time_arr: np.ndarray, + panel_arr: np.ndarray, lag: Optional[int] = None, ): """ @@ -186,10 +186,10 @@ def _nw_meat_panel( Stacked regressor matrix, where each block of T rows corresponds to one panel unit. u_hat : ndarray, shape (N*T,) Residuals from the panel regression. - time_id : ndarray, shape (N*T,) - Time ID variable. - panel_id : ndarray, shape (N*T,) - Panel ID variable. + time_arr : ndarray, shape (N*T,) + The time variable for clustering. + panel_arr : ndarray, shape (N*T,) + The panel variable for clustering. lag : int Maximum lag for autocovariance. If not provided, defaults to floor(N**0.25), where N is the number of time periods. @@ -200,10 +200,10 @@ def _nw_meat_panel( HAC Newey-West covariance matrix. """ if lag is None: - lag = int(np.floor(len(np.unique(time_id)) ** 0.25)) + lag = int(np.floor(len(np.unique(time_arr)) ** 0.25)) # order the data by (panel, time) - order, units, starts, counts = _get_panel_idx(panel_id, time_id) + order, units, starts, counts = _get_panel_idx(panel_arr, time_arr) X_sorted = X[order] u_sorted = u_hat[order] @@ -236,6 +236,55 @@ def _nw_meat_panel( return meat_nw_panel +@nb.njit(parallel=False) +def _dk_meat( + scores: np.ndarray, + time_arr: np.ndarray, + lag: Optional[int] = None, +) + """ Compute Driscoll-Kraay HAC meat matrix. + + Parameters + ---------- + scores: np.ndarray + The scores matrix. + time_arr: np.ndarray, optional + The time variable for clustering. Assume that there are no duplicate time periods. + lag: int, optional + The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). + """ + order = np.argsort(time_arr) + ordered_scores = scores[order] + + time_periods, k = ordered_scores.shape + time_scores = np.zeros((time_periods, k)) + + for t in range(time_periods): + time_scores[t,:] += ordered_scores[t,:] + + # Set lag if not provided + if lag is None: + lag = int(np.floor(T ** 0.25)) + + # bartlett kernel weights + weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) + weights[0] = 0.5 # Halve first weight + + meat = np.zeros((k, k)) + + for lag_value in range(lag + 1): + weight = weights[lag_value] + gamma_lag = np.zeros((k, k)) + + for t in range(lag_value, time_periods): + gamma_lag += np.outer( + time_scores[t, :], time_scores[t - lag_value, :] + ) + + meat += weight * (gamma_lag + gamma_lag.T) + + return meat + def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): cluster_one = clustervar[0] From 4b66649af72d0becab7567219edb5b880a0d72f0 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 7 Sep 2025 13:23:12 +0200 Subject: [PATCH 23/43] fix indentation error & njit & linter & mypy --- pyfixest/estimation/feols_.py | 25 +++++++++------- pyfixest/estimation/vcov_utils.py | 50 +++++++++++++++---------------- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 31c5177ec..9dcd5f2ce 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -44,6 +44,7 @@ _compute_bread, _count_G_for_ssc_correction, _get_cluster_df, + _get_panel_idx, _nw_meat, _nw_meat_panel, _prepare_twoway_clustering, @@ -878,19 +879,23 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat( - scores=_scores, - time_arr=_time_arr, - lag=_lag - ) + newey_west_meat = _nw_meat(scores=_scores, time_arr=_time_arr, lag=_lag) else: + # order the data by (panel, time) + order, _, starts, counts = _get_panel_idx( + panel_arr=_panel_arr, time_arr=_time_arr + ) + newey_west_meat = _nw_meat_panel( - X=self._X, - u_hat=self._u_hat, - time_arr=_time_arr, - panel_arr=_panel_arr, - lag =_lag + X=self._X[order], + u_hat=self._u_hat[order], + time_arr=_time_arr[order], + panel_arr=_panel_arr[order], + starts=starts, + counts=counts, + lag=_lag, ) + elif _vcov_type_detail == "DK": # Driscoll-Kraay raise NotImplementedError( diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index acbd57b5a..dacecd3da 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -1,4 +1,4 @@ -from typing import Optional, Tuple, Union +from typing import Optional, Union import numba as nb import numpy as np @@ -145,7 +145,7 @@ def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None def _get_panel_idx( panel_arr: np.ndarray, time_arr: np.ndarray -) -> Tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: +) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ Get indices for each unit. I.e. the first value ("starts") and how many observations ("counts") each unit has. @@ -165,20 +165,23 @@ def _get_panel_idx( counts : length of each unit slice """ order = np.lexsort((time_arr, panel_arr)) # sort by panel, then time - p_sorted = panel_id[order] + p_sorted = panel_arr[order] units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) return order, units, starts, counts +@nb.njit(parallel=False) def _nw_meat_panel( X: np.ndarray, u_hat: np.ndarray, time_arr: np.ndarray, panel_arr: np.ndarray, + starts: np.ndarray, + counts: np.ndarray, lag: Optional[int] = None, ): """ - Computes the panel Newey-West (HAC) covariance estimator. + Compute the panel Newey-West (HAC) covariance estimator. Parameters ---------- @@ -190,6 +193,10 @@ def _nw_meat_panel( The time variable for clustering. panel_arr : ndarray, shape (N*T,) The panel variable for clustering. + starts : np.ndarray + The start index of each unit slice in the sorted arrays. + counts : np.ndarray + The length of each unit slice. lag : int Maximum lag for autocovariance. If not provided, defaults to floor(N**0.25), where N is the number of time periods. @@ -202,12 +209,6 @@ def _nw_meat_panel( if lag is None: lag = int(np.floor(len(np.unique(time_arr)) ** 0.25)) - # order the data by (panel, time) - order, units, starts, counts = _get_panel_idx(panel_arr, time_arr) - - X_sorted = X[order] - u_sorted = u_hat[order] - k = X.shape[1] meat_nw_panel = np.zeros((k, k)) @@ -216,19 +217,19 @@ def _nw_meat_panel( end = start + count gamma0 = np.zeros((k, k)) for t in range(start, end): - xi = X_sorted[t, :] - gamma0 += np.outer(xi, xi) * u_sorted[t] ** 2 + xi = X[t, :] + gamma0 += np.outer(xi, xi) * u_hat[t] ** 2 gamma_l_sum = np.zeros((k, k)) Lmax = min(lag, count - 1) - for l in range(1, Lmax + 1): - w = 1 - l / (lag + 1) + for lag_value in range(1, Lmax + 1): + w = 1 - lag_value / (lag + 1) gamma_l = np.zeros((k, k)) - for t in range(l, count): + for t in range(lag_value, count): curr_t = start + t - prev_t = start + t - l - xi1 = X_sorted[curr_t, :] * u_sorted[curr_t] - xi2 = X_sorted[prev_t, :] * u_sorted[prev_t] + prev_t = start + t - lag_value + xi1 = X[curr_t, :] * u_hat[curr_t] + xi2 = X[prev_t, :] * u_hat[prev_t] gamma_l += np.outer(xi1, xi2) gamma_l_sum += w * (gamma_l + gamma_l.T) @@ -236,13 +237,14 @@ def _nw_meat_panel( return meat_nw_panel + @nb.njit(parallel=False) def _dk_meat( scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None, -) - """ Compute Driscoll-Kraay HAC meat matrix. +): + """Compute Driscoll-Kraay HAC meat matrix. Parameters ---------- @@ -260,11 +262,11 @@ def _dk_meat( time_scores = np.zeros((time_periods, k)) for t in range(time_periods): - time_scores[t,:] += ordered_scores[t,:] + time_scores[t, :] += ordered_scores[t, :] # Set lag if not provided if lag is None: - lag = int(np.floor(T ** 0.25)) + lag = int(np.floor(time_periods**0.25)) # bartlett kernel weights weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) @@ -277,9 +279,7 @@ def _dk_meat( gamma_lag = np.zeros((k, k)) for t in range(lag_value, time_periods): - gamma_lag += np.outer( - time_scores[t, :], time_scores[t - lag_value, :] - ) + gamma_lag += np.outer(time_scores[t, :], time_scores[t - lag_value, :]) meat += weight * (gamma_lag + gamma_lag.T) From 4df27e107ebd33b50ee8a08a32e855a0324f680a Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 7 Sep 2025 13:49:27 +0200 Subject: [PATCH 24/43] prepare tests for non-consecutive implementation --- tests/test_hac_vs_fixest.py | 79 +++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 20 deletions(-) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index a6164baf2..1169d7752 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -32,20 +32,20 @@ @pytest.fixture(scope="module") -def data_panel(N=100, T=15, seed=42): - np.random.seed(seed) +def data_panel(N=1000, T=30, seed=421): + rng = np.random.default_rng(seed) units = np.repeat(np.arange(N), T) time = np.tile(np.arange(T), N) - treated_units = np.random.choice(N, size=N // 2, replace=False) + treated_units = rng.choice(N, size=N // 2, replace=False) treat = np.zeros(N * T, dtype=int) midpoint = T // 2 treat[(np.isin(units, treated_units)) & (time >= midpoint)] = 1 ever_treated = np.isin(units, treated_units).astype(int) - alpha = np.random.normal(0, 1, N) + alpha = rng.normal(0, 1, N) gamma = np.random.normal(0, 0.5, T) - epsilon = np.random.normal(0, 0.5, N * T) + epsilon = rng.normal(0, 5, N * T) Y = alpha[units] + gamma[time] + treat + epsilon - weights = np.random.uniform(0, 1, N * T) + weights = rng.uniform(0, 1, N * T) return pd.DataFrame( { "unit": units, @@ -112,7 +112,13 @@ def check_relative_diff(x1, x2, tol, msg=None): @pytest.mark.against_r_core -@pytest.mark.parametrize("dropna", [False, True]) +@pytest.mark.parametrize( + "dropna", + [ + False, + # True + ], +) @pytest.mark.parametrize("inference", ["NW"]) @pytest.mark.parametrize( "vcov_kwargs", @@ -126,8 +132,22 @@ def check_relative_diff(x1, x2, tol, msg=None): {"time_id": "year", "panel_id": "unit"}, ], ) -@pytest.mark.parametrize("balanced", ["yes", "no-consecutive", "no-non-consecutive"]) -@pytest.mark.parametrize("weights", [None, "weights"]) +@pytest.mark.parametrize( + "balanced", + [ + "balanced-consecutive", + "balanced-non-consecutive", + "non-balanced-consecutive", + "non-balanced-non-consecutive", + ], +) +@pytest.mark.parametrize( + "weights", + [ + None, + # "weights" + ], +) @pytest.mark.parametrize("fml", ols_fmls) def test_single_fit_feols_hac_panel( data_panel, @@ -139,11 +159,6 @@ def test_single_fit_feols_hac_panel( fml, balanced, ): - if balanced == "non-non-consecutive": - pytest.skip( - "Non-non-consecutive balanced panels are not supported yet and therefore not tested." - ) - adj = False cluster_adj = False ssc_ = ssc(adj=adj, cluster_adj=cluster_adj) @@ -152,12 +167,34 @@ def test_single_fit_feols_hac_panel( time_id = vcov_kwargs.get("time_id", None) panel_id = vcov_kwargs.get("panel_id", None) data = data_panel if panel_id is not None else data_time - - if balanced in ["no-consecutive", "no-non-consecutive"] and panel_id is None: - # drop some units to make data non-balanced - rng = np.random.default_rng(42) - idx_to_drop = rng.choice([True, False], size=len(data), replace=True) - data = data[idx_to_drop] + # panel_time_step = None + + if panel_id is None and balanced != "balanced-consecutive": + pytest.skip("Don't test for non-balancedness when no panel data.") + + if panel_id is not None: + # pick the subset of units to alter for the non-balanced cases + first_25 = np.unique(data["unit"])[:25] + cc = data.groupby("unit").cumcount() + + if balanced == "balanced-non-consecutive": + # drop an interior row (e.g., the 2nd observation, cc==1) for EVERY unit + # => all units lose exactly one row (balanced), and there is a gap (non-consecutive) + data = data[cc != 1].reset_index(drop=True) + # panel_time_step = "unitary" + elif balanced == "non-balanced-consecutive": + # drop the *first* row (cc==0) but only for the first 25 units + # => those units have T-1 rows (non-balanced), still consecutive (start at the 2nd period) + mask = ~(data["unit"].isin(first_25) & (cc == 0)) + data = data[mask].reset_index(drop=True) + elif balanced == "non-balanced-non-consecutive": + # drop an interior row (e.g., the 3rd observation, cc==2) but only for the first 25 units + # => those units have a gap (non-consecutive) and fewer rows (non-balanced) + mask = ~(data["unit"].isin(first_25) & (cc == 2)) + data = data[mask].reset_index(drop=True) + # panel_time_step = "unitary" + else: + pass if "|" in fml and panel_id is None: pytest.skip("Don't run fixed effect test when data is not a panel.") @@ -174,6 +211,8 @@ def test_single_fit_feols_hac_panel( data=data, ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), + # use once fixest 0.13 is released and we can support non-consecutive time + # **({"panel_time_step": panel_time_step} if panel_time_step is not None else {}) ) mod = pf.feols( From a62d8abbf26190c0ad7b8e2b53746e41ced48b16 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 7 Sep 2025 16:38:44 +0200 Subject: [PATCH 25/43] good speed ups of time series hac --- pyfixest/estimation/feols_.py | 6 ++-- pyfixest/estimation/vcov_utils.py | 57 ++++++++++++++++--------------- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 9dcd5f2ce..15385e3aa 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -45,8 +45,8 @@ _count_G_for_ssc_correction, _get_cluster_df, _get_panel_idx, - _nw_meat, _nw_meat_panel, + _nw_meat_time, _prepare_twoway_clustering, ) from pyfixest.utils.dev_utils import ( @@ -879,7 +879,9 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat(scores=_scores, time_arr=_time_arr, lag=_lag) + newey_west_meat = _nw_meat_time( + scores=_scores, time_arr=_time_arr, lag=_lag + ) else: # order the data by (panel, time) order, _, starts, counts = _get_panel_idx( diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index dacecd3da..ad26b6e93 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -98,48 +98,49 @@ def _get_vcov_type( @nb.njit(parallel=False) -def _nw_meat(scores: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None): - """ - Compute Newey-West HAC meat matrix. - - Parameters - ---------- - scores: np.ndarray - The scores matrix. - time_arr: np.ndarray, optional - The time variable for clustering. - lag: int, optional - The number of lag for the HAC estimator. - """ - order = np.argsort(time_arr) - ordered_scores = scores[order] +def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): + if time_arr is None: + ordered_scores = scores + else: + order = np.argsort(time_arr) + ordered_scores = scores[order] time_periods, k = ordered_scores.shape - # resolve lag - if lag is None: - raise ValueError( - "We still have not implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`." - ) - - # bartlett kernel weights - weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) + # resolve lags + # if lag is None: + # these are the fixest default lags for HAC + # see https://lrberge.github.io/fixest/reference/vcov_hac.html + # lag = int(np.floor(time_periods ** (1 / 4))) + + # Pre-compute bartlett kernel weights more efficiently + weights = np.empty(lag + 1) + lag_plus_one = lag + 1 + for j in range(lag + 1): + weights[j] = 1.0 - j / lag_plus_one weights[0] = 0.5 # Halve first weight + # Pre-allocate arrays to avoid repeated memory allocation meat = np.zeros((k, k)) + gamma_lag = np.zeros((k, k)) # this implementation follows the same that fixest does in R for lag_value in range(lag + 1): weight = weights[lag_value] - gamma_lag = np.zeros((k, k)) + gamma_lag.fill(0.0) for t in range(lag_value, time_periods): - gamma_lag += np.outer( - ordered_scores[t, :], ordered_scores[t - lag_value, :] - ) + scores_t = ordered_scores[t, :] + scores_t_lag = ordered_scores[t - lag_value, :] - meat += weight * (gamma_lag + gamma_lag.T) + for i in range(k): + scores_t_i = scores_t[i] + for j in range(k): + gamma_lag[i, j] += scores_t_i * scores_t_lag[j] + for i in range(k): + for j in range(k): + meat[i, j] += weight * (gamma_lag[i, j] + gamma_lag[j, i]) return meat From 707909a5924fdb81c475409285d6283ca0e52683 Mon Sep 17 00:00:00 2001 From: Daman Dhaliwal Date: Mon, 16 Jun 2025 20:33:14 -0700 Subject: [PATCH 26/43] fixed everything and added fixef_maxiter everywhere --- pyfixest/estimation/feols_.py | 18 ++++---- pyfixest/estimation/vcov_utils.py | 68 +++++++++++++++++++++++-------- tests/test_hac_vs_fixest.py | 14 +++++-- 3 files changed, 71 insertions(+), 29 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 15385e3aa..357891fec 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -45,8 +45,10 @@ _count_G_for_ssc_correction, _get_cluster_df, _get_panel_idx, + _get_scores_time, _nw_meat_panel, _nw_meat_time, + _dk_meat_panel, _prepare_twoway_clustering, ) from pyfixest.utils.dev_utils import ( @@ -879,7 +881,7 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - newey_west_meat = _nw_meat_time( + hac_meat = _nw_meat_time( scores=_scores, time_arr=_time_arr, lag=_lag ) else: @@ -888,7 +890,7 @@ def _vcov_hac(self): panel_arr=_panel_arr, time_arr=_time_arr ) - newey_west_meat = _nw_meat_panel( + hac_meat = _nw_meat_panel( X=self._X[order], u_hat=self._u_hat[order], time_arr=_time_arr[order], @@ -900,16 +902,16 @@ def _vcov_hac(self): elif _vcov_type_detail == "DK": # Driscoll-Kraay - raise NotImplementedError( - "Driscoll-Kraay HAC standard errors are not yet implemented" + + scores_time = _get_scores_time(scores = _scores, time_arr = _time_arr) + hac_meat = _dk_meat_panel( + scores_time=scores_time, time_arr=_time_arr, lag=_lag ) - else: - raise ValueError(f"Unknown HAC type: {_vcov_type_detail}") _meat = ( - _tXZ @ _tZZinv @ newey_west_meat @ _tZZinv @ _tZX + _tXZ @ _tZZinv @ hac_meat @ _tZZinv @ _tZX if _is_iv - else newey_west_meat + else hac_meat ) _vcov = _bread @ _meat @ _bread diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index ad26b6e93..22ba84953 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -239,9 +239,33 @@ def _nw_meat_panel( return meat_nw_panel +def _get_scores_time(scores: np.ndarray, time_arr: np.ndarray) -> np.ndarray: + """ + + Get the time-aggregated scores needed for Driscoll-Kraay HAC. + + Parameters + ---------- + scores: np.ndarray + The scores matrix. + time_arr: np.ndarray + The time variable. + + Returns + ------- + scores_time: np.ndarray + The time-aggregated scores. + """ + order = np.argsort(time_arr) + t = time_arr[order] + S = scores[order] + idx = np.unique(t, return_index=True)[1] + scores_time = np.add.reduceat(S, idx, axis=0) + return scores_time + @nb.njit(parallel=False) -def _dk_meat( - scores: np.ndarray, +def _dk_meat_panel( + scores_time: np.ndarray, time_arr: np.ndarray, lag: Optional[int] = None, ): @@ -249,40 +273,48 @@ def _dk_meat( Parameters ---------- - scores: np.ndarray - The scores matrix. + scores_time: np.ndarray + The time-aggregated scores. time_arr: np.ndarray, optional The time variable for clustering. Assume that there are no duplicate time periods. lag: int, optional The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). """ - order = np.argsort(time_arr) - ordered_scores = scores[order] - - time_periods, k = ordered_scores.shape - time_scores = np.zeros((time_periods, k)) - - for t in range(time_periods): - time_scores[t, :] += ordered_scores[t, :] # Set lag if not provided if lag is None: - lag = int(np.floor(time_periods**0.25)) + lag = int(np.floor(np.unique(time_arr).shape[0]**0.25)) + + time_periods, k = scores_time.shape - # bartlett kernel weights - weights = np.array([1 - j / (lag + 1) for j in range(lag + 1)]) + # Pre-compute bartlett kernel weights more efficiently + weights = np.empty(lag + 1) + lag_plus_one = lag + 1 + for j in range(lag + 1): + weights[j] = 1.0 - j / lag_plus_one weights[0] = 0.5 # Halve first weight meat = np.zeros((k, k)) + gamma_lag = np.zeros((k,k)) + # note: just the same as for time series HAC + # only difference is computation on time scores for lag_value in range(lag + 1): weight = weights[lag_value] - gamma_lag = np.zeros((k, k)) + gamma_lag.fill(0.0) for t in range(lag_value, time_periods): - gamma_lag += np.outer(time_scores[t, :], time_scores[t - lag_value, :]) + scores_t = scores_time[t, :] + scores_t_lag = scores_time[t - lag_value, :] - meat += weight * (gamma_lag + gamma_lag.T) + for i in range(k): + scores_t_i = scores_t[i] + for j in range(k): + gamma_lag[i, j] += scores_t_i * scores_t_lag[j] + + for i in range(k): + for j in range(k): + meat[i, j] += weight * (gamma_lag[i, j] + gamma_lag[j, i]) return meat diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 1169d7752..7a10cc092 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -119,7 +119,10 @@ def check_relative_diff(x1, x2, tol, msg=None): # True ], ) -@pytest.mark.parametrize("inference", ["NW"]) +@pytest.mark.parametrize("inference", [ + "NW", + "DK" +]) @pytest.mark.parametrize( "vcov_kwargs", [ @@ -172,6 +175,9 @@ def test_single_fit_feols_hac_panel( if panel_id is None and balanced != "balanced-consecutive": pytest.skip("Don't test for non-balancedness when no panel data.") + if panel_id is None and inference == "DK": + pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + if panel_id is not None: # pick the subset of units to alter for the non-balanced cases first_25 = np.unique(data["unit"])[:25] @@ -202,12 +208,14 @@ def test_single_fit_feols_hac_panel( r_panel_kwars = ( ({"time": time_id} if time_id is not None else {}) | ({"lag": lag} if lag is not None else {}) - | ({"unit": panel_id} if panel_id is not None else {}) ) + if inference == "NW": + r_panel_kwars |= ({"unit": panel_id} if panel_id is not None else {}) + r_fixest = fixest.feols( ro.Formula(fml), - vcov=fixest.vcov_NW(**r_panel_kwars), + vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), From e23ce560e3cc8b695cbaa6d00e06c708c9c80d84 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 7 Sep 2025 23:05:46 +0200 Subject: [PATCH 27/43] more numba for DK --- pyfixest/estimation/feols_.py | 24 ++++++++--------- pyfixest/estimation/vcov_utils.py | 44 ++++++++++--------------------- 2 files changed, 26 insertions(+), 42 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 357891fec..709b7a009 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -43,12 +43,11 @@ _check_cluster_df, _compute_bread, _count_G_for_ssc_correction, + _dk_meat_panel, _get_cluster_df, _get_panel_idx, - _get_scores_time, _nw_meat_panel, _nw_meat_time, - _dk_meat_panel, _prepare_twoway_clustering, ) from pyfixest.utils.dev_utils import ( @@ -881,9 +880,7 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: - hac_meat = _nw_meat_time( - scores=_scores, time_arr=_time_arr, lag=_lag - ) + hac_meat = _nw_meat_time(scores=_scores, time_arr=_time_arr, lag=_lag) else: # order the data by (panel, time) order, _, starts, counts = _get_panel_idx( @@ -903,16 +900,19 @@ def _vcov_hac(self): elif _vcov_type_detail == "DK": # Driscoll-Kraay - scores_time = _get_scores_time(scores = _scores, time_arr = _time_arr) + order = np.argsort(_time_arr) + time_arr_sorted = _time_arr[order] + scores_sorted = _scores[order] + + idx = np.unique(time_arr_sorted, return_index=True)[1] + + # idx = np.unique(t, return_index=True)[1] + hac_meat = _dk_meat_panel( - scores_time=scores_time, time_arr=_time_arr, lag=_lag + scores=scores_sorted, time_arr=time_arr_sorted, idx=idx, lag=_lag ) - _meat = ( - _tXZ @ _tZZinv @ hac_meat @ _tZZinv @ _tZX - if _is_iv - else hac_meat - ) + _meat = _tXZ @ _tZZinv @ hac_meat @ _tZZinv @ _tZX if _is_iv else hac_meat _vcov = _bread @ _meat @ _bread return _vcov diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 22ba84953..700fae373 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -239,51 +239,35 @@ def _nw_meat_panel( return meat_nw_panel -def _get_scores_time(scores: np.ndarray, time_arr: np.ndarray) -> np.ndarray: - """ - - Get the time-aggregated scores needed for Driscoll-Kraay HAC. - - Parameters - ---------- - scores: np.ndarray - The scores matrix. - time_arr: np.ndarray - The time variable. - - Returns - ------- - scores_time: np.ndarray - The time-aggregated scores. - """ - order = np.argsort(time_arr) - t = time_arr[order] - S = scores[order] - idx = np.unique(t, return_index=True)[1] - scores_time = np.add.reduceat(S, idx, axis=0) - return scores_time - @nb.njit(parallel=False) def _dk_meat_panel( - scores_time: np.ndarray, + scores: np.ndarray, time_arr: np.ndarray, + idx: np.ndarray, lag: Optional[int] = None, ): """Compute Driscoll-Kraay HAC meat matrix. Parameters ---------- - scores_time: np.ndarray - The time-aggregated scores. + scores: np.ndarray + The time-aggregated scores. Is assumed to be sorted by time. time_arr: np.ndarray, optional The time variable for clustering. Assume that there are no duplicate time periods. + Is assumed to be sorted by time. + idx: np.ndarray, optional + The indices of the unique time periods. lag: int, optional The number of lag for the HAC estimator. Defaults to floor (# of time periods)^(1/4). """ - # Set lag if not provided if lag is None: - lag = int(np.floor(np.unique(time_arr).shape[0]**0.25)) + lag = int(np.floor(np.unique(time_arr).shape[0] ** 0.25)) + + scores_time = np.zeros((len(idx), scores.shape[1])) + for t in range(len(idx) - 1): + scores_time[t, :] = scores[idx[t] : idx[t + 1], :].sum(axis=0) + scores_time[-1, :] = scores[idx[-1] :, :].sum(axis=0) time_periods, k = scores_time.shape @@ -295,7 +279,7 @@ def _dk_meat_panel( weights[0] = 0.5 # Halve first weight meat = np.zeros((k, k)) - gamma_lag = np.zeros((k,k)) + gamma_lag = np.zeros((k, k)) # note: just the same as for time series HAC # only difference is computation on time scores From 1186af4210fe27cbc4c6308952fc35cf6baab2ad Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Mon, 8 Sep 2025 23:04:42 +0200 Subject: [PATCH 28/43] code reorg + check for unique time and panel --- pyfixest/estimation/feols_.py | 35 +++++--- pyfixest/estimation/vcov_utils.py | 137 +++++++++++++++++------------- tests/test_errors.py | 79 ++++++++++++----- 3 files changed, 158 insertions(+), 93 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 709b7a009..c666b7617 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -880,18 +880,26 @@ def _vcov_hac(self): if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: + if _lag is None: + raise ValueError( + "We have not yet implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`." + ) + if len(np.unique(_time_arr)) != len(_time_arr): + raise ValueError( + "There are duplicate time periods in the data. This is not supported for HAC SEs." + ) hac_meat = _nw_meat_time(scores=_scores, time_arr=_time_arr, lag=_lag) else: # order the data by (panel, time) - order, _, starts, counts = _get_panel_idx( - panel_arr=_panel_arr, time_arr=_time_arr + order, _, starts, counts, panel_arr_sorted, time_arr_sorted = ( + _get_panel_idx(panel_arr=_panel_arr, time_arr=_time_arr) ) hac_meat = _nw_meat_panel( X=self._X[order], u_hat=self._u_hat[order], - time_arr=_time_arr[order], - panel_arr=_panel_arr[order], + time_arr=time_arr_sorted, + panel_arr=panel_arr_sorted, starts=starts, counts=counts, lag=_lag, @@ -900,16 +908,19 @@ def _vcov_hac(self): elif _vcov_type_detail == "DK": # Driscoll-Kraay - order = np.argsort(_time_arr) - time_arr_sorted = _time_arr[order] + order, _, starts, counts, time_arr_sorted, panel_arr_sorted = ( + _get_panel_idx( + # hack: sort first by time, than panel + # we need the data sorted by time, but sort by + # panel too to check for duplicate time periods + # per panel + panel_arr=_time_arr, + time_arr=_panel_arr, + ) + ) scores_sorted = _scores[order] - - idx = np.unique(time_arr_sorted, return_index=True)[1] - - # idx = np.unique(t, return_index=True)[1] - hac_meat = _dk_meat_panel( - scores=scores_sorted, time_arr=time_arr_sorted, idx=idx, lag=_lag + scores=scores_sorted, time_arr=time_arr_sorted, idx=starts, lag=_lag ) _meat = _tXZ @ _tZZinv @ hac_meat @ _tZZinv @ _tZX if _is_iv else hac_meat diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 700fae373..89375b81b 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -98,40 +98,41 @@ def _get_vcov_type( @nb.njit(parallel=False) -def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): - if time_arr is None: - ordered_scores = scores - else: - order = np.argsort(time_arr) - ordered_scores = scores[order] - - time_periods, k = ordered_scores.shape - - # resolve lags - # if lag is None: - # these are the fixest default lags for HAC - # see https://lrberge.github.io/fixest/reference/vcov_hac.html - # lag = int(np.floor(time_periods ** (1 / 4))) +def _hac_meat_loop( + scores: np.ndarray, weights: np.ndarray, time_periods: int, k: int, lag: int +): + """ + Compute the HAC meat matrix. Used for both time series and DK HAC. - # Pre-compute bartlett kernel weights more efficiently - weights = np.empty(lag + 1) - lag_plus_one = lag + 1 - for j in range(lag + 1): - weights[j] = 1.0 - j / lag_plus_one - weights[0] = 0.5 # Halve first weight + Parameters + ---------- + scores: np.ndarray + The scores matrix. + weights: np.ndarray + The weights matrix. + time_periods: int + The number of time periods. + k: int + The number of regressors. + lag: int + The number of lag for the HAC estimator. - # Pre-allocate arrays to avoid repeated memory allocation + Returns + ------- + meat: np.ndarray + The HAC meat matrix. + """ meat = np.zeros((k, k)) gamma_lag = np.zeros((k, k)) - # this implementation follows the same that fixest does in R + # note: just the same as for time series HAC + # only difference is computation on time scores for lag_value in range(lag + 1): weight = weights[lag_value] - gamma_lag.fill(0.0) for t in range(lag_value, time_periods): - scores_t = ordered_scores[t, :] - scores_t_lag = ordered_scores[t - lag_value, :] + scores_t = scores[t, :] + scores_t_lag = scores[t - lag_value, :] for i in range(k): scores_t_i = scores_t[i] @@ -141,12 +142,41 @@ def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): for i in range(k): for j in range(k): meat[i, j] += weight * (gamma_lag[i, j] + gamma_lag[j, i]) + return meat +@nb.njit(parallel=False) +def _get_bartlett_weights(lag: int): + # Pre-compute bartlett kernel weights more efficiently + weights = np.empty(lag + 1) + lag_plus_one = lag + 1 + for j in range(lag + 1): + weights[j] = 1.0 - j / lag_plus_one + weights[0] = 0.5 # Halve first weight + + return weights + + +@nb.njit(parallel=False) +def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): + if time_arr is None: + ordered_scores = scores + else: + order = np.argsort(time_arr) + ordered_scores = scores[order] + + time_periods, k = ordered_scores.shape + weights = _get_bartlett_weights(lag=lag) + + return _hac_meat_loop( + scores=ordered_scores, weights=weights, time_periods=time_periods, k=k, lag=lag + ) + + def _get_panel_idx( panel_arr: np.ndarray, time_arr: np.ndarray -) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray]: +) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ Get indices for each unit. I.e. the first value ("starts") and how many observations ("counts") each unit has. @@ -164,11 +194,20 @@ def _get_panel_idx( units : unique panel ids in sorted order starts : start index of each unit slice in the sorted arrays counts : length of each unit slice + panel_arr_sorted : panel variable in sorted order + time_arr_sorted : time variable in sorted order """ order = np.lexsort((time_arr, panel_arr)) # sort by panel, then time p_sorted = panel_arr[order] units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) - return order, units, starts, counts + panel_arr_sorted = panel_arr[order] + time_arr_sorted = time_arr[order] + duplicate_mask = (np.diff(panel_arr_sorted) == 0) & (np.diff(time_arr_sorted) == 0) + if np.any(duplicate_mask): + raise ValueError( + "There are duplicate time periods for the same panel id. This is not supported for HAC SEs." + ) + return order, units, starts, counts, panel_arr_sorted, time_arr_sorted @nb.njit(parallel=False) @@ -210,9 +249,13 @@ def _nw_meat_panel( if lag is None: lag = int(np.floor(len(np.unique(time_arr)) ** 0.25)) + weights = _get_bartlett_weights(lag=lag) + k = X.shape[1] meat_nw_panel = np.zeros((k, k)) + gamma_l = np.zeros((k, k)) + gamma_l_sum = np.zeros((k, k)) for start, count in zip(starts, counts): end = start + count @@ -221,18 +264,17 @@ def _nw_meat_panel( xi = X[t, :] gamma0 += np.outer(xi, xi) * u_hat[t] ** 2 - gamma_l_sum = np.zeros((k, k)) + gamma_l_sum.fill(0.0) Lmax = min(lag, count - 1) for lag_value in range(1, Lmax + 1): - w = 1 - lag_value / (lag + 1) - gamma_l = np.zeros((k, k)) + gamma_l.fill(0.0) for t in range(lag_value, count): curr_t = start + t prev_t = start + t - lag_value xi1 = X[curr_t, :] * u_hat[curr_t] xi2 = X[prev_t, :] * u_hat[prev_t] gamma_l += np.outer(xi1, xi2) - gamma_l_sum += w * (gamma_l + gamma_l.T) + gamma_l_sum += weights[lag_value] * (gamma_l + gamma_l.T) meat_nw_panel += gamma0 + gamma_l_sum @@ -271,36 +313,11 @@ def _dk_meat_panel( time_periods, k = scores_time.shape - # Pre-compute bartlett kernel weights more efficiently - weights = np.empty(lag + 1) - lag_plus_one = lag + 1 - for j in range(lag + 1): - weights[j] = 1.0 - j / lag_plus_one - weights[0] = 0.5 # Halve first weight - - meat = np.zeros((k, k)) - gamma_lag = np.zeros((k, k)) - - # note: just the same as for time series HAC - # only difference is computation on time scores - for lag_value in range(lag + 1): - weight = weights[lag_value] - - gamma_lag.fill(0.0) - for t in range(lag_value, time_periods): - scores_t = scores_time[t, :] - scores_t_lag = scores_time[t - lag_value, :] - - for i in range(k): - scores_t_i = scores_t[i] - for j in range(k): - gamma_lag[i, j] += scores_t_i * scores_t_lag[j] - - for i in range(k): - for j in range(k): - meat[i, j] += weight * (gamma_lag[i, j] + gamma_lag[j, i]) + weights = _get_bartlett_weights(lag=lag) - return meat + return _hac_meat_loop( + scores=scores_time, weights=weights, time_periods=time_periods, k=k, lag=lag + ) def _prepare_twoway_clustering(clustervar: list, cluster_df: pd.DataFrame): diff --git a/tests/test_errors.py b/tests/test_errors.py index 48fac7160..3e477a860 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -957,24 +957,21 @@ def test_errors_vcov_kwargs(): def test_errors_hac(): """Test all error conditions for HAC (Heteroskedasticity and Autocorrelation Consistent) standard errors.""" - data = pf.get_data() - # Add a time variable for testing - data["time"] = np.arange(len(data)) - data["panel"] = np.repeat(np.arange(len(data) // 10), 10)[: len(data)] - - # Error 1: Driscoll-Kraay HAC not implemented - with pytest.raises( - NotImplementedError, - match="Driscoll-Kraay HAC standard errors are not yet implemented", - ): - pf.feols( - "Y ~ X1", data=data, vcov="DK", vcov_kwargs={"time_id": "time", "lag": 3} - ) + rng = np.random.default_rng(123) + N = 100 + T = 10 + n_panels = N // T + data = pd.DataFrame( + { + "time": np.tile(np.arange(T), n_panels), + "panel": np.repeat(np.arange(n_panels), T), + "Y": rng.normal(0, 1, N), + "X1": rng.normal(0, 1, N), + } + ) # Error 3: time_id is not provided if vcov is NW or DK - with pytest.raises( - ValueError, match="Missing required 'time_id' for NW/DK vcov" - ): + with pytest.raises(ValueError, match="Missing required 'time_id' for NW/DK vcov"): pf.feols( "Y ~ X1", data=data, @@ -983,28 +980,68 @@ def test_errors_hac(): ) # Error 4: lag is not provided if vcov is NW or DK - with pytest.raises(ValueError, match="We still have not implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`."): + with pytest.raises( + ValueError, + match="We have not yet implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`.", + ): pf.feols( "Y ~ X1", - data=data, + data=data[data.panel == 0], vcov="NW", vcov_kwargs={"time_id": "time"}, ) # Error 5: time_id column does not exist in data - with pytest.raises(ValueError, match="The variable 'nonexistent_column' is not in the data."): + with pytest.raises( + ValueError, match="The variable 'nonexistent_column' is not in the data." + ): pf.feols( "Y ~ X1", data=data, vcov="NW", - vcov_kwargs={"time_id": "nonexistent_column", "panel_id": "panel", "lag": 5}, + vcov_kwargs={ + "time_id": "nonexistent_column", + "panel_id": "panel", + "lag": 5, + }, ) # Error 6: panel_id column does not exist in data - with pytest.raises(ValueError, match="The variable 'nonexistent_column' is not in the data."): + with pytest.raises( + ValueError, match="The variable 'nonexistent_column' is not in the data." + ): pf.feols( "Y ~ X1", data=data, vcov="NW", vcov_kwargs={"panel_id": "nonexistent_column", "time_id": "time", "lag": 5}, ) + + # Error 7: duplicate time periods in data + data["time2"] = data["time"] + data["time2"][0] = data["time2"][1] + with pytest.raises( + ValueError, + match="There are duplicate time periods in the data. This is not supported for HAC SEs.", + ): + pf.feols( + "Y ~ X1", + data=data, + vcov="NW", + vcov_kwargs={"time_id": "time2", "lag": 5}, + ) + + # Error 8: duplicate time periods for the same panel id + data["time3"] = data["time"] + data["time3"][0] = data["time3"][1] + for vcov in ["NW", "DK"]: + with pytest.raises( + ValueError, + match="There are duplicate time periods for the same panel id. This is not supported for HAC SEs.", + ): + pf.feols( + "Y ~ X1", + data=data, + vcov=vcov, + vcov_kwargs={"time_id": "time3", "panel_id": "panel", "lag": 5}, + ) From 5a2800567a7bab5796960d7de8bc90537a3d2659 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Fri, 17 Oct 2025 22:29:57 +0200 Subject: [PATCH 29/43] more adjustment to new syntax --- pixi.lock | 6303 +++++++++++++++++------------------ tests/test_hac_vs_fixest.py | 13 +- 2 files changed, 3084 insertions(+), 3232 deletions(-) diff --git a/pixi.lock b/pixi.lock index 8ab32a4e3..5cd3b2713 100644 --- a/pixi.lock +++ b/pixi.lock @@ -8,11 +8,11 @@ environments: - 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/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-hdf8817f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_2.conda @@ -22,7 +22,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/formulaic-1.2.1-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.1.0-h4393ad2_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmltools-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -33,48 +33,48 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_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/libexpat-2.7.1-hecca717_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/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.1.0-h4c094af_105.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.1.0-h97b714f_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-hb13aed2_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.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/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/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/llvmlite-0.45.1-py312h7424e68_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py312he3d6523_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.9.6-py310hf7d6592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.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/numba-0.62.1-py312h907b442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.3-py312h33ff503_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.4-h26f9b46_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -84,10 +84,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_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/readline-8.2-h8c095d6_2.conda @@ -102,7 +102,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -112,14 +112,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py312h4c3975b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hedd4973_2.conda @@ -139,38 +139,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py312hef387a8_1.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/lerc-4.0.0-hcca01a6_1.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/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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/libcxx-20.1.6-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_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/libexpat-2.7.1-h21dd04a_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/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.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/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/liblzma-5.8.1-hd471939_1.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/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_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/libzlib-1.3.1-hd23fc13_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.3-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py312h331d821_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py312h7894933_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/maturin-1.9.6-py310h765790a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.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/numba-0.62.1-py312hae945ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.3-py312ha3982b3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.4-h230baf5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda @@ -180,10 +180,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_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 @@ -197,7 +197,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.5-py312h391ab28_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -207,15 +207,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py312h2f459f6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 @@ -238,24 +238,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313hf88c9ab_1.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/lerc-4.0.0-hd64df32_1.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/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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/libcxx-20.1.6-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_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/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.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/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_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/libopenblas-0.3.30-openmp_ha158390_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda @@ -264,7 +264,7 @@ environments: - 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-21.1.3-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py313he297ed2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/maturin-1.9.6-py310h34f76f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda @@ -280,7 +280,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -297,7 +297,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.5-py313hc577518_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -305,15 +305,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py313hcdf3177_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda @@ -350,7 +350,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.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.50-h7351971_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda @@ -363,7 +363,7 @@ environments: - 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/llvm-openmp-21.1.3-hfa2b4ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py313he1ded55_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/maturin-1.9.6-py310h194dfaf_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda @@ -379,7 +379,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh145f28c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.9-hdf00ec1_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -396,19 +396,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_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 + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda default: channels: @@ -420,8 +420,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313h7037e92_2.conda @@ -440,39 +440,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py313hc8edb43_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_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/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_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/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.45.1-py313hdd307be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py313h683a580_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -486,7 +486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py313ha492abd_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.8-h2b335a9_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-h2b335a9_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -508,14 +508,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313hc551f4f_2.conda @@ -535,24 +535,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313hb91e98b_1.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/lerc-4.0.0-hcca01a6_1.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/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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/libcxx-20.1.6-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_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/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.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/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_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/libopenblas-0.3.30-openmp_h6006d49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda @@ -561,7 +561,7 @@ environments: - 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-21.1.3-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py313h590e1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py313h4ad75b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda @@ -575,7 +575,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py313hcfd0557_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.8-h2bd861f_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h2bd861f_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -597,15 +597,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py313h585f44e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 @@ -628,24 +628,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313hf88c9ab_1.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/lerc-4.0.0-hd64df32_1.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/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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/libcxx-20.1.6-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_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/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.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/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_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/libopenblas-0.3.30-openmp_ha158390_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda @@ -654,7 +654,7 @@ environments: - 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-21.1.3-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py313he297ed2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -668,7 +668,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py313he4c6d0d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -690,22 +690,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py313hcdf3177_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda @@ -716,7 +716,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda @@ -735,8 +735,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.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/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h550210a_0.conda @@ -747,33 +746,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.0-ha29bfb0_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/win-64/llvm-openmp-21.1.3-hfa2b4ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py312hdb9728c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py312h9a042f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py312ha72d056_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.4-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py313hf455b62_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312h5ee8bfe_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_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/scipy-1.15.2-py313h2eca4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py312h451d5c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py312h196c9fc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda @@ -781,14 +780,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_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 + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-16.0.0-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda dev: channels: @@ -821,20 +821,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.10.0-hebae86a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h8b27e44_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-hdf8817f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_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/bwidget-1.10.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h35888ee_0.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.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.10.7-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.11.0-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/curl-8.14.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda @@ -855,18 +855,18 @@ environments: - 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.60.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/formulaic-1.2.1-py312h7900ff3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.1.0-h4393ad2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.1.0-h3b9cdf2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h1b0a18f_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.1.0-h6a1bac1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-h54ccb8d_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.4.5-h15599e2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmltools-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -881,13 +881,13 @@ environments: - 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.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h56a6dad_8_cpu.conda @@ -895,66 +895,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h8c2c5c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-h635bf11_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h3f74fd7_8_cpu.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_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/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.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/libexpat-2.7.1-hecca717_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/libfreetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.1.0-h4c094af_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h1e535eb_0.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/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h790f06f_8_cpu.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/libprotobuf-6.31.1-h9ef548d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.08.12-h7b12aa8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.1.0-h97b714f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-hb13aed2_7.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.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.1.0-h4c094af_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-h73f6952_107.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.0-hb04c3b8_0.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/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h04c0eec_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/llvmlite-0.45.1-py312h7424e68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py312he3d6523_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_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/linux-64/maturin-1.9.6-py310hf7d6592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda @@ -964,22 +964,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlopt-2.9.0-py312h1d0b465_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.62.1-py312h907b442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.3-py312h33ff503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.4-h26f9b46_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py312hf79963d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - 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.3.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_hf108a03_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda @@ -1003,20 +1003,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.0.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-sugar-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-duckdb-1.4.1-py312h1289d80_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r43hc72bb7e_1006.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r43hb1dbf0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.3.3-h65010dc_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_31-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-car-3.1_3-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cardata-3.0_5-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-caret-6.0_94-r43hdb488b9_2.conda @@ -1026,16 +1026,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_1-r43hdb488b9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-conquer-1.3.3-r43hb424bfc_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.1.3-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.2.0-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.2-r43h785f33e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.4-r43he23165d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.1.6-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r43h1c8cec4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.2.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-diagram-1.6.5-r43ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.37-r43h0d4f4ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.6.27-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.7.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.1.4-r43h0d4f4ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_16-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r43hb1dbf0f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.6-r43hb1dbf0f_1.conda @@ -1043,8 +1043,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fixest-0.13.2-r43h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-formula-1.2_5-r43hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.49.0-r43h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.11.3-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.67.0-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.20.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.2-r43hc72bb7e_0.conda @@ -1052,7 +1052,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.8.0-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-gower-1.0.1-r43hb1dbf0f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.1-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.2-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ipred-0.9_15-r43hdb488b9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.2.7-r43ha18555a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r43hc72bb7e_3.conda @@ -1062,7 +1062,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-lava-1.8.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.9.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_37-r43h93ab643_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_37-r43h3697838_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.4-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.3-r43hb1dbf0f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_60.0.1-r43hb1dbf0f_1.conda @@ -1071,7 +1071,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-matrixstats-1.5.0-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_3-r43h2ae2be5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-microbenchmark-1.5.0-r43h2b5f3a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r43ha936806_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r43ha36cffa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-modelmetrics-1.2.2.2-r43h0d4f4ea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-modelr-0.1.11-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_1.conda @@ -1079,27 +1079,27 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nloptr-2.2.1-r43hb8c4c88_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nnet-7.3_20-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.44.0-r43h2b5f3a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.4-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.45.1-r43h54b55ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.5-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r43ha18555a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proc-1.18.5-r43ha18555a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r43h3697838_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proc-1.19.0.1-r43h3697838_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-prodlim-2025.04.28-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-progressr-0.15.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-proxy-0.4_27-r43hb1dbf0f_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.4-r43h2b5f3a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.1.0-r43h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-quantreg-6.1-r43h012206f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rbibutils-2.3-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.0.14-r43h93ab643_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-14.4.2_1-r43hc2d650c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.0-r43h93ab643_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-15.0.2_1-r43h3704496_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcppeigen-0.3.4.0.2-r43hb79369c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-recipes-1.3.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reshape2-1.4.4-r43h0d4f4ea_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-reshape2-1.4.4-r43h3697838_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.6-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rpart-4.1.24-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda @@ -1110,19 +1110,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-squarem-2021.1-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r43h3c328a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringmagic-1.2.0-r43h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_3-r43h2b5f3a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r43hdb488b9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.0-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.1-r43h0d4f4ea_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.3.0-r43ha18555a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-timedate-4041.110-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r43h93ab643_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.5-r43h2b5f3a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r43h3697838_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r43h0d4f4ea_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.8-r43h1bb2df6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.4.0-r43hc6fd541_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_14-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.08.12-h5301d42_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda @@ -1141,12 +1141,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.5-py312h4f23490_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_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_hd72426e_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8d826fa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.2-py312h4c3975b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -1154,7 +1154,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tzlocal-5.3-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h4c3975b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -1168,12 +1168,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/79/7b/bb5e24fc929513e3c310b3054d6588b1b6bbf241b5ca12f6eb3d51458981/jaxlib-0.6.1-cp312-cp312-manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/08/57/5d58fad4124192b1be42f68bd0c0ddaa26e44a730ff8c9337adade2f5632/ml_dtypes-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d5/e6/5fd0f6fff79eb47469ff9c4fa27125b661517a2fbf8884689b02e9fdfaa8/jax-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/73/b44fbe943c9e02e25c99eb64e6b86e2dde8d918d064326813b5bbe620951/jaxlib-0.7.2-cp312-cp312-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d8/a9/b98b86426c24900b0c754aad006dce2863df7ce0bb2bcc2c02f9cc7e8489/ml_dtypes-0.5.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl osx-64: @@ -1197,32 +1197,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.0-he2a98a9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.12.0-hc0a8a32_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.14.0-hb076ce7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h18ceab9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h7ab4271_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h8df8335_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.10.1-h694c41f_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/bwidget-1.10.1-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hfe8da7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20-20.1.5-default_hf9570e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20.1.5-default_h811ddef_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-20.1.5-h67cac6e_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-20.1.5-h7e5c614_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-20.1.5-default_hb2955f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-20.1.5-hc0b3369_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-20.1.5-h7e5c614_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1024.3-llvm21_1_h81d60ea_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py312hf9bc6d9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21-21.1.3-default_h9f74b92_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21.1.3-default_h1323312_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-21.1.3-h084dc57_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-21.1.3-h7e5c614_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-21.1.3-default_h1c12a56_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-21.1.3-h2770c5a_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-21.1.3-h7e5c614_25.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.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-20.1.5-h52031e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-20.1.5-hc6f8467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-21.1.3-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt21-21.1.3-he914875_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-64-21.1.3-he0f92a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hedd4973_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.10.7-py312hacf3034_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.11.0-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/curl-8.14.1-h5dec5d8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda @@ -1243,18 +1244,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.60.1-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/formulaic-1.2.1-py312hb401068_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.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/gfortran_impl_osx-64-13.4.0-h61474f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.4.0-h3223c34_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.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/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gsl-2.7-h93259b0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmltools-0.6.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/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -1270,11 +1271,12 @@ environments: - 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.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py312hef387a8_1.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_osx-64-951.9-hc68d7ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-955.13-h2eed689_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-955.13-llvm21_1_h2cc85ee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-21.0.0-h3202d62_8_cpu.conda @@ -1282,65 +1284,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-21.0.0-h7751554_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-21.0.0-h2db2d7d_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-21.0.0-h4653b8a_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.24.1-h27064b9_0.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/libasprintf-0.25.1-h3184127_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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-cpp20.1-20.1.5-default_hf9570e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp21.1-21.1.3-default_hc369343_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.14.1-h5dec5d8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-20.1.6-h7c275be_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-21.1.3-h7c275be_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_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/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libexpat-2.7.1-h21dd04a_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/libfreetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.25.1-h3184127_1.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/noarch/libgfortran-devel_osx-64-13.4.0-hbfa0f67_1.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/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-haa69d62_0.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/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/libllvm20-20.1.5-h29c3a6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_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/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm21-21.1.3-h56e7563_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-21.0.0-ha67a804_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h6e993e7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.08.12-h554ac88_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.0-h64b4c5c_0.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/libwebp-base-1.6.0-hb807250_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.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.0-ha1d9b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.0-h7b7ecba_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-21.1.3-h472b3d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20-20.1.5-he90a8e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20.1.5-h3fe3016_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21-21.1.3-h879f4bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21.1.3-hb0207f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py312h331d821_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/make-4.4.1-h00291cd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py312h7894933_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py312hacf3034_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_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/osx-64/maturin-1.9.6-py310h765790a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda @@ -1352,22 +1355,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h53ec75d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/nlopt-2.9.0-py312hb87d94a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.62.1-py312hae945ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.3-py312ha3982b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.4-h230baf5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.1-hd1b02dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py312h86abcb1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - 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.3.0-py312hd9f36e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py312h051e184_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_hf108a03_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda @@ -1391,20 +1394,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.0.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-sugar-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-duckdb-1.4.1-py312h69bf00f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r43hc72bb7e_1006.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-backports-1.5.0-r43h6b9d099_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-base-4.3.3-h9afdce2_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_31-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-car-3.1_3-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cardata-3.0_5-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-caret-6.0_94-r43h6b9d099_2.conda @@ -1414,16 +1417,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-colorspace-2.1_1-r43h6b9d099_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-conquer-1.3.3-r43h6a638e2_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.1.3-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.2.0-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.2-r43h785f33e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-data.table-1.17.4-r43h3ffa6c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.1.6-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-data.table-1.17.8-r43h6b02a07_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.2.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-diagram-1.6.5-r43ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-digest-0.6.37-r43h25d921d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.6.27-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.7.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-dplyr-1.1.4-r43h25d921d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-e1071-1.7_16-r43hc83a2cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-ellipsis-0.3.2-r43h6b9d099_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-fansi-1.0.6-r43h6b9d099_1.conda @@ -1431,16 +1434,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/r-fixest-0.13.2-r43he949a0c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-formula-1.2_5-r43hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.49.0-r43h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.11.3-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.67.0-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.20.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.2-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.18.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-glue-1.8.0-r43h199b6f9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-gower-1.0.1-r43h6b9d099_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.1-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.2-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-ipred-0.9_15-r43h6b9d099_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-isoband-0.2.7-r43h25d921d_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r43hc72bb7e_3.conda @@ -1450,7 +1452,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-lava-1.8.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.9.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-lme4-1.1_37-r43h2711daa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-lme4-1.1_35.5-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-lubridate-1.9.4-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-magrittr-2.0.3-r43h6b9d099_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-mass-7.3_60.0.1-r43h6b9d099_1.conda @@ -1467,27 +1469,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/r-nloptr-2.2.1-r43h1fbd797_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-nnet-7.3_20-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-parallelly-1.44.0-r43h79f565e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.4-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-parallelly-1.45.1-r43h63eaeb5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.5-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-plyr-1.8.9-r43h25d921d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-proc-1.18.5-r43h25d921d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-plyr-1.8.9-r43h813e631_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-proc-1.19.0.1-r43h813e631_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-prodlim-2025.04.28-r43h2711daa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-progressr-0.15.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-proxy-0.4_27-r43h6b9d099_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.0.4-r43h79f565e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.1.0-r43h63eaeb5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-quantreg-6.1-r43hfe2c0ad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rbibutils-2.3-r43h199b6f9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.0.14-r43h2711daa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpparmadillo-14.4.2_1-r43hda2d453_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.1.0-r43h2711daa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpparmadillo-15.0.2_1-r43hfa0a987_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcppeigen-0.3.4.0.2-r43haa2a3db_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-recipes-1.3.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-reshape2-1.4.4-r43h25d921d_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-reshape2-1.4.4-r43h813e631_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rlang-1.1.6-r43h2711daa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rpart-4.1.24-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda @@ -1498,19 +1497,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-squarem-2021.1-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-stringi-1.8.7-r43h586c1d5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-stringmagic-1.2.0-r43h813e631_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-survival-3.8_3-r43h79f565e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.2.1-r43h6b9d099_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.3.0-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tidyr-1.3.1-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-timechange-0.3.0-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-timedate-4041.110-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tzdb-0.5.0-r43h2711daa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.5-r43h79f565e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tzdb-0.5.0-r43h813e631_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.6-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-vctrs-0.6.5-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-xml2-1.3.8-r43hcb51277_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-zoo-1.8_14-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.08.12-h7df6414_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h7cca4af_2.conda @@ -1533,7 +1531,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda - 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-hf689a15_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-hba9d6f1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-h2c093e9_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.2-py312h2f459f6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -1541,7 +1539,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tzlocal-5.3-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-16.0.0-py312h2f459f6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -1549,12 +1547,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_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: https://files.pythonhosted.org/packages/22/49/b4418a7a892c0dd64442bbbeef54e1cdfe722dfc5a7bf0d611d3f5f90e99/jax-0.4.38-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/df/08b94c593c0867c7eaa334592807ba74495de4be90580f360db8b96221dc/jaxlib-0.4.38-cp312-cp312-macosx_10_14_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/47/56/1bb21218e1e692506c220ffabd456af9733fba7aa1b14f73899979f4cc20/ml_dtypes-0.5.1-cp312-cp312-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/0d/eb/bc07c88a6ab002b4635e44585d80fa0b350603f11a2097c9d1bfacc03357/ml_dtypes-0.5.3-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl osx-arm64: @@ -1579,33 +1577,34 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.0-h88fedcc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.12.0-hd83eed2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.14.0-he094cc7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h12fd690_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h2155cda_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-h30213e0_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bwidget-1.10.1-hce30654_0.conda - - 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/bwidget-1.10.1-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - 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/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h729f01a_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.5-default_h03658f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.5-default_hcdeef69_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-20.1.5-h198f50a_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-20.1.5-h07b0088_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.5-default_haca757a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-20.1.5-ha6cee9d_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-20.1.5-h07b0088_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1024.3-llvm21_1_haddd2d4_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312hb65edc0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21-21.1.3-default_h489deba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21.1.3-default_hf9bcbb7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-21.1.3-h3492924_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-21.1.3-h07b0088_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-21.1.3-default_h36137df_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-21.1.3-h03b555f_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-21.1.3-h07b0088_25.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.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-20.1.5-hd2aecb6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-20.1.5-h7969c41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-21.1.3-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt21-21.1.3-h855ad52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-arm64-21.1.3-h2514db7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312ha0dd364_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.10.7-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.11.0-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.14.1-h73640d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda @@ -1626,19 +1625,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.60.1-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.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/gfortran_impl_osx-arm64-13.4.0-he7ca382_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.4.0-h3c33bd0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.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/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/graphlib-backport-1.0.3-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gsl-2.7-h6e638da_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/htmltools-0.6.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/importlib-metadata-8.7.0-pyhe01879c_1.conda @@ -1654,11 +1653,12 @@ environments: - 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.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py312hdc12c9d_1.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_osx-arm64-951.9-hcfee506_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-955.13-h5d6df6c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-955.13-llvm21_1_hde6573c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-21.0.0-hd43feaf_8_cpu.conda @@ -1666,65 +1666,66 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-21.0.0-h75845d1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-21.0.0-hc317990_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-21.0.0-h144af7f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.24.1-h493aca8_0.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/libasprintf-0.25.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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-cpp20.1-20.1.5-default_h03658f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp21.1-21.1.3-default_h73dfc95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.14.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.6-h6dc3340_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-21.1.3-h6dc3340_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_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/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.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/libexpat-2.7.1-hec049ff_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/libfreetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.25.1-h493aca8_0.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/noarch/libgfortran-devel_osx-arm64-13.4.0-ha240a38_1.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/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-hcdac78c_0.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/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/libllvm20-20.1.5-h598bca7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_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/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm21-21.1.3-h8e0c9ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-21.0.0-h45c8936_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h702a38d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.08.12-h91c62da_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.0-hc25f550_0.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/libwebp-base-1.6.0-h07db88b_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.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.0-h0ff4647_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.0-h9329255_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-21.1.3-h4a912ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20-20.1.5-h87a4c7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20.1.5-hd2aecb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21-21.1.3-h91fd4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21.1.3-h855ad52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py312hc82e5dd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.4.1-hc9fafa5_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py312h605b88b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_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/osx-arm64/maturin-1.9.6-py310h34f76f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda @@ -1736,22 +1737,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlopt-2.9.0-py312hace9f44_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.62.1-py312hd24c766_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.3-py312h85ea64e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.4-h5503f6c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.1-h4fd0076_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - 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.3.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h2525f64_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_1234567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_hf108a03_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhd8ed1ab_0.conda @@ -1775,20 +1776,20 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-cov-7.0.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-sugar-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.8.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-duckdb-1.4.1-py312h455b684_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-abind-1.4_5-r43hc72bb7e_1006.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-backports-1.5.0-r43h07cda29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-base-4.3.3-h07f0ef5_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_31-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-car-3.1_3-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cardata-3.0_5-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-caret-6.0_94-r43h07cda29_2.conda @@ -1798,16 +1799,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-codetools-0.2_20-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-colorspace-2.1_1-r43h07cda29_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-conquer-1.3.3-r43h2743ada_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.1.3-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.2.0-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.2-r43h785f33e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-data.table-1.17.4-r43h28c71e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.1.6-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-data.table-1.17.8-r43h7c057e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.2.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-diagram-1.6.5-r43ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-digest-0.6.37-r43hd76f289_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.6.27-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.7.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-dplyr-1.1.4-r43hd76f289_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-e1071-1.7_16-r43hdd833ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-ellipsis-0.3.2-r43h07cda29_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-fansi-1.0.6-r43h07cda29_1.conda @@ -1815,16 +1816,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-fixest-0.13.2-r43hb601842_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-foreach-1.5.2-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-formula-1.2_5-r43hc72bb7e_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.49.0-r43h785f33e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.11.3-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.67.0-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.20.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.2-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-globals-0.18.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-glue-1.8.0-r43h0d9a900_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-gower-1.0.1-r43h07cda29_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.6-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.1-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.2-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-ipred-0.9_15-r43h07cda29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-isoband-0.2.7-r43hd76f289_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-iterators-1.0.14-r43hc72bb7e_3.conda @@ -1834,7 +1834,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-lava-1.8.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-listenv-0.9.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-lme4-1.1_37-r43h31118f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-lme4-1.1_35.5-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-lubridate-1.9.4-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-magrittr-2.0.3-r43h07cda29_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-mass-7.3_60.0.1-r43h07cda29_1.conda @@ -1851,27 +1851,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-nloptr-2.2.1-r43h0873fe7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-nnet-7.3_20-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-parallelly-1.44.0-r43h570997c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.4-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-parallelly-1.45.1-r43hb470c6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.5-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-plyr-1.8.9-r43hd76f289_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-proc-1.18.5-r43hd76f289_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-plyr-1.8.9-r43h088c9a0_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-proc-1.19.0.1-r43h088c9a0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-prodlim-2025.04.28-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-progressr-0.15.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-proxy-0.4_27-r43h07cda29_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.0.4-r43h570997c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.1.0-r43hb470c6c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-quantreg-6.1-r43h0c5c079_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rbibutils-2.3-r43h0d9a900_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.0.14-r43h31118f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.1.0-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpparmadillo-14.4.2_1-r43h9618d43_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcppeigen-0.3.4.0.2-r43h8c6f55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-rdpack-2.6.4-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-recipes-1.3.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-reformulas-0.4.1-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-reshape2-1.4.4-r43hd76f289_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-reshape2-1.4.4-r43h088c9a0_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rlang-1.1.6-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rpart-4.1.24-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda @@ -1882,19 +1879,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-squarem-2021.1-r43hc72bb7e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-stringi-1.8.7-r43h4f22b37_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-stringmagic-1.2.0-r43h088c9a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-survival-3.8_3-r43h570997c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.2.1-r43h07cda29_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.3.0-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tidyr-1.3.1-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-timechange-0.3.0-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-timedate-4041.110-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tzdb-0.5.0-r43h31118f2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.5-r43h570997c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tzdb-0.5.0-r43h088c9a0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.6-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-vctrs-0.6.5-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-xml2-1.3.8-r43h1f9de2a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-zoo-1.8_14-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.08.12-h64b956e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda @@ -1917,7 +1913,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/termcolor-3.1.0-pyhd8ed1ab_0.conda - 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-h892fb3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h1e387b8_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h3c7de25_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.2-py312h163523d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -1925,7 +1921,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tzlocal-5.3-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-16.0.0-py312h163523d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.14-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda @@ -1933,12 +1929,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_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: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/83/76/fec2772816bad8ee3f7b450bf3e0927d5e158c45a57b6cd92a48b80bfb1a/jaxlib-0.6.1-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/47/56/1bb21218e1e692506c220ffabd456af9733fba7aa1b14f73899979f4cc20/ml_dtypes-0.5.1-cp312-cp312-macosx_10_9_universal2.whl + - pypi: https://files.pythonhosted.org/packages/d5/e6/5fd0f6fff79eb47469ff9c4fa27125b661517a2fbf8884689b02e9fdfaa8/jax-0.7.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/df/82/324ffb86a6de8c149689b499b6dc6e4f83684fe43ae9e81c8e5eb91bc50f/jaxlib-0.7.2-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/0d/eb/bc07c88a6ab002b4635e44585d80fa0b350603f11a2097c9d1bfacc03357/ml_dtypes-0.5.3-cp312-cp312-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl docs: @@ -1981,22 +1977,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.2-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-hdf8817f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h1289d80_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_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/bwidget-1.10.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_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/linux-64/cairo-1.18.4-h3394656_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.10.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h35888ee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.0-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -2012,7 +2008,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/deno-2.3.1-hbf66b88_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/deno-dom-0.1.41-h4768de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/esbuild-0.25.10-hfc2019e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/esbuild-0.25.11-hfc2019e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda @@ -2026,21 +2022,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.60.1-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/formulaic-1.2.1-py312h7900ff3_1.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-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.1.0-h4393ad2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.1.0-h3b9cdf2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h1b0a18f_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/griffe-1.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.1.0-h6a1bac1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-h54ccb8d_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.4.5-h15599e2_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/htmltools-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2066,7 +2062,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -2074,13 +2070,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupytext-1.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-21.0.0-h56a6dad_8_cpu.conda @@ -2088,58 +2084,58 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h8c2c5c3_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-h635bf11_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h3f74fd7_8_cpu.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.14.1-h332b0f4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_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/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.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/libexpat-2.7.1-hecca717_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/libfreetype-2.13.3-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.1.0-h4c094af_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h1e535eb_0.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/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_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/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h790f06f_8_cpu.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/libprotobuf-6.31.1-h9ef548d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.08.12-h7b12aa8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.1.0-h97b714f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-hb13aed2_7.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.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.1.0-h4c094af_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-h73f6952_107.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.0-hb04c3b8_0.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/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.51.0-hb03c661_1.conda - - 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/libwebp-base-1.6.0-hd42ef1d_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/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.0-ha9997c6_1.conda @@ -2149,8 +2145,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/make-4.4.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py312he3d6523_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_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/linux-64/maturin-1.9.6-py310hf7d6592_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda @@ -2168,8 +2164,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/nodejs-22.19.0-heeeca48_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numba-0.62.1-py312h907b442_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.3-py312h33ff503_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.4-h26f9b46_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda @@ -2178,16 +2174,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py312hf79963d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.6.3-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - 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.3.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h7b42cdd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda @@ -2200,19 +2196,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py312h7900ff3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py312hc195796_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.3-py312h868fb18_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.4-py312h868fb18_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylatex-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_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/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda @@ -2221,12 +2217,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/quartodoc-0.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r43hb1dbf0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-base-4.3.3-h65010dc_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.5-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_1-r43hdb488b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.1.4-r43h0d4f4ea_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r43hb1dbf0f_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.6-r43hb1dbf0f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r43ha18555a_1.conda @@ -2247,22 +2243,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_168-r43hb67ce94_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.4-r43h2b5f3a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.1.0-r43h54b55ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.0.14-r43h93ab643_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.0-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.6-r43h93ab643_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.7-r43h3c328a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-stringmagic-1.2.0-r43h3697838_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r43hdb488b9_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.0-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.1-r43h0d4f4ea_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.5-r43h2b5f3a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r43h2b5f3a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r43h0d4f4ea_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda @@ -2294,12 +2290,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphobjinv-2.3.1.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.5-py312h4f23490_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8d826fa_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.2-py312h4c3975b_1.conda @@ -2312,7 +2308,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/typst-0.13.0-h53e704d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tzlocal-5.3-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h4c3975b_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.5.0-pyhd8ed1ab_0.conda @@ -2334,17 +2330,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - pypi: https://files.pythonhosted.org/packages/88/44/b8717ad2b847f04d164b018cb1b746cd6873804cc65d28d62b1cb2775e5b/causaldata-0.1.5.tar.gz - - pypi: https://files.pythonhosted.org/packages/3f/64/e72be7b84b6db0f6749a1ad1ae711909931b9f4526d7ffd5c612ef53e1bc/lets_plot-4.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/bb/8c/b8e581f8a87c8abc962b25a5c24e2a656f3f0aabd43851e8d2afb9eafb36/marginaleffects-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/21/e7/172f47bc0016f3ea247ad2671ff8d355340f6ae2d0799725a1f3d358daae/mizani-0.13.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/18/75b1d5c2c345b8ef34e0d01cc3100a7edd3f4d7d983dcde62f3ecdbc24ec/lets_plot-4.7.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ce/f6/5a1e28b5e27ee7e3b7721d25bc57496c0732883055b6ff4591763c4dbe5a/marginaleffects-0.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/50/8b/8231e2493b454e2514e56843e842321b125d1f25da06f8ab55029a94d12a/mizani-0.14.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/c5/7cfda7ba9fa02243367fbfb4880b6de8039266f22c47c2dbbd39b6adc46f/plotnine-0.14.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/76/20/e018cd87d7cb6f8684355f31f4e193222455a6e8f7b942f4a2934f5969c7/polars-1.30.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/93/304341b5b949cba71c8413722e168aa60947ea0cac55a5d8cc448ea9917a/plotnine-0.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6b/80/1791ac226bb989bef30fe8fde752b2021b6ec5dfd6e880262596aedf4c05/polars-1.34.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/ce/11ca850b7862cb43605e5d86cdf655614376e0a059871cf8305af5406554/polars_runtime_32-1.34.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl osx-64: @@ -2375,7 +2372,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.0-he2a98a9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.12.0-hc0a8a32_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.14.0-hb076ce7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h18ceab9_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h7ab4271_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h8df8335_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.2-pyhd8ed1ab_0.conda @@ -2386,30 +2383,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h462f358_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.10.1-h694c41f_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/bwidget-1.10.1-h694c41f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.5-hf13058a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_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/cairo-1.18.4-h950ec3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hfe8da7e_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1024.3-llvm21_1_h81d60ea_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.10.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py312hf9bc6d9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20-20.1.5-default_hf9570e0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20.1.5-default_h811ddef_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-20.1.5-h67cac6e_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-20.1.5-h7e5c614_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-20.1.5-default_hb2955f5_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-20.1.5-hc0b3369_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-20.1.5-h7e5c614_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21-21.1.3-default_h9f74b92_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21.1.3-default_h1323312_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-21.1.3-h084dc57_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-21.1.3-h7e5c614_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-21.1.3-default_h1c12a56_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-21.1.3-h2770c5a_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-21.1.3-h7e5c614_25.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.0-pyh707e725_0.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.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-20.1.5-h52031e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-20.1.5-hc6f8467_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-21.1.3-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt21-21.1.3-he914875_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-64-21.1.3-he0f92a2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hedd4973_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/curl-8.14.1-h5dec5d8_0.conda @@ -2420,7 +2418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/deno-2.3.1-hf23d6f5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/deno-dom-0.1.41-h51332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/esbuild-0.25.10-hccc6df8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/esbuild-0.25.11-hccc6df8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda @@ -2434,21 +2432,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.60.1-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/formulaic-1.2.1-py312hb401068_1.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-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.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/gfortran_impl_osx-64-13.4.0-h61474f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.4.0-h3223c34_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.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/graphite2-1.3.13-h73e2aa4_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/griffe-1.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gsl-2.7-h93259b0_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_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/htmltools-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2475,7 +2473,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -2487,7 +2485,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.0-pyhd8ed1ab_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_osx-64-951.9-hc68d7ca_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-955.13-h2eed689_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-955.13-llvm21_1_h2cc85ee_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-21.0.0-h3202d62_8_cpu.conda @@ -2495,67 +2494,68 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-21.0.0-h7751554_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-21.0.0-h2db2d7d_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-21.0.0-h4653b8a_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.24.1-h27064b9_0.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/libasprintf-0.25.1-h3184127_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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-cpp20.1-20.1.5-default_hf9570e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp21.1-21.1.3-default_hc369343_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.14.1-h5dec5d8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-20.1.6-h7c275be_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-21.1.3-h7c275be_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_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/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.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/libexpat-2.7.1-h21dd04a_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/libfreetype-2.13.3-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.25.1-h3184127_1.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/noarch/libgfortran-devel_osx-64-13.4.0-hbfa0f67_1.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/libglib-2.84.2-h3139dbc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-haa69d62_0.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/libintl-0.24.1-h27064b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/libllvm20-20.1.5-h29c3a6c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_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/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm21-21.1.3-h56e7563_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-21.0.0-ha67a804_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h6e993e7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.08.12-h554ac88_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.0-h64b4c5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.51.0-h58003a5_1.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/libwebp-base-1.6.0-hb807250_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.8-h93c44a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.0-ha1d9b0f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.0-h7b7ecba_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-21.1.3-h472b3d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20-20.1.5-he90a8e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20.1.5-h3fe3016_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21-21.1.3-h879f4bc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21.1.3-hb0207f0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py312h331d821_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/make-4.4.1-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py312h7894933_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py312hacf3034_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_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/osx-64/maturin-1.9.6-py310h765790a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda @@ -2575,8 +2575,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/nodejs-22.19.0-h8a401be_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numba-0.62.1-py312hae945ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.3-py312ha3982b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.5.4-h230baf5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.1-hd1b02dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda @@ -2585,16 +2585,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py312h86abcb1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandoc-3.6.3-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - 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.3.0-py312hd9f36e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py312h051e184_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda @@ -2607,21 +2607,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-21.0.0-py312hb401068_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-21.0.0-py312hefc66a4_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.3-py312h8a6388b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.4-py312h8a6388b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylatex-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-11.1-py312h3f2cce9_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-11.1-py312h1cc0658_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_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/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py312hacf3034_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda @@ -2630,12 +2630,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/quartodoc-0.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-backports-1.5.0-r43h6b9d099_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-base-4.3.3-h9afdce2_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-cli-3.6.5-r43h2711daa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-colorspace-2.1_1-r43h6b9d099_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-dplyr-1.1.4-r43h25d921d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-ellipsis-0.3.2-r43h6b9d099_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-fansi-1.0.6-r43h6b9d099_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-farver-2.1.2-r43h25d921d_1.conda @@ -2656,22 +2656,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-nlme-3.1_168-r43hb3c2f18_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.0.4-r43h79f565e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.1.0-r43h63eaeb5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.0.14-r43h2711daa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.1.0-r43h2711daa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-rlang-1.1.6-r43h2711daa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-stringi-1.8.7-r43h586c1d5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-stringmagic-1.2.0-r43h813e631_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.2.1-r43h6b9d099_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.3.0-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-tidyr-1.3.1-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.5-r43h79f565e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.6-r43h79f565e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/r-vctrs-0.6.5-r43h25d921d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda @@ -2707,7 +2707,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-hba9d6f1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-h2c093e9_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.2-py312h2f459f6_1.conda @@ -2720,7 +2720,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/typst-0.13.0-h371c88c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tzlocal-5.3-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-16.0.0-py312h2f459f6_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.5.0-pyhd8ed1ab_0.conda @@ -2736,17 +2736,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_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/zstandard-0.25.0-py312h01f6755_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/88/44/b8717ad2b847f04d164b018cb1b746cd6873804cc65d28d62b1cb2775e5b/causaldata-0.1.5.tar.gz - - pypi: https://files.pythonhosted.org/packages/a0/0a/f910551cd019df2858800607ae0e9be4fc4a9a34f99363c3bb521c8a1450/lets_plot-4.6.2-cp312-cp312-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/bb/8c/b8e581f8a87c8abc962b25a5c24e2a656f3f0aabd43851e8d2afb9eafb36/marginaleffects-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/21/e7/172f47bc0016f3ea247ad2671ff8d355340f6ae2d0799725a1f3d358daae/mizani-0.13.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/5e/7ed4bf0d02822a8177a20361d1438b033e4065d7330549532444a405af9e/lets_plot-4.7.3-cp312-cp312-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ce/f6/5a1e28b5e27ee7e3b7721d25bc57496c0732883055b6ff4591763c4dbe5a/marginaleffects-0.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/50/8b/8231e2493b454e2514e56843e842321b125d1f25da06f8ab55029a94d12a/mizani-0.14.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/c5/7cfda7ba9fa02243367fbfb4880b6de8039266f22c47c2dbbd39b6adc46f/plotnine-0.14.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/40/48/e9b2cb379abcc9f7aff2e701098fcdb9fe6d85dc4ad4cec7b35d39c70951/polars-1.30.0-cp39-abi3-macosx_10_12_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/eb/93/304341b5b949cba71c8413722e168aa60947ea0cac55a5d8cc448ea9917a/plotnine-0.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6b/80/1791ac226bb989bef30fe8fde752b2021b6ec5dfd6e880262596aedf4c05/polars-1.34.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/35/bc4f1a9dcef61845e8e4e5d2318470b002b93a3564026f0643f562761ecb/polars_runtime_32-1.34.0-cp39-abi3-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl osx-arm64: @@ -2778,7 +2779,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.0-h88fedcc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.12.0-hd83eed2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.14.0-he094cc7_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h12fd690_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h2155cda_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-h30213e0_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beartype-0.22.2-pyhd8ed1ab_0.conda @@ -2789,30 +2790,31 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h6b01ec3_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bwidget-1.10.1-hce30654_0.conda - - 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/bwidget-1.10.1-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_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/cairo-1.18.4-h6a3b0d2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h729f01a_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1024.3-llvm21_1_haddd2d4_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.10.5-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312hb65edc0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.5-default_h03658f6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.5-default_hcdeef69_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-20.1.5-h198f50a_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-20.1.5-h07b0088_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.5-default_haca757a_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-20.1.5-ha6cee9d_24.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-20.1.5-h07b0088_24.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21-21.1.3-default_h489deba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21.1.3-default_hf9bcbb7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-21.1.3-h3492924_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-21.1.3-h07b0088_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-21.1.3-default_h36137df_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-21.1.3-h03b555f_25.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-21.1.3-h07b0088_25.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.0-pyh707e725_0.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.3-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-20.1.5-hd2aecb6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-20.1.5-h7969c41_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-21.1.3-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt21-21.1.3-h855ad52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-arm64-21.1.3-h2514db7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312ha0dd364_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/curl-8.14.1-h73640d1_0.conda @@ -2823,7 +2825,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/deno-2.3.1-hfb52844_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/deno-dom-0.1.41-hde76f7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/esbuild-0.25.10-h820172f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/esbuild-0.25.11-h820172f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda @@ -2837,22 +2839,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.60.1-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/formulaic-1.1.1-pyhd8ed1ab_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-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.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/gfortran_impl_osx-arm64-13.4.0-he7ca382_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.4.0-h3c33bd0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.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/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/graphlib-backport-1.0.3-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/griffe-1.14.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gsl-2.7-h6e638da_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_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/htmltools-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda @@ -2879,7 +2881,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.25.1-he01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda @@ -2891,7 +2893,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.0-pyhd8ed1ab_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_osx-arm64-951.9-hcfee506_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-955.13-h5d6df6c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-955.13-llvm21_1_hde6573c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-21.0.0-hd43feaf_8_cpu.conda @@ -2899,66 +2902,67 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-21.0.0-h75845d1_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-21.0.0-hc317990_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-21.0.0-h144af7f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.24.1-h493aca8_0.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/libasprintf-0.25.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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-cpp20.1-20.1.5-default_h03658f6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp21.1-21.1.3-default_h73dfc95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.14.1-h73640d1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.6-h6dc3340_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-21.1.3-h6dc3340_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_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/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.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/libexpat-2.7.1-hec049ff_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/libfreetype-2.13.3-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.25.1-h493aca8_0.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/noarch/libgfortran-devel_osx-arm64-13.4.0-ha240a38_1.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/libglib-2.84.2-hbec27ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-hcdac78c_0.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/libintl-0.24.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/libllvm20-20.1.5-h598bca7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_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/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm21-21.1.3-h8e0c9ce_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-21.0.0-h45c8936_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h702a38d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.08.12-h91c62da_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.0-hc25f550_0.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/libwebp-base-1.6.0-h07db88b_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.8-h52572c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.0-h0ff4647_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.0-h9329255_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-21.1.3-h4a912ad_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20-20.1.5-h87a4c7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20.1.5-hd2aecb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21-21.1.3-h91fd4e7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21.1.3-h855ad52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py312hc82e5dd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/make-4.4.1-hc9fafa5_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py312h605b88b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_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/osx-arm64/maturin-1.9.6-py310h34f76f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mdit-py-plugins-0.5.0-pyhd8ed1ab_0.conda @@ -2977,8 +2981,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h248ca61_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numba-0.62.1-py312hd24c766_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.3-py312h85ea64e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.4-h5503f6c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.1-h4fd0076_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ordered-set-4.1.0-pyhd8ed1ab_1.conda @@ -2987,16 +2991,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py312h5978115_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandoc-3.6.3-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - 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.3.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h2525f64_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plum-dispatch-2.5.8-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda @@ -3009,21 +3013,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-21.0.0-py312hea229ce_1_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.1-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.3-py312h6ef9ec0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.2-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.4-py312h6ef9ec0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylatex-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.1-py312h4c66426_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.1-py312h3964663_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_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/noarch/python_abi-3.12-7_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h5748b74_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda @@ -3032,12 +3036,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/quartodoc-0.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-backports-1.5.0-r43h07cda29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-base-4.3.3-h07f0ef5_18.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-cli-3.6.5-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-colorspace-2.1_1-r43h07cda29_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-dplyr-1.1.4-r43hd76f289_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-ellipsis-0.3.2-r43h07cda29_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-fansi-1.0.6-r43h07cda29_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-farver-2.1.2-r43hd76f289_1.conda @@ -3058,22 +3062,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-nlme-3.1_168-r43he0ea626_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-numderiv-2016.8_1.1-r43hc72bb7e_6.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.0.4-r43h570997c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.1.0-r43hb470c6c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-r6-2.6.1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.0.14-r43h31118f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.1.0-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rlang-1.1.6-r43h31118f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-sandwich-3.1_1-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-scales-1.4.0-r43hc72bb7e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-stringi-1.8.7-r43h4f22b37_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-stringmagic-1.2.0-r43h088c9a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.2.1-r43h07cda29_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.3.0-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tidyr-1.3.1-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.5-r43h570997c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.6-r43h570997c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-vctrs-0.6.5-r43hd76f289_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.2-r43hc72bb7e_0.conda @@ -3109,7 +3113,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h1e387b8_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h3c7de25_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.2-py312h163523d_1.conda @@ -3122,7 +3126,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/typst-0.13.0-h0716509_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tzlocal-5.3-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-16.0.0-py312h163523d_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.5.0-pyhd8ed1ab_0.conda @@ -3138,17 +3142,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_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/zstandard-0.25.0-py312h37e1c23_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - pypi: https://files.pythonhosted.org/packages/88/44/b8717ad2b847f04d164b018cb1b746cd6873804cc65d28d62b1cb2775e5b/causaldata-0.1.5.tar.gz - - pypi: https://files.pythonhosted.org/packages/04/33/4b186ae06ac8ff472b02878df203dc470f14e0902d00a58343aee6dff010/lets_plot-4.6.2-cp312-cp312-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/bb/8c/b8e581f8a87c8abc962b25a5c24e2a656f3f0aabd43851e8d2afb9eafb36/marginaleffects-0.1.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/21/e7/172f47bc0016f3ea247ad2671ff8d355340f6ae2d0799725a1f3d358daae/mizani-0.13.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/b6/1d4725f1b97c81f9b5eb95b2cc775774358d492598ba5c5bf98d5b7ae4ff/lets_plot-4.7.3-cp312-cp312-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ce/f6/5a1e28b5e27ee7e3b7721d25bc57496c0732883055b6ff4591763c4dbe5a/marginaleffects-0.1.5-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/50/8b/8231e2493b454e2514e56843e842321b125d1f25da06f8ab55029a94d12a/mizani-0.14.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4d/c5/7cfda7ba9fa02243367fbfb4880b6de8039266f22c47c2dbbd39b6adc46f/plotnine-0.14.5-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/36/ca/f545f61282f75eea4dfde4db2944963dcd59abd50c20e33a1c894da44dad/polars-1.30.0-cp39-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/eb/93/304341b5b949cba71c8413722e168aa60947ea0cac55a5d8cc448ea9917a/plotnine-0.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6b/80/1791ac226bb989bef30fe8fde752b2021b6ec5dfd6e880262596aedf4c05/polars-1.34.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a6/bb/d655a103e75b7c81c47a3c2d276be0200c0c15cfb6fd47f17932ddcf7519/polars_runtime_32-1.34.0-cp39-abi3-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/75/419e54d92b1b97128a12f8dcd53b40b5144a33a69026496287a3ab7557e4/wildboottest-0.3.2-py3-none-any.whl jax: @@ -3163,8 +3168,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313h7037e92_2.conda @@ -3183,39 +3188,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py313hc8edb43_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_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/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_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/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.45.1-py313hdd307be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py313h683a580_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -3229,7 +3234,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py313ha492abd_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.8-h2b335a9_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-h2b335a9_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3251,18 +3256,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/59/89/b0a229bf0bd333ef1a5690682deee86f3b38f55613f1423bb2eb26b2d15c/jaxlib-0.6.1-cp313-cp313-manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b3/77/4e6c9a54247810eff8ac8a1af7dc1be0779b52df0d82f3fc8586061914f3/jax-0.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8f/f0/cde1d84c737bdb75712f70d69561120ce91f3f294acf2fba573c0de740b6/jaxlib-0.8.0-cp313-cp313-manylinux_2_27_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/14/f3/091ba84e5395d7fe5b30c081a44dec881cd84b408db1763ee50768b2ab63/ml_dtypes-0.5.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313hc551f4f_2.conda @@ -3282,24 +3287,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313hb91e98b_1.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/lerc-4.0.0-hcca01a6_1.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/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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/libcxx-20.1.6-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_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/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.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/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_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/libopenblas-0.3.30-openmp_h6006d49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda @@ -3308,7 +3313,7 @@ environments: - 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-21.1.3-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py313h590e1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py313h4ad75b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda @@ -3322,7 +3327,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py313hcfd0557_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.8-h2bd861f_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h2bd861f_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3344,19 +3349,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py313h585f44e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - pypi: https://files.pythonhosted.org/packages/22/49/b4418a7a892c0dd64442bbbeef54e1cdfe722dfc5a7bf0d611d3f5f90e99/jax-0.4.38-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/91/03/aee503c7077c6dbbd568842303426c6ec1cef9bff330c418c9e71906cccd/jaxlib-0.4.38-cp313-cp313-macosx_10_14_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/2d/87/1bcc98a66de7b2455dfb292f271452cac9edc4e870796e0d87033524d790/ml_dtypes-0.5.3-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 @@ -3379,24 +3384,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313hf88c9ab_1.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/lerc-4.0.0-hd64df32_1.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/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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/libcxx-20.1.6-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_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/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.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/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_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/libopenblas-0.3.30-openmp_ha158390_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda @@ -3405,7 +3410,7 @@ environments: - 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-21.1.3-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py313he297ed2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3419,7 +3424,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py313he4c6d0d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3441,26 +3446,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py313hcdf3177_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/8a/b8/6d540bd4b05d1fdfdb140772ea337051d16fb22fd6636d1be88a2848a930/jaxlib-0.6.1-cp313-cp313-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/b3/77/4e6c9a54247810eff8ac8a1af7dc1be0779b52df0d82f3fc8586061914f3/jax-0.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f6/76/f11130a3a6318a50662be4ee8c7ab6e61f3f334978653243ebc9d6f5d0bb/jaxlib-0.8.0-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/2d/87/1bcc98a66de7b2455dfb292f271452cac9edc4e870796e0d87033524d790/ml_dtypes-0.5.3-cp313-cp313-macosx_10_13_universal2.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda @@ -3471,7 +3476,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda @@ -3490,8 +3495,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.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/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h550210a_0.conda @@ -3502,33 +3506,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.0-ha29bfb0_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/win-64/llvm-openmp-21.1.3-hfa2b4ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py312hdb9728c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py312h9a042f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py312ha72d056_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.4-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py313hf455b62_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312h5ee8bfe_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_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/scipy-1.15.2-py313h2eca4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py312h451d5c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py312h196c9fc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda @@ -3536,18 +3540,19 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_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 + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-16.0.0-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/f2/ea/cf861b8971f4362be8948fd0ef61a55866b8cc6f562ae0c9671a9d289f99/jaxlib-0.6.1-cp313-cp313-win_amd64.whl - - pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/b3/77/4e6c9a54247810eff8ac8a1af7dc1be0779b52df0d82f3fc8586061914f3/jax-0.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/17/c6d9dc31001a495cb3c52fa69b22a0d8812880cb853f7c0573e2a5edad82/jaxlib-0.8.0-cp312-cp312-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/50/c1/85e6be4fc09c6175f36fb05a45917837f30af9a5146a5151cb3a3f0f9e09/ml_dtypes-0.5.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/23/cd/066e86230ae37ed0be70aae89aabf03ca8d9f39c8aea0dec8029455b5540/opt_einsum-3.4.0-py3-none-any.whl lint: channels: @@ -3559,8 +3564,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf01b4d8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -3584,39 +3589,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py313hc8edb43_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_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/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_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/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.45.1-py313hdd307be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py313h683a580_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -3634,7 +3639,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.8-h2b335a9_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-h2b335a9_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3660,14 +3665,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313h8715ba9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda @@ -3692,24 +3697,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313hb91e98b_1.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/lerc-4.0.0-hcca01a6_1.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/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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/libcxx-20.1.6-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_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/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.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/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_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/libopenblas-0.3.30-openmp_h6006d49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda @@ -3718,7 +3723,7 @@ environments: - 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-21.1.3-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py313h590e1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py313h4ad75b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda @@ -3736,7 +3741,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.8-h2bd861f_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h2bd861f_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3762,15 +3767,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/noarch/astor-0.8.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - 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/cffi-2.0.0-py313h89bd988_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda @@ -3798,24 +3803,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313hf88c9ab_1.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/lerc-4.0.0-hd64df32_1.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/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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/libcxx-20.1.6-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_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/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.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/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_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/libopenblas-0.3.30-openmp_ha158390_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda @@ -3824,7 +3829,7 @@ environments: - 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-21.1.3-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py313he297ed2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -3842,7 +3847,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -3868,26 +3873,26 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda win-64: - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py312he06e257_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda @@ -3899,7 +3904,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda @@ -3918,8 +3923,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.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/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h550210a_0.conda @@ -3930,38 +3934,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.0-ha29bfb0_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/win-64/llvm-openmp-21.1.3-hfa2b4ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py312hdb9728c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py312h9a042f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py312ha72d056_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.4-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py313hf455b62_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312h5ee8bfe_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.6.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_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/scipy-1.15.2-py313h2eca4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py312h451d5c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py312h196c9fc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda @@ -3969,17 +3973,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_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/ukkonen-1.0.1-py313h1ec8472_5.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/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-16.0.0-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.35.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda plots: channels: @@ -3993,8 +3998,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313h7037e92_2.conda @@ -4013,39 +4018,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py313hc8edb43_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_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/ld_impl_linux-64-2.44-ha97dd6f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.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/libblas-3.9.0-37_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb03c661_4.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/libcblas-3.9.0-37_h0358290_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_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/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.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.8.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_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/libopenblas-0.3.30-pthreads_h94d23a6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_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/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.45.1-py313hdd307be_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py313h683a580_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -4059,7 +4064,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py313ha492abd_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.8-h2b335a9_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-h2b335a9_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -4081,17 +4086,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda - - pypi: https://files.pythonhosted.org/packages/e1/1e/8857c119c67c753a436f06e84c8a5397aebaa25acb2e1ff7af2c38915ff5/lets_plot-4.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4b/c8/2986512cf9a1e2a61d9e3172bcdc65be2054e93a9e8d2b23444df7c7cd60/lets_plot-4.7.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl osx-64: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313hc551f4f_2.conda @@ -4111,24 +4116,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313hb91e98b_1.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/lerc-4.0.0-hcca01a6_1.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/libblas-3.9.0-37_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.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/libcxx-20.1.6-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_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/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.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/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.0-h6e16a3a_0.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/liblzma-5.8.1-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-37_h859234e_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_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/libopenblas-0.3.30-openmp_h6006d49_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda @@ -4137,7 +4142,7 @@ environments: - 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-21.1.3-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmlite-0.45.1-py313h590e1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py313h4ad75b8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda @@ -4151,7 +4156,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py313hcfd0557_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.8-h2bd861f_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h2bd861f_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -4173,9 +4178,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py313h585f44e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h8210216_2.conda - - pypi: https://files.pythonhosted.org/packages/55/24/6bb37fd04571ec44ca55cf96c6f61d67ce9909042b5a17d9e43cbc1c4cfd/lets_plot-4.6.2-cp313-cp313-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/16/5d/846f28b557ea5b22158ece2423f1728de42585007540de7d9bba09210054/lets_plot-4.7.3-cp313-cp313-macosx_10_15_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl osx-arm64: @@ -4183,8 +4188,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 @@ -4207,24 +4212,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313hf88c9ab_1.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/lerc-4.0.0-hd64df32_1.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/libblas-3.9.0-37_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.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/libcxx-20.1.6-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_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/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.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/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.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/liblzma-5.8.1-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_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/libopenblas-0.3.30-openmp_ha158390_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda @@ -4233,7 +4238,7 @@ environments: - 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-21.1.3-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmlite-0.45.1-py313he297ed2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -4247,7 +4252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py313he4c6d0d_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -4269,9 +4274,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py313hcdf3177_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda - - pypi: https://files.pythonhosted.org/packages/8d/08/4e81517365e8356ee307a0708206d656d35b3f59a27a44bd34061a068edb/lets_plot-4.6.2-cp313-cp313-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/94/e7/98e3cdb46ff5b94832904189c8a413d3026a0580ab980f4e679c57c1cda5/lets_plot-4.7.3-cp313-cp313-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl win-64: @@ -4279,15 +4284,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-hfd05255_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hfd05255_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/commonmark-0.9.1-py_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/faicons-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py313hfa70ccb_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py312h2e8e312_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/great_tables-0.19.0-pyhcf101f3_0.conda @@ -4298,7 +4303,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/interface_meta-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.17-hbcf6048_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda @@ -4317,8 +4322,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.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/liblzma-5.8.1-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.50-h7351971_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.50.4-hf5d6505_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h550210a_0.conda @@ -4329,33 +4333,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.0-ha29bfb0_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/win-64/llvm-openmp-21.1.3-hfa2b4ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py312hdb9728c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.8.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py312h9a042f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py312ha72d056_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.5.4-h725018a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py313hf455b62_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312h5ee8bfe_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_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/scipy-1.15.2-py313h2eca4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py312h451d5c4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py312h196c9fc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h18a62a1_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_2.conda @@ -4363,16 +4367,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_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 + - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-16.0.0-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_32.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-hbeecb71_2.conda - - pypi: https://files.pythonhosted.org/packages/30/57/452beacbeca5a2254f51c0c566f6124890400ee997469f2dcf48f08b624b/lets_plot-4.6.2-cp313-cp313-win_amd64.whl + - pypi: https://files.pythonhosted.org/packages/f5/45/71408e2c43d05404e0062a6bdb1601ee4602d398d6d962bce392677833d7/lets_plot-4.7.3-cp312-cp312-win_amd64.whl - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3e/b9/3766cc361d93edb2ce81e2e1f87dd98f314d7d513877a342d31b30741680/pypng-0.20220715.0-py3-none-any.whl packages: @@ -4458,7 +4463,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/anyio?source=compressed-mapping + - pkg:pypi/anyio?source=hash-mapping size: 138159 timestamp: 1758634638734 - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda @@ -5282,34 +5287,36 @@ packages: purls: [] size: 148875 timestamp: 1753211824276 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h18ceab9_2.conda - sha256: c2bebed989978bca831ef89db6e113f6a8af0bf4c8274376e85522451da68f2e - md5: 2ba82ed04f97b7bb609147fd87c96856 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h7ab4271_3.conda + sha256: 71aa0be364dc7ffe4d3e632591d9ca2c4cd0d175af243581aada70e1ffc3d0e6 + md5: d23e8e7609755baebb19278f87a3ce1f depends: - __osx >=10.13 - azure-core-cpp >=1.16.0,<1.16.1.0a0 - libcxx >=19 - - libxml2 >=2.13.8,<2.14.0a0 - - openssl >=3.5.1,<4.0a0 + - libxml2 + - libxml2-16 >=2.14.5 + - openssl >=3.5.2,<4.0a0 license: MIT license_family: MIT purls: [] - size: 125256 - timestamp: 1753211912801 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h12fd690_2.conda - sha256: 9b0fa0c2acbd69de6fce19c180439af8ed748a3facdc5e5eaa9b543371078497 - md5: 9be5f38d5306ac1069fcf3818549d56c + size: 125527 + timestamp: 1757359414211 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h2155cda_3.conda + sha256: 55ec38bb8bd68078c3e8328e813fe121f83ae90026f5c830d7cdb44bdebfcb8b + md5: d4c56734eef8aa87e907dea9cee61370 depends: - __osx >=11.0 - azure-core-cpp >=1.16.0,<1.16.1.0a0 - libcxx >=19 - - libxml2 >=2.13.8,<2.14.0a0 - - openssl >=3.5.1,<4.0a0 + - libxml2 + - libxml2-16 >=2.14.5 + - openssl >=3.5.2,<4.0a0 license: MIT license_family: MIT purls: [] - size: 120171 - timestamp: 1753211997430 + size: 121236 + timestamp: 1757359708440 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h8b27e44_3.conda sha256: aec2e2362a605e37a38c4b34f191e98dd33fdc64ce4feebd60bd0b4d877ab36b md5: 7b738aea4f1b8ae2d1118156ad3ae993 @@ -5389,17 +5396,17 @@ packages: - pkg:pypi/beautifulsoup4?source=compressed-mapping size: 89146 timestamp: 1759146127397 -- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_4.conda - sha256: 194d771be287dc973f6057c0747010ce28adf960f38d6e03ce3e828d7b74833e - md5: ef67db625ad0d2dce398837102f875ed +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.44-hdf8817f_2.conda + sha256: 014eda0be99345946706a8141ecf32f619c731152831b85e4a752b4917c4528c + md5: f0716b5f7e87e83678d50da21e7a54b4 depends: - - ld_impl_linux-64 2.43 h712a8e2_4 + - ld_impl_linux-64 2.44 ha97dd6f_2 - sysroot_linux-64 license: GPL-3.0-only license_family: GPL purls: [] - size: 6111717 - timestamp: 1740155471052 + size: 3797704 + timestamp: 1758810925961 - conda: https://conda.anaconda.org/conda-forge/linux-64/black-25.1.0-py312h7900ff3_0.conda sha256: a115a0984455ee031ac90fc533ab719fd5f5e3803930ccf0a934fb7416d568ef md5: 986a60de52eec10b36c61bb3890858ff @@ -5630,76 +5637,76 @@ packages: - pkg:pypi/brotli?source=hash-mapping size: 341750 timestamp: 1756600036931 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_0.conda - sha256: de65eb9e04212c0ff044b511a20a4ee520844b4144dccc094d3314109f544a2c - md5: bfe52ddc809cff2e046781928d195400 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.10.1-ha770c72_1.conda + sha256: c88dd33c89b33409ebcd558d78fdc66a63c18f8b06e04d170668ffb6c8ecfabd + md5: 983b92277d78c0d0ec498e460caa0e6d depends: - tk license: TCL purls: [] - size: 128999 - timestamp: 1733809692184 -- conda: https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.10.1-h694c41f_0.conda - sha256: f6664ee70a17fc4ac267f9c1d794fea42c136ee7e6ce275ba5c125a1a620ac4d - md5: d708a59e033cba53362d324e54edcfd7 + size: 129594 + timestamp: 1750261567920 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bwidget-1.10.1-h694c41f_1.conda + sha256: 3c942fbc1d960caa5cc630f3ed4b575b3ae33e70d6476e2feccd3162edc98f1f + md5: 42abba4764f9d776456ca566e07d8d3a depends: - tk license: TCL purls: [] - size: 129783 - timestamp: 1733809695201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bwidget-1.10.1-hce30654_0.conda - sha256: 65ede52be3b94b501cb44f672b262e13f36e10ff473e0859eac4deb027b452f4 - md5: 30d320d62d26ed91ca8b06166e4609df + size: 130154 + timestamp: 1750261608744 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bwidget-1.10.1-hce30654_1.conda + sha256: 66ccefd46364f1ef536c42e7ee24d0377c2ece073734df614c6509b08e2bdf62 + md5: c42706e35f3bb26537b065a5f9ae764d depends: - tk license: TCL purls: [] - size: 129779 - timestamp: 1733809630752 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 + size: 129989 + timestamp: 1750261536876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5 + md5: 51a19bba1b8ebfb60df25cde030b7ebc depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=14 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 - md5: 7ed4301d437b59045be7e051a0308211 + size: 260341 + timestamp: 1757437258798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + sha256: 8f50b58efb29c710f3cecf2027a8d7325ba769ab10c746eff75cea3ac050b10c + md5: 97c4b3bd8a90722104798175a1bdddbf depends: - __osx >=10.13 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 134188 - timestamp: 1720974491916 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + size: 132607 + timestamp: 1757437730085 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + sha256: b456200636bd5fecb2bec63f7e0985ad2097cf1b83d60ce0b6968dffa6d02aa1 + md5: 58fd217444c2a5701a44244faf518206 depends: - __osx >=11.0 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b - md5: 276e7ffe9ffe39688abc665ef0f45596 + size: 125061 + timestamp: 1757437486465 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + sha256: d882712855624641f48aa9dc3f5feea2ed6b4e6004585d3616386a18186fe692 + md5: 1077e9333c41ff0be8edd1a5ec0ddace depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: bzip2-1.0.6 license_family: BSD purls: [] - size: 54927 - timestamp: 1720974860185 + size: 55977 + timestamp: 1757437738856 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda sha256: f8003bef369f57396593ccd03d08a8e21966157269426f71e943f96e4b579aeb md5: f7f0d6cc2dc986d42ac2689ec88192be @@ -5731,24 +5738,24 @@ packages: purls: [] size: 179696 timestamp: 1744128058734 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-h4c7d964_0.conda - sha256: 1454f3f53a3b828d3cb68a3440cb0fa9f1cc0e3c8c26e9e023773dc19d88cc06 - md5: 23c7fd5062b48d8294fc7f61bf157fba +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-h4c7d964_0.conda + sha256: bfb7f9f242f441fdcd80f1199edd2ecf09acea0f2bcef6f07d7cbb1a8131a345 + md5: e54200a1cd1fe33d61c9df8d3b00b743 depends: - __win license: ISC purls: [] - size: 152945 - timestamp: 1745653639656 -- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac - md5: 95db94f75ba080a22eb623590993167b + size: 156354 + timestamp: 1759649104842 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda + sha256: 3b5ad78b8bb61b6cdc0978a6a99f8dfb2cc789a451378d054698441005ecbdb6 + md5: f9e5fbc24009179e8b0409624691758a depends: - __unix license: ISC purls: [] - size: 152283 - timestamp: 1745653616541 + size: 155907 + timestamp: 1759649036195 - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 noarch: python sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 @@ -5842,46 +5849,46 @@ packages: requires_dist: - statsmodels - pandas -- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hfe8da7e_6.conda - sha256: 566b631eb24b68d625b40ed31a204e9a2895ba747c4190a35c124bd65ebdb251 - md5: 9613d173e27079504b2e9be8955d2fbb +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1024.3-llvm21_1_h81d60ea_5.conda + sha256: f89653231443a2d9bf17c0ec99d3a1db94b6346d7b8a2940fe25d21f3b4c8fb3 + md5: f8398526e8b8222479f41121fee94876 depends: - __osx >=10.13 - - ld64_osx-64 >=951.9,<951.10.0a0 + - ld64_osx-64 >=955.13,<955.14.0a0 - libcxx - - libllvm20 >=20.1.2,<20.2.0a0 + - libllvm21 >=21.1.2,<21.2.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-tools 20.1.* + - llvm-tools 21.1.* - sigtool constrains: - - ld64 951.9.* - - cctools 1010.6.* - - clang 20.1.* + - clang 21.1.* + - ld64 955.13.* + - cctools 1024.3.* license: APSL-2.0 license_family: Other purls: [] - size: 1117776 - timestamp: 1743872263654 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h729f01a_6.conda - sha256: f337ee5c7c036b20fd528c8720aa722b0237e9519a7e407aa3bd1f5d7ff66e43 - md5: f8972ef4f7520764a0756a05aaec86c6 + size: 740257 + timestamp: 1759697792720 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1024.3-llvm21_1_haddd2d4_5.conda + sha256: 8930c4a81d40d39784c79f00e31c407230d8b18148a93a1387b96637535bfd58 + md5: fd7a33de15fa4a509c20dd00375f2c34 depends: - __osx >=11.0 - - ld64_osx-arm64 >=951.9,<951.10.0a0 + - ld64_osx-arm64 >=955.13,<955.14.0a0 - libcxx - - libllvm20 >=20.1.2,<20.2.0a0 + - libllvm21 >=21.1.2,<21.2.0a0 - libzlib >=1.3.1,<2.0a0 - - llvm-tools 20.1.* + - llvm-tools 21.1.* - sigtool constrains: - - cctools 1010.6.* - - ld64 951.9.* - - clang 20.1.* + - ld64 955.13.* + - clang 21.1.* + - cctools 1024.3.* license: APSL-2.0 license_family: Other purls: [] - size: 1105310 - timestamp: 1743872192304 + size: 742396 + timestamp: 1759697712110 - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.10.5-pyhd8ed1ab_0.conda sha256: 955bac31be82592093f6bc006e09822cd13daf52b28643c9a6abd38cd5f4a306 md5: 257ae203f1d204107ba389607d375ded @@ -5892,13 +5899,13 @@ packages: - pkg:pypi/certifi?source=hash-mapping size: 160248 timestamp: 1759648987029 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py312h35888ee_0.conda + sha256: f9e906b2cb9ae800b5818259472c3f781b14eb1952e867ac5c1f548e92bf02d9 + md5: 60b9cd087d22272885a6b8366b1d3d43 depends: - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=14 - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5906,8 +5913,8 @@ packages: license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 294403 - timestamp: 1725560714366 + size: 296986 + timestamp: 1758716192805 - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf01b4d8_0.conda sha256: cbead764b88c986642578bb39f77d234fbc3890bd301ed29f849a6d3898ed0fc md5: 062317cc1cd26fbf6454e86ddd3622c4 @@ -5922,12 +5929,12 @@ packages: license_family: MIT size: 298211 timestamp: 1758716239290 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902 - md5: 5bbc69b8194fedc2792e451026cac34f +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py312hf9bc6d9_0.conda + sha256: 74d987c4e7c50404b782ff05200c835e881bb37e47b00951693b3b92371f2b07 + md5: 60bd93639037ab61a11ed14955e53848 depends: - __osx >=10.13 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - pycparser - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -5935,8 +5942,8 @@ packages: license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 282425 - timestamp: 1725560725144 + size: 289913 + timestamp: 1758716346335 - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313h8715ba9_0.conda sha256: 42bc009b35ff8669be24fab48f9bfa4b7e50f8cb41abc4c921d047e26dba911c md5: bd859e351d8c443dd9304690502cad60 @@ -5950,12 +5957,12 @@ packages: license_family: MIT size: 290694 timestamp: 1758716446727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py312hb65edc0_0.conda + sha256: ad49c48044a5f12c7bcc6ae6a66b79f10e24e681e9f3ad4fa560b0f708a9393c + md5: 1b36501506f4ef414524891ca5f0a561 depends: - __osx >=11.0 - - libffi >=3.4,<4.0a0 + - libffi >=3.4.6,<3.5.0a0 - pycparser - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython @@ -5964,8 +5971,8 @@ packages: license_family: MIT purls: - pkg:pypi/cffi?source=hash-mapping - size: 281206 - timestamp: 1725560813378 + size: 287573 + timestamp: 1758716529098 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h89bd988_0.conda sha256: 97404dd3e363d7fe546ef317502a0f26a4f314b986adc700de2c9840084459cd md5: 7768e6a259b378e0722b7f64e3f64c80 @@ -5980,20 +5987,20 @@ packages: license_family: MIT size: 291107 timestamp: 1758716485269 -- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_0.conda - sha256: 099c0e4739e530259bb9ac7fee5e11229e36acf131e3c672824dbe215af61031 - md5: 2ede5fcd7d154a6e1bc9e57af2968ba2 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py312he06e257_0.conda + sha256: 16a68a4a3f6ec4feebe0447298b8d04ca58a3fde720c5e08dc2eed7f27a51f6c + md5: 21e34a0fa25e6675e73a18df78dde03b depends: - pycparser - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 292670 - timestamp: 1758716395348 + size: 290539 + timestamp: 1758716385244 - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f md5: 57df494053e17dce2ac3a0b33e1b2a2e @@ -6009,174 +6016,183 @@ packages: depends: - python >=3.10 license: MIT + license_family: MIT purls: - pkg:pypi/charset-normalizer?source=compressed-mapping size: 50965 timestamp: 1760437331772 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20.1.5-default_h811ddef_1.conda - sha256: 1ed90b3ecaadfc684cd5cd30ab525926f4e25cb0705f4c736e918f0bd6e72785 - md5: ebcdce06a34cd866eac1b286462c18cb - depends: - - clang-20 20.1.5 default_hf9570e0_1 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21.1.3-default_h1323312_0.conda + sha256: 1d2acb5011cffc49393a207eac319b466d13b8d29859b25f44394e4b5b83ef2c + md5: ef08d5bbdf55f2079934b8ef40395a54 + depends: + - clang-21 21.1.3 default_h9f74b92_0 + - ld64 + - ld64_osx-64 * llvm21_1_* + - llvm-openmp >=21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 24222 - timestamp: 1747694245392 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20.1.5-default_hcdeef69_1.conda - sha256: 510bc73f98c0a9bc2f8e9d8e98e2b421b00513a2d5a784e2ad169729ff8ba7e4 - md5: b5d5809aa2f2e3375da1849d1f43f420 + size: 24950 + timestamp: 1760317112465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21.1.3-default_hf9bcbb7_0.conda + sha256: 561913e9e4e13f267cb68ba9dee94c717eb86f14054c8bb1a96f413d7d2cb214 + md5: 9263b0d3c4611a3d363087b4e8da31b0 depends: - - clang-20 20.1.5 default_h03658f6_1 + - clang-21 21.1.3 default_h489deba_0 + - ld64 + - ld64_osx-arm64 * llvm21_1_* + - llvm-openmp >=21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 24343 - timestamp: 1747694514190 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-20-20.1.5-default_hf9570e0_1.conda - sha256: 93d5a40679f943707996ee78ed2ef656ff7b8b81e78fefb130e670f1772867b0 - md5: a6f4bf14c909cd8a0004ad5ee60c3282 + size: 25094 + timestamp: 1760315024526 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-21-21.1.3-default_h9f74b92_0.conda + sha256: cb45cc40f05a21f31aba6438e87c16f8ba67e3290df967632d014526c4b10bde + md5: 9797d22b91ea788cf32d14ace668b6bf depends: - __osx >=10.13 - - libclang-cpp20.1 20.1.5 default_hf9570e0_1 - - libcxx >=20.1.5 - - libllvm20 >=20.1.5,<20.2.0a0 + - compiler-rt21 21.1.3.* + - libclang-cpp21.1 21.1.3 default_hc369343_0 + - libcxx >=21.1.3 + - libllvm21 >=21.1.3,<21.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 795679 - timestamp: 1747694153296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-20-20.1.5-default_h03658f6_1.conda - sha256: 59c152e5526480702ab38a1ebfb587a736d12f4d4ce2eae2265fcaae554a193d - md5: da2f1344954f7caf19a7a7102884d7f0 + size: 11632998 + timestamp: 1760316853925 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-21-21.1.3-default_h489deba_0.conda + sha256: 9f5ead0a1cffd95fe6a86ed6651168624a6b5024d9d2ff9940c672c768ac42d4 + md5: b48481b7151e1ffb8852711e199c3c90 depends: - __osx >=11.0 - - libclang-cpp20.1 20.1.5 default_h03658f6_1 - - libcxx >=20.1.5 - - libllvm20 >=20.1.5,<20.2.0a0 + - compiler-rt21 21.1.3.* + - libclang-cpp21.1 21.1.3 default_h73dfc95_0 + - libcxx >=21.1.3 + - libllvm21 >=21.1.3,<21.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 796964 - timestamp: 1747694408708 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-20.1.5-h67cac6e_24.conda - sha256: 8fdc6c12565289888a1da55504e26de42ac39b026b911ee28fe13ac44a2be90c - md5: 745f5b5e91825a0ab5a704dcb6996911 + size: 11471343 + timestamp: 1760314830356 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-21.1.3-h084dc57_25.conda + sha256: a460a2431dd472969428c6e5a4ba931a36aae7963d1fbe9f9871975610a3cffd + md5: 74f8b4d857fa95f3a9c2ac30e534f55e depends: - cctools_osx-64 - - clang 20.1.5.* - - compiler-rt 20.1.5.* + - clang 21.1.3.* + - compiler-rt 21.1.3.* - ld64_osx-64 - - llvm-tools 20.1.5.* + - llvm-tools 21.1.3.* license: BSD-3-Clause license_family: BSD purls: [] - size: 18153 - timestamp: 1747375241924 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-20.1.5-h198f50a_24.conda - sha256: c75d8cb54cc19e85c70a367fed2c82a59a220aad9cdfcaf452b401599dd5c45f - md5: 58d19627d422fc7c9088729481aa25e6 + size: 18254 + timestamp: 1760339578264 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-21.1.3-h3492924_25.conda + sha256: cb283825a38ec72c107c13af1aaedffa7fcf6bba828f1fc927a4fa54b13a0dbf + md5: 501daf256a0b4ad582537fca752a3bc4 depends: - cctools_osx-arm64 - - clang 20.1.5.* - - compiler-rt 20.1.5.* + - clang 21.1.3.* + - compiler-rt 21.1.3.* - ld64_osx-arm64 - - llvm-tools 20.1.5.* + - llvm-tools 21.1.3.* license: BSD-3-Clause license_family: BSD purls: [] - size: 18445 - timestamp: 1747373149299 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-20.1.5-h7e5c614_24.conda - sha256: c8e629fcc3adfaafbeda9600f140bbd32fb578fc5b3d0ed4b5f6702396eb3bd9 - md5: d0c3e9b2030657c4884dd6df42107187 + size: 18268 + timestamp: 1760339367114 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-21.1.3-h7e5c614_25.conda + sha256: 9eea855606f5505c4b302c46b0c4f02897202cbd9489d7caace3deb396b4a7b4 + md5: 0d3962477789b2755e2181df4c77a5a4 depends: - - clang_impl_osx-64 20.1.5 h67cac6e_24 + - clang_impl_osx-64 21.1.3 h084dc57_25 license: BSD-3-Clause license_family: BSD purls: [] - size: 21505 - timestamp: 1747375245429 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-20.1.5-h07b0088_24.conda - sha256: ef97c30cb6a0899bfc4f68173c9ff4e2bf6b204177baea4b1c39dc7a21d8a644 - md5: f665bf15730d72c7235c1a39413fb9b6 + size: 21519 + timestamp: 1760339586444 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-21.1.3-h07b0088_25.conda + sha256: 464fd490de8153e3b1f22c03412ab4f0437c5d5774d06520787d88187426d252 + md5: a580e7ee07256c779c91a94d46bd254c depends: - - clang_impl_osx-arm64 20.1.5 h198f50a_24 + - clang_impl_osx-arm64 21.1.3 h3492924_25 license: BSD-3-Clause license_family: BSD purls: [] - size: 21624 - timestamp: 1747373153085 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-20.1.5-default_hb2955f5_1.conda - sha256: 9865a985ef9ed5cd4bb22df1b785d0375bfb2f7ea32997cf1f5cf7193af898aa - md5: 25b5cfacdd4ab040c22de57183ef686e + size: 21442 + timestamp: 1760339371171 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-21.1.3-default_h1c12a56_0.conda + sha256: 4414b9cb16ad426a957a23702285a843bb62e1f04ba21b473110e67db8472d66 + md5: cc7be35b9ba51ebac50f68d0802a188a depends: - - clang 20.1.5 default_h811ddef_1 - - libcxx-devel 20.1.* + - clang 21.1.3 default_h1323312_0 + - libcxx-devel 21.1.* license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 24307 - timestamp: 1747694261516 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-20.1.5-default_haca757a_1.conda - sha256: 4b4aea1b47ce0d8097e5e9cbd2e61565e7292884255d92a8ad529562861bb4a9 - md5: 480ad9de5f8cbb57b4ef4f113cba071a + size: 25015 + timestamp: 1760317154509 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-21.1.3-default_h36137df_0.conda + sha256: 7f37a49929559e6dbb0945dc573fe4ff3b93ccd5ef2ad4e87534f819503419ac + md5: 06a6e33e199ed3694c7c36117cddf261 depends: - - clang 20.1.5 default_hcdeef69_1 - - libcxx-devel 20.1.* + - clang 21.1.3 default_hf9bcbb7_0 + - libcxx-devel 21.1.* license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 24475 - timestamp: 1747694526231 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-20.1.5-hc0b3369_24.conda - sha256: aa46b0aa597a902ae4c8bd014edcdd6ceebb42549c2408d4c0821c77b107f297 - md5: 6a56515dd337240f951de5af61ebe2ee + size: 25160 + timestamp: 1760315038792 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-21.1.3-h2770c5a_25.conda + sha256: ac4e2febb6aa18b9b842fdb7d4e76b05e18a771fb103911b4a70172f34923d23 + md5: 15f2f7379d68279295b1b129d27492db depends: - - clang_osx-64 20.1.5 h7e5c614_24 - - clangxx 20.1.5.* - - libcxx >=20 - - libllvm20 >=20.1.5,<20.2.0a0 + - clang_osx-64 21.1.3 h7e5c614_25 + - clangxx 21.1.3.* + - libcxx >=21 + - libllvm21 >=21.1.3,<21.2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 18259 - timestamp: 1747375274320 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-20.1.5-ha6cee9d_24.conda - sha256: 2d362d4b4e8b9435f23c3e459569ba8a4838fe1750ce16e08dc9c67a6a26bbb3 - md5: ad196119c9d65a9d1be06732ab5ebcc0 + size: 18360 + timestamp: 1760339648633 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-21.1.3-h03b555f_25.conda + sha256: de6d987e86f75f2dce30f99c634af3cab988abef8dfbac4d8301fdf1814d94a4 + md5: b0cca45e277eec6b6e0c628f2f41ea78 depends: - - clang_osx-arm64 20.1.5 h07b0088_24 - - clangxx 20.1.5.* - - libcxx >=20 - - libllvm20 >=20.1.5,<20.2.0a0 + - clang_osx-arm64 21.1.3 h07b0088_25 + - clangxx 21.1.3.* + - libcxx >=21 + - libllvm21 >=21.1.3,<21.2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 18557 - timestamp: 1747373201627 -- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-20.1.5-h7e5c614_24.conda - sha256: 3cbd7d09437d7870fb763277aab771e56eb519689b9e854285e880f0c17443bd - md5: 3679f2d8d4fa08bcdf30e1c48788bb9e + size: 18409 + timestamp: 1760339411983 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-21.1.3-h7e5c614_25.conda + sha256: 191e29e2ab63d8f90e3018bf1502c8b683cb7e9e02c0075837ce5c6e1dd3753c + md5: 5c7b47bc7b433e93bb7669890e1bd635 depends: - - clang_osx-64 20.1.5 h7e5c614_24 - - clangxx_impl_osx-64 20.1.5 hc0b3369_24 + - clang_osx-64 21.1.3 h7e5c614_25 + - clangxx_impl_osx-64 21.1.3 h2770c5a_25 license: BSD-3-Clause license_family: BSD purls: [] - size: 19903 - timestamp: 1747375278493 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-20.1.5-h07b0088_24.conda - sha256: 939f52b5e27f2dc644c2b304f82a4768b797dd817bedefd68b52d77729f972ff - md5: 8992e9f3cef581d055a5cb061bbb5658 + size: 19900 + timestamp: 1760339656252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-21.1.3-h07b0088_25.conda + sha256: 663eab4d02aaaa81a28fcadf65ba0ba56dfcef450d01e261281dd42384324efa + md5: 0a080a811c808e9daf27d5e8891406c0 depends: - - clang_osx-arm64 20.1.5 h07b0088_24 - - clangxx_impl_osx-arm64 20.1.5 ha6cee9d_24 + - clang_osx-arm64 21.1.3 h07b0088_25 + - clangxx_impl_osx-arm64 21.1.3 h03b555f_25 license: BSD-3-Clause license_family: BSD purls: [] - size: 20028 - timestamp: 1747373208178 + size: 19819 + timestamp: 1760339416486 - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.3.0-pyh707e725_0.conda sha256: c6567ebc27c4c071a353acaf93eb82bb6d9a6961e40692a359045a89a61d02c0 md5: e76c4ba9e1837847679421b8d549b784 @@ -6224,56 +6240,72 @@ packages: - pkg:pypi/commonmark?source=hash-mapping size: 47354 timestamp: 1570221752112 -- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-20.1.5-h52031e2_0.conda - sha256: c219b2cebfbe940f3acedee059be45eaa2d6e5aa5231a0a5c319f8d3dac427ec - md5: 7189b17545676fa2a48ae803ba2bbcc6 +- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-21.1.3-h694c41f_0.conda + sha256: 4c50b89d85f23420343d94a5e2b3a6ed26ba8308b3ac6f2d0934d3c4d02b1a4a + md5: 770f46676919889f7b8196ffb98a902d + depends: + - compiler-rt21 21.1.3 he914875_0 + constrains: + - clang 21.1.3 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 16018 + timestamp: 1760167772068 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-21.1.3-hce30654_0.conda + sha256: ed38c916cdb994668e09f03d4b4c25cc835d1a464b9b41e6752561f21c3a5b90 + md5: a80c69b593f63b0f9a3bbb2e21426f50 + depends: + - compiler-rt21 21.1.3 h855ad52_0 + constrains: + - clang 21.1.3 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 15969 + timestamp: 1760167064612 +- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt21-21.1.3-he914875_0.conda + sha256: ac49003d3df394fefc97cc153c8b85881beb6a019c81578ce4834f4605f64847 + md5: add72607e3f23e558e31af1f54d57549 depends: - __osx >=10.13 - - clang 20.1.5.* - - compiler-rt_osx-64 20.1.5.* + - compiler-rt21_osx-64 21.1.3.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 98981 - timestamp: 1747362872073 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-20.1.5-hd2aecb6_0.conda - sha256: 5264e340ddf9cbf0c51aa5458523cfde76c29749b419020482b8142b207970e6 - md5: a63263d575a360d30ee29371329d5a2c + size: 98858 + timestamp: 1760167768117 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt21-21.1.3-h855ad52_0.conda + sha256: 5aeb7557243eb8550fb5517da0745620c8d21b408b273c8172c6f625bb1da132 + md5: 711e2cd6f9252e8e9a775fbdaabb99cf depends: - __osx >=11.0 - - clang 20.1.5.* - - compiler-rt_osx-arm64 20.1.5.* + - compiler-rt21_osx-arm64 21.1.3.* license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 98645 - timestamp: 1747363147501 -- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-20.1.5-hc6f8467_0.conda - sha256: 583c597b8b5e2a73ce452971cb2e3581ae5e4554a916adafe4201b951d96a47a - md5: 7472a040e6812ff755324cf2cc7d2c22 - depends: - - clang 20.1.5.* + size: 98498 + timestamp: 1760167061461 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-64-21.1.3-he0f92a2_0.conda + sha256: a46cc5b965c338ec88eeb51940e51f4617802333f2850d22d34f5d77a5e57eb0 + md5: 51de1695ec171dbac7f3c66be12abd34 constrains: - - clangxx 20.1.5 - - compiler-rt 20.1.5 + - compiler-rt >=9.0.1 license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 11093905 - timestamp: 1747362837694 -- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-20.1.5-h7969c41_0.conda - sha256: 9117217afeca364f811a44c9f811e10683c271242a8b3f98b454cae2e8bdf983 - md5: d6eacb608b9585bb6e0721b6e468f132 - depends: - - clang 20.1.5.* + size: 10787858 + timestamp: 1760167704533 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt21_osx-arm64-21.1.3-h2514db7_0.conda + sha256: d1858b057ac641705d40121ba26d711ec4c381e520d20aee2bcf33d83c491819 + md5: bfd170a04a55a11c23dd7d50edbbce52 constrains: - - clangxx 20.1.5 - - compiler-rt 20.1.5 + - compiler-rt >=9.0.1 license: Apache-2.0 WITH LLVM-exception license_family: APACHE purls: [] - size: 11058382 - timestamp: 1747363105890 + size: 10647713 + timestamp: 1760167026006 - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312hd9148b4_2.conda sha256: cedae3c71ad59b6796d182f9198e881738b7a2c7b70f18427d7788f3173befb2 md5: bce621e43978c245261c76b45edeaa3d @@ -6368,6 +6400,22 @@ packages: - pkg:pypi/contourpy?source=hash-mapping size: 260411 timestamp: 1756545032560 +- conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312hf90b1b7_2.conda + sha256: 3561cb1fddacd7903c036659fe48615320e045fc3f58952bcabcb44fcd1f92d1 + md5: 0236aece459ee53593a3feed0c6bcc94 + depends: + - numpy >=1.25 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/contourpy?source=hash-mapping + size: 225375 + timestamp: 1756544999757 - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313hf069bd2_2.conda sha256: 71b1ab5b48a91a1ab767f8c55d35529ad5769fabd40663fd68ac936c5f860349 md5: bf5d8f5f80b6472bdc82970c513fbd50 @@ -6380,13 +6428,11 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/contourpy?source=hash-mapping size: 225780 timestamp: 1756544971020 -- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.10.7-py312h8a5da7c_0.conda - sha256: 31a5117c6b9ff110deafb007ca781f65409046973744ffb33072604481b333fd - md5: 03d83efc728a6721a0f1616a04a7fc84 +- conda: https://conda.anaconda.org/conda-forge/linux-64/coverage-7.11.0-py312h8a5da7c_0.conda + sha256: e2ab39dd818674131055df51ae293b4dbcb60992f2102caa6c35369da007c23e + md5: c23f0ca5a6e2f0ef5735825f14fbe007 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -6397,11 +6443,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 382934 - timestamp: 1758501072565 -- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.10.7-py312hacf3034_0.conda - sha256: bf8298e2f69ca02842f527caefd03042d8ca7f2abc8f79e5420712ae0811fce1 - md5: 92ad0f73c3865cc370b604750ae437af + size: 379172 + timestamp: 1760545159050 +- conda: https://conda.anaconda.org/conda-forge/osx-64/coverage-7.11.0-py312hacf3034_0.conda + sha256: 4b7d40d4ad5c545af7cb938baeda77e96d92b92134034403bec9c94a2be05c7d + md5: 07be71cac0506b84680916f9eb6890a5 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -6411,11 +6457,11 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 381487 - timestamp: 1758501010295 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.10.7-py312h5748b74_0.conda - sha256: 9cb9ab655cdde3f3e24368d2b14d16ea2982e5e7f5e58ef57c55d1f95c4534b0 - md5: e0b8f44484ee14574476e3ee811da2f6 + size: 378047 + timestamp: 1760545278897 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coverage-7.11.0-py312h5748b74_0.conda + sha256: 6b631e7062a5a3a261a57fe7cca37f63123dbcffc255d1c5997804149e411135 + md5: 7fd74b1ae09c5f2677a0021062bca27c depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6426,8 +6472,8 @@ packages: license_family: APACHE purls: - pkg:pypi/coverage?source=hash-mapping - size: 382135 - timestamp: 1758501121399 + size: 378627 + timestamp: 1760545361866 - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_0.conda noarch: generic sha256: 367c7c1b2c5ac0b0554f697089a68c05bdb8c950fd04b9881b963b970549b730 @@ -6706,32 +6752,32 @@ packages: purls: [] size: 7546 timestamp: 1759852012326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/esbuild-0.25.10-hfc2019e_0.conda - sha256: 731540a7f94ac12a48b997222156046a3dceb6b6ab67156ebbd7aa3c01aece9e - md5: 52970742fe5fb923b387dd270e3dea33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/esbuild-0.25.11-hfc2019e_0.conda + sha256: 3bbf5d1f78332b184190de25742444665f043356180bd50e62240d3f991845fb + md5: 6a7bf065b0bee548d29b7b35376f22ed license: MIT license_family: MIT purls: [] - size: 4391061 - timestamp: 1758138145418 -- conda: https://conda.anaconda.org/conda-forge/osx-64/esbuild-0.25.10-hccc6df8_0.conda - sha256: 4eb28ab3be0512ff3ecdbf3b77112d8f0f8b71b08f67ec0dade974d532da37d1 - md5: 26e17a0167200cf2bbf141246efc7ace + size: 4409243 + timestamp: 1760499181567 +- conda: https://conda.anaconda.org/conda-forge/osx-64/esbuild-0.25.11-hccc6df8_0.conda + sha256: f199ea0aba4fa7f0bd172a648a5a9e6ce253eaa78810720399cf0a9a38ce4b66 + md5: 660db034253cdc3ad859a8b25baf1a2a constrains: - __osx >=10.12 license: MIT license_family: MIT purls: [] - size: 4308871 - timestamp: 1758138172893 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/esbuild-0.25.10-h820172f_0.conda - sha256: 9fd273b7d26024e1d30decce9daa4615e38b1a407f47883925d9944f01cf48b0 - md5: 6af11da4c59160ef76e3e18252113606 + size: 4326698 + timestamp: 1760499192042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/esbuild-0.25.11-h820172f_0.conda + sha256: 32967df5432936c287e97cdfca06083c3de1b6c16083b03722bb0588e3625d5d + md5: fec62282410e89b46521f2fdc89954fa license: MIT license_family: MIT purls: [] - size: 3958873 - timestamp: 1758138176081 + size: 3980480 + timestamp: 1760499295582 - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.0-pyhd8ed1ab_0.conda sha256: ce61f4f99401a4bd455b89909153b40b9c823276aefcbb06f2044618696009ca md5: 72e42d28960d875c7654614f8b50939a @@ -6978,6 +7024,24 @@ packages: - pkg:pypi/fonttools?source=hash-mapping size: 2868336 timestamp: 1759187425694 +- conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py312h05f76fc_0.conda + sha256: 4902c5818f7852ad8306e5f0706c879b6a496243f9a4e6f9a7d0b833051f005e + md5: f990cc00e7794101abad11b4f2f7b0c7 + depends: + - brotli + - munkres + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - unicodedata2 >=15.1.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + purls: + - pkg:pypi/fonttools?source=hash-mapping + size: 2485206 + timestamp: 1759187718923 - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.60.1-py313hd650c13_0.conda sha256: 24ee51eb3082a4b9f72781bbea216fdd87fb20ef140a3d1956f08f72fb873ab0 md5: 036f44cc6a910763916165b2d4426cb1 @@ -6991,8 +7055,6 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - purls: - - pkg:pypi/fonttools?source=hash-mapping size: 2510221 timestamp: 1759187528010 - conda: https://conda.anaconda.org/conda-forge/linux-64/formulaic-1.2.1-py312h7900ff3_1.conda @@ -7110,6 +7172,29 @@ packages: - pkg:pypi/formulaic?source=hash-mapping size: 230829 timestamp: 1759545846230 +- conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py312h2e8e312_1.conda + sha256: 5164584d7412c494c11672100b582cd77ad11b9d56ed9f884048720143de7fb3 + md5: 66a97405d68592c331bb2f7b6853154f + depends: + - interface_meta >=1.2 + - narwhals >=1.17 + - numpy >=1.20 + - pandas >=1.3 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - scipy >=1.6 + - typing-extensions >=4.2 + - wrapt >=1.0 + constrains: + - polars >=1 + - sympy >=1.3,!=1.10 + - pyarrow >=1 + license: MIT + license_family: MIT + purls: + - pkg:pypi/formulaic?source=hash-mapping + size: 223502 + timestamp: 1759545787650 - conda: https://conda.anaconda.org/conda-forge/win-64/formulaic-1.2.1-py313hfa70ccb_1.conda sha256: fcfa8f28ba9d06922c8abedbe5ff070b1dfdcffd76d015d2bece724aa79b3e43 md5: 80af8b731136c75e738ffa984b3aeb69 @@ -7129,8 +7214,6 @@ packages: - polars >=1 license: MIT license_family: MIT - purls: - - pkg:pypi/formulaic?source=hash-mapping size: 230207 timestamp: 1759545833064 - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda @@ -7145,16 +7228,6 @@ packages: - pkg:pypi/fqdn?source=hash-mapping size: 16705 timestamp: 1733327494780 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.13.3-ha770c72_1.conda - sha256: 7ef7d477c43c12a5b4cddcf048a83277414512d1116aba62ebadfa7056a7d84f - md5: 9ccd736d31e0c6e41f54e704e5312811 - depends: - - libfreetype 2.13.3 ha770c72_1 - - libfreetype6 2.13.3 h48d6fc4_1 - license: GPL-2.0-only OR FTL - purls: [] - size: 172450 - timestamp: 1745369996765 - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda sha256: bf8e4dffe46f7d25dc06f31038cacb01672c47b9f45201f065b0f4d00ab0a83e md5: 4afc585cd97ba8a23809406cd8a9eda8 @@ -7165,16 +7238,6 @@ packages: purls: [] size: 173114 timestamp: 1757945422243 -- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.13.3-h694c41f_1.conda - sha256: e2870e983889eec73fdc0d4ab27d3f6501de4750ffe32d7d0a3a287f00bc2f15 - md5: 126dba1baf5030cb6f34533718924577 - depends: - - libfreetype 2.13.3 h694c41f_1 - - libfreetype6 2.13.3 h40dfd5c_1 - license: GPL-2.0-only OR FTL - purls: [] - size: 172649 - timestamp: 1745370231293 - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda sha256: 9f8282510db291496e89618fc66a58a1124fe7a6276fbd57ed18c602ce2576e9 md5: ca641fdf8b7803f4b7212b6d66375930 @@ -7185,16 +7248,6 @@ packages: purls: [] size: 173969 timestamp: 1757945973505 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.13.3-hce30654_1.conda - sha256: 6b63c72ea51a41d41964841404564c0729fdddd3e952e2715839fd759b7cfdfc - md5: e684de4644067f1956a580097502bf03 - depends: - - libfreetype 2.13.3 hce30654_1 - - libfreetype6 2.13.3 h1d14073_1 - license: GPL-2.0-only OR FTL - purls: [] - size: 172220 - timestamp: 1745370149658 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda sha256: 14427aecd72e973a73d5f9dfd0e40b6bc3791d253de09b7bf233f6a9a190fd17 md5: 1ec9a1ee7a2c9339774ad9bb6fe6caec @@ -7215,71 +7268,61 @@ packages: purls: [] size: 184553 timestamp: 1757946164012 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 - md5: ac7bc6a654f8f41b352b38f4051135f8 - depends: - - libgcc-ng >=7.5.0 - license: LGPL-2.1 - purls: [] - size: 114383 - timestamp: 1604416621168 -- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 - md5: f1c6b41e0f56998ecd9a3e210faa1dc0 - license: LGPL-2.1 - purls: [] - size: 65388 - timestamp: 1604417213 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 - md5: c64443234ff91d70cb9c7dc926c58834 - license: LGPL-2.1 - purls: [] - size: 60255 - timestamp: 1604417405528 -- conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda - sha256: 45dfd037889b7075c5eb46394f93172de0be0b1624c7f802dd3ecc94b814d8e0 - md5: 1054c53c95d85e35b88143a3eda66373 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + sha256: 858283ff33d4c033f4971bf440cebff217d5552a5222ba994c49be990dacd40d + md5: f9f81ea472684d75b9dd8d0b328cf655 depends: - - python >=3.9 - license: MIT + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-or-later + purls: [] + size: 61244 + timestamp: 1757438574066 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda + sha256: 53dd0a6c561cf31038633aaa0d52be05da1f24e86947f06c4e324606c72c7413 + md5: 4422491d30462506b9f2d554ab55e33d + depends: + - __osx >=10.13 + license: LGPL-2.1-or-later + purls: [] + size: 60923 + timestamp: 1757438791418 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda + sha256: d856dc6744ecfba78c5f7df3378f03a75c911aadac803fa2b41a583667b4b600 + md5: 04bdce8d93a4ed181d1d726163c2d447 + depends: + - __osx >=11.0 + license: LGPL-2.1-or-later + purls: [] + size: 59391 + timestamp: 1757438897523 +- conda: https://conda.anaconda.org/conda-forge/noarch/future-1.0.0-pyhd8ed1ab_2.conda + sha256: 45dfd037889b7075c5eb46394f93172de0be0b1624c7f802dd3ecc94b814d8e0 + md5: 1054c53c95d85e35b88143a3eda66373 + depends: + - python >=3.9 + license: MIT license_family: MIT purls: - pkg:pypi/future?source=hash-mapping size: 364561 timestamp: 1738926525117 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.1.0-h4393ad2_2.conda - sha256: 99c545b842edd356d907c51ccd6f894ef6db042c6ebebefd14eb844f53ff8f73 - md5: 240c2af59f95792f60193c1cb9ee42c5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.2.0-hcacfade_7.conda + sha256: 6a19411e3fe4e4f55509f4b0c374663b3f8903ed5ae1cc94be1b88846c50c269 + md5: 3d75679d5e2bd547cb52b913d73f69ef depends: - binutils_impl_linux-64 >=2.40 - - libgcc >=15.1.0 - - libgcc-devel_linux-64 15.1.0 h4c094af_102 - - libgomp >=15.1.0 - - libsanitizer 15.1.0 h97b714f_2 - - libstdcxx >=15.1.0 + - libgcc >=15.2.0 + - libgcc-devel_linux-64 15.2.0 h73f6952_107 + - libgomp >=15.2.0 + - libsanitizer 15.2.0 hb13aed2_7 + - libstdcxx >=15.2.0 - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 76467375 - timestamp: 1746642316078 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-15.1.0-h4393ad2_5.conda - sha256: 725aac2128459f5a7d38df35024e300c02bec33dc4ebb9d2bdd79e15858c5046 - md5: 4c1dbd9316a6916e63439f79d7a81c4b - depends: - - binutils_impl_linux-64 >=2.40 - - libgcc >=15.1.0 - - libgcc-devel_linux-64 15.1.0 h4c094af_105 - - libgomp >=15.1.0 - - libsanitizer 15.1.0 h97b714f_5 - - libstdcxx >=15.1.0 - - sysroot_linux-64 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 77602037 - timestamp: 1757042646901 + size: 77766660 + timestamp: 1759968214246 - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a md5: d411fc29e338efb48c5fd4576d71d881 @@ -7314,30 +7357,32 @@ packages: purls: [] size: 82090 timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.1.0-h3b9cdf2_2.conda - sha256: b45e2db6f2653a15ca2c5328cb41026275ad2582dfa73f10b229b3970ad0c034 - md5: b15802e15f82314305d29cf3c193bcf3 - depends: - - gcc_impl_linux-64 >=15.1.0 - - libgcc >=15.1.0 - - libgfortran5 >=15.1.0 - - libstdcxx >=15.1.0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-15.2.0-h1b0a18f_7.conda + sha256: 42e7708bafd41520290e74a904ebdd61049f2de90e8c1e984a889f36a2f5d140 + md5: e3881b0a8332d614c4f44269d655e34a + depends: + - gcc_impl_linux-64 >=15.2.0 + - libgcc >=15.2.0 + - libgfortran5 >=15.2.0 + - libstdcxx >=15.2.0 - sysroot_linux-64 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 18514037 - timestamp: 1746642514934 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.3.0-hbf5bf67_105.conda - sha256: c7d9cae04fa4becb2ba24cd6129748788f93ea0a0917e1266474322dea6df574 - md5: f56a107c8d1253346d01785ecece7977 + size: 18408383 + timestamp: 1759968476862 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.4.0-h61474f3_1.conda + sha256: a4cb030f459e51b15bb1831e7f3ec5a5200f585a3396cc9933154c090f4e8b1e + md5: dd1b2556e095e4544299ba65670a7cbb depends: - __osx >=10.13 + - cctools_osx-64 + - clang - gmp >=6.3.0,<7.0a0 - isl 0.26.* - libcxx >=17 - - libgfortran-devel_osx-64 13.3.0.* - - libgfortran5 >=13.3.0 + - libgfortran-devel_osx-64 13.4.0.* + - libgfortran5 >=13.4.0 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - mpc >=1.3.1,<2.0a0 @@ -7346,18 +7391,20 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - 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 + size: 20826530 + timestamp: 1759708791512 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.4.0-he7ca382_1.conda + sha256: b9173dd1c771d8c2d85f55f487a008155f79f05fc0a5676de9a3dc8174bfba68 + md5: a3f3a8fe77f7554d93e2b6733c76eed3 depends: - __osx >=11.0 + - cctools_osx-arm64 + - clang - gmp >=6.3.0,<7.0a0 - isl 0.26.* - libcxx >=17 - - libgfortran-devel_osx-arm64 13.3.0.* - - libgfortran5 >=13.3.0 + - libgfortran-devel_osx-arm64 13.4.0.* + - libgfortran5 >=13.4.0 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - mpc >=1.3.1,<2.0a0 @@ -7366,42 +7413,42 @@ packages: license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - 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 + size: 19071481 + timestamp: 1759711241897 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.4.0-h3223c34_0.conda + sha256: 08853eeff68182b6cdb302ada608dee9af7ea66484a8272ff8cca67c0c66879d + md5: 56ea286592261125ce76600bd67d5551 depends: - cctools_osx-64 - clang - clang_osx-64 - - gfortran_impl_osx-64 13.3.0 + - gfortran_impl_osx-64 13.4.0 - ld64_osx-64 - - libgfortran 5.* - - libgfortran-devel_osx-64 13.3.0 - - libgfortran5 >=13.3.0 + - libgfortran + - libgfortran-devel_osx-64 13.4.0 + - libgfortran5 >=13.4.0 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - 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 + size: 35772 + timestamp: 1751220489114 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.4.0-h3c33bd0_0.conda + sha256: 25af017fdc676b109cefba446da68efb9ede8fe1d21a4ad9cca0c10a137ba337 + md5: da7f34e66de5d337e7e6993cb4e57549 depends: - cctools_osx-arm64 - clang - clang_osx-arm64 - - gfortran_impl_osx-arm64 13.3.0 + - gfortran_impl_osx-arm64 13.4.0 - ld64_osx-arm64 - - libgfortran 5.* - - libgfortran-devel_osx-arm64 13.3.0 - - libgfortran5 >=13.3.0 + - libgfortran + - libgfortran-devel_osx-arm64 13.4.0 + - libgfortran5 >=13.4.0 license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 35872 - timestamp: 1742561757708 + size: 35843 + timestamp: 1751220434077 - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 md5: ff862eebdfeb2fd048ae9dc92510baca @@ -7458,37 +7505,40 @@ packages: purls: [] size: 365188 timestamp: 1718981343258 -- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda - sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add - md5: f87c7b7c2cb45f323ffbce941c78ab7c +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda + sha256: 25ba37da5c39697a77fce2c9a15e48cf0a84f1464ad2aafbe53d8357a9f6cc8c + md5: 2cd94587f3a401ae05e03a6caf09539d depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 96855 - timestamp: 1711634169756 -- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a - md5: fc7124f86e1d359fc5d878accd9e814c + size: 99596 + timestamp: 1755102025473 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda + sha256: c356eb7a42775bd2bae243d9987436cd1a442be214b1580251bb7fdc136d804b + md5: ba63822087afc37e01bf44edcc2479f3 depends: - - libcxx >=16 + - __osx >=10.13 + - libcxx >=19 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 84384 - timestamp: 1711634311095 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 - md5: 339991336eeddb70076d8ca826dac625 + size: 85465 + timestamp: 1755102182985 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda + sha256: c507ae9989dbea7024aa6feaebb16cbf271faac67ac3f0342ef1ab747c20475d + md5: 0fc46fee39e88bbcf5835f71a9d9a209 depends: - - libcxx >=16 + - __osx >=11.0 + - libcxx >=19 license: LGPL-2.0-or-later license_family: LGPL purls: [] - size: 79774 - timestamp: 1711634444608 + size: 81202 + timestamp: 1755102333712 - conda: https://conda.anaconda.org/conda-forge/noarch/graphlib-backport-1.0.3-pyhd8ed1ab_0.tar.bz2 sha256: 1a417887d6f2b770eae6154441be7a7819e9966ce495150e529e07922a5adb08 md5: 33c122658a309cc9fc0b1dda47a02a84 @@ -7564,19 +7614,19 @@ packages: purls: [] size: 2734398 timestamp: 1626369562748 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.1.0-h6a1bac1_2.conda - sha256: 897ecdad431c5e83981b488dea3d1396c59e64e3403206922fdeae5cff74ddf6 - md5: b36117536fc3b4e3e0db9b8ebaf0f3b7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-15.2.0-h54ccb8d_7.conda + sha256: 1fb7da99bcdab2ef8bd2458d8116600524207f3177d5c786d18f3dc5f824a4b8 + md5: f2da2e9e5b7c485f5a4344d5709d8633 depends: - - gcc_impl_linux-64 15.1.0 h4393ad2_2 - - libstdcxx-devel_linux-64 15.1.0 h4c094af_102 + - gcc_impl_linux-64 15.2.0 hcacfade_7 + - libstdcxx-devel_linux-64 15.2.0 h73f6952_107 - sysroot_linux-64 - tzdata license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 15354234 - timestamp: 1746642562842 + size: 16283256 + timestamp: 1759968538523 - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhd8ed1ab_0.conda sha256: f64b68148c478c3bfc8f8d519541de7d2616bf59d44485a5271041d40c061887 md5: 4b69232755285701bc86a5afe4d9933a @@ -7603,67 +7653,64 @@ packages: - pkg:pypi/h2?source=compressed-mapping size: 95967 timestamp: 1756364871835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.2.1-h3beb420_0.conda - sha256: 5bd0f3674808862838d6e2efc0b3075e561c34309c5c2f4c976f7f1f57c91112 - md5: 0e6e192d4b3d95708ad192d957cf3163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.4.5-h15599e2_0.conda + sha256: 9d0d74858e8f8b76f6d3bf11a7390e6eb18eb743dd6e5fd7c4e9822634556f6d + md5: 1276ae4aa3832a449fcb4253c30da4bc depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - freetype - - graphite2 + - graphite2 >=1.3.14,<2.0a0 - icu >=75.1,<76.0a0 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libgcc >=13 - - libglib >=2.84.1,<3.0a0 - - libstdcxx >=13 + - libgcc >=14 + - libglib >=2.84.3,<3.0a0 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1730226 - timestamp: 1747091044218 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.2.1-hdfbcdba_0.conda - sha256: ed21d2e7ebe6f77154b7b851dfd0c9e5d4b8c590badb54ca4094cee1cf9ad470 - md5: ecd1e793e20518bf438a0d5070465ecb + size: 2402438 + timestamp: 1756738217200 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_0.conda + sha256: 2b5e8af8a457af825360b0aef0b9641a675ea9b0e0945d1e469d8a0f3e1ddc06 + md5: 6dfe87116a746f3c2e93eec0df8386ec depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - - freetype - - graphite2 + - graphite2 >=1.3.14,<2.0a0 - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.7.0,<3.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 + - libglib >=2.84.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1470019 - timestamp: 1747091292339 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.2.1-hab40de2_0.conda - sha256: 244e4071229aa3b824dd2a9814c0e8b4c2b40dfb28914ec2247bf27c5c681584 - md5: 12f4520f618ff6e398a2c8e0bed1e580 + size: 1593280 + timestamp: 1756738433915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_0.conda + sha256: 8106c2941f842dad81444bbc7f68b08b65c63adb5d0ba399d7180926a51f8829 + md5: 0938e21caccd8fd5b30527396f8aaa82 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - freetype - - graphite2 + - graphite2 >=1.3.14,<2.0a0 - icu >=75.1,<76.0a0 - - libcxx >=18 - - libexpat >=2.7.0,<3.0a0 + - libcxx >=19 + - libexpat >=2.7.1,<3.0a0 - libfreetype >=2.13.3 - libfreetype6 >=2.13.3 - - libglib >=2.84.1,<3.0a0 + - libglib >=2.84.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 1395282 - timestamp: 1747091793921 + size: 1551301 + timestamp: 1756738697245 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -7804,8 +7851,9 @@ packages: - zipp >=3.20 - python license: Apache-2.0 + license_family: APACHE purls: - - pkg:pypi/importlib-metadata?source=compressed-mapping + - pkg:pypi/importlib-metadata?source=hash-mapping size: 34641 timestamp: 1747934053147 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-resources-6.5.2-pyhd8ed1ab_0.conda @@ -7927,6 +7975,7 @@ packages: constrains: - appnope >=0.1.2 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/ipykernel?source=hash-mapping size: 130575 @@ -7954,6 +8003,7 @@ packages: constrains: - appnope >=0.1.2 license: BSD-3-Clause + license_family: BSD purls: - pkg:pypi/ipykernel?source=hash-mapping size: 131994 @@ -8059,32 +8109,66 @@ packages: - jax-cuda12-plugin==0.4.38 ; extra == 'cuda12-local' - kubernetes ; extra == 'k8s' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/dc/89/99805cd801919b4535e023bfe2de651f5a3ec4f5846a867cbc08006db455/jax-0.6.1-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/d5/e6/5fd0f6fff79eb47469ff9c4fa27125b661517a2fbf8884689b02e9fdfaa8/jax-0.7.2-py3-none-any.whl name: jax - version: 0.6.1 - sha256: 69a4e4506caa5466702bdfd0d7a13d1f9b7281d473885721100a3087fcabf8f9 + version: 0.7.2 + sha256: e7e32f9be51ae5cc6854225958c57de8cca2187d279844338465b15e8a1fe7f2 requires_dist: - - jaxlib<=0.6.1,>=0.6.1 + - jaxlib<=0.7.2,>=0.7.2 - ml-dtypes>=0.5.0 - - numpy>=1.25 - - numpy>=1.26.0 ; python_full_version >= '3.12' + - numpy>=2.0 - opt-einsum - - scipy>=1.11.1 - - jaxlib==0.6.1 ; extra == 'minimum-jaxlib' - - jaxlib==0.6.0 ; extra == 'ci' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'tpu' - - libtpu==0.0.15.* ; extra == 'tpu' + - scipy>=1.13 + - jaxlib==0.7.2 ; extra == 'minimum-jaxlib' + - jaxlib==0.7.1 ; extra == 'ci' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'tpu' + - libtpu==0.0.23 ; extra == 'tpu' - requests ; extra == 'tpu' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jax-cuda12-plugin[with-cuda]<=0.6.1,>=0.6.1 ; extra == 'cuda12' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jax-cuda12-plugin<=0.6.1,>=0.6.1 ; extra == 'cuda12-local' - - jaxlib<=0.6.1,>=0.6.1 ; extra == 'rocm' - - jax-rocm60-plugin<=0.6.1,>=0.6.1 ; extra == 'rocm' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.7.2,>=0.7.2 ; extra == 'cuda' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.7.2,>=0.7.2 ; extra == 'cuda12' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'cuda13' + - jax-cuda13-plugin[with-cuda]<=0.7.2,>=0.7.2 ; extra == 'cuda13' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.7.2,>=0.7.2 ; extra == 'cuda12-local' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'cuda13-local' + - jax-cuda13-plugin<=0.7.2,>=0.7.2 ; extra == 'cuda13-local' + - jaxlib<=0.7.2,>=0.7.2 ; extra == 'rocm' + - jax-rocm60-plugin<=0.7.2,>=0.7.2 ; extra == 'rocm' - kubernetes ; extra == 'k8s' - requires_python: '>=3.10' + - xprof ; extra == 'xprof' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/b3/77/4e6c9a54247810eff8ac8a1af7dc1be0779b52df0d82f3fc8586061914f3/jax-0.8.0-py3-none-any.whl + name: jax + version: 0.8.0 + sha256: d190158bc019756c6a0f6b3d5fc8783471fb407e6deaff559eaac60dd5ee850a + requires_dist: + - jaxlib<=0.8.0,>=0.8.0 + - ml-dtypes>=0.5.0 + - numpy>=2.0 + - opt-einsum + - scipy>=1.13 + - jaxlib==0.8.0 ; extra == 'minimum-jaxlib' + - jaxlib==0.7.2 ; extra == 'ci' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'tpu' + - libtpu==0.0.24.* ; extra == 'tpu' + - requests ; extra == 'tpu' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'cuda' + - jax-cuda12-plugin[with-cuda]<=0.8.0,>=0.8.0 ; extra == 'cuda' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'cuda12' + - jax-cuda12-plugin[with-cuda]<=0.8.0,>=0.8.0 ; extra == 'cuda12' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'cuda13' + - jax-cuda13-plugin[with-cuda]<=0.8.0,>=0.8.0 ; extra == 'cuda13' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'cuda12-local' + - jax-cuda12-plugin<=0.8.0,>=0.8.0 ; extra == 'cuda12-local' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'cuda13-local' + - jax-cuda13-plugin<=0.8.0,>=0.8.0 ; extra == 'cuda13-local' + - jaxlib<=0.8.0,>=0.8.0 ; extra == 'rocm' + - jax-rocm60-plugin<=0.8.0,>=0.8.0 ; extra == 'rocm' + - kubernetes ; extra == 'k8s' + - xprof ; extra == 'xprof' + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/49/df/08b94c593c0867c7eaa334592807ba74495de4be90580f360db8b96221dc/jaxlib-0.4.38-cp312-cp312-macosx_10_14_x86_64.whl name: jaxlib version: 0.4.38 @@ -8105,51 +8189,51 @@ packages: - ml-dtypes>=0.2.0 - scipy>=1.11.1 ; python_full_version >= '3.12' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/59/89/b0a229bf0bd333ef1a5690682deee86f3b38f55613f1423bb2eb26b2d15c/jaxlib-0.6.1-cp313-cp313-manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/7b/73/b44fbe943c9e02e25c99eb64e6b86e2dde8d918d064326813b5bbe620951/jaxlib-0.7.2-cp312-cp312-manylinux_2_27_x86_64.whl name: jaxlib - version: 0.6.1 - sha256: e734be70fe3e1fa2a31415362721189d974d10a66b0f5396c84585587d101b15 + version: 0.7.2 + sha256: 11f32319e662ccff66859eb393757050d8971bd880bc4dd70dec6434d890fb59 requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/79/7b/bb5e24fc929513e3c310b3054d6588b1b6bbf241b5ca12f6eb3d51458981/jaxlib-0.6.1-cp312-cp312-manylinux2014_x86_64.whl + - scipy>=1.13 + - numpy>=2.0 + - ml-dtypes>=0.5.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/df/82/324ffb86a6de8c149689b499b6dc6e4f83684fe43ae9e81c8e5eb91bc50f/jaxlib-0.7.2-cp312-cp312-macosx_11_0_arm64.whl name: jaxlib - version: 0.6.1 - sha256: d039124468565bbf39363b1504c190e6719e6af89a7948dee256f1dee813bb94 + version: 0.7.2 + sha256: bd6d1c53bd475e0e768a54af98b1642fb49d7304cf055ceebb1d01e89d38a1cb requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/83/76/fec2772816bad8ee3f7b450bf3e0927d5e158c45a57b6cd92a48b80bfb1a/jaxlib-0.6.1-cp312-cp312-macosx_11_0_arm64.whl + - scipy>=1.13 + - numpy>=2.0 + - ml-dtypes>=0.5.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/2a/17/c6d9dc31001a495cb3c52fa69b22a0d8812880cb853f7c0573e2a5edad82/jaxlib-0.8.0-cp312-cp312-win_amd64.whl name: jaxlib - version: 0.6.1 - sha256: e14195c23eecd559a61c31027b4172e912e5a50f630320918ffdfae83090ca5a + version: 0.8.0 + sha256: 659d894d93876e3675c2132d13c3d241f204b21172a58f928b96f654f603f6dc requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/8a/b8/6d540bd4b05d1fdfdb140772ea337051d16fb22fd6636d1be88a2848a930/jaxlib-0.6.1-cp313-cp313-macosx_11_0_arm64.whl + - scipy>=1.13 + - numpy>=2.0 + - ml-dtypes>=0.5.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/8f/f0/cde1d84c737bdb75712f70d69561120ce91f3f294acf2fba573c0de740b6/jaxlib-0.8.0-cp313-cp313-manylinux_2_27_x86_64.whl name: jaxlib - version: 0.6.1 - sha256: f4ca75d9d47a2e90099adfede0e9c926b83ef703d349b3289b8c88e861c09e5d + version: 0.8.0 + sha256: 66c6f576f54a63ed052f5c469bef4db723f5f050b839ec0c429573011341bd58 requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/f2/ea/cf861b8971f4362be8948fd0ef61a55866b8cc6f562ae0c9671a9d289f99/jaxlib-0.6.1-cp313-cp313-win_amd64.whl + - scipy>=1.13 + - numpy>=2.0 + - ml-dtypes>=0.5.0 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/f6/76/f11130a3a6318a50662be4ee8c7ab6e61f3f334978653243ebc9d6f5d0bb/jaxlib-0.8.0-cp313-cp313-macosx_11_0_arm64.whl name: jaxlib - version: 0.6.1 - sha256: b12c8842b2dfc0770ca3785e183f7bed3fa1c2596c720591dbfbe29a05045108 + version: 0.8.0 + sha256: 5fcf33a5639f8f164a473a9c78a1fa0b2e15ac3fcbecd6d96aa0f88bf25ea6bb requires_dist: - - scipy>=1.11.1 - - numpy>=1.25 - - ml-dtypes>=0.2.0 - requires_python: '>=3.10' + - scipy>=1.13 + - numpy>=2.0 + - ml-dtypes>=0.5.0 + requires_python: '>=3.11' - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 @@ -8170,7 +8254,7 @@ packages: license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/jinja2?source=compressed-mapping + - pkg:pypi/jinja2?source=hash-mapping size: 112714 timestamp: 1741263433881 - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.2-pyhd8ed1ab_0.conda @@ -8312,20 +8396,23 @@ packages: - pkg:pypi/jupyter-client?source=hash-mapping size: 106342 timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.8.1-pyh31011fe_0.conda - sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 - md5: b7d89d860ebcda28a5303526cdee68ab +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda + sha256: 1d34b80e5bfcd5323f104dbf99a2aafc0e5d823019d626d0dce5d3d356a2a52a + md5: b38fe4e78ee75def7e599843ef4c1ab0 depends: - __unix + - python - platformdirs >=2.5 - - python >=3.8 + - python >=3.10 - traitlets >=5.3 + - python + constrains: + - pywin32 >=300 license: BSD-3-Clause - license_family: BSD purls: - - pkg:pypi/jupyter-core?source=hash-mapping - size: 59562 - timestamp: 1748333186063 + - pkg:pypi/jupyter-core?source=compressed-mapping + size: 65503 + timestamp: 1760643864586 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 md5: f56000b36f09ab7533877e695e4e8cb0 @@ -8466,16 +8553,6 @@ packages: - pkg:pypi/jupytext?source=hash-mapping size: 102909 timestamp: 1705172248226 -- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-he073ed8_18.conda - sha256: a922841ad80bd7b222502e65c07ecb67e4176c4fa5b03678a005f39fcc98be4b - md5: ad8527bf134a90e1c9ed35fa0b64318c - constrains: - - sysroot_linux-64 ==2.17 - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 - license_family: GPL - purls: [] - size: 943486 - timestamp: 1729794504440 - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_8.conda sha256: 305c22a251db227679343fd73bfde121e555d466af86e537847f4c8b9436be0d md5: ff007ab0f0fdc53d245972bba8a6d40c @@ -8483,17 +8560,19 @@ packages: - sysroot_linux-64 ==2.28 license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL + purls: [] size: 1272697 timestamp: 1752669126073 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 depends: - - libgcc-ng >=10.3.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: LGPL-2.1-or-later purls: [] - size: 117831 - timestamp: 1646151697040 + size: 134088 + timestamp: 1754905959823 - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py312h0a2e395_1.conda sha256: 42f856c17ea4b9bce5ac5e91d6e58e15d835a3cac32d71bc592dd5031f9c0fb8 md5: cec5c1ea565944a94f82cdd6fba7cc76 @@ -8582,6 +8661,24 @@ packages: - pkg:pypi/kiwisolver?source=hash-mapping size: 68324 timestamp: 1756467625109 +- conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py312h78d62e6_1.conda + sha256: b47cbb03f268bf0a048df9d455f50bd2e790debf971c450a89a3a56d66a50468 + md5: c7c58703547905737c1ee1abf18c4644 + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/kiwisolver?source=hash-mapping + size: 73626 + timestamp: 1756467571435 - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_1.conda sha256: 774b67a7d93c373db620ada8353fc5ab28a976f8b4a7e53d4dd9a522f3d82100 md5: 70f93375919f715a9dd2ca9517e57728 @@ -8596,8 +8693,6 @@ packages: - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/kiwisolver?source=hash-mapping size: 73810 timestamp: 1756467536678 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda @@ -8705,56 +8800,84 @@ packages: purls: [] size: 510641 timestamp: 1739161381270 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-hc68d7ca_6.conda - sha256: 4398ca61ad589d7f233195bb8b98629fc066e5daf08e68ff70cd2ee80f35e28c - md5: dc020c6d538c41f03ebb849c46749d09 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-955.13-h2eed689_5.conda + sha256: 5518386f353e744e1925e2a8ac4c5813465a19793d2164f07c97b728656df5eb + md5: 1843378027da60e6794757da129e2185 + depends: + - ld64_osx-64 955.13 llvm21_1_h2cc85ee_5 + - libllvm21 >=21.1.2,<21.2.0a0 + constrains: + - cctools 1024.3.* + - cctools_osx-64 1024.3.* + license: APSL-2.0 + license_family: Other + purls: [] + size: 18662 + timestamp: 1759697811409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-955.13-h5d6df6c_5.conda + sha256: 6250e7ed87482eb6f7eb313bbb128a7b55a8b0f4e20f66bbe51518011b64fb40 + md5: 5374da26c23090d58c6ed3379e02b05e + depends: + - ld64_osx-arm64 955.13 llvm21_1_hde6573c_5 + - libllvm21 >=21.1.2,<21.2.0a0 + constrains: + - cctools_osx-arm64 1024.3.* + - cctools 1024.3.* + license: APSL-2.0 + license_family: Other + purls: [] + size: 18738 + timestamp: 1759697731889 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-955.13-llvm21_1_h2cc85ee_5.conda + sha256: f3c255487ea206f025124d7be97a5ceb9a5bcbd935e2e01a9bceee39d67e1045 + md5: 3955c6731362e3e3e8925b094580347d depends: - __osx >=10.13 - libcxx - - libllvm20 >=20.1.2,<20.2.0a0 + - libllvm21 >=21.1.2,<21.2.0a0 - sigtool - tapi >=1300.6.5,<1301.0a0 constrains: - - cctools_osx-64 1010.6.* - - clang >=20.1.2,<21.0a0 - - cctools 1010.6.* - - ld 951.9.* + - clang 21.1.* + - ld64 955.13.* + - cctools 1024.3.* + - cctools_osx-64 1024.3.* license: APSL-2.0 license_family: Other purls: [] - size: 1098888 - timestamp: 1743872208156 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-hcfee506_6.conda - sha256: 5b8a85934c4117502837c66e912d7f5d719f7b676bca49ca6ccd884b156260dd - md5: e3d748217ae07f5e99d76ede5078a57d + size: 1111469 + timestamp: 1759697726026 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-955.13-llvm21_1_hde6573c_5.conda + sha256: ba4811029a27462661d346604800a88a0f9681edb0e1be605fede6f88eaa2feb + md5: bd04c50157bcc6758b9893b2933d258e depends: - __osx >=11.0 - libcxx - - libllvm20 >=20.1.2,<20.2.0a0 + - libllvm21 >=21.1.2,<21.2.0a0 - sigtool - tapi >=1300.6.5,<1301.0a0 constrains: - - cctools_osx-arm64 1010.6.* - - ld 951.9.* - - cctools 1010.6.* - - clang >=20.1.2,<21.0a0 + - ld64 955.13.* + - cctools_osx-arm64 1024.3.* + - clang 21.1.* + - cctools 1024.3.* license: APSL-2.0 license_family: Other purls: [] - size: 1021994 - timestamp: 1743872144193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 - md5: 01f8d123c96816249efd255a31ad7712 + size: 1032210 + timestamp: 1759697661612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.44-ha97dd6f_2.conda + sha256: 707dfb8d55d7a5c6f95c772d778ef07a7ca85417d9971796f7d3daad0b615de8 + md5: 14bae321b8127b63cba276bd53fac237 depends: - __glibc >=2.17,<3.0.a0 constrains: - - binutils_impl_linux-64 2.43 + - binutils_impl_linux-64 2.44 license: GPL-3.0-only license_family: GPL purls: [] - size: 671240 - timestamp: 1740155456116 + size: 747158 + timestamp: 1758810907507 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -8801,55 +8924,62 @@ packages: purls: [] size: 164701 timestamp: 1745264384716 -- pypi: https://files.pythonhosted.org/packages/04/33/4b186ae06ac8ff472b02878df203dc470f14e0902d00a58343aee6dff010/lets_plot-4.6.2-cp312-cp312-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/16/5d/846f28b557ea5b22158ece2423f1728de42585007540de7d9bba09210054/lets_plot-4.7.3-cp313-cp313-macosx_10_15_x86_64.whl name: lets-plot - version: 4.6.2 - sha256: 8ee4e0a4a2125959c222c68e554c347b4104314bd21848b2eaa38dc7b3a6cab2 + version: 4.7.3 + sha256: aefb1672a6cb392a7e6fadbb400f965db54c25d24197b5da811a23fa527a857d requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/30/57/452beacbeca5a2254f51c0c566f6124890400ee997469f2dcf48f08b624b/lets_plot-4.6.2-cp313-cp313-win_amd64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/4b/c8/2986512cf9a1e2a61d9e3172bcdc65be2054e93a9e8d2b23444df7c7cd60/lets_plot-4.7.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: lets-plot - version: 4.6.2 - sha256: f5c5943c2180b213c12e319f3f2feb9fdc429fb3043a5cf9dc112a18c485dedf + version: 4.7.3 + sha256: 0450a15076dbf7e97ad4573f52fe100fc2586138aecb9ffd5cba78ee54f8dbac requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/3f/64/e72be7b84b6db0f6749a1ad1ae711909931b9f4526d7ffd5c612ef53e1bc/lets_plot-4.6.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/54/b6/1d4725f1b97c81f9b5eb95b2cc775774358d492598ba5c5bf98d5b7ae4ff/lets_plot-4.7.3-cp312-cp312-macosx_11_0_arm64.whl name: lets-plot - version: 4.6.2 - sha256: 8602d254f218f175c2ce51664879b0657a84e14bc3fff2140b96b18a1f0a2629 + version: 4.7.3 + sha256: 5cf2238d871663ab08b910ed500b1593d08f24dc6683e5c8513b51ec49e9931b requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/55/24/6bb37fd04571ec44ca55cf96c6f61d67ce9909042b5a17d9e43cbc1c4cfd/lets_plot-4.6.2-cp313-cp313-macosx_10_15_x86_64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/76/5e/7ed4bf0d02822a8177a20361d1438b033e4065d7330549532444a405af9e/lets_plot-4.7.3-cp312-cp312-macosx_10_15_x86_64.whl name: lets-plot - version: 4.6.2 - sha256: 33c0cb946d8bcf6ba0f1a023f68350c5d2df75164b0f66b5db68d6ccdb2691a7 + version: 4.7.3 + sha256: 0678696c54ccca954c32cdf4983cb1e0fdfe3b95d8998f8d0daeff794fa160b5 requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/8d/08/4e81517365e8356ee307a0708206d656d35b3f59a27a44bd34061a068edb/lets_plot-4.6.2-cp313-cp313-macosx_11_0_arm64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/94/e7/98e3cdb46ff5b94832904189c8a413d3026a0580ab980f4e679c57c1cda5/lets_plot-4.7.3-cp313-cp313-macosx_11_0_arm64.whl name: lets-plot - version: 4.6.2 - sha256: c639377a294bdeb391b0f6232bb900f515539b7fe50fe81c50bfd70e6905580a + version: 4.7.3 + sha256: 5574560c71c8deba3c074cdd654211bd9e4db401013959b983d3b510dcb1ebab requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/a0/0a/f910551cd019df2858800607ae0e9be4fc4a9a34f99363c3bb521c8a1450/lets_plot-4.6.2-cp312-cp312-macosx_10_15_x86_64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/ec/18/75b1d5c2c345b8ef34e0d01cc3100a7edd3f4d7d983dcde62f3ecdbc24ec/lets_plot-4.7.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: lets-plot - version: 4.6.2 - sha256: 9ae23c27db34c9925fbedcb737bc0c466f15d81b44bf6b28b98e5e00c77dad51 + version: 4.7.3 + sha256: 4064a29ea8e026f526fa46ad683f250e671e2136f480bafe0e8faf1aaf5d2852 requires_dist: - pypng - palettable -- pypi: https://files.pythonhosted.org/packages/e1/1e/8857c119c67c753a436f06e84c8a5397aebaa25acb2e1ff7af2c38915ff5/lets_plot-4.6.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pillow +- pypi: https://files.pythonhosted.org/packages/f5/45/71408e2c43d05404e0062a6bdb1601ee4602d398d6d962bce392677833d7/lets_plot-4.7.3-cp312-cp312-win_amd64.whl name: lets-plot - version: 4.6.2 - sha256: 0ab6d5d05e458287356c84dd36f592e0313374a5012d074398051a8bf74cbbee + version: 4.7.3 + sha256: 4e6394e6438cf634c52c8bbe535747340b7ca3022d61eaecad9b0333a9fd91b6 requires_dist: - pypng - palettable + - pillow - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda sha256: dcd1429a1782864c452057a6c5bc1860f2b637dc20a2b7e6eacd57395bbceff8 md5: 83b160d4da3e1e847bf044997621ed63 @@ -9225,80 +9355,80 @@ packages: purls: [] size: 452889 timestamp: 1759482755723 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.24.1-h27064b9_0.conda - sha256: 86febbb2cc53b0978cb22057da2e9dc8f07ffe96305148d011c241c3eae668d0 - md5: 9d7c96ed1ebdf2f180b20d3e09a4c694 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.25.1-h3184127_1.conda + sha256: 44e703d8fe739a71e9f7b89d04b56ccfaf488989f7712256bc0fcaf101e796a4 + md5: 37398594a1ede86a90c0afac95e1ffea depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=19 license: LGPL-2.1-or-later purls: [] - size: 51904 - timestamp: 1746229317266 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.24.1-h493aca8_0.conda - sha256: 54293ab2ce43085ac424dc62804fd4d7ec62cce404a77f0c99a9a48857bca0a9 - md5: b5a77d2b7c2013b3b1ffce193764302f + size: 51955 + timestamp: 1753343931663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.25.1-h493aca8_0.conda + sha256: 7265547424e978ea596f51cc8e7b81638fb1c660b743e98cc4deb690d9d524ab + md5: 0deb80a2d6097c5fb98b495370b2435b depends: - __osx >=11.0 - libcxx >=18 license: LGPL-2.1-or-later purls: [] - size: 52180 - timestamp: 1746229244376 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - build_number: 31 - sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 - md5: 728dbebd0f7a20337218beacffd37916 + size: 52316 + timestamp: 1751558366611 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-37_h4a7cf45_openblas.conda + build_number: 37 + sha256: b8872684dc3a68273de2afda2a4a1c79ffa3aab45fcfc4f9b3621bd1cc1adbcc + md5: 8bc098f29d8a7e3517bac5b25aab39b1 depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.137 openblas + - liblapacke 3.9.0 37*_openblas + - liblapack 3.9.0 37*_openblas - mkl <2025 - - libcblas =3.9.0=31*_openblas + - libcblas 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16859 - timestamp: 1740087969120 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-31_h7f60823_openblas.conda - build_number: 31 - sha256: 2192f9cfa72a1a6127eb1c57a9662eb1b44c6506f2b7517cf021f1262d2bf56d - md5: a8c1c9f95d1c46d67028a6146c1ea77c + size: 17477 + timestamp: 1760212730445 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-37_he492b99_openblas.conda + build_number: 37 + sha256: acb6e26ccd1b0ab365b4675f31a689523d217443bf3af64c4a48578ba01298c5 + md5: bcc2cce1ec0cad310fdffb0d99c94466 depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas + - liblapack 3.9.0 37*_openblas - mkl <2025 - - liblapack =3.9.0=31*_openblas + - blas 2.137 openblas + - liblapacke 3.9.0 37*_openblas + - libcblas 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17105 - timestamp: 1740087945188 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - build_number: 31 - sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f - md5: 39b053da5e7035c6592102280aa7612a + size: 17706 + timestamp: 1760213529088 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-37_h51639a9_openblas.conda + build_number: 37 + sha256: 544f935351201a4bea7e1dae0b240ce619febf56655724c64481ec694293bc64 + md5: 675aec03581d97a77f7bb47e99fed4b4 depends: - - libopenblas >=0.3.29,<0.3.30.0a0 - - libopenblas >=0.3.29,<1.0a0 + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas + - liblapacke 3.9.0 37*_openblas + - blas 2.137 openblas - mkl <2025 - - liblapack =3.9.0=31*_openblas + - liblapack 3.9.0 37*_openblas + - libcblas 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17123 - timestamp: 1740088119350 + size: 17647 + timestamp: 1760213578751 - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-35_h5709861_mkl.conda build_number: 35 sha256: 4180e7ab27ed03ddf01d7e599002fcba1b32dcb68214ee25da823bac371ed362 @@ -9452,51 +9582,51 @@ packages: purls: [] size: 245418 timestamp: 1756599770744 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda - build_number: 31 - sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d - md5: abb32c727da370c481a1c206f5159ce9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-37_h0358290_openblas.conda + build_number: 37 + sha256: 8e5a6014424cc11389ebf3febedad937aa4a00e48464831ae4dec69f3c46c4ab + md5: 3794858d4d6910a7fc3c181519e0b77a depends: - - libblas 3.9.0 31_h59b9bed_openblas + - libblas 3.9.0 37_h4a7cf45_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - liblapack =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.137 openblas + - liblapacke 3.9.0 37*_openblas + - liblapack 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16796 - timestamp: 1740087984429 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-31_hff6cab4_openblas.conda - build_number: 31 - sha256: a64b24e195f7790722e1557ff5ed9ecceaaf85559b182d0d03fa61c1fd60326c - md5: c655cc2b0c48ec454f7a4db92415d012 + size: 17474 + timestamp: 1760212737633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-37_h9b27e0a_openblas.conda + build_number: 37 + sha256: 750d1d6335158c1ac0141330145ddde42828c90dea1c7881730c56dfea424358 + md5: 8051e584c52b31e246ecc8cd927a6e31 depends: - - libblas 3.9.0 31_h7f60823_openblas + - libblas 3.9.0 37_he492b99_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas + - liblapacke 3.9.0 37*_openblas + - liblapack 3.9.0 37*_openblas + - blas 2.137 openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17006 - timestamp: 1740087955460 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - build_number: 31 - sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 - md5: 7353c2bf0e90834cb70545671996d871 + size: 17674 + timestamp: 1760213551530 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-37_hb0561ab_openblas.conda + build_number: 37 + sha256: 911a01cac0c76d52628fdfe2aecfa010b4145af630ec23fe3fefa7a4c8050a57 + md5: 33ab91e02a34879065d03bb010eb6bf1 depends: - - libblas 3.9.0 31_h10e41b3_openblas + - libblas 3.9.0 37_h51639a9_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapack =3.9.0=31*_openblas + - liblapacke 3.9.0 37*_openblas + - blas 2.137 openblas + - liblapack 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17032 - timestamp: 1740088127097 + size: 17639 + timestamp: 1760213591611 - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-35_h2a3cdd5_mkl.conda build_number: 35 sha256: 88939f6c1b5da75bd26ce663aa437e1224b26ee0dab5e60cecc77600975f397e @@ -9512,30 +9642,30 @@ packages: purls: [] size: 66398 timestamp: 1757003514529 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp20.1-20.1.5-default_hf9570e0_1.conda - sha256: 777063d98f0d554b35c282c0a219a7133d407bc1e9b35b5b1e558a1c7e99dd1f - md5: a5486c8aa2fcbb62f7ca20b1e98095c7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp21.1-21.1.3-default_hc369343_0.conda + sha256: 9e3284895c2a2a7b47b2ab4551bb177352b8bd54d07981dedde1dbc918ef3ccf + md5: 0799b44e654fb30650b33bd598663e56 depends: - __osx >=10.13 - - libcxx >=20.1.5 - - libllvm20 >=20.1.5,<20.2.0a0 + - libcxx >=21.1.3 + - libllvm21 >=21.1.3,<21.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 14510224 - timestamp: 1747694051585 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp20.1-20.1.5-default_h03658f6_1.conda - sha256: 198d756d04924bc37063902fdbe66381bd829ab29db99649f914f280392b01c3 - md5: afc9467124d1ad04e39d74064418f779 + size: 14450894 + timestamp: 1760316600949 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp21.1-21.1.3-default_h73dfc95_0.conda + sha256: a6fedb775521f955d4b2e86e2d553b1724468bdd5e4a6b245d0966e3bbecd08f + md5: f388ddaa9b5452dd151b881af9feb2da depends: - __osx >=11.0 - - libcxx >=20.1.5 - - libllvm20 >=20.1.5,<20.2.0a0 + - libcxx >=21.1.3 + - libllvm21 >=21.1.3,<21.2.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 13942597 - timestamp: 1747694278685 + size: 13681060 + timestamp: 1760314646402 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -9616,46 +9746,46 @@ packages: purls: [] size: 403456 timestamp: 1749033320430 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-20.1.6-hf95d169_0.conda - sha256: fbc7a8ef613669f3133bb2b0bc5b36f4c51987bb74769b018377fac96610863b - md5: 460934df319a215557816480e9ea78cf +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.3-h3d58e20_0.conda + sha256: 9bba2ce10e1c390a4091ca48fab0c71c010f6526c27ac2da53399940ad4c113f + md5: 432d125a340932454d777b66b09c32a1 depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 561657 - timestamp: 1748495006359 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.6-ha82da77_0.conda - sha256: b74ec832ec05571f8747c9bd5f96b93d76489909b4f6f37d99d576dc955f21e9 - md5: 95c1830841844ef54e07efed1654b47f + size: 571632 + timestamp: 1760166417842 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.3-hf598326_0.conda + sha256: b9bad452e3e1d0cc597d907681461341209cb7576178d5c1933026a650b381d1 + md5: e976227574dfcd0048324576adf8d60d depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 567539 - timestamp: 1748495055530 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-20.1.6-h7c275be_0.conda - sha256: 14ea26a17c2622df7eff81cb8a075709e2b02af94fa1cc664226e1eac208d064 - md5: 7d7b4b96a0e91a4e08beceb7a65c67a0 + size: 568715 + timestamp: 1760166479630 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-21.1.3-h7c275be_0.conda + sha256: e364d4344fcceb8d07b7d964ad5bcade7179f5a45a192fa4a7be211cdba9f998 + md5: 831c4107796e2b952841fa8842d0fe3e depends: - - libcxx >=20.1.6 + - libcxx >=21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 1240332 - timestamp: 1748495019513 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-20.1.6-h6dc3340_0.conda - sha256: 8bb9cf18fb540d485dbc100fa489eaf5f35c0a12e4161896a2536b5eb06d206c - md5: 53878bdabe9f658195b6c6f7468046a5 + size: 1113323 + timestamp: 1760166434430 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-21.1.3-h6dc3340_0.conda + sha256: b3de7bbacf993cddbd568fd13c3c12789e0aadcf0f83442a574870efce35de21 + md5: b318362ecbd1958ee4c30d184e7db5db depends: - - libcxx >=20.1.6 + - libcxx >=21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 1226520 - timestamp: 1748495067079 + size: 1135583 + timestamp: 1760166493334 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -9793,19 +9923,6 @@ packages: purls: [] size: 368167 timestamp: 1685726248899 -- 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.7.0.* - license: MIT - license_family: MIT - purls: [] - size: 74427 - timestamp: 1743431794976 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda sha256: da2080da8f0288b95dd86765c801c6e166c4619b910b11f9a8446fb852438dc2 md5: 4211416ecba1866fab0c6470986c22d6 @@ -9819,18 +9936,6 @@ packages: purls: [] size: 74811 timestamp: 1752719572741 -- 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.7.0.* - license: MIT - license_family: MIT - purls: [] - size: 71894 - timestamp: 1743431912423 - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.1-h21dd04a_0.conda sha256: 689862313571b62ee77ee01729dc093f2bf25a2f99415fcfe51d3a6cd31cce7b md5: 9fdeae0b7edda62e989557d645769515 @@ -9843,18 +9948,6 @@ packages: purls: [] size: 72450 timestamp: 1752719744781 -- 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.7.0.* - license: MIT - license_family: MIT - purls: [] - size: 65714 - timestamp: 1743431789879 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda sha256: 8fbb17a56f51e7113ed511c5787e0dec0d4b10ef9df921c4fd1cccca0458f648 md5: b1ca5f21335782f71a8bd69bdc093f67 @@ -9924,15 +10017,6 @@ packages: purls: [] size: 44978 timestamp: 1743435053850 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.13.3-ha770c72_1.conda - sha256: 7be9b3dac469fe3c6146ff24398b685804dfc7a1de37607b84abd076f57cc115 - md5: 51f5be229d83ecd401fb369ab96ae669 - depends: - - libfreetype6 >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 7693 - timestamp: 1745369988361 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda sha256: 4641d37faeb97cf8a121efafd6afd040904d4bca8c46798122f417c31d5dfbec md5: f4084e4e6577797150f9b04a4560ceb0 @@ -9942,15 +10026,6 @@ packages: purls: [] size: 7664 timestamp: 1757945417134 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.13.3-h694c41f_1.conda - sha256: afe0e2396844c8cfdd6256ac84cabc9af823b1727f704c137b030b85839537a6 - md5: 07c8d3fbbe907f32014b121834b36dd5 - depends: - - libfreetype6 >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 7805 - timestamp: 1745370212559 - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda sha256: 035e23ef87759a245d51890aedba0b494a26636784910c3730d76f3dc4482b1d md5: e0e2edaf5e0c71b843e25a7ecc451cc9 @@ -9960,15 +10035,6 @@ packages: purls: [] size: 7780 timestamp: 1757945952392 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.13.3-hce30654_1.conda - sha256: 1f8c16703fe333cdc2639f7cdaf677ac2120843453222944a7c6c85ec342903c - md5: d06282e08e55b752627a707d58779b8f - depends: - - libfreetype6 >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 7813 - timestamp: 1745370144506 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda sha256: 9de25a86066f078822d8dd95a83048d7dc2897d5d655c0e04a8a54fca13ef1ef md5: f35fb38e89e2776994131fbf961fa44b @@ -9987,20 +10053,6 @@ packages: purls: [] size: 8109 timestamp: 1757946135015 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.13.3-h48d6fc4_1.conda - sha256: 7759bd5c31efe5fbc36a7a1f8ca5244c2eabdbeb8fc1bee4b99cf989f35c7d81 - md5: 3c255be50a506c50765a93a6644f32fe - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - freetype >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 380134 - timestamp: 1745369987697 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda sha256: 4a7af818a3179fafb6c91111752954e29d3a2a950259c14a2fc7ba40a8b03652 md5: 8e7251989bca326a28f4a5ffbd74557a @@ -10015,19 +10067,6 @@ packages: purls: [] size: 386739 timestamp: 1757945416744 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.13.3-h40dfd5c_1.conda - sha256: 058165962aa64fc5a6955593212c0e1ea42ca6d6dba60ee61dff612d4c3818d7 - md5: c76e6f421a0e95c282142f820835e186 - depends: - - __osx >=10.13 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - freetype >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 357654 - timestamp: 1745370210187 - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda sha256: f5f28092e368efc773bcd1c381d123f8b211528385a9353e36f8808d00d11655 md5: dfbdc8fd781dc3111541e4234c19fdbd @@ -10041,19 +10080,6 @@ packages: purls: [] size: 374993 timestamp: 1757945949585 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.13.3-h1d14073_1.conda - sha256: c278df049b1a071841aa0aca140a338d087ea594e07dcf8a871d2cfe0e330e75 - md5: b163d446c55872ef60530231879908b9 - depends: - - __osx >=11.0 - - libpng >=1.6.47,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - freetype >=2.13.3 - license: GPL-2.0-only OR FTL - purls: [] - size: 333529 - timestamp: 1745370142848 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda sha256: cc4aec4c490123c0f248c1acd1aeab592afb6a44b1536734e20937cda748f7cd md5: 6d4ede03e2a8e20eb51f7f681d2a2550 @@ -10082,20 +10108,20 @@ packages: purls: [] size: 340264 timestamp: 1757946133889 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda + sha256: 08f9b87578ab981c7713e4e6a7d935e40766e10691732bba376d4964562bcb45 + md5: c0374badb3a5d4b1372db28d19462c53 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 + - libgomp 15.2.0 h767d61c_7 + - libgcc-ng ==15.2.0=*_7 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 829108 - timestamp: 1746642191935 + size: 822552 + timestamp: 1759968052178 - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h1383e82_7.conda sha256: 174c4c75b03923ac755f227c96d956f7b4560a4b7dd83c0332709c50ff78450f md5: 926a82fc4fa5b284b1ca1fb74f20dee2 @@ -10111,71 +10137,72 @@ packages: purls: [] size: 667897 timestamp: 1759976063036 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.1.0-h4c094af_102.conda - sha256: f379980c3d48ceabf8ade0ebc5bdb4acd41e4b1c89023b673deb212e51b7a7f6 - md5: c49792270935d4024aef12f8e49f0f9c +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.2.0-h73f6952_107.conda + sha256: 67323768cddb87e744d0e593f92445cd10005e04259acd3e948c7ba3bcb03aed + md5: 85fce551e54a1e81b69f9ffb3ade6aee depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 2733483 - timestamp: 1746642098272 -- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-15.1.0-h4c094af_105.conda - sha256: 714648a02a42bf9c9ee63be4d56ee88de0c66e3b1c8f041995512173b0482278 - md5: a38922dbdf037d78b3d00d6d0a0399da - depends: - - __unix - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 2728198 - timestamp: 1757042471636 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 + size: 2728965 + timestamp: 1759967882886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda + sha256: 2045066dd8e6e58aaf5ae2b722fb6dfdbb57c862b5f34ac7bfb58c40ef39b6ad + md5: 280ea6eee9e2ddefde25ff799c4f0363 depends: - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.2.0 h767d61c_7 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 34586 - timestamp: 1746642200749 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.24.1-h27064b9_0.conda - sha256: e26e5bfe706c37cfbcbfe7598d3ebcdf4c39d89a9497e6c9bfe9069b0a18e3f3 - md5: facba41133c6e10d9f67b1a12f66bd3a + size: 29313 + timestamp: 1759968065504 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.25.1-h3184127_1.conda + sha256: 0509a41da5179727d24092020bc3d4addcb24a421c2e889d32a4035652fab2cf + md5: 711bff88af3b00283f7d8f32aff82e6a depends: - __osx >=10.13 - libiconv >=1.18,<2.0a0 - - libintl 0.24.1 h27064b9_0 + - libintl 0.25.1 h3184127_1 license: GPL-3.0-or-later license_family: GPL purls: [] - size: 192819 - timestamp: 1746229371415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.24.1-h493aca8_0.conda - sha256: 0f380fee5d5dc870b6b9d3134cca344965d68bbf454f6ac741907fee4cc3e07a - md5: 218a45f477876644cf75c7ed0b5158c7 + size: 198908 + timestamp: 1753344027461 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.25.1-h493aca8_0.conda + sha256: 3ba35ff26b3b9573b5df5b9bbec5c61476157ec3a9f12c698e2a9350cd4338fd + md5: 98acd9989d0d8d5914ccc86dceb6c6c2 depends: - __osx >=11.0 - libiconv >=1.18,<2.0a0 - - libintl 0.24.1 h493aca8_0 + - libintl 0.25.1 h493aca8_0 license: GPL-3.0-or-later license_family: GPL purls: [] - size: 176982 - timestamp: 1746229282723 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 - md5: f92e6e0a3c0c0c85561ef61aa59d555d + size: 183091 + timestamp: 1751558452316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_7.conda + sha256: 9ca24328e31c8ef44a77f53104773b9fe50ea8533f4c74baa8489a12de916f02 + md5: 8621a450add4e231f676646880703f49 depends: - - libgfortran5 15.1.0 hcea5267_2 + - libgfortran5 15.2.0 hcd61629_7 constrains: - - libgfortran-ng ==15.1.0=*_2 + - libgfortran-ng ==15.2.0=*_7 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 29275 + timestamp: 1759968110483 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h306097a_1.conda + sha256: 97551952312cf4954a7ad6ba3fd63c739eac65774fe96ddd121c67b5196a8689 + md5: cd5393330bff47a00d37a117c65b65d0 + depends: + - libgfortran5 15.2.0 h336fb69_1 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 34541 - timestamp: 1746642233221 + size: 134506 + timestamp: 1759710031253 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-14_2_0_h51e75f0_103.conda sha256: 124dcd89508bd16f562d9d3ce6a906336a7f18e963cd14f2877431adee14028e md5: 090b3c9ae1282c8f9b394ac9e4773b10 @@ -10186,6 +10213,16 @@ packages: purls: [] size: 156202 timestamp: 1743862427451 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-hfcf01ff_1.conda + sha256: e9a5d1208b9dc0b576b35a484d527d9b746c4e65620e0d77c44636033b2245f0 + md5: f699348e3f4f924728e33551b1920f79 + depends: + - libgfortran5 15.2.0 h742603c_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 134016 + timestamp: 1759712902814 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 md5: 044a210bc1d5b8367857755665157413 @@ -10196,45 +10233,45 @@ packages: purls: [] 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 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.4.0-hbfa0f67_1.conda + sha256: 52f405bb71af7455d4d7516333c637d3119ea926140a2e2ac1d744a2731b4ddb + md5: e610249bbfccbd92a11f8972725ccb15 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - 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 + size: 488189 + timestamp: 1756236921116 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.4.0-ha240a38_1.conda + sha256: 254af962d35d105845ac8b3ca4496d53fa03a221fb93a4bedf99a1b24676276d + md5: a4ed1add05d6830d5306e77748ee0c3f license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1961267 - timestamp: 1743912449509 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.1.0-h69a702a_2.conda - sha256: 0665170a98c8ec586352929d45a9c833c0dcdbead38b0b8f3af7a0deee2af755 - md5: a483a87b71e974bb75d1b9413d4436dd + size: 1942594 + timestamp: 1756235610374 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_7.conda + sha256: 63e1d1ce309e3f42a11637ecf0f29b5cf1550ca6d46412edf82e8e249b1917a1 + md5: beeb74a6fe5ff118451cf0581bfe2642 depends: - - libgfortran 15.1.0 h69a702a_2 + - libgfortran 15.2.0 h69a702a_7 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 34616 - timestamp: 1746642441079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc + size: 29330 + timestamp: 1759968394141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-hcd61629_7.conda + sha256: e93ceda56498d98c9f94fedec3e2d00f717cbedfc97c49be0e5a5828802f2d34 + md5: f116940d825ffc9104400f0d7f1a4551 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=15.1.0 + - libgcc >=15.2.0 constrains: - - libgfortran 15.1.0 + - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 1569986 - timestamp: 1746642212331 + size: 1572758 + timestamp: 1759968082504 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-14.2.0-h51e75f0_103.conda sha256: d2ac5e09587e5b21b7bb5795d24f33257e44320749c125448611211088ef8795 md5: 6183f7e9cd1e7ba20118ff0ca20a05e5 @@ -10247,6 +10284,18 @@ packages: purls: [] size: 1225013 timestamp: 1743862382377 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-h336fb69_1.conda + sha256: 1d53bad8634127b3c51281ce6ad3fbf00f7371824187490a36e5182df83d6f37 + md5: b6331e2dcc025fc79cd578f4c181d6f2 + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1236316 + timestamp: 1759709318982 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 md5: 69806c1e957069f1d515830dcc9f6cbb @@ -10259,64 +10308,76 @@ packages: purls: [] size: 806566 timestamp: 1743863491726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.2-h3618099_0.conda - sha256: a6b5cf4d443044bc9a0293dd12ca2015f0ebe5edfdc9c4abdde0b9947f9eb7bd - md5: 072ab14a02164b7c0c089055368ff776 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-h742603c_1.conda + sha256: 18808697013a625ca876eeee3d86ee5b656f17c391eca4a4bc70867717cc5246 + md5: afccf412b03ce2f309f875ff88419173 + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 15.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 764028 + timestamp: 1759712189275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda + sha256: e1ad3d9ddaa18f95ff5d244587fd1a37aca6401707f85a37f7d9b5002fcf16d0 + md5: 467f23819b1ea2b89c3fc94d65082301 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4.6,<3.5.0a0 - - libgcc >=13 + - libgcc >=14 - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.2 *_0 + - glib 2.84.3 *_0 license: LGPL-2.1-or-later purls: [] - size: 3955066 - timestamp: 1747836671118 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.2-h3139dbc_0.conda - sha256: 4445ab5b45bfeeb087ef3fd4f94c90f41261b5638916c58928600c1fc1f4f6ab - md5: eeb11015e8b75f8af67014faea18f305 + size: 3961899 + timestamp: 1754315006443 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda + sha256: 28d60cfaa74dd5427b35941ea28069bfd87d4dfdaaae79b13e569b4b4c21098d + md5: 2bb92de7159f9c47a4455eb3c08484d8 depends: - __osx >=10.13 - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.24.1,<1.0a0 + - libintl >=0.25.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.2 *_0 + - glib 2.84.3 *_0 license: LGPL-2.1-or-later purls: [] - size: 3727403 - timestamp: 1747836941924 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.2-hbec27ea_0.conda - sha256: 5fcc5e948706cc64e45e2454267f664ed5a1e84f15345aae04a41d852a879c0e - md5: 7bbb8961dca1b4b9f2b01b6e722111a7 + size: 3735183 + timestamp: 1754315274931 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda + sha256: a30510a18f0b85a036f99c744750611b5f26b972cfa70cc9f130b9f42e5bbc18 + md5: bb98995c244b6038892fd59a694a93ed depends: - __osx >=11.0 - libffi >=3.4.6,<3.5.0a0 - libiconv >=1.18,<2.0a0 - - libintl >=0.24.1,<1.0a0 + - libintl >=0.25.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.45,<10.46.0a0 constrains: - - glib 2.84.2 *_0 + - glib 2.84.3 *_0 license: LGPL-2.1-or-later purls: [] - size: 3666180 - timestamp: 1747837044507 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 + size: 3661135 + timestamp: 1754315631978 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda + sha256: e9fb1c258c8e66ee278397b5822692527c5f5786d372fe7a869b900853f3f5ca + md5: f7b4d76975aac7e5d9e6ad13845f92fe depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 452635 - timestamp: 1746642113092 + size: 447919 + timestamp: 1759967942498 - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h1383e82_7.conda sha256: b8b569a9d3ec8f13531c220d3ad8e1ff35c75902c89144872e7542a77cb8c10d md5: 7f970a7f9801622add7746aa3cbc24d5 @@ -10518,34 +10579,34 @@ packages: purls: [] size: 2414731 timestamp: 1757624335056 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 - md5: e796ff8ddc598affdf7c173d6145f087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: LGPL-2.1-only purls: [] - size: 713084 - timestamp: 1740128065462 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h4b5e92a_1.conda - sha256: c2a9c65a245c7bcb8c17c94dd716dad2d42b7c98e0c17cc5553a5c60242c4dda - md5: 6283140d7b2b55b6b095af939b71b13f + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 + md5: 210a85a1119f97ea7887188d176db135 depends: - __osx >=10.13 license: LGPL-2.1-only purls: [] - size: 669052 - timestamp: 1740128415026 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda - sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 - md5: 450e6bdc0c7d986acf7b8443dce87111 + size: 737846 + timestamp: 1754908900138 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 + md5: 4d5a7445f0b25b6a3ddbb56e790f5251 depends: - __osx >=11.0 license: LGPL-2.1-only purls: [] - size: 681804 - timestamp: 1740128227484 + size: 750379 + timestamp: 1754909073836 - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda sha256: 0dcdb1a5f01863ac4e8ba006a8b0dc1a02d2221ec3319b5915a1863254d7efa7 md5: 64571d1dd6cdcfa25d0664a5950fdaa2 @@ -10557,26 +10618,26 @@ packages: purls: [] size: 696926 timestamp: 1754909290005 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.24.1-h27064b9_0.conda - sha256: f0a759b35784d5a31aeaf519f8f24019415321e62e52579a3ec854a413a1509d - md5: b3f498d87404090f731cb6a474045150 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda + sha256: 8c352744517bc62d24539d1ecc813b9fdc8a785c780197c5f0b84ec5b0dfe122 + md5: a8e54eefc65645193c46e8b180f62d22 depends: - __osx >=10.13 - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 97229 - timestamp: 1746229336518 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.24.1-h493aca8_0.conda - sha256: fb6d211d9e75e6becfbf339d255ea01f7bd3a61fe6237b3dad740de1b74b3b81 - md5: 0dca9914f2722b773c863508723dfe6e + size: 96909 + timestamp: 1753343977382 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda + sha256: 99d2cebcd8f84961b86784451b010f5f0a795ed1c08f1e7c76fbb3c22abf021a + md5: 5103f6a6b210a3912faf8d7db516918c depends: - __osx >=11.0 - libiconv >=1.18,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 90547 - timestamp: 1746229257769 + size: 90957 + timestamp: 1751558394144 - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda sha256: 98b399287e27768bf79d48faba8a99a2289748c65cd342ca21033fab1860d4a4 md5: 9fa334557db9f63da6c9285fd2a48638 @@ -10624,51 +10685,51 @@ packages: purls: [] size: 838154 timestamp: 1745268437136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - build_number: 31 - sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 - md5: 452b98eafe050ecff932f0ec832dd03f +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-37_h47877c9_openblas.conda + build_number: 37 + sha256: e37125ad315464a927578bf6ba3455a30a7f319d5e60e54ccc860ddd218d516d + md5: 8305e6a5ed432ad3e5a609e8024dbc17 depends: - - libblas 3.9.0 31_h59b9bed_openblas + - libblas 3.9.0 37_h4a7cf45_openblas constrains: - - libcblas =3.9.0=31*_openblas - - liblapacke =3.9.0=31*_openblas - - blas =2.131=openblas + - blas 2.137 openblas + - liblapacke 3.9.0 37*_openblas + - libcblas 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 16790 - timestamp: 1740087997375 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-31_h236ab99_openblas.conda - build_number: 31 - sha256: 2d5642b07b56037ab735e5d64309dd905d5acb207a1b2ab1692f811b55a64825 - md5: d0f3bc17e0acef003cb9d9195a205888 + size: 17470 + timestamp: 1760212744703 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-37_h859234e_openblas.conda + build_number: 37 + sha256: 80de4cf2bd27475ec36e5dc15fb408343bcf4833b6e4c74a1d48d87a56118fbc + md5: abf96060ac52487961009e1fafec3e96 depends: - - libblas 3.9.0 31_h7f60823_openblas + - libblas 3.9.0 37_he492b99_openblas constrains: - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas - - liblapacke =3.9.0=31*_openblas + - libcblas 3.9.0 37*_openblas + - liblapacke 3.9.0 37*_openblas + - blas 2.137 openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17033 - timestamp: 1740087965941 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda - build_number: 31 - sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 - md5: ff57a55a2cbce171ef5707fb463caf19 + size: 17704 + timestamp: 1760213576216 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-37_hd9741b5_openblas.conda + build_number: 37 + sha256: 61a3f8928431f74c359669ea68b5abedbbd46efb06f15de1e5c7e5d40f545263 + md5: 53335fc42466f597d0bc6d66a9ed4468 depends: - - libblas 3.9.0 31_h10e41b3_openblas + - libblas 3.9.0 37_h51639a9_openblas constrains: - - liblapacke =3.9.0=31*_openblas - - libcblas =3.9.0=31*_openblas - - blas =2.131=openblas + - liblapacke 3.9.0 37*_openblas + - blas 2.137 openblas + - libcblas 3.9.0 37*_openblas license: BSD-3-Clause license_family: BSD purls: [] - size: 17033 - timestamp: 1740088134988 + size: 17633 + timestamp: 1760213604248 - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-35_hf9ab0e9_mkl.conda build_number: 35 sha256: 56e0992fb58eed8f0d5fa165b8621fa150b84aa9af1467ea0a7a9bb7e2fced4f @@ -10684,85 +10745,83 @@ packages: purls: [] size: 78485 timestamp: 1757003541803 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm20-20.1.5-h29c3a6c_0.conda - sha256: 514e2046c86f39eacf82cbd802c17372588d5ddcacc410ebfd589f467df784a9 - md5: 0719752afded8768ac26d6ff307e34ca +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm21-21.1.3-h56e7563_0.conda + sha256: 8fd10822a680f479eac5998c83346886190c209e5642379b09090d57bd44a5ef + md5: 1476aa11c522e0a020b25c02349178a6 depends: - __osx >=10.13 - - libcxx >=18 - - libxml2 >=2.13.8,<2.14.0a0 + - libcxx >=19 + - libxml2 + - libxml2-16 >=2.14.6 - 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: 30792868 - timestamp: 1747289509260 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm20-20.1.5-h598bca7_0.conda - sha256: 59cc69e738ef1e940bf373ebab627ccecbd75162445b0055c91c1dc28895f4da - md5: 6ec798777ce2835400d845c82def3f44 + size: 31443037 + timestamp: 1759923553275 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm21-21.1.3-h8e0c9ce_0.conda + sha256: 0169c2efa33aa17bc9082126b17b9f4f81ed048d47b2af45d508d5258b2c5859 + md5: 2f7fc390634d8d06b266993f029727f0 depends: - __osx >=11.0 - - libcxx >=18 - - libxml2 >=2.13.8,<2.14.0a0 + - libcxx >=19 + - libxml2 + - libxml2-16 >=2.14.6 - 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: 28903439 - timestamp: 1747289793020 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_1.conda - sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c - md5: a76fd702c93cd2dfd89eff30a5fd45a8 + size: 29406113 + timestamp: 1759915388804 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda + sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 + md5: 1a580f7796c7bf6393fddb8bbbde58dc depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 112845 - timestamp: 1746531470399 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_1.conda - sha256: 20a4c5291f3e338548013623bb1dc8ee2fba5dbac8f77acaddd730ed2a7d29b6 - md5: f87e8821e0e38a4140a7ed4f52530053 + size: 112894 + timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.1-hd471939_2.conda + sha256: 7e22fd1bdb8bf4c2be93de2d4e718db5c548aa082af47a7430eb23192de6bb36 + md5: 8468beea04b9065b9807fc8b9cdc5894 depends: - __osx >=10.13 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104814 - timestamp: 1746531577001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_1.conda - sha256: 5ab62c179229640c34491a7de806ad4ab7bec47ea2b5fc2136e3b8cf5ef26a57 - md5: 4e8ef3d79c97c9021b34d682c24c2044 + size: 104826 + timestamp: 1749230155443 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 + md5: d6df911d4564d77c4374b02552cb17d1 depends: - __osx >=11.0 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 92218 - timestamp: 1746531818330 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_1.conda - sha256: adbf6c7bde70536ada734a81b8b5aa23654f2b95445204404622e0cc40e921a0 - md5: 14a1042c163181e143a7522dfb8ad6ab + size: 92286 + timestamp: 1749230283517 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.1-h2466b09_2.conda + sha256: 55764956eb9179b98de7cc0e55696f2eff8f7b83fc3ebff5e696ca358bca28cc + md5: c15148b2e18da456f5108ccb5e411446 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - xz 5.8.1.* - - xz ==5.8.1=*_1 license: 0BSD purls: [] - size: 104699 - timestamp: 1746531718026 + size: 104935 + timestamp: 1749230611612 - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee md5: c7e925f37e3b40d893459e625f6a53f1 @@ -10803,114 +10862,142 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-2-Clause license_family: BSD - purls: [] size: 88657 timestamp: 1723861474602 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda + sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690 + md5: b499ce4b026493a13774bcf0f4c33849 depends: - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 + - c-ares >=1.34.5,<2.0a0 - libev >=4.33,<4.34.0a0 - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.5.2,<4.0a0 license: MIT license_family: MIT purls: [] - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - sha256: 0dcfdcf3a445d2d7de4f3b186ab0a794dc872f4ea21622f9b997be72712c027f - md5: ab21007194b97beade22ceb7a3f6fee5 + size: 666600 + timestamp: 1756834976695 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda + sha256: c48d7e1cc927aef83ff9c48ae34dd1d7495c6ccc1edc4a3a6ba6aff1624be9ac + md5: e7630cef881b1174d40f3e69a883e55f depends: - __osx >=10.13 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 + - c-ares >=1.34.5,<2.0a0 + - libcxx >=19 - libev >=4.33,<4.34.0a0 - libev >=4.33,<5.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.5.2,<4.0a0 license: MIT license_family: MIT purls: [] - size: 606663 - timestamp: 1729572019083 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 + size: 605680 + timestamp: 1756835898134 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda + sha256: a07cb53b5ffa2d5a18afc6fd5a526a5a53dd9523fbc022148bd2f9395697c46d + md5: a4b4dd73c67df470d091312ab87bf6ae depends: - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 + - c-ares >=1.34.5,<2.0a0 + - libcxx >=19 - libev >=4.33,<4.34.0a0 - libev >=4.33,<5.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.5.2,<4.0a0 license: MIT license_family: MIT purls: [] - size: 566719 - timestamp: 1729572385640 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 - md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + size: 575454 + timestamp: 1756835746393 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 license: LGPL-2.1-only license_family: GPL purls: [] - size: 33408 - timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 - md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + size: 33731 + timestamp: 1750274110928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_2.conda + sha256: 1b51d1f96e751dc945cc06f79caa91833b0c3326efe24e9b506bd64ef49fc9b0 + md5: dfc5aae7b043d9f56ba99514d5e60625 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libgfortran - - libgfortran5 >=14.2.0 + - libgfortran5 >=14.3.0 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 5919288 - timestamp: 1739825731827 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.29-openmp_hbf64a52_0.conda - sha256: fbb413923f91cb80a4d23725816499b921dd87454121efcde107abc7772c937a - md5: a30dc52b2a8b6300f17eaabd2f940d41 + size: 5938936 + timestamp: 1755474342204 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_2.conda + sha256: 49b2938be415a210e2a3ca56666be81eae6533dc3692674ee549836aa124a285 + md5: 9b66105b30ae81dbdd37111e9a5784f1 depends: - __osx >=10.13 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause - license_family: BSD purls: [] - size: 6170847 - timestamp: 1739826107594 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 - md5: 0cd1148c68f09027ee0b0f0179f77c30 + size: 6267056 + timestamp: 1760596221719 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_hbf64a52_0.conda + sha256: 933eb95a778657649a66b0e3cf638d591283159954c5e92b3918d67347ed47a1 + md5: 29c54869a3c7d33b6a0add39c5a325fe depends: - - __osx >=11.0 + - __osx >=10.13 - libgfortran 5.* - - libgfortran5 >=13.2.0 + - libgfortran5 >=13.3.0 - llvm-openmp >=18.1.8 constrains: - - openblas >=0.3.29,<0.3.30.0a0 + - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 4168442 - timestamp: 1739825514918 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda + size: 6179547 + timestamp: 1750380498501 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_2.conda + sha256: ddd201896c3f2d9d1911e8fb1aa34bf876795376f0fa5779c79b8998692f6800 + md5: e9f522513b5bbc6381f124f46e78fe36 + depends: + - __osx >=11.0 + - libgfortran + - libgfortran5 >=14.3.0 + - llvm-openmp >=19.1.7 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + purls: [] + size: 4284271 + timestamp: 1760594266347 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 + md5: 5d7dbaa423b4c253c476c24784286e4b + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4163399 + timestamp: 1750378829050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda sha256: ba9b09066f9abae9b4c98ffedef444bbbf4c068a094f6c77d70ef6f006574563 md5: 1c0320794855f457dea27d35c4c71e23 depends: @@ -11048,17 +11135,6 @@ packages: purls: [] size: 1021610 timestamp: 1759482399167 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda - sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 - md5: 55199e2ae2c3651f6f9b2a447b47bdc9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 288701 - timestamp: 1739952993639 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda sha256: e75a2723000ce3a4b9fd9b9b9ce77553556c93e475a4657db6ed01abc02ea347 md5: 7af8e91b0deb5f8e25d1a595dea79614 @@ -11070,16 +11146,6 @@ packages: purls: [] size: 317390 timestamp: 1753879899951 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.47-h3c4a55f_0.conda - sha256: d00a144698debb226a01646c72eff15917eb0143f92c92e1b61ce457d9367b89 - md5: 8461ab86d2cdb76d6e971aab225be73f - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 266874 - timestamp: 1739953034029 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.50-h84aeda2_1.conda sha256: 8d92c82bcb09908008d8cf5fab75e20733810d40081261d57ef8cd6495fc08b4 md5: 1fe32bb16991a24e112051cc0de89847 @@ -11090,16 +11156,6 @@ packages: purls: [] size: 297609 timestamp: 1753879919854 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda - sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f - md5: 3550e05e3af94a3fa9cef2694417ccdf - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - purls: [] - size: 259332 - timestamp: 1739953032676 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda sha256: a2e0240fb0c79668047b528976872307ea80cb330baf8bf6624ac2c6443449df md5: 4d0f5ce02033286551a32208a5519884 @@ -11125,49 +11181,49 @@ packages: purls: [] size: 382709 timestamp: 1753879944850 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h9ef548d_1.conda - sha256: b2a62237203a9f4d98bedb2dfc87b548cc7cede151f65589ced1e687a1c3f3b1 - md5: b92e2a26764fcadb4304add7e698ccf2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_2.conda + sha256: 1679f16c593d769f3dab219adb1117cbaaddb019080c5a59f79393dc9f45b84f + md5: 94cb88daa0892171457d9fdc69f43eca depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 4015243 - timestamp: 1751690262221 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h6e993e7_1.conda - sha256: 5078461fd3a2f486654188ecda230dec25ad823dec4303bc9cb52a7967140531 - md5: 60cc1847da0e1e40fb7ca0769fd3c140 + size: 4645876 + timestamp: 1760550892361 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-h03562ea_2.conda + sha256: 40a32a77cdb7f7b49187a4c9faf5c7812d95233288ab96b06e0dd9978ecd8e6d + md5: 39b7711c03a0d0533e832e734641e56e depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libcxx >=18 + - libcxx >=19 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 3487404 - timestamp: 1751689250525 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h702a38d_1.conda - sha256: 4f1cb41130b7772071a1b10654a825168515fd83d229c1752b90a3fd9d9f0c6b - md5: 16c4f075e63a1f497aa392f843d81f96 + size: 3550823 + timestamp: 1760550860606 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h658db43_2.conda + sha256: a01c3829eb0e3c1354ee7d61c5cde9a79dcebe6ccc7114c2feadf30aecbc7425 + md5: 155d3d17eaaf49ddddfe6c73842bc671 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libcxx >=18 + - libcxx >=19 - libzlib >=1.3.1,<2.0a0 license: BSD-3-Clause license_family: BSD purls: [] - size: 3044706 - timestamp: 1751689138445 + size: 2982875 + timestamp: 1760550241203 - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.08.12-h7b12aa8_1.conda sha256: 6940b44710fd571440c9795daf5bed6a56a1db6ff9ad52dcd5b8b2f8b123a635 md5: 0a801dabf8776bb86b12091d2f99377e @@ -11214,29 +11270,18 @@ packages: purls: [] size: 165680 timestamp: 1757447844299 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.1.0-h97b714f_2.conda - sha256: 3f573329431523b2510b9374f4048d87bb603536bc63f66910cd47b5347ea37f - md5: 4de6cfe35a4736a63e4f59602a8ebeec +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.2.0-hb13aed2_7.conda + sha256: 4d15a66e136fba55bc0e83583de603f46e972f3486e2689628dfd9729a5c3d78 + md5: 4ea6053660330c1bbd4635b945f7626d depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=15.1.0 - - libstdcxx >=15.1.0 + - libgcc >=15.2.0 + - libstdcxx >=15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 4539916 - timestamp: 1746642248624 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-15.1.0-h97b714f_5.conda - sha256: 60a9318c41d9d3d0dc235e015799b60a609d801320a5443ec2c4a13c40ceda19 - md5: 7c9027f66aaca7dcfb9688da0e6f7845 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.1.0 - - libstdcxx >=15.1.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 5203111 - timestamp: 1757042586073 + size: 5133768 + timestamp: 1759968130105 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -11264,17 +11309,6 @@ packages: purls: [] size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.2-hee588c1_0.conda - sha256: 525d4a0e24843f90b3ff1ed733f0a2e408aa6dd18b9d4f15465595e078e104a2 - md5: 93048463501053a00739215ea3f36324 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 916313 - timestamp: 1746637007836 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda sha256: 6d9c32fc369af5a84875725f7ddfbfc2ace795c28f246dc70055a79f9b2003da md5: 0b367fad34931cb79e0d6b7e5c06bb1c @@ -11286,16 +11320,6 @@ packages: purls: [] size: 932581 timestamp: 1753948484112 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.49.2-hdb6dae5_0.conda - sha256: 8fd9562478b4d1dc90ab2bcad5289ee2b5a971ca8ad87e6b137ce0ca53bf801d - md5: 9377ba1ade655ea3fc831b456f4a2351 - depends: - - __osx >=10.13 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 977388 - timestamp: 1746637093883 - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.50.4-h39a8b3b_0.conda sha256: 466366b094c3eb4b1d77320530cbf5400e7a10ab33e4824c200147488eebf7a6 md5: 156bfb239b6a67ab4a01110e6718cbc4 @@ -11306,16 +11330,6 @@ packages: purls: [] size: 980121 timestamp: 1753948554003 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.2-h3f77e49_0.conda - sha256: d89f979497cf56eccb099b6ab9558da7bba1f1ba264f50af554e0ea293d9dcf9 - md5: 85f443033cd5b3df82b5cabf79bddb09 - depends: - - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 - license: Unlicense - purls: [] - size: 899462 - timestamp: 1746637228408 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda sha256: 802ebe62e6bc59fc26b26276b793e0542cfff2d03c086440aeaf72fb8bbcec44 md5: 1dcb0468f5146e38fae99aef9656034b @@ -11374,37 +11388,39 @@ packages: purls: [] size: 279193 timestamp: 1745608793272 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda + sha256: 1b981647d9775e1cdeb2fab0a4dd9cd75a6b0de2963f6c3953dbd712f78334b3 + md5: 5b767048b1b3ee9a954b06f4084f93dc depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.2.0 h767d61c_7 + constrains: + - libstdcxx-ng ==15.2.0=*_7 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 3902355 - timestamp: 1746642227493 -- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.1.0-h4c094af_102.conda - sha256: 1a401e2256d30b3ef3c93a5f553442748a7045bd19360bb28eaf39458e24e7d6 - md5: 9931ac667ef44e13405ce95c601af775 + size: 3898269 + timestamp: 1759968103436 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-15.2.0-h73f6952_107.conda + sha256: ae5f609b3df4f4c3de81379958898cae2d9fc5d633518747c01d148605525146 + md5: a888a479d58f814ee9355524cc94edf3 depends: - __unix license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 14749051 - timestamp: 1746642129544 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb + size: 13677243 + timestamp: 1759967967095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda + sha256: 024fd46ac3ea8032a5ec3ea7b91c4c235701a8bf0e6520fe5e6539992a6bd05f + md5: f627678cf829bd70bccf141a19c3ad3e depends: - - libstdcxx 15.1.0 h8f9b012_2 + - libstdcxx 15.2.0 h8f9b012_7 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL purls: [] - size: 34647 - timestamp: 1746642266826 + size: 29343 + timestamp: 1759968157195 - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 md5: 8ed82d90e6b1686f5e98f8b7825a15ef @@ -11448,24 +11464,6 @@ packages: purls: [] size: 323360 timestamp: 1753277264380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda - sha256: 7fa6ddac72e0d803bb08e55090a8f2e71769f1eb7adbd5711bdd7789561601b1 - md5: e79a094918988bb1807462cd42c83962 - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.24,<1.25.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.5.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: HPND - purls: [] - size: 429575 - timestamp: 1747067001268 - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda sha256: ddda0d7ee67e71e904a452010c73e32da416806f5cb9145fb62c322f97e717fb md5: 72b531694ebe4e8aa6f5745d1015c1b4 @@ -11484,23 +11482,6 @@ packages: purls: [] size: 437211 timestamp: 1758278398952 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h1167cee_5.conda - sha256: 517a34be9fc697aaf930218f6727a2eff7c38ee57b3b41fd7d1cc0d72aaac562 - md5: fc84af14a09e779f1d37ab1d16d5c4e2 - depends: - - __osx >=10.13 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.24,<1.25.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: HPND - purls: [] - size: 400062 - timestamp: 1747067122967 - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.1-haa3b502_0.conda sha256: 667bdfa1d2956952bca26adfb01a0848f716fea72afe29a684bd107ba8ec0a3c md5: 9aeb6f2819a41937d670e73f15a12da5 @@ -11518,23 +11499,6 @@ packages: purls: [] size: 404501 timestamp: 1758278988445 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h2f21f7c_5.conda - sha256: cc5ee1cffb8a8afb25a4bfd08fce97c5447f97aa7064a055cb4a617df45bc848 - md5: 4eb183bbf7f734f69875702fdbe17ea0 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.24,<1.25.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.7,<1.6.0a0 - license: HPND - purls: [] - size: 370943 - timestamp: 1747067160710 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda sha256: 6bc1b601f0d3ee853acd23884a007ac0a0290f3609dabb05a47fc5a0295e2b53 md5: 2bb9e04e2da869125e2dc334d665f00d @@ -11600,16 +11564,6 @@ packages: purls: [] size: 87489 timestamp: 1757743003179 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 - md5: 40b61aab5c7ba9ff276c41cfffe6b80b - depends: - - libgcc-ng >=12 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 33601 - timestamp: 1680112270483 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda sha256: e5ec6d2ad7eef538ddcb9ea62ad4346fde70a4736342c4ad87bd713641eb9808 md5: 80c07c68d2f6870250959dcc95b209d1 @@ -11642,19 +11596,6 @@ packages: purls: [] size: 422612 timestamp: 1753948458902 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 429973 - timestamp: 1734777489810 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b md5: aea31d2e5b1091feca96fcfe945c3cf9 @@ -11668,18 +11609,6 @@ packages: purls: [] size: 429011 timestamp: 1752159441324 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 - md5: 5e0cefc99a231ac46ba21e27ae44689f - depends: - - __osx >=10.13 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 357662 - timestamp: 1734777539822 - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.6.0-hb807250_0.conda sha256: 00dbfe574b5d9b9b2b519acb07545380a6bc98d1f76a02695be4995d4ec91391 md5: 7bb6608cf1f83578587297a158a6630b @@ -11692,18 +11621,6 @@ packages: purls: [] size: 365086 timestamp: 1752159528504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - license: BSD-3-Clause - license_family: BSD - purls: [] - size: 290013 - timestamp: 1734777593617 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda sha256: a4de3f371bb7ada325e1f27a4ef7bcc81b2b6a330e46fac9c2f78ac0755ea3dd md5: e5e7d467f80da752be17796b87fe6385 @@ -11806,21 +11723,21 @@ packages: purls: [] size: 100393 timestamp: 1702724383534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h4bc477f_0.conda - sha256: b0b3a96791fa8bb4ec030295e8c8bf2d3278f33c0f9ad540e73b5e538e6268e7 - md5: 14dbe05b929e329dbaa6f2d0aa19466d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.8-h04c0eec_1.conda + sha256: 03deb1ec6edfafc5aaeecadfc445ee436fecffcda11fcd97fde9b6632acb583f + md5: 10bcbd05e1c1c9d652fccb42b776a9fa depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - - libgcc >=13 + - libgcc >=14 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 690864 - timestamp: 1746634244154 + size: 698448 + timestamp: 1754315344761 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.15.0-h26afc86_1.conda sha256: 4310577d7eea817d35a1c05e1e54575b06ce085d73e6dd59aa38523adf50168f md5: 8337b675e0cad517fbcb3daf7588087a @@ -11837,34 +11754,36 @@ packages: purls: [] size: 45363 timestamp: 1758640621036 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.8-h93c44a6_0.conda - sha256: 4b29663164d7beb9a9066ddcb8578fc67fe0e9b40f7553ea6255cd6619d24205 - md5: e42a93a31cbc6826620144343d42f472 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.15.0-h7b7ecba_1.conda + sha256: 6b8afb05b49363bf96c949c3b2307352a45c3114d78ab26cf1d8ea5306a3521d + md5: e17e6af7b422e930283583498bed58fc depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 + - libxml2-16 2.15.0 ha1d9b0f_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 609197 - timestamp: 1746634704204 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.8-h52572c6_0.conda - sha256: 13eb825eddce93761d965da3edaf3a42d868c61ece7d9cf21f7e2a13087c2abe - md5: d7884c7af8af5a729353374c189aede8 + size: 40330 + timestamp: 1758640928591 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.0-h9329255_1.conda + sha256: 5714b6c1fdd7a981a027d4951e111b1826cc746a02405a0c15b0f95f984e274c + md5: 738e842efb251f6efd430f47432bf0ee depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 + - libxml2-16 2.15.0 h0ff4647_1 - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT purls: [] - size: 583068 - timestamp: 1746634531197 + size: 40624 + timestamp: 1758641317371 - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.0-ha29bfb0_1.conda sha256: 8890c03908a407649ac99257b63176b61d10dfa3468aa3db1994ac0973dc2803 md5: 1d6e5fbbe84eebcd62e7cdccec799ce8 @@ -11899,6 +11818,38 @@ packages: purls: [] size: 556276 timestamp: 1758640612398 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-16-2.15.0-ha1d9b0f_1.conda + sha256: 49d847ef187734b8f4e771483803f55f5f41d4855b62e9d16968b2024298fb2b + md5: 2512444ac2678ed260abe03d1c17713c + depends: + - __osx >=10.13 + - icu >=75.1,<76.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.0 + license: MIT + license_family: MIT + purls: [] + size: 494295 + timestamp: 1758640913673 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.0-h0ff4647_1.conda + sha256: 37e85b5a2df4fbd213c5cdf803c57e244722c2dc47300951645c22a2bff6dfe8 + md5: 6b4f950d2dc566afd7382d2380eb2136 + depends: + - __osx >=11.0 + - icu >=75.1,<76.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - libxml2 2.15.0 + license: MIT + license_family: MIT + purls: [] + size: 464871 + timestamp: 1758641298001 - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.0-h06f855e_1.conda sha256: f29159eef5af2adffe2fef2d89ff2f6feda07e194883f47a4cf366e9608fb91b md5: a5d1a1f8745fcd93f39a4b80f389962f @@ -12009,68 +11960,68 @@ packages: purls: [] size: 347945 timestamp: 1760282911326 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20.1.5-h3fe3016_0.conda - sha256: ef91dc5787771eaf5a5dfd9b535f796ba1263e277ce48337fce648b32e7f2ccd - md5: 6f15676844a983f5a6f677c3d93aadb1 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21.1.3-hb0207f0_0.conda + sha256: 59f71a40f9b456160c566c9e3a0576cb27812ced5ca1157d762e9cd00e37fb13 + md5: 12dc0e4896d297f2ce8b1a0e2612a226 depends: - __osx >=10.13 - - libllvm20 20.1.5 h29c3a6c_0 - - llvm-tools-20 20.1.5 he90a8e3_0 + - libllvm21 21.1.3 h56e7563_0 + - llvm-tools-21 21.1.3 h879f4bc_0 constrains: - - llvmdev 20.1.5 - - llvm 20.1.5 - - clang-tools 20.1.5 - - clang 20.1.5 + - llvmdev 21.1.3 + - clang 21.1.3 + - llvm 21.1.3 + - clang-tools 21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 88169 - timestamp: 1747289719573 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20.1.5-hd2aecb6_0.conda - sha256: c0049c474d094da85ab12c61f1d0f66785c1dff782673562cefd63e98e361a37 - md5: b674811a9a859e73d62b4702f984bbe0 + size: 88445 + timestamp: 1759924051829 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21.1.3-h855ad52_0.conda + sha256: 0a5b43eb0188a5d85e93613932f2fdf31c2299402e375bfaa8e4fd6f4fefd9df + md5: 63cd6d98e68fd8ab736e7aff6ce52967 depends: - __osx >=11.0 - - libllvm20 20.1.5 h598bca7_0 - - llvm-tools-20 20.1.5 h87a4c7e_0 + - libllvm21 21.1.3 h8e0c9ce_0 + - llvm-tools-21 21.1.3 h91fd4e7_0 constrains: - - llvmdev 20.1.5 - - clang 20.1.5 - - llvm 20.1.5 - - clang-tools 20.1.5 + - llvm 21.1.3 + - clang 21.1.3 + - llvmdev 21.1.3 + - clang-tools 21.1.3 license: Apache-2.0 WITH LLVM-exception license_family: Apache purls: [] - size: 88546 - timestamp: 1747289992744 -- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-20-20.1.5-he90a8e3_0.conda - sha256: 9913de3c5356a71e68a5e82a72874ab523691344f51b967d0c2d012621d7cb09 - md5: b89d79094387e9bfabfd86014236762a + size: 89141 + timestamp: 1759915708752 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-21-21.1.3-h879f4bc_0.conda + sha256: 6b6621a799a7a98ccbb3eff13bb3b250169424a9d6dc309d4ab26c41b2ff8e8a + md5: fba460f779a43a12ca8a1eb11dfb99e7 depends: - __osx >=10.13 - - libcxx >=18 - - libllvm20 20.1.5 h29c3a6c_0 + - libcxx >=19 + - libllvm21 21.1.3 h56e7563_0 - 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: 19247433 - timestamp: 1747289653797 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-20-20.1.5-h87a4c7e_0.conda - sha256: 38ea06adbc09f71847095f9b64172488d791dc06cb7ef29ded4da71dfaa2a38d - md5: a5ae23501e7c03a8203d691e6706cc60 + size: 19539464 + timestamp: 1759923920180 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-21-21.1.3-h91fd4e7_0.conda + sha256: aa031ca0938de5b816dee096039b5cb77f31477381c21ccc5432a67a198c741c + md5: b8d7585a83240d80ade1b513b4957eaa depends: - __osx >=11.0 - - libcxx >=18 - - libllvm20 20.1.5 h598bca7_0 + - libcxx >=19 + - libllvm21 21.1.3 h8e0c9ce_0 - 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: 18097575 - timestamp: 1747289929937 + size: 18240206 + timestamp: 1759915619462 - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmlite-0.45.1-py312h7424e68_0.conda sha256: 6650dcb6d813e0b09a0d0e4705f6642077795f45da3877f173cd51b89d06fb52 md5: 1937051f88c829482f07f11bf39c6a79 @@ -12171,6 +12122,23 @@ packages: - pkg:pypi/llvmlite?source=hash-mapping size: 24337209 timestamp: 1759394908343 +- conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py312hdb9728c_0.conda + sha256: 7d1f9b5efa87b6c986f2412211cf6c861893964d62173afa7b10864054e3a21e + md5: 2ef6c185372624b4fcea5eb2f6f9f893 + depends: + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/llvmlite?source=hash-mapping + size: 22910260 + timestamp: 1759394889196 - conda: https://conda.anaconda.org/conda-forge/win-64/llvmlite-0.45.1-py313h5c49287_0.conda sha256: 0b63923082e724b2c2939621aef77d9ec65aa468a7b29917a850e47e2083adda md5: d946ee3e7228e48270589791871a891e @@ -12184,8 +12152,6 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: BSD-2-Clause license_family: BSD - purls: - - pkg:pypi/llvmlite?source=hash-mapping size: 22905696 timestamp: 1759394712687 - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda @@ -12253,10 +12219,10 @@ packages: purls: [] size: 274048 timestamp: 1727801725384 -- pypi: https://files.pythonhosted.org/packages/bb/8c/b8e581f8a87c8abc962b25a5c24e2a656f3f0aabd43851e8d2afb9eafb36/marginaleffects-0.1.2-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/ce/f6/5a1e28b5e27ee7e3b7721d25bc57496c0732883055b6ff4591763c4dbe5a/marginaleffects-0.1.5-py3-none-any.whl name: marginaleffects - version: 0.1.2 - sha256: dc9feaa8465a07cf8a0998df70309aa7814d7e04b086f2a73b0867d301e57891 + version: 0.1.5 + sha256: 9084aa306f35ef22b0729d76a8be6430b1663481b8ba3830293636e122b7dcbc requires_dist: - formulaic>=1.0.2 - narwhals>=1.34.0 @@ -12271,11 +12237,13 @@ packages: - matplotlib>=3.7.1 ; extra == 'test' - linearmodels>=6.1 ; extra == 'test' - pandas>=2.2.2 ; extra == 'test' + - pre-commit>=4.2.0 ; extra == 'test' - pyarrow>=17.0.0 ; extra == 'test' - pyfixest>=0.28.0 ; extra == 'test' - statsmodels>=0.14.0 ; extra == 'test' - scikit-learn ; extra == 'test' - typing-extensions>=4.7.0 ; extra == 'test' + - xgboost ; extra == 'test' requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e @@ -12289,12 +12257,12 @@ packages: - pkg:pypi/markdown-it-py?source=hash-mapping size: 64736 timestamp: 1754951288511 -- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 - md5: eb227c3e0bf58f5bd69c0532b157975b +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda + sha256: f77f9f1a4da45cbc8792d16b41b6f169f649651a68afdc10b2da9da12b9aa42b + md5: f775a43412f7f3d7ed218113ad233869 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: @@ -12303,11 +12271,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24604 - timestamp: 1733219911494 -- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312h3520af0_1.conda - sha256: d521e272f7789ca62e7617058a4ea3bd79efa73de1a39732df209ca5299e64e2 - md5: 32d6bc2407685d7e2d8db424f42018c6 + size: 25321 + timestamp: 1759055268795 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py312hacf3034_0.conda + sha256: e50fa11ea301d42fe64e587e2262f6afbe2ec42afe95e3ad4ccba06910b63155 + md5: 2e6f78b0281181edc92337aa12b96242 depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -12318,11 +12286,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 23888 - timestamp: 1733219886634 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 - md5: 46e547061080fddf9cf95a0327e8aba6 + size: 24541 + timestamp: 1759055509267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py312h5748b74_0.conda + sha256: b6aadcee6a0b814a0cb721e90575cbbe911b17ec46542460a9416ed2ec1a568e + md5: 82221456841d3014a175199e4792465b depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -12334,11 +12302,11 @@ packages: license_family: BSD purls: - pkg:pypi/markupsafe?source=hash-mapping - size: 24048 - timestamp: 1733219945697 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py312he3d6523_1.conda - sha256: 9af1c0e8a9551edfb1fbee0595a00108204af3d34c1680271b0121846dc21e77 - md5: 94926ee1d68e678fb4cfdb0727a0927e + size: 25121 + timestamp: 1759055677633 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py312he3d6523_0.conda + sha256: a86bf43f40c8afa3dbe846c62e54dc7496493cc882acdf366b5197205e7709d8 + md5: 066291f807305cff71a8ec1683fc9958 depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -12346,8 +12314,8 @@ packages: - fonttools >=4.22.0 - freetype - kiwisolver >=1.3.1 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - libgcc >=14 - libstdcxx >=14 - numpy >=1.23 @@ -12363,12 +12331,12 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=hash-mapping - size: 8250974 - timestamp: 1756869718533 -- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.6-py313h683a580_1.conda - sha256: c85c8135865a2608c52423d28c8bac064cfd95af69f3ff5c0d84e821695d868b - md5: 0483ab1c5b6956442195742a5df64196 + - pkg:pypi/matplotlib?source=compressed-mapping + size: 8536303 + timestamp: 1760560544102 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.7-py313h683a580_0.conda + sha256: 8aaf695a4e45bc6549d1089a9c2cf59350c8ccb6c84604159ba516f14a182a41 + md5: 5858a4032f99c89b175f7f5161c7b0cd depends: - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 @@ -12376,8 +12344,8 @@ packages: - fonttools >=4.22.0 - freetype - kiwisolver >=1.3.1 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - libgcc >=14 - libstdcxx >=14 - numpy >=1.23 @@ -12394,11 +12362,11 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 8446545 - timestamp: 1756869894657 -- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py312h7894933_1.conda - sha256: c46330b0709ca88fd23b41f2c5cde5bb4185bbc13913d94e5b44ea7dc912433a - md5: 2838ec6b6d4a84383fee580a66a36779 + size: 8406146 + timestamp: 1760560610181 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py312h7894933_0.conda + sha256: 890975012522122fb20a7914c11a02fd4973ed0ee470abc27bd3298ef6de37df + md5: 8993a6404a2bd1d1b4ccc169c611c826 depends: - __osx >=10.13 - contourpy >=1.0.1 @@ -12407,8 +12375,8 @@ packages: - freetype - kiwisolver >=1.3.1 - libcxx >=19 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - numpy >=1.23 - numpy >=1.23,<3 - packaging >=20.0 @@ -12422,11 +12390,11 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 8341691 - timestamp: 1756870228153 -- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.6-py313h4ad75b8_1.conda - sha256: 58cbae4adea63fb1b5d1cd3f8c583cccf3ea4c86e71377fb766a3037129fffe5 - md5: ea88ae8e6f51e16c2b9353575a973a49 + size: 8137491 + timestamp: 1760561487488 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.7-py313h4ad75b8_0.conda + sha256: fdda27e2f5e1b8013fabe898e0b95a97120f40f12641922120255fa2e53d5193 + md5: 67aefec43149bd0963c406e2d5df74d9 depends: - __osx >=10.13 - contourpy >=1.0.1 @@ -12435,8 +12403,8 @@ packages: - freetype - kiwisolver >=1.3.1 - libcxx >=19 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - numpy >=1.23 - numpy >=1.23,<3 - packaging >=20.0 @@ -12450,11 +12418,11 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 8213936 - timestamp: 1756870077162 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py312h605b88b_1.conda - sha256: 9d55cdf55760552e42cfd0bc867f6902754aa2aeb4f661cee715a27e447b4886 - md5: 63773c3db15b238aaa49b34a27cdee9b + size: 8359748 + timestamp: 1760561176544 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py312h605b88b_0.conda + sha256: 83e4f0e36cdeb610568f074afc12440cb95b84645f0f63a8f45dd51410fb98c8 + md5: f4c14d3f89a1a892cab55771c798c6b2 depends: - __osx >=11.0 - contourpy >=1.0.1 @@ -12463,8 +12431,8 @@ packages: - freetype - kiwisolver >=1.3.1 - libcxx >=19 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - numpy >=1.23 - numpy >=1.23,<3 - packaging >=20.0 @@ -12478,12 +12446,12 @@ packages: license: PSF-2.0 license_family: PSF purls: - - pkg:pypi/matplotlib?source=hash-mapping - size: 8215007 - timestamp: 1756870267276 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.6-py313h58042b9_1.conda - sha256: 08b23a9a377bb513f46a37d9aefa51c3b92099e36c639fefebdfdb8998570c39 - md5: 655f0eb426c8ddbbc4ccc17a9968dd83 + - pkg:pypi/matplotlib?source=compressed-mapping + size: 8007810 + timestamp: 1760561036534 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.7-py313h58042b9_0.conda + sha256: 3794a7af2ac6e85771c4c8929193e0edeadd5b18f56c23d4bc7d4b891797e425 + md5: 17046bd72a5be23b666bc6ee68d85b75 depends: - __osx >=11.0 - contourpy >=1.0.1 @@ -12492,8 +12460,8 @@ packages: - freetype - kiwisolver >=1.3.1 - libcxx >=19 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - numpy >=1.23 - numpy >=1.23,<3 - packaging >=20.0 @@ -12508,27 +12476,27 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 8276975 - timestamp: 1756870275203 -- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.6-py313he1ded55_1.conda - sha256: 39567bba0b2339f6660d9cfeee639db24b43fd949717ebc15c2e53d4341fac0d - md5: bf57fe7c3f3440e23615272bdf8db28c + size: 8169614 + timestamp: 1760561281376 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py312h0ebf65c_0.conda + sha256: 7a48d0f7acf2c6f659d4110c51fd6349eea59cf094736c0487d146b279ffc8a5 + md5: 79230f2289ae81063289d3e726150912 depends: - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype - kiwisolver >=1.3.1 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - numpy >=1.23 - numpy >=1.23,<3 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.13,<3.14.0a0 + - python >=3.12,<3.13.0a0 - python-dateutil >=2.7 - - python_abi 3.13.* *_cp313 + - python_abi 3.12.* *_cp312 - qhull >=2020.2,<2020.3.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 @@ -12537,8 +12505,35 @@ packages: license_family: PSF purls: - pkg:pypi/matplotlib?source=hash-mapping - size: 8034791 - timestamp: 1756870042140 + size: 8046406 + timestamp: 1760561093532 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.7-py313he1ded55_0.conda + sha256: 02d97ca3ec02c5a922c518d45cb9a7c8267cd136dc9b76e0151060b65a89b984 + md5: efaf0af24bac61ab9b6954bedd45eabd + depends: + - contourpy >=1.0.1 + - cycler >=0.10 + - fonttools >=4.22.0 + - freetype + - kiwisolver >=1.3.1 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - numpy >=1.23 + - numpy >=1.23,<3 + - packaging >=20.0 + - pillow >=8 + - pyparsing >=2.3.1 + - python >=3.13,<3.14.0a0 + - python-dateutil >=2.7 + - python_abi 3.13.* *_cp313 + - qhull >=2020.2,<2020.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: PSF-2.0 + license_family: PSF + size: 8264327 + timestamp: 1760561091436 - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 md5: af6ab708897df59bd6e7283ceab1b56b @@ -12656,10 +12651,10 @@ packages: - pkg:pypi/mistune?source=hash-mapping size: 72996 timestamp: 1756495311698 -- pypi: https://files.pythonhosted.org/packages/21/e7/172f47bc0016f3ea247ad2671ff8d355340f6ae2d0799725a1f3d358daae/mizani-0.13.5-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/50/8b/8231e2493b454e2514e56843e842321b125d1f25da06f8ab55029a94d12a/mizani-0.14.2-py3-none-any.whl name: mizani - version: 0.13.5 - sha256: f6024cf3b5780457d7aa56725946857fd9908215efcd5460399d2bc3267ac329 + version: 0.14.2 + sha256: c35fdfa9a68824e80c724ffbd9bb776db23bf73ea94b90b46dbc7f58cb2233cb requires_dist: - numpy>=1.23.5 - scipy>=1.8.0 @@ -12681,7 +12676,7 @@ packages: - twine ; extra == 'dev' - pre-commit ; extra == 'dev' - mizani[typing] ; extra == 'dev' - - pyright==1.1.400 ; extra == 'typing' + - pyright==1.1.402 ; extra == 'typing' - pandas-stubs ; extra == 'typing' requires_python: '>=3.10' - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h57928b3_16.conda @@ -12695,10 +12690,10 @@ packages: purls: [] size: 103088799 timestamp: 1753975600547 -- pypi: https://files.pythonhosted.org/packages/08/57/5d58fad4124192b1be42f68bd0c0ddaa26e44a730ff8c9337adade2f5632/ml_dtypes-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/0d/eb/bc07c88a6ab002b4635e44585d80fa0b350603f11a2097c9d1bfacc03357/ml_dtypes-0.5.3-cp312-cp312-macosx_10_13_universal2.whl name: ml-dtypes - version: 0.5.1 - sha256: ad4953c5eb9c25a56d11a913c2011d7e580a435ef5145f804d98efa14477d390 + version: 0.5.3 + sha256: 156418abeeda48ea4797db6776db3c5bdab9ac7be197c1233771e0880c304057 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -12711,10 +12706,10 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/0f/92/bb6a3d18e16fddd18ce6d5f480e1919b33338c70e18cba831c6ae59812ee/ml_dtypes-0.5.1-cp313-cp313-macosx_10_13_universal2.whl +- pypi: https://files.pythonhosted.org/packages/14/f3/091ba84e5395d7fe5b30c081a44dec881cd84b408db1763ee50768b2ab63/ml_dtypes-0.5.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: ml-dtypes - version: 0.5.1 - sha256: 12651420130ee7cc13059fc56dac6ad300c3af3848b802d475148c9defd27c23 + version: 0.5.3 + sha256: 6936283b56d74fbec431ca57ce58a90a908fdbd14d4e2d22eea6d72bb208a7b7 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -12727,10 +12722,10 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/47/56/1bb21218e1e692506c220ffabd456af9733fba7aa1b14f73899979f4cc20/ml_dtypes-0.5.1-cp312-cp312-macosx_10_9_universal2.whl +- pypi: https://files.pythonhosted.org/packages/2d/87/1bcc98a66de7b2455dfb292f271452cac9edc4e870796e0d87033524d790/ml_dtypes-0.5.3-cp313-cp313-macosx_10_13_universal2.whl name: ml-dtypes - version: 0.5.1 - sha256: 6f462f5eca22fb66d7ff9c4744a3db4463af06c49816c4b6ac89b16bfcdc592e + version: 0.5.3 + sha256: 5103856a225465371fe119f2fef737402b705b810bd95ad5f348e6e1a6ae21af requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -12743,10 +12738,10 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/be/26/adc36e3ea09603d9f6d114894e1c1b7b8e8a9ef6d0b031cc270c6624a37c/ml_dtypes-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl +- pypi: https://files.pythonhosted.org/packages/50/c1/85e6be4fc09c6175f36fb05a45917837f30af9a5146a5151cb3a3f0f9e09/ml_dtypes-0.5.3-cp312-cp312-win_amd64.whl name: ml-dtypes - version: 0.5.1 - sha256: bf9975bda82a99dc935f2ae4c83846d86df8fd6ba179614acac8e686910851da + version: 0.5.3 + sha256: da65e5fd3eea434ccb8984c3624bc234ddcc0d9f4c81864af611aaebcc08a50e requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -12759,10 +12754,10 @@ packages: - pylint>=2.6.0 ; extra == 'dev' - pyink ; extra == 'dev' requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/da/8a/a2b9375c94077e5a488a624a195621407846f504068ce22ccf805c674156/ml_dtypes-0.5.1-cp313-cp313-win_amd64.whl +- pypi: https://files.pythonhosted.org/packages/d8/a9/b98b86426c24900b0c754aad006dce2863df7ce0bb2bcc2c02f9cc7e8489/ml_dtypes-0.5.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: ml-dtypes - version: 0.5.1 - sha256: fd918d4e6a4e0c110e2e05be7a7814d10dc1b95872accbf6512b80a109b71ae1 + version: 0.5.3 + sha256: 1b255acada256d1fa8c35ed07b5f6d18bc21d1556f842fbc2d5718aea2cd9e55 requires_dist: - numpy>=1.21 - numpy>=1.21.2 ; python_full_version >= '3.10' @@ -13239,6 +13234,31 @@ packages: - pkg:pypi/numba?source=hash-mapping size: 5732304 timestamp: 1759165595896 +- conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py312h9a042f1_0.conda + sha256: 4e41545dcdf7063a2b44dd2adcd747c552f707de9cf90e2cb6a48250737e6c9b + md5: 2ac21fc968d41f526c39f0d48bcfb142 + depends: + - llvmlite >=0.45.0,<0.46.0a0 + - numpy >=1.23,<3 + - numpy >=1.24,<2.4 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libopenblas !=0.3.6 + - cuda-version >=11.2 + - cuda-python >=11.6 + - cudatoolkit >=11.2 + - tbb >=2021.6.0 + - scipy >=1.0 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/numba?source=hash-mapping + size: 5673165 + timestamp: 1759165144766 - conda: https://conda.anaconda.org/conda-forge/win-64/numba-0.62.1-py313h924e429_0.conda sha256: 79835953985d64565f76f912517ab5700148e86659b8e79ecd2d0e6d7377ac46 md5: ae201f33cbcbb2aba93daf4b3263b4a5 @@ -13260,30 +13280,28 @@ packages: - cuda-version >=11.2 license: BSD-2-Clause license_family: BSD - purls: - - pkg:pypi/numba?source=hash-mapping size: 5706597 timestamp: 1759165298367 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 - md5: 17fac9db62daa5c810091c2882b28f45 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.3-py312h33ff503_0.conda + sha256: 8443315a60500ea8e3d7ecd9756cee07a60b8c3497e0fc98884963c3108f8bef + md5: 261a82ff799db441c7122f6a83ade061 depends: + - python + - libstdcxx >=14 + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 8490501 - timestamp: 1747545073507 + - pkg:pypi/numpy?source=compressed-mapping + size: 8786490 + timestamp: 1757505242032 - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.3-py313hf6604e3_0.conda sha256: 88d45c6dbedabbc8ebb19555bb3d04b5e2846ae8a7dfc2c0204b54f5f6efaef7 md5: 3122d20dc438287e125fb5acff1df170 @@ -13305,25 +13323,25 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 8888776 timestamp: 1757505485589 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.6-py312h6693b03_0.conda - sha256: 22bc6d7ac48df0a3130a24b9426a004977cb5dc8b5edbb3f3d2579a478121cbd - md5: 486e149e3648cbf8b92b0512db99bce3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.3-py312ha3982b3_0.conda + sha256: 4253684725f2725fcbeec6560fda764d7ac41dd729dd4366ffcb0e286279bf51 + md5: 7d3ce4cfccebc8d461cec11ad5f26f21 depends: + - python - __osx >=10.13 - - libblas >=3.9.0,<4.0a0 + - libcxx >=19 + - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - pkg:pypi/numpy?source=hash-mapping - size: 7691449 - timestamp: 1747545110970 + size: 7945767 + timestamp: 1757504911495 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.3.3-py313ha99c057_0.conda sha256: ab31a1c9a75cce696324aa76411dbd0b5800f9b5d31144af05b4364548df6f27 md5: b61af3ab2e0156a2f726faa9cd6245fb @@ -13343,26 +13361,26 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 8035298 timestamp: 1757504954727 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.6-py312h7c1f314_0.conda - sha256: f5d69838c10a6c34a6de8b643b1795bf6fa9b22642ede5fc296d5673eabc344e - md5: fff7ab22b4f5c7036d3c2e1f92632fa4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.3-py312h85ea64e_0.conda + sha256: 432c7f3a62404b72273d04261b9533c450afc753a5375e7c3b99fd6a8ffb4ae6 + md5: 8af18e1aff42c65725ed39f831317099 depends: + - python - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 + - python 3.12.* *_cpython + - libcxx >=19 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD purls: - - pkg:pypi/numpy?source=hash-mapping - size: 6437085 - timestamp: 1747545094808 + - pkg:pypi/numpy?source=compressed-mapping + size: 6659824 + timestamp: 1757504947913 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.3-py313h9771d21_0.conda sha256: 0a8d31fbb49be666f17f746104255e3ccfdb27eac79fe9b8178c8f8bd6a6b2ee md5: 54cfeb1b41a3c21da642f9b925545478 @@ -13383,6 +13401,29 @@ packages: - pkg:pypi/numpy?source=hash-mapping size: 6749676 timestamp: 1757504939745 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py312ha72d056_0.conda + sha256: 7e27c95af8414c1068933528d54be2441ec0414a9397f3cfea916d00d56fd860 + md5: e3ac06748b6249e42c3cf4d670b7adcb + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.12.* *_cp312 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=compressed-mapping + size: 7376440 + timestamp: 1757504921203 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.3.3-py313hce7ae62_0.conda sha256: 183d004ade7c46d0b9003a747741dc0320773a226323483ba0592faafeabd681 md5: e23d89fa7007fa6a9bfe7a2a1cb58d61 @@ -13402,25 +13443,8 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/numpy?source=hash-mapping size: 7463065 timestamp: 1757504921589 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 342988 - timestamp: 1733816638720 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda sha256: 3900f9f2dbbf4129cf3ad6acf4e4b6f7101390b53843591c53b00f034343bc4d md5: 11b3379b191f63139e29c0d19dee24cd @@ -13436,20 +13460,6 @@ packages: purls: [] size: 355400 timestamp: 1758489294972 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b - md5: 025c711177fc3309228ca1a32374458d - depends: - - __osx >=10.13 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 332320 - timestamp: 1733816828284 - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda sha256: fdf4708a4e45b5fd9868646dd0c0a78429f4c0b8be490196c975e06403a841d0 md5: a67d3517ebbf615b91ef9fdc99934e0c @@ -13464,20 +13474,6 @@ packages: purls: [] size: 334875 timestamp: 1758489493148 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-2-Clause - license_family: BSD - purls: [] - size: 319362 - timestamp: 1733816781741 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda sha256: dd73e8f1da7dd6a5494c5586b835cbe2ec68bace55610b1c4bf927400fe9c0d7 md5: 6bf3d24692c157a41c01ce0bd17daeea @@ -13643,7 +13639,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/packaging?source=compressed-mapping + - pkg:pypi/packaging?source=hash-mapping size: 62477 timestamp: 1745345660407 - pypi: https://files.pythonhosted.org/packages/cf/f7/3367feadd4ab56783b0971c9b7edfbdd68e0c70ce877949a5dd2117ed4a0/palettable-3.3.3-py2.py3-none-any.whl @@ -13961,6 +13957,58 @@ packages: - pkg:pypi/pandas?source=hash-mapping size: 14052072 timestamp: 1759266462037 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py312hc128f0a_1.conda + sha256: 355c8bf100c492f78cd0ca763e08fb0ed7a894f42f4825a6edfec7d78ae0976e + md5: 834e92822c8057d3fd682aaf762ea1fa + depends: + - numpy >=1.22.4 + - numpy >=1.23,<3 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.2 + - python-tzdata >=2022.7 + - python_abi 3.12.* *_cp312 + - pytz >=2020.1 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - blosc >=1.21.3 + - fastparquet >=2022.12.0 + - bottleneck >=1.3.6 + - pyqt5 >=5.15.9 + - sqlalchemy >=2.0.0 + - matplotlib >=3.6.3 + - qtpy >=2.3.0 + - pyreadstat >=1.2.0 + - openpyxl >=3.1.0 + - python-calamine >=0.1.7 + - xlrd >=2.0.1 + - odfpy >=1.4.1 + - numba >=0.56.4 + - psycopg2 >=2.9.6 + - xlsxwriter >=3.0.5 + - pandas-gbq >=0.19.0 + - tabulate >=0.9.0 + - pyarrow >=10.0.1 + - numexpr >=2.8.4 + - beautifulsoup4 >=4.11.2 + - lxml >=4.9.2 + - pyxlsb >=1.0.10 + - fsspec >=2022.11.0 + - scipy >=1.10.0 + - zstandard >=0.19.0 + - tzdata >=2022.7 + - xarray >=2022.12.0 + - s3fs >=2022.11.0 + - html5lib >=1.1 + - pytables >=3.8.0 + - gcsfs >=2022.11.0 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=compressed-mapping + size: 13885793 + timestamp: 1759266494296 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_1.conda sha256: 4117c0ecf6ac2544d956038446df70884b48cf745cf50a28872cec54d189d6f8 md5: 72e76484d7629ec9217e71d9c6281e09 @@ -14009,8 +14057,6 @@ packages: - python-calamine >=0.1.7 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/pandas?source=hash-mapping size: 13956530 timestamp: 1759266304527 - conda: https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.6.3-ha770c72_0.conda @@ -14048,64 +14094,67 @@ packages: - pkg:pypi/pandocfilters?source=hash-mapping size: 11627 timestamp: 1631603397334 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.3-h9ac818e_1.conda - sha256: 9c00bbc8871b9ce00d1a1f0c1a64f76c032cf16a56a28984b9bb59e46af3932d - md5: 21899b96828014270bd24fd266096612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda + sha256: 3613774ad27e48503a3a6a9d72017087ea70f1426f6e5541dbdb59a3b626eaaf + md5: 79f71230c069a287efe3a8614069ddf1 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 - libgcc >=13 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 453100 - timestamp: 1743352484196 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.3-hae8941d_1.conda - sha256: ff2cc0b201ce1b68a9f38c1dc71dbd26f70eef103089ae4ee26b7e80d336f0ab - md5: 17bcc6d5206e8a1a13cc478a777d79e5 + size: 455420 + timestamp: 1751292466873 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda + sha256: baab8ebf970fb6006ad26884f75f151316e545c47fb308a1de2dd47ddd0381c5 + md5: 8c6316c058884ffda0af1f1272910f94 depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 432439 - timestamp: 1743352942656 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.3-h5fd7515_1.conda - sha256: 76e3843f37878629e744ec75d5f3acfc54a7bb23f9970139f4040f93209ef574 - md5: 2e5cef90f7d355790fa96f2459ee648f + size: 432832 + timestamp: 1751292511389 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda + sha256: 705484ad60adee86cab1aad3d2d8def03a699ece438c864e8ac995f6f66401a6 + md5: 7d57f8b4b7acfc75c777bc231f0d31be depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - freetype >=2.13.3,<3.0a0 - fribidi >=1.0.10,<2.0a0 - - harfbuzz >=11.0.0,<12.0a0 - - libexpat >=2.6.4,<3.0a0 - - libglib >=2.84.0,<3.0a0 - - libpng >=1.6.47,<1.7.0a0 + - harfbuzz >=11.0.1 + - libexpat >=2.7.0,<3.0a0 + - libfreetype >=2.13.3 + - libfreetype6 >=2.13.3 + - libglib >=2.84.2,<3.0a0 + - libpng >=1.6.49,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 license: LGPL-2.1-or-later purls: [] - size: 426212 - timestamp: 1743352728692 + size: 426931 + timestamp: 1751292636271 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda sha256: 30de7b4d15fbe53ffe052feccde31223a236dae0495bab54ab2479de30b2990f md5: a110716cdb11cf51482ff4000dc253d7 @@ -14219,31 +14268,10 @@ packages: - python_abi 3.12.* *_cp312 - openjpeg >=2.5.3,<3.0a0 license: HPND - size: 1028547 - timestamp: 1758208668856 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py312h80c1187_0.conda - sha256: 7c9a8f65a200587bf7a0135ca476f9c472348177338ed8b825ddcc08773fde68 - md5: 7911e727a6c24db662193a960b81b6b2 - depends: - - __glibc >=2.17,<3.0.a0 - - lcms2 >=2.17,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - libgcc >=13 - - libjpeg-turbo >=3.1.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42964111 - timestamp: 1751482158083 + size: 1028547 + timestamp: 1758208668856 - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.3.0-py313ha492abd_3.conda sha256: b5d03d663d73c682fb88b4f71b9431a79362eca4a6201650a44f1ca9d467a7cf md5: 3354141a95eee5d29000147578dbc13f @@ -14285,30 +14313,10 @@ packages: - tk >=8.6.13,<8.7.0a0 - libwebp-base >=1.6.0,<2.0a0 license: HPND - size: 961915 - timestamp: 1758208807855 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py312hd9f36e3_0.conda - sha256: c80c1e858659beadcd9de16ccb208a319d34cce9a6412731cf2d08dfc1eb86fa - md5: a3c63eeab0ecca11e93104aebed345fc - depends: - - __osx >=10.13 - - lcms2 >=2.17,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 - - libjpeg-turbo >=3.1.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42486529 - timestamp: 1751482537411 + size: 961915 + timestamp: 1758208807855 - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.3.0-py313hcfd0557_3.conda sha256: ebd4febd2b4a0d766cab6450f2ac5442b5a319c5f01f744823e5bdfa899b6e0c md5: 9fe2ebb0ad526ad057cf21d20d53d466 @@ -14331,29 +14339,29 @@ packages: - pkg:pypi/pillow?source=hash-mapping size: 974619 timestamp: 1758208807855 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h50aef2c_0.conda - sha256: 3d60288e8cfd42e4548c9e5192a285e73f81df2869f69b9d3905849b45d9bd2a - md5: dddff48655b5cd24a5170a6df979943a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py312h2525f64_3.conda + sha256: e9538db860e4ab868c52e1765237fd58b0e5955f746cf5aa64beaeb6442e0e4d + md5: 9e4d98633f38f6a66973ecf60fceb997 depends: + - python - __osx >=11.0 - - lcms2 >=2.17,<3.0a0 - - libfreetype >=2.13.3 - - libfreetype6 >=2.13.3 + - python 3.12.* *_cpython + - libzlib >=1.3.1,<2.0a0 - libjpeg-turbo >=3.1.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 + - libwebp-base >=1.6.0,<2.0a0 - tk >=8.6.13,<8.7.0a0 + - lcms2 >=2.17,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - openjpeg >=2.5.3,<3.0a0 license: HPND purls: - pkg:pypi/pillow?source=hash-mapping - size: 42514714 - timestamp: 1751482419501 + size: 950435 + timestamp: 1758208741247 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.3.0-py313he4c6d0d_3.conda sha256: 060f14a270d39f5c3df89ea2c46f68b6cadd4b6950360af6b7524f5ea33c9354 md5: 2f6f5c3fa80054f42d8cd4d23e4d93d6 @@ -14377,6 +14385,33 @@ packages: - pkg:pypi/pillow?source=hash-mapping size: 963129 timestamp: 1758208741247 +- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py312h5ee8bfe_3.conda + sha256: 0adb8c0143c8a6add4c1acdab212aa5474299dcf4040471fe5566b75aed23a8d + md5: 6110c5b730be3312e3d68448f133290a + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libwebp-base >=1.6.0,<2.0a0 + - python_abi 3.12.* *_cp312 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - tk >=8.6.13,<8.7.0a0 + - lcms2 >=2.17,<3.0a0 + - libjpeg-turbo >=3.1.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - openjpeg >=2.5.3,<3.0a0 + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 931680 + timestamp: 1758208682964 - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-11.3.0-py313hf455b62_3.conda sha256: c52cd3bb28f8b9efca4305298792eeb3c323358cb4812fba21f8c9bea2b77e19 md5: 1f4089963969058084f252c4587512e2 @@ -14400,8 +14435,6 @@ packages: - libfreetype6 >=2.14.1 - libjpeg-turbo >=3.1.0,<4.0a0 license: HPND - purls: - - pkg:pypi/pillow?source=hash-mapping size: 944083 timestamp: 1758208682964 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-25.2-pyh145f28c_0.conda @@ -14426,51 +14459,52 @@ packages: - pkg:pypi/pip?source=hash-mapping size: 1177168 timestamp: 1753924973872 -- conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_1234567_0.conda - sha256: 1d59b9dc7d922846f594fc17d9ea034f569d7e6946eaa06a98474bee2f413b66 - md5: 94373edcca5bd8582588c658859b8f70 +- conda: https://conda.anaconda.org/conda-forge/noarch/pixi-pycharm-0.0.8-unix_hf108a03_2.conda + sha256: d61d62c0a7fa6ca17d9463d05a217040c621ca64b70a7afb4640e0ccfd63dec6 + md5: 3b56ce640f2fdb4ea97f012ef924130e depends: - __unix - python >=3.8 license: BSD-3-Clause license_family: BSD purls: [] - size: 8861 - timestamp: 1728816803073 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.0-h29eaf8c_0.conda - sha256: 1330c3fd424fa2deec6a30678f235049c0ed1b0fad8d2d81ef995c9322d5e49a - md5: d2f1c87d4416d1e7344cf92b1aaee1c4 + size: 6611 + timestamp: 1750158524483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda + sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a + md5: c01af13bdc553d1a8fbfff6e8db075f0 depends: + - libgcc >=14 + - libstdcxx >=14 + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 license: MIT license_family: MIT purls: [] - size: 398664 - timestamp: 1746011575217 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.0-h1fd1274_0.conda - sha256: 4d8184a8d453e8218017ed2fe024496b6ccf5ba05b994d3a60a8871022ec7a76 - md5: 808d70603573b87f3427b61501fa376d + size: 450960 + timestamp: 1754665235234 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda + sha256: ff8b679079df25aa3ed5daf3f4e3a9c7ee79e7d4b2bd8a21de0f8e7ec7207806 + md5: 742a8552e51029585a32b6024e9f57b4 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=19 license: MIT license_family: MIT purls: [] - size: 341650 - timestamp: 1746011664546 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.0-h2f9eb0b_0.conda - sha256: ed22ffec308e798d50066286e5b184c64bb47a3787840883249377ae4e6d684b - md5: d098a1cca9d588cd4d258d06a08a454e + size: 390942 + timestamp: 1754665233989 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda + sha256: 29c9b08a9b8b7810f9d4f159aecfd205fce051633169040005c0b7efad4bc718 + md5: 17c3d745db6ea72ae2fce17e7338547f depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 license: MIT license_family: MIT purls: [] - size: 213341 - timestamp: 1746011718977 + size: 248045 + timestamp: 1754665282033 - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.0-pyhcf101f3_0.conda sha256: 7efd51b48d908de2d75cbb3c4a2e80dd9454e1c5bb8191b261af3136f7fa5888 md5: 5c7a868f8241e64e1cf5fdf4962f23e2 @@ -14498,17 +14532,17 @@ packages: - pkg:pypi/plotly?source=hash-mapping size: 5227137 timestamp: 1759457672006 -- pypi: https://files.pythonhosted.org/packages/4d/c5/7cfda7ba9fa02243367fbfb4880b6de8039266f22c47c2dbbd39b6adc46f/plotnine-0.14.5-py3-none-any.whl +- pypi: https://files.pythonhosted.org/packages/eb/93/304341b5b949cba71c8413722e168aa60947ea0cac55a5d8cc448ea9917a/plotnine-0.15.0-py3-none-any.whl name: plotnine - version: 0.14.5 - sha256: 4a8bc4360732dd69a0263def4abab285ed8f0f4386186f1e44c642f2cea79b88 + version: 0.15.0 + sha256: 1ce9a109c124fc9b657039591ebb8acbc1c5ae238c9d9256aea9284bc6188436 requires_dist: - matplotlib>=3.8.0 - pandas>=2.2.0 - - mizani~=0.13.0 + - mizani~=0.14.0 - numpy>=1.23.5 - scipy>=1.8.0 - - statsmodels>=0.14.0 + - statsmodels>=0.14.5 - plotnine[extra] ; extra == 'all' - plotnine[doc] ; extra == 'all' - plotnine[lint] ; extra == 'all' @@ -14517,10 +14551,12 @@ packages: - plotnine[dev] ; extra == 'all' - adjusttext>=1.2.0 ; extra == 'extra' - geopandas>=1.0.0 ; extra == 'extra' - - scikit-learn>1.2.0 ; extra == 'extra' + - geodatasets>=2024.8.0 ; extra == 'extra' + - scikit-learn>=1.3.0 ; extra == 'extra' - scikit-misc>=0.5.1 ; extra == 'extra' + - polars>=1.24.0 ; extra == 'extra' + - pyarrow>=19.0.1 ; extra == 'extra' - jupyter ; extra == 'doc' - - nbsphinx ; extra == 'doc' - click ; extra == 'doc' - numpydoc>=0.9.1 ; extra == 'doc' - quartodoc>=0.7.2 ; extra == 'doc' @@ -14531,7 +14567,7 @@ packages: - twine ; extra == 'dev' - plotnine[typing] ; extra == 'dev' - pre-commit ; extra == 'dev' - - pyright==1.1.391 ; extra == 'typing' + - pyright==1.1.403 ; extra == 'typing' - ipython ; extra == 'typing' - pandas-stubs ; extra == 'typing' requires_python: '>=3.10' @@ -14559,11 +14595,14 @@ packages: - pkg:pypi/plum-dispatch?source=hash-mapping size: 40509 timestamp: 1759869330777 -- pypi: https://files.pythonhosted.org/packages/36/ca/f545f61282f75eea4dfde4db2944963dcd59abd50c20e33a1c894da44dad/polars-1.30.0-cp39-abi3-macosx_11_0_arm64.whl +- pypi: https://files.pythonhosted.org/packages/6b/80/1791ac226bb989bef30fe8fde752b2021b6ec5dfd6e880262596aedf4c05/polars-1.34.0-py3-none-any.whl name: polars - version: 1.30.0 - sha256: e3d05914c364b8e39a5b10dcf97e84d76e516b3b1693880bf189a93aab3ca00d + version: 1.34.0 + sha256: 40d2f357b4d9e447ad28bd2c9923e4318791a7c18eb68f31f1fbf11180f41391 requires_dist: + - polars-runtime-32==1.34.0 + - polars-runtime-64==1.34.0 ; extra == 'rt64' + - polars-runtime-compat==1.34.0 ; extra == 'rtcompat' - polars-cloud>=0.0.1a1 ; extra == 'polars-cloud' - numpy>=1.16.0 ; extra == 'numpy' - pandas ; extra == 'pandas' @@ -14582,75 +14621,7 @@ packages: - polars[pandas] ; extra == 'sqlalchemy' - polars[adbc,connectorx,sqlalchemy] ; extra == 'database' - fsspec ; extra == 'fsspec' - - deltalake>=0.19.0 ; extra == 'deltalake' - - pyiceberg>=0.7.1 ; extra == 'iceberg' - - gevent ; extra == 'async' - - cloudpickle ; extra == 'cloudpickle' - - matplotlib ; extra == 'graph' - - altair>=5.4.0 ; extra == 'plot' - - great-tables>=0.8.0 ; extra == 'style' - - tzdata ; sys_platform == 'win32' and extra == 'timezone' - - cudf-polars-cu12 ; extra == 'gpu' - - polars[async,cloudpickle,database,deltalake,excel,fsspec,graph,iceberg,numpy,pandas,plot,pyarrow,pydantic,style,timezone] ; extra == 'all' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/40/48/e9b2cb379abcc9f7aff2e701098fcdb9fe6d85dc4ad4cec7b35d39c70951/polars-1.30.0-cp39-abi3-macosx_10_12_x86_64.whl - name: polars - version: 1.30.0 - sha256: 4c33bc97c29b7112f0e689a2f8a33143973a3ff466c70b25c7fd1880225de6dd - requires_dist: - - polars-cloud>=0.0.1a1 ; extra == 'polars-cloud' - - numpy>=1.16.0 ; extra == 'numpy' - - pandas ; extra == 'pandas' - - polars[pyarrow] ; extra == 'pandas' - - pyarrow>=7.0.0 ; extra == 'pyarrow' - - pydantic ; extra == 'pydantic' - - fastexcel>=0.9 ; extra == 'calamine' - - openpyxl>=3.0.0 ; extra == 'openpyxl' - - xlsx2csv>=0.8.0 ; extra == 'xlsx2csv' - - xlsxwriter ; extra == 'xlsxwriter' - - polars[calamine,openpyxl,xlsx2csv,xlsxwriter] ; extra == 'excel' - - adbc-driver-manager[dbapi] ; extra == 'adbc' - - adbc-driver-sqlite[dbapi] ; extra == 'adbc' - - connectorx>=0.3.2 ; extra == 'connectorx' - - sqlalchemy ; extra == 'sqlalchemy' - - polars[pandas] ; extra == 'sqlalchemy' - - polars[adbc,connectorx,sqlalchemy] ; extra == 'database' - - fsspec ; extra == 'fsspec' - - deltalake>=0.19.0 ; extra == 'deltalake' - - pyiceberg>=0.7.1 ; extra == 'iceberg' - - gevent ; extra == 'async' - - cloudpickle ; extra == 'cloudpickle' - - matplotlib ; extra == 'graph' - - altair>=5.4.0 ; extra == 'plot' - - great-tables>=0.8.0 ; extra == 'style' - - tzdata ; sys_platform == 'win32' and extra == 'timezone' - - cudf-polars-cu12 ; extra == 'gpu' - - polars[async,cloudpickle,database,deltalake,excel,fsspec,graph,iceberg,numpy,pandas,plot,pyarrow,pydantic,style,timezone] ; extra == 'all' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/76/20/e018cd87d7cb6f8684355f31f4e193222455a6e8f7b942f4a2934f5969c7/polars-1.30.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: polars - version: 1.30.0 - sha256: 1a52af3862082b868c1febeae650af8ae8a2105d2cb28f0449179a7b44f54ccf - requires_dist: - - polars-cloud>=0.0.1a1 ; extra == 'polars-cloud' - - numpy>=1.16.0 ; extra == 'numpy' - - pandas ; extra == 'pandas' - - polars[pyarrow] ; extra == 'pandas' - - pyarrow>=7.0.0 ; extra == 'pyarrow' - - pydantic ; extra == 'pydantic' - - fastexcel>=0.9 ; extra == 'calamine' - - openpyxl>=3.0.0 ; extra == 'openpyxl' - - xlsx2csv>=0.8.0 ; extra == 'xlsx2csv' - - xlsxwriter ; extra == 'xlsxwriter' - - polars[calamine,openpyxl,xlsx2csv,xlsxwriter] ; extra == 'excel' - - adbc-driver-manager[dbapi] ; extra == 'adbc' - - adbc-driver-sqlite[dbapi] ; extra == 'adbc' - - connectorx>=0.3.2 ; extra == 'connectorx' - - sqlalchemy ; extra == 'sqlalchemy' - - polars[pandas] ; extra == 'sqlalchemy' - - polars[adbc,connectorx,sqlalchemy] ; extra == 'database' - - fsspec ; extra == 'fsspec' - - deltalake>=0.19.0 ; extra == 'deltalake' + - deltalake>=1.0.0 ; extra == 'deltalake' - pyiceberg>=0.7.1 ; extra == 'iceberg' - gevent ; extra == 'async' - cloudpickle ; extra == 'cloudpickle' @@ -14688,6 +14659,21 @@ packages: - pkg:pypi/polars?source=hash-mapping size: 506495 timestamp: 1759772410521 +- pypi: https://files.pythonhosted.org/packages/97/35/bc4f1a9dcef61845e8e4e5d2318470b002b93a3564026f0643f562761ecb/polars_runtime_32-1.34.0-cp39-abi3-macosx_10_12_x86_64.whl + name: polars-runtime-32 + version: 1.34.0 + sha256: 2878f9951e91121afe60c25433ef270b9a221e6ebf3de5f6642346b38cab3f03 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/9e/ce/11ca850b7862cb43605e5d86cdf655614376e0a059871cf8305af5406554/polars_runtime_32-1.34.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: polars-runtime-32 + version: 1.34.0 + sha256: 93fa51d88a2d12ea996a5747aad5647d22a86cce73c80f208e61f487b10bc448 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a6/bb/d655a103e75b7c81c47a3c2d276be0200c0c15cfb6fd47f17932ddcf7519/polars_runtime_32-1.34.0-cp39-abi3-macosx_11_0_arm64.whl + name: polars-runtime-32 + version: 1.34.0 + sha256: fbc329c7d34a924228cc5dcdbbd4696d94411a3a5b15ad8bb868634c204e1951 + requires_python: '>=3.9' - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.34.0-py310hffdcd12_0.conda noarch: python sha256: 07ef527a41836b9c85e3b2baaaa77df7ced66f69d286a1488eed2fa63c2acc7a @@ -15067,134 +15053,12 @@ packages: - pkg:pypi/pycparser?source=hash-mapping size: 110100 timestamp: 1733195786147 -<<<<<<< HEAD -- pypi: https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl - name: pydantic - version: 2.11.5 - sha256: f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7 - requires_dist: - - annotated-types>=0.6.0 - - pydantic-core==2.33.2 - - typing-extensions>=4.12.2 - - typing-inspection>=0.4.0 - - email-validator>=2.0.0 ; extra == 'email' - - tzdata ; python_full_version >= '3.9' and platform_system == 'Windows' and extra == 'timezone' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl - name: pydantic-core - version: 2.33.2 - sha256: a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc - requires_dist: - - typing-extensions>=4.6.0,!=4.7.0 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl - name: pydantic-core - version: 2.33.2 - sha256: f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2 - requires_dist: - - typing-extensions>=4.6.0,!=4.7.0 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl - name: pydantic-core - version: 2.33.2 - sha256: 3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7 - requires_dist: - - typing-extensions>=4.6.0,!=4.7.0 - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: pydantic-core - version: 2.33.2 - sha256: 8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1 - requires_dist: - - typing-extensions>=4.6.0,!=4.7.0 - requires_python: '>=3.9' -- pypi: . - name: pyfixest - version: 0.30.2 - sha256: 57b986f90bf9020a9b311706dc2f86eb6f77180167043fcb8e100fb422c55077 - requires_dist: - - scipy>=1.6,<1.16 - - formulaic>=1.1.0 - - pandas>=1.1.0 - - numba>=0.58.0 - - seaborn>=0.13.2 - - tabulate>=0.9.0 - - tqdm>=4.0.0 - - great-tables>=0.10.0 - - numpy>=1.25.2 - - narwhals>=1.13.3 - - joblib>=1.4.2,<2 - - pytest>=7.2.0 ; extra == 'dev' - - pytest-cov>=4.1.0 ; extra == 'dev' - - pytest-xdist>=3.5.0 ; extra == 'dev' - - pyhdfe>=0.2.0 ; extra == 'dev' - - doubleml==0.7.1 ; extra == 'dev' - - wildboottest>=0.3.2 ; extra == 'dev' - - ipykernel>=6.29.5,<7 ; extra == 'dev' - - duckdb>=1.1.3 ; extra == 'dev' - - polars>=1.0.0 ; extra == 'dev' - - pyarrow>=14.0 ; extra == 'dev' - - jax>=0.4.15 ; extra == 'dev' - - jaxlib>=0.4.15 ; extra == 'dev' - - pytest-benchmark>=5.1.0,<6 ; extra == 'dev' - - pre-commit==3.6.0 ; extra == 'lint' - - ruff>=0.4.0 ; extra == 'lint' - - mypy>=1.10.0 ; extra == 'lint' - - pip ; extra == 'build' - - maturin>=1.8.0 ; extra == 'build' - - lets-plot>=4.0.0 ; extra == 'plots' - - jupyterlab>=4.0.12 ; extra == 'docs' - - jupytext==1.16.1 ; extra == 'docs' - - watermark==2.4.3 ; extra == 'docs' - - wildboottest>=0.3.2 ; extra == 'docs' - - causaldata>=0.1.4,<0.2 ; extra == 'docs' - - pylatex>=1.4.2,<2 ; extra == 'docs' - - marginaleffects>=0.0.10 ; extra == 'docs' - - pyarrow>=14.0 ; extra == 'docs' - - jax>=0.4.15 ; extra == 'docs' - - jaxlib>=0.4.15 ; extra == 'docs' - - lets-plot>=4.0.0 ; extra == 'docs' - - quartodoc>=0.9.1,<0.10 ; extra == 'docs' - - jax>=0.4.15 ; extra == 'jax' - - jaxlib>=0.4.15 ; extra == 'jax' - requires_python: '>=3.9' - editable: true -- pypi: https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl - name: pygments - version: 2.19.1 - sha256: 9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c - requires_dist: - - colorama>=0.4.6 ; extra == 'windows-terminal' - requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/2f/51/cb006fbc08c32f161035fb19ca718250eb5f6d0692ea6dcc1e62c3e556a2/pyhdfe-0.2.0-py3-none-any.whl - name: pyhdfe - version: 0.2.0 - sha256: 5be73689101b97ff9e6e563874747257cdf86cb683159de8e16a5457130fb532 - requires_dist: - - numpy>=1.12.0 - - scipy>=1.0.0 - - sphinx==2.0.0 ; extra == 'docs' - - ipython ; extra == 'docs' - - astunparse ; extra == 'docs' - - sphinx-rtd-theme==0.4.3 ; extra == 'docs' - - nbsphinx==0.5.0 ; extra == 'docs' - - jinja2~=2.11 ; extra == 'docs' - - docutils==0.17 ; extra == 'docs' - - pytest ; extra == 'tests' - - pytest-xdist ; extra == 'tests' - requires_python: '>=3.6' -- pypi: https://files.pythonhosted.org/packages/6d/a8/10cf6b955b5fa19438790d9949867e04c785ae845e631c5ef6db444401d1/PyLaTeX-1.4.2.tar.gz - name: pylatex - version: 1.4.2 - sha256: bb7b21bec57ecdba3f6f44c856ebebdf6549fd6e80661bd44fd5094236729242 - requires_dist: -======= -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.1-pyh3cfb1c2_0.conda - sha256: 35a7b793da55f28d3192f597623cf0ebf9284c864569a83809745d778fa4d622 - md5: 475c8814c9d3a0e4fe7f6ed2abb2cf83 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.2-pyh3cfb1c2_0.conda + sha256: 736deae13f14b18436e2bea9f5e8e60ad1b355965e09c0744fe4a0c8ab9691c4 + md5: fc3a3515b4e71b22b635c4ae34e2f3ea depends: - annotated-types >=0.6.0 - - pydantic-core 2.41.3 + - pydantic-core 2.41.4 - python >=3.10 - typing-extensions >=4.6.1 - typing-inspection >=0.4.2 @@ -15203,11 +15067,11 @@ packages: license_family: MIT purls: - pkg:pypi/pydantic?source=compressed-mapping - size: 317803 - timestamp: 1760395202242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.3-py312h868fb18_0.conda - sha256: ea5ef864811b1d172ed01e00a3ccbf3e280d2fa030b68ea5a1353f3e9797acc8 - md5: ba8c3615d9719f74c031e788537130ac + size: 318267 + timestamp: 1760489656956 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.4-py312h868fb18_0.conda + sha256: c0bcd8b16188ecb0b9148701d166888a91103e898c2401a45b290e8483d5bbca + md5: e0767518fa45df8b484421a405f764c6 depends: - python - typing-extensions >=4.6.0,!=4.7.0 @@ -15220,11 +15084,11 @@ packages: license_family: MIT purls: - pkg:pypi/pydantic-core?source=hash-mapping - size: 1931094 - timestamp: 1760391178696 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.3-py312h8a6388b_0.conda - sha256: b8753b1d0fc2dc639a1900390516927451a02cd3e37ba7ce63cfd64dc0ccca6d - md5: 0bd83c8344394221b72308c6a0c6c01d + size: 1931675 + timestamp: 1760442412244 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.4-py312h8a6388b_0.conda + sha256: 69c8326ee596a38e8f45efa90d681a00f555bb71d3b51124cde9f54f2ab703f1 + md5: 07327f96fdb3d4e986a9e0c1d8a847dc depends: - python - typing-extensions >=4.6.0,!=4.7.0 @@ -15236,16 +15100,16 @@ packages: license_family: MIT purls: - pkg:pypi/pydantic-core?source=hash-mapping - size: 1927816 - timestamp: 1760391181544 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.3-py312h6ef9ec0_0.conda - sha256: 9d4a2852fda8427f8b4bdc2c53386c6846c363d716dab7c42af6ad7a3e980388 - md5: b8b898e710e78fea1d9b4f295df05c8e + size: 1927170 + timestamp: 1760442434611 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.4-py312h6ef9ec0_0.conda + sha256: 2e5b5c9ca887e7ff8720a3d80be2096fdb0f79b65230e71189f09bd751b971a5 + md5: 66fe9bf4036796a8927d338057412922 depends: - python - typing-extensions >=4.6.0,!=4.7.0 - - python 3.12.* *_cpython - __osx >=11.0 + - python 3.12.* *_cpython - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 @@ -15253,8 +15117,8 @@ packages: license_family: MIT purls: - pkg:pypi/pydantic-core?source=hash-mapping - size: 1775551 - timestamp: 1760391254509 + size: 1776004 + timestamp: 1760442450283 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda sha256: 5577623b9f6685ece2697c6eb7511b4c9ac5fb607c9babc2646c811b428fd46a md5: 6b6ece66ebcae2d5f326c77ef2c5a066 @@ -15283,7 +15147,6 @@ packages: sha256: b6b052eb606330d10eefa0c18d814fdffbd60a10bb7e55a7ad4da1674cc5dbf2 md5: 0d9bd78bf5019c24223e9ae6b070ff7b depends: ->>>>>>> origin/master - ordered-set - python >=3.6 license: MIT @@ -15459,24 +15322,24 @@ packages: - pkg:pypi/pytest-xdist?source=hash-mapping size: 39300 timestamp: 1751452761594 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 - md5: a41d26cd4d47092d683915d058380dec +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda + sha256: 5386d8c8230b6478ae165ff34f57d498891ac160e871629cbb4d4256e69cc542 + md5: ceada987beec823b3c702710ee073fba depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - - libgcc >=13 + - libgcc >=14 - liblzma >=5.8.1,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<4.0a0 - - libuuid >=2.38.1,<3.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libuuid >=2.41.2,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 + - openssl >=3.5.4,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -15484,12 +15347,12 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 31279179 - timestamp: 1744325164633 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.8-h2b335a9_101_cp313.conda - build_number: 101 - sha256: b429867f0faf5b9b71e2ebdbe8fedd6f84f4ba53fd2010a1f1458e1e1a038b98 - md5: ae8cf86b9140c7b6a6593a582a8eab8a + size: 31547362 + timestamp: 1760367376467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.9-h2b335a9_100_cp313.conda + build_number: 100 + sha256: 317ee7a38f4cc97336a2aedf9c79e445adf11daa0d082422afa63babcd5117e4 + md5: 78ba5c3a7aecc68ab3a9f396d3b69d06 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -15510,22 +15373,22 @@ packages: - tzdata license: Python-2.0 purls: [] - size: 37149783 - timestamp: 1760366432739 + size: 37323303 + timestamp: 1760612239629 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.10-h9ccd52b_0_cpython.conda - sha256: 94835a129330dc1b2f645e12c7857a1aa4246e51777d7a9b7c280747dbb5a9a2 - md5: 597c4102c97504ede5297d06fb763951 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda + sha256: dfeee761021f0a84ade2c38d60fe8506771e49f992063377094fba11002d15ef + md5: 50be3ddc448ca63b24d145ebf9954877 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.4,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 + - openssl >=3.5.4,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -15533,12 +15396,12 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 13783219 - timestamp: 1744324415187 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.8-h2bd861f_101_cp313.conda - build_number: 101 - sha256: 1e127a5a1b35e4f8187d9810f7eaf00993cc6854b7cf6b38245d4f5c63f7522a - md5: 90ec169b37f0e65c5ccceeb7a00d5696 + size: 13685943 + timestamp: 1760368419157 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.9-h2bd861f_100_cp313.conda + build_number: 100 + sha256: c5ae352b7ac8412ed0e9ca8cac2f36d767e96d8e3efb014f47fd103be7447f22 + md5: 9f7e2b7871a35025f30a890492a36578 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 @@ -15556,22 +15419,22 @@ packages: - tzdata license: Python-2.0 purls: [] - size: 17462902 - timestamp: 1760366920956 + size: 17336745 + timestamp: 1760613619143 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.10-hc22306f_0_cpython.conda - sha256: 69aed911271e3f698182e9a911250b05bdf691148b670a23e0bea020031e298e - md5: c88f1a7e1e7b917d9c139f03b0960fea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda + sha256: 63d5362621bbf3b0d90424f5fc36983d7be2434f6d0b2a8e431ac78a69a1c01d + md5: 5a732c06cbf90455a95dc6f6b1dd7061 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.7.0,<3.0a0 + - libexpat >=2.7.1,<3.0a0 - libffi >=3.4.6,<3.5.0a0 - liblzma >=5.8.1,<6.0a0 - - libsqlite >=3.49.1,<4.0a0 + - libsqlite >=3.50.4,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.0,<4.0a0 + - openssl >=3.5.4,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -15579,12 +15442,12 @@ packages: - python_abi 3.12.* *_cp312 license: Python-2.0 purls: [] - size: 12932743 - timestamp: 1744323815320 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.8-h09175d0_101_cp313.conda - build_number: 101 - sha256: 5ff88415341058814a035375a6d9a0616769e280eebf72cddf8a8a426f572cec - md5: 71824735260cf57df846eb88aeb4fd99 + size: 12905286 + timestamp: 1760367318303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.9-h09175d0_100_cp313.conda + build_number: 100 + sha256: ba1121e96d034129832eff1bde7bba35f186acfc51fce1d7bacd29a544906f1b + md5: a2e4526d795a64fbd9581333482e07ee depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 @@ -15602,13 +15465,35 @@ packages: - tzdata license: Python-2.0 purls: [] - size: 12026833 - timestamp: 1760366828517 + size: 12802912 + timestamp: 1760613485744 python_site_packages_path: lib/python3.13/site-packages -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.8-hdf00ec1_101_cp313.conda - build_number: 101 - sha256: 944fcdc88b452972a829a70f115e24c120bc573d6a34810e0a418c1ddcd73553 - md5: ce6c7617eccf6671a93c867c37cd8fa4 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda + sha256: 9e9d6fa3b4ef231fcabf00364319f4ffacb1fb683e6c61c2438bafe3c61a7e2e + md5: e672c6dc92e6f1fcac0f9fed61b2b922 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.1,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libsqlite >=3.50.4,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.4,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + size: 15741664 + timestamp: 1760365715600 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.9-hdf00ec1_100_cp313.conda + build_number: 100 + sha256: 2d6d9d5c641d4a11b5bef148813b83eef4e2dffd68e1033362bad85924837f29 + md5: 89c006f6748c7e0fc7950ae0c80df0d5 depends: - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.7.1,<3.0a0 @@ -15625,9 +15510,8 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Python-2.0 - purls: [] - size: 16639232 - timestamp: 1760364470278 + size: 16503717 + timestamp: 1760610876821 python_site_packages_path: Lib/site-packages - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 @@ -15727,20 +15611,20 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/tzdata?source=compressed-mapping + - pkg:pypi/tzdata?source=hash-mapping size: 144160 timestamp: 1742745254292 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - build_number: 7 - sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 - md5: 0dfcdc155cf23812a0c9deada86fb723 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda + build_number: 8 + sha256: 80677180dd3c22deb7426ca89d6203f1c7f1f256f2d5a94dc210f6e758229809 + md5: c3efd25ac4d74b1584d2f7a57195ddf1 constrains: - python 3.12.* *_cpython license: BSD-3-Clause license_family: BSD purls: [] - size: 6971 - timestamp: 1745258861359 + size: 6958 + timestamp: 1752805918820 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda build_number: 8 sha256: 210bffe7b121e651419cb196a2a63687b087497595c9be9d20ebe97dd06060a7 @@ -15760,7 +15644,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pytz?source=compressed-mapping + - pkg:pypi/pytz?source=hash-mapping size: 189015 timestamp: 1742920947249 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_0.conda @@ -15802,7 +15686,7 @@ packages: license: MIT license_family: MIT purls: - - pkg:pypi/pyyaml?source=compressed-mapping + - pkg:pypi/pyyaml?source=hash-mapping size: 192483 timestamp: 1758892060370 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda @@ -15845,20 +15729,20 @@ packages: license_family: MIT size: 191630 timestamp: 1758892258120 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - sha256: 5d9fd32d318b9da615524589a372b33a6f3d07db2708de16570d70360bf638c2 - md5: c067122d76f8dcbe0848822942ba07be +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_0.conda + sha256: 54d04e61d17edffeba1e5cad45f10f272a016b6feec1fa8fa6af364d84a7b4fc + md5: 4a68f80fbf85499f093101cc17ffbab7 depends: - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 182043 - timestamp: 1758892011955 + size: 180635 + timestamp: 1758891847871 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda noarch: python sha256: a00a41b66c12d9c60e66b391e9a4832b7e28743348cf4b48b410b91927cd7819 @@ -16213,19 +16097,19 @@ packages: purls: [] size: 26145597 timestamp: 1747312142495 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_31-r43hc72bb7e_0.conda - sha256: 630a7b2632cd69989de100375864e7a0a7605777bca663f8b8c7b3e9149404d9 - md5: 3e3d3d9d6d06cd74b5574b01c7e65f1f +- conda: https://conda.anaconda.org/conda-forge/noarch/r-boot-1.3_32-r43hc72bb7e_0.conda + sha256: 01d3354a213a05675f64a089179fd2fb55de04054a261b101c416b8d1e0eef00 + md5: 988942432fc199b952664dc2207b819f depends: - r-base >=4.3,<4.4.0a0 license: Unlimited license_family: Other purls: [] - size: 627950 - timestamp: 1724870915770 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.8-r43hc72bb7e_0.conda - sha256: 0ee30f4b6442303c520a0bb2d3f3dfbe7cc66746586e00ad04f4d99a820e24f3 - md5: 9456b34ca8679b177e8e844352964518 + size: 628854 + timestamp: 1756495642467 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.9-r43hc72bb7e_0.conda + sha256: 4c0508c27872b3ed19a5a518acca7b5671489ac20e516d744b5b5d9a40ae01b9 + md5: d84ae287e433d49960b9f51ce2169cd7 depends: - r-backports - r-base >=4.3,<4.4.0a0 @@ -16242,8 +16126,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 1815845 - timestamp: 1743149659459 + size: 1813029 + timestamp: 1753730171319 - conda: https://conda.anaconda.org/conda-forge/noarch/r-car-3.1_3-r43hc72bb7e_0.conda sha256: 88b9d02b51a24c384187e0834724291be2f8382b808c64f803bfc16b5d0bcce1 md5: 57adea13a63a6edd35accd59edb00292 @@ -16576,20 +16460,20 @@ packages: purls: [] size: 500379 timestamp: 1722713513783 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.1.3-r43hc72bb7e_1.conda - sha256: 95f686d7ab521846cefdb9390b18927df859610bece8ec3f0e605a384780f008 - md5: 2f20d2368e1258a42227b1af7b1f7270 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-cowplot-1.2.0-r43hc72bb7e_1.conda + sha256: 5af9ac1c1647243fee363757f006f2e5971140d540755e333341832335a5fe5a + md5: f251443ac3e630dad2c982fe77ea9528 depends: - r-base >=4.3,<4.4.0a0 - - r-ggplot2 >2.2.1 + - r-ggplot2 >=3.5.2 - r-gtable - r-rlang - r-scales license: GPL-2.0-only license_family: GPL2 purls: [] - size: 1309065 - timestamp: 1721319126328 + size: 1309616 + timestamp: 1753108450687 - conda: https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.5.2-r43h785f33e_1.conda sha256: df0f798533937a024c560406275d718adf1b063b7ac748449417099d0aec96cb md5: 7bc23dbad7c6015d9b2b9c59bb3e5d85 @@ -16610,56 +16494,56 @@ packages: purls: [] size: 166200 timestamp: 1719730621224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.4-r43he23165d_0.conda - sha256: 439ba325b4f81fdb70042dee4860ac0eca670ef51c329f32529729c26464d862 - md5: 2f8a676a2475df63e8fcf64858fa29f5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.17.8-r43h1c8cec4_0.conda + sha256: 9270473f8eade0f2936cff56ef1967dde673074171d9c17715246eee679499a3 + md5: f07abbed7956fc27e689d5215ce4abc0 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - - libgcc >=13 + - libgcc >=14 - libzlib >=1.3.1,<2.0a0 - r-base >=4.3,<4.4.0a0 license: MPL-2.0 license_family: OTHER purls: [] - size: 2313161 - timestamp: 1748277863844 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-data.table-1.17.4-r43h3ffa6c1_0.conda - sha256: e527c131696cebcb8c98321727308eed25cf0156a15debf630d7e3cd0e5d2ec1 - md5: 5604b5600cb820632cf0a82d40e97427 + size: 2281954 + timestamp: 1753775215815 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-data.table-1.17.8-r43h6b02a07_0.conda + sha256: 1f7f366ffffa5b9bde90bf2c70f6f2812772e8b1e062d03e756c0dd3e147ced4 + md5: 0b811d92520e1e581fa47327826cf670 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 - - llvm-openmp >=18.1.8 + - llvm-openmp >=19.1.7 - r-base >=4.3,<4.4.0a0 license: MPL-2.0 license_family: OTHER purls: [] - size: 2300792 - timestamp: 1748278128783 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-data.table-1.17.4-r43h28c71e1_0.conda - sha256: c686a01ca8ba8592a9cd3139066764b5ca6251d27b5477b92b0c05fa73026ada - md5: 728216238530d847820ed310cdbd58d7 + size: 2273203 + timestamp: 1753775321785 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-data.table-1.17.8-r43h7c057e0_0.conda + sha256: 31ba7ddd844970c3d9efbd5b55d57820da89d6f7f09fcd2b0ef09973512b871d + md5: 6edcba6ff30a0022c3b11698d47dc382 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 - - llvm-openmp >=18.1.8 + - llvm-openmp >=19.1.7 - r-base >=4.3,<4.4.0a0 license: MPL-2.0 license_family: OTHER purls: [] - size: 2269423 - timestamp: 1748278079792 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.1.6-r43hc72bb7e_0.conda - sha256: e91b0f0436b48dba17fb5dc7c7d38f7cf9cfacd7ff1f03014dc8224b13627260 - md5: ac16122071af739dc821d3dde77ce6c0 + size: 2237051 + timestamp: 1753775375358 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-deriv-4.2.0-r43hc72bb7e_0.conda + sha256: c5ce2fcdddc48ae5778ae4277d68fc0c1057cff75a74df31a8906f61be4787b6 + md5: 01e443382391c395f5362808807a385a depends: - r-base >=4.3,<4.4.0a0 license: GPL-3.0-or-later license_family: GPL3 purls: [] - size: 168144 - timestamp: 1726236020907 + size: 171547 + timestamp: 1750466698857 - conda: https://conda.anaconda.org/conda-forge/noarch/r-diagram-1.6.5-r43ha770c72_3.conda sha256: 7c55e1843a64f1c1b163db82c8821796d69ac2269e5893e45b1465e16cfa5426 md5: bbb01e34de1b65e7161e39cbaae2171e @@ -16708,9 +16592,9 @@ packages: purls: [] size: 203888 timestamp: 1724100405404 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.6.27-r43hc72bb7e_0.conda - sha256: 3c60c4f63bd0800d08a7606d8dfa81bb77c8a1c3da4b869ef1d5e219b92a2e24 - md5: 6d86883c2a95554436d4d4c13cd7d94e +- conda: https://conda.anaconda.org/conda-forge/noarch/r-doby-4.7.0-r43hc72bb7e_0.conda + sha256: 27dac2b297c2fbca5f53f8cbc5aa6286c49d6e25ef1eb0b6cf5fba6b45b6e7f9 + md5: 810478c538f919ce0fbe57caa4d97fae depends: - r-base >=4.3,<4.4.0a0 - r-boot @@ -16729,8 +16613,8 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 4824064 - timestamp: 1747412077497 + size: 4838128 + timestamp: 1751262923328 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.1.4-r43h0d4f4ea_1.conda sha256: 7b0d0477b5d35f1a0fa552d82566ede4e2a0256685b6f8fb8b1ed6bce1365452 md5: ab942d9107cdd78e74410f9ec48e50c7 @@ -16801,9 +16685,9 @@ packages: purls: [] size: 1400729 timestamp: 1721288883899 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_1.conda - sha256: 64ee4e440ec7c61c350301a4edba28757632e0eaee20bcc1077922700fbc443b - md5: 3b34018507dfdfdbebd960e3427a0c45 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-dreamerr-1.4.0-r43hc72bb7e_2.conda + sha256: 5ff39aeb5d9704823c094702023f216b384171dc617abd8ff9df904158ee1085 + md5: 3fbe7655058d1986651b372ffec14309 depends: - r-base >=4.3,<4.4.0a0 - r-formula @@ -16811,8 +16695,8 @@ packages: license: GPL-3.0-only license_family: GPL3 purls: [] - size: 957232 - timestamp: 1720051905117 + size: 958226 + timestamp: 1757893889334 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-e1071-1.7_16-r43h93ab643_0.conda sha256: 4cd5c67da0d8e70617540b79354e3542c1c238ba83d9fa2cfe5d535cc7f59851 md5: deec964f274f54c0e4f83bd5b7be5de6 @@ -17041,9 +16925,9 @@ packages: purls: [] size: 174759 timestamp: 1719771688298 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.49.0-r43h785f33e_0.conda - sha256: 1a17996633fc41e9a8e37cabeb7df024c94b8ff987bef855ec614c02cadbf749 - md5: dd9f407201bdacdc5ccfcf335d9e54f8 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-future-1.67.0-r43h785f33e_0.conda + sha256: 09bea1995e5b6c4a0bb6b495b00bf482e69a1972d221ecb020169aea228cb3ff + md5: 551733adb332f0bf37c26406a70b0224 depends: - r-base >=4.3,<4.4.0a0 - r-digest @@ -17053,11 +16937,11 @@ packages: license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 884230 - timestamp: 1746794035712 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.11.3-r43hc72bb7e_0.conda - sha256: 61449d43276476bc8b5dbb326dbf9dc4e1c6b21f9778a2b6203fb1c78b43849d - md5: 3b103233744fe38012980538315de822 + size: 928298 + timestamp: 1753819450465 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-future.apply-1.20.0-r43hc72bb7e_0.conda + sha256: 568405fb1ecfd071e150252fe9dc29aaaf44fbfa288c9a9bd5584c4278a4b232 + md5: 81aa60fb06652f5e0daa293d9122a236 depends: - r-base >=4.3,<4.4.0a0 - r-future >=1.28.0 @@ -17065,8 +16949,8 @@ packages: license: GPL-2.0-or-later license_family: GPL3 purls: [] - size: 166981 - timestamp: 1736498852011 + size: 202052 + timestamp: 1749217977079 - conda: https://conda.anaconda.org/conda-forge/noarch/r-gbrd-0.4.12-r43hc72bb7e_1.conda sha256: b2266091f5d9678b2416119c4504358ad3dfa15c4c915c7e53cf9c06971e96e2 md5: 82188cf6d6b8aabe25936d70785219dd @@ -17201,9 +17085,9 @@ packages: purls: [] size: 226514 timestamp: 1729878469778 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.1-r43hc72bb7e_0.conda - sha256: 6b9e47fcca2e4b017f148aa38969601563907fcd2110fbadb7dcdafbff08d651 - md5: e05111b91087575e374881be9702282d +- conda: https://conda.anaconda.org/conda-forge/noarch/r-hardhat-1.4.2-r43hc72bb7e_0.conda + sha256: 7add47590b4757cdd32595e5818f5887ae609342f1663f7a374350d3ecf00006 + md5: 8772adf6fd62468d073321715fe18c7f depends: - r-base >=4.3,<4.4.0a0 - r-cli >=3.6.0 @@ -17215,8 +17099,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 832161 - timestamp: 1738571627562 + size: 834292 + timestamp: 1755679025520 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-ipred-0.9_15-r43hdb488b9_1.conda sha256: 19ad5cd21cbd6125b02abde40cc68f20dd8431334a2694d7d437a1d1cb26dc30 md5: 45bd44a48d22dfdbcf353801002c34ce @@ -17336,7 +17220,7 @@ packages: depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 license: Unlimited @@ -17350,7 +17234,7 @@ packages: depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 license: Unlimited @@ -17441,13 +17325,13 @@ packages: purls: [] size: 121181 timestamp: 1719758660891 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_37-r43h93ab643_0.conda - sha256: 9efdce5ced93e9eb9968ac26eb07f1b0d431c9e67995b950b736aadaa9e58a38 - md5: f43ef6ab43758d57a53b36a62ea4b6e3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-lme4-1.1_37-r43h3697838_1.conda + sha256: 534958e237453e324957375b3d5d060cca10f4af872b6804560ea861e584ea16 + md5: 4117ab411edabff204a3ae3f32464e20 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-boot - r-lattice @@ -17462,52 +17346,50 @@ packages: license: GPL-2.0-or-later license_family: GPL3 purls: [] - size: 4624846 - timestamp: 1744637396171 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-lme4-1.1_37-r43h2711daa_0.conda - sha256: 782bc77b795c73dfde02b6e0631ca10d2654634fd5168babb1e62a421cfce733 - md5: a30e284f29be5b8629ac24431925f262 + size: 4633516 + timestamp: 1756761366793 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-lme4-1.1_35.5-r43h25d921d_1.conda + sha256: ff7a360f30d52ad69586bb0ffa4bc9552bba969225fa1eed401002243e4c86d7 + md5: ba71ac2a44f1a4bb57a3faaf0a45f308 depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=16 - r-base >=4.3,<4.4.0a0 - r-boot - r-lattice - r-mass - - r-matrix 1.6_5 r43h9cf22e7_1 + - r-matrix >=1.6_2 - r-minqa >=1.1.15 - r-nlme >=3.1_123 - r-nloptr >=1.0.4 - r-rcpp >=0.10.5 - r-rcppeigen >=0.3.3.9.4 - - r-reformulas >=0.3.0 license: GPL-2.0-or-later license_family: GPL3 purls: [] - size: 4605804 - timestamp: 1744637503741 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-lme4-1.1_37-r43h31118f2_0.conda - sha256: c52bc2daa70c7f582d40d52cf846629ed10f0df26346d03486602ebc195ee1b4 - md5: c23200f61fdd7c4a3067d361c1a7896b + size: 4596540 + timestamp: 1722399566367 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-lme4-1.1_35.5-r43hd76f289_1.conda + sha256: 417be6d4ff9c72b5c2f60622ef1dc743fa98988598b48306ddc75b40107a2055 + md5: 8f75e773a83d98911a3b0972b229675f depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=16 - r-base >=4.3,<4.4.0a0 - r-boot - r-lattice - r-mass - - r-matrix 1.6_5 r43hded8dfa_1 + - r-matrix >=1.6_2 - r-minqa >=1.1.15 - r-nlme >=3.1_123 - r-nloptr >=1.0.4 - r-rcpp >=0.10.5 - r-rcppeigen >=0.3.3.9.4 - - r-reformulas >=0.3.0 license: GPL-2.0-or-later license_family: GPL3 purls: [] - size: 4591725 - timestamp: 1744637651159 + size: 4577333 + timestamp: 1722399728283 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.4-r43h2b5f3a1_0.conda sha256: b8ca00db70eb183106f36fea6908a102ad993243488aa96fc5700b3b2fe92f05 md5: ea3d9586d87bb3644505fe792e84f884 @@ -17784,29 +17666,29 @@ packages: purls: [] size: 73336 timestamp: 1725545236343 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r43ha936806_0.conda - sha256: edf83a0b57e22da23f5dbf36eb1114edacfbfa9db00aa78e15afc4abaa702789 - md5: 027f16b1393b490924cba41ee6d61f04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-minqa-1.2.8-r43ha36cffa_1.conda + sha256: faa4419a19fab562e4f3a5a56740d78c8e43eade5c77c180c299a9dba924da8f + md5: 3acea15c29a91683c39bd1cf04f56080 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libgfortran-ng - - libgfortran5 >=12.4.0 - - libstdcxx-ng >=12 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.9.10 license: GPL-2.0-only license_family: GPL2 purls: [] - size: 143414 - timestamp: 1723948046187 + size: 147579 + timestamp: 1754664978184 - conda: https://conda.anaconda.org/conda-forge/osx-64/r-minqa-1.2.8-r43hc1e73ce_0.conda sha256: 40f172fe8271d0ea8add90d9ac704deb6927f0b775eb8ec475579617c59dd3cc md5: 70872ec5631b0b597f6543d145d14eaf depends: - __osx >=10.13 - libcxx >=16 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=12.3.0 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 @@ -17822,7 +17704,7 @@ packages: depends: - __osx >=11.0 - libcxx >=16 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=12.3.0 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 @@ -17926,7 +17808,7 @@ packages: md5: 066957e94aac11ab4d4b907de6840ae8 depends: - __osx >=10.13 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.3.0 - libgfortran5 >=14.2.0 - r-base >=4.3,<4.4.0a0 @@ -17941,7 +17823,7 @@ packages: md5: 84709f905de0e6cd81aad01565fd2a9b depends: - __osx >=11.0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.3.0 - libgfortran5 >=14.2.0 - r-base >=4.3,<4.4.0a0 @@ -17973,7 +17855,7 @@ packages: depends: - __osx >=10.13 - libcxx >=18 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - nlopt >=2.9.0,<2.10.0a0 - r-base >=4.3,<4.4.0a0 @@ -17988,7 +17870,7 @@ packages: depends: - __osx >=11.0 - libcxx >=18 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - nlopt >=2.9.0,<2.10.0a0 - r-base >=4.3,<4.4.0a0 @@ -18044,43 +17926,43 @@ packages: purls: [] size: 127013 timestamp: 1719752122849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.44.0-r43h2b5f3a1_0.conda - sha256: 36d972b5a3331d0ae8208775f4c5c9fdded5e2e03cf8bb6decd3674827da1df4 - md5: cdd2adc5da91f15937874439e02982ef +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-parallelly-1.45.1-r43h54b55ab_0.conda + sha256: a9d1397b1535d5fbb2a531d18f4ab538b88dae7578e3231e460bb996b8beb4c3 + md5: 8e4a7f8dbafbdfe58087b7d8d004a8dc depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - r-base >=4.3,<4.4.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 569068 - timestamp: 1746650598549 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-parallelly-1.44.0-r43h79f565e_0.conda - sha256: 16a97c37b0af6cc5fe95bed1d471cdf733818cce8e06800a24782c29e1b5835d - md5: bc022047aa2767a7bcab77450ef14ed3 + size: 578870 + timestamp: 1753475694230 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-parallelly-1.45.1-r43h63eaeb5_0.conda + sha256: e5db7c0e847f5e6fbc4e898ed3e6d728618dd47bff69013b152f80e7b3764979 + md5: 4dafef5425e34ee1ca34c014dca3b629 depends: - __osx >=10.13 - r-base >=4.3,<4.4.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 568460 - timestamp: 1746650772181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-parallelly-1.44.0-r43h570997c_0.conda - sha256: 87d5f03ae9ea9847eb0809b6c4446f227ca0070042a7b0322f47f80ae666d6df - md5: 83aa595a82cd5ddbba0f9e5b38ec8df0 + size: 577818 + timestamp: 1753475776481 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-parallelly-1.45.1-r43hb470c6c_0.conda + sha256: f5b387fd27d3d936157d682623025e198b14258ef0278e85c7a968ee4ae1a459 + md5: 5038d90a79dbea77287da612cb1176fa depends: - __osx >=11.0 - r-base >=4.3,<4.4.0a0 license: LGPL-2.1-or-later license_family: LGPL purls: [] - size: 568903 - timestamp: 1746650911278 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.4-r43hc72bb7e_0.conda - sha256: 67035e0d0da5edd5e4ec8c8ab522677e3523b49e80e5197db392dbc0ed4e8709 - md5: 0ecad07e9860ca6ba7a8aeae5d28f49d + size: 580035 + timestamp: 1753475939861 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pbkrtest-0.5.5-r43hc72bb7e_0.conda + sha256: 6801fe77d81d6b55a83bbb67dd00aca979beda39f203d3ecf55f18b3fe26ccc8 + md5: 5f76848e5a554af490c7ff2c6fa3fda0 depends: - r-base >=4.3,<4.4.0a0 - r-broom @@ -18093,11 +17975,11 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 231170 - timestamp: 1745863037591 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.10.2-r43hc72bb7e_0.conda - sha256: fe22f949c52c83fd0637a521d7428eeabceedc6e2a40248c2616fa99da733c52 - md5: 4a0ba31ee9c89297e0a333bf5174896c + size: 229956 + timestamp: 1752847104462 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.11.0-r43hc72bb7e_0.conda + sha256: 612d2104e30e466439993ee3bf4a3068f5ca81cb3fefa209cd8842ae7820a8ef + md5: 657672af86f156a821b7a8d5ac88f916 depends: - r-base >=4.3,<4.4.0a0 - r-cli @@ -18111,8 +17993,8 @@ packages: license: GPL-3.0-only license_family: GPL3 purls: [] - size: 625575 - timestamp: 1743869491150 + size: 626555 + timestamp: 1751664487399 - conda: https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda sha256: 165008a79554f27704737d56b89b3c7298adaf56d5c70d4004dd95ae99c64b20 md5: 509adf7f5bc34d77064f28f487d7fa6e @@ -18123,87 +18005,89 @@ packages: purls: [] size: 26365 timestamp: 1719725359345 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r43ha18555a_1.conda - sha256: 5fa74530d0e7c600e19e9703e381c1a01a93ecf466154c4b03d9e57de1866ae2 - md5: d93aedee4cc78f78413969b1e891842c +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-plyr-1.8.9-r43h3697838_2.conda + sha256: 4fe8e97695f6725b98eb6ec00a449da5f9a1f21ecb45058116fee98c0b07bf2d + md5: 6a505d93a0c911766dee1e62cb2914e9 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.11.0 license: MIT license_family: MIT purls: [] - size: 822760 - timestamp: 1719753127445 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-plyr-1.8.9-r43h25d921d_1.conda - sha256: 4b4173747141f2ebe93bd6e4c7b6b17d6ae1e6bd39b265a3e6bbc4764a1acee9 - md5: 1ca3bad195633deed13c8cd8bfd4852e + size: 824087 + timestamp: 1753778859891 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-plyr-1.8.9-r43h813e631_2.conda + sha256: c74e90cfa9f39816422658a18524bfe9c517bd620d897f6b7035b88e3242264f + md5: ce9b93c2b84acccafebfb66d727f6f78 depends: - __osx >=10.13 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.11.0 license: MIT license_family: MIT purls: [] - size: 820404 - timestamp: 1719753173541 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-plyr-1.8.9-r43hd76f289_1.conda - sha256: 8e8a823bc536a500b11d52670e842d2b6871aaa12e01e8d4ec5e5e78f6b581a7 - md5: db87611167bdd7972e0c7396f03528c3 + size: 822457 + timestamp: 1753778980088 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-plyr-1.8.9-r43h088c9a0_2.conda + sha256: 23e8d4b8c10c50aedf7750f4cc475b5e13c03edcf25294a3181008e1bf222966 + md5: 84c1b1821ad131bae7079234d7baf916 depends: - __osx >=11.0 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.11.0 license: MIT license_family: MIT purls: [] - size: 820777 - timestamp: 1719753379517 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-proc-1.18.5-r43ha18555a_1.conda - sha256: 78d310c846367d48a3ea27e5f6eae6874e02f481019b77d9dcc9ed86bacbc015 - md5: 1d7db1e76a22b4bee1e95d67ef62bfd9 + size: 823452 + timestamp: 1753779051131 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-proc-1.19.0.1-r43h3697838_0.conda + sha256: 746442951ffa8e5bf77cd513eb938a162a296c270e1dbd569fb4fdca150c6d36 + md5: d68f757372baf87b76050a203aeffd91 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-plyr - r-rcpp >=0.11.1 license: GPL-3.0-or-later license_family: GPL3 purls: [] - size: 838902 - timestamp: 1719787313775 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-proc-1.18.5-r43h25d921d_1.conda - sha256: 08178e7fc9c9367fc6ce7077cced5cb187b5f38ed76534ca3346ac351bcbfd7f - md5: 365a839e0391fb9626ee2b51893b33ac + size: 821101 + timestamp: 1753970883010 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-proc-1.19.0.1-r43h813e631_0.conda + sha256: 8183eba60b09e916553ef3ba8d088feaee59ff83f4f3f406c88485b61d0575b8 + md5: 86e1e458c35c6a48d46f409376c728b8 depends: - __osx >=10.13 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-plyr - r-rcpp >=0.11.1 license: GPL-3.0-or-later license_family: GPL3 purls: [] - size: 835048 - timestamp: 1719787485414 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-proc-1.18.5-r43hd76f289_1.conda - sha256: e59e19c4c0939a5bd142e3f8106ab2bb9454cf10a39030f5360a7e103fdafb26 - md5: 845c72278966f97979527c583bd79676 + size: 818352 + timestamp: 1753971006325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-proc-1.19.0.1-r43h088c9a0_0.conda + sha256: 598001e117803033f3948107923f0fe30ca475dbd3c1d7e47088afd02788c0f6 + md5: f969b5fe3dd6628e6b802803e29659f0 depends: - __osx >=11.0 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-plyr - r-rcpp >=0.11.1 license: GPL-3.0-or-later license_family: GPL3 purls: [] - size: 834537 - timestamp: 1719787476343 + size: 818395 + timestamp: 1753971027643 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-prodlim-2025.04.28-r43h93ab643_0.conda sha256: c9db422bad625dd4807b3a78ec77501a4cbc453af803a311b11b3f00be794eb8 md5: 2d272f5f6b99b79ab4c2e6df43f8895d @@ -18309,12 +18193,12 @@ packages: purls: [] size: 182582 timestamp: 1719753347743 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.4-r43h2b5f3a1_0.conda - sha256: c8dbc3a442904ecf876997a9f10d8ec29024124398f500a409c6158f71ba0def - md5: bbd05c0faa8bd9942664d2d7521ac3ce +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.1.0-r43h54b55ab_0.conda + sha256: 10185fd77275eff5df238a716288dd5a6ad6712af4b15894bef8e8f9a350b008 + md5: b38b66e713a00d34363835caab286412 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - r-base >=4.3,<4.4.0a0 - r-cli >=3.4 - r-lifecycle >=1.0.3 @@ -18324,11 +18208,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 522278 - timestamp: 1740444184696 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.0.4-r43h79f565e_0.conda - sha256: 2a37936f9c5f5991a6bf26f45ee71eb7e4b15cc3467d19d3183109323b2f1e3a - md5: 3a7a42f92bc4db88cf5adc5695050ea2 + size: 538190 + timestamp: 1752219959917 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-purrr-1.1.0-r43h63eaeb5_0.conda + sha256: 3d99651ead388e7f88c5b33bdede02e918a5f44a25052d377b1b15ae8b6e6f54 + md5: e5d95784726ecf4213f9766c10905478 depends: - __osx >=10.13 - r-base >=4.3,<4.4.0a0 @@ -18340,11 +18224,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 520837 - timestamp: 1740444330620 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.0.4-r43h570997c_0.conda - sha256: d68134b0be0030f034494dbb13efe6f3a43fb015b2535282fbfe837d6d2dcd7d - md5: 94c6b89a1e4990353cf12ffc976043ff + size: 536559 + timestamp: 1752220190044 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-purrr-1.1.0-r43hb470c6c_0.conda + sha256: bba1f551856221ddd9a575778f872ee4d2b3e2ad23594febeea9b055d777c7ca + md5: 91f268081ed04f1caed9542be0c11e8b depends: - __osx >=11.0 - r-base >=4.3,<4.4.0a0 @@ -18356,8 +18240,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 520929 - timestamp: 1740444312564 + size: 537850 + timestamp: 1752220176263 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-quantreg-6.1-r43h012206f_0.conda sha256: f2d6104e1185aafb9501d22e1f560448aec7ba5286cbff1bd822f270ef212f50 md5: fc1a3a12a23548d109556c7d60f586cd @@ -18384,7 +18268,7 @@ packages: depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - r-base >=4.3,<4.4.0a0 @@ -18403,7 +18287,7 @@ packages: depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - r-base >=4.3,<4.4.0a0 @@ -18439,30 +18323,6 @@ packages: purls: [] size: 966631 timestamp: 1728045656531 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-rbibutils-2.3-r43h199b6f9_0.conda - sha256: e19d8e87024d11a180eab9ba816b80227085e120c4a139d1d2205de0cf0e827a - md5: c5c18af3669e5401b7cea46c497fa8fb - depends: - - __osx >=10.13 - - r-base >=4.3,<4.4.0a0 - - r-xml2 - license: GPL-2.0-only - license_family: GPL2 - purls: [] - size: 862445 - timestamp: 1728045753778 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rbibutils-2.3-r43h0d9a900_0.conda - sha256: 9493d59ba9b79a3ea9509f2eb1dcc4b13b5051126bb52ab019be25dc2a0fa935 - md5: 1bd5191cd278c5d82f8f6893859106a0 - depends: - - __osx >=11.0 - - r-base >=4.3,<4.4.0a0 - - r-xml2 - license: GPL-2.0-only - license_family: GPL2 - purls: [] - size: 1017108 - timestamp: 1728045767585 - conda: https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda sha256: 830a208355b612b1e548ff0be5df46b1ad2b41c9303cafb9bb99047b4727b0fd md5: ceb1c167b7d9e5eefed0ecbe759540de @@ -18473,9 +18333,9 @@ packages: purls: [] size: 68464 timestamp: 1719738389069 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.0.14-r43h93ab643_0.conda - sha256: a4235bc2c1dbf08ff9f1ffc5115d630675ada915b5fd419941523c216f087ca1 - md5: 65c6f3a40e8f5eece8136b64811ff1cd +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpp-1.1.0-r43h93ab643_0.conda + sha256: a67dcf539995644d61cf8309e37ea5e6266757ca2fac2f823056eac19abb1b2c + md5: b10c60cf4d65df16b0fe2a17e2324375 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -18484,11 +18344,11 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 2044869 - timestamp: 1736709199117 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.0.14-r43h2711daa_0.conda - sha256: 29b3d1b1ebd33dd0f0d8dbd73c3a5589c2009fe9e5ec45f96d5103b76ea53570 - md5: 0b4e349e7c32c17fedc7bb9123b5576d + size: 2073790 + timestamp: 1751533249085 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpp-1.1.0-r43h2711daa_0.conda + sha256: b2d500aba45ab5d108d7729c759568e61179ceba95b2cf392f1eb6e2e7b326b7 + md5: 3f361de7e478eff4b46ab73b1c03caaa depends: - __osx >=10.13 - libcxx >=18 @@ -18496,11 +18356,11 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 2061227 - timestamp: 1736709257819 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.0.14-r43h31118f2_0.conda - sha256: dec26917627282509aabb5be5727179471bef6a28ec6c3320221b0a3f0a8d9f4 - md5: 754547d50030c3d30e05e00ce7279b51 + size: 2089401 + timestamp: 1751533416660 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpp-1.1.0-r43h31118f2_0.conda + sha256: 2624338c469519cf3bca14d74996e56ff58ec746c4088856888c8bd2b02c82cb + md5: 10fb106e250463e05202825df260f234 depends: - __osx >=11.0 - libcxx >=18 @@ -18508,41 +18368,41 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 2054181 - timestamp: 1736709289700 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-14.4.2_1-r43hc2d650c_0.conda - sha256: 1018bdd066a98fcbdf7d45c3367f363b8d067891bd98b84a4c443be18b4f566c - md5: a9ded0b699d83238bcb9ba6949924fce + size: 2081844 + timestamp: 1751533471116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-rcpparmadillo-15.0.2_1-r43h3704496_0.conda + sha256: 6c47e4678df5ddf76b835a692f9dd7a911ca43fd33225ca2a8df60c0e3845a0e + md5: d42e4036841783321a5dbfb75e08e562 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 - libblas >=3.9.0,<4.0a0 - - libgcc >=13 + - libgcc >=14 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.11.0 license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 904978 - timestamp: 1745647199296 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpparmadillo-14.4.2_1-r43hda2d453_0.conda - sha256: 3c23441b3c46a351e5881126744703c609660e4374379037f4732013d882d13a - md5: 87497150d553ed0b89116e5a10655115 + size: 1047474 + timestamp: 1757378921968 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-rcpparmadillo-15.0.2_1-r43hfa0a987_0.conda + sha256: 78a5005f893dee6bd2a8f641ac1562aba0c94230215894f812a7965b5c65c93c + md5: 51f9f720225bd0cca780af534ff311d7 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - - libcxx >=18 + - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - llvm-openmp >=18.1.8 + - llvm-openmp >=19.1.7 - r-base >=4.3,<4.4.0a0 - r-rcpp >=0.11.0 license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 912766 - timestamp: 1745647354599 + size: 1050887 + timestamp: 1757379333920 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-rcpparmadillo-14.4.2_1-r43h9618d43_0.conda sha256: e72fb76cee5402c5771f01deff54251eba68abb290a053229a9fb26258c12b9c md5: 919131a6441b0e90318a1e414dd30e14 @@ -18663,13 +18523,13 @@ packages: purls: [] size: 145665 timestamp: 1746178592139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reshape2-1.4.4-r43h0d4f4ea_4.conda - sha256: 20c5dab7ddfc2355415a001ff68c4db84eb3d019fdbe6dc81d014af27f48b7c3 - md5: 45c563cc9243b5243331b57a4dc445f0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-reshape2-1.4.4-r43h3697838_5.conda + sha256: 58a7c17fd902d12006499fa2607a19a252da0ce9ab616642c2bd0e1c0c2566c4 + md5: 2b1a3b5db0dfe42d6aec041b7cff8079 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=14 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-plyr >=1.8.1 - r-rcpp @@ -18677,14 +18537,14 @@ packages: license: MIT license_family: MIT purls: [] - size: 122237 - timestamp: 1721242403431 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-reshape2-1.4.4-r43h25d921d_4.conda - sha256: 5e734d9bc93b88be44fce5f91e10e8b6abc460c26a5e17cc96f36e67b3db6b93 - md5: c5fe66b1a3e732d5508c4c255a94e906 + size: 126599 + timestamp: 1755176639768 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-reshape2-1.4.4-r43h813e631_5.conda + sha256: 9356ba7c2b133a02f1fc4c469957f0b3c258ce81be0eadd04dfdd08e4948262d + md5: b88f54e87e72037a0fd5fa1d7b9660bd depends: - __osx >=10.13 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-plyr >=1.8.1 - r-rcpp @@ -18692,14 +18552,14 @@ packages: license: MIT license_family: MIT purls: [] - size: 117906 - timestamp: 1721242496799 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-reshape2-1.4.4-r43hd76f289_4.conda - sha256: 73ca745b59e2eccec0afa2054df7bb45ec717a46a84042e76f5699e3eea0cf73 - md5: 1f92afd321441af5add90d5c6127d874 + size: 119700 + timestamp: 1755176865183 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-reshape2-1.4.4-r43h088c9a0_5.conda + sha256: ad351eb939cea1914b515530be2413713ffe4bd972da4f06b86ba263d32f5dc4 + md5: f071b690c81b5536a51961d0bbc33498 depends: - __osx >=11.0 - - libcxx >=16 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-plyr >=1.8.1 - r-rcpp @@ -18707,8 +18567,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 117075 - timestamp: 1721242493471 + size: 118676 + timestamp: 1755176858814 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.6-r43h93ab643_0.conda sha256: abffd4a1a86b16a3ef3fa56f9eb8a94502f353092e91332fe533a7e14eafbc19 md5: 057b78b5adfffc99092504a1da563abe @@ -18837,7 +18697,7 @@ packages: md5: 24a3fa157eec49eb2d677af7050087cc depends: - __osx >=10.13 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=12.3.0 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 @@ -18851,7 +18711,7 @@ packages: md5: ec6989fdff4181a9a2a7b1677faa05f5 depends: - __osx >=11.0 - - libgfortran 5.* + - libgfortran >=5 - libgfortran5 >=12.3.0 - libgfortran5 >=13.2.0 - r-base >=4.3,<4.4.0a0 @@ -18993,9 +18853,9 @@ packages: purls: [] size: 1537141 timestamp: 1754471744275 -- conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda - sha256: 29924b31f8ca7ab6a151930d4e6ca1729a99b0397861fdaaef88b085901dfc07 - md5: b997c27a396a991db9fba6ad9c07da40 +- conda: https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.2-r43h785f33e_0.conda + sha256: bc37452f8aa402d40edb58e4974660e6ed37e305eab44b6c52da5776abff199e + md5: 6607925b2cf647865087a739429ad04e depends: - r-base >=4.3,<4.4.0a0 - r-cli @@ -19008,8 +18868,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 295942 - timestamp: 1721222784194 + size: 297553 + timestamp: 1757388984150 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-survival-3.8_3-r43h2b5f3a1_0.conda sha256: e06c607398fa5a44a84fe700d79f0bf3eea3b79875d96b2c56f88a592e60a079 md5: e0310ee9becb6ac350695e7e8c42c2e9 @@ -19047,12 +18907,12 @@ packages: purls: [] size: 8252005 timestamp: 1734545770905 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r43hdb488b9_3.conda - sha256: add63c6a08182f6a4e1ba93d7fe54aab7a7a661d679b42d19af30f195b1b11a3 - md5: 3e78c6ee2205ef56c165cbf2c166fdf6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.3.0-r43h2b5f3a1_0.conda + sha256: fff2641f31b314a5d1c5f71e2ec36eb2b8e808e0376d5fc3c4db836230ef717e + md5: e12f4dc87c2ab21d2e4384cbf8f42111 depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 + - libgcc >=13 - r-base >=4.3,<4.4.0a0 - r-fansi >=0.4.0 - r-lifecycle >=1.0.0 @@ -19064,11 +18924,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 611697 - timestamp: 1721259190383 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.2.1-r43h6b9d099_3.conda - sha256: 9710b7fe2bf25aace6d1080f74d4872a0e9947e7f3efcbed7019957d4532c518 - md5: 6df3f4711a412c2cb3bb4cc559b14791 + size: 614545 + timestamp: 1749412580292 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-tibble-3.3.0-r43h79f565e_0.conda + sha256: d5a320195c36f5a7f1efe262739d10bc4bbc1ac6ee1ea660988b6f3a69370ab9 + md5: bfcb07589b011e5479410c46feacc8fc depends: - __osx >=10.13 - r-base >=4.3,<4.4.0a0 @@ -19082,11 +18942,11 @@ packages: license: MIT license_family: MIT purls: [] - size: 610863 - timestamp: 1721259272399 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.2.1-r43h07cda29_3.conda - sha256: 3e7fe3372ca09fbac9f9a7891e12d6adfece4551766d6ae63ae0fe9dc79f4a8b - md5: efb485157952521f8c64ced989a880c5 + size: 613287 + timestamp: 1749412631863 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tibble-3.3.0-r43h570997c_0.conda + sha256: 87d7b360d05c53e552365264caef403fcbaad10330ff480a9d3bf1a58793ba0d + md5: 817a1631b531bf831d7b25ceeb9bf9af depends: - __osx >=11.0 - r-base >=4.3,<4.4.0a0 @@ -19100,8 +18960,8 @@ packages: license: MIT license_family: MIT purls: [] - size: 610871 - timestamp: 1721259485537 + size: 614303 + timestamp: 1749412771433 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.1-r43h0d4f4ea_1.conda sha256: ed3441377e331540aeb2790c741770d2396672751117f665edaa75745b12cae8 md5: f3e46eed831fa7cbce60dfead1ff6268 @@ -19237,49 +19097,49 @@ packages: purls: [] size: 1249991 timestamp: 1727020210599 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r43h93ab643_0.conda - sha256: 2b41bcdfb662a526a6e8fd983d47fe57761b82c778243571a3e55a8de8633652 - md5: a2abc26bd2c81ad6227752ec8465fd33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.5.0-r43h3697838_1.conda + sha256: 6392381fbf8c8d412f2d6567a16ab48413321b9038326113202bfe5a2ae52004 + md5: 4a274c181d15c97ff48421f385f12392 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - libgcc >=14 + - libstdcxx >=14 - r-base >=4.3,<4.4.0a0 - r-cpp11 >=0.5.2 license: MIT license_family: MIT purls: [] - size: 551797 - timestamp: 1743493647546 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-tzdb-0.5.0-r43h2711daa_0.conda - sha256: 1299d7a90d666389f0afae4af0717e82a369dad1f517b3f5aad500bde9825566 - md5: 1f11c0f3b8fe094f87afa2592826fef9 + size: 553881 + timestamp: 1756541826164 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-tzdb-0.5.0-r43h813e631_1.conda + sha256: a969662a84b7e3aa02a02f4b9edf1eb2d7716d45db94e408775a5bf4db1d1a79 + md5: d8b9041b953a1bdb67410c3639eedbae depends: - __osx >=10.13 - - libcxx >=18 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-cpp11 >=0.5.2 license: MIT license_family: MIT purls: [] - size: 551248 - timestamp: 1743493870967 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tzdb-0.5.0-r43h31118f2_0.conda - sha256: 329b66232bbea05eed15c0d6c34bf0d27b97a92cacd5b8321c412759f3360bb1 - md5: 10f75f04b5b9912ec5adb0f032ef9e2a + size: 552220 + timestamp: 1756541968367 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-tzdb-0.5.0-r43h088c9a0_1.conda + sha256: cef5cfc13efdff526840e83aad2dd07376055a5e3ffcc24303eb51882ff886cd + md5: 47358ae3c324659e5cbd75052c197268 depends: - __osx >=11.0 - - libcxx >=18 + - libcxx >=19 - r-base >=4.3,<4.4.0a0 - r-cpp11 >=0.5.2 license: MIT license_family: MIT purls: [] - size: 546726 - timestamp: 1743494095010 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.5-r43h2b5f3a1_0.conda - sha256: 23263ac1dccca98c48f23676c3a08ce38b735ef1dce59674820f0e64a01cc27b - md5: c9993f3c0531aa4a230650b0a991aea4 + size: 547150 + timestamp: 1756542087735 +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.6-r43h2b5f3a1_0.conda + sha256: fd2677c1425d34fdc02b0b8a1a1559749018ec56a73d7656ad519771367cf8f0 + md5: a2b3283964103f1ff47d6acea6f69e24 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -19287,30 +19147,30 @@ packages: license: Apache-2.0 license_family: APACHE purls: [] - size: 145459 - timestamp: 1746097787580 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.5-r43h79f565e_0.conda - sha256: 052301ddd24cd1c079c6eda3c9b9be36b25246c1179bfca61992483697b0b39a - md5: 0776590e0f2e57c58f6e44d7dd72aba5 + size: 145920 + timestamp: 1749429252081 +- conda: https://conda.anaconda.org/conda-forge/osx-64/r-utf8-1.2.6-r43h79f565e_0.conda + sha256: 5fecb35bbcb7d6ef09dbf2f5dd91a4a911f6d0346ab0594d70e95730f32d37ac + md5: ed4e32e694c05dfc5b6c57789a4c7aeb depends: - __osx >=10.13 - r-base >=4.3,<4.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 142091 - timestamp: 1746098082156 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.5-r43h570997c_0.conda - sha256: b8e83b1fc708faa1fb6138f11a2923bd392578e78ab301e646d9aab9fa05cdc8 - md5: fd865692b54c2f67bbcbc14663197704 + size: 141497 + timestamp: 1749429269726 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-utf8-1.2.6-r43h570997c_0.conda + sha256: 84e4f358741571bc7764b72466e0dc5238bd767e4cd5debab5725e5492591734 + md5: 59042329235f4c6d0f3446e90408ede8 depends: - __osx >=11.0 - r-base >=4.3,<4.4.0a0 license: Apache-2.0 license_family: APACHE purls: [] - size: 142912 - timestamp: 1746097939535 + size: 143017 + timestamp: 1749429402001 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r43h0d4f4ea_1.conda sha256: f0d086f275bbd590678e3bc43b7a8ac7e4402a15727efdff0308b16efcbeac03 md5: 7f4c30bb576acec2a682c40790c2d406 @@ -19380,15 +19240,15 @@ packages: purls: [] size: 231178 timestamp: 1730138441270 -- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.8-r43h1bb2df6_0.conda - sha256: a1f95342e1d6861423c2411e864c118738e468bed118395bc4ab64941f2a6099 - md5: 0dd4c0d50e2770cb8fab723a08c50f0c +- conda: https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.4.0-r43hc6fd541_0.conda + sha256: e19bb57f7d067e07cb06fd2266814d937d5f382c1bba3fb2c4c2f965ee9e64b2 + md5: 818fd4bb19e2c4cbfe84dff41eab6ff8 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - liblzma >=5.6.4,<6.0a0 - - libstdcxx >=13 - - libxml2 >=2.13.6,<2.14.0a0 + - libgcc >=14 + - liblzma >=5.8.1,<6.0a0 + - libstdcxx >=14 + - libxml2 >=2.13.8,<2.14.0a0 - libzlib >=1.3.1,<2.0a0 - r-base >=4.3,<4.4.0a0 - r-cli @@ -19396,38 +19256,8 @@ packages: license: GPL-2.0-or-later license_family: GPL2 purls: [] - size: 347111 - timestamp: 1742005310994 -- conda: https://conda.anaconda.org/conda-forge/osx-64/r-xml2-1.3.8-r43hcb51277_0.conda - sha256: 70ad741962a5928043726812cec72e38ee2f6818625cbb8c2d523a1ba42f5010 - md5: a5621facbb5fe4cb3fc4e9796109afd4 - depends: - - __osx >=10.13 - - libcxx >=18 - - libxml2 >=2.13.6,<2.14.0a0 - - r-base >=4.3,<4.4.0a0 - - r-cli - - r-rlang >=1.1.0 - license: GPL-2.0-or-later - license_family: GPL2 - purls: [] - size: 345715 - timestamp: 1742005460944 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/r-xml2-1.3.8-r43h1f9de2a_0.conda - sha256: b1abb8e01244790775e9518e63278fdbd6a3a636e666cab429470fbf51064910 - md5: ed1917aca53276fd948e05bcc43a3480 - depends: - - __osx >=11.0 - - libcxx >=18 - - libxml2 >=2.13.6,<2.14.0a0 - - r-base >=4.3,<4.4.0a0 - - r-cli - - r-rlang >=1.1.0 - license: GPL-2.0-or-later - license_family: GPL2 - purls: [] - size: 200439 - timestamp: 1742005543073 + size: 349284 + timestamp: 1755733770115 - conda: https://conda.anaconda.org/conda-forge/linux-64/r-zoo-1.8_14-r43h2b5f3a1_0.conda sha256: 7d8022801957fa40a844c8e4e76d50515b9c8ebaccec30d401d65477deb57ad7 md5: 41b69e9cc03a6cd38b7107a0e037e27d @@ -20013,6 +19843,27 @@ packages: - pkg:pypi/scipy?source=hash-mapping size: 14548640 timestamp: 1739792791585 +- conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py312h451d5c4_0.conda + sha256: a154a6b6f4efefc65366437f611fa89c8178059e2ee7350515fe4a4c3da55c1d + md5: 50632c72cc92ae3ebb615cb496bbf946 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.5 + - numpy >=1.19,<3 + - numpy >=1.23.5 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/scipy?source=hash-mapping + size: 15350553 + timestamp: 1739793319263 - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.15.2-py313h2eca4b9_0.conda sha256: 64ab269e333ab957c61053745cb967bfbe216f191a594107adcb69aca16b6294 md5: 9ee392518b0a688b996dec39ced39e35 @@ -20030,8 +19881,6 @@ packages: - vc14_runtime >=14.29.30139 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/scipy?source=hash-mapping size: 15516458 timestamp: 1739793288161 - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda @@ -20355,6 +20204,27 @@ packages: - pkg:pypi/statsmodels?source=hash-mapping size: 11808825 timestamp: 1759297802972 +- conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py312h196c9fc_1.conda + sha256: 7cbdfb5932db1acbc51feebb885909aa77181414b560e10f2c735ef0807e8f5f + md5: dbc75fe20560c82d95f93f3565655171 + depends: + - numpy <3,>=1.22.3 + - numpy >=1.23,<3 + - packaging >=21.3 + - pandas !=2.1.0,>=1.4 + - patsy >=0.5.6 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - scipy !=1.9.2,>=1.8 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/statsmodels?source=hash-mapping + size: 11540820 + timestamp: 1759297495968 - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.5-py313h0591002_1.conda sha256: 2615c0d4058d2945cba6a082bd888b6299f6cc5ebb99557d28a48ddbeb271f2b md5: 442526bc22b3710205d648545792c14b @@ -20372,21 +20242,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - purls: - - pkg:pypi/statsmodels?source=hash-mapping size: 11571590 timestamp: 1759297763389 -- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h0157908_18.conda - sha256: 69ab5804bdd2e8e493d5709eebff382a72fab3e9af6adf93a237ccf8f7dbd624 - md5: 460eba7851277ec1fd80a1a24080787a - depends: - - kernel-headers_linux-64 3.10.0 he073ed8_18 - - tzdata - license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 - license_family: GPL - purls: [] - size: 15166921 - timestamp: 1735290488259 - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_8.conda sha256: 0053c17ffbd9f8af1a7f864995d70121c292e317804120be4667f37c92805426 md5: 1bad93f0aa428d618875ef3a588a889e @@ -20396,6 +20253,7 @@ packages: - tzdata license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later license_family: GPL + purls: [] size: 24210909 timestamp: 1752669140965 - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhd8ed1ab_2.conda @@ -20554,36 +20412,37 @@ packages: purls: [] size: 3466348 timestamp: 1748388121356 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda - sha256: 6b9fc12830b1a17127e9650594b06a02ecd3ee812b9eba0f114b9eabc19511ea - md5: dff3627fec2c0584ded391205295abf0 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8d826fa_7.conda + sha256: dd5d8aa7f434acbe4ef5a54f5f2c221650f6c25a4c5ad62c46b36267e1b8fb9b + md5: 3ac51142c19ba95ae0fadefa333c9afb depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - tk >=8.6.13,<8.7.0a0 license: TCL purls: [] - size: 91641 - timestamp: 1719242648005 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-hba9d6f1_6.conda - sha256: faa63cabde22f71aa709f2bef5cf4b3c315769f009d2de05308dfe0edb137b77 - md5: 37fbdac8967151ada2e588cafd46b4b2 + size: 92307 + timestamp: 1750266495866 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tktable-2.10-h2c093e9_7.conda + sha256: a73f0e2f250802a780461a91da37ba03122765bbd6fad4a4926b0d52037a5c84 + md5: 6a16e39eaafcab4ab34c3f2af0966645 depends: - __osx >=10.13 - tk >=8.6.13,<8.7.0a0 license: TCL purls: [] - size: 81347 - timestamp: 1719242823061 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h1e387b8_6.conda - sha256: 609603b30d4acc5401f93c21224e44eecc6e55847c5ce611b80a012425a9c64d - md5: b881653babe024b3b1fc30603771f9b0 + size: 81990 + timestamp: 1750266653662 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tktable-2.10-h3c7de25_7.conda + sha256: af0be0e8a391a4c2269e8a2eeee711955368d01f53b69a4b05c9ea4094c31dd5 + md5: 7c2e2e25a80f1538b0dcee34026bec42 depends: - __osx >=11.0 - tk >=8.6.13,<8.7.0a0 license: TCL purls: [] - size: 79824 - timestamp: 1719242715383 + size: 79744 + timestamp: 1750266680133 - conda: https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_1.conda sha256: 34f3a83384ac3ac30aefd1309e69498d8a4aa0bf2d1f21c645f79b180e378938 md5: b0dd904de08b7db706167240bf37b164 @@ -20595,17 +20454,6 @@ packages: - pkg:pypi/toml?source=hash-mapping size: 22132 timestamp: 1734091907682 -- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e - md5: ac944244f1fed2eb49bae07193ae8215 - depends: - - python >=3.9 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tomli?source=hash-mapping - size: 19167 - timestamp: 1733256819729 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.3.0-pyhcf101f3_0.conda sha256: cb77c660b646c00a48ef942a9e1721ee46e90230c7c570cdeb5a893b5cce9bff md5: d2732eb636c264dc9aa4cbee404b1a53 @@ -20781,52 +20629,29 @@ packages: purls: [] size: 122968 timestamp: 1742727099393 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tzlocal-5.3-py312h7900ff3_0.conda - sha256: 2954d15fbf5d8fb8ee71475eb5bd94dc450ff1fc6f211da6877e1439ef465dd1 - md5: a38354f639cd0d0ddf265e7b95166a58 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tzlocal?source=hash-mapping - size: 40960 - timestamp: 1739472100401 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tzlocal-5.3-py312hb401068_0.conda - sha256: 748a269152a4ef74ef983bed8ec123d66e85e11589eccd1fd3a8fb20b5904814 - md5: 2c04d77d12845e1543e13e86891a5830 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzlocal-5.3.1-pyh8f84b5b_0.conda + sha256: 6447388bd870ab0a2b38af5aa64185cd71028a2a702f0935e636a01d81fba7fc + md5: 369f3170d6f727d3102d83274e403b66 depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - purls: - - pkg:pypi/tzlocal?source=hash-mapping - size: 41008 - timestamp: 1739472300876 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tzlocal-5.3-py312h81bd7bf_0.conda - sha256: c990750ee555207fdef1b977ce8064f818fc4e1b0c72902bb741091aa113927c - md5: 698106d1f12864aa48b218159a2cee0c - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.10 + - __unix + - python license: MIT license_family: MIT purls: - pkg:pypi/tzlocal?source=hash-mapping - size: 41432 - timestamp: 1739472411098 -- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 - md5: 6797b005cd0f439c4c5c9ac565783700 + size: 23880 + timestamp: 1756227235167 +- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda + sha256: 3005729dce6f3d3f5ec91dfc49fc75a0095f9cd23bab49efb899657297ac91a5 + md5: 71b24316859acd00bdb8b38f5e2ce328 constrains: + - vc14_runtime >=14.29.30037 - vs2015_runtime >=14.29.30037 license: LicenseRef-MicrosoftWindowsSDK10 purls: [] - size: 559710 - timestamp: 1728377334097 + size: 694692 + timestamp: 1756385147981 - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7 md5: 5bcffe10a500755da4a71cc0fb62a420 @@ -20868,20 +20693,20 @@ packages: license_family: MIT size: 13689 timestamp: 1725784235751 -- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0 - md5: 97337494471e4265a203327f9a194234 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda + sha256: f1944f3d9645a6fa2770966ff010791136e7ce0eaa0c751822b812ac04fee7d6 + md5: d8c5ef1991a5121de95ea8e44c34e13a depends: - cffi - - python >=3.13.0rc1,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 17210 - timestamp: 1725784604368 + size: 17213 + timestamp: 1725784449622 - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-16.0.0-py312h4c3975b_1.conda sha256: cbf7d13819cf526a094f0cfe2da7f7ba22c4fbae4d231c9004520fbbf93f7027 md5: 4da303c1e91703d178817252615ca0a7 @@ -20923,6 +20748,21 @@ packages: - pkg:pypi/unicodedata2?source=hash-mapping size: 410699 timestamp: 1756494753956 +- conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-16.0.0-py312he06e257_1.conda + sha256: 7c428eff9896e80919f37cc617b3f6dc0d20c79356866e0960783d5726eb142f + md5: 8f713d85daf7ab101d69dfa24108c9bc + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/unicodedata2?source=hash-mapping + size: 401235 + timestamp: 1756494835837 - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb @@ -20949,9 +20789,9 @@ packages: - pkg:pypi/urllib3?source=hash-mapping size: 101735 timestamp: 1750271478254 -- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_26.conda - sha256: 7a685b5c37e9713fa314a0d26b8b1d7a2e6de5ab758698199b5d5b6dba2e3ce1 - md5: d3f0381e38093bde620a8d85f266ae55 +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h2b53caa_32.conda + sha256: 82250af59af9ff3c6a635dd4c4764c631d854feb334d6747d356d949af44d7cf + md5: ef02bbe151253a72b8eda264a935db66 depends: - vc14_runtime >=14.42.34433 track_features: @@ -20959,8 +20799,8 @@ packages: license: BSD-3-Clause license_family: BSD purls: [] - size: 17893 - timestamp: 1743195261486 + size: 18861 + timestamp: 1760418772353 - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_32.conda sha256: e3a3656b70d1202e0d042811ceb743bd0d9f7e00e2acdf824d231b044ef6c0fd md5: 378d5dcec45eaea8d303da6f00447ac0 @@ -21009,7 +20849,7 @@ packages: license: Apache-2.0 license_family: APACHE purls: - - pkg:pypi/watchdog?source=compressed-mapping + - pkg:pypi/watchdog?source=hash-mapping size: 141297 timestamp: 1756135345110 - conda: https://conda.anaconda.org/conda-forge/osx-64/watchdog-6.0.0-py312h2f459f6_1.conda @@ -21202,6 +21042,21 @@ packages: - pkg:pypi/wrapt?source=hash-mapping size: 62577 timestamp: 1756851972334 +- conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py312he06e257_1.conda + sha256: f9e9e28ef3a0564a5588427b9503ed08e5fe3624b8f8132d60383439a47baafc + md5: fc10fd823d05bde83cda9e90dbef34ed + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/wrapt?source=hash-mapping + size: 63012 + timestamp: 1756852490793 - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda sha256: 260a3295f39565c28be9232a11ca7ee435af6e9366ffd2569ff29a63e7c144a0 md5: 3e199c8db04833fe628867462aeaca24 @@ -21213,8 +21068,6 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-2-Clause license_family: BSD - purls: - - pkg:pypi/wrapt?source=hash-mapping size: 63385 timestamp: 1756851987645 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda @@ -21463,17 +21316,17 @@ packages: purls: [] size: 244772 timestamp: 1757371008525 -- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda - sha256: 3f7a58ff4ff1d337d56af0641a7eba34e7eea0bf32e49934c96ee171640f620b - md5: 234be740b00b8e41567e5b0ed95aaba9 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda + sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad + md5: df5e78d904988eb55042c0c97446079f depends: - python >=3.9 license: MIT license_family: MIT purls: - - pkg:pypi/zipp?source=compressed-mapping - size: 22691 - timestamp: 1748277499928 + - pkg:pypi/zipp?source=hash-mapping + size: 22963 + timestamp: 1749421737203 - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 7a10cc092..0d81429bf 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -162,9 +162,9 @@ def test_single_fit_feols_hac_panel( fml, balanced, ): - adj = False - cluster_adj = False - ssc_ = ssc(adj=adj, cluster_adj=cluster_adj) + k_adj = False + G_adj = False + ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) @@ -217,10 +217,9 @@ def test_single_fit_feols_hac_panel( ro.Formula(fml), vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, - ssc=fixest.ssc(adj, "nested", cluster_adj, "min", "min", False), - **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), - # use once fixest 0.13 is released and we can support non-consecutive time - # **({"panel_time_step": panel_time_step} if panel_time_step is not None else {}) + ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}) + ) mod = pf.feols( From 51da551d21d0a3410d5dbff1378047841039d024 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Fri, 17 Oct 2025 22:47:50 +0200 Subject: [PATCH 30/43] update get_panel_idx --- pyfixest/estimation/vcov_utils.py | 42 ++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 49e6dcbeb..5aebd155c 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -163,7 +163,7 @@ def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): def _get_panel_idx( - panel_arr: np.ndarray, time_arr: np.ndarray + panel_arr: np.ndarray, time_arr: np.ndarray, duplicate_method: str = "none" ) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ Get indices for each unit. I.e. the first value ("starts") and how many @@ -175,6 +175,10 @@ def _get_panel_idx( Panel ID variable. time_arr : ndarray, shape (N*T,) Time ID variable. + duplicate_method : str, optional + How to handle duplicate (panel, time) pairs. + - "none": raise error if duplicates exist (default) + - "first": keep only the first occurrence of each (panel, time) pair Returns ------- @@ -185,16 +189,42 @@ def _get_panel_idx( panel_arr_sorted : panel variable in sorted order time_arr_sorted : time variable in sorted order """ + if duplicate_method not in ("none", "first"): + raise ValueError( + f"duplicate_method must be 'none' or 'first', got '{duplicate_method}'" + ) + order = np.lexsort((time_arr, panel_arr)) # sort by panel, then time p_sorted = panel_arr[order] + t_sorted = time_arr[order] + + # Check for duplicates + duplicate_mask = (np.diff(p_sorted) == 0) & (np.diff(t_sorted) == 0) + + if np.any(duplicate_mask): + if duplicate_method == "none": + raise ValueError( + "There are duplicate time periods for the same panel id. This is not supported for HAC SEs. " + "You can use duplicate_method='first' in vcov_kwargs to keep only the first occurrence." + ) + elif duplicate_method == "first": + # Keep only first occurrence of each (panel, time) pair + # duplicate_mask is True where positions i and i+1 are duplicates + # Mark all positions that are duplicates (position i+1 in duplicate pairs) for removal + keep_mask = np.ones(len(order), dtype=bool) + dup_indices = np.where(duplicate_mask)[0] + # For each duplicate pair, mark the second occurrence (dup_indices[j] + 1) for removal + keep_mask[dup_indices + 1] = False + + # Filter to keep only first occurrences + order = order[keep_mask] + p_sorted = p_sorted[keep_mask] + t_sorted = t_sorted[keep_mask] + units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) panel_arr_sorted = panel_arr[order] time_arr_sorted = time_arr[order] - duplicate_mask = (np.diff(panel_arr_sorted) == 0) & (np.diff(time_arr_sorted) == 0) - if np.any(duplicate_mask): - raise ValueError( - "There are duplicate time periods for the same panel id. This is not supported for HAC SEs." - ) + return order, units, starts, counts, panel_arr_sorted, time_arr_sorted From e070e30da13e8865875d77da1b1d4af762090106 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 12:58:34 +0200 Subject: [PATCH 31/43] tests for fepois, glm --- docs/changelog.qmd | 15 ++ pyfixest/estimation/estimation.py | 9 +- pyfixest/estimation/feglm_.py | 1 + pyfixest/estimation/feols_.py | 6 + pyfixest/estimation/vcov_utils.py | 64 ++----- tests/test_errors.py | 8 + tests/test_hac_vs_fixest.py | 300 +++++++++++++++++++++++++++--- 7 files changed, 324 insertions(+), 79 deletions(-) diff --git a/docs/changelog.qmd b/docs/changelog.qmd index 4253493ff..7c5a52191 100644 --- a/docs/changelog.qmd +++ b/docs/changelog.qmd @@ -40,6 +40,21 @@ We also install all package by default from the free and open source conda-forge `rpy2`that we need for testing `pyfixest` against `fixest`, we temporarily have dropped support for the dev and docs environments for windows. A fix is work in progress. +## New Features + +### HAC Standard Errors + +We now support HAC standard errors! Thanks for Daman (https://github.com/damandhaliwal) for all his work (and coping with me with the PR, which took forever to get through). +We now support: + +- time series HAC +- panel HAC +- panel DK + +variance-covariance matrices. + +For now, we assume that the time series column is consecutive and each entry has "time delta 1". Relaxation of this requirement are work in progress. + ### `cat_template` argument for plotting functions For easier encoding of categorical variables in relation to the `iplot()` and `coefplot()` functions, we add a new function argument, cat_template: diff --git a/pyfixest/estimation/estimation.py b/pyfixest/estimation/estimation.py index 7b626495b..da0c4986d 100644 --- a/pyfixest/estimation/estimation.py +++ b/pyfixest/estimation/estimation.py @@ -72,7 +72,8 @@ def feols( Additional keyword arguments to pass to the vcov function. These keywoards include "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel - identifier used for NW and DK standard errors. + identifier used for NW and DK standard errors. Currently, the the time difference between consecutive time + periods is always treated as 1. More flexible time-step selection is work in progress. weights : Union[None, str], optional. Default is None. Weights for WLS estimation. If None, all observations @@ -571,7 +572,8 @@ def fepois( Additional keyword arguments to pass to the vcov function. These keywoards include "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel - identifier used for NW and DK standard errors. + identifier used for NW and DK standard errors. Currently, the the time difference between consecutive time + periods is always treated as 1. More flexible time-step selection is work in progress. ssc : str A ssc object specifying the small sample correction for inference. @@ -814,7 +816,8 @@ def feglm( Additional keyword arguments to pass to the vcov function. These keywoards include "lag" for the number of lag to use in the Newey-West (NW) and Driscoll-Kraay (DK) HAC standard errors. "time_id" for the time ID used for NW and DK standard errors, and "panel_id" for the panel - identifier used for NW and DK standard errors. + identifier used for NW and DK standard errors. Currently, the the time difference between consecutive time + periods is always treated as 1. More flexible time-step selection is work in progress. ssc : str A ssc object specifying the small sample correction for inference. diff --git a/pyfixest/estimation/feglm_.py b/pyfixest/estimation/feglm_.py index 445702ef4..b9a56e856 100644 --- a/pyfixest/estimation/feglm_.py +++ b/pyfixest/estimation/feglm_.py @@ -82,6 +82,7 @@ def __init__( self._support_crv3_inference = True self._support_iid_inference = True + self._support_hac_inference = False self._supports_cluster_causal_variance = False self._support_decomposition = False diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index d6a68302c..f1a46dc12 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -302,6 +302,7 @@ def __init__( self._context = capture_context(context) self._support_crv3_inference = True + self._support_hac_inference = True if self._weights_name is not None: self._supports_wildboottest = False self._supports_wildboottest = True @@ -874,6 +875,11 @@ def _vcov_hac(self): _lag = self._lag _data = self._data + if not self._support_hac_inference: + raise NotImplementedError( + "HAC inference is not supported for this model type." + ) + _time_arr = _data[_time_id].to_numpy() _panel_arr = _data[_panel_id].to_numpy() if _panel_id is not None else None diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 5aebd155c..7228b1965 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -111,25 +111,18 @@ def _hac_meat_loop( The HAC meat matrix. """ meat = np.zeros((k, k)) - gamma_lag = np.zeros((k, k)) + gamma_buffer = np.zeros((k, k)) - # note: just the same as for time series HAC - # only difference is computation on time scores + # Vectorized computation for all lag values for lag_value in range(lag + 1): + gamma_buffer.fill(0.0) weight = weights[lag_value] - gamma_lag.fill(0.0) - for t in range(lag_value, time_periods): - scores_t = scores[t, :] - scores_t_lag = scores[t - lag_value, :] - for i in range(k): - scores_t_i = scores_t[i] - for j in range(k): - gamma_lag[i, j] += scores_t_i * scores_t_lag[j] + scores_current = scores[lag_value:time_periods] + scores_lagged = scores[:time_periods-lag_value] - for i in range(k): - for j in range(k): - meat[i, j] += weight * (gamma_lag[i, j] + gamma_lag[j, i]) + gamma_buffer[:, :] = scores_current.T @ scores_lagged + meat += weight * (gamma_buffer + gamma_buffer.T) return meat @@ -163,7 +156,7 @@ def _nw_meat_time(scores: np.ndarray, time_arr: np.ndarray, lag: int): def _get_panel_idx( - panel_arr: np.ndarray, time_arr: np.ndarray, duplicate_method: str = "none" + panel_arr: np.ndarray, time_arr: np.ndarray ) -> tuple[np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray, np.ndarray]: """ Get indices for each unit. I.e. the first value ("starts") and how many @@ -175,10 +168,6 @@ def _get_panel_idx( Panel ID variable. time_arr : ndarray, shape (N*T,) Time ID variable. - duplicate_method : str, optional - How to handle duplicate (panel, time) pairs. - - "none": raise error if duplicates exist (default) - - "first": keep only the first occurrence of each (panel, time) pair Returns ------- @@ -189,45 +178,20 @@ def _get_panel_idx( panel_arr_sorted : panel variable in sorted order time_arr_sorted : time variable in sorted order """ - if duplicate_method not in ("none", "first"): - raise ValueError( - f"duplicate_method must be 'none' or 'first', got '{duplicate_method}'" - ) - order = np.lexsort((time_arr, panel_arr)) # sort by panel, then time p_sorted = panel_arr[order] - t_sorted = time_arr[order] - - # Check for duplicates - duplicate_mask = (np.diff(p_sorted) == 0) & (np.diff(t_sorted) == 0) - - if np.any(duplicate_mask): - if duplicate_method == "none": - raise ValueError( - "There are duplicate time periods for the same panel id. This is not supported for HAC SEs. " - "You can use duplicate_method='first' in vcov_kwargs to keep only the first occurrence." - ) - elif duplicate_method == "first": - # Keep only first occurrence of each (panel, time) pair - # duplicate_mask is True where positions i and i+1 are duplicates - # Mark all positions that are duplicates (position i+1 in duplicate pairs) for removal - keep_mask = np.ones(len(order), dtype=bool) - dup_indices = np.where(duplicate_mask)[0] - # For each duplicate pair, mark the second occurrence (dup_indices[j] + 1) for removal - keep_mask[dup_indices + 1] = False - - # Filter to keep only first occurrences - order = order[keep_mask] - p_sorted = p_sorted[keep_mask] - t_sorted = t_sorted[keep_mask] - units, starts, counts = np.unique(p_sorted, return_index=True, return_counts=True) panel_arr_sorted = panel_arr[order] time_arr_sorted = time_arr[order] - + duplicate_mask = (np.diff(panel_arr_sorted) == 0) & (np.diff(time_arr_sorted) == 0) + if np.any(duplicate_mask): + raise ValueError( + "There are duplicate time periods for the same panel id. This is not supported for HAC SEs." + ) return order, units, starts, counts, panel_arr_sorted, time_arr_sorted + @nb.njit(parallel=False) def _nw_meat_panel( X: np.ndarray, diff --git a/tests/test_errors.py b/tests/test_errors.py index 85f1f6e09..110def5e4 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -1067,3 +1067,11 @@ def test_errors_hac(): vcov=vcov, vcov_kwargs={"time_id": "time3", "panel_id": "panel", "lag": 5}, ) + + +def test_errors_hac_inference(): + + data = pf.get_data() + data["Y"] = np.where(data["Y"] > 0, 1, 0) + with pytest.raises(NotImplementedError, match="HAC inference is not supported for this model type."): + pf.feglm("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lag": 5, "time_id": "X2"}, family = "logit") \ No newline at end of file diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 0d81429bf..8756fc0d2 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -29,7 +29,16 @@ ("Y~treat | unit"), ("Y~treat | unit + year"), ] - +poisson_fmls = [ + ("Y_count~treat"), + ("Y_count~treat + unit"), + ("Y_count~treat | unit"), + ("Y_count~treat | unit + year"), +] +glm_fmls = [ + ("Y_binary~treat"), + ("Y_binary~treat + unit"), +] @pytest.fixture(scope="module") def data_panel(N=1000, T=30, seed=421): @@ -45,6 +54,12 @@ def data_panel(N=1000, T=30, seed=421): gamma = np.random.normal(0, 0.5, T) epsilon = rng.normal(0, 5, N * T) Y = alpha[units] + gamma[time] + treat + epsilon + + # Add count variable for Poisson models + # Ensure it's positive by exponentiating a scaled version + Y_count = np.exp(0.5 + 0.1 * alpha[units] + 0.05 * gamma[time] + 0.1 * treat + rng.normal(0, 0.3, N * T)) + Y_count = np.maximum(Y_count, 0.1).astype(int) # Ensure positive integers + Y_binary = (Y_count > 0).astype(int) weights = rng.uniform(0, 1, N * T) return pd.DataFrame( { @@ -53,6 +68,8 @@ def data_panel(N=1000, T=30, seed=421): "treat": treat, "ever_treated": ever_treated, "Y": Y, + "Y_count": Y_count, + "Y_binary": Y_binary, "weights": weights, } ) @@ -71,9 +88,11 @@ def data_time(): } ) data["Y"] = data["unit"] - data["year"] + 0.5 * data["treat"] + rng.normal(0, 1, N) + # Add count variable for Poisson models + data["Y_count"] = np.maximum(np.exp(0.5 + 0.05 * data["unit"] - 0.01 * data["year"] + 0.1 * data["treat"] + rng.normal(0, 0.3, N)), 0.1).astype(int) + data["Y_binary"] = (data["Y_count"] > 0).astype(int) return data - def check_absolute_diff(x1, x2, tol, msg=None): "Check for absolute differences." if isinstance(x1, (int, float)): @@ -103,6 +122,77 @@ def check_relative_diff(x1, x2, tol, msg=None): assert np.all(np.abs(x1 - x2) / np.abs(x1) < tol), msg +def _prepare_balanced_data(data, panel_id, balanced): + """Prepare data by applying balancing/non-balancing modifications. + + Parameters + ---------- + data : pd.DataFrame + The input data frame. + panel_id : str or None + The panel ID column name, or None if no panel structure. + balanced : str + Type of balancing: "balanced-consecutive", "balanced-non-consecutive", + "non-balanced-consecutive", or "non-balanced-non-consecutive". + + Returns + ------- + pd.DataFrame + Modified data frame with appropriate rows dropped. + """ + if panel_id is None: + return data + + first_25 = np.unique(data["unit"])[:25] + cc = data.groupby("unit").cumcount() + + if balanced == "balanced-non-consecutive": + # drop an interior row (e.g., the 2nd observation, cc==1) for EVERY unit + # => all units lose exactly one row (balanced), and there is a gap (non-consecutive) + data = data[cc != 1].reset_index(drop=True) + elif balanced == "non-balanced-consecutive": + # drop the *first* row (cc==0) but only for the first 25 units + # => those units have T-1 rows (non-balanced), still consecutive (start at the 2nd period) + mask = ~(data["unit"].isin(first_25) & (cc == 0)) + data = data[mask].reset_index(drop=True) + elif balanced == "non-balanced-non-consecutive": + # drop an interior row (e.g., the 3rd observation, cc==2) but only for the first 25 units + # => those units have a gap (non-consecutive) and fewer rows (non-balanced) + mask = ~(data["unit"].isin(first_25) & (cc == 2)) + data = data[mask].reset_index(drop=True) + + return data + + +def _get_r_panel_kwargs(time_id, panel_id, lag, inference): + """Construct R panel kwargs for vcov_NW or vcov_DK. + + Parameters + ---------- + time_id : str or None + The time ID column name. + panel_id : str or None + The panel ID column name. + lag : int or None + The lag value for HAC. + inference : str + Type of inference: "NW" or "DK". + + Returns + ------- + dict + Dictionary with kwargs for R's vcov_NW or vcov_DK functions. + """ + r_panel_kwars = {} + if time_id is not None: + r_panel_kwars["time"] = time_id + if lag is not None: + r_panel_kwars["lag"] = lag + if inference == "NW" and panel_id is not None: + r_panel_kwars["unit"] = panel_id + return r_panel_kwars + + ALL_F3 = ["str", "object", "int", "categorical", "float"] SINGLE_F3 = ALL_F3[0] BACKEND_F3 = [ @@ -113,13 +203,7 @@ def check_relative_diff(x1, x2, tol, msg=None): @pytest.mark.against_r_core @pytest.mark.parametrize( - "dropna", - [ - False, - # True - ], -) -@pytest.mark.parametrize("inference", [ + "inference", [ "NW", "DK" ]) @@ -127,10 +211,10 @@ def check_relative_diff(x1, x2, tol, msg=None): "vcov_kwargs", [ {"lag": 2, "time_id": "year"}, - {"lag": 8, "time_id": "year"}, + {"lag": 4, "time_id": "year"}, # now add panel id {"lag": 2, "time_id": "year", "panel_id": "unit"}, - {"lag": 8, "time_id": "year", "panel_id": "unit"}, + {"lag": 4, "time_id": "year", "panel_id": "unit"}, # lag not required when panel_id is provided {"time_id": "year", "panel_id": "unit"}, ], @@ -139,23 +223,23 @@ def check_relative_diff(x1, x2, tol, msg=None): "balanced", [ "balanced-consecutive", - "balanced-non-consecutive", - "non-balanced-consecutive", - "non-balanced-non-consecutive", + #"balanced-non-consecutive", + #"non-balanced-consecutive", + # "non-balanced-non-consecutive", ], ) @pytest.mark.parametrize( "weights", [ None, - # "weights" + "weights" ], ) @pytest.mark.parametrize("fml", ols_fmls) + def test_single_fit_feols_hac_panel( data_panel, data_time, - dropna, inference, vcov_kwargs, weights, @@ -166,6 +250,167 @@ def test_single_fit_feols_hac_panel( G_adj = False ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) + lag = vcov_kwargs.get("lag", None) + time_id = vcov_kwargs.get("time_id", None) + panel_id = vcov_kwargs.get("panel_id", None) + data = data_panel if panel_id is not None else data_time + + if panel_id is None and balanced != "balanced-consecutive": + pytest.skip("Don't test for non-balancedness when no panel data.") + + if panel_id is None and inference == "DK": + pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + + data = _prepare_balanced_data(data, panel_id, balanced) + + if "|" in fml and panel_id is None: + pytest.skip("Don't run fixed effect test when data is not a panel.") + + r_panel_kwars = _get_r_panel_kwargs(time_id, panel_id, lag, inference) + + r_fixest = fixest.feols( + ro.Formula(fml), + vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), + data=data, + ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}) + + ) + + mod = pf.feols( + fml=fml, + data=data, + vcov=inference, + vcov_kwargs=vcov_kwargs, + weights=weights, + ssc=ssc_, + ) + + # r_fixest to global r env, needed for + # operations as in dof.K + ro.globalenv["r_fixest"] = r_fixest + + py_vcov = mod._vcov[0, 0] + r_vcov = stats.vcov(r_fixest)[0, 0] + + check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") + + +@pytest.mark.against_r_core +@pytest.mark.parametrize( + "inference", [ + "NW", + "DK" +]) +@pytest.mark.parametrize( + "vcov_kwargs", + [ + {"lag": 2, "time_id": "year"}, + {"lag": 4, "time_id": "year"}, + # now add panel id + {"lag": 2, "time_id": "year", "panel_id": "unit"}, + {"lag": 4, "time_id": "year", "panel_id": "unit"}, + # lag not required when panel_id is provided + {"time_id": "year", "panel_id": "unit"}, + ], +) +@pytest.mark.parametrize( + "balanced", + [ + "balanced-consecutive", + #"balanced-non-consecutive", + #"non-balanced-consecutive", + # "non-balanced-non-consecutive", + ], +) +@pytest.mark.parametrize("fml", poisson_fmls) +def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwargs, fml, balanced): + k_adj = False + G_adj = False + ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) + + lag = vcov_kwargs.get("lag", None) + time_id = vcov_kwargs.get("time_id", None) + panel_id = vcov_kwargs.get("panel_id", None) + data = data_panel if panel_id is not None else data_time + + if panel_id is None and balanced != "balanced-consecutive": + pytest.skip("Don't test for non-balancedness when no panel data.") + + if panel_id is None and inference == "DK": + pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + + data = _prepare_balanced_data(data, panel_id, balanced) + + if "|" in fml and panel_id is None: + pytest.skip("Don't run fixed effect test when data is not a panel.") + + r_panel_kwars = _get_r_panel_kwargs(time_id, panel_id, lag, inference) + + r_fixest = fixest.fepois( + ro.Formula(fml), + vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), + data=data, + ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), + + ) + + mod = pf.fepois( + fml=fml, + data=data, + vcov=inference, + vcov_kwargs=vcov_kwargs, + ssc=ssc_, + ) + + # r_fixest to global r env, needed for + # operations as in dof.K + ro.globalenv["r_fixest"] = r_fixest + + py_vcov = mod._vcov[0, 0] + r_vcov = stats.vcov(r_fixest)[0, 0] + + check_absolute_diff(py_vcov, r_vcov, 1e-04, "py_vcov != r_vcov") + + +@pytest.mark.against_r_core +@pytest.mark.parametrize( + "inference", [ + "NW", + "DK" +]) +@pytest.mark.parametrize( + "vcov_kwargs", + [ + {"lag": 2, "time_id": "year"}, + {"lag": 4, "time_id": "year"}, + # now add panel id + {"lag": 2, "time_id": "year", "panel_id": "unit"}, + {"lag": 4, "time_id": "year", "panel_id": "unit"}, + # lag not required when panel_id is provided + {"time_id": "year", "panel_id": "unit"}, + ], +) +@pytest.mark.parametrize( + "balanced", + [ + "balanced-consecutive", + #"balanced-non-consecutive", + #"non-balanced-consecutive", + # "non-balanced-non-consecutive", + ], +) + +@pytest.mark.parametrize("fml", glm_fmls) +def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwargs, fml, balanced): + pytest.skip("HAC standard errors for feglm models need further investigation. " + "GLM models may require special handling of working weights and link functions " + "in HAC variance calculations. Current implementation produces incorrect results.") + + k_adj = False + G_adj = False + ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) + lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) panel_id = vcov_kwargs.get("panel_id", None) @@ -213,32 +458,35 @@ def test_single_fit_feols_hac_panel( if inference == "NW": r_panel_kwars |= ({"unit": panel_id} if panel_id is not None else {}) - r_fixest = fixest.feols( + r_fixest = fixest.feglm( ro.Formula(fml), vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}) + family=stats.binomial(link = "logit") ) - mod = pf.feols( + mod = pf.feglm( fml=fml, data=data, vcov=inference, vcov_kwargs=vcov_kwargs, - weights=weights, ssc=ssc_, + family="logit" ) - # r_fixest to global r env, needed for # operations as in dof.K ro.globalenv["r_fixest"] = r_fixest - py_vcov = mod._vcov[0, 0] - r_vcov = stats.vcov(r_fixest)[0, 0] + py_coef = mod.coef().xs("treat") + r_coef = stats.coef(r_fixest)[1] + check_absolute_diff(py_coef, r_coef, 1e-06, "py_coef != r_coef") - check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") + py_vcov = mod._vcov[1, 1] + r_vcov = stats.vcov(r_fixest)[1, 1] + + check_absolute_diff(py_vcov, r_vcov, 1e-06, "py_vcov != r_vcov") @pytest.mark.against_r_core @@ -248,10 +496,10 @@ def test_vcov_updating(data_panel): "Y ~ treat", data=data_panel, vcov="NW", - vcov_kwargs={"time_id": "year", "lag": 7}, + vcov_kwargs={"time_id": "year", "panel_id": "unit", "lag": 7}, ) - fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year"}) + fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year", "panel_id": "unit"}) assert fit_hetero._vcov_type == "HAC" assert fit_hetero._vcov_type_detail == "NW" From f2cef1be4f084ea37a9adcf33807be1fb52d6adc Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 13:13:21 +0200 Subject: [PATCH 32/43] ar 1 errors --- tests/test_hac_vs_fixest.py | 46 +++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 10 deletions(-) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 8756fc0d2..76524d4e7 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -52,7 +52,23 @@ def data_panel(N=1000, T=30, seed=421): ever_treated = np.isin(units, treated_units).astype(int) alpha = rng.normal(0, 1, N) gamma = np.random.normal(0, 0.5, T) - epsilon = rng.normal(0, 5, N * T) + + # Generate AR(1) errors within each unit (rho=0.8 for strong autocorrelation) + epsilon = np.empty(N * T) + rho = 0.5 + for i in range(N): + # Get indices for this unit + start_idx = i * T + end_idx = (i + 1) * T + # Generate innovations + innovations = rng.normal(0, 5, T) + # Build AR(1) process within unit + errors = np.empty(T) + errors[0] = innovations[0] + for t in range(1, T): + errors[t] = rho * errors[t - 1] + innovations[t] + epsilon[start_idx:end_idx] = errors + Y = alpha[units] + gamma[time] + treat + epsilon # Add count variable for Poisson models @@ -87,7 +103,16 @@ def data_time(): "weights": rng.uniform(0, 1, N), } ) - data["Y"] = data["unit"] - data["year"] + 0.5 * data["treat"] + rng.normal(0, 1, N) + + # Generate AR(1) errors with rho=0.8 for strong autocorrelation + rho = 0.8 + innovations = rng.normal(0, 1, N) + epsilon = np.empty(N) + epsilon[0] = innovations[0] + for t in range(1, N): + epsilon[t] = rho * epsilon[t - 1] + innovations[t] + + data["Y"] = data["unit"] - data["year"] + 0.5 * data["treat"] + epsilon # Add count variable for Poisson models data["Y_count"] = np.maximum(np.exp(0.5 + 0.05 * data["unit"] - 0.01 * data["year"] + 0.1 * data["treat"] + rng.normal(0, 0.3, N)), 0.1).astype(int) data["Y_binary"] = (data["Y_count"] > 0).astype(int) @@ -223,9 +248,9 @@ def _get_r_panel_kwargs(time_id, panel_id, lag, inference): "balanced", [ "balanced-consecutive", - #"balanced-non-consecutive", - #"non-balanced-consecutive", - # "non-balanced-non-consecutive", + "balanced-non-consecutive", + "non-balanced-consecutive", + "non-balanced-non-consecutive", ], ) @pytest.mark.parametrize( @@ -273,7 +298,8 @@ def test_single_fit_feols_hac_panel( vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}) + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), + panel_time_step = 1 ) @@ -293,7 +319,7 @@ def test_single_fit_feols_hac_panel( py_vcov = mod._vcov[0, 0] r_vcov = stats.vcov(r_fixest)[0, 0] - check_absolute_diff(py_vcov, r_vcov, 1e-08, "py_vcov != r_vcov") + check_absolute_diff(py_vcov, r_vcov, 1e-05, "py_vcov != r_vcov") @pytest.mark.against_r_core @@ -352,7 +378,7 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - + panel_time_step = 1 ) mod = pf.fepois( @@ -463,8 +489,8 @@ def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwarg vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - family=stats.binomial(link = "logit") - + family=stats.binomial(link = "logit"), + panel_time_step = 1 ) mod = pf.feglm( From 44e7698db06ae5fc8078261a558c757b2b0adad5 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 13:33:58 +0200 Subject: [PATCH 33/43] add unrelated test error --- tests/test_errors.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/test_errors.py b/tests/test_errors.py index 110def5e4..e64ebc739 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -883,6 +883,8 @@ def test_invalid_tolerance(tol): def test_errors_vcov_kwargs(): """Test all error conditions for vcov_kwargs in _estimation_input_checks.""" data = pf.get_data() + data["time_id"] = data["X2"] + data["panel_id"] = data["f1"] # Error 1: Invalid keys in vcov_kwargs with pytest.raises( From bbadff3af08ecf6d0ef87353c18503e1559ee7ac Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 17:49:11 +0200 Subject: [PATCH 34/43] fix test bugs --- tests/test_errors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_errors.py b/tests/test_errors.py index e64ebc739..8fbfadb08 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -944,7 +944,7 @@ def test_errors_vcov_kwargs(): # Error 9: time_id column does not exist in data with pytest.raises( - ValueError, match="must be a dictionary with string values for 'time_id'" + ValueError, match="The variable 'nonexistent_column' is not in the data." ): pf.feols( "Y ~ X1", @@ -969,7 +969,7 @@ def test_errors_vcov_kwargs(): # Error 12: panel_id column does not exist in data with pytest.raises( - ValueError, match="must be a dictionary with string values for 'panel_id'" + ValueError, match="The variable 'missing_panel_column' is not in the data." ): pf.feols( "Y ~ X1", From 69e07d781d692f21c9cbde87a69e09410b108eca Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 18:00:04 +0200 Subject: [PATCH 35/43] compure panel hac on scores, fix bugs for glms, support glms --- pyfixest/estimation/feglm_.py | 2 +- pyfixest/estimation/feols_.py | 3 +-- pyfixest/estimation/feols_compressed_.py | 1 + pyfixest/estimation/quantreg/quantreg_.py | 1 + pyfixest/estimation/vcov_utils.py | 21 +++++++++------------ tests/test_hac_vs_fixest.py | 5 +---- 6 files changed, 14 insertions(+), 19 deletions(-) diff --git a/pyfixest/estimation/feglm_.py b/pyfixest/estimation/feglm_.py index b9a56e856..0f42ef79f 100644 --- a/pyfixest/estimation/feglm_.py +++ b/pyfixest/estimation/feglm_.py @@ -82,7 +82,7 @@ def __init__( self._support_crv3_inference = True self._support_iid_inference = True - self._support_hac_inference = False + self._support_hac_inference = True self._supports_cluster_causal_variance = False self._support_decomposition = False diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index f1a46dc12..f059285fa 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -902,8 +902,7 @@ def _vcov_hac(self): ) hac_meat = _nw_meat_panel( - X=self._X[order], - u_hat=self._u_hat[order], + scores=_scores[order], time_arr=time_arr_sorted, panel_arr=panel_arr_sorted, starts=starts, diff --git a/pyfixest/estimation/feols_compressed_.py b/pyfixest/estimation/feols_compressed_.py index ed476fcff..aa964df1c 100644 --- a/pyfixest/estimation/feols_compressed_.py +++ b/pyfixest/estimation/feols_compressed_.py @@ -135,6 +135,7 @@ def __init__( self._support_iid_inference = True self._supports_cluster_causal_variance = False self._support_decomposition = False + self._support_hac_inference = False if weights is not None: raise ValueError( diff --git a/pyfixest/estimation/quantreg/quantreg_.py b/pyfixest/estimation/quantreg/quantreg_.py index 079113d38..e2f321992 100644 --- a/pyfixest/estimation/quantreg/quantreg_.py +++ b/pyfixest/estimation/quantreg/quantreg_.py @@ -85,6 +85,7 @@ def __init__( self._supports_wildboottest = False self._support_crv3_inference = False self._supports_cluster_causal_variance = False + self._support_hac_inference = False self._quantile = quantile self._method = f"quantreg_{method}" diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index 7228b1965..bd203bc6c 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -194,8 +194,7 @@ def _get_panel_idx( @nb.njit(parallel=False) def _nw_meat_panel( - X: np.ndarray, - u_hat: np.ndarray, + scores: np.ndarray, time_arr: np.ndarray, panel_arr: np.ndarray, starts: np.ndarray, @@ -207,10 +206,8 @@ def _nw_meat_panel( Parameters ---------- - X : ndarray, shape (N*T, k) - Stacked regressor matrix, where each block of T rows corresponds to one panel unit. - u_hat : ndarray, shape (N*T,) - Residuals from the panel regression. + scores: np.ndarray + The scores matrix. time_arr : ndarray, shape (N*T,) The time variable for clustering. panel_arr : ndarray, shape (N*T,) @@ -233,7 +230,7 @@ def _nw_meat_panel( weights = _get_bartlett_weights(lag=lag) - k = X.shape[1] + k = scores.shape[1] meat_nw_panel = np.zeros((k, k)) gamma_l = np.zeros((k, k)) @@ -243,8 +240,8 @@ def _nw_meat_panel( end = start + count gamma0 = np.zeros((k, k)) for t in range(start, end): - xi = X[t, :] - gamma0 += np.outer(xi, xi) * u_hat[t] ** 2 + score_t = scores[t, :] + gamma0 += np.outer(score_t, score_t) gamma_l_sum.fill(0.0) Lmax = min(lag, count - 1) @@ -253,9 +250,9 @@ def _nw_meat_panel( for t in range(lag_value, count): curr_t = start + t prev_t = start + t - lag_value - xi1 = X[curr_t, :] * u_hat[curr_t] - xi2 = X[prev_t, :] * u_hat[prev_t] - gamma_l += np.outer(xi1, xi2) + score_curr = scores[curr_t, :] + score_prev = scores[prev_t, :] + gamma_l += np.outer(score_curr, score_prev) gamma_l_sum += weights[lag_value] * (gamma_l + gamma_l.T) meat_nw_panel += gamma0 + gamma_l_sum diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 76524d4e7..039636cf6 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -429,9 +429,6 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar @pytest.mark.parametrize("fml", glm_fmls) def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwargs, fml, balanced): - pytest.skip("HAC standard errors for feglm models need further investigation. " - "GLM models may require special handling of working weights and link functions " - "in HAC variance calculations. Current implementation produces incorrect results.") k_adj = False G_adj = False @@ -512,7 +509,7 @@ def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwarg py_vcov = mod._vcov[1, 1] r_vcov = stats.vcov(r_fixest)[1, 1] - check_absolute_diff(py_vcov, r_vcov, 1e-06, "py_vcov != r_vcov") + check_absolute_diff(py_vcov, r_vcov, 1e-04, "py_vcov != r_vcov") @pytest.mark.against_r_core From 8093a8ffab35b338bb34e185a5f6d206e0b5d573 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 18:01:49 +0200 Subject: [PATCH 36/43] update readme --- README.md | 2 +- docs/pyfixest.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9b29eae55..12a874179 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ You can also leave a message through the donation form - your support and encour - Probit, Logit and Gaussian Family **GLMs** (currently without fixed effects demeaning, this is WIP) - **Quantile Regression** using an Interior Point Solver - Multiple Estimation Syntax -- Several **Robust** and **Cluster Robust Variance-Covariance** Estimators +- Several **Robust**, **Cluster Robust** and **HAC Variance-Covariance** Estimators - **Wild Cluster Bootstrap** Inference (via [wildboottest](https://github.com/py-econometrics/wildboottest)) - **Difference-in-Differences** Estimators: diff --git a/docs/pyfixest.md b/docs/pyfixest.md index 7f38075ff..e5662cab9 100644 --- a/docs/pyfixest.md +++ b/docs/pyfixest.md @@ -44,8 +44,7 @@ You can also leave a message through the donation form - your support and encour - Probit, Logit and Gaussian Family **GLMs** (currently without fixed effects demeaning, this is WIP) - **Quantile Regression** using an Interior Point Solver - Multiple Estimation Syntax -- Several **Robust** and **Cluster Robust Variance-Covariance** Estimators - +- Several **Robust**, **Cluster Robust** and **HAC Variance-Covariance** Estimators - **Wild Cluster Bootstrap** Inference (via [wildboottest](https://github.com/py-econometrics/wildboottest)) - **Difference-in-Differences** Estimators: From defb29c53e708bec5b76110fa6ed9f855d5a56cd Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 18:32:58 +0200 Subject: [PATCH 37/43] update tests --- pyfixest/estimation/feols_.py | 9 +++++++++ tests/test_errors.py | 3 +-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index f059285fa..dafd9ac46 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -880,9 +880,18 @@ def _vcov_hac(self): "HAC inference is not supported for this model type." ) + # some data checks on input pandas df + # time needs to be numeric or date else we cannot sort by time + if not np.issubdtype(_data[_time_id], np.number) and not np.issubdtype(_data[_time_id], np.datetime64): + raise ValueError( + "The time variable must be numeric or date, else we cannot sort by time." + ) + _time_arr = _data[_time_id].to_numpy() _panel_arr = _data[_panel_id].to_numpy() if _panel_id is not None else None + + if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: diff --git a/tests/test_errors.py b/tests/test_errors.py index 8fbfadb08..3eb4df1e7 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -1070,10 +1070,9 @@ def test_errors_hac(): vcov_kwargs={"time_id": "time3", "panel_id": "panel", "lag": 5}, ) - def test_errors_hac_inference(): data = pf.get_data() data["Y"] = np.where(data["Y"] > 0, 1, 0) with pytest.raises(NotImplementedError, match="HAC inference is not supported for this model type."): - pf.feglm("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"lag": 5, "time_id": "X2"}, family = "logit") \ No newline at end of file + pf.quantreg("Y ~ X1", data=data, vcov="NW") \ No newline at end of file From fa4c167c3ee7e2d83b071fd681f388ba1728435d Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sat, 18 Oct 2025 19:10:35 +0200 Subject: [PATCH 38/43] fix linter --- tests/test_errors.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/tests/test_errors.py b/tests/test_errors.py index 3eb4df1e7..497b1fc31 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -889,7 +889,7 @@ def test_errors_vcov_kwargs(): # Error 1: Invalid keys in vcov_kwargs with pytest.raises( ValueError, - match="must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", + match=r"must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", ): pf.feols("Y ~ X1", data=data, vcov="NW", vcov_kwargs={"invalid_key": 5}) @@ -903,7 +903,7 @@ def test_errors_vcov_kwargs(): # Error 3: Mix of valid and invalid keys with pytest.raises( ValueError, - match="must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", + match=r"must be a dictionary with keys 'lag', 'time_id', or 'panel_id'", ): pf.feols( "Y ~ X1", @@ -944,7 +944,7 @@ def test_errors_vcov_kwargs(): # Error 9: time_id column does not exist in data with pytest.raises( - ValueError, match="The variable 'nonexistent_column' is not in the data." + ValueError, match=r"The variable 'nonexistent_column' is not in the data\." ): pf.feols( "Y ~ X1", @@ -961,7 +961,7 @@ def test_errors_vcov_kwargs(): # Error 11: panel_id value is not a string (list) with pytest.raises( - ValueError, match="must be a dictionary with string values for 'panel_id'" + ValueError, match=r'must be a dictionary with string values for "panel_id".' ): pf.feols( "Y ~ X1", data=data, vcov="NW", vcov_kwargs={"panel_id": ["col1", "col2"]} @@ -969,7 +969,7 @@ def test_errors_vcov_kwargs(): # Error 12: panel_id column does not exist in data with pytest.raises( - ValueError, match="The variable 'missing_panel_column' is not in the data." + ValueError, match=r"The variable 'missing_panel_column' is not in the data\." ): pf.feols( "Y ~ X1", @@ -995,7 +995,9 @@ def test_errors_hac(): ) # Error 3: time_id is not provided if vcov is NW or DK - with pytest.raises(ValueError, match="Missing required 'time_id' for NW/DK vcov"): + with pytest.raises( + ValueError, match=r"Missing required 'time_id' for NW/DK vcov\." + ): pf.feols( "Y ~ X1", data=data, @@ -1006,7 +1008,7 @@ def test_errors_hac(): # Error 4: lag is not provided if vcov is NW or DK with pytest.raises( ValueError, - match="We have not yet implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`.", + match=r"We have not yet implemented the default Newey-West HAC lag. Please provide a lag value via the `vcov_kwargs`\.", ): pf.feols( "Y ~ X1", @@ -1017,7 +1019,7 @@ def test_errors_hac(): # Error 5: time_id column does not exist in data with pytest.raises( - ValueError, match="The variable 'nonexistent_column' is not in the data." + ValueError, match=r"The variable 'nonexistent_column' is not in the data\." ): pf.feols( "Y ~ X1", @@ -1032,7 +1034,7 @@ def test_errors_hac(): # Error 6: panel_id column does not exist in data with pytest.raises( - ValueError, match="The variable 'nonexistent_column' is not in the data." + ValueError, match=r"The variable 'nonexistent_column' is not in the data\." ): pf.feols( "Y ~ X1", @@ -1046,7 +1048,7 @@ def test_errors_hac(): data["time2"][0] = data["time2"][1] with pytest.raises( ValueError, - match="There are duplicate time periods in the data. This is not supported for HAC SEs.", + match=r"There are duplicate time periods in the data. This is not supported for HAC SEs\.", ): pf.feols( "Y ~ X1", @@ -1061,7 +1063,7 @@ def test_errors_hac(): for vcov in ["NW", "DK"]: with pytest.raises( ValueError, - match="There are duplicate time periods for the same panel id. This is not supported for HAC SEs.", + match=r"There are duplicate time periods for the same panel id. This is not supported for HAC SEs\.", ): pf.feols( "Y ~ X1", @@ -1070,9 +1072,12 @@ def test_errors_hac(): vcov_kwargs={"time_id": "time3", "panel_id": "panel", "lag": 5}, ) -def test_errors_hac_inference(): +def test_errors_hac_inference(): data = pf.get_data() data["Y"] = np.where(data["Y"] > 0, 1, 0) - with pytest.raises(NotImplementedError, match="HAC inference is not supported for this model type."): - pf.quantreg("Y ~ X1", data=data, vcov="NW") \ No newline at end of file + with pytest.raises( + NotImplementedError, + match=r"HAC inference is not supported for this model type\.", + ): + pf.quantreg("Y ~ X1", data=data, vcov="NW") From 4ade3f1a092a48b32a5436e715726e1df2522144 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 19 Oct 2025 00:00:01 +0200 Subject: [PATCH 39/43] some progress ssc --- pyfixest/estimation/feols_.py | 43 +++++++++++++++++++++++++++++------ pyfixest/utils/utils.py | 5 ++-- tests/test_hac_vs_fixest.py | 34 ++++++++++++++++++++------- 3 files changed, 64 insertions(+), 18 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index dafd9ac46..f66b382b6 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -327,7 +327,7 @@ def __init__( self._demean_func = impl["demean"] self._find_collinear_variables_func = impl["collinear"] self._crv1_meat_func = impl["crv1_meat"] - self._cound_nested_fixef_func = impl["nonnested"] + self._count_nested_fixef_func = impl["nonnested"] # set in get_fit() self._tZX = np.array([]) @@ -690,16 +690,45 @@ def vcov( self._vcov = self._ssc * self._vcov_hetero() elif self._vcov_type == "HAC": + + k_fe_nested = 0 + n_fe_fully_nested = 0 + vcov_type_for_ssc = "HAC-TS" + G_for_ssc = self._N + + if self._panel_id is not None: + + vcov_type_for_ssc = "HAC-P" + G_for_ssc = np.unique(self._data[self._time_id]).shape[0] + k_fe_nested = 0 + n_fe_fully_nested = 0 + if self._has_fixef and self._ssc_dict["k_fixef"] == "nonnested": + k_fe_nested_flag, n_fe_fully_nested = self._count_nested_fixef_func( + all_fixef_array=np.array( + self._fixef.replace("^", "_").split("+"), dtype=str + ), + cluster_colnames=np.array(self._time_id, dtype=str), + cluster_data=self._data[self._time_id].to_numpy().astype(np.uintp), + fe_data=self._fe.to_numpy().astype(np.uintp) + if isinstance(self._fe, pd.DataFrame) + else self._fe.astype(np.uintp), + ) + + k_fe_nested = ( + np.sum(self._k_fe[k_fe_nested_flag]) if n_fe_fully_nested > 0 else 0 + ) + + ssc_kwargs_hac = { - "k_fe_nested": 0, - "n_fe_fully_nested": 0, + "k_fe_nested": k_fe_nested, + "n_fe_fully_nested": n_fe_fully_nested, "vcov_sign": 1, - "vcov_type": "HAC", - "G": self._N, + "vcov_type": vcov_type_for_ssc, + "G": G_for_ssc , } all_kwargs = {**ssc_kwargs, **ssc_kwargs_hac} - self._ssc, self._dof_k, self._df_t = get_ssc(**all_kwargs) + self._ssc, self._df_k, self._df_t = get_ssc(**all_kwargs) self._vcov = self._ssc * self._vcov_hac() @@ -754,7 +783,7 @@ def vcov( k_fe_nested = 0 n_fe_fully_nested = 0 if self._has_fixef and self._ssc_dict["k_fixef"] == "nonnested": - k_fe_nested_flag, n_fe_fully_nested = self._cound_nested_fixef_func( + k_fe_nested_flag, n_fe_fully_nested = self._count_nested_fixef_func( all_fixef_array=np.array( self._fixef.replace("^", "_").split("+"), dtype=str ), diff --git a/pyfixest/utils/utils.py b/pyfixest/utils/utils.py index 578431724..208e445d6 100644 --- a/pyfixest/utils/utils.py +++ b/pyfixest/utils/utils.py @@ -218,7 +218,7 @@ def get_ssc( adj_value = (N - 1) / (N - df_k) if vcov_type != "hetero" else N / (N - df_k) # G_adj applied with G = N for hetero but not for iid - if vcov_type in ["CRV"] and G_adj: + if vcov_type in ["CRV", "HAC-TS", "HAC-P"] and G_adj: if G_df == "conventional": G_adj_value = G / (G - 1) elif G_df == "min": @@ -227,8 +227,7 @@ def get_ssc( else: raise ValueError("G_df is neither conventional nor min.") - df_t = N - df_k if vcov_type in ["iid", "hetero"] else G - 1 - + df_t = N - df_k if vcov_type in ["iid", "hetero", "HAC-TS"] else G - 1 return np.array([adj_value * G_adj_value * vcov_sign]), df_k, df_t diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 039636cf6..4a67ae4fc 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -261,7 +261,19 @@ def _get_r_panel_kwargs(time_id, panel_id, lag, inference): ], ) @pytest.mark.parametrize("fml", ols_fmls) - +@pytest.mark.parametrize("k_adj", [ + True, + False +]) +@pytest.mark.parametrize("G_adj", [ + True, + False +]) +@pytest.mark.parametrize("k_fixef", [ + "none", + "nonnested", + "full" +]) def test_single_fit_feols_hac_panel( data_panel, data_time, @@ -270,10 +282,10 @@ def test_single_fit_feols_hac_panel( weights, fml, balanced, + k_adj, + G_adj, + k_fixef, ): - k_adj = False - G_adj = False - ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) @@ -297,9 +309,9 @@ def test_single_fit_feols_hac_panel( ro.Formula(fml), vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), data=data, - ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), - panel_time_step = 1 + panel_time_step = 1, + ssc = fixest.ssc(k_adj, k_fixef, False, G_adj, "min" , "min"), ) @@ -309,7 +321,7 @@ def test_single_fit_feols_hac_panel( vcov=inference, vcov_kwargs=vcov_kwargs, weights=weights, - ssc=ssc_, + ssc=pf.ssc(k_adj =k_adj, k_fixef=k_fixef, G_adj=G_adj), ) # r_fixest to global r env, needed for @@ -319,6 +331,12 @@ def test_single_fit_feols_hac_panel( py_vcov = mod._vcov[0, 0] r_vcov = stats.vcov(r_fixest)[0, 0] + if np.abs(py_vcov - r_vcov) > 1e-05: + print("G adj time:", 1 / (len(np.unique(mod._data[mod._time_id])) / (len(np.unique(mod._data[mod._time_id])) - 1))) + print("G adj panel:", 1 / (len(np.unique(mod._data[mod._panel_id])) / (len(np.unique(mod._data[mod._panel_id])) - 1))) + + print("vcov_ratio:", py_vcov / r_vcov) + check_absolute_diff(py_vcov, r_vcov, 1e-05, "py_vcov != r_vcov") @@ -346,7 +364,7 @@ def test_single_fit_feols_hac_panel( "balanced-consecutive", #"balanced-non-consecutive", #"non-balanced-consecutive", - # "non-balanced-non-consecutive", + #"non-balanced-non-consecutive", ], ) @pytest.mark.parametrize("fml", poisson_fmls) From aa9f3ed08d2c0f5d801a1ba5f64639fd3057d777 Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 19 Oct 2025 00:00:35 +0200 Subject: [PATCH 40/43] pre commit --- docs/changelog.qmd | 10 +- docs/contributing.qmd | 12 +- pyfixest/estimation/feols_.py | 21 +-- pyfixest/estimation/feols_compressed_.py | 7 +- pyfixest/estimation/vcov_utils.py | 7 +- pyfixest/utils/utils.py | 7 +- tests/test_hac_vs_fixest.py | 185 +++++++++++++---------- tests/test_vs_fixest.py | 6 +- 8 files changed, 137 insertions(+), 118 deletions(-) diff --git a/docs/changelog.qmd b/docs/changelog.qmd index 7c5a52191..a80cd3b2f 100644 --- a/docs/changelog.qmd +++ b/docs/changelog.qmd @@ -22,7 +22,7 @@ fit3 = pf.feols("Y ~ X1 + X2 | f1", data = df) - The arguments of the `pf.ssc()` functions have been renamed: `adj` becomes `k_adj`, `fixef_k` becomes `k_fixef`, `cluster_df` becomes `G_df`, and `cluster_adj` becomes `G_adj`. Backwards compatibility is ensured. - `fixest` no longer applies the `G/(G-1)` small sample correction for heteroskedastic errors. The argument is now only relevant for cluster robust errors. -- If the `k_adj` arg is set to `True` with heteroskedastic errors, the applied small sample correction now is `N / (N-k)` and no longer `(N-1) / (N-df_k)`, +- If the `k_adj` arg is set to `True` with heteroskedastic errors, the applied small sample correction now is `N / (N-k)` and no longer `(N-1) / (N-df_k)`, as was previously the case and is still the case for iid and cluster robust errors. - The `k_fixef` option `"nested"` has been renamed to `"nonnested"`. - The `fixef_rm` argument is changed from default `"none"` to `"singleton"` for all estimation functions. This has no impact on point estimates, but might change inference due to a smaller number of @@ -40,18 +40,18 @@ We also install all package by default from the free and open source conda-forge `rpy2`that we need for testing `pyfixest` against `fixest`, we temporarily have dropped support for the dev and docs environments for windows. A fix is work in progress. -## New Features +## New Features -### HAC Standard Errors +### HAC Standard Errors We now support HAC standard errors! Thanks for Daman (https://github.com/damandhaliwal) for all his work (and coping with me with the PR, which took forever to get through). We now support: - time series HAC - panel HAC -- panel DK +- panel DK -variance-covariance matrices. +variance-covariance matrices. For now, we assume that the time series column is consecutive and each entry has "time delta 1". Relaxation of this requirement are work in progress. diff --git a/docs/contributing.qmd b/docs/contributing.qmd index 90deebbde..f3e6d1e77 100644 --- a/docs/contributing.qmd +++ b/docs/contributing.qmd @@ -85,13 +85,13 @@ For example, we use `ruff` and `pre-commit` to ensure code consistency across th To run (and install) all pre-commit hooks, you can run ```{.bash .code-copy} -pixi run -e lint pre-commit +pixi run -e lint pre-commit ``` We’ve included other tasks to help with testing. Almost all the necessary dependencies to run tests are included in the dev environment, except for R packages unavailable through conda-forge. -In a first step, we need to compile the provided Rust code, which we can do by running +In a first step, we need to compile the provided Rust code, which we can do by running ```{.bash .code-copy} pixi run -e dev maturin-develop @@ -99,7 +99,7 @@ pixi run -e dev maturin-develop Note that you do not require a global Rust installation - we install Rust via conda! -We can then run all dev tasks: +We can then run all dev tasks: ```{.bash .code-copy} # attempt to install non-conda R dependencies @@ -114,14 +114,14 @@ pixi run -e dev tests-against-r-extended pixi run -e dev tests-rerun ``` -Building the documentation is also straightforward. We’ve got tasks to build, render, and preview the docs. As before, -we first need to compile the Rust extensions, this time in the docs env, by running +Building the documentation is also straightforward. We’ve got tasks to build, render, and preview the docs. As before, +we first need to compile the Rust extensions, this time in the docs env, by running ```{.bash .code-copy} pixi run -e docs maturin-develop ``` -Then we can build the documentation with quartodoc. +Then we can build the documentation with quartodoc. ```{.bash .code-copy} # Build documentation and website diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index f66b382b6..3bf125e54 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -690,14 +690,12 @@ def vcov( self._vcov = self._ssc * self._vcov_hetero() elif self._vcov_type == "HAC": - k_fe_nested = 0 n_fe_fully_nested = 0 vcov_type_for_ssc = "HAC-TS" G_for_ssc = self._N if self._panel_id is not None: - vcov_type_for_ssc = "HAC-P" G_for_ssc = np.unique(self._data[self._time_id]).shape[0] k_fe_nested = 0 @@ -708,23 +706,26 @@ def vcov( self._fixef.replace("^", "_").split("+"), dtype=str ), cluster_colnames=np.array(self._time_id, dtype=str), - cluster_data=self._data[self._time_id].to_numpy().astype(np.uintp), + cluster_data=self._data[self._time_id] + .to_numpy() + .astype(np.uintp), fe_data=self._fe.to_numpy().astype(np.uintp) if isinstance(self._fe, pd.DataFrame) else self._fe.astype(np.uintp), ) k_fe_nested = ( - np.sum(self._k_fe[k_fe_nested_flag]) if n_fe_fully_nested > 0 else 0 + np.sum(self._k_fe[k_fe_nested_flag]) + if n_fe_fully_nested > 0 + else 0 ) - ssc_kwargs_hac = { "k_fe_nested": k_fe_nested, "n_fe_fully_nested": n_fe_fully_nested, "vcov_sign": 1, "vcov_type": vcov_type_for_ssc, - "G": G_for_ssc , + "G": G_for_ssc, } all_kwargs = {**ssc_kwargs, **ssc_kwargs_hac} @@ -911,16 +912,16 @@ def _vcov_hac(self): # some data checks on input pandas df # time needs to be numeric or date else we cannot sort by time - if not np.issubdtype(_data[_time_id], np.number) and not np.issubdtype(_data[_time_id], np.datetime64): + if not np.issubdtype(_data[_time_id], np.number) and not np.issubdtype( + _data[_time_id], np.datetime64 + ): raise ValueError( "The time variable must be numeric or date, else we cannot sort by time." ) - + _time_arr = _data[_time_id].to_numpy() _panel_arr = _data[_panel_id].to_numpy() if _panel_id is not None else None - - if _vcov_type_detail == "NW": # Newey-West if _panel_id is None: diff --git a/pyfixest/estimation/feols_compressed_.py b/pyfixest/estimation/feols_compressed_.py index aa964df1c..7ada71024 100644 --- a/pyfixest/estimation/feols_compressed_.py +++ b/pyfixest/estimation/feols_compressed_.py @@ -236,7 +236,10 @@ def prepare_model_matrix(self): self._data = compressed_dict.df_compressed.to_pandas() def vcov( - self, vcov: Union[str, dict[str, str]], vcov_kwargs: Optional[dict[str, Any]] = None, data: Optional[DataFrameType] = None + self, + vcov: Union[str, dict[str, str]], + vcov_kwargs: Optional[dict[str, Any]] = None, + data: Optional[DataFrameType] = None, ): "Compute the variance-covariance matrix for the compressed regression." if self._use_mundlak and vcov in ["iid", "hetero", "HC1", "HC2", "HC3"]: @@ -256,7 +259,7 @@ def vcov( f"The only supported clustered vcov type for compressed regression is CRV1, but {vcov} was specified." ) - super().vcov(vcov = vcov, vcov_kwargs = vcov_kwargs, data = data) + super().vcov(vcov=vcov, vcov_kwargs=vcov_kwargs, data=data) def _vcov_iid(self): _N = self._N diff --git a/pyfixest/estimation/vcov_utils.py b/pyfixest/estimation/vcov_utils.py index bd203bc6c..11525a413 100644 --- a/pyfixest/estimation/vcov_utils.py +++ b/pyfixest/estimation/vcov_utils.py @@ -118,8 +118,8 @@ def _hac_meat_loop( gamma_buffer.fill(0.0) weight = weights[lag_value] - scores_current = scores[lag_value:time_periods] - scores_lagged = scores[:time_periods-lag_value] + scores_current = scores[lag_value:time_periods] + scores_lagged = scores[: time_periods - lag_value] gamma_buffer[:, :] = scores_current.T @ scores_lagged meat += weight * (gamma_buffer + gamma_buffer.T) @@ -191,7 +191,6 @@ def _get_panel_idx( return order, units, starts, counts, panel_arr_sorted, time_arr_sorted - @nb.njit(parallel=False) def _nw_meat_panel( scores: np.ndarray, @@ -241,7 +240,7 @@ def _nw_meat_panel( gamma0 = np.zeros((k, k)) for t in range(start, end): score_t = scores[t, :] - gamma0 += np.outer(score_t, score_t) + gamma0 += np.outer(score_t, score_t) gamma_l_sum.fill(0.0) Lmax = min(lag, count - 1) diff --git a/pyfixest/utils/utils.py b/pyfixest/utils/utils.py index 208e445d6..0072c7aa5 100644 --- a/pyfixest/utils/utils.py +++ b/pyfixest/utils/utils.py @@ -39,7 +39,7 @@ def ssc( Note that the covariance matrix in the multiway clustering case is of the form V = V_1 + V_2 - V_12. If "conventional", then each summand G_i is multiplied with a small sample adjustment G_i / (G_i - 1). If "min", - all summands are multiplied with the same value, min(G) / (min(G) - 1). + all summands are multiplied with the same value, min(G) / (min(G) - 1). This argument is only relevant for clustered errors. Details @@ -421,6 +421,7 @@ def capture_context(context: Union[int, Mapping[str, Any]]) -> Mapping[str, Any] """ return _capture_context(context + 2) if isinstance(context, int) else context + def _check_balanced(panel_arr: np.ndarray, time_arr: np.ndarray) -> bool: """ Check if the panel data is balanced. @@ -447,5 +448,5 @@ def _check_balanced(panel_arr: np.ndarray, time_arr: np.ndarray) -> bool: if len(panel_times) != expected_time_count: return False - - return True \ No newline at end of file + + return True diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index 4a67ae4fc..dfde09b41 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -40,6 +40,7 @@ ("Y_binary~treat + unit"), ] + @pytest.fixture(scope="module") def data_panel(N=1000, T=30, seed=421): rng = np.random.default_rng(seed) @@ -52,7 +53,7 @@ def data_panel(N=1000, T=30, seed=421): ever_treated = np.isin(units, treated_units).astype(int) alpha = rng.normal(0, 1, N) gamma = np.random.normal(0, 0.5, T) - + # Generate AR(1) errors within each unit (rho=0.8 for strong autocorrelation) epsilon = np.empty(N * T) rho = 0.5 @@ -68,12 +69,18 @@ def data_panel(N=1000, T=30, seed=421): for t in range(1, T): errors[t] = rho * errors[t - 1] + innovations[t] epsilon[start_idx:end_idx] = errors - + Y = alpha[units] + gamma[time] + treat + epsilon - + # Add count variable for Poisson models # Ensure it's positive by exponentiating a scaled version - Y_count = np.exp(0.5 + 0.1 * alpha[units] + 0.05 * gamma[time] + 0.1 * treat + rng.normal(0, 0.3, N * T)) + Y_count = np.exp( + 0.5 + + 0.1 * alpha[units] + + 0.05 * gamma[time] + + 0.1 * treat + + rng.normal(0, 0.3, N * T) + ) Y_count = np.maximum(Y_count, 0.1).astype(int) # Ensure positive integers Y_binary = (Y_count > 0).astype(int) weights = rng.uniform(0, 1, N * T) @@ -103,7 +110,7 @@ def data_time(): "weights": rng.uniform(0, 1, N), } ) - + # Generate AR(1) errors with rho=0.8 for strong autocorrelation rho = 0.8 innovations = rng.normal(0, 1, N) @@ -111,13 +118,23 @@ def data_time(): epsilon[0] = innovations[0] for t in range(1, N): epsilon[t] = rho * epsilon[t - 1] + innovations[t] - + data["Y"] = data["unit"] - data["year"] + 0.5 * data["treat"] + epsilon # Add count variable for Poisson models - data["Y_count"] = np.maximum(np.exp(0.5 + 0.05 * data["unit"] - 0.01 * data["year"] + 0.1 * data["treat"] + rng.normal(0, 0.3, N)), 0.1).astype(int) + data["Y_count"] = np.maximum( + np.exp( + 0.5 + + 0.05 * data["unit"] + - 0.01 * data["year"] + + 0.1 * data["treat"] + + rng.normal(0, 0.3, N) + ), + 0.1, + ).astype(int) data["Y_binary"] = (data["Y_count"] > 0).astype(int) return data + def check_absolute_diff(x1, x2, tol, msg=None): "Check for absolute differences." if isinstance(x1, (int, float)): @@ -149,7 +166,7 @@ def check_relative_diff(x1, x2, tol, msg=None): def _prepare_balanced_data(data, panel_id, balanced): """Prepare data by applying balancing/non-balancing modifications. - + Parameters ---------- data : pd.DataFrame @@ -159,7 +176,7 @@ def _prepare_balanced_data(data, panel_id, balanced): balanced : str Type of balancing: "balanced-consecutive", "balanced-non-consecutive", "non-balanced-consecutive", or "non-balanced-non-consecutive". - + Returns ------- pd.DataFrame @@ -167,10 +184,10 @@ def _prepare_balanced_data(data, panel_id, balanced): """ if panel_id is None: return data - + first_25 = np.unique(data["unit"])[:25] cc = data.groupby("unit").cumcount() - + if balanced == "balanced-non-consecutive": # drop an interior row (e.g., the 2nd observation, cc==1) for EVERY unit # => all units lose exactly one row (balanced), and there is a gap (non-consecutive) @@ -185,13 +202,13 @@ def _prepare_balanced_data(data, panel_id, balanced): # => those units have a gap (non-consecutive) and fewer rows (non-balanced) mask = ~(data["unit"].isin(first_25) & (cc == 2)) data = data[mask].reset_index(drop=True) - + return data def _get_r_panel_kwargs(time_id, panel_id, lag, inference): """Construct R panel kwargs for vcov_NW or vcov_DK. - + Parameters ---------- time_id : str or None @@ -202,7 +219,7 @@ def _get_r_panel_kwargs(time_id, panel_id, lag, inference): The lag value for HAC. inference : str Type of inference: "NW" or "DK". - + Returns ------- dict @@ -227,11 +244,7 @@ def _get_r_panel_kwargs(time_id, panel_id, lag, inference): @pytest.mark.against_r_core -@pytest.mark.parametrize( - "inference", [ - "NW", - "DK" -]) +@pytest.mark.parametrize("inference", ["NW", "DK"]) @pytest.mark.parametrize( "vcov_kwargs", [ @@ -255,25 +268,12 @@ def _get_r_panel_kwargs(time_id, panel_id, lag, inference): ) @pytest.mark.parametrize( "weights", - [ - None, - "weights" - ], + [None, "weights"], ) @pytest.mark.parametrize("fml", ols_fmls) -@pytest.mark.parametrize("k_adj", [ - True, - False -]) -@pytest.mark.parametrize("G_adj", [ - True, - False -]) -@pytest.mark.parametrize("k_fixef", [ - "none", - "nonnested", - "full" -]) +@pytest.mark.parametrize("k_adj", [True, False]) +@pytest.mark.parametrize("G_adj", [True, False]) +@pytest.mark.parametrize("k_fixef", ["none", "nonnested", "full"]) def test_single_fit_feols_hac_panel( data_panel, data_time, @@ -282,21 +282,22 @@ def test_single_fit_feols_hac_panel( weights, fml, balanced, - k_adj, + k_adj, G_adj, k_fixef, ): - lag = vcov_kwargs.get("lag", None) time_id = vcov_kwargs.get("time_id", None) panel_id = vcov_kwargs.get("panel_id", None) data = data_panel if panel_id is not None else data_time - + if panel_id is None and balanced != "balanced-consecutive": pytest.skip("Don't test for non-balancedness when no panel data.") if panel_id is None and inference == "DK": - pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + pytest.skip( + "Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC." + ) data = _prepare_balanced_data(data, panel_id, balanced) @@ -307,12 +308,13 @@ def test_single_fit_feols_hac_panel( r_fixest = fixest.feols( ro.Formula(fml), - vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), + vcov=fixest.vcov_NW(**r_panel_kwars) + if inference == "NW" + else fixest.vcov_DK(**r_panel_kwars), data=data, - **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), - panel_time_step = 1, - ssc = fixest.ssc(k_adj, k_fixef, False, G_adj, "min" , "min"), - + **({"weights": ro.Formula(f"~{weights}")} if weights is not None else {}), + panel_time_step=1, + ssc=fixest.ssc(k_adj, k_fixef, False, G_adj, "min", "min"), ) mod = pf.feols( @@ -321,7 +323,7 @@ def test_single_fit_feols_hac_panel( vcov=inference, vcov_kwargs=vcov_kwargs, weights=weights, - ssc=pf.ssc(k_adj =k_adj, k_fixef=k_fixef, G_adj=G_adj), + ssc=pf.ssc(k_adj=k_adj, k_fixef=k_fixef, G_adj=G_adj), ) # r_fixest to global r env, needed for @@ -332,8 +334,22 @@ def test_single_fit_feols_hac_panel( r_vcov = stats.vcov(r_fixest)[0, 0] if np.abs(py_vcov - r_vcov) > 1e-05: - print("G adj time:", 1 / (len(np.unique(mod._data[mod._time_id])) / (len(np.unique(mod._data[mod._time_id])) - 1))) - print("G adj panel:", 1 / (len(np.unique(mod._data[mod._panel_id])) / (len(np.unique(mod._data[mod._panel_id])) - 1))) + print( + "G adj time:", + 1 + / ( + len(np.unique(mod._data[mod._time_id])) + / (len(np.unique(mod._data[mod._time_id])) - 1) + ), + ) + print( + "G adj panel:", + 1 + / ( + len(np.unique(mod._data[mod._panel_id])) + / (len(np.unique(mod._data[mod._panel_id])) - 1) + ), + ) print("vcov_ratio:", py_vcov / r_vcov) @@ -341,11 +357,7 @@ def test_single_fit_feols_hac_panel( @pytest.mark.against_r_core -@pytest.mark.parametrize( - "inference", [ - "NW", - "DK" -]) +@pytest.mark.parametrize("inference", ["NW", "DK"]) @pytest.mark.parametrize( "vcov_kwargs", [ @@ -362,13 +374,15 @@ def test_single_fit_feols_hac_panel( "balanced", [ "balanced-consecutive", - #"balanced-non-consecutive", - #"non-balanced-consecutive", - #"non-balanced-non-consecutive", + # "balanced-non-consecutive", + # "non-balanced-consecutive", + # "non-balanced-non-consecutive", ], ) @pytest.mark.parametrize("fml", poisson_fmls) -def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwargs, fml, balanced): +def test_single_fit_fepois_hac_panel( + data_panel, data_time, inference, vcov_kwargs, fml, balanced +): k_adj = False G_adj = False ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) @@ -382,7 +396,9 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar pytest.skip("Don't test for non-balancedness when no panel data.") if panel_id is None and inference == "DK": - pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + pytest.skip( + "Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC." + ) data = _prepare_balanced_data(data, panel_id, balanced) @@ -393,10 +409,12 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar r_fixest = fixest.fepois( ro.Formula(fml), - vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), + vcov=fixest.vcov_NW(**r_panel_kwars) + if inference == "NW" + else fixest.vcov_DK(**r_panel_kwars), data=data, - ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - panel_time_step = 1 + ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min", "min"), + panel_time_step=1, ) mod = pf.fepois( @@ -418,11 +436,7 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar @pytest.mark.against_r_core -@pytest.mark.parametrize( - "inference", [ - "NW", - "DK" -]) +@pytest.mark.parametrize("inference", ["NW", "DK"]) @pytest.mark.parametrize( "vcov_kwargs", [ @@ -439,15 +453,15 @@ def test_single_fit_fepois_hac_panel(data_panel, data_time, inference, vcov_kwar "balanced", [ "balanced-consecutive", - #"balanced-non-consecutive", - #"non-balanced-consecutive", - # "non-balanced-non-consecutive", + # "balanced-non-consecutive", + # "non-balanced-consecutive", + # "non-balanced-non-consecutive", ], ) - @pytest.mark.parametrize("fml", glm_fmls) -def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwargs, fml, balanced): - +def test_single_fit_feglm_hac_panel( + data_panel, data_time, inference, vcov_kwargs, fml, balanced +): k_adj = False G_adj = False ssc_ = ssc(k_adj=k_adj, G_adj=G_adj) @@ -462,7 +476,9 @@ def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwarg pytest.skip("Don't test for non-balancedness when no panel data.") if panel_id is None and inference == "DK": - pytest.skip("Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC.") + pytest.skip( + "Don't test for DK when no panel data, as ill-defined / collapes back to TS HAC." + ) if panel_id is not None: # pick the subset of units to alter for the non-balanced cases @@ -491,21 +507,22 @@ def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwarg if "|" in fml and panel_id is None: pytest.skip("Don't run fixed effect test when data is not a panel.") - r_panel_kwars = ( - ({"time": time_id} if time_id is not None else {}) - | ({"lag": lag} if lag is not None else {}) + r_panel_kwars = ({"time": time_id} if time_id is not None else {}) | ( + {"lag": lag} if lag is not None else {} ) if inference == "NW": - r_panel_kwars |= ({"unit": panel_id} if panel_id is not None else {}) + r_panel_kwars |= {"unit": panel_id} if panel_id is not None else {} r_fixest = fixest.feglm( ro.Formula(fml), - vcov= fixest.vcov_NW(**r_panel_kwars) if inference == "NW" else fixest.vcov_DK(**r_panel_kwars), + vcov=fixest.vcov_NW(**r_panel_kwars) + if inference == "NW" + else fixest.vcov_DK(**r_panel_kwars), data=data, - ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min" , "min"), - family=stats.binomial(link = "logit"), - panel_time_step = 1 + ssc=fixest.ssc(k_adj, "nested", False, G_adj, "min", "min"), + family=stats.binomial(link="logit"), + panel_time_step=1, ) mod = pf.feglm( @@ -514,7 +531,7 @@ def test_single_fit_feglm_hac_panel(data_panel, data_time, inference, vcov_kwarg vcov=inference, vcov_kwargs=vcov_kwargs, ssc=ssc_, - family="logit" + family="logit", ) # r_fixest to global r env, needed for # operations as in dof.K @@ -540,7 +557,9 @@ def test_vcov_updating(data_panel): vcov_kwargs={"time_id": "year", "panel_id": "unit", "lag": 7}, ) - fit_hetero.vcov(vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year", "panel_id": "unit"}) + fit_hetero.vcov( + vcov="NW", vcov_kwargs={"lag": 7, "time_id": "year", "panel_id": "unit"} + ) assert fit_hetero._vcov_type == "HAC" assert fit_hetero._vcov_type_detail == "NW" diff --git a/tests/test_vs_fixest.py b/tests/test_vs_fixest.py index ec51076f6..296c74063 100644 --- a/tests/test_vs_fixest.py +++ b/tests/test_vs_fixest.py @@ -1334,11 +1334,7 @@ def test_singleton_dropping(): @pytest.mark.parametrize("k_fixef", ["full", "none", "nonnested"]) @pytest.mark.parametrize("model", ["feols", "fepois"]) def test_ssc(fml, dropna, weights, vcov, k_adj, G_adj, k_fixef, model): - df = ( - pf.get_data(model="Feols") - if model == "feols" - else pf.get_data(model="Fepois") - ) + df = pf.get_data(model="Feols") if model == "feols" else pf.get_data(model="Fepois") df = df.dropna() if dropna else df if not dropna and vcov in ["f1", "f2", "f1+f2"] and vcov not in fml: From 90f29d4222285302a5efcd3db3e825400bf4eebe Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 19 Oct 2025 11:01:44 +0200 Subject: [PATCH 41/43] fix HAC ssc --- pyfixest/estimation/feols_.py | 37 ++++------------------------------- pyfixest/utils/utils.py | 2 +- 2 files changed, 5 insertions(+), 34 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 3bf125e54..4eacdade0 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -690,42 +690,13 @@ def vcov( self._vcov = self._ssc * self._vcov_hetero() elif self._vcov_type == "HAC": - k_fe_nested = 0 - n_fe_fully_nested = 0 - vcov_type_for_ssc = "HAC-TS" - G_for_ssc = self._N - - if self._panel_id is not None: - vcov_type_for_ssc = "HAC-P" - G_for_ssc = np.unique(self._data[self._time_id]).shape[0] - k_fe_nested = 0 - n_fe_fully_nested = 0 - if self._has_fixef and self._ssc_dict["k_fixef"] == "nonnested": - k_fe_nested_flag, n_fe_fully_nested = self._count_nested_fixef_func( - all_fixef_array=np.array( - self._fixef.replace("^", "_").split("+"), dtype=str - ), - cluster_colnames=np.array(self._time_id, dtype=str), - cluster_data=self._data[self._time_id] - .to_numpy() - .astype(np.uintp), - fe_data=self._fe.to_numpy().astype(np.uintp) - if isinstance(self._fe, pd.DataFrame) - else self._fe.astype(np.uintp), - ) - - k_fe_nested = ( - np.sum(self._k_fe[k_fe_nested_flag]) - if n_fe_fully_nested > 0 - else 0 - ) ssc_kwargs_hac = { - "k_fe_nested": k_fe_nested, - "n_fe_fully_nested": n_fe_fully_nested, + "k_fe_nested": 0, # nesting ignored / irrelevant for HAC SEs + "n_fe_fully_nested": 0, # nesting ignored / irrelevant for HAC SEs "vcov_sign": 1, - "vcov_type": vcov_type_for_ssc, - "G": G_for_ssc, + "vcov_type": "HAC", + "G": np.unique(self._data[self._time_id]).shape[0], # number of unique time periods T used } all_kwargs = {**ssc_kwargs, **ssc_kwargs_hac} diff --git a/pyfixest/utils/utils.py b/pyfixest/utils/utils.py index 0072c7aa5..7a5d17c24 100644 --- a/pyfixest/utils/utils.py +++ b/pyfixest/utils/utils.py @@ -218,7 +218,7 @@ def get_ssc( adj_value = (N - 1) / (N - df_k) if vcov_type != "hetero" else N / (N - df_k) # G_adj applied with G = N for hetero but not for iid - if vcov_type in ["CRV", "HAC-TS", "HAC-P"] and G_adj: + if vcov_type in ["CRV", "HAC"] and G_adj: if G_df == "conventional": G_adj_value = G / (G - 1) elif G_df == "min": From fdb02c7b6f5eaa205c0625643e2df092af27b64c Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 19 Oct 2025 11:38:21 +0200 Subject: [PATCH 42/43] fix --- pyfixest/estimation/feols_.py | 9 +++++---- tests/test_errors.py | 16 ++-------------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/pyfixest/estimation/feols_.py b/pyfixest/estimation/feols_.py index 4eacdade0..5223fbdcc 100644 --- a/pyfixest/estimation/feols_.py +++ b/pyfixest/estimation/feols_.py @@ -690,13 +690,14 @@ def vcov( self._vcov = self._ssc * self._vcov_hetero() elif self._vcov_type == "HAC": - ssc_kwargs_hac = { - "k_fe_nested": 0, # nesting ignored / irrelevant for HAC SEs - "n_fe_fully_nested": 0, # nesting ignored / irrelevant for HAC SEs + "k_fe_nested": 0, # nesting ignored / irrelevant for HAC SEs + "n_fe_fully_nested": 0, # nesting ignored / irrelevant for HAC SEs "vcov_sign": 1, "vcov_type": "HAC", - "G": np.unique(self._data[self._time_id]).shape[0], # number of unique time periods T used + "G": np.unique(self._data[self._time_id]).shape[ + 0 + ], # number of unique time periods T used } all_kwargs = {**ssc_kwargs, **ssc_kwargs_hac} diff --git a/tests/test_errors.py b/tests/test_errors.py index 497b1fc31..fa97c99a2 100644 --- a/tests/test_errors.py +++ b/tests/test_errors.py @@ -961,7 +961,7 @@ def test_errors_vcov_kwargs(): # Error 11: panel_id value is not a string (list) with pytest.raises( - ValueError, match=r'must be a dictionary with string values for "panel_id".' + ValueError, match=r"The function argument `vcov_kwargs` must be a." ): pf.feols( "Y ~ X1", data=data, vcov="NW", vcov_kwargs={"panel_id": ["col1", "col2"]} @@ -995,9 +995,7 @@ def test_errors_hac(): ) # Error 3: time_id is not provided if vcov is NW or DK - with pytest.raises( - ValueError, match=r"Missing required 'time_id' for NW/DK vcov\." - ): + with pytest.raises(ValueError, match=r"Missing required 'time_id' for NW/DK vcov"): pf.feols( "Y ~ X1", data=data, @@ -1071,13 +1069,3 @@ def test_errors_hac(): vcov=vcov, vcov_kwargs={"time_id": "time3", "panel_id": "panel", "lag": 5}, ) - - -def test_errors_hac_inference(): - data = pf.get_data() - data["Y"] = np.where(data["Y"] > 0, 1, 0) - with pytest.raises( - NotImplementedError, - match=r"HAC inference is not supported for this model type\.", - ): - pf.quantreg("Y ~ X1", data=data, vcov="NW") From 9c6e077c9a52da2ab8f8d4014c4197ffd47d9b4e Mon Sep 17 00:00:00 2001 From: Alexander Fischer Date: Sun, 19 Oct 2025 11:44:43 +0200 Subject: [PATCH 43/43] delete print statements --- tests/test_hac_vs_fixest.py | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/tests/test_hac_vs_fixest.py b/tests/test_hac_vs_fixest.py index dfde09b41..4e7b3c0ed 100644 --- a/tests/test_hac_vs_fixest.py +++ b/tests/test_hac_vs_fixest.py @@ -333,26 +333,6 @@ def test_single_fit_feols_hac_panel( py_vcov = mod._vcov[0, 0] r_vcov = stats.vcov(r_fixest)[0, 0] - if np.abs(py_vcov - r_vcov) > 1e-05: - print( - "G adj time:", - 1 - / ( - len(np.unique(mod._data[mod._time_id])) - / (len(np.unique(mod._data[mod._time_id])) - 1) - ), - ) - print( - "G adj panel:", - 1 - / ( - len(np.unique(mod._data[mod._panel_id])) - / (len(np.unique(mod._data[mod._panel_id])) - 1) - ), - ) - - print("vcov_ratio:", py_vcov / r_vcov) - check_absolute_diff(py_vcov, r_vcov, 1e-05, "py_vcov != r_vcov")