tabpfn-time-series 1.0.3__tar.gz → 1.0.5__tar.gz
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.
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/PKG-INFO +33 -1
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/README.md +30 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/demo.ipynb +8 -13
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/pyproject.toml +2 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/predictor.py +8 -1
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/tabpfn_worker.py +87 -21
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tests/test_predictor.py +5 -1
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/uv.lock +103 -16
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/.github/workflows/publish-release.yml +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/.github/workflows/publish-test.yml +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/.github/workflows/pull_request.yml +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/.gitignore +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/.pre-commit-config.yaml +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/LICENSE.txt +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/ruff.toml +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/__init__.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/data_preparation.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/defaults.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/__init__.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/auto_features.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/basic_features.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/feature_generator_base.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/feature_transformer.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/plot.py +0 -0
- {tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/ts_dataframe.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: tabpfn_time_series
|
3
|
-
Version: 1.0.
|
3
|
+
Version: 1.0.5
|
4
4
|
Summary: Zero-shot time series forecasting with TabPFNv2
|
5
5
|
Project-URL: Homepage, https://github.com/liam-sbhoo/tabpfn-time-series
|
6
6
|
Project-URL: Bug Tracker, https://github.com/liam-sbhoo/tabpfn-time-series/issues
|
@@ -10,6 +10,7 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
12
12
|
Requires-Python: >=3.10
|
13
|
+
Requires-Dist: backoff>=2.2.1
|
13
14
|
Requires-Dist: datasets>=4.0
|
14
15
|
Requires-Dist: gluonts>=0.16.0
|
15
16
|
Requires-Dist: pandas<2.2.0,>=2.1.2
|
@@ -17,6 +18,7 @@ Requires-Dist: python-dotenv>=1.1.0
|
|
17
18
|
Requires-Dist: pyyaml>=6.0.1
|
18
19
|
Requires-Dist: statsmodels>=0.14.5
|
19
20
|
Requires-Dist: tabpfn-client>=0.1.7
|
21
|
+
Requires-Dist: tabpfn-common-utils[telemetry-interactive]>=0.2.2
|
20
22
|
Requires-Dist: tabpfn>=2.0.9
|
21
23
|
Requires-Dist: tqdm
|
22
24
|
Provides-Extra: dev
|
@@ -97,3 +99,33 @@ uv pip install -e ".[dev]"
|
|
97
99
|
[](https://colab.research.google.com/github/PriorLabs/tabpfn-time-series/blob/main/demo.ipynb)
|
98
100
|
|
99
101
|
The demo should explain it all. 😉
|
102
|
+
|
103
|
+
## 📊 Anonymous Telemetry
|
104
|
+
|
105
|
+
This project collects **anonymous usage telemetry** by default.
|
106
|
+
|
107
|
+
The data is used exclusively to help us understand how the library is being used and to guide future improvements.
|
108
|
+
|
109
|
+
- **No personal data is collected**
|
110
|
+
- **No code, model inputs, or outputs are ever sent**
|
111
|
+
- **Data is strictly anonymous and cannot be linked to individuals**
|
112
|
+
|
113
|
+
### What we collect
|
114
|
+
We only collect high-level, non-identifying information such as:
|
115
|
+
- Package version
|
116
|
+
- Python version
|
117
|
+
- How often fit and inference are called, including simple metadata like the dimensionality of the input and the type of task (e.g., classification vs. regression) (:warning: never the data itself)
|
118
|
+
|
119
|
+
See the [Telemetry documentation](https://github.com/priorlabs/tabpfn/blob/main/TELEMETRY.md) for the full details of events and metadata.
|
120
|
+
|
121
|
+
This data is processed in compliance with the **General Data Protection Regulation (GDPR)** principles of data minimization and purpose limitation.
|
122
|
+
|
123
|
+
For more details, please see our [Privacy Policy](https://priorlabs.ai/privacy_policy/).
|
124
|
+
|
125
|
+
### How to opt out
|
126
|
+
If you prefer not to send telemetry, you can disable it by setting the following environment variable:
|
127
|
+
|
128
|
+
```bash
|
129
|
+
export TABPFN_DISABLE_TELEMETRY=1
|
130
|
+
```
|
131
|
+
---
|
@@ -62,3 +62,33 @@ uv pip install -e ".[dev]"
|
|
62
62
|
[](https://colab.research.google.com/github/PriorLabs/tabpfn-time-series/blob/main/demo.ipynb)
|
63
63
|
|
64
64
|
The demo should explain it all. 😉
|
65
|
+
|
66
|
+
## 📊 Anonymous Telemetry
|
67
|
+
|
68
|
+
This project collects **anonymous usage telemetry** by default.
|
69
|
+
|
70
|
+
The data is used exclusively to help us understand how the library is being used and to guide future improvements.
|
71
|
+
|
72
|
+
- **No personal data is collected**
|
73
|
+
- **No code, model inputs, or outputs are ever sent**
|
74
|
+
- **Data is strictly anonymous and cannot be linked to individuals**
|
75
|
+
|
76
|
+
### What we collect
|
77
|
+
We only collect high-level, non-identifying information such as:
|
78
|
+
- Package version
|
79
|
+
- Python version
|
80
|
+
- How often fit and inference are called, including simple metadata like the dimensionality of the input and the type of task (e.g., classification vs. regression) (:warning: never the data itself)
|
81
|
+
|
82
|
+
See the [Telemetry documentation](https://github.com/priorlabs/tabpfn/blob/main/TELEMETRY.md) for the full details of events and metadata.
|
83
|
+
|
84
|
+
This data is processed in compliance with the **General Data Protection Regulation (GDPR)** principles of data minimization and purpose limitation.
|
85
|
+
|
86
|
+
For more details, please see our [Privacy Policy](https://priorlabs.ai/privacy_policy/).
|
87
|
+
|
88
|
+
### How to opt out
|
89
|
+
If you prefer not to send telemetry, you can disable it by setting the following environment variable:
|
90
|
+
|
91
|
+
```bash
|
92
|
+
export TABPFN_DISABLE_TELEMETRY=1
|
93
|
+
```
|
94
|
+
---
|
@@ -35,7 +35,14 @@
|
|
35
35
|
},
|
36
36
|
"outputs": [],
|
37
37
|
"source": [
|
38
|
-
"# !pip install tabpfn-time-series>=1.0.
|
38
|
+
"# !uv pip install tabpfn-time-series>=1.0.3"
|
39
|
+
]
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"cell_type": "markdown",
|
43
|
+
"metadata": {},
|
44
|
+
"source": [
|
45
|
+
"***Note: remember to restart the runtime after the installation.***"
|
39
46
|
]
|
40
47
|
},
|
41
48
|
{
|
@@ -1058,18 +1065,6 @@
|
|
1058
1065
|
"display_name": "Python 3 (ipykernel)",
|
1059
1066
|
"language": "python",
|
1060
1067
|
"name": "python3"
|
1061
|
-
},
|
1062
|
-
"language_info": {
|
1063
|
-
"codemirror_mode": {
|
1064
|
-
"name": "ipython",
|
1065
|
-
"version": 3
|
1066
|
-
},
|
1067
|
-
"file_extension": ".py",
|
1068
|
-
"mimetype": "text/x-python",
|
1069
|
-
"name": "python",
|
1070
|
-
"nbconvert_exporter": "python",
|
1071
|
-
"pygments_lexer": "ipython3",
|
1072
|
-
"version": "3.12.11"
|
1073
1068
|
}
|
1074
1069
|
},
|
1075
1070
|
"nbformat": 4,
|
@@ -2,8 +2,13 @@ import logging
|
|
2
2
|
from enum import Enum
|
3
3
|
|
4
4
|
from tabpfn_time_series.ts_dataframe import TimeSeriesDataFrame
|
5
|
-
from tabpfn_time_series.tabpfn_worker import
|
5
|
+
from tabpfn_time_series.tabpfn_worker import (
|
6
|
+
TabPFNClient,
|
7
|
+
LocalTabPFN,
|
8
|
+
MockTabPFN,
|
9
|
+
)
|
6
10
|
from tabpfn_time_series.defaults import TABPFN_TS_DEFAULT_CONFIG
|
11
|
+
from tabpfn_common_utils.telemetry import set_extension
|
7
12
|
|
8
13
|
logger = logging.getLogger(__name__)
|
9
14
|
|
@@ -14,6 +19,7 @@ class TabPFNMode(Enum):
|
|
14
19
|
MOCK = "tabpfn-mock"
|
15
20
|
|
16
21
|
|
22
|
+
@set_extension("time-series")
|
17
23
|
class TabPFNTimeSeriesPredictor:
|
18
24
|
"""
|
19
25
|
Given a TimeSeriesDataFrame (multiple time series), perform prediction on each time series individually.
|
@@ -29,6 +35,7 @@ class TabPFNTimeSeriesPredictor:
|
|
29
35
|
TabPFNMode.LOCAL: lambda: LocalTabPFN(config),
|
30
36
|
TabPFNMode.MOCK: lambda: MockTabPFN(config),
|
31
37
|
}
|
38
|
+
self.tabpfn_mode = tabpfn_mode
|
32
39
|
self.tabpfn_worker = worker_mapping[tabpfn_mode]()
|
33
40
|
|
34
41
|
def predict(
|
@@ -1,6 +1,8 @@
|
|
1
|
+
import contextvars
|
1
2
|
import logging
|
2
3
|
from abc import ABC, abstractmethod
|
3
|
-
from joblib import Parallel, delayed
|
4
|
+
from joblib import Parallel, delayed, parallel_config
|
5
|
+
import backoff
|
4
6
|
|
5
7
|
from tqdm import tqdm
|
6
8
|
import pandas as pd
|
@@ -14,6 +16,9 @@ from tabpfn_time_series.defaults import TABPFN_TS_DEFAULT_QUANTILE_CONFIG
|
|
14
16
|
|
15
17
|
logger = logging.getLogger(__name__)
|
16
18
|
|
19
|
+
# Per-call attempt counter, isolated per thread & task
|
20
|
+
_retry_attempts = contextvars.ContextVar("predict_attempts", default=0)
|
21
|
+
|
17
22
|
|
18
23
|
class TabPFNWorker(ABC):
|
19
24
|
def __init__(
|
@@ -29,24 +34,7 @@ class TabPFNWorker(ABC):
|
|
29
34
|
train_tsdf: TimeSeriesDataFrame,
|
30
35
|
test_tsdf: TimeSeriesDataFrame,
|
31
36
|
):
|
32
|
-
|
33
|
-
n_jobs=self.num_workers,
|
34
|
-
backend="loky",
|
35
|
-
)(
|
36
|
-
delayed(self._prediction_routine)(
|
37
|
-
item_id,
|
38
|
-
train_tsdf.loc[item_id],
|
39
|
-
test_tsdf.loc[item_id],
|
40
|
-
)
|
41
|
-
for item_id in tqdm(train_tsdf.item_ids, desc="Predicting time series")
|
42
|
-
)
|
43
|
-
|
44
|
-
predictions = pd.concat(predictions)
|
45
|
-
|
46
|
-
# Sort predictions according to original item_ids order (important for MASE and WQL calculation)
|
47
|
-
predictions = predictions.loc[train_tsdf.item_ids]
|
48
|
-
|
49
|
-
return TimeSeriesDataFrame(predictions)
|
37
|
+
raise NotImplementedError("Predict method must be implemented in subclass")
|
50
38
|
|
51
39
|
def _prediction_routine(
|
52
40
|
self,
|
@@ -54,8 +42,6 @@ class TabPFNWorker(ABC):
|
|
54
42
|
single_train_tsdf: TimeSeriesDataFrame,
|
55
43
|
single_test_tsdf: TimeSeriesDataFrame,
|
56
44
|
) -> pd.DataFrame:
|
57
|
-
# logger.debug(f"Predicting on item_id: {item_id}")
|
58
|
-
|
59
45
|
test_index = single_test_tsdf.index
|
60
46
|
train_X, train_y = split_time_series_to_X_y(single_train_tsdf.copy())
|
61
47
|
test_X, _ = split_time_series_to_X_y(single_test_tsdf.copy())
|
@@ -116,6 +102,39 @@ class TabPFNWorker(ABC):
|
|
116
102
|
return result
|
117
103
|
|
118
104
|
|
105
|
+
def _reset_attempts(_details=None):
|
106
|
+
"""Convenience function to reset the attempt counter."""
|
107
|
+
_retry_attempts.set(0)
|
108
|
+
|
109
|
+
|
110
|
+
def _predict_giveup_mixed(exc: Exception) -> bool:
|
111
|
+
"""Determine whether to give up on a prediction call or not.
|
112
|
+
|
113
|
+
Returns:
|
114
|
+
True if the prediction call should be given up on, False otherwise.
|
115
|
+
"""
|
116
|
+
if _is_tabpfn_gcs_429(exc):
|
117
|
+
return False
|
118
|
+
|
119
|
+
# Stop after first retry for non-429
|
120
|
+
return _retry_attempts.get() >= 2
|
121
|
+
|
122
|
+
|
123
|
+
def _is_tabpfn_gcs_429(err: Exception) -> bool:
|
124
|
+
"""Determine if an error is a 429 error raised from TabPFN API
|
125
|
+
and relates to GCS 429 errors.
|
126
|
+
|
127
|
+
Returns:
|
128
|
+
True if the error is a 429 error raised from TabPFN API.
|
129
|
+
"""
|
130
|
+
markers = (
|
131
|
+
"TooManyRequests: 429",
|
132
|
+
"rateLimitExceeded",
|
133
|
+
"cloud.google.com/storage/docs/gcs429",
|
134
|
+
)
|
135
|
+
return any(m in str(err) for m in markers)
|
136
|
+
|
137
|
+
|
119
138
|
class TabPFNClient(TabPFNWorker):
|
120
139
|
def __init__(
|
121
140
|
self,
|
@@ -135,6 +154,53 @@ class TabPFNClient(TabPFNWorker):
|
|
135
154
|
|
136
155
|
super().__init__(config, num_workers)
|
137
156
|
|
157
|
+
def predict(
|
158
|
+
self,
|
159
|
+
train_tsdf: TimeSeriesDataFrame,
|
160
|
+
test_tsdf: TimeSeriesDataFrame,
|
161
|
+
):
|
162
|
+
# Run the predictions in parallel
|
163
|
+
with parallel_config(backend="threading"):
|
164
|
+
results = Parallel(
|
165
|
+
n_jobs=self.num_workers,
|
166
|
+
)(
|
167
|
+
delayed(self._prediction_routine)(
|
168
|
+
item_id,
|
169
|
+
train_tsdf.loc[item_id],
|
170
|
+
test_tsdf.loc[item_id],
|
171
|
+
)
|
172
|
+
for item_id in tqdm(train_tsdf.item_ids, desc="Predicting time series")
|
173
|
+
)
|
174
|
+
|
175
|
+
# Convert list to DataFrame
|
176
|
+
predictions = pd.concat(results)
|
177
|
+
|
178
|
+
# Sort predictions according to original item_ids order (important for MASE and WQL calculation)
|
179
|
+
predictions = predictions.loc[train_tsdf.item_ids]
|
180
|
+
|
181
|
+
return TimeSeriesDataFrame(predictions)
|
182
|
+
|
183
|
+
@backoff.on_exception(
|
184
|
+
backoff.expo,
|
185
|
+
Exception,
|
186
|
+
base=1,
|
187
|
+
factor=2,
|
188
|
+
max_tries=5,
|
189
|
+
jitter=backoff.full_jitter,
|
190
|
+
giveup=_predict_giveup_mixed,
|
191
|
+
on_success=_reset_attempts,
|
192
|
+
)
|
193
|
+
def _prediction_routine(
|
194
|
+
self,
|
195
|
+
item_id: str,
|
196
|
+
single_train_tsdf: TimeSeriesDataFrame,
|
197
|
+
single_test_tsdf: TimeSeriesDataFrame,
|
198
|
+
) -> pd.DataFrame:
|
199
|
+
# Increment attempt count at start of each try
|
200
|
+
_retry_attempts.set(_retry_attempts.get() + 1)
|
201
|
+
|
202
|
+
return super()._prediction_routine(item_id, single_train_tsdf, single_test_tsdf)
|
203
|
+
|
138
204
|
def _get_tabpfn_engine(self):
|
139
205
|
from tabpfn_client import TabPFNRegressor
|
140
206
|
|
@@ -84,7 +84,11 @@ class TestTabPFNTimeSeriesPredictor(unittest.TestCase):
|
|
84
84
|
_ = TabPFNTimeSeriesPredictor(tabpfn_mode=TabPFNMode.LOCAL)
|
85
85
|
|
86
86
|
@patch("torch.cuda.is_available", return_value=True)
|
87
|
-
|
87
|
+
@patch("torch.cuda.device_count", return_value=1)
|
88
|
+
@patch("tabpfn_time_series.tabpfn_worker.LocalTabPFN._download_model")
|
89
|
+
def test_init_with_local_mode_with_gpu(
|
90
|
+
self, mock_download, mock_device_count, mock_is_available
|
91
|
+
):
|
88
92
|
"""Test that the predictor initializes with LOCAL mode"""
|
89
93
|
predictor = TabPFNTimeSeriesPredictor(tabpfn_mode=TabPFNMode.LOCAL)
|
90
94
|
self.assertIsNotNone(predictor.tabpfn_worker)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
version = 1
|
2
|
-
revision =
|
2
|
+
revision = 3
|
3
3
|
requires-python = ">=3.10"
|
4
4
|
resolution-markers = [
|
5
5
|
"python_full_version >= '3.13' and sys_platform == 'linux'",
|
@@ -256,6 +256,15 @@ wheels = [
|
|
256
256
|
{ url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" },
|
257
257
|
]
|
258
258
|
|
259
|
+
[[package]]
|
260
|
+
name = "backoff"
|
261
|
+
version = "2.2.1"
|
262
|
+
source = { registry = "https://pypi.org/simple" }
|
263
|
+
sdist = { url = "https://files.pythonhosted.org/packages/47/d7/5bbeb12c44d7c4f2fb5b56abce497eb5ed9f34d85701de869acedd602619/backoff-2.2.1.tar.gz", hash = "sha256:03f829f5bb1923180821643f8753b0502c3b682293992485b0eef2807afa5cba", size = 17001, upload-time = "2022-10-05T19:19:32.061Z" }
|
264
|
+
wheels = [
|
265
|
+
{ url = "https://files.pythonhosted.org/packages/df/73/b6e24bd22e6720ca8ee9a85a0c4a2971af8497d8f3193fa05390cbd46e09/backoff-2.2.1-py3-none-any.whl", hash = "sha256:63579f9a0628e06278f7e47b7d7d5b6ce20dc65c5e96a6f3ca99a6adca0396e8", size = 15148, upload-time = "2022-10-05T19:19:30.546Z" },
|
266
|
+
]
|
267
|
+
|
259
268
|
[[package]]
|
260
269
|
name = "backports-tarfile"
|
261
270
|
version = "1.2.0"
|
@@ -612,6 +621,15 @@ wheels = [
|
|
612
621
|
{ url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" },
|
613
622
|
]
|
614
623
|
|
624
|
+
[[package]]
|
625
|
+
name = "distro"
|
626
|
+
version = "1.9.0"
|
627
|
+
source = { registry = "https://pypi.org/simple" }
|
628
|
+
sdist = { url = "https://files.pythonhosted.org/packages/fc/f8/98eea607f65de6527f8a2e8885fc8015d3e6f5775df186e443e0964a11c3/distro-1.9.0.tar.gz", hash = "sha256:2fa77c6fd8940f116ee1d6b94a2f90b13b5ea8d019b98bc8bafdcabcdd9bdbed", size = 60722, upload-time = "2023-12-24T09:54:32.31Z" }
|
629
|
+
wheels = [
|
630
|
+
{ url = "https://files.pythonhosted.org/packages/12/b3/231ffd4ab1fc9d679809f356cebee130ac7daa00d6d6f3206dd4fd137e9e/distro-1.9.0-py3-none-any.whl", hash = "sha256:7bffd925d65168f85027d8da9af6bddab658135b840670a223589bc0c8ef02b2", size = 20277, upload-time = "2023-12-24T09:54:30.421Z" },
|
631
|
+
]
|
632
|
+
|
615
633
|
[[package]]
|
616
634
|
name = "docutils"
|
617
635
|
version = "0.21.2"
|
@@ -630,6 +648,15 @@ wheels = [
|
|
630
648
|
{ url = "https://files.pythonhosted.org/packages/87/62/9773de14fe6c45c23649e98b83231fffd7b9892b6cf863251dc2afa73643/einops-0.8.1-py3-none-any.whl", hash = "sha256:919387eb55330f5757c6bea9165c5ff5cfe63a642682ea788a6d472576d81737", size = 64359, upload-time = "2025-02-09T03:17:01.998Z" },
|
631
649
|
]
|
632
650
|
|
651
|
+
[[package]]
|
652
|
+
name = "eval-type-backport"
|
653
|
+
version = "0.2.2"
|
654
|
+
source = { registry = "https://pypi.org/simple" }
|
655
|
+
sdist = { url = "https://files.pythonhosted.org/packages/30/ea/8b0ac4469d4c347c6a385ff09dc3c048c2d021696664e26c7ee6791631b5/eval_type_backport-0.2.2.tar.gz", hash = "sha256:f0576b4cf01ebb5bd358d02314d31846af5e07678387486e2c798af0e7d849c1", size = 9079, upload-time = "2024-12-21T20:09:46.005Z" }
|
656
|
+
wheels = [
|
657
|
+
{ url = "https://files.pythonhosted.org/packages/ce/31/55cd413eaccd39125368be33c46de24a1f639f2e12349b0361b4678f3915/eval_type_backport-0.2.2-py3-none-any.whl", hash = "sha256:cb6ad7c393517f476f96d456d0412ea80f0a8cf96f6892834cd9340149111b0a", size = 5830, upload-time = "2024-12-21T20:09:44.175Z" },
|
658
|
+
]
|
659
|
+
|
633
660
|
[[package]]
|
634
661
|
name = "exceptiongroup"
|
635
662
|
version = "1.3.0"
|
@@ -662,11 +689,11 @@ wheels = [
|
|
662
689
|
|
663
690
|
[[package]]
|
664
691
|
name = "filelock"
|
665
|
-
version = "3.
|
692
|
+
version = "3.19.1"
|
666
693
|
source = { registry = "https://pypi.org/simple" }
|
667
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
694
|
+
sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload-time = "2025-08-14T16:56:03.016Z" }
|
668
695
|
wheels = [
|
669
|
-
{ url = "https://files.pythonhosted.org/packages/
|
696
|
+
{ url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload-time = "2025-08-14T16:56:01.633Z" },
|
670
697
|
]
|
671
698
|
|
672
699
|
[[package]]
|
@@ -2173,11 +2200,11 @@ wheels = [
|
|
2173
2200
|
|
2174
2201
|
[[package]]
|
2175
2202
|
name = "platformdirs"
|
2176
|
-
version = "4.
|
2203
|
+
version = "4.4.0"
|
2177
2204
|
source = { registry = "https://pypi.org/simple" }
|
2178
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
2205
|
+
sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634, upload-time = "2025-08-26T14:32:04.268Z" }
|
2179
2206
|
wheels = [
|
2180
|
-
{ url = "https://files.pythonhosted.org/packages/
|
2207
|
+
{ url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654, upload-time = "2025-08-26T14:32:02.735Z" },
|
2181
2208
|
]
|
2182
2209
|
|
2183
2210
|
[[package]]
|
@@ -2189,6 +2216,23 @@ wheels = [
|
|
2189
2216
|
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
|
2190
2217
|
]
|
2191
2218
|
|
2219
|
+
[[package]]
|
2220
|
+
name = "posthog"
|
2221
|
+
version = "6.7.5"
|
2222
|
+
source = { registry = "https://pypi.org/simple" }
|
2223
|
+
dependencies = [
|
2224
|
+
{ name = "backoff" },
|
2225
|
+
{ name = "distro" },
|
2226
|
+
{ name = "python-dateutil" },
|
2227
|
+
{ name = "requests" },
|
2228
|
+
{ name = "six" },
|
2229
|
+
{ name = "typing-extensions" },
|
2230
|
+
]
|
2231
|
+
sdist = { url = "https://files.pythonhosted.org/packages/1f/f3/d9055bcd190980730bdc600318b34290e85fcb0afb1e31f83cdc33f92615/posthog-6.7.5.tar.gz", hash = "sha256:f4f32b4a4b0df531ae8f80f255a33a49e8880c8c1b62712e6b640535e33a905f", size = 118558, upload-time = "2025-09-16T12:40:34.431Z" }
|
2232
|
+
wheels = [
|
2233
|
+
{ url = "https://files.pythonhosted.org/packages/42/b4/b40f8467252b4ff481e54a9767b211b4ff83114e6d0b6f481852d0ef3e46/posthog-6.7.5-py3-none-any.whl", hash = "sha256:95b00f915365939e63fa183635bad1caaf89cf4a24b63c8bb6983f2a22a56cb3", size = 136766, upload-time = "2025-09-16T12:40:32.741Z" },
|
2234
|
+
]
|
2235
|
+
|
2192
2236
|
[[package]]
|
2193
2237
|
name = "pre-commit"
|
2194
2238
|
version = "4.2.0"
|
@@ -2556,6 +2600,20 @@ wheels = [
|
|
2556
2600
|
{ url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" },
|
2557
2601
|
]
|
2558
2602
|
|
2603
|
+
[[package]]
|
2604
|
+
name = "pydantic-settings"
|
2605
|
+
version = "2.10.1"
|
2606
|
+
source = { registry = "https://pypi.org/simple" }
|
2607
|
+
dependencies = [
|
2608
|
+
{ name = "pydantic" },
|
2609
|
+
{ name = "python-dotenv" },
|
2610
|
+
{ name = "typing-inspection" },
|
2611
|
+
]
|
2612
|
+
sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" }
|
2613
|
+
wheels = [
|
2614
|
+
{ url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" },
|
2615
|
+
]
|
2616
|
+
|
2559
2617
|
[[package]]
|
2560
2618
|
name = "pygments"
|
2561
2619
|
version = "2.19.2"
|
@@ -2806,7 +2864,7 @@ wheels = [
|
|
2806
2864
|
|
2807
2865
|
[[package]]
|
2808
2866
|
name = "requests"
|
2809
|
-
version = "2.32.
|
2867
|
+
version = "2.32.5"
|
2810
2868
|
source = { registry = "https://pypi.org/simple" }
|
2811
2869
|
dependencies = [
|
2812
2870
|
{ name = "certifi" },
|
@@ -2814,9 +2872,9 @@ dependencies = [
|
|
2814
2872
|
{ name = "idna" },
|
2815
2873
|
{ name = "urllib3" },
|
2816
2874
|
]
|
2817
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
2875
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" }
|
2818
2876
|
wheels = [
|
2819
|
-
{ url = "https://files.pythonhosted.org/packages/
|
2877
|
+
{ url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" },
|
2820
2878
|
]
|
2821
2879
|
|
2822
2880
|
[[package]]
|
@@ -3357,25 +3415,30 @@ wheels = [
|
|
3357
3415
|
|
3358
3416
|
[[package]]
|
3359
3417
|
name = "tabpfn"
|
3360
|
-
version = "2.
|
3418
|
+
version = "2.2.1"
|
3361
3419
|
source = { registry = "https://pypi.org/simple" }
|
3362
3420
|
dependencies = [
|
3363
3421
|
{ name = "einops" },
|
3422
|
+
{ name = "eval-type-backport" },
|
3364
3423
|
{ name = "huggingface-hub" },
|
3424
|
+
{ name = "joblib" },
|
3365
3425
|
{ name = "pandas" },
|
3426
|
+
{ name = "pydantic" },
|
3427
|
+
{ name = "pydantic-settings" },
|
3366
3428
|
{ name = "scikit-learn" },
|
3367
3429
|
{ name = "scipy" },
|
3430
|
+
{ name = "tabpfn-common-utils" },
|
3368
3431
|
{ name = "torch" },
|
3369
3432
|
{ name = "typing-extensions" },
|
3370
3433
|
]
|
3371
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
3434
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e5/8b/ab7e3c71fc5fb6be61295ca1fb880b09df567257e9e4228d77cd79a4e1ec/tabpfn-2.2.1.tar.gz", hash = "sha256:706c03c3d3dc478118561761c29fa95727b6e239671922c4c40a8e4b3cc28fbf", size = 200487, upload-time = "2025-09-17T10:42:15.649Z" }
|
3372
3435
|
wheels = [
|
3373
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3436
|
+
{ url = "https://files.pythonhosted.org/packages/91/e9/085c60d5e447083ac6705b7b8bfac90773eb4191c00ddc70607f4d8b339b/tabpfn-2.2.1-py3-none-any.whl", hash = "sha256:9aa3a0df8ecebcae5f426b1fec9bb2e2a690880bc8ad079191e8d959bf0f157b", size = 173723, upload-time = "2025-09-17T10:42:14.435Z" },
|
3374
3437
|
]
|
3375
3438
|
|
3376
3439
|
[[package]]
|
3377
3440
|
name = "tabpfn-client"
|
3378
|
-
version = "0.1.
|
3441
|
+
version = "0.1.9"
|
3379
3442
|
source = { registry = "https://pypi.org/simple" }
|
3380
3443
|
dependencies = [
|
3381
3444
|
{ name = "httpx" },
|
@@ -3385,17 +3448,38 @@ dependencies = [
|
|
3385
3448
|
{ name = "scikit-learn" },
|
3386
3449
|
{ name = "sseclient-py" },
|
3387
3450
|
{ name = "tqdm" },
|
3451
|
+
{ name = "typing-extensions" },
|
3388
3452
|
{ name = "xxhash" },
|
3389
3453
|
]
|
3390
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
3454
|
+
sdist = { url = "https://files.pythonhosted.org/packages/50/8f/1bbca5db6561bc54f91ce41de99835a962a7a16c53bcfae0a7c5593f16a2/tabpfn_client-0.1.9.tar.gz", hash = "sha256:b68b27154686c37119a53b5063de79b45f4c0074fddf47b8813c5cd738b723cf", size = 1877401, upload-time = "2025-07-28T15:09:43.134Z" }
|
3455
|
+
wheels = [
|
3456
|
+
{ url = "https://files.pythonhosted.org/packages/67/a5/82be418a16d7330eac880659b1ce7fbcff5c976ff79240b1446235e4ed40/tabpfn_client-0.1.9-py3-none-any.whl", hash = "sha256:51826f3a464b2d52d9c2772a6171c55a4c0ab22d9693f5bd2eb9fd5b0fd24640", size = 1895907, upload-time = "2025-07-28T15:09:41.605Z" },
|
3457
|
+
]
|
3458
|
+
|
3459
|
+
[[package]]
|
3460
|
+
name = "tabpfn-common-utils"
|
3461
|
+
version = "0.2.2"
|
3462
|
+
source = { registry = "https://pypi.org/simple" }
|
3463
|
+
dependencies = [
|
3464
|
+
{ name = "filelock" },
|
3465
|
+
{ name = "numpy" },
|
3466
|
+
{ name = "pandas" },
|
3467
|
+
{ name = "platformdirs" },
|
3468
|
+
{ name = "posthog" },
|
3469
|
+
{ name = "requests" },
|
3470
|
+
{ name = "scikit-learn" },
|
3471
|
+
{ name = "typing-extensions" },
|
3472
|
+
]
|
3473
|
+
sdist = { url = "https://files.pythonhosted.org/packages/cf/0a/dae8031fd9a478c0b6b682f1585d2e4e288727f569eb3316af3b981d1ec0/tabpfn_common_utils-0.2.2.tar.gz", hash = "sha256:d4a3b9acd7d36502ac75bfce549acda26aafbe9c1e7617052fbe1932c211d174", size = 1927582, upload-time = "2025-10-02T11:54:59.704Z" }
|
3391
3474
|
wheels = [
|
3392
|
-
{ url = "https://files.pythonhosted.org/packages/
|
3475
|
+
{ url = "https://files.pythonhosted.org/packages/7a/be/6307e7f8c55963aa74c72dbbe0e360b62a688a484f73227adf7cc1ddde02/tabpfn_common_utils-0.2.2-py3-none-any.whl", hash = "sha256:9ac650c252be49c34d12d210eceeeb3d9cdc7ac5396df7426e5b86b93ae5429e", size = 32104, upload-time = "2025-10-02T11:54:57.702Z" },
|
3393
3476
|
]
|
3394
3477
|
|
3395
3478
|
[[package]]
|
3396
3479
|
name = "tabpfn-time-series"
|
3397
3480
|
source = { editable = "." }
|
3398
3481
|
dependencies = [
|
3482
|
+
{ name = "backoff" },
|
3399
3483
|
{ name = "datasets" },
|
3400
3484
|
{ name = "gluonts" },
|
3401
3485
|
{ name = "pandas" },
|
@@ -3404,6 +3488,7 @@ dependencies = [
|
|
3404
3488
|
{ name = "statsmodels" },
|
3405
3489
|
{ name = "tabpfn" },
|
3406
3490
|
{ name = "tabpfn-client" },
|
3491
|
+
{ name = "tabpfn-common-utils" },
|
3407
3492
|
{ name = "tqdm" },
|
3408
3493
|
]
|
3409
3494
|
|
@@ -3424,6 +3509,7 @@ dev = [
|
|
3424
3509
|
|
3425
3510
|
[package.metadata]
|
3426
3511
|
requires-dist = [
|
3512
|
+
{ name = "backoff", specifier = ">=2.2.1" },
|
3427
3513
|
{ name = "build", marker = "extra == 'dev'" },
|
3428
3514
|
{ name = "datasets", specifier = ">=4.0" },
|
3429
3515
|
{ name = "gluonts", specifier = ">=0.16.0" },
|
@@ -3441,6 +3527,7 @@ requires-dist = [
|
|
3441
3527
|
{ name = "submitit", marker = "extra == 'dev'", specifier = ">=1.5.2" },
|
3442
3528
|
{ name = "tabpfn", specifier = ">=2.0.9" },
|
3443
3529
|
{ name = "tabpfn-client", specifier = ">=0.1.7" },
|
3530
|
+
{ name = "tabpfn-common-utils", extras = ["telemetry-interactive"], specifier = ">=0.2.2" },
|
3444
3531
|
{ name = "tqdm" },
|
3445
3532
|
{ name = "twine", marker = "extra == 'dev'" },
|
3446
3533
|
{ name = "wandb", marker = "extra == 'dev'", specifier = ">=0.19.8" },
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/data_preparation.py
RENAMED
File without changes
|
File without changes
|
{tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/__init__.py
RENAMED
File without changes
|
{tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/auto_features.py
RENAMED
File without changes
|
{tabpfn_time_series-1.0.3 → tabpfn_time_series-1.0.5}/tabpfn_time_series/features/basic_features.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|