opendate 0.1.8__tar.gz → 0.1.10__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.
Potentially problematic release.
This version of opendate might be problematic. Click here for more details.
- {opendate-0.1.8 → opendate-0.1.10}/PKG-INFO +1 -1
- {opendate-0.1.8 → opendate-0.1.10}/pyproject.toml +1 -1
- {opendate-0.1.8 → opendate-0.1.10}/src/date/__init__.py +1 -1
- {opendate-0.1.8 → opendate-0.1.10}/src/date/date.py +31 -15
- {opendate-0.1.8 → opendate-0.1.10}/LICENSE +0 -0
- {opendate-0.1.8 → opendate-0.1.10}/README.md +0 -0
- {opendate-0.1.8 → opendate-0.1.10}/src/date/extras.py +0 -0
|
@@ -272,20 +272,22 @@ class NYSE(Entity):
|
|
|
272
272
|
@staticmethod
|
|
273
273
|
@lru_cache
|
|
274
274
|
def business_days(begdate=BEGDATE, enddate=ENDDATE) -> set:
|
|
275
|
-
return {
|
|
275
|
+
return {Date.instance(d.date())
|
|
276
|
+
for d in NYSE.calendar.valid_days(begdate, enddate)}
|
|
276
277
|
|
|
277
278
|
@staticmethod
|
|
278
279
|
@lru_cache
|
|
279
280
|
def business_hours(begdate=BEGDATE, enddate=ENDDATE) -> dict:
|
|
280
281
|
df = NYSE.calendar.schedule(begdate, enddate, tz=EST)
|
|
281
|
-
open_close = [(
|
|
282
|
+
open_close = [(DateTime.instance(o.to_pydatetime()),
|
|
283
|
+
DateTime.instance(c.to_pydatetime()))
|
|
282
284
|
for o, c in zip(df.market_open, df.market_close)]
|
|
283
285
|
return dict(zip(df.index.date, open_close))
|
|
284
286
|
|
|
285
287
|
@staticmethod
|
|
286
288
|
@lru_cache
|
|
287
289
|
def business_holidays(begdate=BEGDATE, enddate=ENDDATE) -> set:
|
|
288
|
-
return {d.date()
|
|
290
|
+
return {Date.instance(d.date())
|
|
289
291
|
for d in map(pd.to_datetime, NYSE.calendar.holidays().holidays)
|
|
290
292
|
if begdate <= d <= enddate}
|
|
291
293
|
|
|
@@ -1354,12 +1356,29 @@ class Interval:
|
|
|
1354
1356
|
set - set end=beg + num
|
|
1355
1357
|
- set set beg=end - num
|
|
1356
1358
|
|
|
1357
|
-
|
|
1359
|
+
Basic/legacy cases
|
|
1360
|
+
>>> Interval(Date(2014, 4, 3), None).b.range(3)
|
|
1358
1361
|
(Date(2014, 4, 3), Date(2014, 4, 8))
|
|
1359
1362
|
>>> Interval(None, Date(2014, 7, 27)).range(20)
|
|
1360
1363
|
(Date(2014, 7, 7), Date(2014, 7, 27))
|
|
1361
|
-
>>> Interval(None,
|
|
1364
|
+
>>> Interval(None, Date(2014, 7, 27)).b.range(20)
|
|
1362
1365
|
(Date(2014, 6, 27), Date(2014, 7, 27))
|
|
1366
|
+
|
|
1367
|
+
Do not modify dates if both are provided
|
|
1368
|
+
>>> Interval(Date(2024, 7, 25), Date(2024, 7, 25)).b.range(None)
|
|
1369
|
+
(Date(2024, 7, 25), Date(2024, 7, 25))
|
|
1370
|
+
>>> Interval(Date(2024, 7, 27), Date(2024, 7, 27)).b.range(None)
|
|
1371
|
+
(Date(2024, 7, 27), Date(2024, 7, 27))
|
|
1372
|
+
|
|
1373
|
+
Edge cases (7/27/24 is weekend)
|
|
1374
|
+
>>> Interval(Date(2024, 7, 27), None).b.range(0)
|
|
1375
|
+
(Date(2024, 7, 27), Date(2024, 7, 27))
|
|
1376
|
+
>>> Interval(None, Date(2024, 7, 27)).b.range(0)
|
|
1377
|
+
(Date(2024, 7, 27), Date(2024, 7, 27))
|
|
1378
|
+
>>> Interval(Date(2024, 7, 27), None).b.range(1)
|
|
1379
|
+
(Date(2024, 7, 27), Date(2024, 7, 29))
|
|
1380
|
+
>>> Interval(None, Date(2024, 7, 27)).b.range(1)
|
|
1381
|
+
(Date(2024, 7, 26), Date(2024, 7, 27))
|
|
1363
1382
|
"""
|
|
1364
1383
|
begdate, enddate = self.begdate, self.enddate
|
|
1365
1384
|
|
|
@@ -1373,17 +1392,14 @@ class Interval:
|
|
|
1373
1392
|
raise IntervalError('Missing begdate and enddate, window specified')
|
|
1374
1393
|
|
|
1375
1394
|
if begdate and enddate:
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
enddate).subtract(days=0)
|
|
1380
|
-
|
|
1381
|
-
if (not begdate and not enddate) or enddate:
|
|
1382
|
-
begdate = (enddate.business() if enddate._business else
|
|
1383
|
-
enddate).subtract(days=window)
|
|
1395
|
+
pass # do nothing if both provided
|
|
1396
|
+
elif (not begdate and not enddate) or enddate:
|
|
1397
|
+
begdate = enddate.subtract(days=window) if window else enddate
|
|
1384
1398
|
else:
|
|
1385
|
-
enddate =
|
|
1386
|
-
|
|
1399
|
+
enddate = begdate.add(days=window) if window else begdate
|
|
1400
|
+
|
|
1401
|
+
enddate._business = False
|
|
1402
|
+
begdate._business = False
|
|
1387
1403
|
|
|
1388
1404
|
return begdate, enddate
|
|
1389
1405
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|