{ "info": { "author": "Yoji Kiyota", "author_email": "kiyotayoji@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)", "Natural Language :: Chinese (Simplified)", "Natural Language :: Chinese (Traditional)", "Natural Language :: English", "Natural Language :: Japanese", "Natural Language :: Korean", "Natural Language :: Vietnamese", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Scientific/Engineering :: Astronomy" ], "description": "EastAsiaCalendars README\n========================\n\nEastAsiaCalendars provides an ``eacal`` Python module for accessing East\nAsia calendar systems, originated in China, and spread to Korea,\nVietnam, and Japan. This module includes the following.\n\n- `solar terms `__ (\u7bc0\u6c23,\n \u8282\u6c14, \u7bc0\u6c17, \uc808\uae30, ti\u1ebft kh\u00ed)\n- `sexagenary cycle `__\n (\u516d\u5341\u82b1\u7532, \u5e72\u652f, \uac04\uc9c0, G\u0101nzh\u012b)\n- `zassetsu `__ (\u96d1\u7bc0,\n Seasonal days in the Japanese calendar)\n\nSolar terms are calculated based on the planetary motion computed by\n`PyEphem `__. The accuracy of solar\nterms may be within one minute.\n\nResults of use of this software is not warrantied. You may use, modify,\nand redistribute this software under `GNU LESSER GENERAL PUBLIC LICENSE\nVersion 3 `__.\n\nRequirements\n------------\n\n- Python 2.x / 3.x\n- `PyEphem `__\n- `pytz `__\n- `jdcal `__\n\nInstallation\n------------\n\nThe required packages (PyEphem, pytz, and jdcal) are automatically\ninstalled via ``pip``.\n\n.. code:: bash\n\n pip install eacal\n\nExample & Usage\n---------------\n\nThis package supports Chinese (traditional / simplified), Japanese,\nKorean, Vietnamese, and English (translation). Any timezones can be\nspecified using the pytz package.\n\nCalculating solar terms in a year\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe solar terms of 2015 for English (in UTC).\n\n.. code:: py\n\n >>> import eacal\n >>> from datetime import datetime\n >>> c = eacal.EACal()\n >>> for x in c.get_annual_solar_terms(2015):\n ... print \"%2d %-25s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 minor cold 2015-01-05 16:20 UTC\n 23 major cold 2015-01-20 09:43 UTC\n 0 start of spring 2015-02-04 03:58 UTC\n 1 rain water 2015-02-18 23:49 UTC\n 2 awakening of insects 2015-03-05 21:55 UTC\n 3 vernal equinox 2015-03-20 22:45 UTC\n ...\n 20 major snow 2015-12-07 10:53 UTC\n 21 winter solstice 2015-12-22 04:47 UTC\n\nThe solar terms of 2015, for Traditional Chinese (in Hong Kong Time),\nSimplified Chinese (in Chinese Standard Time), Japanese (in Japan\nStandard Time), Korean (in Korea Standard Time), and Vietnamese (in\nIndochina Time).\n\n.. code:: py\n\n >>> import eacal\n >>> from datetime import datetime\n >>> c_t = eacal.EACal(zh_t=True)\n >>> for x in c_t.get_annual_solar_terms(2015):\n ... print \"%2d %s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 \u5c0f\u5bd2 2015-01-06 00:20 HKT\n 23 \u5927\u5bd2 2015-01-20 17:43 HKT\n 0 \u7acb\u6625 2015-02-04 11:58 HKT\n 1 \u96e8\u6c34 2015-02-19 07:49 HKT\n 2 \u9a5a\u87c4 2015-03-06 05:55 HKT\n 3 \u6625\u5206 2015-03-21 06:45 HKT\n ...\n 20 \u5927\u96ea 2015-12-07 18:53 HKT\n 21 \u51ac\u81f3 2015-12-22 12:47 HKT\n\n >>> c_s = eacal.EACal(zh_s=True)\n >>> for x in c_s.get_annual_solar_terms(2015):\n ... print \"%2d %s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 \u5c0f\u5bd2 2015-01-06 00:20 CST\n 23 \u5927\u5bd2 2015-01-20 17:43 CST\n 0 \u7acb\u6625 2015-02-04 11:58 CST\n 1 \u96e8\u6c34 2015-02-19 07:49 CST\n 2 \u60ca\u86f0 2015-03-06 05:55 CST\n 3 \u6625\u5206 2015-03-21 06:45 CST\n \u5c0f\u5bd2 2015-01-06 00:20 CST\n \u5927\u5bd2 2015-01-20 17:43 CST\n \u7acb\u6625 2015-02-04 11:58 CST\n \u96e8\u6c34 2015-02-19 07:49 CST\n \u60ca\u86f0 2015-03-06 05:55 CST\n \u6625\u5206 2015-03-21 06:45 CST\n ...\n 20 \u5927\u96ea 2015-12-07 18:53 CST\n 21 \u51ac\u81f3 2015-12-22 12:47 CST\n\n >>> c_j = eacal.EACal(ja=True)\n >>> for x in c_j.get_annual_solar_terms(2015):\n ... print \"%2d %s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 \u5c0f\u5bd2 2015-01-06 01:20 JST\n 23 \u5927\u5bd2 2015-01-20 18:43 JST\n 0 \u7acb\u6625 2015-02-04 12:58 JST\n 1 \u96e8\u6c34 2015-02-19 08:49 JST\n 2 \u5553\u87c4 2015-03-06 06:55 JST\n 3 \u6625\u5206 2015-03-21 07:45 JST\n ...\n 20 \u5927\u96ea 2015-12-07 19:53 JST\n 21 \u51ac\u81f3 2015-12-22 13:47 JST\n\n >>> c_k = eacal.EACal(ko=True)\n >>> for x in c_k.get_annual_solar_terms(2015):\n ... print \"%2d %s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 \uc18c\ud55c 2015-01-06 01:20 KST\n 23 \ub300\ud55c 2015-01-20 18:43 KST\n 0 \uc785\ucd98 2015-02-04 12:58 KST\n 1 \uc6b0\uc218 2015-02-19 08:49 KST\n 2 \uacbd\uce69 2015-03-06 06:55 KST\n 3 \ucd98\ubd84 2015-03-21 07:45 KST\n ...\n 20 \ub300\uc124 2015-12-07 19:53 KST\n 21 \ub3d9\uc9c0 2015-12-22 13:47 KST\n\n >>> c_v = eacal.EACal(vi=True)\n >>> for x in c_v.get_annual_solar_terms(2015):\n ... print \"%2d %-12s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 Ti\u1ec3u h\u00e0n 2015-01-05 23:20 ICT\n 23 \u0110\u1ea1i h\u00e0n 2015-01-20 16:43 ICT\n 0 L\u1eadp xu\u00e2n 2015-02-04 10:58 ICT\n 1 V\u0169 th\u1ee7y 2015-02-19 06:49 ICT\n 2 Kinh tr\u1eadp 2015-03-06 04:55 ICT\n 3 Xu\u00e2n ph\u00e2n 2015-03-21 05:45 ICT\n ...\n 20 \u0110\u1ea1i tuy\u1ebft 2015-12-07 17:53 ICT\n 21 \u0110\u00f4ng ch\u00ed 2015-12-22 11:47 ICT\n\nThe solar terms of 2015 in North American Eastern Time Zone.\n\n.. code:: py\n\n >>> import eacal\n >>> import pytz\n >>> from datetime import datetime\n >>> c = eacal.EACal(tz=pytz.timezone('America/New_York'))\n >>> for x in c.get_annual_solar_terms(2015):\n ... print \"%2d %-25s %s\" % (x[1], x[0], datetime.strftime(x[2], \"%Y-%m-%d %H:%M %Z\"))\n 22 minor cold 2015-01-05 11:20 EST\n 23 major cold 2015-01-20 04:43 EST\n 0 start of spring 2015-02-03 22:58 EST\n 1 rain water 2015-02-18 18:49 EST\n 2 awakening of insects 2015-03-05 16:55 EST\n 3 vernal equinox 2015-03-20 18:45 EDT # in DST\n ...\n 20 major snow 2015-12-07 05:53 EST\n 21 winter solstice 2015-12-21 23:47 EST\n\nCalculating sexagenary cycles\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nCalculating the cyclic year of 2015.\n\n.. code:: py\n\n >>> import eacal\n >>> print(eacal.EACal().get_cycle_year(2015))\n wood-yin goat # \u4e59\u672a\n >>> print(eacal.EACal(zh_t=True).get_cycle_year(2015))\n \u4e59\u672a\n >>> print(eacal.EACal(vi=True).get_cycle_year(2015))\n \u1ea5t m\u00f9i # \u4e59\u672a\n >>> print(eacal.EACal().get_cycle_year(2015, id=True))\n 31 # 31=wood-yin goat\n\nCalculating the Cyclic month of May 2015.\n\n.. code:: py\n\n >>> import eacal\n >>> print(eacal.EACal().get_cycle_month(2015, 5))\n metal-yin snake # \u8f9b\u5df3\n >>> print(eacal.EACal(ja=True).get_cycle_month(2015, 5))\n \u8f9b\u5df3\n >>> print(eacal.EACal(ko=True).get_cycle_month(2015, 5))\n \uc2e0\uc0ac # \u8f9b\u5df3\n >>> print(eacal.EACal().get_cycle_month(2015, 5, id=True))\n 17 # 17=metal-yin snake\n\nCalculating the Cyclic day of 10th, May 2015.\n\n.. code:: py\n\n >>> import eacal\n >>> from datetime import datetime\n >>> print(eacal.EACal().get_cycle_day(datetime(2015, 5, 10)))\n fire-yang dog # \u4e19\u620c\n >>> print(eacal.EACal(zh_s=True).get_cycle_day(datetime(2015, 5, 10)))\n \u4e19\u620c\n >>> print(eacal.EACal(vi=True).get_cycle_day(datetime(2015, 5, 10)))\n b\u00ednh tu\u1ea5t # \u4e19\u620c\n >>> print(eacal.EACal().get_cycle_day(datetime(2015, 5, 10), id=True))\n 22 # 22=fire-yang dog\n\nCalculating the Cyclic year, month, and day around the start of spring\nin 2015.\n\n.. code:: py\n\n >>> import eacal\n >>> from datetime import datetime\n >>> c = eacal.EACal() # for English, in UTC\n >>> print('|'.join(c.get_cycle_ymd(datetime(2015, 2, 3))))\n wood-yang horse|fire-yin ox|metal-yang dog # \u7532\u5348\u5e74 \u4e01\u4e11\u6708 \u5e9a\u620c\u65e5\n >>> print('|'.join(c.get_cycle_ymd(datetime(2015, 2, 4))))\n wood-yin goat|earth-yang tiger|metal-yin pig # \u4e59\u672a\u5e74 \u620a\u5bc5\u6708 \u8f9b\u4ea5\u65e5 (cyclic year and cyclic month incremented at the start of spring)\n >>> print('|'.join(c.get_cycle_ymd(datetime(2015, 2, 5))))\n wood-yin goat|earth-yang tiger|water-yang rat # \u4e59\u672a\u5e74 \u620a\u5bc5\u6708 \u58ec\u5b50\u65e5\n >>> print(c.get_cycle_ymd(datetime(2015, 2, 3), id=True))\n (30, 13, 46) # 30=wood-yang horse, 13=fire-yin ox, 46=metal-yang dog\n >>> print(c.get_cycle_ymd(datetime(2015, 2, 4), id=True))\n (31, 14, 47) # 31=wood-yin goat, 14=earth-yang tiger, 47=metal-yin pig\n >>> print(c.get_cycle_ymd(datetime(2015, 2, 5), id=True))\n (31, 14, 48) # 48=water-yang rat\n\nCalculating Zassetsu\n~~~~~~~~~~~~~~~~~~~~\n\n.. code:: py\n\n >>> import eacal\n >>> import pytz\n >>> from datetime import datetime, timedelta\n >>> c = eacal.EACal(tz=pytz.timezone('Asia/Tokyo')) # for English, in Japan Standard Time\n >>> for x in c.get_annual_jp_seasonal_days(2015):\n ... if len(x) == 4:\n ... print(\"%3d %s %s %s\" % (x[1], datetime.strftime(x[2], \"%Y-%m-%d\"), datetime.strftime(x[3]-timedelta(days=1), \"%Y-%m-%d\"), x[0]))\n ... else:\n ... print(\"%3d %s %s\" % (x[1], datetime.strftime(x[2], \"%Y-%m-%d\"), x[0]))\n 1 2015-01-17 2015-02-03 doy\u014d:winter\n 2 2015-04-17 2015-05-05 doy\u014d:spring\n 3 2015-07-20 2015-08-07 doy\u014d:summer\n 4 2015-10-21 2015-11-07 doy\u014d:autumn\n 11 2015-03-18 2015-03-24 higan:spring\n 12 2015-09-20 2015-09-26 higan:autumn\n 101 2015-02-03 setsubun:the day before the start of spring\n 102 2015-05-02 hachij\u016b-hachi-ya:the 88th night after the start of spring\n 103 2015-09-01 nihyaku-t\u014dka:the 210th day after the start of spring\n 111 2015-06-11 ny\u016bbai:the beginning of rainy season\n 112 2015-07-02 hangesh\u014d:the end of field work\n\n >>> c_j = eacal.EACal(ja=True) # for Japanese, in Japan Standard Time\n >>> for x in c_j.get_annual_jp_seasonal_days(2015):\n ... if len(x) == 4:\n ... print(\"%3d %s %s %s\" % (x[1], datetime.strftime(x[2], \"%Y-%m-%d\"), datetime.strftime(x[3]-timedelta(days=1), \"%Y-%m-%d\"), x[0]))\n ... else:\n ... print(\"%3d %s %s\" % (x[1], datetime.strftime(x[2], \"%Y-%m-%d\"), x[0]))\n 1 2015-01-17 2015-02-03 \u571f\u7528:\u51ac\n 2 2015-04-17 2015-05-05 \u571f\u7528:\u6625\n 3 2015-07-20 2015-08-07 \u571f\u7528:\u590f\n 4 2015-10-21 2015-11-07 \u571f\u7528:\u79cb\n 11 2015-03-18 2015-03-24 \u5f7c\u5cb8:\u6625\n 12 2015-09-20 2015-09-26 \u5f7c\u5cb8:\u79cb\n 101 2015-02-03 \u7bc0\u5206\n 102 2015-05-02 \u516b\u5341\u516b\u591c\n 103 2015-09-01 \u4e8c\u767e\u5341\u65e5\n 111 2015-06-11 \u5165\u6885\n 112 2015-07-02 \u534a\u590f\u751f\n\nHistory\n-------\n\nVersion 0.0.3 (2015-05-17)\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Add an \"id\" option to get\\_cycle\\_year(), get\\_cycle\\_month(), and\n get\\_cycle\\_day()\n\n - this option enabled the methods to return IDs (0-59) of the\n sexagenary cycle.\n\n- Refine implementations of solar\\_term\\_finder()\n- Renumber IDs of solar terms\n\n - begins at \"start of spring\" (0=start of spring - 23=major cold)\n\nVersion 0.0.2 (2015-05-13)\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- Fixed documents (README.md, README\\_ja.md)\n- Add install\\_requires to setup.py\n\n - required packages PyEphem, pytz, and jdcal are automatically\n installed via pip\n\n- Fixed a earthly branch in English\n\nVersion 0.0.1 (2015-05-12)\n~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n- The first release.\n\nTODO\n----\n\n- a method for finding days which have a specified sexagenary cycle\n- lunisolar calendars\n- regnal years\n- adapt to Chinese cycle years\n- write unit tests\n- documentation for Windows environments", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/kiyota-yoji/EastAsiaCalendars", "keywords": null, "license": "LGPL", "maintainer": null, "maintainer_email": null, "name": "eacal", "package_url": "https://pypi.org/project/eacal/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/eacal/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/kiyota-yoji/EastAsiaCalendars" }, "release_url": "https://pypi.org/project/eacal/0.0.3/", "requires_dist": null, "requires_python": null, "summary": "Python modules for accessing East Asia calendars (Sexagenary cycle, Solar term, etc.)", "version": "0.0.3" }, "last_serial": 1550188, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "98936e6ed1bd02216f406c67502cf946", "sha256": "5f8aa1f9f9caaf2df73d177df508d3c0142b37400ebad522e68dab933ea25e84" }, "downloads": -1, "filename": "eacal-0.0.1.tar.gz", "has_sig": false, "md5_digest": "98936e6ed1bd02216f406c67502cf946", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15420, "upload_time": "2015-05-12T23:01:29", "url": "https://files.pythonhosted.org/packages/5d/4b/87c5ef518c3b6becca01efedc309d0452d0dffe0e66556f1b1aebe00f399/eacal-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "4ce8e7245d92004bb9254dfc2e148b60", "sha256": "1af93ce90114129957af9cf4995e19e4d9c349a027c782d3a25f2253df3f3110" }, "downloads": -1, "filename": "eacal-0.0.2.tar.gz", "has_sig": false, "md5_digest": "4ce8e7245d92004bb9254dfc2e148b60", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15926, "upload_time": "2015-05-13T20:27:19", "url": "https://files.pythonhosted.org/packages/bb/81/d4e14becf305bba46458009284e9bcd223a635089543d2fb06aa0a619031/eacal-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "20a9a3b261745af7839e2b8a4d852475", "sha256": "3466118b0d1399a58c54ce0e424de0338791d39e7fc8cd2cd2697f1cc91b8a81" }, "downloads": -1, "filename": "eacal-0.0.3.tar.gz", "has_sig": false, "md5_digest": "20a9a3b261745af7839e2b8a4d852475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19240, "upload_time": "2015-05-17T06:14:44", "url": "https://files.pythonhosted.org/packages/64/13/7dc86782117fcd3a09983269f8bf92b38076b7c9cf8860fec4393ce7c163/eacal-0.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "20a9a3b261745af7839e2b8a4d852475", "sha256": "3466118b0d1399a58c54ce0e424de0338791d39e7fc8cd2cd2697f1cc91b8a81" }, "downloads": -1, "filename": "eacal-0.0.3.tar.gz", "has_sig": false, "md5_digest": "20a9a3b261745af7839e2b8a4d852475", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19240, "upload_time": "2015-05-17T06:14:44", "url": "https://files.pythonhosted.org/packages/64/13/7dc86782117fcd3a09983269f8bf92b38076b7c9cf8860fec4393ce7c163/eacal-0.0.3.tar.gz" } ] }