pandas-market-calendars 5.1.0__tar.gz → 5.1.3__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.
Files changed (89) hide show
  1. {pandas_market_calendars-5.1.0/pandas_market_calendars.egg-info → pandas_market_calendars-5.1.3}/PKG-INFO +5 -4
  2. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/__init__.py +39 -39
  3. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendar_registry.py +58 -57
  4. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendar_utils.py +1151 -1151
  5. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/asx.py +100 -70
  6. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/bmf.py +225 -219
  7. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/bse.py +433 -425
  8. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cboe.py +153 -149
  9. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme.py +417 -405
  10. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_agriculture.py +172 -172
  11. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_base.py +127 -119
  12. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_crypto.py +166 -158
  13. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +224 -216
  14. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_equities.py +131 -123
  15. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -136
  16. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/cme_globex_fx.py +101 -101
  17. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/eurex.py +139 -131
  18. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/eurex_fixed_income.py +106 -98
  19. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/hkex.py +437 -431
  20. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/ice.py +89 -81
  21. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/iex.py +163 -155
  22. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/jpx.py +125 -117
  23. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/lse.py +126 -118
  24. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/mirror.py +144 -144
  25. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/nyse.py +1462 -1466
  26. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/ose.py +124 -118
  27. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/sifma.py +391 -383
  28. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/six.py +144 -136
  29. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/sse.py +305 -315
  30. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/tase.py +232 -224
  31. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/tsx.py +193 -185
  32. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/class_registry.py +115 -115
  33. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/cme.py +385 -385
  34. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/cme_globex.py +214 -214
  35. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/cn.py +1476 -1476
  36. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/jp.py +401 -401
  37. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/jpx_equinox.py +506 -506
  38. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/nyse.py +1536 -1536
  39. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/oz.py +82 -63
  40. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/sifma.py +350 -350
  41. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/uk.py +186 -186
  42. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/us.py +376 -376
  43. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/market_calendar.py +1006 -1008
  44. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3/pandas_market_calendars.egg-info}/PKG-INFO +5 -4
  45. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars.egg-info/requires.txt +2 -3
  46. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pyproject.toml +87 -73
  47. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_24_7_calendar.py +25 -25
  48. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_XNYS_calendar.py +264 -264
  49. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_asx_calendar.py +65 -65
  50. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_bmf_calendar.py +63 -63
  51. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_bse_calendar.py +43 -43
  52. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_cboe_calendars.py +99 -99
  53. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_class_registry.py +199 -199
  54. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_cme_agriculture_calendar.py +52 -52
  55. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_cme_bond_calendar.py +65 -65
  56. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_cme_equity_calendar.py +63 -63
  57. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_date_range.py +1900 -1900
  58. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_eurex_calendar.py +36 -36
  59. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_eurex_fixed_income_calendar.py +143 -143
  60. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_crypto.py +288 -288
  61. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_energy_and_metals.py +158 -158
  62. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_equities.py +626 -626
  63. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_fixed_income.py +584 -584
  64. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_fx.py +169 -169
  65. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_exchange_calendar_cme_globex_grains.py +25 -27
  66. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_hkex_calendar.py +57 -57
  67. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_ice_calendar.py +57 -57
  68. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_iex_calendar.py +46 -46
  69. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_jpx_calendar.py +285 -285
  70. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_lse_calendar.py +144 -144
  71. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_market_calendar.py +1539 -1539
  72. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_nyse_calendar.py +448 -449
  73. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_nyse_calendar_early_years.py +3969 -3969
  74. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_ose_calendar.py +149 -149
  75. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_sifma_calendars.py +567 -567
  76. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_six_calendar.py +79 -79
  77. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_sse_calendar.py +48 -48
  78. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_tsx_calendar.py +33 -33
  79. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_utils.py +293 -289
  80. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/tests/test_xtae_calendar.py +53 -53
  81. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/LICENSE +0 -0
  82. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/NOTICE +0 -0
  83. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/README.rst +0 -0
  84. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/calendars/__init__.py +0 -0
  85. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars/holidays/__init__.py +0 -0
  86. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars.egg-info/SOURCES.txt +0 -0
  87. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars.egg-info/dependency_links.txt +0 -0
  88. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/pandas_market_calendars.egg-info/top_level.txt +0 -0
  89. {pandas_market_calendars-5.1.0 → pandas_market_calendars-5.1.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pandas_market_calendars
3
- Version: 5.1.0
3
+ Version: 5.1.3
4
4
  Summary: Market and exchange trading calendars for pandas
5
5
  Author-email: Ryan Sheftel <rsheftel@alumni.upenn.edu>
6
6
  License: MIT
@@ -14,24 +14,25 @@ Classifier: Development Status :: 5 - Production/Stable
14
14
  Classifier: Intended Audience :: Developers
15
15
  Classifier: Topic :: Software Development
16
16
  Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Programming Language :: Python :: 3.8
17
18
  Classifier: Programming Language :: Python :: 3.9
18
19
  Classifier: Programming Language :: Python :: 3.10
19
20
  Classifier: Programming Language :: Python :: 3.11
20
21
  Classifier: Programming Language :: Python :: 3.12
21
22
  Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
22
24
  Requires-Python: >=3.8
23
25
  Description-Content-Type: text/x-rst
24
26
  License-File: LICENSE
25
27
  License-File: NOTICE
26
- Requires-Dist: pandas>=1.1
27
- Requires-Dist: tzdata
28
- Requires-Dist: python-dateutil
29
28
  Requires-Dist: exchange-calendars>=3.3
29
+ Requires-Dist: pandas>=1.1
30
30
  Provides-Extra: dev
31
31
  Requires-Dist: pytest; extra == "dev"
32
32
  Requires-Dist: black; extra == "dev"
33
33
  Requires-Dist: pre-commit; extra == "dev"
34
34
  Requires-Dist: build; extra == "dev"
35
+ Requires-Dist: twine; extra == "dev"
35
36
  Dynamic: license-file
36
37
 
37
38
  pandas_market_calendars
@@ -1,39 +1,39 @@
1
- # Fork of Zipline by Quantopian released under MIT license. Original Zipline license below.
2
- #
3
- # Copyright 2016 Quantopian, Inc.
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
-
17
- from importlib import metadata
18
-
19
- from .calendar_registry import get_calendar, get_calendar_names
20
- from .calendar_utils import convert_freq, date_range, merge_schedules, mark_session
21
-
22
- # TODO: is the below needed? Can I replace all the imports on the calendars with ".market_calendar"
23
- from .market_calendar import MarketCalendar
24
-
25
- # if running in development there may not be a package
26
- try:
27
- __version__ = metadata.version("pandas_market_calendars")
28
- except metadata.PackageNotFoundError:
29
- __version__ = "development"
30
-
31
- __all__ = [
32
- "MarketCalendar",
33
- "get_calendar",
34
- "get_calendar_names",
35
- "merge_schedules",
36
- "date_range",
37
- "mark_session",
38
- "convert_freq",
39
- ]
1
+ # Fork of Zipline by Quantopian released under MIT license. Original Zipline license below.
2
+ #
3
+ # Copyright 2016 Quantopian, Inc.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ from importlib import metadata
18
+
19
+ from .calendar_registry import get_calendar, get_calendar_names
20
+ from .calendar_utils import convert_freq, date_range, merge_schedules, mark_session
21
+
22
+ # TODO: is the below needed? Can I replace all the imports on the calendars with ".market_calendar"
23
+ from .market_calendar import MarketCalendar
24
+
25
+ # if running in development there may not be a package
26
+ try:
27
+ __version__ = metadata.version("pandas_market_calendars")
28
+ except metadata.PackageNotFoundError:
29
+ __version__ = "development"
30
+
31
+ __all__ = [
32
+ "MarketCalendar",
33
+ "get_calendar",
34
+ "get_calendar_names",
35
+ "merge_schedules",
36
+ "date_range",
37
+ "mark_session",
38
+ "convert_freq",
39
+ ]
@@ -1,57 +1,58 @@
1
- from .market_calendar import MarketCalendar
2
- from .calendars.asx import ASXExchangeCalendar
3
- from .calendars.bmf import BMFExchangeCalendar
4
- from .calendars.bse import BSEExchangeCalendar
5
- from .calendars.cboe import CFEExchangeCalendar
6
- from .calendars.cme import CMEEquityExchangeCalendar, CMEBondExchangeCalendar
7
- from .calendars.cme_globex_base import CMEGlobexBaseExchangeCalendar
8
- from .calendars.cme_globex_agriculture import (
9
- CMEGlobexAgricultureExchangeCalendar,
10
- CMEGlobexLivestockExchangeCalendar,
11
- CMEGlobexGrainsAndOilseedsExchangeCalendar,
12
- )
13
- from .calendars.cme_globex_crypto import CMEGlobexCryptoExchangeCalendar
14
- from .calendars.cme_globex_energy_and_metals import (
15
- CMEGlobexEnergyAndMetalsExchangeCalendar,
16
- )
17
- from .calendars.cme_globex_equities import CMEGlobexEquitiesExchangeCalendar
18
- from .calendars.cme_globex_fx import CMEGlobexFXExchangeCalendar
19
- from .calendars.cme_globex_fixed_income import CMEGlobexFixedIncomeCalendar
20
- from .calendars.eurex import EUREXExchangeCalendar
21
- from .calendars.eurex_fixed_income import EUREXFixedIncomeCalendar
22
- from .calendars.hkex import HKEXExchangeCalendar
23
- from .calendars.ice import ICEExchangeCalendar
24
- from .calendars.iex import IEXExchangeCalendar
25
- from .calendars.jpx import JPXExchangeCalendar
26
- from .calendars.lse import LSEExchangeCalendar
27
- from .calendars.nyse import NYSEExchangeCalendar
28
- from .calendars.ose import OSEExchangeCalendar
29
- from .calendars.sifma import (
30
- SIFMAUSExchangeCalendar,
31
- SIFMAUKExchangeCalendar,
32
- SIFMAJPExchangeCalendar,
33
- )
34
- from .calendars.six import SIXExchangeCalendar
35
- from .calendars.sse import SSEExchangeCalendar
36
- from .calendars.tase import TASEExchangeCalendar
37
- from .calendars.tsx import TSXExchangeCalendar
38
- from .calendars.mirror import *
39
-
40
-
41
- def get_calendar(name, open_time=None, close_time=None) -> MarketCalendar:
42
- """
43
- Retrieves an instance of an MarketCalendar whose name is given.
44
-
45
- :param name: The name of the MarketCalendar to be retrieved.
46
- :param open_time: Market open time override as datetime.time object. If None then default is used.
47
- :param close_time: Market close time override as datetime.time object. If None then default is used.
48
- :return: MarketCalendar of the desired calendar.
49
- """
50
- return MarketCalendar.factory(name, open_time=open_time, close_time=close_time)
51
-
52
-
53
- def get_calendar_names():
54
- """All Market Calendar names and aliases that can be used in "factory"
55
- :return: list(str)
56
- """
57
- return MarketCalendar.calendar_names()
1
+ # fmt: off
2
+ from .market_calendar import MarketCalendar
3
+ from .calendars.asx import ASXExchangeCalendar
4
+ from .calendars.bmf import BMFExchangeCalendar
5
+ from .calendars.bse import BSEExchangeCalendar
6
+ from .calendars.cboe import CFEExchangeCalendar
7
+ from .calendars.cme import CMEEquityExchangeCalendar, CMEBondExchangeCalendar
8
+ from .calendars.cme_globex_base import CMEGlobexBaseExchangeCalendar
9
+ from .calendars.cme_globex_agriculture import (
10
+ CMEGlobexAgricultureExchangeCalendar,
11
+ CMEGlobexLivestockExchangeCalendar,
12
+ CMEGlobexGrainsAndOilseedsExchangeCalendar,
13
+ )
14
+ from .calendars.cme_globex_crypto import CMEGlobexCryptoExchangeCalendar
15
+ from .calendars.cme_globex_energy_and_metals import (
16
+ CMEGlobexEnergyAndMetalsExchangeCalendar,
17
+ )
18
+ from .calendars.cme_globex_equities import CMEGlobexEquitiesExchangeCalendar
19
+ from .calendars.cme_globex_fx import CMEGlobexFXExchangeCalendar
20
+ from .calendars.cme_globex_fixed_income import CMEGlobexFixedIncomeCalendar
21
+ from .calendars.eurex import EUREXExchangeCalendar
22
+ from .calendars.eurex_fixed_income import EUREXFixedIncomeCalendar
23
+ from .calendars.hkex import HKEXExchangeCalendar
24
+ from .calendars.ice import ICEExchangeCalendar
25
+ from .calendars.iex import IEXExchangeCalendar
26
+ from .calendars.jpx import JPXExchangeCalendar
27
+ from .calendars.lse import LSEExchangeCalendar
28
+ from .calendars.nyse import NYSEExchangeCalendar
29
+ from .calendars.ose import OSEExchangeCalendar
30
+ from .calendars.sifma import (
31
+ SIFMAUSExchangeCalendar,
32
+ SIFMAUKExchangeCalendar,
33
+ SIFMAJPExchangeCalendar,
34
+ )
35
+ from .calendars.six import SIXExchangeCalendar
36
+ from .calendars.sse import SSEExchangeCalendar
37
+ from .calendars.tase import TASEExchangeCalendar
38
+ from .calendars.tsx import TSXExchangeCalendar
39
+ from .calendars.mirror import *
40
+ # fmt: on
41
+
42
+ def get_calendar(name, open_time=None, close_time=None) -> MarketCalendar:
43
+ """
44
+ Retrieves an instance of an MarketCalendar whose name is given.
45
+
46
+ :param name: The name of the MarketCalendar to be retrieved.
47
+ :param open_time: Market open time override as datetime.time object. If None then default is used.
48
+ :param close_time: Market close time override as datetime.time object. If None then default is used.
49
+ :return: MarketCalendar of the desired calendar.
50
+ """
51
+ return MarketCalendar.factory(name, open_time=open_time, close_time=close_time)
52
+
53
+
54
+ def get_calendar_names():
55
+ """All Market Calendar names and aliases that can be used in "factory"
56
+ :return: list(str)
57
+ """
58
+ return MarketCalendar.calendar_names()