Skip to content

Commit 5c59f84

Browse files
committed
make datetime work with 3.6
1 parent 2e0bab0 commit 5c59f84

File tree

2 files changed

+27
-12
lines changed

2 files changed

+27
-12
lines changed

pandas/__init__.py

+23-7
Original file line numberDiff line numberDiff line change
@@ -297,13 +297,13 @@ def __getattr__(self, item):
297297

298298
np = __numpy()
299299

300-
class __Datetime:
301-
def __init__(self):
302-
from datetime import datetime as dt
300+
class __Datetime(type):
303301

304-
self.datetime = dt
302+
from datetime import datetime as dt
305303

306-
def __getattr__(self, item):
304+
datetime = dt
305+
306+
def __getattr__(cls, item):
307307
import warnings
308308

309309
warnings.warn(
@@ -315,11 +315,27 @@ def __getattr__(self, item):
315315
)
316316

317317
try:
318-
return getattr(self.datetime, item)
318+
return getattr(cls.datetime, item)
319319
except AttributeError:
320320
raise AttributeError(f"module datetime has no attribute {item}")
321321

322-
datetime = __Datetime()
322+
class __DatetimeSub(metaclass=__Datetime):
323+
def __new__(cls, *args, **kwargs):
324+
import warnings
325+
326+
warnings.warn(
327+
"The pandas.datetime class is deprecated "
328+
"and will be removed from pandas in a future version. "
329+
"Import from datetime instead.",
330+
FutureWarning,
331+
stacklevel=2,
332+
)
333+
334+
from datetime import datetime as dt
335+
336+
return dt(*args, **kwargs)
337+
338+
datetime = __DatetimeSub
323339

324340
class __SparseArray(pandas.core.arrays.sparse.SparseArray):
325341
def __warnSparseArray(self):

pandas/tests/api/test_api.py

+4-5
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ def test_depr(self):
239239
getattr(pd, depr)
240240
elif depr == "datetime":
241241
deprecated = getattr(pd, "__Datetime")
242-
deprecated().__getattr__(dir(pd.datetime.datetime)[-1])
242+
deprecated.__getattr__(deprecated, dir(pd.datetime.datetime)[-1])
243243
elif depr == "SparseArray":
244244
deprecated = getattr(pd, depr)
245245
deprecated([])
@@ -252,10 +252,9 @@ def test_datetime():
252252
from datetime import datetime
253253
import warnings
254254

255-
if compat.PY37:
256-
with warnings.catch_warnings():
257-
warnings.simplefilter("ignore", FutureWarning)
258-
assert datetime(2015, 1, 2, 0, 0) == pd.datetime(2015, 1, 2, 0, 0)
255+
with warnings.catch_warnings():
256+
warnings.simplefilter("ignore", FutureWarning)
257+
assert datetime(2015, 1, 2, 0, 0) == pd.datetime(2015, 1, 2, 0, 0)
259258

260259

261260
def test_np():

0 commit comments

Comments
 (0)