1 |
commit: b4aec8ba0d4cce0ec3f22c735ba4d0c2d0f42087 |
2 |
Author: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jan 19 19:48:27 2020 +0000 |
4 |
Commit: Pacho Ramos <pacho <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Jan 19 19:54:11 2020 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b4aec8ba |
7 |
|
8 |
(cat_pn): Drop old |
9 |
|
10 |
Package-Manager: Portage-2.3.84, Repoman-2.3.20 |
11 |
Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org> |
12 |
|
13 |
dev-python/pandas/Manifest | 2 - |
14 |
dev-python/pandas/files/pandas-0.19.1-gapi.patch | 27 -- |
15 |
dev-python/pandas/files/pandas-0.19.1-seqf.patch | 357 --------------------- |
16 |
.../files/pandas-0.23.4-skip-broken-test.patch | 24 -- |
17 |
dev-python/pandas/pandas-0.19.1.ebuild | 159 --------- |
18 |
dev-python/pandas/pandas-0.23.4.ebuild | 169 ---------- |
19 |
6 files changed, 738 deletions(-) |
20 |
|
21 |
diff --git a/dev-python/pandas/Manifest b/dev-python/pandas/Manifest |
22 |
index c5268587c92..979d04182ba 100644 |
23 |
--- a/dev-python/pandas/Manifest |
24 |
+++ b/dev-python/pandas/Manifest |
25 |
@@ -1,3 +1 @@ |
26 |
-DIST pandas-0.19.1.tar.gz 8360233 BLAKE2B 82611ca1a3e3169ac2d084f4dcd9c4d4d74e9e9c9913a41acad48ae68a208a884dfd877445a7d658a7ff098ef383cedae7e79a4900baa8d56c032ce9aaad96eb SHA512 6451990a7fae8c6db8ab0b014a13b4f1828754d3998f13c17b111f891fb9fd23f8e09b907623096dfa55668c42298eee1373210a9fddb95f56dd7d552b964e6f |
27 |
-DIST pandas-0.23.4.tar.gz 10490077 BLAKE2B 28a78860e0aa5de8def7bb529fc98b9121a516b7fd7620e31e000ae14217165e6677ce26b56da0b9c603930ab1304725c644426a135d8f9b2a84921b88f3d23d SHA512 0c89db820a49e0cfb9764e64589ff9af819f9a53c01bd0254cd1b6dbd1e9fd452b2ff7c7330ede7623c7576589113e831a19a57c735562b55f90506df15805b9 |
28 |
DIST pandas-0.24.2.tar.gz 11837693 BLAKE2B 3762e94554a3ae3c803c9a412c5c551c15a9fbf15cb05633f7d1b0ccbfddc646f68f0306666e688a83a4495b0537cea2fec671157f5a63aaa5f9cad6b791261e SHA512 0795c6bb8a47a511853558ea59d371b4540ec175f213cfba4ad2361d6481fea5d3f7074bb4961c32f2f0080a72d7436a9b3706f5cc692074f98d83bfc587fd15 |
29 |
|
30 |
diff --git a/dev-python/pandas/files/pandas-0.19.1-gapi.patch b/dev-python/pandas/files/pandas-0.19.1-gapi.patch |
31 |
deleted file mode 100644 |
32 |
index 7a0456fdacf..00000000000 |
33 |
--- a/dev-python/pandas/files/pandas-0.19.1-gapi.patch |
34 |
+++ /dev/null |
35 |
@@ -1,27 +0,0 @@ |
36 |
-From 1d6dbb41b26a39121ec8c4f19f5da78bb0ab4af7 Mon Sep 17 00:00:00 2001 |
37 |
-From: Jeff Reback <jeff@××××××.net> |
38 |
-Date: Sat, 12 Nov 2016 12:44:06 -0500 |
39 |
-Subject: [PATCH] TST: skip test_gbq.test_upload_data_if_table_exists_replace |
40 |
- for now |
41 |
- |
42 |
---- |
43 |
- pandas/io/tests/test_gbq.py | 3 +++ |
44 |
- 1 file changed, 3 insertions(+) |
45 |
- |
46 |
-diff --git a/pandas/io/tests/test_gbq.py b/pandas/io/tests/test_gbq.py |
47 |
-index cca1580b8..f6ff35a6d 100644 |
48 |
---- a/pandas/io/tests/test_gbq.py |
49 |
-+++ b/pandas/io/tests/test_gbq.py |
50 |
-@@ -824,6 +824,9 @@ class TestToGBQIntegration(tm.TestCase): |
51 |
- private_key=_get_private_key_path()) |
52 |
- |
53 |
- def test_upload_data_if_table_exists_replace(self): |
54 |
-+ |
55 |
-+ raise nose.SkipTest("buggy test") |
56 |
-+ |
57 |
- destination_table = DESTINATION_TABLE + "4" |
58 |
- |
59 |
- test_size = 10 |
60 |
--- |
61 |
-2.11.0 |
62 |
- |
63 |
|
64 |
diff --git a/dev-python/pandas/files/pandas-0.19.1-seqf.patch b/dev-python/pandas/files/pandas-0.19.1-seqf.patch |
65 |
deleted file mode 100644 |
66 |
index c82c14ff8fd..00000000000 |
67 |
--- a/dev-python/pandas/files/pandas-0.19.1-seqf.patch |
68 |
+++ /dev/null |
69 |
@@ -1,357 +0,0 @@ |
70 |
-From f8bd08e9c2fc6365980f41b846bbae4b40f08b83 Mon Sep 17 00:00:00 2001 |
71 |
-From: Jeff Reback <jeff@××××××.net> |
72 |
-Date: Sat, 12 Nov 2016 10:58:54 -0500 |
73 |
-Subject: [PATCH] BUG: segfault manifesting with dateutil=2.6 w.r.t. replace |
74 |
- when timezones are present |
75 |
- |
76 |
-closes #14621 |
77 |
- |
78 |
-Author: Jeff Reback <jeff@××××××.net> |
79 |
- |
80 |
-Closes #14631 from jreback/replace and squashes the following commits: |
81 |
- |
82 |
-3f95042 [Jeff Reback] BUG: segfault manifesting with dateutil=2.6 w.r.t. replace when timezones are present |
83 |
---- |
84 |
- ci/requirements-3.5_OSX.pip | 2 +- |
85 |
- doc/source/whatsnew/v0.19.2.txt | 3 ++ |
86 |
- pandas/tseries/offsets.py | 1 + |
87 |
- pandas/tseries/tests/test_offsets.py | 20 ++++--- |
88 |
- pandas/tseries/tests/test_timezones.py | 89 +++++++++++++++++++++++++++++-- |
89 |
- pandas/tseries/tests/test_tslib.py | 5 +- |
90 |
- pandas/tslib.pyx | 95 ++++++++++++++++++++++++++++------ |
91 |
- 7 files changed, 188 insertions(+), 27 deletions(-) |
92 |
- |
93 |
-diff --git a/pandas/tseries/offsets.py b/pandas/tseries/offsets.py |
94 |
-index 051cc8aa4..2e3852a7e 100644 |
95 |
---- a/pandas/tseries/offsets.py |
96 |
-+++ b/pandas/tseries/offsets.py |
97 |
-@@ -68,6 +68,7 @@ def apply_wraps(func): |
98 |
- other = other.tz_localize(None) |
99 |
- |
100 |
- result = func(self, other) |
101 |
-+ |
102 |
- if self._adjust_dst: |
103 |
- result = tslib._localize_pydatetime(result, tz) |
104 |
- |
105 |
-diff --git a/pandas/tseries/tests/test_offsets.py b/pandas/tseries/tests/test_offsets.py |
106 |
-index 1735ac4e2..768e9212e 100644 |
107 |
---- a/pandas/tseries/tests/test_offsets.py |
108 |
-+++ b/pandas/tseries/tests/test_offsets.py |
109 |
-@@ -1,4 +1,5 @@ |
110 |
- import os |
111 |
-+from distutils.version import LooseVersion |
112 |
- from datetime import date, datetime, timedelta |
113 |
- from dateutil.relativedelta import relativedelta |
114 |
- from pandas.compat import range, iteritems |
115 |
-@@ -4851,6 +4852,7 @@ class TestDST(tm.TestCase): |
116 |
- |
117 |
- def _test_offset(self, offset_name, offset_n, tstart, expected_utc_offset): |
118 |
- offset = DateOffset(**{offset_name: offset_n}) |
119 |
-+ |
120 |
- t = tstart + offset |
121 |
- if expected_utc_offset is not None: |
122 |
- self.assertTrue(get_utc_offset_hours(t) == expected_utc_offset) |
123 |
-@@ -4890,17 +4892,23 @@ class TestDST(tm.TestCase): |
124 |
- return Timestamp(string + offset_string).tz_convert(tz) |
125 |
- |
126 |
- def test_fallback_plural(self): |
127 |
-- """test moving from daylight savings to standard time""" |
128 |
-+ # test moving from daylight savings to standard time |
129 |
-+ import dateutil |
130 |
- for tz, utc_offsets in self.timezone_utc_offsets.items(): |
131 |
- hrs_pre = utc_offsets['utc_offset_daylight'] |
132 |
- hrs_post = utc_offsets['utc_offset_standard'] |
133 |
-- self._test_all_offsets( |
134 |
-- n=3, tstart=self._make_timestamp(self.ts_pre_fallback, |
135 |
-- hrs_pre, tz), |
136 |
-- expected_utc_offset=hrs_post) |
137 |
-+ |
138 |
-+ if dateutil.__version__ != LooseVersion('2.6.0'): |
139 |
-+ # buggy ambiguous behavior in 2.6.0 |
140 |
-+ # GH 14621 |
141 |
-+ # https://github.com/dateutil/dateutil/issues/321 |
142 |
-+ self._test_all_offsets( |
143 |
-+ n=3, tstart=self._make_timestamp(self.ts_pre_fallback, |
144 |
-+ hrs_pre, tz), |
145 |
-+ expected_utc_offset=hrs_post) |
146 |
- |
147 |
- def test_springforward_plural(self): |
148 |
-- """test moving from standard to daylight savings""" |
149 |
-+ # test moving from standard to daylight savings |
150 |
- for tz, utc_offsets in self.timezone_utc_offsets.items(): |
151 |
- hrs_pre = utc_offsets['utc_offset_standard'] |
152 |
- hrs_post = utc_offsets['utc_offset_daylight'] |
153 |
-diff --git a/pandas/tseries/tests/test_timezones.py b/pandas/tseries/tests/test_timezones.py |
154 |
-index 00e8ee631..db8cda5c7 100644 |
155 |
---- a/pandas/tseries/tests/test_timezones.py |
156 |
-+++ b/pandas/tseries/tests/test_timezones.py |
157 |
-@@ -4,7 +4,7 @@ import nose |
158 |
- |
159 |
- import numpy as np |
160 |
- import pytz |
161 |
-- |
162 |
-+from distutils.version import LooseVersion |
163 |
- from pandas.types.dtypes import DatetimeTZDtype |
164 |
- from pandas import (Index, Series, DataFrame, isnull, Timestamp) |
165 |
- |
166 |
-@@ -518,8 +518,12 @@ class TestTimeZoneSupportPytz(tm.TestCase): |
167 |
- |
168 |
- times = date_range("2013-10-26 23:00", "2013-10-27 01:00", freq="H", |
169 |
- tz=tz, ambiguous='infer') |
170 |
-- self.assertEqual(times[0], Timestamp('2013-10-26 23:00', tz=tz)) |
171 |
-- self.assertEqual(times[-1], Timestamp('2013-10-27 01:00', tz=tz)) |
172 |
-+ self.assertEqual(times[0], Timestamp('2013-10-26 23:00', tz=tz, |
173 |
-+ freq="H")) |
174 |
-+ if dateutil.__version__ != LooseVersion('2.6.0'): |
175 |
-+ # GH 14621 |
176 |
-+ self.assertEqual(times[-1], Timestamp('2013-10-27 01:00', tz=tz, |
177 |
-+ freq="H")) |
178 |
- |
179 |
- def test_ambiguous_nat(self): |
180 |
- tz = self.tz('US/Eastern') |
181 |
-@@ -1163,6 +1167,85 @@ class TestTimeZones(tm.TestCase): |
182 |
- def setUp(self): |
183 |
- tm._skip_if_no_pytz() |
184 |
- |
185 |
-+ def test_replace(self): |
186 |
-+ # GH 14621 |
187 |
-+ # GH 7825 |
188 |
-+ # replacing datetime components with and w/o presence of a timezone |
189 |
-+ dt = Timestamp('2016-01-01 09:00:00') |
190 |
-+ result = dt.replace(hour=0) |
191 |
-+ expected = Timestamp('2016-01-01 00:00:00') |
192 |
-+ self.assertEqual(result, expected) |
193 |
-+ |
194 |
-+ for tz in self.timezones: |
195 |
-+ dt = Timestamp('2016-01-01 09:00:00', tz=tz) |
196 |
-+ result = dt.replace(hour=0) |
197 |
-+ expected = Timestamp('2016-01-01 00:00:00', tz=tz) |
198 |
-+ self.assertEqual(result, expected) |
199 |
-+ |
200 |
-+ # we preserve nanoseconds |
201 |
-+ dt = Timestamp('2016-01-01 09:00:00.000000123', tz=tz) |
202 |
-+ result = dt.replace(hour=0) |
203 |
-+ expected = Timestamp('2016-01-01 00:00:00.000000123', tz=tz) |
204 |
-+ self.assertEqual(result, expected) |
205 |
-+ |
206 |
-+ # test all |
207 |
-+ dt = Timestamp('2016-01-01 09:00:00.000000123', tz=tz) |
208 |
-+ result = dt.replace(year=2015, month=2, day=2, hour=0, minute=5, |
209 |
-+ second=5, microsecond=5, nanosecond=5) |
210 |
-+ expected = Timestamp('2015-02-02 00:05:05.000005005', tz=tz) |
211 |
-+ self.assertEqual(result, expected) |
212 |
-+ |
213 |
-+ # error |
214 |
-+ def f(): |
215 |
-+ dt.replace(foo=5) |
216 |
-+ self.assertRaises(ValueError, f) |
217 |
-+ |
218 |
-+ def f(): |
219 |
-+ dt.replace(hour=0.1) |
220 |
-+ self.assertRaises(ValueError, f) |
221 |
-+ |
222 |
-+ # assert conversion to naive is the same as replacing tzinfo with None |
223 |
-+ dt = Timestamp('2013-11-03 01:59:59.999999-0400', tz='US/Eastern') |
224 |
-+ self.assertEqual(dt.tz_localize(None), dt.replace(tzinfo=None)) |
225 |
-+ |
226 |
-+ def test_ambiguous_compat(self): |
227 |
-+ # validate that pytz and dateutil are compat for dst |
228 |
-+ # when the transition happens |
229 |
-+ tm._skip_if_no_dateutil() |
230 |
-+ tm._skip_if_no_pytz() |
231 |
-+ |
232 |
-+ pytz_zone = 'Europe/London' |
233 |
-+ dateutil_zone = 'dateutil/Europe/London' |
234 |
-+ result_pytz = (Timestamp('2013-10-27 01:00:00') |
235 |
-+ .tz_localize(pytz_zone, ambiguous=0)) |
236 |
-+ result_dateutil = (Timestamp('2013-10-27 01:00:00') |
237 |
-+ .tz_localize(dateutil_zone, ambiguous=0)) |
238 |
-+ self.assertEqual(result_pytz.value, result_dateutil.value) |
239 |
-+ self.assertEqual(result_pytz.value, 1382835600000000000) |
240 |
-+ |
241 |
-+ # dateutil 2.6 buggy w.r.t. ambiguous=0 |
242 |
-+ if dateutil.__version__ != LooseVersion('2.6.0'): |
243 |
-+ # GH 14621 |
244 |
-+ # https://github.com/dateutil/dateutil/issues/321 |
245 |
-+ self.assertEqual(result_pytz.to_pydatetime().tzname(), |
246 |
-+ result_dateutil.to_pydatetime().tzname()) |
247 |
-+ self.assertEqual(str(result_pytz), str(result_dateutil)) |
248 |
-+ |
249 |
-+ # 1 hour difference |
250 |
-+ result_pytz = (Timestamp('2013-10-27 01:00:00') |
251 |
-+ .tz_localize(pytz_zone, ambiguous=1)) |
252 |
-+ result_dateutil = (Timestamp('2013-10-27 01:00:00') |
253 |
-+ .tz_localize(dateutil_zone, ambiguous=1)) |
254 |
-+ self.assertEqual(result_pytz.value, result_dateutil.value) |
255 |
-+ self.assertEqual(result_pytz.value, 1382832000000000000) |
256 |
-+ |
257 |
-+ # dateutil < 2.6 is buggy w.r.t. ambiguous timezones |
258 |
-+ if dateutil.__version__ > LooseVersion('2.5.3'): |
259 |
-+ # GH 14621 |
260 |
-+ self.assertEqual(str(result_pytz), str(result_dateutil)) |
261 |
-+ self.assertEqual(result_pytz.to_pydatetime().tzname(), |
262 |
-+ result_dateutil.to_pydatetime().tzname()) |
263 |
-+ |
264 |
- def test_index_equals_with_tz(self): |
265 |
- left = date_range('1/1/2011', periods=100, freq='H', tz='utc') |
266 |
- right = date_range('1/1/2011', periods=100, freq='H', tz='US/Eastern') |
267 |
-diff --git a/pandas/tseries/tests/test_tslib.py b/pandas/tseries/tests/test_tslib.py |
268 |
-index 21cfe84f1..b45f867be 100644 |
269 |
---- a/pandas/tseries/tests/test_tslib.py |
270 |
-+++ b/pandas/tseries/tests/test_tslib.py |
271 |
-@@ -327,8 +327,9 @@ class TestTimestamp(tm.TestCase): |
272 |
- |
273 |
- # dateutil zone change (only matters for repr) |
274 |
- import dateutil |
275 |
-- if dateutil.__version__ >= LooseVersion( |
276 |
-- '2.3') and dateutil.__version__ <= LooseVersion('2.4.0'): |
277 |
-+ if (dateutil.__version__ >= LooseVersion('2.3') and |
278 |
-+ (dateutil.__version__ <= LooseVersion('2.4.0') or |
279 |
-+ dateutil.__version__ >= LooseVersion('2.6.0'))): |
280 |
- timezones = ['UTC', 'Asia/Tokyo', 'US/Eastern', |
281 |
- 'dateutil/US/Pacific'] |
282 |
- else: |
283 |
-diff --git a/pandas/tslib.pyx b/pandas/tslib.pyx |
284 |
-index d4eaaa0b5..685de214c 100644 |
285 |
---- a/pandas/tslib.pyx |
286 |
-+++ b/pandas/tslib.pyx |
287 |
-@@ -98,6 +98,7 @@ except NameError: # py3 |
288 |
- cdef inline object create_timestamp_from_ts( |
289 |
- int64_t value, pandas_datetimestruct dts, |
290 |
- object tz, object freq): |
291 |
-+ """ convenience routine to construct a Timestamp from its parts """ |
292 |
- cdef _Timestamp ts_base |
293 |
- ts_base = _Timestamp.__new__(Timestamp, dts.year, dts.month, |
294 |
- dts.day, dts.hour, dts.min, |
295 |
-@@ -112,6 +113,7 @@ cdef inline object create_timestamp_from_ts( |
296 |
- cdef inline object create_datetime_from_ts( |
297 |
- int64_t value, pandas_datetimestruct dts, |
298 |
- object tz, object freq): |
299 |
-+ """ convenience routine to construct a datetime.datetime from its parts """ |
300 |
- return datetime(dts.year, dts.month, dts.day, dts.hour, |
301 |
- dts.min, dts.sec, dts.us, tz) |
302 |
- |
303 |
-@@ -378,7 +380,6 @@ class Timestamp(_Timestamp): |
304 |
- # Mixing pydatetime positional and keyword arguments is forbidden! |
305 |
- |
306 |
- cdef _TSObject ts |
307 |
-- cdef _Timestamp ts_base |
308 |
- |
309 |
- if offset is not None: |
310 |
- # deprecate offset kwd in 0.19.0, GH13593 |
311 |
-@@ -412,17 +413,7 @@ class Timestamp(_Timestamp): |
312 |
- from pandas.tseries.frequencies import to_offset |
313 |
- freq = to_offset(freq) |
314 |
- |
315 |
-- # make datetime happy |
316 |
-- ts_base = _Timestamp.__new__(cls, ts.dts.year, ts.dts.month, |
317 |
-- ts.dts.day, ts.dts.hour, ts.dts.min, |
318 |
-- ts.dts.sec, ts.dts.us, ts.tzinfo) |
319 |
-- |
320 |
-- # fill out rest of data |
321 |
-- ts_base.value = ts.value |
322 |
-- ts_base.freq = freq |
323 |
-- ts_base.nanosecond = ts.dts.ps / 1000 |
324 |
-- |
325 |
-- return ts_base |
326 |
-+ return create_timestamp_from_ts(ts.value, ts.dts, ts.tzinfo, freq) |
327 |
- |
328 |
- def _round(self, freq, rounder): |
329 |
- |
330 |
-@@ -660,8 +651,80 @@ class Timestamp(_Timestamp): |
331 |
- astimezone = tz_convert |
332 |
- |
333 |
- def replace(self, **kwds): |
334 |
-- return Timestamp(datetime.replace(self, **kwds), |
335 |
-- freq=self.freq) |
336 |
-+ """ |
337 |
-+ implements datetime.replace, handles nanoseconds |
338 |
-+ |
339 |
-+ Parameters |
340 |
-+ ---------- |
341 |
-+ kwargs: key-value dict |
342 |
-+ |
343 |
-+ accepted keywords are: |
344 |
-+ year, month, day, hour, minute, second, microsecond, nanosecond, tzinfo |
345 |
-+ |
346 |
-+ values must be integer, or for tzinfo, a tz-convertible |
347 |
-+ |
348 |
-+ Returns |
349 |
-+ ------- |
350 |
-+ Timestamp with fields replaced |
351 |
-+ """ |
352 |
-+ |
353 |
-+ cdef: |
354 |
-+ pandas_datetimestruct dts |
355 |
-+ int64_t value |
356 |
-+ object tzinfo, result, k, v |
357 |
-+ _TSObject ts |
358 |
-+ |
359 |
-+ # set to naive if needed |
360 |
-+ tzinfo = self.tzinfo |
361 |
-+ value = self.value |
362 |
-+ if tzinfo is not None: |
363 |
-+ value = tz_convert_single(value, 'UTC', tzinfo) |
364 |
-+ |
365 |
-+ # setup components |
366 |
-+ pandas_datetime_to_datetimestruct(value, PANDAS_FR_ns, &dts) |
367 |
-+ dts.ps = self.nanosecond * 1000 |
368 |
-+ |
369 |
-+ # replace |
370 |
-+ def validate(k, v): |
371 |
-+ """ validate integers """ |
372 |
-+ if not isinstance(v, int): |
373 |
-+ raise ValueError("value must be an integer, received {v} for {k}".format(v=type(v), k=k)) |
374 |
-+ return v |
375 |
-+ |
376 |
-+ for k, v in kwds.items(): |
377 |
-+ if k == 'year': |
378 |
-+ dts.year = validate(k, v) |
379 |
-+ elif k == 'month': |
380 |
-+ dts.month = validate(k, v) |
381 |
-+ elif k == 'day': |
382 |
-+ dts.day = validate(k, v) |
383 |
-+ elif k == 'hour': |
384 |
-+ dts.hour = validate(k, v) |
385 |
-+ elif k == 'minute': |
386 |
-+ dts.min = validate(k, v) |
387 |
-+ elif k == 'second': |
388 |
-+ dts.sec = validate(k, v) |
389 |
-+ elif k == 'microsecond': |
390 |
-+ dts.us = validate(k, v) |
391 |
-+ elif k == 'nanosecond': |
392 |
-+ dts.ps = validate(k, v) * 1000 |
393 |
-+ elif k == 'tzinfo': |
394 |
-+ tzinfo = v |
395 |
-+ else: |
396 |
-+ raise ValueError("invalid name {} passed".format(k)) |
397 |
-+ |
398 |
-+ # reconstruct & check bounds |
399 |
-+ value = pandas_datetimestruct_to_datetime(PANDAS_FR_ns, &dts) |
400 |
-+ if value != NPY_NAT: |
401 |
-+ _check_dts_bounds(&dts) |
402 |
-+ |
403 |
-+ # set tz if needed |
404 |
-+ if tzinfo is not None: |
405 |
-+ value = tz_convert_single(value, tzinfo, 'UTC') |
406 |
-+ |
407 |
-+ result = create_timestamp_from_ts(value, dts, tzinfo, self.freq) |
408 |
-+ |
409 |
-+ return result |
410 |
- |
411 |
- def isoformat(self, sep='T'): |
412 |
- base = super(_Timestamp, self).isoformat(sep=sep) |
413 |
-@@ -5041,7 +5104,9 @@ cpdef normalize_date(object dt): |
414 |
- ------- |
415 |
- normalized : datetime.datetime or Timestamp |
416 |
- """ |
417 |
-- if PyDateTime_Check(dt): |
418 |
-+ if is_timestamp(dt): |
419 |
-+ return dt.replace(hour=0, minute=0, second=0, microsecond=0, nanosecond=0) |
420 |
-+ elif PyDateTime_Check(dt): |
421 |
- return dt.replace(hour=0, minute=0, second=0, microsecond=0) |
422 |
- elif PyDate_Check(dt): |
423 |
- return datetime(dt.year, dt.month, dt.day) |
424 |
--- |
425 |
-2.11.0 |
426 |
- |
427 |
|
428 |
diff --git a/dev-python/pandas/files/pandas-0.23.4-skip-broken-test.patch b/dev-python/pandas/files/pandas-0.23.4-skip-broken-test.patch |
429 |
deleted file mode 100644 |
430 |
index aa98b80c2c7..00000000000 |
431 |
--- a/dev-python/pandas/files/pandas-0.23.4-skip-broken-test.patch |
432 |
+++ /dev/null |
433 |
@@ -1,24 +0,0 @@ |
434 |
-diff --git a/pandas/tests/io/formats/test_format.py b/pandas/tests/io/formats/test_format.py |
435 |
-index 191e3f37f..8a1d89197 100644 |
436 |
---- a/pandas/tests/io/formats/test_format.py |
437 |
-+++ b/pandas/tests/io/formats/test_format.py |
438 |
-@@ -1585,6 +1585,7 @@ c 10 11 12 13 14\ |
439 |
- with option_context('display.max_rows', 60, 'display.max_columns', 20): |
440 |
- assert '...' in df._repr_html_() |
441 |
- |
442 |
-+ @pytest.mark.skip("Fails in Gentoo") |
443 |
- def test_info_repr(self): |
444 |
- max_rows = 60 |
445 |
- max_cols = 20 |
446 |
-diff --git a/pandas/tests/io/json/test_ujson.py b/pandas/tests/io/json/test_ujson.py |
447 |
-index 89acbfdc9..9c4b5c291 100644 |
448 |
---- a/pandas/tests/io/json/test_ujson.py |
449 |
-+++ b/pandas/tests/io/json/test_ujson.py |
450 |
-@@ -1097,6 +1097,7 @@ class TestNumpyJSONTests(object): |
451 |
- outp = ujson.decode(ujson.encode(arr), numpy=True, dtype=np.float32) |
452 |
- tm.assert_almost_equal(arr, outp) |
453 |
- |
454 |
-+ @pytest.mark.skip("Fails on Gentoo") |
455 |
- def test_OdArray(self): |
456 |
- def will_raise(): |
457 |
- ujson.encode(np.array(1)) |
458 |
|
459 |
diff --git a/dev-python/pandas/pandas-0.19.1.ebuild b/dev-python/pandas/pandas-0.19.1.ebuild |
460 |
deleted file mode 100644 |
461 |
index c4c2ef5163e..00000000000 |
462 |
--- a/dev-python/pandas/pandas-0.19.1.ebuild |
463 |
+++ /dev/null |
464 |
@@ -1,159 +0,0 @@ |
465 |
-# Copyright 1999-2020 Gentoo Authors |
466 |
-# Distributed under the terms of the GNU General Public License v2 |
467 |
- |
468 |
-EAPI=5 |
469 |
- |
470 |
-PYTHON_COMPAT=( python3_6 ) |
471 |
-PYTHON_REQ_USE="threads(+)" |
472 |
- |
473 |
-VIRTUALX_REQUIRED="manual" |
474 |
- |
475 |
-inherit distutils-r1 eutils flag-o-matic virtualx |
476 |
- |
477 |
-DESCRIPTION="Powerful data structures for data analysis and statistics" |
478 |
-HOMEPAGE="https://pandas.pydata.org/" |
479 |
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" |
480 |
- |
481 |
-SLOT="0" |
482 |
-LICENSE="BSD" |
483 |
-KEYWORDS="amd64 x86 ~amd64-linux ~x86-linux" |
484 |
-IUSE="doc -minimal full-support test X" |
485 |
-RESTRICT="!test? ( test )" |
486 |
- |
487 |
-MINIMAL_DEPEND=" |
488 |
- >dev-python/numpy-1.7[${PYTHON_USEDEP}] |
489 |
- >=dev-python/python-dateutil-2.0[${PYTHON_USEDEP}] |
490 |
- dev-python/pytz[${PYTHON_USEDEP}] |
491 |
- !<dev-python/numexpr-2.1[${PYTHON_USEDEP}] |
492 |
- !~dev-python/openpyxl-1.9.0[${PYTHON_USEDEP}]" |
493 |
-RECOMMENDED_DEPEND=" |
494 |
- dev-python/bottleneck[${PYTHON_USEDEP}] |
495 |
- >=dev-python/numexpr-2.1[${PYTHON_USEDEP}]" |
496 |
-OPTIONAL_DEPEND=" |
497 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
498 |
- dev-python/blosc[${PYTHON_USEDEP}] |
499 |
- dev-python/boto[${PYTHON_USEDEP}] |
500 |
- || ( dev-python/html5lib[${PYTHON_USEDEP}] dev-python/lxml[${PYTHON_USEDEP}] ) |
501 |
- dev-python/httplib2[${PYTHON_USEDEP}] |
502 |
- dev-python/jinja[${PYTHON_USEDEP}] |
503 |
- dev-python/matplotlib[${PYTHON_USEDEP}] |
504 |
- || ( >=dev-python/openpyxl-1.6.1[${PYTHON_USEDEP}] dev-python/xlsxwriter[${PYTHON_USEDEP}] ) |
505 |
- >=dev-python/pytables-3.2.1[${PYTHON_USEDEP}] |
506 |
- dev-python/rpy[${PYTHON_USEDEP}] |
507 |
- dev-python/setuptools[${PYTHON_USEDEP}] |
508 |
- dev-python/statsmodels[${PYTHON_USEDEP}] |
509 |
- >=dev-python/sqlalchemy-0.8.1[${PYTHON_USEDEP}] |
510 |
- dev-python/xlrd[${PYTHON_USEDEP}] |
511 |
- dev-python/xlwt[${PYTHON_USEDEP}] |
512 |
- sci-libs/scipy[${PYTHON_USEDEP}] |
513 |
- X? ( |
514 |
- || ( |
515 |
- x11-misc/xclip |
516 |
- x11-misc/xsel |
517 |
- ) |
518 |
- ) |
519 |
- " |
520 |
- |
521 |
-DEPEND="${MINIMAL_DEPEND} |
522 |
- dev-python/setuptools[${PYTHON_USEDEP}] |
523 |
- >=dev-python/cython-0.19.1[${PYTHON_USEDEP}] |
524 |
- doc? ( |
525 |
- ${VIRTUALX_DEPEND} |
526 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
527 |
- dev-python/html5lib[${PYTHON_USEDEP}] |
528 |
- dev-python/ipython[${PYTHON_USEDEP}] |
529 |
- dev-python/lxml[${PYTHON_USEDEP}] |
530 |
- dev-python/matplotlib[${PYTHON_USEDEP}] |
531 |
- >=dev-python/openpyxl-1.6.1[${PYTHON_USEDEP}] |
532 |
- >=dev-python/pytables-3.0.0[${PYTHON_USEDEP}] |
533 |
- dev-python/pytz[${PYTHON_USEDEP}] |
534 |
- dev-python/rpy[${PYTHON_USEDEP}] |
535 |
- >=dev-python/sphinx-1.2.1[${PYTHON_USEDEP}] |
536 |
- dev-python/xlrd[${PYTHON_USEDEP}] |
537 |
- dev-python/xlwt[${PYTHON_USEDEP}] |
538 |
- sci-libs/scipy[${PYTHON_USEDEP}] |
539 |
- x11-misc/xclip |
540 |
- ) |
541 |
- test? ( |
542 |
- ${VIRTUALX_DEPEND} |
543 |
- ${RECOMMENDED_DEPEND} |
544 |
- ${OPTIONAL_DEPEND} |
545 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
546 |
- dev-python/nose[${PYTHON_USEDEP}] |
547 |
- dev-python/pymysql[${PYTHON_USEDEP}] |
548 |
- dev-python/psycopg:2[${PYTHON_USEDEP}] |
549 |
- x11-misc/xclip |
550 |
- x11-misc/xsel |
551 |
- )" |
552 |
-# dev-python/statsmodels invokes a circular dep |
553 |
-# hence rm from doc? ( ), again |
554 |
-RDEPEND=" |
555 |
- ${MINIMAL_DEPEND} |
556 |
- !minimal? ( ${RECOMMENDED_DEPEND} ) |
557 |
- full-support? ( ${OPTIONAL_DEPEND} )" |
558 |
- |
559 |
-PATCHES=( |
560 |
- "${FILESDIR}"/${P}-gapi.patch |
561 |
- "${FILESDIR}"/${P}-seqf.patch |
562 |
-) |
563 |
- |
564 |
-python_prepare_all() { |
565 |
- # Prevent un-needed download during build |
566 |
- sed -e "/^ 'sphinx.ext.intersphinx',/d" -i doc/source/conf.py || die |
567 |
- |
568 |
- # https://github.com/pydata/pandas/issues/11299 |
569 |
- sed \ |
570 |
- -e 's:testOdArray:disable:g' \ |
571 |
- -i pandas/io/tests/json/test_ujson.py || die |
572 |
- |
573 |
- distutils-r1_python_prepare_all |
574 |
-} |
575 |
- |
576 |
-python_compile_all() { |
577 |
- # To build docs the need be located in $BUILD_DIR, |
578 |
- # else PYTHONPATH points to unusable modules. |
579 |
- if use doc; then |
580 |
- cd "${BUILD_DIR}"/lib || die |
581 |
- cp -ar "${S}"/doc . && cd doc || die |
582 |
- LANG=C PYTHONPATH=. virtx ${EPYTHON} make.py html |
583 |
- fi |
584 |
-} |
585 |
- |
586 |
-python_test() { |
587 |
- local test_pandas='not network and not disabled' |
588 |
- [[ -n "${FAST_PANDAS}" ]] && test_pandas+=' and not slow' |
589 |
- pushd "${BUILD_DIR}"/lib > /dev/null |
590 |
- "${EPYTHON}" -c "import pandas; pandas.show_versions()" || die |
591 |
- PYTHONPATH=. MPLCONFIGDIR=. \ |
592 |
- virtx nosetests --verbosity=3 -A "${test_pandas}" pandas |
593 |
- popd > /dev/null |
594 |
-} |
595 |
- |
596 |
-python_install_all() { |
597 |
- if use doc; then |
598 |
- dodoc -r "${BUILD_DIR}"/lib/doc/build/html |
599 |
- einfo "An initial build of docs is absent of references to statsmodels" |
600 |
- einfo "due to circular dependency. To have them included, emerge" |
601 |
- einfo "statsmodels next and re-emerge pandas with USE doc" |
602 |
- fi |
603 |
- |
604 |
- distutils-r1_python_install_all |
605 |
-} |
606 |
- |
607 |
-pkg_postinst() { |
608 |
- optfeature "accelerating certain types of NaN evaluations, using specialized cython routines to achieve large speedups." dev-python/bottleneck |
609 |
- optfeature "accelerating certain numerical operations, using multiple cores as well as smart chunking and caching to achieve large speedups" ">=dev-python/numexpr-2.1" |
610 |
- optfeature "needed for pandas.io.html.read_html" dev-python/beautifulsoup:4 dev-python/html5lib dev-python/lxml |
611 |
- optfeature "for msgpack compression using blosc" dev-python/blosc |
612 |
- optfeature "necessary for Amazon S3 access" dev-python/boto |
613 |
- optfeature "needed for pandas.io.gbq" dev-python/httplib2 dev-python/setuptools dev-python/python-gflags ">=dev-python/google-api-python-client-1.2.0" |
614 |
- optfeature "Template engine for conditional HTML formatting" dev-python/jinja |
615 |
- optfeature "Plotting support" dev-python/matplotlib |
616 |
- optfeature "Needed for Excel I/O" ">=dev-python/openpyxl-1.6.1" dev-python/xlsxwriter dev-python/xlrd dev-python/xlwt |
617 |
- optfeature "necessary for HDF5-based storage" ">=dev-python/pytables-3.2.1" |
618 |
- optfeature "R I/O support" dev-python/rpy |
619 |
- optfeature "Needed for parts of pandas.stats" dev-python/statsmodels |
620 |
- optfeature "SQL database support" ">=dev-python/sqlalchemy-0.8.1" |
621 |
- optfeature "miscellaneous statistical functions" sci-libs/scipy |
622 |
- optfeature "necessary to use pandas.io.clipboard.read_clipboard support" dev-python/pygtk x11-misc/xclip x11-misc/xsel |
623 |
-} |
624 |
|
625 |
diff --git a/dev-python/pandas/pandas-0.23.4.ebuild b/dev-python/pandas/pandas-0.23.4.ebuild |
626 |
deleted file mode 100644 |
627 |
index d8ac3018bf4..00000000000 |
628 |
--- a/dev-python/pandas/pandas-0.23.4.ebuild |
629 |
+++ /dev/null |
630 |
@@ -1,169 +0,0 @@ |
631 |
-# Copyright 1999-2020 Gentoo Authors |
632 |
-# Distributed under the terms of the GNU General Public License v2 |
633 |
- |
634 |
-EAPI=6 |
635 |
- |
636 |
-PYTHON_COMPAT=( python3_6 ) |
637 |
-PYTHON_REQ_USE="threads(+)" |
638 |
- |
639 |
-VIRTUALX_REQUIRED="manual" |
640 |
- |
641 |
-inherit distutils-r1 eutils flag-o-matic virtualx |
642 |
- |
643 |
-DESCRIPTION="Powerful data structures for data analysis and statistics" |
644 |
-HOMEPAGE="https://pandas.pydata.org/" |
645 |
-SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P/_/}.tar.gz" |
646 |
- |
647 |
-SLOT="0" |
648 |
-LICENSE="BSD" |
649 |
-KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" |
650 |
-IUSE="doc full-support minimal test X" |
651 |
-RESTRICT="!test? ( test )" |
652 |
- |
653 |
-RECOMMENDED_DEPEND=" |
654 |
- >=dev-python/bottleneck-1.2.1[${PYTHON_USEDEP}] |
655 |
- >=dev-python/numexpr-2.1[${PYTHON_USEDEP}] |
656 |
-" |
657 |
-OPTIONAL_DEPEND=" |
658 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
659 |
- dev-python/blosc[${PYTHON_USEDEP}] |
660 |
- dev-python/boto[${PYTHON_USEDEP}] |
661 |
- || ( |
662 |
- dev-python/html5lib[${PYTHON_USEDEP}] |
663 |
- dev-python/lxml[${PYTHON_USEDEP}] |
664 |
- ) |
665 |
- dev-python/httplib2[${PYTHON_USEDEP}] |
666 |
- dev-python/jinja[${PYTHON_USEDEP}] |
667 |
- dev-python/matplotlib[${PYTHON_USEDEP}] |
668 |
- || ( |
669 |
- >=dev-python/openpyxl-1.6.1[${PYTHON_USEDEP}] |
670 |
- dev-python/xlsxwriter[${PYTHON_USEDEP}] |
671 |
- ) |
672 |
- >=dev-python/pytables-3.2.1[${PYTHON_USEDEP}] |
673 |
- dev-python/rpy[${PYTHON_USEDEP}] |
674 |
- dev-python/setuptools[${PYTHON_USEDEP}] |
675 |
- dev-python/statsmodels[${PYTHON_USEDEP}] |
676 |
- >=dev-python/sqlalchemy-0.8.1[${PYTHON_USEDEP}] |
677 |
- >=dev-python/xarray-0.10.8[${PYTHON_USEDEP}] |
678 |
- dev-python/xlrd[${PYTHON_USEDEP}] |
679 |
- dev-python/xlwt[${PYTHON_USEDEP}] |
680 |
- sci-libs/scipy[${PYTHON_USEDEP}] |
681 |
- X? ( |
682 |
- || ( |
683 |
- dev-python/PyQt5[${PYTHON_USEDEP}] |
684 |
- ) |
685 |
- || ( |
686 |
- x11-misc/xclip |
687 |
- x11-misc/xsel |
688 |
- ) |
689 |
- ) |
690 |
-" |
691 |
-COMMON_DEPEND=" |
692 |
- >dev-python/numpy-1.7[${PYTHON_USEDEP}] |
693 |
- >=dev-python/python-dateutil-2.0[${PYTHON_USEDEP}] |
694 |
- dev-python/pytz[${PYTHON_USEDEP}] |
695 |
-" |
696 |
-DEPEND="${COMMON_DEPEND} |
697 |
- dev-python/setuptools[${PYTHON_USEDEP}] |
698 |
- >=dev-python/cython-0.23[${PYTHON_USEDEP}] |
699 |
- doc? ( |
700 |
- ${VIRTUALX_DEPEND} |
701 |
- app-text/pandoc |
702 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
703 |
- dev-python/html5lib[${PYTHON_USEDEP}] |
704 |
- dev-python/ipython[${PYTHON_USEDEP}] |
705 |
- dev-python/lxml[${PYTHON_USEDEP}] |
706 |
- dev-python/matplotlib[${PYTHON_USEDEP}] |
707 |
- dev-python/nbsphinx[${PYTHON_USEDEP}] |
708 |
- >=dev-python/openpyxl-1.6.1[${PYTHON_USEDEP}] |
709 |
- >=dev-python/pytables-3.0.0[${PYTHON_USEDEP}] |
710 |
- dev-python/pytz[${PYTHON_USEDEP}] |
711 |
- dev-python/rpy[${PYTHON_USEDEP}] |
712 |
- >=dev-python/sphinx-1.2.1[${PYTHON_USEDEP}] |
713 |
- dev-python/xlrd[${PYTHON_USEDEP}] |
714 |
- dev-python/xlwt[${PYTHON_USEDEP}] |
715 |
- sci-libs/scipy[${PYTHON_USEDEP}] |
716 |
- x11-misc/xclip |
717 |
- ) |
718 |
- test? ( |
719 |
- ${VIRTUALX_DEPEND} |
720 |
- ${RECOMMENDED_DEPEND} |
721 |
- ${OPTIONAL_DEPEND} |
722 |
- dev-python/beautifulsoup:4[${PYTHON_USEDEP}] |
723 |
- dev-python/nose[${PYTHON_USEDEP}] |
724 |
- dev-python/pymysql[${PYTHON_USEDEP}] |
725 |
- dev-python/pytest[${PYTHON_USEDEP}] |
726 |
- dev-python/psycopg:2[${PYTHON_USEDEP}] |
727 |
- x11-misc/xclip |
728 |
- x11-misc/xsel |
729 |
- ) |
730 |
-" |
731 |
-# dev-python/statsmodels invokes a circular dep |
732 |
-# hence rm from doc? ( ), again |
733 |
-RDEPEND="${COMMON_DEPEND} |
734 |
- !<dev-python/numexpr-2.1[${PYTHON_USEDEP}] |
735 |
- !~dev-python/openpyxl-1.9.0[${PYTHON_USEDEP}] |
736 |
- !minimal? ( ${RECOMMENDED_DEPEND} ) |
737 |
- full-support? ( ${OPTIONAL_DEPEND} ) |
738 |
-" |
739 |
- |
740 |
-S="${WORKDIR}/${P/_/}" |
741 |
- |
742 |
-PATCHES=( |
743 |
- "${FILESDIR}/${PN}-0.23.4-skip-broken-test.patch" |
744 |
-) |
745 |
- |
746 |
-python_prepare_all() { |
747 |
- # Prevent un-needed download during build |
748 |
- sed -e "/^ 'sphinx.ext.intersphinx',/d" \ |
749 |
- -i doc/source/conf.py || die |
750 |
- |
751 |
- distutils-r1_python_prepare_all |
752 |
-} |
753 |
- |
754 |
-python_compile_all() { |
755 |
- # To build docs the need be located in $BUILD_DIR, |
756 |
- # else PYTHONPATH points to unusable modules. |
757 |
- if use doc; then |
758 |
- cd "${BUILD_DIR}"/lib || die |
759 |
- cp -ar "${S}"/doc . && cd doc || die |
760 |
- LANG=C PYTHONPATH=. virtx ${EPYTHON} make.py html |
761 |
- fi |
762 |
-} |
763 |
- |
764 |
-python_test() { |
765 |
- pushd "${BUILD_DIR}"/lib > /dev/null |
766 |
- "${EPYTHON}" -c "import pandas; pandas.show_versions()" || die |
767 |
- PYTHONPATH=. virtx pytest pandas -v --skip-slow --skip-network \ |
768 |
- -m "not single" |
769 |
- popd > /dev/null |
770 |
-} |
771 |
- |
772 |
-python_install_all() { |
773 |
- if use doc; then |
774 |
- dodoc -r "${BUILD_DIR}"/lib/doc/build/html |
775 |
- einfo "An initial build of docs is absent of references to statsmodels" |
776 |
- einfo "due to circular dependency. To have them included, emerge" |
777 |
- einfo "statsmodels next and re-emerge pandas with USE doc" |
778 |
- fi |
779 |
- |
780 |
- distutils-r1_python_install_all |
781 |
-} |
782 |
- |
783 |
-pkg_postinst() { |
784 |
- optfeature "accelerating certain types of NaN evaluations, using specialized cython routines to achieve large speedups." dev-python/bottleneck |
785 |
- optfeature "accelerating certain numerical operations, using multiple cores as well as smart chunking and caching to achieve large speedups" ">=dev-python/numexpr-2.1" |
786 |
- optfeature "needed for pandas.io.html.read_html" dev-python/beautifulsoup:4 dev-python/html5lib dev-python/lxml |
787 |
- optfeature "for msgpack compression using blosc" dev-python/blosc |
788 |
- optfeature "necessary for Amazon S3 access" dev-python/boto |
789 |
- optfeature "needed for pandas.io.gbq" dev-python/httplib2 dev-python/setuptools dev-python/python-gflags ">=dev-python/google-api-python-client-1.2.0" |
790 |
- optfeature "Template engine for conditional HTML formatting" dev-python/jinja |
791 |
- optfeature "Plotting support" dev-python/matplotlib |
792 |
- optfeature "Needed for Excel I/O" ">=dev-python/openpyxl-1.6.1" dev-python/xlsxwriter dev-python/xlrd dev-python/xlwt |
793 |
- optfeature "necessary for HDF5-based storage" ">=dev-python/pytables-3.2.1" |
794 |
- optfeature "R I/O support" dev-python/rpy |
795 |
- optfeature "Needed for parts of pandas.stats" dev-python/statsmodels |
796 |
- optfeature "SQL database support" ">=dev-python/sqlalchemy-0.8.1" |
797 |
- optfeature "miscellaneous statistical functions" sci-libs/scipy |
798 |
- optfeature "necessary to use pandas.io.clipboard.read_clipboard support" dev-python/PyQt5 dev-python/pygtk x11-misc/xclip x11-misc/xsel |
799 |
-} |