autogluon.timeseries 1.0.1b20240301__py3-none-any.whl → 1.0.1b20240302__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of autogluon.timeseries might be problematic. Click here for more details.

@@ -231,9 +231,6 @@ class AbstractMLForecastModel(AbstractTimeSeriesModel):
231
231
  if static_features is not None:
232
232
  df = pd.merge(df, static_features, how="left", on=ITEMID, suffixes=(None, "_static_feat"))
233
233
 
234
- # Convert float64 to float32 to reduce memory usage
235
- float64_cols = list(df.select_dtypes(include="float64"))
236
- df[float64_cols] = df[float64_cols].astype("float32")
237
234
  # We assume that df is sorted by 'unique_id' inside `TimeSeriesPredictor._check_and_prepare_data_frame`
238
235
  return df.rename(columns=column_name_mapping)
239
236
 
@@ -293,7 +293,7 @@ class TimeSeriesPredictor(TimeSeriesPredictorDeprecatedMixin):
293
293
  Preprocessed data in TimeSeriesDataFrame format.
294
294
  """
295
295
  df = self._to_data_frame(data, name=name)
296
- df = df.astype({self.target: float})
296
+ df = df.astype({self.target: "float32"})
297
297
  # MultiIndex.is_monotonic_increasing checks if index is sorted by ["item_id", "timestamp"]
298
298
  if not df.index.is_monotonic_increasing:
299
299
  df = df.sort_index()
@@ -1,9 +1,8 @@
1
1
  import logging
2
2
  import reprlib
3
3
  from dataclasses import dataclass, field
4
- from typing import List, Optional
4
+ from typing import List, Optional, Tuple
5
5
 
6
- import numpy as np
7
6
  import pandas as pd
8
7
 
9
8
  from autogluon.common.features.types import R_FLOAT, R_INT
@@ -33,9 +32,9 @@ class CovariateMetadata:
33
32
  class ContinuousAndCategoricalFeatureGenerator(PipelineFeatureGenerator):
34
33
  """Generates categorical and continuous features for time series models."""
35
34
 
36
- def __init__(self, verbosity: int = 0, **kwargs):
35
+ def __init__(self, verbosity: int = 0, minimum_cat_count=2, float_dtype: str = "float32", **kwargs):
37
36
  generators = [
38
- CategoryFeatureGenerator(minimum_cat_count=1, fillna="mode"),
37
+ CategoryFeatureGenerator(minimum_cat_count=minimum_cat_count, fillna="mode"),
39
38
  IdentityFeatureGenerator(infer_features_in_args={"valid_raw_types": [R_INT, R_FLOAT]}),
40
39
  ]
41
40
  super().__init__(
@@ -47,34 +46,47 @@ class ContinuousAndCategoricalFeatureGenerator(PipelineFeatureGenerator):
47
46
  verbosity=verbosity,
48
47
  **kwargs,
49
48
  )
49
+ self.float_dtype = float_dtype
50
+
51
+ def _convert_numerical_columns_to_float(self, df: pd.DataFrame) -> pd.DataFrame:
52
+ """Convert the dtype of all numerical (float or int) columns to the given float dtype."""
53
+ numeric_columns = [col for col in df.columns if pd.api.types.is_numeric_dtype(df[col])]
54
+ return df.astype({col: self.float_dtype for col in numeric_columns})
55
+
56
+ def transform(self, X: pd.DataFrame, *args, **kwargs) -> pd.DataFrame:
57
+ if isinstance(X, TimeSeriesDataFrame):
58
+ X = pd.DataFrame(X)
59
+ return self._convert_numerical_columns_to_float(super().transform(X, *args, **kwargs))
60
+
61
+ def fit_transform(self, X: pd.DataFrame, *args, **kwargs) -> pd.DataFrame:
62
+ # PipelineFeatureGenerator does not use transform() inside fit_transform(), so we need to override both methods
63
+ if isinstance(X, TimeSeriesDataFrame):
64
+ X = pd.DataFrame(X)
65
+ return self._convert_numerical_columns_to_float(super().fit_transform(X, *args, **kwargs))
50
66
 
51
67
 
52
68
  class TimeSeriesFeatureGenerator:
53
69
  """Takes care of preprocessing for static_features and past/known covariates.
54
70
 
55
- Covariates are all converted to float dtype. Static features, if present, are all converted to categorical & float
56
- dtypes.
71
+ All covariates & static features are converted into either float32 or categorical dtype.
57
72
  """
58
73
 
59
- def __init__(self, target: str, known_covariates_names: List[str]):
74
+ def __init__(self, target: str, known_covariates_names: List[str], float_dtype: str = "float32"):
60
75
  self.target = target
76
+ self.float_dtype = float_dtype
61
77
  self._is_fit = False
62
78
  self.known_covariates_names = list(known_covariates_names)
63
79
  self.past_covariates_names = []
64
- self.static_feature_pipeline = ContinuousAndCategoricalFeatureGenerator()
80
+ self.known_covariates_pipeline = ContinuousAndCategoricalFeatureGenerator()
81
+ self.past_covariates_pipeline = ContinuousAndCategoricalFeatureGenerator()
82
+ # Cat features with cat_count=1 are fine in static_features since they are repeated for all time steps in a TS
83
+ self.static_feature_pipeline = ContinuousAndCategoricalFeatureGenerator(minimum_cat_count=1)
65
84
  self.covariate_metadata: CovariateMetadata = None
66
85
 
67
86
  @property
68
87
  def required_column_names(self) -> List[str]:
69
88
  return [self.target] + list(self.known_covariates_names) + list(self.past_covariates_names)
70
89
 
71
- @staticmethod
72
- def _convert_numerical_features_to_float(df: pd.DataFrame, float_dtype=np.float64) -> pd.DataFrame:
73
- """In-place convert the dtype of all numerical (float or int) columns to the given float dtype."""
74
- numeric_columns = [col for col in df.columns if pd.api.types.is_numeric_dtype(df[col])]
75
- df[numeric_columns] = df[numeric_columns].astype(float_dtype)
76
- return df
77
-
78
90
  def fit(self, data: TimeSeriesDataFrame) -> None:
79
91
  assert not self._is_fit, f"{self.__class__.__name__} has already been fit"
80
92
 
@@ -83,70 +95,67 @@ class TimeSeriesFeatureGenerator:
83
95
  if column != self.target and column not in self.known_covariates_names:
84
96
  self.past_covariates_names.append(column)
85
97
 
86
- logger.info("\nProvided dataset contains following columns:")
87
- logger.info(f"\ttarget: '{self.target}'")
98
+ self._check_required_columns_are_present(
99
+ data, required_column_names=self.required_column_names, data_frame_name="train_data"
100
+ )
101
+
102
+ logger.info("\nProvided data contains following columns:")
103
+ logger.info(f"\ttarget: '{self.target}'")
104
+
88
105
  if len(self.known_covariates_names) > 0:
89
- logger.info(f"\tknown covariates: {self.known_covariates_names}")
106
+ known_covariates_df = self.known_covariates_pipeline.fit_transform(data[self.known_covariates_names])
107
+ logger.info("\tknown_covariates:")
108
+ known_covariates_cat, known_covariates_real = self._detect_and_log_column_types(known_covariates_df)
109
+ self.known_covariates_names = self.known_covariates_pipeline.features_in
110
+ else:
111
+ known_covariates_cat = []
112
+ known_covariates_real = []
113
+
90
114
  if len(self.past_covariates_names) > 0:
91
- logger.info(f"\tpast covariates: {self.past_covariates_names}")
115
+ past_covariates_df = self.past_covariates_pipeline.fit_transform(data[self.past_covariates_names])
116
+ logger.info("\tpast_covariates:")
117
+ past_covariates_cat, past_covariates_real = self._detect_and_log_column_types(past_covariates_df)
118
+ self.past_covariates_names = self.past_covariates_pipeline.features_in
119
+ else:
120
+ past_covariates_cat = []
121
+ past_covariates_real = []
122
+
123
+ ignored_covariates = data.columns.difference(
124
+ [self.target] + self.known_covariates_names + self.past_covariates_names
125
+ )
92
126
 
93
- static_features_cat = []
94
- static_features_real = []
95
127
  if data.static_features is not None:
96
- static = self.static_feature_pipeline.fit_transform(data.static_features)
97
- static = self._convert_numerical_features_to_float(static)
98
-
99
- unused = []
100
- for col_name in data.static_features.columns:
101
- if col_name in static.columns and static[col_name].dtype == "category":
102
- static_features_cat.append(col_name)
103
- elif col_name in static.columns and static[col_name].dtype == np.float64:
104
- static_features_real.append(col_name)
105
- else:
106
- unused.append(col_name)
107
-
108
- logger.info("Following types of static features have been inferred:")
109
- logger.info(f"\tcategorical: {static_features_cat}")
110
- logger.info(f"\tcontinuous (float): {static_features_real}")
111
- if len(unused) > 0:
112
- logger.info(f"\tremoved (uninformative columns): {unused}")
128
+ static_features_df = self.static_feature_pipeline.fit_transform(data.static_features)
129
+ logger.info("\tstatic_features:")
130
+ static_features_cat, static_features_real = self._detect_and_log_column_types(static_features_df)
131
+ ignored_static_features = data.static_features.columns.difference(self.static_feature_pipeline.features_in)
132
+ else:
133
+ static_features_cat = []
134
+ static_features_real = []
135
+ ignored_static_features = []
136
+
137
+ if len(ignored_covariates) > 0 or len(ignored_static_features) > 0:
138
+ logger.info("\nAutoGluon will ignore following non-numeric/non-informative columns:")
139
+ if len(ignored_covariates) > 0:
140
+ logger.info(f"\tignored covariates: {list(ignored_covariates)}")
141
+ if len(ignored_static_features) > 0:
142
+ logger.info(f"\tignored static_features: {list(ignored_static_features)}")
143
+
144
+ if len(data.columns) > 1 or data.static_features is not None:
113
145
  logger.info(
114
- "To learn how to fix incorrectly inferred types, please see documentation for TimeSeriesPredictor.fit "
146
+ "\nTo learn how to fix incorrectly inferred types, please see documentation for TimeSeriesPredictor.fit"
115
147
  )
116
148
 
117
149
  self.covariate_metadata = CovariateMetadata(
150
+ known_covariates_cat=known_covariates_cat,
151
+ known_covariates_real=known_covariates_real,
152
+ past_covariates_cat=past_covariates_cat,
153
+ past_covariates_real=past_covariates_real,
118
154
  static_features_cat=static_features_cat,
119
155
  static_features_real=static_features_real,
120
- known_covariates_real=self.known_covariates_names,
121
- past_covariates_real=self.past_covariates_names,
122
- # TODO: Categorical time-varying covariates are not yet supported
123
- known_covariates_cat=[],
124
- past_covariates_cat=[],
125
156
  )
126
157
  self._is_fit = True
127
158
 
128
- @staticmethod
129
- def _check_and_prepare_covariates(
130
- data: TimeSeriesDataFrame,
131
- required_column_names: List[str],
132
- data_frame_name: str,
133
- ) -> TimeSeriesDataFrame:
134
- """Select the required dataframe columns and convert them to float64 dtype."""
135
- missing_columns = pd.Index(required_column_names).difference(data.columns)
136
- if len(missing_columns) > 0:
137
- raise ValueError(
138
- f"{len(missing_columns)} columns are missing from {data_frame_name}: {reprlib.repr(missing_columns.to_list())}"
139
- )
140
- data = data[required_column_names]
141
- try:
142
- data = data.astype(np.float64)
143
- except ValueError:
144
- raise ValueError(
145
- f"Columns in {data_frame_name} must all have numeric (float or int) dtypes, "
146
- f"but in provided data they have dtypes {data.dtypes}"
147
- )
148
- return data
149
-
150
159
  def transform(self, data: TimeSeriesDataFrame, data_frame_name: str = "data") -> TimeSeriesDataFrame:
151
160
  """Transform static features and past/known covariates.
152
161
 
@@ -156,24 +165,25 @@ class TimeSeriesFeatureGenerator:
156
165
  If some columns are missing or are incompatible, an exception will be raised.
157
166
  """
158
167
  assert self._is_fit, f"{self.__class__.__name__} has not been fit yet"
159
- # Avoid modifying inplace
160
- data = data.copy(deep=False)
161
-
162
- data = self._check_and_prepare_covariates(
163
- data=data,
164
- required_column_names=self.required_column_names,
165
- data_frame_name=data_frame_name,
168
+ self._check_required_columns_are_present(
169
+ data, required_column_names=self.required_column_names, data_frame_name=data_frame_name
166
170
  )
171
+ dfs = [data[[self.target]]]
172
+
173
+ if len(self.known_covariates_names) > 0:
174
+ dfs.append(self.known_covariates_pipeline.transform(data[self.known_covariates_names]))
175
+
176
+ if len(self.past_covariates_names) > 0:
177
+ dfs.append(self.past_covariates_pipeline.transform(data[self.past_covariates_names]))
167
178
 
168
179
  if self.static_feature_pipeline.is_fit():
169
180
  if data.static_features is None:
170
181
  raise ValueError(f"Provided {data_frame_name} must contain static_features")
171
182
  static_features = self.static_feature_pipeline.transform(data.static_features)
172
- data.static_features = self._convert_numerical_features_to_float(static_features)
173
183
  else:
174
- data.static_features = None
184
+ static_features = None
175
185
 
176
- return data
186
+ return TimeSeriesDataFrame(pd.concat(dfs, axis=1), static_features=static_features)
177
187
 
178
188
  def transform_future_known_covariates(
179
189
  self, known_covariates: Optional[TimeSeriesDataFrame]
@@ -181,14 +191,38 @@ class TimeSeriesFeatureGenerator:
181
191
  assert self._is_fit, f"{self.__class__.__name__} has not been fit yet"
182
192
  if len(self.known_covariates_names) > 0:
183
193
  assert known_covariates is not None, "known_covariates must be provided at prediction time"
184
- return self._check_and_prepare_covariates(
185
- known_covariates,
186
- required_column_names=self.known_covariates_names,
187
- data_frame_name="known_covariates",
194
+ self._check_required_columns_are_present(
195
+ known_covariates, required_column_names=self.known_covariates_names, data_frame_name="known_covariates"
188
196
  )
197
+ return TimeSeriesDataFrame(self.known_covariates_pipeline.transform(known_covariates))
189
198
  else:
190
199
  return None
191
200
 
192
201
  def fit_transform(self, data: TimeSeriesDataFrame, data_frame_name: str = "data") -> TimeSeriesDataFrame:
193
202
  self.fit(data)
194
203
  return self.transform(data, data_frame_name=data_frame_name)
204
+
205
+ @staticmethod
206
+ def _detect_and_log_column_types(transformed_df: pd.DataFrame) -> Tuple[List[str], List[str]]:
207
+ """Log & return names of categorical and real-valued columns in the DataFrame."""
208
+ cat_column_names = []
209
+ real_column_names = []
210
+ for column_name, column_dtype in transformed_df.dtypes.items():
211
+ if isinstance(column_dtype, pd.CategoricalDtype):
212
+ cat_column_names.append(column_name)
213
+ elif pd.api.types.is_numeric_dtype(column_dtype):
214
+ real_column_names.append(column_name)
215
+
216
+ logger.info(f"\t\tcategorical: {reprlib.repr(cat_column_names)}")
217
+ logger.info(f"\t\tcontinuous (float): {reprlib.repr(real_column_names)}")
218
+ return cat_column_names, real_column_names
219
+
220
+ @staticmethod
221
+ def _check_required_columns_are_present(
222
+ data: TimeSeriesDataFrame, required_column_names: List[str], data_frame_name: str
223
+ ) -> None:
224
+ missing_columns = pd.Index(required_column_names).difference(data.columns)
225
+ if len(missing_columns) > 0:
226
+ raise ValueError(
227
+ f"{len(missing_columns)} columns are missing from {data_frame_name}: {reprlib.repr(missing_columns.to_list())}"
228
+ )
@@ -1,3 +1,3 @@
1
1
  """This is the autogluon version file."""
2
- __version__ = '1.0.1b20240301'
2
+ __version__ = '1.0.1b20240302'
3
3
  __lite__ = False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: autogluon.timeseries
3
- Version: 1.0.1b20240301
3
+ Version: 1.0.1b20240302
4
4
  Summary: AutoML for Image, Text, and Tabular Data
5
5
  Home-page: https://github.com/autogluon/autogluon
6
6
  Author: AutoGluon Community
@@ -50,9 +50,9 @@ Requires-Dist: utilsforecast <0.0.11,>=0.0.10
50
50
  Requires-Dist: tqdm <5,>=4.38
51
51
  Requires-Dist: orjson ~=3.9
52
52
  Requires-Dist: tensorboard <3,>=2.9
53
- Requires-Dist: autogluon.core[raytune] ==1.0.1b20240301
54
- Requires-Dist: autogluon.common ==1.0.1b20240301
55
- Requires-Dist: autogluon.tabular[catboost,lightgbm,xgboost] ==1.0.1b20240301
53
+ Requires-Dist: autogluon.core[raytune] ==1.0.1b20240302
54
+ Requires-Dist: autogluon.common ==1.0.1b20240302
55
+ Requires-Dist: autogluon.tabular[catboost,lightgbm,xgboost] ==1.0.1b20240302
56
56
  Provides-Extra: all
57
57
  Provides-Extra: tests
58
58
  Requires-Dist: pytest ; extra == 'tests'
@@ -1,10 +1,10 @@
1
- autogluon.timeseries-1.0.1b20240301-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
1
+ autogluon.timeseries-1.0.1b20240302-py3.8-nspkg.pth,sha256=cQGwpuGPqg1GXscIwt-7PmME1OnSpD-7ixkikJ31WAY,554
2
2
  autogluon/timeseries/__init__.py,sha256=_CrLLc1fkjen7UzWoO0Os8WZoHOgvZbHKy46I8v_4k4,304
3
3
  autogluon/timeseries/evaluator.py,sha256=l642tYfTHsl8WVIq_vV6qhgAFVFr9UuZD7gLra3A_Kc,250
4
4
  autogluon/timeseries/learner.py,sha256=VGBFTuNebD5xF2RfimornX86DOw5dxqpPtXlrUpNSHo,9814
5
- autogluon/timeseries/predictor.py,sha256=mTbuIJDuPOq64iLs-c6zFAWQHuWYZhuNrmLYExgeodU,67766
5
+ autogluon/timeseries/predictor.py,sha256=FkjPpEdboQHBsEh7GxCQZn-mmkICtnNL3ZV3MoWwJbs,67770
6
6
  autogluon/timeseries/splitter.py,sha256=eghGwAAN2_cxGk5aJBILgjGWtLzjxJcytMy49gg_q18,3061
7
- autogluon/timeseries/version.py,sha256=T6sjO4V0hWRcSC7zTvU--rHZTaCF62JTV9ZYby7tezM,90
7
+ autogluon/timeseries/version.py,sha256=h8nntaJLbUW6cfAKCiHy5GiEzFjrk259_uFIYznVD7Q,90
8
8
  autogluon/timeseries/configs/__init__.py,sha256=BTtHIPCYeGjqgOcvqb8qPD4VNX-ICKOg6wnkew1cPOE,98
9
9
  autogluon/timeseries/configs/presets_configs.py,sha256=1u6tbOKJdIRULYDu41dlJwXRNswWsjBDF0aR2YhyMQs,479
10
10
  autogluon/timeseries/dataset/__init__.py,sha256=UvnhAN5tjgxXTHoZMQDy64YMDj4Xxa68yY7NP4vAw0o,81
@@ -20,7 +20,7 @@ autogluon/timeseries/models/abstract/__init__.py,sha256=wvDsQAZIV0N3AwBeMaGItoQ8
20
20
  autogluon/timeseries/models/abstract/abstract_timeseries_model.py,sha256=LSIc6rIwFs870MHpKUC24naMIcczFGY_--Ov-wyAq2w,21431
21
21
  autogluon/timeseries/models/abstract/model_trial.py,sha256=_5Nrk4CrG3u35tTd3elekfdnQI2Pn3P9AGS5CE6nuyg,3749
22
22
  autogluon/timeseries/models/autogluon_tabular/__init__.py,sha256=r9i6jWcyeLHYClkcMSKRVsfrkBUMxpDrTATNTBc_qgQ,136
23
- autogluon/timeseries/models/autogluon_tabular/mlforecast.py,sha256=Juig6ZiKATqyHfOJ48zU_eWv7CjnlgMMPZCpmhwDFb0,29785
23
+ autogluon/timeseries/models/autogluon_tabular/mlforecast.py,sha256=uydOXTIy74Exy3jQ90YoCF1L4rP7A0jtUcOreAqdn5Q,29598
24
24
  autogluon/timeseries/models/autogluon_tabular/utils.py,sha256=4-gTrBtizxeMVQlsuscugPqw9unaXWXhS1TVVssfzYY,2125
25
25
  autogluon/timeseries/models/ensemble/__init__.py,sha256=kFr11Gmt7lQJu9Rr8HuIPphQN5l1TsoorfbJm_O3a_s,128
26
26
  autogluon/timeseries/models/ensemble/abstract_timeseries_ensemble.py,sha256=tifETwmiEGt-YtQ9eNK7ojJ3fBvtFMUJvisbfkIJ7gw,3393
@@ -40,7 +40,7 @@ autogluon/timeseries/trainer/__init__.py,sha256=lxiOT-Gc6BEnr_yWQqra85kEngeM_wtH
40
40
  autogluon/timeseries/trainer/abstract_trainer.py,sha256=d8Qt3euZyKUGt_R-_f0sPlGZhZgLkG8tV8qsq48zZj0,49335
41
41
  autogluon/timeseries/trainer/auto_trainer.py,sha256=ftjGd27V6dsfw3t7GY1YcoyKfj9Pl_UrU77T9u-kCQ0,3244
42
42
  autogluon/timeseries/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- autogluon/timeseries/utils/features.py,sha256=72RC_oLNh87VWIRv65M1v62vuz83zeaDhNlWBc0foSY,8354
43
+ autogluon/timeseries/utils/features.py,sha256=Liq_Vn_BH43AqwjfuHGbiaEzCjRcWMQUy24taL5Upc0,10937
44
44
  autogluon/timeseries/utils/forecast.py,sha256=Thjt6yTPSe3V4s5cQ9UbW3ysTJb1lkqxtZiCqgBSt3w,1776
45
45
  autogluon/timeseries/utils/warning_filters.py,sha256=VoyTzHovxDFFbeSQXttjzmifZxKJShpKIAfCHGQGoUU,1426
46
46
  autogluon/timeseries/utils/datetime/__init__.py,sha256=bTMR8jLh1LW55vHjbOr1zvWRMF_PqbvxpS-cUcNIDWI,173
@@ -48,11 +48,11 @@ autogluon/timeseries/utils/datetime/base.py,sha256=MsqIHY14m3QMjSwwtE7Uo1oNwepWU
48
48
  autogluon/timeseries/utils/datetime/lags.py,sha256=kcU4liKbHj7KP2ajNU-KLZ8OYSU35EgT4kJjZNSw0Zg,5875
49
49
  autogluon/timeseries/utils/datetime/seasonality.py,sha256=kgK_ukw2wCviEB7CZXRVC5HZpBJZu9IsRrvCJ9E_rOE,755
50
50
  autogluon/timeseries/utils/datetime/time_features.py,sha256=pROkYyxETQ8rHKfPGhf2paB73C7rWJ2Ui0cCswLqbBg,2562
51
- autogluon.timeseries-1.0.1b20240301.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
52
- autogluon.timeseries-1.0.1b20240301.dist-info/METADATA,sha256=iJrEt8t-ErNVreSnkS7LaZZ7rFLmdJCQLAyUAY0Yxtc,12081
53
- autogluon.timeseries-1.0.1b20240301.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
54
- autogluon.timeseries-1.0.1b20240301.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
55
- autogluon.timeseries-1.0.1b20240301.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
56
- autogluon.timeseries-1.0.1b20240301.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
57
- autogluon.timeseries-1.0.1b20240301.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
58
- autogluon.timeseries-1.0.1b20240301.dist-info/RECORD,,
51
+ autogluon.timeseries-1.0.1b20240302.dist-info/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142
52
+ autogluon.timeseries-1.0.1b20240302.dist-info/METADATA,sha256=5s8UXslOw3JPbV_cwFnw4RfEgNvt4h4vLs7BprE60o8,12081
53
+ autogluon.timeseries-1.0.1b20240302.dist-info/NOTICE,sha256=7nPQuj8Kp-uXsU0S5so3-2dNU5EctS5hDXvvzzehd7E,114
54
+ autogluon.timeseries-1.0.1b20240302.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
55
+ autogluon.timeseries-1.0.1b20240302.dist-info/namespace_packages.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
56
+ autogluon.timeseries-1.0.1b20240302.dist-info/top_level.txt,sha256=giERA4R78OkJf2ijn5slgjURlhRPzfLr7waIcGkzYAo,10
57
+ autogluon.timeseries-1.0.1b20240302.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
58
+ autogluon.timeseries-1.0.1b20240302.dist-info/RECORD,,