From 2cbbc9d829e0f5d94d31038bf14353abeed7018d Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 25 Nov 2022 11:11:16 +0800 Subject: [PATCH 01/29] :bug: Fix nested list in mkdocs --- mkdocs.yaml | 1 + requirements_doc.txt | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/mkdocs.yaml b/mkdocs.yaml index 1262c66..96a3dba 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -18,6 +18,7 @@ copyright: Copyright © 2018 - 2022 Samuel.Yan markdown_extensions: - pymdownx.highlight - pymdownx.superfences + - mdx_truly_sane_lists nav: - 首页: README.md - 农历与节日: diff --git a/requirements_doc.txt b/requirements_doc.txt index 3218213..0603da3 100644 --- a/requirements_doc.txt +++ b/requirements_doc.txt @@ -1 +1,2 @@ -mkdocs-material==8.5.3 \ No newline at end of file +mkdocs-material==8.5.3 +mdx-truly-sane-lists==1.3 \ No newline at end of file From 26be8b718cfffcfcb99ee65613ad972cf9d42fe6 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sun, 12 Feb 2023 18:59:10 +0800 Subject: [PATCH 02/29] New license year --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 4c517bc..06a71fb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2022 kinegratii +Copyright (c) 2015-2023 kinegratii Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From 6ee18517fc9172a430a62e6215decf8761de2316 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 19 Dec 2023 20:31:40 +0800 Subject: [PATCH 03/29] Add FestivalLibrary.extend_term_festivals --- borax/calendars/festivals2.py | 6 +++++- docs/guides/festivals2.md | 24 +++++++++++++++++------- tests/test_festival_library.py | 5 +++++ tests/test_lunardate.py | 8 ++++++++ 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index e4cf839..8289627 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -1000,6 +1000,9 @@ def extend_unique(self, other): pass return self + def extend_term_festivals(self): + return self.extend_unique([f'400{i:02d}0' for i in range(24)]) + def delete_by_indexes(self, indexes: list): """Delete items by indexes.""" index_list = sorted(indexes, reverse=True) @@ -1195,7 +1198,8 @@ def filter(self, catalogs: Sequence = None) -> 'FestivalLibrary': def load_term_festivals(self): """Add 24-term festivals.""" - return self.extend_unique([f'400{i:02d}0' for i in range(24)]) + warnings.warn('This function is deprecated. Use extend_term_festivals instead.', DeprecationWarning) + return self.extend_term_festivals() @classmethod def load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary': diff --git a/docs/guides/festivals2.md b/docs/guides/festivals2.md index fab0e25..32bbee0 100644 --- a/docs/guides/festivals2.md +++ b/docs/guides/festivals2.md @@ -88,12 +88,12 @@ print(ld) # LunarDate(2020, 11, 18, 0) Period 是一个工具类,提供了一系列方法,这些方法均返回一个包含起始日期和终止日期的二元素元组。 -| 方法 | 描述 | -| -------------------------------------------------------- | ----------------- | -| Period.solar_year(year) | 公历year年 | -| Period.solar_month(year, month) | 公历year年month月 | -| Period.lunar_year(year) | 农历year年 | -| Period.lunar_month(year, month, leap=_IGNORE_LEAP_MONTH) | 农历year年month月 | +| 方法 | 描述 | +| ------------------------------------------------------------ | ----------------- | +| Period.solar_year(year) -> Tuple[date, date] | 公历year年 | +| Period.solar_month(year, month) -> Tuple[date, date] | 公历year年month月 | +| Period.lunar_year(year) -> Tuple[LunarDate, LunarDate] | 农历year年 | +| Period.lunar_month(year, month, leap=_IGNORE_LEAP_MONTH) -> Tuple[LunarDate, LunarDate] | 农历year年month月 | 需要注意的是,当leap为默认值且农历year年month月有闰月时,将返回的是两个月时间段的起始日期。下面是 `lunar_month` 方法不同取值的返回的结果。 @@ -376,7 +376,7 @@ Festival.get_one_day(start_date=None, end_date=None) -> Optional[WrappedDate] ### 倒计时 ```python -Festival.countdown(date_obj: MixedDate = None) -> Tuple[int, Optional[WrappedDate]]) +Festival.countdown(date_obj: MixedDate = None) -> Tuple[int, Optional[WrappedDate]] ``` 计算本 festival 匹配的日期距离 date_obj 的天数及其日期。 @@ -417,6 +417,16 @@ FestivalLibrary.extend_unique(other) 添加多个节日对象,类似于 extend 方法,但是如果code已经存在则不再加入。 +### extend_term_festivals + +> Add in v4.0.1 + +``` +FestivalLibrary.extend_term_festivals() +``` + +添加24个节气节日。 + ### delete_by_indexes > Add in v4.0.0 diff --git a/tests/test_festival_library.py b/tests/test_festival_library.py index 4253640..160558e 100644 --- a/tests/test_festival_library.py +++ b/tests/test_festival_library.py @@ -128,3 +128,8 @@ def test_filter_exclude_copy(self): fl3 = fl.exclude_(schema__in=[FestivalSchema.WEEK, FestivalSchema.TERM]) self.assertEqual(len(fl), len(fl1) + len(fl2)) self.assertEqual(len(fl3), len(fl1)) + + def test_festivals_functional_program(self): + fl = FestivalLibrary.load_builtin() + fl2 = FestivalLibrary(filter(lambda f: f.schema == FestivalSchema.SOLAR, fl)) + self.assertTrue(isinstance(fl2, FestivalLibrary)) diff --git a/tests/test_lunardate.py b/tests/test_lunardate.py index 8e4d6c0..6bfc51e 100644 --- a/tests/test_lunardate.py +++ b/tests/test_lunardate.py @@ -97,6 +97,14 @@ def test_immutable_feature(self): ld1 = LunarDate(2018, 6, 1) ld2 = LunarDate(2018, 6, 1) self.assertEqual(1, len({ld1, ld2})) + # Act as dict keys + dic = {ld1: 'day1'} + self.assertEqual('day1', dic.get(ld1)) + ld3 = LunarDate(2018, 6, 1) + self.assertEqual('day1', dic.get(ld3)) + dic[ld3] = 'day2' + self.assertEqual(1, len(dic)) + self.assertEqual('day2', dic.get(ld1)) def test_term_ganzhi_feature(self): ld = LunarDate(2018, 6, 26) From cd4c7c4031ea4165fadf10c7ada1fa5d01ceefe9 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sat, 23 Dec 2023 19:15:06 +0800 Subject: [PATCH 04/29] :construction_worker: Update development library --- requirements_dev.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/requirements_dev.txt b/requirements_dev.txt index d19263a..233e435 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,6 +1,6 @@ -nose2~=0.12 +nose2~=0.14 coverage~=5.5 -flake8~=5.0 +flake8~=6.1 mccabe~=0.6 -wheel~=0.37 +wheel~=0.42 setuptools~=65.0 \ No newline at end of file From 51246e55b66a6ff0192d534893384a72221723f2 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sun, 31 Dec 2023 15:08:57 +0800 Subject: [PATCH 05/29] :construction_worker: New build tool for PEP 518 --- .github/workflows/python-package.yml | 2 +- pyproject.toml | 42 ++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 pyproject.toml diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index b766dcd..1cf7ce3 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11'] + python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v2 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..e1593c1 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,42 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" + +[project] +name = "borax" +authors = [ + { name = "kinegratii", email = "zhenwei.yan@hotmail.com" }, +] +description = "A tool collections.(Chinese-Lunar-Calendars/Python-Patterns)" +readme = "README.md" +requires-python = ">=3.7" +keywords = ["chinese lunar calendar", "python tool"] +license = { text = "MIT License" } +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3 :: Only", + "Intended Audience :: Developers", + "License :: OSI Approved :: MIT License", + "Topic :: Software Development :: Libraries", + "Topic :: Utilities", + 'Operating System :: OS Independent' +] +dynamic = ["version"] + +[project.urls] +Homepage = "https://github.com/kinegratii/borax" +Documentation = "https://borax.readthedocs.io/zh_CN/latest/" +Repository = "https://github.com/kinegratii/borax" + +[tool.setuptools] +packages = ["borax"] +include-package-data = true + +[tool.setuptools.dynamic] +version = { attr = "borax.__version__" } From f6b16824b227c8d53a473694cb81b5eb0b45af97 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 2 Jan 2024 00:01:53 +0800 Subject: [PATCH 06/29] :tada: Happy New Year! --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 06a71fb..c1008e1 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2015-2023 kinegratii +Copyright (c) 2015-2024 kinegratii Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in From c9781625f3c891e7faf53742ef6aa12579240088 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 2 Jan 2024 00:04:38 +0800 Subject: [PATCH 07/29] :hammer: New pyproject.toml config --- .github/workflows/python-package.yml | 2 +- README.md | 9 +++++++++ docs/changelog.md | 6 ++++++ pyproject.toml | 1 - requirements_dev.txt | 3 ++- tests/test_festival_library.py | 3 +++ 6 files changed, 21 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 1cf7ce3..110087c 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v2 diff --git a/README.md b/README.md index 68a150c..5cb1f69 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,15 @@ print(FinanceNumbers.to_capital_str(decimal.Decimal(4.50))) # '肆元伍角零 - [x] [nose2](https://pypi.org/project/nose2/) | [pytest](https://docs.pytest.org/en/latest/) - [x] [Github Action](https://github.com/kinegratii/borax/actions) - [x] [Code Coverage](https://codecov.io/) +- [x] [pyproject.toml build tools](https://packaging.python.org/) + +## 项目构建 (Project Build) + +从4.0.1开始,borax 使用 *pyproject.toml* 作为项目构建的配置文件,使用以下命令构建 wheel 发行包。 + +```shell +python -m build -w +``` ## 开源协议 (License) diff --git a/docs/changelog.md b/docs/changelog.md index 727d21a..e10b973 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,11 @@ # 更新日志 +## v4.0.1 + +- 使用 *pyproject.toml* 项目构建配置文件,构建命令 `python -m build -w` +- 支持python3.12 +- 新增方法 `FestivalLibrary.extend_term_festivals` + ## v4.0.0 (20221115) - 新增基于 tkinter 的 [节日界面库](/guides/festivals-ui) diff --git a/pyproject.toml b/pyproject.toml index e1593c1..ae40714 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -35,7 +35,6 @@ Documentation = "https://borax.readthedocs.io/zh_CN/latest/" Repository = "https://github.com/kinegratii/borax" [tool.setuptools] -packages = ["borax"] include-package-data = true [tool.setuptools.dynamic] diff --git a/requirements_dev.txt b/requirements_dev.txt index 233e435..43653a7 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -3,4 +3,5 @@ coverage~=5.5 flake8~=6.1 mccabe~=0.6 wheel~=0.42 -setuptools~=65.0 \ No newline at end of file +setuptools~=65.0 +build~=1.0 \ No newline at end of file diff --git a/tests/test_festival_library.py b/tests/test_festival_library.py index 160558e..8a8e460 100644 --- a/tests/test_festival_library.py +++ b/tests/test_festival_library.py @@ -81,6 +81,9 @@ def test_calendar(self): fl = FestivalLibrary.load_builtin() days = fl.monthdaycalendar(2022, 1) self.assertEqual(6, len(days)) + fl1 = FestivalLibrary(fl) + self.assertTrue(isinstance(fl1, FestivalLibrary)) + self.assertTrue(len(fl) == len(fl1)) class FestivalLibraryCURDTestCase(unittest.TestCase): From dc8571b9fe79aacfe5aaa0d7211a9b869a8b0a59 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 5 Jan 2024 20:51:35 +0800 Subject: [PATCH 08/29] :pencil: Update document --- docs/guides/festivals2.md | 16 ++++++++++++++++ docs/guides/lunardate.md | 2 +- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/guides/festivals2.md b/docs/guides/festivals2.md index 32bbee0..61806f2 100644 --- a/docs/guides/festivals2.md +++ b/docs/guides/festivals2.md @@ -397,6 +397,22 @@ class FestivalLibrary(collections.UserList): pass ``` +创建一个节日库对象主要有两种方法: + +第一,从 borax 提供默认数据加载。 + +```python +fl = FestivalLibrary.load_builtin('basic') # 加载基础节日库,可选 empty / basic / ext1 +``` + +第二,从已有的节日创建新的节日库。 + +```python +fl1 = FestivalLibrary(fl) # 复制 fl节日库 + +fl2 = FestivalLibrary(filter(lambda f: f.schema == FestivalSchema.SOLAR, fl)) # 使用函数式编程过滤其中的公历型节日 +``` + ### get_code_set > Add in v3.5.1 diff --git a/docs/guides/lunardate.md b/docs/guides/lunardate.md index 3bc8b69..baea60f 100644 --- a/docs/guides/lunardate.md +++ b/docs/guides/lunardate.md @@ -80,7 +80,7 @@ LunarDate(2020, 4, 1, 1) **▶ 公历日期** -将公历日期转化为农历日期。 +将公历日期转化为农历日期,支持公历年月日整型数字和 `datetime.date` 两种形式。 ``` >>>ld = LunarDate.from_solar_date(2018, 8, 11) From c668207e5466b22f52a5c9aab909556871cfa97e Mon Sep 17 00:00:00 2001 From: kinegratii Date: Mon, 8 Jan 2024 08:13:33 +0800 Subject: [PATCH 09/29] :construction_worker: Migrate coverage with pyproject.toml --- .coveragerc | 17 ----------------- pyproject.toml | 18 ++++++++++++++++++ requirements_dev.txt | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) delete mode 100644 .coveragerc diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index d2ef088..0000000 --- a/.coveragerc +++ /dev/null @@ -1,17 +0,0 @@ -[run] -omit = - borax\ui\*.py - borax\apps\festival_creator.py - borax\calendars\datepicker.py - borax\calendars\ui.py -[report] -exclude_lines = - pragma: no cover - def __repr__ - if self.debug: - if settings.DEBUG - raise AssertionError - raise NotImplementedError - if 0: - if __name__ == .__main__.: - def print_(self): \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml index ae40714..e4e3f2a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,3 +39,21 @@ include-package-data = true [tool.setuptools.dynamic] version = { attr = "borax.__version__" } + +[tool.coverage.run] +omit = [ + "borax\\ui\\*.py", + "borax\\capp\\*.py", + "borax\\apps\\*.py", + "borax\\calendars\\datepicker.py", + "borax\\calendars\\ui.py" +] +[tool.coverage.report] +exclude_lines = [ + "def __repr__", + "raise AssertionError", + "raise NotImplementedError", + "if 0:", + "if __name__ == .__main__.:", + "def print_(self):" +] \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt index 43653a7..a91506d 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,5 +1,5 @@ nose2~=0.14 -coverage~=5.5 +coverage~=7.4 flake8~=6.1 mccabe~=0.6 wheel~=0.42 From 85ff27f98815940ffb4db534bb22b7151d4002c4 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 9 Jan 2024 22:37:52 +0800 Subject: [PATCH 10/29] :sparkles: Update FestivalCreator UI --- borax/apps/festival_creator.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/borax/apps/festival_creator.py b/borax/apps/festival_creator.py index bb48b0a..90fae98 100644 --- a/borax/apps/festival_creator.py +++ b/borax/apps/festival_creator.py @@ -121,7 +121,7 @@ def splash(self, text: str, timeout: int = 1000, foreground='black', **kwargs): self.after(timeout, self._clear) def _clear(self): - self.config({'text': ''}) + self.config({'text': '', 'foreground': 'black'}) class FestivalCreatePanel(ttk.Frame): @@ -137,8 +137,8 @@ def __init__(self, master=None, **kwargs): self._vm = VarModel() - n_row, s_row, l_row, w_row, t_row, btn_row, msg_row = 0, 2, 4, 6, 8, 10, 11 - empty_rows = (1, 3, 5, 7, 9) + n_row, s_row, l_row, w_row, t_row, btn_row, export_btn_row, msg_row = 0, 2, 4, 6, 8, 10, 12, 13 + empty_rows = (1, 3, 5, 7, 9, 11) ccb_w = 10 freq_choices = ((FreqConst.YEARLY, '每年'), (FreqConst.MONTHLY, '每月')) @@ -229,7 +229,8 @@ def __init__(self, master=None, **kwargs): source_cc.grid(row=btn_row, column=4) source_cc.current(0) ttk.Button(frame, text='打开文件', command=self._open_and_add).grid(row=btn_row, column=5) - ttk.Button(frame, text='导出文件', command=self._export).grid(row=btn_row, column=6) + ttk.Button(frame, text='导出文件', command=self._export).grid(row=export_btn_row, column=0, columnspan=8, + sticky='we') self._msg_label = MessageLabel(frame, text='') self._msg_label.grid(row=msg_row, column=0, columnspan=10) @@ -261,6 +262,9 @@ def _delete(self, event=None): self._festival_table.delete_selected_festivals() def _export(self, event=None): + if len(self._festival_table.tree_view.get_children()) == 0: + self._msg_label.splash('表格无数据!', foreground='red') + return filename = filedialog.asksaveasfilename(parent=self, title='保存到', defaultextension='.csv', filetypes=(('csv', 'csv'),)) if filename: From 1b1fb0cd4a163ea6c5d53489381b3adedd963a3d Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 10 Jan 2024 00:28:56 +0800 Subject: [PATCH 11/29] :sparkles: Update FestivalCreator UI layout --- borax/__init__.py | 2 +- borax/apps/festival_creator.py | 52 +++++++++++++++++++------------ borax/calendars/ui.py | 5 +++ borax/capp/__init__.py | 0 docs/guides/borax_calendar_app.md | 28 +++++++++++++++++ 5 files changed, 66 insertions(+), 21 deletions(-) create mode 100644 borax/capp/__init__.py create mode 100644 docs/guides/borax_calendar_app.md diff --git a/borax/__init__.py b/borax/__init__.py index 17f8df3..c3df011 100644 --- a/borax/__init__.py +++ b/borax/__init__.py @@ -1,2 +1,2 @@ -__version__ = '4.0.0' +__version__ = '4.1.0' __author__ = 'kinegratii' diff --git a/borax/apps/festival_creator.py b/borax/apps/festival_creator.py index 90fae98..880ad24 100644 --- a/borax/apps/festival_creator.py +++ b/borax/apps/festival_creator.py @@ -9,7 +9,7 @@ from borax.calendars.lunardate import TextUtils, TERMS_CN from borax.calendars.ui import FestivalTableFrame -__all__ = ['FestivalCreatePanel'] +__all__ = ['FestivalCreatePanel', 'start_festival_creator'] class ChoicesCombobox(ttk.Combobox): @@ -134,6 +134,8 @@ def __init__(self, master=None, **kwargs): lf.pack(side='top', fill='x', padx=10, pady=10, expand=True) ttk.Label(lf, text=' 本工具支持创建公历型、农历型、星期型、节气型节日,并导出为csv文件。').pack( side='top', padx=5, pady=5, fill='both', expand=True) + main_frame = tk.Frame(self) + main_frame.pack(side='top', fill='both') self._vm = VarModel() @@ -152,8 +154,8 @@ def __init__(self, master=None, **kwargs): delta_choices = [(0, '当日'), (-1, '之前'), (1, '之后')] gz_day_choices = list(TextUtils.BRANCHES + TextUtils.STEMS) - frame = ttk.Frame(self) - frame.pack(side='top', expand=True, fill=tk.BOTH, padx=10, pady=10) + frame = ttk.Frame(main_frame) + frame.pack(side='left', expand=True, fill=tk.BOTH, padx=10, pady=10) ttk.Label(frame, text='名称').grid(row=n_row, column=0) ttk.Entry(frame, textvariable=self._vm.vars['name']).grid(row=n_row, column=1, columnspan=3, sticky='we') ttk.Label(frame, text='分类').grid(row=n_row, column=4) @@ -219,17 +221,7 @@ def __init__(self, master=None, **kwargs): ttk.Label(frame, text='日').grid(row=t_row, column=7) # Toolbar 8 cols - ttk.Button(frame, text='创建节日', command=self._create).grid(row=btn_row, column=0) - ttk.Button(frame, text='删除所选', command=self._delete).grid(row=btn_row, column=1) - ttk.Label(frame, text='节日源:').grid(row=btn_row, column=3) - source_choices = (('empty', '空白'), ('basic', '基础(basic)'), ('ext1', '扩展1(ext1)'), ('custom', '自定义')) - self._source_var = tk.StringVar() - source_cc = ChoicesCombobox(frame, choices=source_choices, val_variable=self._source_var, - value_selected=self._on_source_selected, width=ccb_w) - source_cc.grid(row=btn_row, column=4) - source_cc.current(0) - ttk.Button(frame, text='打开文件', command=self._open_and_add).grid(row=btn_row, column=5) - ttk.Button(frame, text='导出文件', command=self._export).grid(row=export_btn_row, column=0, columnspan=8, + ttk.Button(frame, text='创建节日', command=self._create).grid(row=btn_row, column=0, columnspan=8, sticky='we') self._msg_label = MessageLabel(frame, text='') @@ -245,22 +237,42 @@ def __init__(self, master=None, **kwargs): frame2 = ttk.Frame(self) frame2.pack(side='top', expand=True, fill=tk.BOTH) ttk.Label(frame2, textvariable=self._festival_detail).pack(side='top') + ttk.Separator(main_frame, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) + right_frame = tk.Frame(main_frame) + right_frame.pack(side='right', expand=True, fill='both', padx=10, pady=10) + toolbar_frame = tk.Frame(right_frame) + toolbar_frame.pack(side='top', fill='x') + ttk.Label(toolbar_frame, text='节日源:').grid(row=0, column=0) + source_choices = (('empty', '空白'), ('basic', '基础(basic)'), ('ext1', '扩展1(ext1)'), ('custom', '自定义')) + self._source_var = tk.StringVar() + source_cc = ChoicesCombobox(toolbar_frame, choices=source_choices, val_variable=self._source_var, + value_selected=self._on_source_selected, width=ccb_w) + source_cc.grid(row=0, column=1) + source_cc.current(0) + ttk.Button(toolbar_frame, text='打开/加载', command=self._open_and_add).grid(row=0, column=2) + ttk.Button(toolbar_frame, text='删除所选', command=self._delete).grid(row=0, column=3) + ttk.Button(toolbar_frame, text='清空数据', command=self._clear_data).grid(row=0, column=4) + ttk.Button(toolbar_frame, text='导出文件', command=self._export).grid(row=0, column=5) - columns = (("name", 100), ("description", 200), ("code", 120), ("next_day", 200), ("countdown", 100)) - self._festival_table = FestivalTableFrame(self, festival_source='empty', columns=columns) - self._festival_table.pack(side='top', expand=True, fill=tk.BOTH, padx=10, pady=10) + columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) + self._festival_table = FestivalTableFrame(right_frame, festival_source='empty', columns=columns) + self._festival_table.pack(side='top', expand=True, fill=tk.BOTH) def _create(self, event=None): try: festival = self._vm.validate() self._festival_table.add_festival(festival) - self._festival_detail.set(f'{festival.description} {festival.encode()}') + self._msg_label.splash(f'{festival.description} {festival.encode()}', foreground='green') except ValidateError as e: self._msg_label.splash(str(e), foreground='red') def _delete(self, event=None): self._festival_table.delete_selected_festivals() + def _clear_data(self, event=None): + self._festival_table.clear_data() + self._msg_label.splash('清空成功!', foreground='green') + def _export(self, event=None): if len(self._festival_table.tree_view.get_children()) == 0: self._msg_label.splash('表格无数据!', foreground='red') @@ -290,7 +302,7 @@ def _load_new_festival_library(self, f_library: FestivalLibrary): self._msg_label.splash(f'加载成功,共{self._festival_table.row_count}条', foreground='green') -def main(): +def start_festival_creator(): root = tk.Tk() root.title('节日创建工具') root.resizable(False, False) @@ -300,4 +312,4 @@ def main(): if __name__ == '__main__': - main() + start_festival_creator() diff --git a/borax/calendars/ui.py b/borax/calendars/ui.py index 668d2a6..fac9451 100644 --- a/borax/calendars/ui.py +++ b/borax/calendars/ui.py @@ -239,3 +239,8 @@ def delete_selected_festivals(self): indexes.append(self._tree.index(selected_item)) self._tree.delete(selected_item) self._library.delete_by_indexes(indexes) + + def clear_data(self): + iid_values = self._tree.get_children() + self._tree.delete(*iid_values) + self._library = FestivalLibrary() diff --git a/borax/capp/__init__.py b/borax/capp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/docs/guides/borax_calendar_app.md b/docs/guides/borax_calendar_app.md new file mode 100644 index 0000000..8ade6d5 --- /dev/null +++ b/docs/guides/borax_calendar_app.md @@ -0,0 +1,28 @@ +# Borax日历应用程序 + +> New in 4.1.0 + +从 Borax 4.1.0 开始,Borax 提供两个基于 Borax.Calendar 的日历应用。 + +| 应用程序 | 功能 | 启动命令 | +| ---- | ---- | ---- | +| 日历应用 | 公农历日期显示,及其他日期工具 | `python -m borax.capp` | +| 节日创建器 | 创建节日库 | `python -m borax.capp creator` | + +## 日历应用 + +![borax_calendar](../images/app_borax_calendar.png) + +主要功能: + +- 显示带有基本节日的日历 +- 日期计算工具 + +## 节日创建器 + +![festival_creator](../images/app_festival_creator.png) + +主要功能: + +- 创建节日 +- 导出 csv文件 \ No newline at end of file From 580a64da222ef3470835a427ee696f7144131f81 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 10 Jan 2024 00:29:43 +0800 Subject: [PATCH 12/29] :construction_worker: Migrate mkdos-material to 9.5.3 --- docs/README.md | 4 +++- docs/_sidebar.md | 33 ----------------------------- docs/changelog.md | 17 ++++++++++----- docs/index.html | 49 -------------------------------------------- mkdocs.yaml | 3 ++- requirements_doc.txt | 2 +- 6 files changed, 18 insertions(+), 90 deletions(-) delete mode 100644 docs/_sidebar.md delete mode 100644 docs/index.html diff --git a/docs/README.md b/docs/README.md index b09dd75..33d0ed8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,4 +1,4 @@ -# Borax - python3工具库 - 中国农历/中文数字/设计模式/树形结构 +# Borax - python农历&节日工具库 - 中文数字/设计模式/树形结构 [![PyPI](https://img.shields.io/pypi/v/borax.svg)](https://pypi.org/project/borax) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/borax.svg)](https://pypi.org/project/borax) @@ -29,6 +29,8 @@ Borax 是一个Python3工具集合库。 ## 开发(Development) +- **开发环境**: python3.11.7 +- **集成测试环境**: python3.7 - 3.12 - **代码仓库**:[Github](https://github.com/kinegratii/borax/) | [Gitee (镜像)](https://gitee.com/kinegratii/borax) - **项目开发**: [版本日志](changelog) | [技术文档(外链)](http://fd8cc08f.wiz06.com/wapp/pages/view/share/s/3Zzc2f0LJQ3w2TWIQb0ZMSna1zg4gs1vPQmb2vlh9M2zhqK8) - **发布日志**: [v3.5](release-note/v350) | [v3.5.6](release-note/v356) | [v4.0.0](release-note/v400) diff --git a/docs/_sidebar.md b/docs/_sidebar.md deleted file mode 100644 index 7dace10..0000000 --- a/docs/_sidebar.md +++ /dev/null @@ -1,33 +0,0 @@ -- **● 入门与教程** - - [首页](README) - - [农历与节日](guides/festivals2-usage) -- **● Borax.Calendar** - - [农历](guides/lunardate) - - [节日(festivals2)](guides/festivals2) - - [日期节日序列化](guides/festivals2-serialize) - - [节日(festivals)](guides/festival) - - [生日](guides/birthday) - - [工具类](guides/calendars-utils) - - [节日界面库 New!](guides/festivals2-ui) -- **● Borax.Datasets** - - [数据连接(Join)](guides/join) - - [列选择器(fetch)](guides/fetch) -- **● Borax.DataStructures** - - [树形结构](guides/tree) - - [cjson](guides/cjson) -- **● Borax.Numbers** - - [中文数字](guides/numbers) - - [百分数](guides/percentage) -- **● Borax.Pattern** - - [单例模式](guides/singleton) - - [选项Choices](guides/choices) -- **● Borax.Utils** - - [字符串工具模块](guides/strings) -- **● 其他** - - [序列号生成器(Pool)](guides/serial_pool) - - [Tkinter界面](guides/ui) -- **● 发布日志** - - [v3.5.6](release-note/v356) - - [v3.5](release-note/v350) -- **● 项目开发** - - [版本日志](changelog) \ No newline at end of file diff --git a/docs/changelog.md b/docs/changelog.md index e10b973..8752124 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,14 +1,21 @@ # 更新日志 -## v4.0.1 +## v4.1.0 +- 功能更新 + - 新增 [Borax日历应用](/guides/borax_calendar_app) + - 新增方法 `FestivalLibrary.extend_term_festivals` +- 项目构建 + - 本地开发环境更新至 python3.11.7 + - 使用 *pyproject.toml* 项目构建配置文件,构建命令 `python -m build -w` + - 支持python3.12 +- 项目文档 + - mkdocs-material 更新至 9.5.3 + - 不再支持 docsify 构建(index.html 冲突) -- 使用 *pyproject.toml* 项目构建配置文件,构建命令 `python -m build -w` -- 支持python3.12 -- 新增方法 `FestivalLibrary.extend_term_festivals` ## v4.0.0 (20221115) -- 新增基于 tkinter 的 [节日界面库](/guides/festivals-ui) +- 新增基于 tkinter 的 [节日界面库](/guides/festivals2-ui) - 移除源代码文件编码声明行 - 移除 `borax.calendars.festival` 模块 - 修正 `LunarDate` 显示星期错误的问题 ([#49](https://github.com/kinegratii/borax/issues/49)) diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 6ae88b9..0000000 --- a/docs/index.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - Borax - Python3工具集合库 - - - - - - - -
- - - - - - diff --git a/mkdocs.yaml b/mkdocs.yaml index 96a3dba..623254e 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -14,13 +14,14 @@ extra: link: https://github.com/kinegratii/borax - icon: fontawesome/brands/python link: https://pypi.org/project/borax -copyright: Copyright © 2018 - 2022 Samuel.Yan +copyright: Copyright © 2018 - 2024 Samuel.Yan markdown_extensions: - pymdownx.highlight - pymdownx.superfences - mdx_truly_sane_lists nav: - 首页: README.md + - 应用: guides/borax_calendar_app.md - 农历与节日: - 农历: guides/lunardate.md - 节日: guides/festivals2.md diff --git a/requirements_doc.txt b/requirements_doc.txt index 0603da3..00c715b 100644 --- a/requirements_doc.txt +++ b/requirements_doc.txt @@ -1,2 +1,2 @@ -mkdocs-material==8.5.3 +mkdocs-material==9.5.3 mdx-truly-sane-lists==1.3 \ No newline at end of file From 4dfc186c7827a11df8718042ee2b7f2576c004ef Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 10 Jan 2024 00:31:12 +0800 Subject: [PATCH 13/29] :sparkles: Update FestivalCreator UI layout --- borax/capp/__main__.py | 359 +++++++++++++++++++++++++++ docs/images/app_borax_calendar.png | Bin 0 -> 278686 bytes docs/images/app_festival_creator.png | Bin 0 -> 89943 bytes 3 files changed, 359 insertions(+) create mode 100644 borax/capp/__main__.py create mode 100644 docs/images/app_borax_calendar.png create mode 100644 docs/images/app_festival_creator.png diff --git a/borax/capp/__main__.py b/borax/capp/__main__.py new file mode 100644 index 0000000..89328d8 --- /dev/null +++ b/borax/capp/__main__.py @@ -0,0 +1,359 @@ +""" +显示月历 +工具 +""" +import tkinter as tk +import webbrowser +from datetime import date, datetime, timedelta +from tkinter import ttk +from tkinter.messagebox import showinfo +from typing import Optional + +from borax import __version__ as borax_version +from borax.apps.festival_creator import FestivalCreatePanel, start_festival_creator +from borax.calendars.festivals2 import FestivalLibrary, WrappedDate +from borax.calendars.lunardate import TextUtils, TERMS_CN +from borax.calendars.ui import CalendarFrame, FestivalTableFrame + +library = FestivalLibrary.load_builtin().sort_by_countdown() + +__VERSION__ = '1.1.0' + +PROJECT_URLS = { + 'home': 'https://github.com/kinegratii/borax' +} + +style: ttk.Style = None + + +class WDateVar(tk.StringVar): + + def __init__(self, master=None, value=None, name=None, date_fmt='%Y-%m-%d'): + tk.Variable.__init__(self, master, value, name) + self._date_object = None + self._date_fmt = date_fmt + + def set_date(self, d: WrappedDate): + self._date_object = d + self.set(d.solar.strftime(self._date_fmt)) + + def get_date(self) -> Optional[WrappedDate]: + raw = self.get() + if raw: + solar = datetime.strptime(raw, self._date_fmt) + return WrappedDate(solar.date()) + else: + return None + + +class WCalendarToolDlg(ttk.Frame): + def __init__(self, master=None): + super().__init__(master) + + notebook = ttk.Notebook(self) + notebook.pack(side='left', expand=True, fill=tk.BOTH, padx=5, pady=5) + + self._current_selected_index = 0 + self._data_stores = { + 'd1': WDateVar(), + 'd2': WDateVar(), + 'd3': WDateVar(), + } + + self._entry_hints = { + 'd1': '第一个日期', + 'd2': '第二个日期', + 'd3': '起始日期' + } + + self._tool_form_frame = ttk.Frame(notebook) + self._tool_form_frame.pack(side='left', expand=True, fill=tk.BOTH) + + ttk.Label(self._tool_form_frame, text='第一个日期').grid(row=0, column=0, columnspan=2) + self.day1_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d1']) + self.day1_entry.bind('', lambda event: self.entry_picker_linked(event, 'd1')) + self.day1_entry.grid(row=0, column=2, columnspan=2) + ttk.Label(self._tool_form_frame, text='第二个日期').grid(row=1, column=0, columnspan=2) + self.day2_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d2']) + self.day2_entry.bind('', lambda event: self.entry_picker_linked(event, 'd2')) + self.day2_entry.grid(row=1, column=2, columnspan=2) + + ttk.Button(self._tool_form_frame, text='计算', command=self.run_date_delta).grid( + row=2, column=0, columnspan=4, pady=8) + self.result1_label = ttk.Label(self._tool_form_frame, text='') + self.result1_label.grid(row=3, column=0, columnspan=4) + notebook.add(self._tool_form_frame, text='日期间隔', padding=4) + + deduction_frame = ttk.Frame(notebook) + notebook.add(deduction_frame, text='日期推导', padding=4) + ttk.Label(deduction_frame, text='起始日期').grid(row=0, column=0, columnspan=2) + self.day3_entry = ttk.Entry(deduction_frame, textvariable=self._data_stores['d3']) + self.day3_entry.bind('', lambda event: self.entry_picker_linked(event, 'd3')) + self.day3_entry.grid(row=0, column=2, columnspan=2) + self.day_delta_s = tk.IntVar() + for i, item in enumerate([('向前', -1), ('向后', 1)]): + t, val = item + tk.Radiobutton(deduction_frame, text=t, value=val, variable=self.day_delta_s).grid(row=1, column=i * 2 + 1, + columnspan=2) + ttk.Label(deduction_frame, text='间隔天数').grid(row=2, column=0, columnspan=2) + self.delta_days = tk.IntVar() + delta_days_com = ttk.Combobox(deduction_frame, width=6, values=[30, 60, 90, 100, 200, 300, 1000], + textvariable=self.delta_days) + delta_days_com.grid(row=2, column=2, columnspan=2, sticky=tk.E + tk.W + tk.N + tk.S) + ttk.Button(deduction_frame, text='计算', command=self.run_date_deduction).grid( + row=3, column=0, columnspan=4, pady=8) + self.result2_label = ttk.Label(deduction_frame, text='') + self.result2_label.grid(row=4, column=0, columnspan=4) + # init + self.day_delta_s.set(1) + + # Date Pick Panel + right_frame = ttk.Frame(self) + right_frame.pack(side='left') + + self.picker_hint_label = ttk.Label(right_frame, text='请选择第一个日期') + self.picker_hint_label.pack(side='top', fill=tk.X) + date_picker = CalendarFrame(right_frame, festival_source=library) + date_picker.bind_date_selected(self.on_date_picked) + date_picker.pack(side='top', expand=True, fill=tk.X) + + def entry_picker_linked(self, event, entry_label: str): + self._current_selected_index = entry_label + self.picker_hint_label.config(text=f'请选择{self._entry_hints[entry_label]}') + + def on_date_picked(self, wd: WrappedDate): + if self._current_selected_index in self._data_stores: + self._data_stores[self._current_selected_index].set_date(wd) + + def run_date_delta(self): + d1, d2 = self._data_stores['d1'].get_date(), self._data_stores['d2'].get_date() + if d1 and d2: + ndays = (d2.solar - d1.solar).days + self.result1_label.config(text=f'相差 {ndays} 天') + else: + self.result1_label.config(text='未选择日期,无法计算') + + def run_date_deduction(self): + d3 = self._data_stores['d3'].get_date() + if d3: + result2 = d3 + timedelta(self.day_delta_s.get() * self.delta_days.get()) + self.result2_label.config(text=str(result2)) + else: + self.result2_label.config(text='未选择日期,无法计算') + + +class DateDetailFrame(ttk.LabelFrame): + def __init__(self, master=None, **kwargs): + super().__init__(master, text='*****', labelanchor='n', **kwargs) + + self.label_widgets = {} + + # 4 = 121 22 + # -XX- + self.label_widgets['solar_day'] = ttk.Label(self, text='5', font=('Helvatical bold', 40)) + self.label_widgets['solar_day'].grid(row=0, column=0, rowspan=2, columnspan=4) + self.label_widgets['solar_ym'] = ttk.Label(self, text='2022年5月') + self.label_widgets['solar_ym'].grid(row=2, column=0, columnspan=4) + + self.label_widgets['solar_lunar'] = ttk.Label(self, text='四月初三') + self.label_widgets['solar_lunar'].grid(row=0, column=5, columnspan=2) + self.label_widgets['solar_week'] = ttk.Label(self, text='星期三') + self.label_widgets['solar_week'].grid(row=0, column=7, columnspan=2) + self.label_widgets['solar_gz'] = ttk.Label(self, text='星期三') + self.label_widgets['solar_gz'].grid(row=1, column=5, columnspan=4) + self.label_widgets['festival'] = ttk.Label(self, text='') + self.label_widgets['festival'].grid(row=2, column=5, columnspan=4) + + def set_selected_date(self, wd: WrappedDate = None): + """Show a date detail in panel.Today is shown if wd is None.""" + if wd is None: + wd = WrappedDate(date.today()) + sd, ld = wd.solar, wd.lunar + + self.label_widgets['solar_day'].config(text=str(sd.day)) + self.label_widgets['solar_ym'].config(text=sd.strftime('%Y年%m月')) + self.label_widgets['solar_lunar'].config(text=ld.strftime('%L%M月%D')) + week_cn = ld.cn_week + self.label_widgets['solar_week'].config(text=f'星期{week_cn}') + self.label_widgets['solar_gz'].config(text=ld.gz_str()) + self.label_widgets['festival'].config(text=' '.join(library.get_festival_names(sd))) + + +class GanzhiPanel(ttk.Frame): + def __init__(self, master=None, **kwargs): + super().__init__(master, **kwargs) + + gz_grid_frame = ttk.Frame(self) + for offset in range(60): + row, col = offset // 10, offset % 10 + btn = tk.Button(gz_grid_frame, text=TextUtils.get_gz_cn(offset), width=3, height=1, + command=lambda go=offset: self._show_years(go), relief=tk.GROOVE) + btn.grid(row=row, column=col, ipadx=5, ipady=5) + gz_grid_frame.pack(side='left') + + self.year_list = ttk.Treeview(self, column=("年份",), show='headings', height=5) + self.year_list.column("# 1", anchor=tk.CENTER) + self.year_list.heading("# 1", text="年份") + self.year_list.pack(side='left', expand=True, fill=tk.BOTH) + + def _show_years(self, gz_offset: int): + for item in self.year_list.get_children(): + self.year_list.delete(item) + if 0 < gz_offset < 36: + start_year = 1924 + gz_offset + else: + start_year = 1864 + gz_offset + for year in range(start_year, 2101, 60): + self.year_list.insert('', 'end', text="1", values=(f"{year}",)) + + +class TermPanel(ttk.Frame): + def __init__(self, master=None, **kwargs): + super().__init__(master, **kwargs) + + columns = ("序号", "节气", "太阳地心视黄经(度)") + self.term_table = ttk.Treeview(self, column=columns, show='headings', height=5) + self.term_table.pack(side='top', expand=True, fill=tk.BOTH) + for i, name in enumerate(columns, start=1): + self.term_table.column(f"# {i}", anchor=tk.CENTER) + self.term_table.heading(f"# {i}", text=name) + + for tindex, tname in enumerate(TERMS_CN): # 1-285 + dg = (285 + 15 * tindex) % 360 + self.term_table.insert('', 'end', text="1", values=(tindex + 1, tname, dg)) + + +class CApp(ttk.Frame): + def __init__(self, master=None): + super().__init__(master) + left_frame = ttk.Frame(self) + left_frame.pack(side='left', expand=True, fill=tk.Y, padx=10, pady=10) + self.detail_frame = DateDetailFrame(left_frame) + self.detail_frame.set_selected_date() + self.detail_frame.pack(side='top', expand=True, fill=tk.BOTH, pady=5) + + self.cal_panel = CalendarFrame(left_frame, festival_source=library) + self.cal_panel.pack(side='top', expand=True, fill=tk.BOTH) + self.cal_panel.bind_date_selected(self.on_show_date_detail) + + ttk.Separator(self, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) + columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) + cs = FestivalTableFrame(self, columns=columns, festival_source=library) + cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) + + # cs.update_data() + self._style_var = tk.StringVar() + self.create_top_menu() + self._tool_dlg = None + self._gz_dlg = None + self._festival_create_dlg = None + + def create_top_menu(self): + top = self.winfo_toplevel() + menu_bar = tk.Menu(top) + top['menu'] = menu_bar + + global style + + viewmenu = tk.Menu(menu_bar, tearoff=0) + for name in style.theme_names(): + viewmenu.add_radiobutton(label=name, variable=self._style_var, command=self._change_theme) + menu_bar.add_cascade(label='界面主题', menu=viewmenu) + menu_bar.add_command(label='日期计算', command=self.start_tool_dlg) + menu_bar.add_command(label='干支节气', command=self.start_gz_dlg) + menu_bar.add_command(label='创建节日', command=self.start_festival_dlg) + settings_menu = tk.Menu(menu_bar) + settings_menu.add_command(label='节日源') + menu_bar.add_cascade(label='设置', menu=settings_menu) + about_menu = tk.Menu(menu_bar) + about_menu.add_command(label='项目主页', command=lambda: webbrowser.open(PROJECT_URLS['home'])) + about_menu.add_command(label='关于软件', command=self.show_about_info) + menu_bar.add_cascade(label='关于', menu=about_menu) + + def _change_theme(self): + global style + style.theme_use(self._style_var.get()) + + def on_show_date_detail(self, wd: WrappedDate): + self.detail_frame.set_selected_date(wd) + + def _create_tool_dialog(self): + self._tool_dlg = tk.Toplevel(self) + self._tool_dlg.resizable(False, False) + d = WCalendarToolDlg(self._tool_dlg) + d.pack(side='top') + self._tool_dlg.lift() + + def start_tool_dlg(self): + if self._tool_dlg is None: + self._create_tool_dialog() + return + try: + self._tool_dlg.lift() + except tk.TclError: + self._create_tool_dialog() + + def _create_gz_dialog(self): + self._gz_dlg = tk.Toplevel(self) + self._gz_dlg.resizable(False, False) + notebook = ttk.Notebook(self._gz_dlg) + d = GanzhiPanel(notebook) + notebook.add(d, text='干支') + tp = TermPanel(notebook) + notebook.add(tp, text='节气') + notebook.pack(side='top') + self._gz_dlg.lift() + + def start_gz_dlg(self): + if self._gz_dlg is None: + self._create_gz_dialog() + return + try: + self._gz_dlg.lift() + except tk.TclError: + self._create_gz_dialog() + + def _create_festival_dialog(self): + self._festival_create_dlg = tk.Toplevel(self) + self._festival_create_dlg.title('创建节日') + self._festival_create_dlg.resizable(False, False) + festival_create_frame = FestivalCreatePanel(self._festival_create_dlg) + festival_create_frame.pack(side='top') + self._festival_create_dlg.lift() + + def start_festival_dlg(self): + if self._festival_create_dlg is None: + self._create_festival_dialog() + return + try: + self._festival_create_dlg.lift() + except tk.TclError: + self._create_festival_dialog() + + def show_about_info(self): + showinfo('关于', f' 日历v{__VERSION__}\n\n Powered by Borax{borax_version}') + + +def start_calendar_app(): + root = tk.Tk() + rw, rh = 920, 460 + x, y = int(root.winfo_screenwidth() / 2 - rw / 2), int(root.winfo_screenheight() / 2 - rh / 2) + root.geometry(f"{rw}x{rh}+{x}+{y}") + root.resizable(False, False) + root.title(f'日历 - v{__VERSION__}') + global style + style = ttk.Style(root) + # style.theme_use('alt') + app = CApp(root) + app.pack(expand=True, fill=tk.BOTH) + root.mainloop() + + +if __name__ == '__main__': + import sys + + pro_args = sys.argv[1:] + if 'creator' in pro_args: + start_festival_creator() + else: + start_calendar_app() diff --git a/docs/images/app_borax_calendar.png b/docs/images/app_borax_calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..b2b780822de75817a206bd5f3b9315ec08de5fac GIT binary patch literal 278686 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

BZ>e37iYKe2nN@XM^E%TZ_SJ6wVJy8 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%0AB_M%Z=4+Nv|=lWkzO(DS{q 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/images/app_festival_creator.png b/docs/images/app_festival_creator.png new file mode 100644 index 0000000000000000000000000000000000000000..03f7be72a8233aef571a1f63492b184f02ea7a22 GIT binary patch literal 89943 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 Y1Ln@g)Q?X_v;Y7A07*qoM6N<$f^>6XW&i*H literal 0 HcmV?d00001 From 7b569d9f3cac62ea93f0a4dc5f559400c9cabb74 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Thu, 11 Jan 2024 01:36:35 +0800 Subject: [PATCH 14/29] :sparkles: Refactor borax.capp --- borax/apps/__init__.py | 0 borax/capp/__main__.py | 352 +--------------------- borax/capp/borax_calendar_app.py | 353 +++++++++++++++++++++++ borax/{apps => capp}/festival_creator.py | 4 +- 4 files changed, 357 insertions(+), 352 deletions(-) delete mode 100644 borax/apps/__init__.py create mode 100644 borax/capp/borax_calendar_app.py rename borax/{apps => capp}/festival_creator.py (99%) diff --git a/borax/apps/__init__.py b/borax/apps/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/borax/capp/__main__.py b/borax/capp/__main__.py index 89328d8..5e81ac5 100644 --- a/borax/capp/__main__.py +++ b/borax/capp/__main__.py @@ -1,353 +1,5 @@ -""" -显示月历 -工具 -""" -import tkinter as tk -import webbrowser -from datetime import date, datetime, timedelta -from tkinter import ttk -from tkinter.messagebox import showinfo -from typing import Optional - -from borax import __version__ as borax_version -from borax.apps.festival_creator import FestivalCreatePanel, start_festival_creator -from borax.calendars.festivals2 import FestivalLibrary, WrappedDate -from borax.calendars.lunardate import TextUtils, TERMS_CN -from borax.calendars.ui import CalendarFrame, FestivalTableFrame - -library = FestivalLibrary.load_builtin().sort_by_countdown() - -__VERSION__ = '1.1.0' - -PROJECT_URLS = { - 'home': 'https://github.com/kinegratii/borax' -} - -style: ttk.Style = None - - -class WDateVar(tk.StringVar): - - def __init__(self, master=None, value=None, name=None, date_fmt='%Y-%m-%d'): - tk.Variable.__init__(self, master, value, name) - self._date_object = None - self._date_fmt = date_fmt - - def set_date(self, d: WrappedDate): - self._date_object = d - self.set(d.solar.strftime(self._date_fmt)) - - def get_date(self) -> Optional[WrappedDate]: - raw = self.get() - if raw: - solar = datetime.strptime(raw, self._date_fmt) - return WrappedDate(solar.date()) - else: - return None - - -class WCalendarToolDlg(ttk.Frame): - def __init__(self, master=None): - super().__init__(master) - - notebook = ttk.Notebook(self) - notebook.pack(side='left', expand=True, fill=tk.BOTH, padx=5, pady=5) - - self._current_selected_index = 0 - self._data_stores = { - 'd1': WDateVar(), - 'd2': WDateVar(), - 'd3': WDateVar(), - } - - self._entry_hints = { - 'd1': '第一个日期', - 'd2': '第二个日期', - 'd3': '起始日期' - } - - self._tool_form_frame = ttk.Frame(notebook) - self._tool_form_frame.pack(side='left', expand=True, fill=tk.BOTH) - - ttk.Label(self._tool_form_frame, text='第一个日期').grid(row=0, column=0, columnspan=2) - self.day1_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d1']) - self.day1_entry.bind('', lambda event: self.entry_picker_linked(event, 'd1')) - self.day1_entry.grid(row=0, column=2, columnspan=2) - ttk.Label(self._tool_form_frame, text='第二个日期').grid(row=1, column=0, columnspan=2) - self.day2_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d2']) - self.day2_entry.bind('', lambda event: self.entry_picker_linked(event, 'd2')) - self.day2_entry.grid(row=1, column=2, columnspan=2) - - ttk.Button(self._tool_form_frame, text='计算', command=self.run_date_delta).grid( - row=2, column=0, columnspan=4, pady=8) - self.result1_label = ttk.Label(self._tool_form_frame, text='') - self.result1_label.grid(row=3, column=0, columnspan=4) - notebook.add(self._tool_form_frame, text='日期间隔', padding=4) - - deduction_frame = ttk.Frame(notebook) - notebook.add(deduction_frame, text='日期推导', padding=4) - ttk.Label(deduction_frame, text='起始日期').grid(row=0, column=0, columnspan=2) - self.day3_entry = ttk.Entry(deduction_frame, textvariable=self._data_stores['d3']) - self.day3_entry.bind('', lambda event: self.entry_picker_linked(event, 'd3')) - self.day3_entry.grid(row=0, column=2, columnspan=2) - self.day_delta_s = tk.IntVar() - for i, item in enumerate([('向前', -1), ('向后', 1)]): - t, val = item - tk.Radiobutton(deduction_frame, text=t, value=val, variable=self.day_delta_s).grid(row=1, column=i * 2 + 1, - columnspan=2) - ttk.Label(deduction_frame, text='间隔天数').grid(row=2, column=0, columnspan=2) - self.delta_days = tk.IntVar() - delta_days_com = ttk.Combobox(deduction_frame, width=6, values=[30, 60, 90, 100, 200, 300, 1000], - textvariable=self.delta_days) - delta_days_com.grid(row=2, column=2, columnspan=2, sticky=tk.E + tk.W + tk.N + tk.S) - ttk.Button(deduction_frame, text='计算', command=self.run_date_deduction).grid( - row=3, column=0, columnspan=4, pady=8) - self.result2_label = ttk.Label(deduction_frame, text='') - self.result2_label.grid(row=4, column=0, columnspan=4) - # init - self.day_delta_s.set(1) - - # Date Pick Panel - right_frame = ttk.Frame(self) - right_frame.pack(side='left') - - self.picker_hint_label = ttk.Label(right_frame, text='请选择第一个日期') - self.picker_hint_label.pack(side='top', fill=tk.X) - date_picker = CalendarFrame(right_frame, festival_source=library) - date_picker.bind_date_selected(self.on_date_picked) - date_picker.pack(side='top', expand=True, fill=tk.X) - - def entry_picker_linked(self, event, entry_label: str): - self._current_selected_index = entry_label - self.picker_hint_label.config(text=f'请选择{self._entry_hints[entry_label]}') - - def on_date_picked(self, wd: WrappedDate): - if self._current_selected_index in self._data_stores: - self._data_stores[self._current_selected_index].set_date(wd) - - def run_date_delta(self): - d1, d2 = self._data_stores['d1'].get_date(), self._data_stores['d2'].get_date() - if d1 and d2: - ndays = (d2.solar - d1.solar).days - self.result1_label.config(text=f'相差 {ndays} 天') - else: - self.result1_label.config(text='未选择日期,无法计算') - - def run_date_deduction(self): - d3 = self._data_stores['d3'].get_date() - if d3: - result2 = d3 + timedelta(self.day_delta_s.get() * self.delta_days.get()) - self.result2_label.config(text=str(result2)) - else: - self.result2_label.config(text='未选择日期,无法计算') - - -class DateDetailFrame(ttk.LabelFrame): - def __init__(self, master=None, **kwargs): - super().__init__(master, text='*****', labelanchor='n', **kwargs) - - self.label_widgets = {} - - # 4 = 121 22 - # -XX- - self.label_widgets['solar_day'] = ttk.Label(self, text='5', font=('Helvatical bold', 40)) - self.label_widgets['solar_day'].grid(row=0, column=0, rowspan=2, columnspan=4) - self.label_widgets['solar_ym'] = ttk.Label(self, text='2022年5月') - self.label_widgets['solar_ym'].grid(row=2, column=0, columnspan=4) - - self.label_widgets['solar_lunar'] = ttk.Label(self, text='四月初三') - self.label_widgets['solar_lunar'].grid(row=0, column=5, columnspan=2) - self.label_widgets['solar_week'] = ttk.Label(self, text='星期三') - self.label_widgets['solar_week'].grid(row=0, column=7, columnspan=2) - self.label_widgets['solar_gz'] = ttk.Label(self, text='星期三') - self.label_widgets['solar_gz'].grid(row=1, column=5, columnspan=4) - self.label_widgets['festival'] = ttk.Label(self, text='') - self.label_widgets['festival'].grid(row=2, column=5, columnspan=4) - - def set_selected_date(self, wd: WrappedDate = None): - """Show a date detail in panel.Today is shown if wd is None.""" - if wd is None: - wd = WrappedDate(date.today()) - sd, ld = wd.solar, wd.lunar - - self.label_widgets['solar_day'].config(text=str(sd.day)) - self.label_widgets['solar_ym'].config(text=sd.strftime('%Y年%m月')) - self.label_widgets['solar_lunar'].config(text=ld.strftime('%L%M月%D')) - week_cn = ld.cn_week - self.label_widgets['solar_week'].config(text=f'星期{week_cn}') - self.label_widgets['solar_gz'].config(text=ld.gz_str()) - self.label_widgets['festival'].config(text=' '.join(library.get_festival_names(sd))) - - -class GanzhiPanel(ttk.Frame): - def __init__(self, master=None, **kwargs): - super().__init__(master, **kwargs) - - gz_grid_frame = ttk.Frame(self) - for offset in range(60): - row, col = offset // 10, offset % 10 - btn = tk.Button(gz_grid_frame, text=TextUtils.get_gz_cn(offset), width=3, height=1, - command=lambda go=offset: self._show_years(go), relief=tk.GROOVE) - btn.grid(row=row, column=col, ipadx=5, ipady=5) - gz_grid_frame.pack(side='left') - - self.year_list = ttk.Treeview(self, column=("年份",), show='headings', height=5) - self.year_list.column("# 1", anchor=tk.CENTER) - self.year_list.heading("# 1", text="年份") - self.year_list.pack(side='left', expand=True, fill=tk.BOTH) - - def _show_years(self, gz_offset: int): - for item in self.year_list.get_children(): - self.year_list.delete(item) - if 0 < gz_offset < 36: - start_year = 1924 + gz_offset - else: - start_year = 1864 + gz_offset - for year in range(start_year, 2101, 60): - self.year_list.insert('', 'end', text="1", values=(f"{year}",)) - - -class TermPanel(ttk.Frame): - def __init__(self, master=None, **kwargs): - super().__init__(master, **kwargs) - - columns = ("序号", "节气", "太阳地心视黄经(度)") - self.term_table = ttk.Treeview(self, column=columns, show='headings', height=5) - self.term_table.pack(side='top', expand=True, fill=tk.BOTH) - for i, name in enumerate(columns, start=1): - self.term_table.column(f"# {i}", anchor=tk.CENTER) - self.term_table.heading(f"# {i}", text=name) - - for tindex, tname in enumerate(TERMS_CN): # 1-285 - dg = (285 + 15 * tindex) % 360 - self.term_table.insert('', 'end', text="1", values=(tindex + 1, tname, dg)) - - -class CApp(ttk.Frame): - def __init__(self, master=None): - super().__init__(master) - left_frame = ttk.Frame(self) - left_frame.pack(side='left', expand=True, fill=tk.Y, padx=10, pady=10) - self.detail_frame = DateDetailFrame(left_frame) - self.detail_frame.set_selected_date() - self.detail_frame.pack(side='top', expand=True, fill=tk.BOTH, pady=5) - - self.cal_panel = CalendarFrame(left_frame, festival_source=library) - self.cal_panel.pack(side='top', expand=True, fill=tk.BOTH) - self.cal_panel.bind_date_selected(self.on_show_date_detail) - - ttk.Separator(self, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) - columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) - cs = FestivalTableFrame(self, columns=columns, festival_source=library) - cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) - - # cs.update_data() - self._style_var = tk.StringVar() - self.create_top_menu() - self._tool_dlg = None - self._gz_dlg = None - self._festival_create_dlg = None - - def create_top_menu(self): - top = self.winfo_toplevel() - menu_bar = tk.Menu(top) - top['menu'] = menu_bar - - global style - - viewmenu = tk.Menu(menu_bar, tearoff=0) - for name in style.theme_names(): - viewmenu.add_radiobutton(label=name, variable=self._style_var, command=self._change_theme) - menu_bar.add_cascade(label='界面主题', menu=viewmenu) - menu_bar.add_command(label='日期计算', command=self.start_tool_dlg) - menu_bar.add_command(label='干支节气', command=self.start_gz_dlg) - menu_bar.add_command(label='创建节日', command=self.start_festival_dlg) - settings_menu = tk.Menu(menu_bar) - settings_menu.add_command(label='节日源') - menu_bar.add_cascade(label='设置', menu=settings_menu) - about_menu = tk.Menu(menu_bar) - about_menu.add_command(label='项目主页', command=lambda: webbrowser.open(PROJECT_URLS['home'])) - about_menu.add_command(label='关于软件', command=self.show_about_info) - menu_bar.add_cascade(label='关于', menu=about_menu) - - def _change_theme(self): - global style - style.theme_use(self._style_var.get()) - - def on_show_date_detail(self, wd: WrappedDate): - self.detail_frame.set_selected_date(wd) - - def _create_tool_dialog(self): - self._tool_dlg = tk.Toplevel(self) - self._tool_dlg.resizable(False, False) - d = WCalendarToolDlg(self._tool_dlg) - d.pack(side='top') - self._tool_dlg.lift() - - def start_tool_dlg(self): - if self._tool_dlg is None: - self._create_tool_dialog() - return - try: - self._tool_dlg.lift() - except tk.TclError: - self._create_tool_dialog() - - def _create_gz_dialog(self): - self._gz_dlg = tk.Toplevel(self) - self._gz_dlg.resizable(False, False) - notebook = ttk.Notebook(self._gz_dlg) - d = GanzhiPanel(notebook) - notebook.add(d, text='干支') - tp = TermPanel(notebook) - notebook.add(tp, text='节气') - notebook.pack(side='top') - self._gz_dlg.lift() - - def start_gz_dlg(self): - if self._gz_dlg is None: - self._create_gz_dialog() - return - try: - self._gz_dlg.lift() - except tk.TclError: - self._create_gz_dialog() - - def _create_festival_dialog(self): - self._festival_create_dlg = tk.Toplevel(self) - self._festival_create_dlg.title('创建节日') - self._festival_create_dlg.resizable(False, False) - festival_create_frame = FestivalCreatePanel(self._festival_create_dlg) - festival_create_frame.pack(side='top') - self._festival_create_dlg.lift() - - def start_festival_dlg(self): - if self._festival_create_dlg is None: - self._create_festival_dialog() - return - try: - self._festival_create_dlg.lift() - except tk.TclError: - self._create_festival_dialog() - - def show_about_info(self): - showinfo('关于', f' 日历v{__VERSION__}\n\n Powered by Borax{borax_version}') - - -def start_calendar_app(): - root = tk.Tk() - rw, rh = 920, 460 - x, y = int(root.winfo_screenwidth() / 2 - rw / 2), int(root.winfo_screenheight() / 2 - rh / 2) - root.geometry(f"{rw}x{rh}+{x}+{y}") - root.resizable(False, False) - root.title(f'日历 - v{__VERSION__}') - global style - style = ttk.Style(root) - # style.theme_use('alt') - app = CApp(root) - app.pack(expand=True, fill=tk.BOTH) - root.mainloop() - +from borax.capp.borax_calendar_app import start_calendar_app +from borax.capp.festival_creator import start_festival_creator if __name__ == '__main__': import sys diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py new file mode 100644 index 0000000..2b661ec --- /dev/null +++ b/borax/capp/borax_calendar_app.py @@ -0,0 +1,353 @@ +""" +显示月历 +工具 +""" +import tkinter as tk +import webbrowser +from datetime import date, datetime, timedelta +from tkinter import ttk +from tkinter.messagebox import showinfo +from typing import Optional + +from borax import __version__ as borax_version +from borax.calendars.festivals2 import FestivalLibrary, WrappedDate +from borax.calendars.lunardate import TextUtils, TERMS_CN +from borax.calendars.ui import CalendarFrame, FestivalTableFrame +from borax.capp.festival_creator import FestivalCreatePanel, start_festival_creator + +library = FestivalLibrary.load_builtin().sort_by_countdown() + +__VERSION__ = '1.1.0' + +PROJECT_URLS = { + 'home': 'https://github.com/kinegratii/borax' +} + +style: ttk.Style = None + + +class WDateVar(tk.StringVar): + + def __init__(self, master=None, value=None, name=None, date_fmt='%Y-%m-%d'): + tk.Variable.__init__(self, master, value, name) + self._date_object = None + self._date_fmt = date_fmt + + def set_date(self, d: WrappedDate): + self._date_object = d + self.set(d.solar.strftime(self._date_fmt)) + + def get_date(self) -> Optional[WrappedDate]: + raw = self.get() + if raw: + solar = datetime.strptime(raw, self._date_fmt) + return WrappedDate(solar.date()) + else: + return None + + +class WCalendarToolDlg(ttk.Frame): + def __init__(self, master=None): + super().__init__(master) + + notebook = ttk.Notebook(self) + notebook.pack(side='left', expand=True, fill=tk.BOTH, padx=5, pady=5) + + self._current_selected_index = 0 + self._data_stores = { + 'd1': WDateVar(), + 'd2': WDateVar(), + 'd3': WDateVar(), + } + + self._entry_hints = { + 'd1': '第一个日期', + 'd2': '第二个日期', + 'd3': '起始日期' + } + + self._tool_form_frame = ttk.Frame(notebook) + self._tool_form_frame.pack(side='left', expand=True, fill=tk.BOTH) + + ttk.Label(self._tool_form_frame, text='第一个日期').grid(row=0, column=0, columnspan=2) + self.day1_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d1']) + self.day1_entry.bind('', lambda event: self.entry_picker_linked(event, 'd1')) + self.day1_entry.grid(row=0, column=2, columnspan=2) + ttk.Label(self._tool_form_frame, text='第二个日期').grid(row=1, column=0, columnspan=2) + self.day2_entry = ttk.Entry(self._tool_form_frame, textvariable=self._data_stores['d2']) + self.day2_entry.bind('', lambda event: self.entry_picker_linked(event, 'd2')) + self.day2_entry.grid(row=1, column=2, columnspan=2) + + ttk.Button(self._tool_form_frame, text='计算', command=self.run_date_delta).grid( + row=2, column=0, columnspan=4, pady=8) + self.result1_label = ttk.Label(self._tool_form_frame, text='') + self.result1_label.grid(row=3, column=0, columnspan=4) + notebook.add(self._tool_form_frame, text='日期间隔', padding=4) + + deduction_frame = ttk.Frame(notebook) + notebook.add(deduction_frame, text='日期推导', padding=4) + ttk.Label(deduction_frame, text='起始日期').grid(row=0, column=0, columnspan=2) + self.day3_entry = ttk.Entry(deduction_frame, textvariable=self._data_stores['d3']) + self.day3_entry.bind('', lambda event: self.entry_picker_linked(event, 'd3')) + self.day3_entry.grid(row=0, column=2, columnspan=2) + self.day_delta_s = tk.IntVar() + for i, item in enumerate([('向前', -1), ('向后', 1)]): + t, val = item + tk.Radiobutton(deduction_frame, text=t, value=val, variable=self.day_delta_s).grid(row=1, column=i * 2 + 1, + columnspan=2) + ttk.Label(deduction_frame, text='间隔天数').grid(row=2, column=0, columnspan=2) + self.delta_days = tk.IntVar() + delta_days_com = ttk.Combobox(deduction_frame, width=6, values=[30, 60, 90, 100, 200, 300, 1000], + textvariable=self.delta_days) + delta_days_com.grid(row=2, column=2, columnspan=2, sticky=tk.E + tk.W + tk.N + tk.S) + ttk.Button(deduction_frame, text='计算', command=self.run_date_deduction).grid( + row=3, column=0, columnspan=4, pady=8) + self.result2_label = ttk.Label(deduction_frame, text='') + self.result2_label.grid(row=4, column=0, columnspan=4) + # init + self.day_delta_s.set(1) + + # Date Pick Panel + right_frame = ttk.Frame(self) + right_frame.pack(side='left') + + self.picker_hint_label = ttk.Label(right_frame, text='请选择第一个日期') + self.picker_hint_label.pack(side='top', fill=tk.X) + date_picker = CalendarFrame(right_frame, festival_source=library) + date_picker.bind_date_selected(self.on_date_picked) + date_picker.pack(side='top', expand=True, fill=tk.X) + + def entry_picker_linked(self, event, entry_label: str): + self._current_selected_index = entry_label + self.picker_hint_label.config(text=f'请选择{self._entry_hints[entry_label]}') + + def on_date_picked(self, wd: WrappedDate): + if self._current_selected_index in self._data_stores: + self._data_stores[self._current_selected_index].set_date(wd) + + def run_date_delta(self): + d1, d2 = self._data_stores['d1'].get_date(), self._data_stores['d2'].get_date() + if d1 and d2: + ndays = (d2.solar - d1.solar).days + self.result1_label.config(text=f'相差 {ndays} 天') + else: + self.result1_label.config(text='未选择日期,无法计算') + + def run_date_deduction(self): + d3 = self._data_stores['d3'].get_date() + if d3: + result2 = d3 + timedelta(self.day_delta_s.get() * self.delta_days.get()) + self.result2_label.config(text=str(result2)) + else: + self.result2_label.config(text='未选择日期,无法计算') + + +class DateDetailFrame(ttk.LabelFrame): + def __init__(self, master=None, **kwargs): + super().__init__(master, text='*****', labelanchor='n', **kwargs) + + self.label_widgets = {} + + # 4 = 121 22 + # -XX- + self.label_widgets['solar_day'] = ttk.Label(self, text='5', font=('Helvatical bold', 40)) + self.label_widgets['solar_day'].grid(row=0, column=0, rowspan=2, columnspan=4) + self.label_widgets['solar_ym'] = ttk.Label(self, text='2022年5月') + self.label_widgets['solar_ym'].grid(row=2, column=0, columnspan=4) + + self.label_widgets['solar_lunar'] = ttk.Label(self, text='四月初三') + self.label_widgets['solar_lunar'].grid(row=0, column=5, columnspan=2) + self.label_widgets['solar_week'] = ttk.Label(self, text='星期三') + self.label_widgets['solar_week'].grid(row=0, column=7, columnspan=2) + self.label_widgets['solar_gz'] = ttk.Label(self, text='星期三') + self.label_widgets['solar_gz'].grid(row=1, column=5, columnspan=4) + self.label_widgets['festival'] = ttk.Label(self, text='') + self.label_widgets['festival'].grid(row=2, column=5, columnspan=4) + + def set_selected_date(self, wd: WrappedDate = None): + """Show a date detail in panel.Today is shown if wd is None.""" + if wd is None: + wd = WrappedDate(date.today()) + sd, ld = wd.solar, wd.lunar + + self.label_widgets['solar_day'].config(text=str(sd.day)) + self.label_widgets['solar_ym'].config(text=sd.strftime('%Y年%m月')) + self.label_widgets['solar_lunar'].config(text=ld.strftime('%L%M月%D')) + week_cn = ld.cn_week + self.label_widgets['solar_week'].config(text=f'星期{week_cn}') + self.label_widgets['solar_gz'].config(text=ld.gz_str()) + self.label_widgets['festival'].config(text=' '.join(library.get_festival_names(sd))) + + +class GanzhiPanel(ttk.Frame): + def __init__(self, master=None, **kwargs): + super().__init__(master, **kwargs) + + gz_grid_frame = ttk.Frame(self) + for offset in range(60): + row, col = offset // 10, offset % 10 + btn = tk.Button(gz_grid_frame, text=TextUtils.get_gz_cn(offset), width=3, height=1, + command=lambda go=offset: self._show_years(go), relief=tk.GROOVE) + btn.grid(row=row, column=col, ipadx=5, ipady=5) + gz_grid_frame.pack(side='left') + + self.year_list = ttk.Treeview(self, column=("年份",), show='headings', height=5) + self.year_list.column("# 1", anchor=tk.CENTER) + self.year_list.heading("# 1", text="年份") + self.year_list.pack(side='left', expand=True, fill=tk.BOTH) + + def _show_years(self, gz_offset: int): + for item in self.year_list.get_children(): + self.year_list.delete(item) + if 0 < gz_offset < 36: + start_year = 1924 + gz_offset + else: + start_year = 1864 + gz_offset + for year in range(start_year, 2101, 60): + self.year_list.insert('', 'end', text="1", values=(f"{year}",)) + + +class TermPanel(ttk.Frame): + def __init__(self, master=None, **kwargs): + super().__init__(master, **kwargs) + + columns = ("序号", "节气", "太阳地心视黄经(度)") + self.term_table = ttk.Treeview(self, column=columns, show='headings', height=5) + self.term_table.pack(side='top', expand=True, fill=tk.BOTH) + for i, name in enumerate(columns, start=1): + self.term_table.column(f"# {i}", anchor=tk.CENTER) + self.term_table.heading(f"# {i}", text=name) + + for tindex, tname in enumerate(TERMS_CN): # 1-285 + dg = (285 + 15 * tindex) % 360 + self.term_table.insert('', 'end', text="1", values=(tindex + 1, tname, dg)) + + +class CApp(ttk.Frame): + def __init__(self, master=None): + super().__init__(master) + left_frame = ttk.Frame(self) + left_frame.pack(side='left', expand=True, fill=tk.Y, padx=10, pady=10) + self.detail_frame = DateDetailFrame(left_frame) + self.detail_frame.set_selected_date() + self.detail_frame.pack(side='top', expand=True, fill=tk.BOTH, pady=5) + + self.cal_panel = CalendarFrame(left_frame, festival_source=library) + self.cal_panel.pack(side='top', expand=True, fill=tk.BOTH) + self.cal_panel.bind_date_selected(self.on_show_date_detail) + + ttk.Separator(self, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) + columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) + cs = FestivalTableFrame(self, columns=columns, festival_source=library) + cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) + + # cs.update_data() + self._style_var = tk.StringVar() + self.create_top_menu() + self._tool_dlg = None + self._gz_dlg = None + self._festival_create_dlg = None + + def create_top_menu(self): + top = self.winfo_toplevel() + menu_bar = tk.Menu(top) + top['menu'] = menu_bar + + global style + + viewmenu = tk.Menu(menu_bar, tearoff=0) + for name in style.theme_names(): + viewmenu.add_radiobutton(label=name, variable=self._style_var, command=self._change_theme) + menu_bar.add_cascade(label='界面主题', menu=viewmenu) + menu_bar.add_command(label='日期计算', command=self.start_tool_dlg) + menu_bar.add_command(label='干支节气', command=self.start_gz_dlg) + menu_bar.add_command(label='创建节日', command=self.start_festival_dlg) + settings_menu = tk.Menu(menu_bar) + settings_menu.add_command(label='节日源') + menu_bar.add_cascade(label='设置', menu=settings_menu) + about_menu = tk.Menu(menu_bar) + about_menu.add_command(label='项目主页', command=lambda: webbrowser.open(PROJECT_URLS['home'])) + about_menu.add_command(label='关于软件', command=self.show_about_info) + menu_bar.add_cascade(label='关于', menu=about_menu) + + def _change_theme(self): + global style + style.theme_use(self._style_var.get()) + + def on_show_date_detail(self, wd: WrappedDate): + self.detail_frame.set_selected_date(wd) + + def _create_tool_dialog(self): + self._tool_dlg = tk.Toplevel(self) + self._tool_dlg.resizable(False, False) + d = WCalendarToolDlg(self._tool_dlg) + d.pack(side='top') + self._tool_dlg.lift() + + def start_tool_dlg(self): + if self._tool_dlg is None: + self._create_tool_dialog() + return + try: + self._tool_dlg.lift() + except tk.TclError: + self._create_tool_dialog() + + def _create_gz_dialog(self): + self._gz_dlg = tk.Toplevel(self) + self._gz_dlg.resizable(False, False) + notebook = ttk.Notebook(self._gz_dlg) + d = GanzhiPanel(notebook) + notebook.add(d, text='干支') + tp = TermPanel(notebook) + notebook.add(tp, text='节气') + notebook.pack(side='top') + self._gz_dlg.lift() + + def start_gz_dlg(self): + if self._gz_dlg is None: + self._create_gz_dialog() + return + try: + self._gz_dlg.lift() + except tk.TclError: + self._create_gz_dialog() + + def _create_festival_dialog(self): + self._festival_create_dlg = tk.Toplevel(self) + self._festival_create_dlg.title('创建节日') + self._festival_create_dlg.resizable(False, False) + festival_create_frame = FestivalCreatePanel(self._festival_create_dlg) + festival_create_frame.pack(side='top') + self._festival_create_dlg.lift() + + def start_festival_dlg(self): + if self._festival_create_dlg is None: + self._create_festival_dialog() + return + try: + self._festival_create_dlg.lift() + except tk.TclError: + self._create_festival_dialog() + + def show_about_info(self): + showinfo('关于', f' 日历v{__VERSION__}\n\n Powered by Borax{borax_version}') + + +def start_calendar_app(): + root = tk.Tk() + rw, rh = 920, 460 + x, y = int(root.winfo_screenwidth() / 2 - rw / 2), int(root.winfo_screenheight() / 2 - rh / 2) + root.geometry(f"{rw}x{rh}+{x}+{y}") + root.resizable(False, False) + root.title(f'日历 - v{__VERSION__}') + global style + style = ttk.Style(root) + # style.theme_use('alt') + app = CApp(root) + app.pack(expand=True, fill=tk.BOTH) + root.mainloop() + + +if __name__ == '__main__': + start_calendar_app() diff --git a/borax/apps/festival_creator.py b/borax/capp/festival_creator.py similarity index 99% rename from borax/apps/festival_creator.py rename to borax/capp/festival_creator.py index 880ad24..e728f30 100644 --- a/borax/apps/festival_creator.py +++ b/borax/capp/festival_creator.py @@ -139,8 +139,8 @@ def __init__(self, master=None, **kwargs): self._vm = VarModel() - n_row, s_row, l_row, w_row, t_row, btn_row, export_btn_row, msg_row = 0, 2, 4, 6, 8, 10, 12, 13 - empty_rows = (1, 3, 5, 7, 9, 11) + n_row, s_row, l_row, w_row, t_row, btn_row, msg_row = 0, 2, 4, 6, 8, 10, 11 + empty_rows = (1, 3, 5, 7, 9) ccb_w = 10 freq_choices = ((FreqConst.YEARLY, '每年'), (FreqConst.MONTHLY, '每月')) From ae2b50231b1d64945f5b7674ff21ea0966e3cae2 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 12 Jan 2024 23:18:25 +0800 Subject: [PATCH 15/29] :pencil: Update document.Fix #52 --- borax/calendars/festivals2.py | 28 +++++++++++++------------ borax/capp/borax_calendar_app.py | 2 +- docs/guides/festivals2-serialize.md | 2 ++ docs/guides/festivals2.md | 32 +++++++++++++++++++++-------- 4 files changed, 42 insertions(+), 22 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 8289627..4333d20 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -4,9 +4,9 @@ import collections import csv import enum +import warnings from datetime import date, timedelta, datetime from pathlib import Path -import warnings from typing import List, Tuple, Optional, Union, Iterator, Set, Generator, Sequence from borax.calendars.lunardate import LunarDate, LCalendars, TermUtils, TextUtils, TERMS_CN @@ -22,11 +22,25 @@ MixedDate = Union[date, LunarDate] +# Public Constants + class FreqConst: YEARLY = 0 MONTHLY = 1 +class FestivalCatalog: + basic = 'basic' + event = 'event' + life = 'life' + public = 'public' + tradition = 'tradition' + term = 'term' + other = 'other' + + CATALOGS = ['basic', 'term', 'public', 'tradition', 'event', 'life', 'other'] + + # Private Global Variables _IGNORE_LEAP_MONTH = 3 @@ -47,18 +61,6 @@ class FestivalSchema(enum.IntEnum): TERM = 4 -class FestivalCatalog: - basic = 'basic' - event = 'event' - life = 'life' - public = 'public' - tradition = 'tradition' - term = 'term' - other = 'other' - - CATALOGS = ['basic', 'term', 'public', 'tradition', 'event', 'life', 'other'] - - class WrappedDate: """A date object with solar and lunar calendars.""" __slots__ = ['solar', 'lunar', 'name', '_fl'] diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py index 2b661ec..8f5ccbe 100644 --- a/borax/capp/borax_calendar_app.py +++ b/borax/capp/borax_calendar_app.py @@ -13,7 +13,7 @@ from borax.calendars.festivals2 import FestivalLibrary, WrappedDate from borax.calendars.lunardate import TextUtils, TERMS_CN from borax.calendars.ui import CalendarFrame, FestivalTableFrame -from borax.capp.festival_creator import FestivalCreatePanel, start_festival_creator +from borax.capp.festival_creator import FestivalCreatePanel library = FestivalLibrary.load_builtin().sort_by_countdown() diff --git a/docs/guides/festivals2-serialize.md b/docs/guides/festivals2-serialize.md index 9327a39..f1739f0 100644 --- a/docs/guides/festivals2-serialize.md +++ b/docs/guides/festivals2-serialize.md @@ -2,6 +2,8 @@ > 模块: `borax.calendars.festivals2` +> Updated in 3.6.0:LunarDate类不再支持直接序列,必须先转化对应的 WrappedDate 对象。 +> > Updated in 3.5.6: 星期型节日(WeekFestival)类支持倒数序号。如:“国际麻风节(1月最后一个星期天)” > > Add in 3.5.0 diff --git a/docs/guides/festivals2.md b/docs/guides/festivals2.md index 61806f2..f6a0ff4 100644 --- a/docs/guides/festivals2.md +++ b/docs/guides/festivals2.md @@ -15,7 +15,7 @@ ### 常量定义 -`festival2` 定义了一些常量,这些常量通常归属于一个名称以“Const”结尾的类,并使用大写字母的变量命名形式。 +`festival2` 定义了一些常量,这些常量通常归属于一个类,并使用大写字母的变量命名形式。本文档仅列出那些属于 public 权限的常量类。 #### FreqConst @@ -26,16 +26,32 @@ FreqConst 表示节日的频率,用于设置 `Festival` 的 `freq` 参数。 | FreqConst.YEARLY = 0 | 表示每年 | | FreqConst.MONTHLY = 1 | 表示每月 | -#### LeapConst +#### FestivalCatalog -LeapConst表示农历闰月的标志,用于 `Period` 、`Festival` 对象初始化操作。 +FestivalCatalog 定义了一些节日的分类标签,可以通过 `Festival.catalog` 属性进行读写。 -| 定义 | 表示 | -| -------------------- | ---- | -| LeapConst.NORMAL = 0 | 平月 | -| LeapConst.LEAP = 1 | 闰月 | -| LeapConst.MIXED = 2 | 混合 | +默认支持以下标签。 +```python +class FestivalCatalog: + basic = 'basic' + event = 'event' + life = 'life' + public = 'public' + tradition = 'tradition' + term = 'term' + other = 'other' + + CATALOGS = ['basic', 'term', 'public', 'tradition', 'event', 'life', 'other'] +``` + +节日标签用于同一日期有多个节日时,这些节日之间的先后排序问题。 + +```python +amy_birthday = SolarFestival(month=10,day=1, catalog='event') +``` + +如上例子,`amy_birthday` 总是在国庆节(其标签为 basic)之后。 ## 基础数据结构 - WrappedDate From 02105b4ab188b10234753213387f2a2e854296bc Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sat, 13 Jan 2024 23:10:47 +0800 Subject: [PATCH 16/29] :recycle: Refactor borax.calendars.dataset --- MANIFEST.in | 2 +- README.md | 4 ++-- borax/calendars/{ => dataset}/FestivalData.csv | 0 borax/calendars/dataset/__init__.py | 14 ++++++++++++++ borax/calendars/festivals2.py | 10 ++-------- setup.py | 5 ----- 6 files changed, 19 insertions(+), 16 deletions(-) rename borax/calendars/{ => dataset}/FestivalData.csv (100%) create mode 100644 borax/calendars/dataset/__init__.py diff --git a/MANIFEST.in b/MANIFEST.in index d736d8e..eb3509e 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,2 +1,2 @@ -include borax/calendars/FestivalData.csv +include borax/calendars/dataset/FestivalData.csv include borax/calendars/dataset/festivals_ext1.csv \ No newline at end of file diff --git a/README.md b/README.md index 5cb1f69..7a07b53 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ $ pip install borax Borax的版本符合 [语义化版本](https://semver.org/lang/zh-CN/) ,格式为 `<主版本号>.<副版本号>.<修正版本号>`, 推荐使用下面方式定义Borax的依赖版本号。 ```text -borax~=3.5 +borax~=4.1 ``` ## 使用示例 (Usage) @@ -221,7 +221,7 @@ print(FinanceNumbers.to_capital_str(decimal.Decimal(4.50))) # '肆元伍角零 ## 项目构建 (Project Build) -从4.0.1开始,borax 使用 *pyproject.toml* 作为项目构建的配置文件,使用以下命令构建 wheel 发行包。 +从4.1.0 开始,borax 使用 *pyproject.toml* 作为项目构建的配置文件,使用以下命令构建 wheel 发行包。 ```shell python -m build -w diff --git a/borax/calendars/FestivalData.csv b/borax/calendars/dataset/FestivalData.csv similarity index 100% rename from borax/calendars/FestivalData.csv rename to borax/calendars/dataset/FestivalData.csv diff --git a/borax/calendars/dataset/__init__.py b/borax/calendars/dataset/__init__.py new file mode 100644 index 0000000..6db80ab --- /dev/null +++ b/borax/calendars/dataset/__init__.py @@ -0,0 +1,14 @@ +from pathlib import Path + +__all__ = ['get_festival_dataset_path'] + +_FILE_DICT = { + 'basic': 'FestivalData.csv', + 'ext1': 'festivals_ext1.csv', + 'zh-Hans': 'FestivalData.csv' +} + + +def get_festival_dataset_path(identifier: str) -> Path: + """Return the full path for festival dataset csv file.""" + return Path(__file__).parent / _FILE_DICT.get(identifier) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 4333d20..7033bf6 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -9,6 +9,7 @@ from pathlib import Path from typing import List, Tuple, Optional, Union, Iterator, Set, Generator, Sequence +from borax.calendars.dataset import get_festival_dataset_path from borax.calendars.lunardate import LunarDate, LCalendars, TermUtils, TextUtils, TERMS_CN __all__ = [ @@ -1211,11 +1212,4 @@ def load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary': """ if identifier == 'empty': return FestivalLibrary() - if identifier == 'zh-Hans': # Old identifier - identifier = 'basic' - file_dict = { - 'basic': 'FestivalData.csv', - 'ext1': 'dataset/festivals_ext1.csv' - } - file_path = Path(__file__).parent / file_dict.get(identifier) - return cls.load_file(file_path) + return cls.load_file(get_festival_dataset_path(identifier)) diff --git a/setup.py b/setup.py index ffaf816..a9d9464 100644 --- a/setup.py +++ b/setup.py @@ -41,9 +41,4 @@ description='A tool collections.(Chinese-Lunar-Calendars/Python-Patterns)', long_description=long_description, long_description_content_type='text/markdown', - entry_points={ - "gui_scripts": [ - "festival_creator = borax.apps.festival_creator:main" - ] - }, ) From f4578e46f0d6ca4c88de24997567a974c07e3083 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Thu, 18 Jan 2024 08:55:49 +0800 Subject: [PATCH 17/29] :rotating_light: Improve code --- borax/calendars/festivals2.py | 2 +- borax/calendars/lunardate.py | 4 ++-- borax/calendars/ui.py | 6 +++--- borax/capp/borax_calendar_app.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 7033bf6..9c29e6d 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -17,7 +17,7 @@ 'FreqConst', 'Festival', 'FestivalSchema', 'SolarFestival', 'LunarFestival', 'WeekFestival', 'TermFestival', 'encode', 'decode', 'decode_festival', - 'FestivalLibrary', + 'FestivalLibrary', 'ConditionUtils' ] MixedDate = Union[date, LunarDate] diff --git a/borax/calendars/lunardate.py b/borax/calendars/lunardate.py index b2f08b8..c00591d 100644 --- a/borax/calendars/lunardate.py +++ b/borax/calendars/lunardate.py @@ -452,8 +452,8 @@ def gz2offset(gz: str) -> int: if x % 2 != y % 2: raise ValueError return (6 * x - 5 * y) % 60 - except (TypeError, ValueError): - raise ValueError(f'Invalid gz string: {gz}') + except (TypeError, ValueError) as e: + raise ValueError(f'Invalid gz string: {gz}') from e @staticmethod def offset2gz(offset: int) -> str: diff --git a/borax/calendars/ui.py b/borax/calendars/ui.py index fac9451..2a06d70 100644 --- a/borax/calendars/ui.py +++ b/borax/calendars/ui.py @@ -51,7 +51,7 @@ def _init_widgets(self): bw, bh = 3, 1 tool_row_no, head_row_no, week_row_no, day_row_no = range(4) - today_btn = tk.Button(self, text='今日', relief=tk.GROOVE, command=lambda: self._nav_current_month()) + today_btn = tk.Button(self, text='今日', relief=tk.GROOVE, command=self._nav_current_month) today_btn.grid(row=0, column=5, sticky='wens', columnspan=2, pady=4) pre_btn = tk.Button(self, text='\u25C4', width=bw, height=bh, command=lambda: self.page_to(-1), relief=tk.GROOVE) @@ -85,12 +85,12 @@ def _update_calendar_cell_values(self, event=None): month = self._v_month.get() cell_index = 0 _mi, _ma, _left_zero = -1, -1, 0 - for day, text, wd in self._library.iter_month_daytuples(year, month): + for day, text, _ in self._library.iter_month_daytuples(year, month): if day == 0: day_text = '' _left_zero += int(_mi == -1) else: - day_text = '{}\n{}'.format(day, text) + day_text = f'{day}\n{text}' if day == 1: _mi = cell_index _ma += 1 diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py index 8f5ccbe..1ecb020 100644 --- a/borax/capp/borax_calendar_app.py +++ b/borax/capp/borax_calendar_app.py @@ -29,7 +29,7 @@ class WDateVar(tk.StringVar): def __init__(self, master=None, value=None, name=None, date_fmt='%Y-%m-%d'): - tk.Variable.__init__(self, master, value, name) + super().__init__(master, value, name) self._date_object = None self._date_fmt = date_fmt From 9e359fe37116632e38d9e120d25644caa5ec6d65 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Thu, 18 Jan 2024 09:19:44 +0800 Subject: [PATCH 18/29] :pencil: Update docs --- README.md | 2 +- codecov.yml | 1 + mkdocs.yaml | 1 + pyproject.toml | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7a07b53..9ec0e0d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Borax - python3工具库 - 中国农历/中文数字/设计模式/树形结构 +# Borax - python农历&节日工具库 - 中文数字/设计模式/树形结构 [![PyPI](https://img.shields.io/pypi/v/borax.svg)](https://pypi.org/project/borax) diff --git a/codecov.yml b/codecov.yml index ec0912d..17d3e1b 100644 --- a/codecov.yml +++ b/codecov.yml @@ -4,6 +4,7 @@ coverage: - borax/apps/festival_creator.py - borax/calendars/datepicker.py - borax/calendars/ui.py + - borax/capp/*.py status: project: default: diff --git a/mkdocs.yaml b/mkdocs.yaml index 623254e..41bb865 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -8,6 +8,7 @@ theme: features: - navigation.tabs - navigation.sections + - navigation.footer extra: social: - icon: fontawesome/brands/github diff --git a/pyproject.toml b/pyproject.toml index e4e3f2a..0c31fba 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -20,6 +20,7 @@ classifiers = [ "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3 :: Only", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", From b6ba25e1622da28950acbf476df9219498ea3b7a Mon Sep 17 00:00:00 2001 From: kinegratii Date: Thu, 18 Jan 2024 21:37:30 +0800 Subject: [PATCH 19/29] :sparkles: Add change festival source --- borax/calendars/ui.py | 9 +++++++-- borax/capp/borax_calendar_app.py | 20 ++++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/borax/calendars/ui.py b/borax/calendars/ui.py index 2a06d70..b329f4f 100644 --- a/borax/calendars/ui.py +++ b/borax/calendars/ui.py @@ -183,7 +183,7 @@ class FestivalTableFrame(ttk.Frame): """A table frame displaying festivals with CURD feature.""" def __init__(self, master=None, columns: Sequence = None, festival_source: Union[str, FestivalLibrary] = 'empty', - **kwargs): + countdown_ordered: bool = False, **kwargs): super().__init__(master=master, **kwargs) self._adapter = FestivalItemAdapter(columns) if isinstance(festival_source, FestivalLibrary): @@ -198,6 +198,7 @@ def __init__(self, master=None, columns: Sequence = None, festival_source: Union for i, name in enumerate(self._adapter.displays, start=1): self._tree.column(f"# {i}", anchor=tk.CENTER, width=self._adapter.widths[i - 1]) self._tree.heading(f"# {i}", text=name) + self._countdown_ordered = countdown_ordered self.notify_data_changed() @@ -213,11 +214,15 @@ def festival_library(self) -> FestivalLibrary: def row_count(self): return len(self._tree.get_children()) + def change_festival_source(self, source: str): + self._library = FestivalLibrary.load_builtin(source) + self.notify_data_changed() + def notify_data_changed(self): item_iids = self._tree.get_children() if len(item_iids): self._tree.delete(*item_iids) - for ndays, wd, festival in self._library.list_days_in_countdown(countdown_ordered=False): + for ndays, wd, festival in self._library.list_days_in_countdown(countdown_ordered=self._countdown_ordered): values = self._adapter.object2values(festival, wd, ndays) self._tree.insert('', 'end', text="1", values=values) diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py index 1ecb020..3e9b8b6 100644 --- a/borax/capp/borax_calendar_app.py +++ b/borax/capp/borax_calendar_app.py @@ -186,7 +186,8 @@ def __init__(self, master=None, **kwargs): gz_grid_frame = ttk.Frame(self) for offset in range(60): row, col = offset // 10, offset % 10 - btn = tk.Button(gz_grid_frame, text=TextUtils.get_gz_cn(offset), width=3, height=1, + btn_text = '{} {}'.format(TextUtils.offset2gz(offset), offset + 1) + btn = tk.Button(gz_grid_frame, text=btn_text, width=5, height=1, command=lambda go=offset: self._show_years(go), relief=tk.GROOVE) btn.grid(row=row, column=col, ipadx=5, ipady=5) gz_grid_frame.pack(side='left') @@ -237,12 +238,14 @@ def __init__(self, master=None): self.cal_panel.bind_date_selected(self.on_show_date_detail) ttk.Separator(self, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) + self._table_festival_libray = library columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) - cs = FestivalTableFrame(self, columns=columns, festival_source=library) - cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) + self._cs = FestivalTableFrame(self, columns=columns, festival_source=library, countdown_ordered=True) + self._cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) # cs.update_data() self._style_var = tk.StringVar() + self._table_festival_source_var = tk.StringVar(value='basic') self.create_top_menu() self._tool_dlg = None self._gz_dlg = None @@ -262,9 +265,11 @@ def create_top_menu(self): menu_bar.add_command(label='日期计算', command=self.start_tool_dlg) menu_bar.add_command(label='干支节气', command=self.start_gz_dlg) menu_bar.add_command(label='创建节日', command=self.start_festival_dlg) - settings_menu = tk.Menu(menu_bar) - settings_menu.add_command(label='节日源') - menu_bar.add_cascade(label='设置', menu=settings_menu) + source_menu = tk.Menu(menu_bar) + for source in ('basic', 'ext1'): + source_menu.add_radiobutton(label=source, variable=self._table_festival_source_var, + command=self._change_source) + menu_bar.add_cascade(label='节日源', menu=source_menu) about_menu = tk.Menu(menu_bar) about_menu.add_command(label='项目主页', command=lambda: webbrowser.open(PROJECT_URLS['home'])) about_menu.add_command(label='关于软件', command=self.show_about_info) @@ -274,6 +279,9 @@ def _change_theme(self): global style style.theme_use(self._style_var.get()) + def _change_source(self): + self._cs.change_festival_source(self._table_festival_source_var.get()) + def on_show_date_detail(self, wd: WrappedDate): self.detail_frame.set_selected_date(wd) From 131728a8a12011d0eed47e7e8682a92232c454fa Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 19 Jan 2024 23:05:56 +0800 Subject: [PATCH 20/29] :green_heart: Fix Codecov --- .github/workflows/python-package.yml | 1 + docs/guides/festivals2-ui.md | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 110087c..d186a2f 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -42,6 +42,7 @@ jobs: - name: Upload coverage to Codecov uses: codecov/codecov-action@v1 with: + token: ${{secrets.CODECOV_TOKEN}} file: ./coverage.xml env_vars: OS,PYTHON name: codecov-umbrella diff --git a/docs/guides/festivals2-ui.md b/docs/guides/festivals2-ui.md index 00763d9..5a06088 100644 --- a/docs/guides/festivals2-ui.md +++ b/docs/guides/festivals2-ui.md @@ -120,15 +120,20 @@ cf.page_to(2022, 9, 1) # 2022年9月的下一个月 ### 创建组件 ```python -FestivalTableFrame(master=None, colunms:Sequeue=None, festival_source:Union[str,FestivalLibrary]='empty', **kwargs) +FestivalTableFrame(master=None, colunms:Sequeue=None, festival_source:Union[str,FestivalLibrary]='empty', countdown_ordered:bool=False, **kwargs) ``` 构建参数及其意义如下: -| 参数 | 描述 | -| -------------------------------------------------- | ---------------- | -| colunms:Sequeue | 列定义 | -| festival_source:Union[str,FestivalLibrary]='empty' | 节日源,默认为空 | +| 参数 | 描述 | +| -------------------------------------------------- | -------------------------------- | +| colunms:Sequeue | 列定义 | +| festival_source:Union[str,FestivalLibrary]='empty' | 节日源,默认为空 | +| countdown_ordered:bool=False | 是否按倒计天数排序。1 | + +备注: + +1. v4.1.0新增。 表格列定义方式如下: @@ -191,6 +196,10 @@ ftf.festival_library.sorted(key=lambda x:x.code) ftf.notifiy_data_changed() ``` +- `change_festival_source(source:str)` + +v4.1.0新增。更新指定数据源。 + ## 日期选择框:ask_date From a12a0c2d840194b7923ce745c24a086243652d38 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sat, 20 Jan 2024 15:40:24 +0800 Subject: [PATCH 21/29] :wrench: migrate flake8 with pyproject.toml --- pyproject.toml | 7 ++++++- requirements_dev.txt | 3 ++- setup.cfg | 5 ----- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0c31fba..7419bb0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,4 +57,9 @@ exclude_lines = [ "if 0:", "if __name__ == .__main__.:", "def print_(self):" -] \ No newline at end of file +] +[tool.flake8] +ignore = ["E743", "E501"] +max-line-length = 120 +max-complexity = 25 +exclude = [".git", "__pycache__", "build", "dist"] \ No newline at end of file diff --git a/requirements_dev.txt b/requirements_dev.txt index a91506d..c165742 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -4,4 +4,5 @@ flake8~=6.1 mccabe~=0.6 wheel~=0.42 setuptools~=65.0 -build~=1.0 \ No newline at end of file +build~=1.0 +Flake8-pyproject~=1.2 \ No newline at end of file diff --git a/setup.cfg b/setup.cfg index 01b1fe8..28574e5 100644 --- a/setup.cfg +++ b/setup.cfg @@ -8,8 +8,3 @@ project_urls = [nosetests] traverse-namespace = 1 - -[flake8] -ignore = E743,E501,F401 -max-complexity = 25 -exclude = .git,__pycache__,docs/source/conf.py,old,build,dist \ No newline at end of file From a6fd5ebe704defd58b7b7a14f93f98b4ddae4409 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 23 Jan 2024 23:30:47 +0800 Subject: [PATCH 22/29] :sparkles: Add tests --- borax/calendars/festivals2.py | 7 ++++--- borax/calendars/ui.py | 4 ++-- borax/capp/borax_calendar_app.py | 28 ++++++++++++++++++---------- borax/ui/widgets.py | 13 +++++++++++++ tests/test_festival_library.py | 7 +++++++ 5 files changed, 44 insertions(+), 15 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 9c29e6d..1c42073 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -982,7 +982,7 @@ def get_code_set(self) -> Set[str]: """ return set([f.encode() for f in self.data]) - def extend_unique(self, other): + def extend_unique(self, other: Union[collections.UserList, List[str], 'FestivalLibrary']) -> 'FestivalLibrary': """Add a new festival if code does not exist. """ f_codes = {f.encode() for f in self.data} @@ -1117,7 +1117,8 @@ def list_days(self, start_date=None, end_date=None): return data_items def iter_month_daytuples(self, year: int, month: int, firstweekday: int = 0, return_pos: bool = False): - """迭代返回公历月份(含前后完整日期)中每个日期信息 + """return all day info for a whole solar month as (day_integer, day_text, wrapped_date) + The day_text show in the order:festival_name,term_name, lunar_day_text """ row = 0 cal = calendar.Calendar(firstweekday=firstweekday) @@ -1157,7 +1158,7 @@ def to_csv(self, path_or_buf): fileobj = path_or_buf.open('w', encoding='utf8', newline='') else: fileobj = path_or_buf - writer = csv.writer(fileobj, ) + writer = csv.writer(fileobj) for festival in self: row = (festival.encode(), festival.name, festival.catalog) writer.writerow(row) diff --git a/borax/calendars/ui.py b/borax/calendars/ui.py index b329f4f..471aae5 100644 --- a/borax/calendars/ui.py +++ b/borax/calendars/ui.py @@ -35,8 +35,8 @@ def __init__(self, master=None, firstweekday: int = 0, year: int = 0, month: int else: self._library = festival_source self._v_day_matrix = [[tk.StringVar() for _ in range(7)] for _ in range(6)] - self._d_selected_date = None # type: Optional[WrappedDate] - self._callbacks = {} # type: Dict[str,Callable] + self._d_selected_date: Optional[WrappedDate] = None + self._callbacks: Dict[str, Callable] = {} self._day_cell_indexes = -1, -1 # The cell indexes of first and last day in this month. self._cal_obj = calendar.Calendar(firstweekday=self._firstweekday) diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py index 3e9b8b6..de4e024 100644 --- a/borax/capp/borax_calendar_app.py +++ b/borax/capp/borax_calendar_app.py @@ -11,8 +11,9 @@ from borax import __version__ as borax_version from borax.calendars.festivals2 import FestivalLibrary, WrappedDate -from borax.calendars.lunardate import TextUtils, TERMS_CN +from borax.calendars.lunardate import TextUtils, TERMS_CN, TERM_PINYIN from borax.calendars.ui import CalendarFrame, FestivalTableFrame +from borax.calendars.utils import ThreeNineUtils from borax.capp.festival_creator import FestivalCreatePanel library = FestivalLibrary.load_builtin().sort_by_countdown() @@ -27,6 +28,9 @@ class WDateVar(tk.StringVar): + """A tkinter variable for WrappedDate object. + Use set_date/get_date instead of set/get function. + """ def __init__(self, master=None, value=None, name=None, date_fmt='%Y-%m-%d'): super().__init__(master, value, name) @@ -176,7 +180,11 @@ def set_selected_date(self, wd: WrappedDate = None): week_cn = ld.cn_week self.label_widgets['solar_week'].config(text=f'星期{week_cn}') self.label_widgets['solar_gz'].config(text=ld.gz_str()) - self.label_widgets['festival'].config(text=' '.join(library.get_festival_names(sd))) + day_labels = library.get_festival_names(sd) + three_night_label = ThreeNineUtils.get_39label(sd) + if three_night_label: + day_labels.append(three_night_label) + self.label_widgets['festival'].config(text=' '.join(day_labels)) class GanzhiPanel(ttk.Frame): @@ -194,7 +202,7 @@ def __init__(self, master=None, **kwargs): self.year_list = ttk.Treeview(self, column=("年份",), show='headings', height=5) self.year_list.column("# 1", anchor=tk.CENTER) - self.year_list.heading("# 1", text="年份") + self.year_list.heading("# 1", text="农历年份") self.year_list.pack(side='left', expand=True, fill=tk.BOTH) def _show_years(self, gz_offset: int): @@ -212,7 +220,7 @@ class TermPanel(ttk.Frame): def __init__(self, master=None, **kwargs): super().__init__(master, **kwargs) - columns = ("序号", "节气", "太阳地心视黄经(度)") + columns = ("序号", "节气", "识别码(拼音首字母)", "太阳地心视黄经(度)") self.term_table = ttk.Treeview(self, column=columns, show='headings', height=5) self.term_table.pack(side='top', expand=True, fill=tk.BOTH) for i, name in enumerate(columns, start=1): @@ -221,7 +229,7 @@ def __init__(self, master=None, **kwargs): for tindex, tname in enumerate(TERMS_CN): # 1-285 dg = (285 + 15 * tindex) % 360 - self.term_table.insert('', 'end', text="1", values=(tindex + 1, tname, dg)) + self.term_table.insert('', 'end', text="1", values=(tindex, tname, TERM_PINYIN[tindex], dg)) class CApp(ttk.Frame): @@ -238,8 +246,8 @@ def __init__(self, master=None): self.cal_panel.bind_date_selected(self.on_show_date_detail) ttk.Separator(self, orient=tk.VERTICAL).pack(side='left', fill=tk.Y, expand=True) - self._table_festival_libray = library - columns = (("name", 100), ("description", 180), ("code", 80), ("next_day", 150), ("countdown", 60)) + self._table_festival_library = library + columns = (("name", 120), ("description", 160), ("code", 80), ("next_day", 150), ("countdown", 60)) self._cs = FestivalTableFrame(self, columns=columns, festival_source=library, countdown_ordered=True) self._cs.pack(side='right', expand=True, fill=tk.BOTH, padx=10, pady=10) @@ -263,7 +271,7 @@ def create_top_menu(self): viewmenu.add_radiobutton(label=name, variable=self._style_var, command=self._change_theme) menu_bar.add_cascade(label='界面主题', menu=viewmenu) menu_bar.add_command(label='日期计算', command=self.start_tool_dlg) - menu_bar.add_command(label='干支节气', command=self.start_gz_dlg) + menu_bar.add_command(label='节气干支', command=self.start_gz_dlg) menu_bar.add_command(label='创建节日', command=self.start_festival_dlg) source_menu = tk.Menu(menu_bar) for source in ('basic', 'ext1'): @@ -305,10 +313,10 @@ def _create_gz_dialog(self): self._gz_dlg = tk.Toplevel(self) self._gz_dlg.resizable(False, False) notebook = ttk.Notebook(self._gz_dlg) - d = GanzhiPanel(notebook) - notebook.add(d, text='干支') tp = TermPanel(notebook) notebook.add(tp, text='节气') + d = GanzhiPanel(notebook) + notebook.add(d, text='干支') notebook.pack(side='top') self._gz_dlg.lift() diff --git a/borax/ui/widgets.py b/borax/ui/widgets.py index 58c6296..7fddc82 100644 --- a/borax/ui/widgets.py +++ b/borax/ui/widgets.py @@ -55,3 +55,16 @@ def reset(self): @property def state(self): return self._state + + +class MessageLabel(tk.Label): + """A label that can show text in a short time.Variable binding is not supported.""" + _key2colors = {'error': 'red', 'warning': 'orange', 'success': 'green'} + + def show_text(self, text: str, text_color: str = 'black', splash_ms: int = 0): + self.config({'text': text, 'fg': MessageLabel._key2colors.get(text_color, text_color)}) + if splash_ms: + self.after(splash_ms, self._clear) + + def _clear(self): + self.config({'text': ''}) diff --git a/tests/test_festival_library.py b/tests/test_festival_library.py index 8a8e460..fceaa49 100644 --- a/tests/test_festival_library.py +++ b/tests/test_festival_library.py @@ -53,6 +53,13 @@ def test_unique(self): fl.extend_unique(['205026', '89005']) self.assertEqual(3, len(fl)) + def test_unique_for_basic_library(self): + fl = FestivalLibrary.load_builtin('basic') + total_1 = len(fl) + fl.extend_term_festivals() + total_2 = len(fl) + self.assertEqual(22, total_2 - total_1) + def test_edit(self): fl = FestivalLibrary() fl.load_term_festivals() From b4955188c14c18790182bb27610cd48afff056f1 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 24 Jan 2024 23:20:12 +0800 Subject: [PATCH 23/29] :sparkles: Add Festival.code & Upgrade to python3.9+ --- .github/workflows/python-package.yml | 2 +- borax/calendars/festivals2.py | 24 ++++++++++++++++-------- docs/changelog.md | 14 ++++++++++++-- docs/guides/festivals2.md | 27 +++++++++++++++++++++++---- pyproject.toml | 4 +--- setup.py | 5 ++--- 6 files changed, 55 insertions(+), 21 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index d186a2f..fabc813 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + python-version: ['3.9', '3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v2 diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 1c42073..f0d8f3e 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -6,6 +6,7 @@ import enum import warnings from datetime import date, timedelta, datetime +from functools import cached_property from pathlib import Path from typing import List, Tuple, Optional, Union, Iterator, Set, Generator, Sequence @@ -149,11 +150,11 @@ def from_simple_str(cls, date_str: str) -> 'WrappedDate': def encode(self) -> str: if self._fl == 'l': festival = LunarFestival(month=self.lunar.month, day=self.lunar.day, leap=self.lunar.leap) - encoded_str = festival.encode() + encoded_str = festival.code return '{}{:04d}{}'.format(encoded_str[0], self.lunar.year, encoded_str[1:]) else: festival = SolarFestival(month=self.solar.month, day=self.solar.day) - encoded_str = festival.encode() + encoded_str = festival.code return '{}{:04d}{}'.format(encoded_str[0], self.solar.year, encoded_str[1:]) @classmethod @@ -231,6 +232,10 @@ def set_name(self, name): self._name = name return self + @cached_property + def code(self): + return self.encode() + @property def schema(self): return self._schema @@ -980,19 +985,22 @@ def print_(self): def get_code_set(self) -> Set[str]: """Get codes for all festivals. """ - return set([f.encode() for f in self.data]) + return set([f.code for f in self.data]) - def extend_unique(self, other: Union[collections.UserList, List[str], 'FestivalLibrary']) -> 'FestivalLibrary': + def extend_unique( + self, + other: Union[collections.UserList, List[Union[str, Festival]], 'FestivalLibrary'] + ) -> 'FestivalLibrary': """Add a new festival if code does not exist. """ - f_codes = {f.encode() for f in self.data} + f_codes = {f.code for f in self.data} if isinstance(other, collections.UserList): new_data = other.data else: new_data = other for item in new_data: if isinstance(item, Festival): - if item.encode() not in f_codes: + if item.code not in f_codes: self.data.append(item) elif isinstance(item, str): try: @@ -1160,7 +1168,7 @@ def to_csv(self, path_or_buf): fileobj = path_or_buf writer = csv.writer(fileobj) for festival in self: - row = (festival.encode(), festival.name, festival.catalog) + row = (festival.code, festival.name, festival.catalog) writer.writerow(row) @classmethod @@ -1185,7 +1193,7 @@ def load_file(cls, file_path: Union[str, Path], unique: bool = False) -> 'Festiv fl.append(festival) except ValueError: continue - fl.sort(key=lambda x: x.encode()) + fl.sort(key=lambda x: x.code) return fl def filter(self, catalogs: Sequence = None) -> 'FestivalLibrary': diff --git a/docs/changelog.md b/docs/changelog.md index 8752124..729631f 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,10 +1,19 @@ # 更新日志 -## v4.1.0 +## v4.1.0 (20240330) + +> Borax最低python版本要求为python3.9 + +[发布日志](/release-note/v410) + - 功能更新 - 新增 [Borax日历应用](/guides/borax_calendar_app) + - 包 `borax.apps` 变更为 `borax.capp` - 新增方法 `FestivalLibrary.extend_term_festivals` + - 新增 `borax.ui.widgets.MessageLabel` 类 + - `Festival` 类新增 `code` 属性 - 项目构建 + - 不再支持python3.7和python3.8 - 本地开发环境更新至 python3.11.7 - 使用 *pyproject.toml* 项目构建配置文件,构建命令 `python -m build -w` - 支持python3.12 @@ -12,9 +21,10 @@ - mkdocs-material 更新至 9.5.3 - 不再支持 docsify 构建(index.html 冲突) - ## v4.0.0 (20221115) +[发布日志](/release-note/v400) + - 新增基于 tkinter 的 [节日界面库](/guides/festivals2-ui) - 移除源代码文件编码声明行 - 移除 `borax.calendars.festival` 模块 diff --git a/docs/guides/festivals2.md b/docs/guides/festivals2.md index f6a0ff4..a8d7cd7 100644 --- a/docs/guides/festivals2.md +++ b/docs/guides/festivals2.md @@ -2,6 +2,8 @@ > 模块: `borax.calendars.festivals2` +> Updated in 4.1.0:新增 Festival.code属性。 + > Updated in 3.5.6: 星期型节日(WeekFestival)类支持倒数序号。如:“国际麻风节(1月最后一个星期天)” > Updated in 3.5.6: 星期型节日(WeekFestival)类支持每月频率。 @@ -247,6 +249,14 @@ TermFestival(index=0) ## Festival属性 +### code + +> Add in 4.1.0 + +类型:str,编码字符串。 `FestivalLibrary` 以此属性作为唯一性的标志。 + +需要注意的是该属性使用 `cached_property` 进行修饰。 + ### name 类型:str,节日名称,如“元旦”、“中秋节”等。 @@ -408,12 +418,14 @@ print(spring_festival.countdown()) # (273, 'FestivalLibrary' ### load_builtin ```python -FestivalLibrary.load_builtin(cls, identifier: str = 'zh-Hans') -> 'FestivalLibrary' +FestivalLibrary.load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary' ``` 加载Borax提供的节日库数据。 diff --git a/pyproject.toml b/pyproject.toml index 7419bb0..0996dc9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,14 +9,12 @@ authors = [ ] description = "A tool collections.(Chinese-Lunar-Calendars/Python-Patterns)" readme = "README.md" -requires-python = ">=3.7" +requires-python = ">=3.9" keywords = ["chinese lunar calendar", "python tool"] license = { text = "MIT License" } classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", diff --git a/setup.py b/setup.py index a9d9464..b99d7a5 100644 --- a/setup.py +++ b/setup.py @@ -12,11 +12,10 @@ lib_classifiers = [ "Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3 :: Only", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", @@ -31,7 +30,7 @@ setup( name='borax', version=version, - python_requires='>=3.7', + python_requires='>=3.9', packages=find_packages(exclude=['tests']), include_package_data=True, license='MIT', From e9f429728e58eae0a47093605c813ab355dde83c Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 24 Jan 2024 23:26:51 +0800 Subject: [PATCH 24/29] :sparkles: code improve --- README.md | 17 ++++++++++------- docs/README.md | 13 +++++++------ docs/guides/numbers.md | 2 +- docs/release-note/v410.md | 29 +++++++++++++++++++++++++++++ mkdocs.yaml | 6 ++++-- tests/test_runtime_measurer.py | 1 - 6 files changed, 51 insertions(+), 17 deletions(-) create mode 100644 docs/release-note/v410.md diff --git a/README.md b/README.md index 9ec0e0d..2bac926 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,11 @@ Borax 是一个Python3工具集合库。包括了以下几个话题: Borax 的 python 版本要求如下 -| borax 版本 | python版本 | -| ------ | ------ | -| 4.x | 3.7+ | -| 3.x | 3.5+ | +| borax 版本 | python版本 | 维护状态 | +| ------ | ------ | ------ | +| 4.1.x | 3.9+ | 维护开发 | +| 4.0.0 | 3.7+ | 不再维护 | +| 3.x | 3.5+ | 不再维护 | 可以通过 *pip* 安装 : @@ -202,13 +203,15 @@ print(FinanceNumbers.to_capital_str(decimal.Decimal(4.50))) # '肆元伍角零 ## 文档 (Document) -文档由 [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) 构建,另外备用文档使用 [docsify](https://docsify.js.org/) 构建。 +文档由 [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) 构建 ~~,另外备用文档使用 [docsify](https://docsify.js.org/) 构建~~ 。 + +> 2024年1月起,仅保留 Read the Docs 文档源。 | 源 | 网址 | | ---- | ---- | | read-the-docs | [https://borax.readthedocs.io/zh_CN/latest/](https://borax.readthedocs.io/zh_CN/latest/) | -| github | [https://kinegratii.github.io/borax](https://kinegratii.github.io/borax) | -| gitee | [https://kinegratii.gitee.io/borax](https://kinegratii.gitee.io/borax) | +| github(已废弃) | [https://kinegratii.github.io/borax](https://kinegratii.github.io/borax) | +| gitee(已废弃) | [https://kinegratii.gitee.io/borax](https://kinegratii.gitee.io/borax) | ## 开发特性和规范 (Development Features) diff --git a/docs/README.md b/docs/README.md index 33d0ed8..0f5c71a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -30,10 +30,10 @@ Borax 是一个Python3工具集合库。 ## 开发(Development) - **开发环境**: python3.11.7 -- **集成测试环境**: python3.7 - 3.12 +- **集成测试环境**: python3.9 - 3.12 - **代码仓库**:[Github](https://github.com/kinegratii/borax/) | [Gitee (镜像)](https://gitee.com/kinegratii/borax) - **项目开发**: [版本日志](changelog) | [技术文档(外链)](http://fd8cc08f.wiz06.com/wapp/pages/view/share/s/3Zzc2f0LJQ3w2TWIQb0ZMSna1zg4gs1vPQmb2vlh9M2zhqK8) -- **发布日志**: [v3.5](release-note/v350) | [v3.5.6](release-note/v356) | [v4.0.0](release-note/v400) +- **发布日志**: [v3.5](release-note/v350) | [v3.5.6](release-note/v356) | [v4.0.0](release-note/v400) | [v4.1.0](release-note/v410) ## 快速开始(Quickstart) @@ -41,10 +41,11 @@ Borax 是一个Python3工具集合库。 Borax 的 python 版本要求如下 -| borax 版本 | python版本 | -| ------ | ------ | -| 4.x | 3.7+ | -| 3.x | 3.5+ | +| borax 版本 | python版本 | 维护状态 | +| ------ | ------ | ------ | +| 4.1.x | 3.9+ | 维护开发 | +| 4.0.0 | 3.7+ | 不再维护 | +| 3.x | 3.5+ | 不再维护 | 可以通过 *pip* 安装 : diff --git a/docs/guides/numbers.md b/docs/guides/numbers.md index 21bf46f..22b1707 100644 --- a/docs/guides/numbers.md +++ b/docs/guides/numbers.md @@ -6,7 +6,7 @@ `numbers` 提供了下列的模块级常量。 -- **numbers.MAX_VALUE_LIMIT = 1_0000_0000_0000 ** +- **numbers.MAX_VALUE_LIMIT = 1_0000_0000_0000** 本模块可以处理的数字上限,值为一万亿(10^12) , 超过该值将抛出 `ValueError` 异常,适用本模块的所有函数。 diff --git a/docs/release-note/v410.md b/docs/release-note/v410.md new file mode 100644 index 0000000..382980c --- /dev/null +++ b/docs/release-note/v410.md @@ -0,0 +1,29 @@ +# v4.1.0发布日志 + +> 发布时间:2024年3月30日 + + + +## 1 项目开发 + +从 4.1.0 开始,Borax 在项目开发构建上有重大变更,具体包括: + +- **Borax不再支持 python3.7和python3.8,最低版本为3.9** +- 本地开发环境更新至3.11 +- 使用 *pyproject.toml* 取代原有的 *setup.py* 和 *setup.cfg* 文件。 +- 更新大量开发依赖库( *requirements_dev.txt* )的版本。 + + + +## 2 日历应用 + +Borax 提供了一个基于 tkinter 的日历应用程序,该日历应用包含了一些常见的功能: + +- 万年历显示 +- 日期计算相关工具 +- 查看节日、节气、干支信息 +- 创建和导出节日源 + +## 3 其他功能 + +参见更新日志。 \ No newline at end of file diff --git a/mkdocs.yaml b/mkdocs.yaml index 41bb865..c17a294 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -22,7 +22,7 @@ markdown_extensions: - mdx_truly_sane_lists nav: - 首页: README.md - - 应用: guides/borax_calendar_app.md + - 日历应用: guides/borax_calendar_app.md - 农历与节日: - 农历: guides/lunardate.md - 节日: guides/festivals2.md @@ -44,9 +44,11 @@ nav: - 文章: - 农历与节日: guides/festivals2-usage.md - 农历开发笔记: posts/lunardate-development.md - - 更新日志: + - 开发&更新日志: - 更新日志: changelog.md + - 开发日志: develop_note.md - 发布日志: + - v4.1.0: release-note/v410.md - v4.0.0: release-note/v400.md - v3.5.6: release-note/v356.md - v3.5.0: release-note/v350.md \ No newline at end of file diff --git a/tests/test_runtime_measurer.py b/tests/test_runtime_measurer.py index 6742b80..e547d16 100644 --- a/tests/test_runtime_measurer.py +++ b/tests/test_runtime_measurer.py @@ -1,4 +1,3 @@ -import time import unittest from borax.devtools import RuntimeMeasurer From fb66fadcfae9b3760221faacef32e602a5c38a69 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 26 Jan 2024 00:35:10 +0800 Subject: [PATCH 25/29] :sparkles: Add FestivalLibrary.load --- borax/calendars/dataset/__init__.py | 2 ++ borax/calendars/festivals2.py | 11 +++++++++++ docs/changelog.md | 3 ++- docs/guides/festivals2.md | 18 ++++++++++++++++++ tests/test_festival_library.py | 6 ++++++ 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/borax/calendars/dataset/__init__.py b/borax/calendars/dataset/__init__.py index 6db80ab..5226672 100644 --- a/borax/calendars/dataset/__init__.py +++ b/borax/calendars/dataset/__init__.py @@ -11,4 +11,6 @@ def get_festival_dataset_path(identifier: str) -> Path: """Return the full path for festival dataset csv file.""" + if identifier not in _FILE_DICT: + raise ValueError(f'Festival Dataset {identifier} not found!') return Path(__file__).parent / _FILE_DICT.get(identifier) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index f0d8f3e..ce4fa17 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -1222,3 +1222,14 @@ def load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary': if identifier == 'empty': return FestivalLibrary() return cls.load_file(get_festival_dataset_path(identifier)) + + @classmethod + def load(cls, identifier_or_path: Union[str, Path]) -> 'FestivalLibrary': + """Create a FestivalLibrary object from borax builtin dataset or custom file.""" + if identifier_or_path == 'empty': + return FestivalLibrary() + try: + path_o = get_festival_dataset_path(identifier_or_path) + return cls.load_file(path_o) + except ValueError: + return cls.load_file(identifier_or_path) diff --git a/docs/changelog.md b/docs/changelog.md index 729631f..e7a7276 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -9,7 +9,8 @@ - 功能更新 - 新增 [Borax日历应用](/guides/borax_calendar_app) - 包 `borax.apps` 变更为 `borax.capp` - - 新增方法 `FestivalLibrary.extend_term_festivals` + - 新增方法 `FestivalLibrary.extend_term_festivals` + - 新增方法 `FestivalLibrary.load` - 新增 `borax.ui.widgets.MessageLabel` 类 - `Festival` 类新增 `code` 属性 - 项目构建 diff --git a/docs/guides/festivals2.md b/docs/guides/festivals2.md index a8d7cd7..0d5aa2c 100644 --- a/docs/guides/festivals2.md +++ b/docs/guides/festivals2.md @@ -488,6 +488,24 @@ FestivalLibrary.delete_by_indexes(indexes:List[int]) 按照位置删除多个元素。 +### load + +> Add in 4.1.0 + +```python +FestivalLibrary.load(cls, identifier_or_path: Union[str, Path]) -> 'FestivalLibrary' +``` + +加载Borax内部数据或自定义文件。 + +```python +fl = FestivalLibrary.load('basic') + +fl2 = FestivalLibrary.load('/usr/my/my_festivals.csv') +``` + + + ### load_file ```python diff --git a/tests/test_festival_library.py b/tests/test_festival_library.py index fceaa49..97f11a2 100644 --- a/tests/test_festival_library.py +++ b/tests/test_festival_library.py @@ -23,6 +23,12 @@ def test_library(self): self.assertIn('元旦', [g.name for g in gd_days]) + def test_new_load(self): + fl = FestivalLibrary.load('basic') + self.assertEqual(33, len(fl)) + with self.assertRaises(FileNotFoundError): + fl2 = FestivalLibrary.load('not-found') + def test_list_days(self): fl = FestivalLibrary.load_builtin() fes_list = [] From 7cc0a84e4f5bad45ea529f71ae3d56fe4bf2e622 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Fri, 26 Jan 2024 23:09:57 +0800 Subject: [PATCH 26/29] :sparkles: Make solar&lunar readonly for WrappedDate --- borax/calendars/festivals2.py | 21 +++++++++++---------- borax/capp/borax_calendar_app.py | 6 ++---- docs/changelog.md | 1 + mkdocs.yaml | 4 ++++ tests/test_date_pickle.py | 31 ++++++++++++++++++++++--------- 5 files changed, 40 insertions(+), 23 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index ce4fa17..e84de7f 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -65,17 +65,25 @@ class FestivalSchema(enum.IntEnum): class WrappedDate: """A date object with solar and lunar calendars.""" - __slots__ = ['solar', 'lunar', 'name', '_fl'] + __slots__ = ['_solar', '_lunar', 'name', '_fl'] def __init__(self, date_obj: MixedDate, name: str = ''): - self.solar = LCalendars.cast_date(date_obj, date) - self.lunar = LCalendars.cast_date(date_obj, LunarDate) + self._solar = LCalendars.cast_date(date_obj, date) + self._lunar = LCalendars.cast_date(date_obj, LunarDate) self.name = name if isinstance(date_obj, date): self._fl = 's' else: self._fl = 'l' + @property + def solar(self): + return self._solar + + @property + def lunar(self): + return self._lunar + def __iter__(self): yield self.solar yield self.lunar @@ -122,13 +130,6 @@ def __hash__(self): def __eq__(self, other): return isinstance(self, type(other)) and self.__key() == other.__key() - def __getstate__(self): - return self.__key() - - def __setstate__(self, state): - _year, _month, _day = state - self.solar = date(_year, _month, _day) - def full_str(self): return f'{self.solar}({self.lunar.cn_str()})' diff --git a/borax/capp/borax_calendar_app.py b/borax/capp/borax_calendar_app.py index de4e024..bc5e2fb 100644 --- a/borax/capp/borax_calendar_app.py +++ b/borax/capp/borax_calendar_app.py @@ -18,8 +18,6 @@ library = FestivalLibrary.load_builtin().sort_by_countdown() -__VERSION__ = '1.1.0' - PROJECT_URLS = { 'home': 'https://github.com/kinegratii/borax' } @@ -347,7 +345,7 @@ def start_festival_dlg(self): self._create_festival_dialog() def show_about_info(self): - showinfo('关于', f' 日历v{__VERSION__}\n\n Powered by Borax{borax_version}') + showinfo('关于', f' 日历v{borax_version}\n\n Powered by Borax{borax_version}') def start_calendar_app(): @@ -356,7 +354,7 @@ def start_calendar_app(): x, y = int(root.winfo_screenwidth() / 2 - rw / 2), int(root.winfo_screenheight() / 2 - rh / 2) root.geometry(f"{rw}x{rh}+{x}+{y}") root.resizable(False, False) - root.title(f'日历 - v{__VERSION__}') + root.title(f'日历 - v{borax_version}') global style style = ttk.Style(root) # style.theme_use('alt') diff --git a/docs/changelog.md b/docs/changelog.md index e7a7276..23d1e92 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -13,6 +13,7 @@ - 新增方法 `FestivalLibrary.load` - 新增 `borax.ui.widgets.MessageLabel` 类 - `Festival` 类新增 `code` 属性 + - `WrappedDate.solar` 和 `WrappedDate.lunar` 属性变更为只读属性,不可写入 - 项目构建 - 不再支持python3.7和python3.8 - 本地开发环境更新至 python3.11.7 diff --git a/mkdocs.yaml b/mkdocs.yaml index c17a294..b80922b 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -9,6 +9,10 @@ theme: - navigation.tabs - navigation.sections - navigation.footer +validation: + links: + absolute_links: ignore + unrecognized_links: ignore extra: social: - icon: fontawesome/brands/github diff --git a/tests/test_date_pickle.py b/tests/test_date_pickle.py index 1e0c29c..bb60b80 100644 --- a/tests/test_date_pickle.py +++ b/tests/test_date_pickle.py @@ -2,13 +2,24 @@ import pickle from io import BytesIO +from datetime import date + from borax.calendars.lunardate import LunarDate from borax.calendars.festivals2 import WrappedDate +class WrappedDateBasicTestCase(unittest.TestCase): + def test_wrapped_date(self): + ld = LunarDate.today() + wd = WrappedDate(ld) + self.assertEqual(ld, wd.lunar) + with self.assertRaises(AttributeError): + wd.lunar = LunarDate(2024, 1, 1) + + class DatePickleTestCase(unittest.TestCase): - def test_wd(self): + def test_lunardate_pickle(self): ld1 = LunarDate.today() fp = BytesIO() @@ -18,11 +29,13 @@ def test_wd(self): e_ld = pickle.load(fp) self.assertEqual(ld1, e_ld) - wd1 = WrappedDate(ld1) - fp2 = BytesIO() - - pickle.dump(wd1, fp2) - - fp2.seek(0) - wd2 = pickle.load(fp2) - self.assertEqual(wd2, wd1) + def test_wrapped_date_pickle(self): + wd_list = [WrappedDate(date.today()), WrappedDate(LunarDate.today())] + for wd in wd_list: + with self.subTest(wd=wd): + fp = BytesIO() + pickle.dump(wd, fp) + fp.seek(0) + new_wd = pickle.load(fp) + self.assertEqual(wd.solar, new_wd.solar) + self.assertEqual(wd.lunar, new_wd.lunar) From 39a9a1ce45b0f23bdd1bee84d3fbd3eac5cb70c9 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Sat, 27 Jan 2024 15:16:51 +0800 Subject: [PATCH 27/29] :sparkles: Refactor FestivalLibrary.load --- borax/calendars/festivals2.py | 25 ++++++++++++++++++------- tests/test_festival_library.py | 7 ++++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index e84de7f..11aab60 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -18,7 +18,7 @@ 'FreqConst', 'Festival', 'FestivalSchema', 'SolarFestival', 'LunarFestival', 'WeekFestival', 'TermFestival', 'encode', 'decode', 'decode_festival', - 'FestivalLibrary', 'ConditionUtils' + 'FestivalLibrary', 'ConditionUtils', 'FestivalDatasetNotExist' ] MixedDate = Union[date, LunarDate] @@ -970,6 +970,10 @@ def description_contains(festival: Festival, description_contains: str): return description_contains in festival.description +class FestivalDatasetNotExist(Exception): + pass + + class FestivalLibrary(collections.UserList): """A festival collection. @@ -1226,11 +1230,18 @@ def load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary': @classmethod def load(cls, identifier_or_path: Union[str, Path]) -> 'FestivalLibrary': - """Create a FestivalLibrary object from borax builtin dataset or custom file.""" + """Create a FestivalLibrary object from borax builtin dataset or custom file. + If dataset does not exist,a FestivalDatasetNotExist is raised. + """ if identifier_or_path == 'empty': return FestivalLibrary() - try: - path_o = get_festival_dataset_path(identifier_or_path) - return cls.load_file(path_o) - except ValueError: - return cls.load_file(identifier_or_path) + if isinstance(identifier_or_path, str): + try: + path_o = get_festival_dataset_path(identifier_or_path) + except ValueError: + path_o = Path(identifier_or_path) + else: + path_o = identifier_or_path + if not path_o.exists(): + raise FestivalDatasetNotExist(f'FestivalDataset does not exist:{identifier_or_path}') + return cls.load_file(path_o) diff --git a/tests/test_festival_library.py b/tests/test_festival_library.py index 97f11a2..095ee70 100644 --- a/tests/test_festival_library.py +++ b/tests/test_festival_library.py @@ -3,7 +3,8 @@ from io import StringIO from unittest.mock import MagicMock, patch -from borax.calendars.festivals2 import LunarFestival, TermFestival, FestivalLibrary, FestivalSchema +from borax.calendars.festivals2 import (LunarFestival, TermFestival, FestivalLibrary, FestivalSchema, + FestivalDatasetNotExist) class FestivalLibraryTestCase(unittest.TestCase): @@ -26,8 +27,8 @@ def test_library(self): def test_new_load(self): fl = FestivalLibrary.load('basic') self.assertEqual(33, len(fl)) - with self.assertRaises(FileNotFoundError): - fl2 = FestivalLibrary.load('not-found') + with self.assertRaises(FestivalDatasetNotExist): + FestivalLibrary.load('not-found') def test_list_days(self): fl = FestivalLibrary.load_builtin() From b7ec13da6363a6efbaef4ddadc6f3a8fa8dcda6b Mon Sep 17 00:00:00 2001 From: kinegratii Date: Tue, 30 Jan 2024 21:36:24 +0800 Subject: [PATCH 28/29] :pencil: Update docs --- README.md | 8 +++--- borax/calendars/festivals2.py | 6 ++-- docs/README.md | 2 +- docs/changelog.md | 2 +- docs/develop_note.md | 53 +++++++++++++++++++++++++++++++++++ docs/release-note/v410.md | 2 +- 6 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 docs/develop_note.md diff --git a/README.md b/README.md index 2bac926..d70e03d 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Borax 的 python 版本要求如下 | borax 版本 | python版本 | 维护状态 | | ------ | ------ | ------ | | 4.1.x | 3.9+ | 维护开发 | -| 4.0.0 | 3.7+ | 不再维护 | +| 4.0.0 | 3.7+ | 维护至2024年12月31日 | | 3.x | 3.5+ | 不再维护 | 可以通过 *pip* 安装 : @@ -59,7 +59,7 @@ borax~=4.1 一个支持1900-2100年的农历日期工具库。 -> 本模块的数据和算法参考自项目 [jjonline/calendar.js](https://github.com/jjonline/calendar.js) 。 +> 本模块的数据和算法参考自项目 [jjonline/calendar.js](https://github.com/jjonline/calendar.js) ,部分算法和数据有所修改。 创建日期,日期推算 @@ -67,7 +67,7 @@ borax~=4.1 from datetime import timedelta from borax.calendars import LunarDate -# 获取今天的农历日期(农历2018年七月初一) +# 获取今天的农历日期(农历二〇一八年七月初一) print(LunarDate.today()) # LunarDate(2018, 7, 1, 0) # 将公历日期转化为农历日期 @@ -100,7 +100,7 @@ festival = LunarFestival(month=1, day=1) print(festival.description) # '农历每年正月初一' # 下一次春节的具体日期以及距离天数 -print(festival.countdown()) # (273, ) +print(festival.countdown()) # (273, ) # 接下来5个春节的日期 ['2022-02-01(二〇二二年正月初一)', '2023-01-22(二〇二三年正月初一)', '2024-02-10(二〇二四年正月初一)', '2025-01-29(二〇二五年正月初一)', '2026-02-17(二〇二六年正月初一)'] print([str(wd) for wd in festival.list_days(start_date=date.today(), count=5)]) diff --git a/borax/calendars/festivals2.py b/borax/calendars/festivals2.py index 11aab60..e402ab5 100644 --- a/borax/calendars/festivals2.py +++ b/borax/calendars/festivals2.py @@ -8,7 +8,7 @@ from datetime import date, timedelta, datetime from functools import cached_property from pathlib import Path -from typing import List, Tuple, Optional, Union, Iterator, Set, Generator, Sequence +from typing import List, Tuple, Optional, Union, Iterator, Set, Generator, Sequence, Literal from borax.calendars.dataset import get_festival_dataset_path from borax.calendars.lunardate import LunarDate, LCalendars, TermUtils, TextUtils, TERMS_CN @@ -1219,13 +1219,15 @@ def load_term_festivals(self): return self.extend_term_festivals() @classmethod - def load_builtin(cls, identifier: str = 'basic') -> 'FestivalLibrary': + def load_builtin(cls, identifier: Literal['basic', 'empty', 'ext1', 'zh-Hans'] = 'basic') -> 'FestivalLibrary': """Load builtin library in borax project. Available Identifiers: basic, zh-Hans, ext1, empty """ if identifier == 'empty': return FestivalLibrary() + if identifier == 'zh-Hans': + warnings.warn('identifier "zh-Hans" is deprecated.Use "basic" instead. ', DeprecationWarning) return cls.load_file(get_festival_dataset_path(identifier)) @classmethod diff --git a/docs/README.md b/docs/README.md index 0f5c71a..a5897c1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -44,7 +44,7 @@ Borax 的 python 版本要求如下 | borax 版本 | python版本 | 维护状态 | | ------ | ------ | ------ | | 4.1.x | 3.9+ | 维护开发 | -| 4.0.0 | 3.7+ | 不再维护 | +| 4.0.0 | 3.7+ | 维护至2024年12月31日 | | 3.x | 3.5+ | 不再维护 | 可以通过 *pip* 安装 : diff --git a/docs/changelog.md b/docs/changelog.md index 23d1e92..9c4aa6d 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,6 +1,6 @@ # 更新日志 -## v4.1.0 (20240330) +## v4.1.0 (20240131) > Borax最低python版本要求为python3.9 diff --git a/docs/develop_note.md b/docs/develop_note.md new file mode 100644 index 0000000..ccdb3f0 --- /dev/null +++ b/docs/develop_note.md @@ -0,0 +1,53 @@ +# 开发笔记 + +## python版本约束 + +Borax 4.1.0开始,要求python最低版本为3.9,主要是引入了新的特性,包括: + +- `functools.cached_property` 装饰器 (python3.8+) +- `typing.Literal` 类型注释(python3.8+) + +## 代码风格 + +项目代码风格以 [PEP8](https://peps.python.org/pep-0008/) + pycharm 的配置为基准,并增加下列的一些自定义规则。 + +- 代码每行长度限制为120 +- 函数复杂度限制为25 +- 禁止使用 `\` 作为代码行分割的标志,需使用括号 +- 不再接受注释方式的类型声明,如 `a = 2 # type:int` 应该为 `a:int = 2` (pyflake触发 `F401` 警告) + +## 项目开发 + +Borax 默认使用 *pyproject.toml* 文件作为项目配置文件,具体包括单元测试、静态检查等内容。 + +*pyproject.toml* 配置文件目前包括以下内容: + +| 功能 | 开发库 | 独立配置文件 | pyproject.toml配置段 | 备注 | +| ------------ | -------- | ------------ | -------------------- | -------------------------- | +| 项目基本信息 | - | | [project] | | +| 单元测试 | nose2 | | | | +| 覆盖率 | coverage | | [tool.coverage] | | +| 静态检查 | flake8 | | [tool.flake8] | 通过 Flake8-pyproject 实现 | +| 静态检查 | pylint | .pylintrc | | 配置项过多,不进行迁移 | +| 项目构建 | build | | [tool.setuptool] | | + + + +## 项目构建 + +项目使用 `build` 作为包构建工具,使用下列命令生成 wheel 文件。 + +```shell +python -m build -w +``` + +## 文档编写 + +除了常规的模块文档外,项目包括以下两种日志文档: + +- 更新日志:每个版本的changelog。 +- 发布日志:某些重要版本的 release note,每个版本单独一篇文章。 + +## 文档生成 + +Borax项目使用 [Material for MkDocs ](https://squidfunk.github.io/mkdocs-material/) 作为文档生成工具,不再支持 docsify 文档生成工具。 diff --git a/docs/release-note/v410.md b/docs/release-note/v410.md index 382980c..6b82cf4 100644 --- a/docs/release-note/v410.md +++ b/docs/release-note/v410.md @@ -1,6 +1,6 @@ # v4.1.0发布日志 -> 发布时间:2024年3月30日 +> 发布时间:2024年1月31日 From a9b410e16adba3585baff7de53822580eaa2f073 Mon Sep 17 00:00:00 2001 From: kinegratii Date: Wed, 31 Jan 2024 22:32:15 +0800 Subject: [PATCH 29/29] :bookmark: release v4.1.0 --- docs/develop_note.md | 22 ++++++++++++++++------ docs/release-note/v410.md | 23 ++++++++++++++++++++++- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/docs/develop_note.md b/docs/develop_note.md index ccdb3f0..4d5e984 100644 --- a/docs/develop_note.md +++ b/docs/develop_note.md @@ -1,13 +1,15 @@ # 开发笔记 -## python版本约束 +## 代码编写 + +### python版本约束 Borax 4.1.0开始,要求python最低版本为3.9,主要是引入了新的特性,包括: - `functools.cached_property` 装饰器 (python3.8+) - `typing.Literal` 类型注释(python3.8+) -## 代码风格 +### 代码风格 项目代码风格以 [PEP8](https://peps.python.org/pep-0008/) + pycharm 的配置为基准,并增加下列的一些自定义规则。 @@ -16,7 +18,13 @@ Borax 4.1.0开始,要求python最低版本为3.9,主要是引入了新的特 - 禁止使用 `\` 作为代码行分割的标志,需使用括号 - 不再接受注释方式的类型声明,如 `a = 2 # type:int` 应该为 `a:int = 2` (pyflake触发 `F401` 警告) -## 项目开发 +### API稳定性 + +Borax 保证API的稳定性,使用 `warnings` 模块标识已经被废弃的类和函数,并在首次标识之后的2-3个系列版本移除这些类和函数。 + +## 项目构建 + +### 配置文件 Borax 默认使用 *pyproject.toml* 文件作为项目配置文件,具体包括单元测试、静态检查等内容。 @@ -33,7 +41,7 @@ Borax 默认使用 *pyproject.toml* 文件作为项目配置文件,具体包 -## 项目构建 +### 项目构建 项目使用 `build` 作为包构建工具,使用下列命令生成 wheel 文件。 @@ -41,13 +49,15 @@ Borax 默认使用 *pyproject.toml* 文件作为项目配置文件,具体包 python -m build -w ``` -## 文档编写 +## 文档 + +### 文档编写 除了常规的模块文档外,项目包括以下两种日志文档: - 更新日志:每个版本的changelog。 - 发布日志:某些重要版本的 release note,每个版本单独一篇文章。 -## 文档生成 +### 文档生成 Borax项目使用 [Material for MkDocs ](https://squidfunk.github.io/mkdocs-material/) 作为文档生成工具,不再支持 docsify 文档生成工具。 diff --git a/docs/release-note/v410.md b/docs/release-note/v410.md index 6b82cf4..74b037b 100644 --- a/docs/release-note/v410.md +++ b/docs/release-note/v410.md @@ -24,6 +24,27 @@ Borax 提供了一个基于 tkinter 的日历应用程序,该日历应用包 - 查看节日、节气、干支信息 - 创建和导出节日源 +在安装 Borax 之后,使用 `python -m borax.capp` 启动该界面程序 。 + ## 3 其他功能 -参见更新日志。 \ No newline at end of file +Borax 4.1.0 主要更新了 `borax.calendars.festivals2` 模块的功能。 + +### 3.1 WrappedDate + +`WrappedDate.solar` 和 `WrappedDate.lunar` 属性修改为 **只读属性,不可写入** 。 + +### 3.2 Festival + +`Festival` 新增 `code` 属性,表示节日的编码,该属性为惰性属性,使用 `cached_property` 装饰。 + +### 3.3 FestivalLibrary + +新增 `FestivalLibrary.load` 函数,这是 `load_file` 和 `load_builtin` 的混合接口 。 + +```python +fl1 = FestivalLibrary.load('basic') + +fl2 = FestivalLibrary.load('c:\\users\\samuel\\festival_data\\my_festivals.csv') +``` +