From a12c843cef7b3339625182a37aaa0fd5e4f4efbf Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 23 Feb 2026 12:55:12 -0500 Subject: [PATCH 1/4] Migrate to pyproject.toml and towncrier fragments Co-Authored-By: Claude Opus 4.6 --- .github/bump_version.py | 81 ++++++++++++++++++++ .github/workflows/pr.yaml | 29 +++---- .github/workflows/push.yaml | 11 +-- Makefile | 7 +- changelog_entry.yaml => changelog.d/.gitkeep | 0 changelog.d/migrate-to-towncrier.changed.md | 1 + pyproject.toml | 81 ++++++++++++++++++++ setup.py | 70 ----------------- 8 files changed, 179 insertions(+), 101 deletions(-) create mode 100644 .github/bump_version.py rename changelog_entry.yaml => changelog.d/.gitkeep (100%) create mode 100644 changelog.d/migrate-to-towncrier.changed.md create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/.github/bump_version.py b/.github/bump_version.py new file mode 100644 index 000000000..19aa79079 --- /dev/null +++ b/.github/bump_version.py @@ -0,0 +1,81 @@ +"""Infer semver bump from towncrier fragment types and update version.""" + +import re +import sys +from pathlib import Path + + +def get_current_version(pyproject_path: Path) -> str: + text = pyproject_path.read_text() + match = re.search( + r'^version\s*=\s*"(\d+\.\d+\.\d+)"', text, re.MULTILINE + ) + if not match: + print( + "Could not find version in pyproject.toml", + file=sys.stderr, + ) + sys.exit(1) + return match.group(1) + + +def infer_bump(changelog_dir: Path) -> str: + fragments = [ + f + for f in changelog_dir.iterdir() + if f.is_file() and f.name != ".gitkeep" + ] + if not fragments: + print("No changelog fragments found", file=sys.stderr) + sys.exit(1) + + categories = {f.suffix.lstrip(".") for f in fragments} + for f in fragments: + parts = f.stem.split(".") + if len(parts) >= 2: + categories.add(parts[-1]) + + if "breaking" in categories: + return "major" + if "added" in categories or "removed" in categories: + return "minor" + return "patch" + + +def bump_version(version: str, bump: str) -> str: + major, minor, patch = (int(x) for x in version.split(".")) + if bump == "major": + return f"{major + 1}.0.0" + elif bump == "minor": + return f"{major}.{minor + 1}.0" + else: + return f"{major}.{minor}.{patch + 1}" + + +def update_file(path: Path, old_version: str, new_version: str): + text = path.read_text() + updated = text.replace( + f'version = "{old_version}"', + f'version = "{new_version}"', + ) + if updated != text: + path.write_text(updated) + print(f" Updated {path}") + + +def main(): + root = Path(__file__).resolve().parent.parent + pyproject = root / "pyproject.toml" + changelog_dir = root / "changelog.d" + + current = get_current_version(pyproject) + bump = infer_bump(changelog_dir) + new = bump_version(current, bump) + + print(f"Version: {current} -> {new} ({bump})") + + update_file(pyproject, current, new) + + +if __name__ == "__main__": + main() diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index b5d6b9757..5a904efcc 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -11,25 +11,20 @@ jobs: uses: "lgeiger/black-action@master" with: args: ". -l 79 --check" - check-version: - name: Check version + check-changelog: + name: Check changelog fragment runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.13 - - name: Build changelog - run: pip install yaml-changelog==0.3.0 && make changelog - - name: Preview changelog update - run: ".github/get-changelog-diff.sh" - - name: Check version number has been properly updated - run: .github/is-version-number-acceptable.sh + - uses: actions/checkout@v4 + - name: Check for changelog fragment + run: | + FRAGMENTS=$(find changelog.d -type f ! -name '.gitkeep' | wc -l) + if [ "$FRAGMENTS" -eq 0 ]; then + echo "::error::No changelog fragment found in changelog.d/" + echo "Add one with: echo 'Description.' > changelog.d/\$(git branch --show-current)..md" + echo "Types: added, changed, fixed, removed, breaking" + exit 1 + fi Test: runs-on: ${{ matrix.os }} strategy: diff --git a/.github/workflows/push.yaml b/.github/workflows/push.yaml index b61e4ee8d..735170ecb 100644 --- a/.github/workflows/push.yaml +++ b/.github/workflows/push.yaml @@ -23,16 +23,12 @@ jobs: steps: - name: Checkout repo uses: actions/checkout@v3 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - token: ${{ secrets.POLICYENGINE_GITHUB }} + with: token: ${{ secrets.POLICYENGINE_GITHUB }} - name: Setup Python uses: actions/setup-python@v4 with: python-version: 3.13 - name: Build changelog - run: pip install yaml-changelog==0.3.0 && make changelog - name: Preview changelog update run: ".github/get-changelog-diff.sh" - name: Update changelog @@ -107,10 +103,7 @@ jobs: steps: - name: Checkout repo uses: actions/checkout@v2 - with: - repository: ${{ github.event.pull_request.head.repo.full_name }} - ref: ${{ github.event.pull_request.head.ref }} - token: ${{ secrets.POLICYENGINE_GITHUB }} + with: token: ${{ secrets.POLICYENGINE_GITHUB }} - name: Setup Python uses: actions/setup-python@v2 with: diff --git a/Makefile b/Makefile index 2e4ba2917..103191f8d 100644 --- a/Makefile +++ b/Makefile @@ -18,8 +18,5 @@ build: python setup.py sdist bdist_wheel changelog: - build-changelog changelog.yaml --output changelog.yaml --update-last-date --start-from 0.0.0 --append-file changelog_entry.yaml - build-changelog changelog.yaml --org PolicyEngine --repo policyengine-canada --output CHANGELOG.md --template .github/changelog_template.md - bump-version changelog.yaml setup.py - rm changelog_entry.yaml || true - touch changelog_entry.yaml \ No newline at end of file + python .github/bump_version.py + towncrier build --yes --version $$(python -c "import re; print(re.search(r'version = \"(.+?)\"', open('pyproject.toml').read()).group(1))") \ No newline at end of file diff --git a/changelog_entry.yaml b/changelog.d/.gitkeep similarity index 100% rename from changelog_entry.yaml rename to changelog.d/.gitkeep diff --git a/changelog.d/migrate-to-towncrier.changed.md b/changelog.d/migrate-to-towncrier.changed.md new file mode 100644 index 000000000..865484add --- /dev/null +++ b/changelog.d/migrate-to-towncrier.changed.md @@ -0,0 +1 @@ +Migrated from changelog_entry.yaml to towncrier fragments to eliminate merge conflicts. diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..7a343e12f --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,81 @@ +[project] +name = "policyengine-canada" +version = "0.96.6" +description = "Microsimulation model for Canada's tax-benefit system." +readme = "README.md" +authors = [ + { name = "PolicyEngine", email = "hello@policyengine.org" } +] +requires-python = ">=3.10" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "License :: OSI Approved :: GNU Affero General Public License v3", + "Operating System :: POSIX", + "Programming Language :: Python", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Topic :: Scientific/Engineering :: Information Analysis", +] +dependencies = [ + "black[jupyter]", + "coverage<7", + "dpath<3", + "h5py>=3,<4", + "linecheck<1", + "microdf_python>=1.2.1", + "nptyping<2", + "numexpr<3", + "pandas>=2.2.0", + "plotly>=5.6.0,<6", + "policyengine_core>=3.23.6", + "pytest", + "requests>=2.27.1,<3", + "sortedcontainers<3", + "tqdm>=4.46.0,<5", + "wheel<1", +] + +[project.urls] +Homepage = "https://github.com/policyengine/policyengine-canada" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[tool.hatch.build.targets.wheel] +packages = ["policyengine_canada"] + +[tool.towncrier] +package = "policyengine_canada" +directory = "changelog.d" +filename = "CHANGELOG.md" +title_format = "## [{version}] - {project_date}" +issue_format = "" +underlines = ["", "", ""] + +[[tool.towncrier.type]] +directory = "breaking" +name = "Breaking changes" +showcontent = true + +[[tool.towncrier.type]] +directory = "added" +name = "Added" +showcontent = true + +[[tool.towncrier.type]] +directory = "changed" +name = "Changed" +showcontent = true + +[[tool.towncrier.type]] +directory = "fixed" +name = "Fixed" +showcontent = true + +[[tool.towncrier.type]] +directory = "removed" +name = "Removed" +showcontent = true diff --git a/setup.py b/setup.py deleted file mode 100644 index de32636ce..000000000 --- a/setup.py +++ /dev/null @@ -1,70 +0,0 @@ -from pathlib import Path - -from setuptools import find_packages, setup - -# Read the contents of our README file for PyPi -this_directory = Path(__file__).parent -long_description = (this_directory / "README.md").read_text() - -# Core requirements with refined version constraints -general_requirements = [ - "policyengine_core>=3.23.6", - "black[jupyter]", - "coverage<7", - "dpath<3", - "h5py>=3,<4", - "linecheck<1", - "microdf_python>=1.2.1", - "nptyping<2", - "numexpr<3", - "pandas>=2.2.0", - "plotly>=5.6.0,<6", - "pytest", - "requests>=2.27.1,<3", - "sortedcontainers<3", - "tqdm>=4.46.0,<5", - "wheel<1", - "yaml-changelog==0.3.0", -] - -dev_requirements = [ - "furo", - "jupyter-book", - "markupsafe", - "pydata-sphinx-theme", - "sphinx", - "sphinx-argparse", - "sphinx-math-dollar", -] - -setup( - name="policyengine-canada", - version="0.96.6", - author="PolicyEngine", - author_email="hello@policyengine.org", - classifiers=[ - "Development Status :: 5 - Production/Stable", - "License :: OSI Approved :: GNU Affero General Public License v3", - "Operating System :: POSIX", - "Programming Language :: Python", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Topic :: Scientific/Engineering :: Information Analysis", - ], - description="Microsimulation model for Canada's tax-benefit system.", - keywords="tax benefit microsimulation framework", - license="https://www.fsf.org/licensing/licenses/agpl-3.0.html", - license_files=("LICENSE",), - url="https://github.com/policyengine/policyengine-canada", - long_description=long_description, - long_description_content_type="text/markdown", - extras_require={ - "dev": dev_requirements, - }, - python_requires=">=3.10", - install_requires=general_requirements, - packages=find_packages(), - include_package_data=True, -) From 7998b9703fc112f88cbbf36d48f68f7762f921ed Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 23 Feb 2026 13:00:03 -0500 Subject: [PATCH 2/4] Format bump_version.py with black Co-Authored-By: Claude Opus 4.6 --- .github/bump_version.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/bump_version.py b/.github/bump_version.py index 19aa79079..bb0fd6dd3 100644 --- a/.github/bump_version.py +++ b/.github/bump_version.py @@ -7,9 +7,7 @@ def get_current_version(pyproject_path: Path) -> str: text = pyproject_path.read_text() - match = re.search( - r'^version\s*=\s*"(\d+\.\d+\.\d+)"', text, re.MULTILINE - ) + match = re.search(r'^version\s*=\s*"(\d+\.\d+\.\d+)"', text, re.MULTILINE) if not match: print( "Could not find version in pyproject.toml", From b914cabc199db7ca76a0109cc7adb87769e96577 Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Mon, 23 Feb 2026 13:44:43 -0500 Subject: [PATCH 3/4] Fix Makefile and dev dependencies after setup.py removal Co-Authored-By: Claude Opus 4.6 --- Makefile | 2 +- pyproject.toml | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 103191f8d..8c1edd36a 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ test: policyengine-core test -c policyengine_canada policyengine_canada/tests build: - python setup.py sdist bdist_wheel + python -m build changelog: python .github/bump_version.py diff --git a/pyproject.toml b/pyproject.toml index 7a343e12f..54ac2bf5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,19 @@ dependencies = [ "wheel<1", ] +[project.optional-dependencies] +dev = [ + "build", + "furo", + "jupyter-book", + "markupsafe", + "pydata-sphinx-theme", + "sphinx", + "sphinx-argparse", + "sphinx-math-dollar", + "towncrier>=24.8.0", +] + [project.urls] Homepage = "https://github.com/policyengine/policyengine-canada" From e1809ae10730240f0a894f2ef86fccd8f1e6e6dd Mon Sep 17 00:00:00 2001 From: Max Ghenis Date: Tue, 24 Feb 2026 05:41:44 -0500 Subject: [PATCH 4/4] Delete old changelog files --- changelog.yaml | 648 ------------------------------------------------- 1 file changed, 648 deletions(-) delete mode 100644 changelog.yaml diff --git a/changelog.yaml b/changelog.yaml deleted file mode 100644 index 44f46e7a4..000000000 --- a/changelog.yaml +++ /dev/null @@ -1,648 +0,0 @@ -- changes: - added: - - Repo created - date: 2022-10-18 17:02:00 -- bump: minor - changes: - added: - - Initial country package contents. - date: 2022-10-18 16:09:03 - version: 0.0.0 -- bump: patch - changes: - fixed: - - Versioning check action. - date: 2022-10-18 17:54:02 -- bump: minor - changes: - added: - - Total individual pre tax income variable. - date: 2022-11-01 01:29:46 -- bump: minor - changes: - added: - - Canada income tax structure. - date: 2022-11-05 11:43:20 -- bump: minor - changes: - added: - - Canada training credit. - date: 2022-11-05 20:58:56 -- bump: minor - changes: - added: - - Canada child benefit. - date: 2022-11-18 12:12:53 -- bump: minor - changes: - added: - - Canada climate action incentive. - date: 2022-12-06 07:38:07 -- bump: minor - changes: - added: - - Canada school supply credit. - date: 2022-12-08 06:58:07 -- bump: minor - changes: - added: - - Canada disability child benefit. - date: 2022-12-12 18:52:25 -- bump: minor - changes: - added: - - Canada dental benefit. - date: 2022-12-12 19:19:23 -- bump: minor - changes: - added: - - Canada age amount credit. - date: 2022-12-13 06:15:23 -- bump: minor - changes: - added: - - Disability tax credit (dtc). - date: 2022-12-15 16:34:10 -- bump: minor - changes: - added: - - Canada workers benefit - date: 2022-12-22 00:39:48 -- bump: patch - changes: - added: - - Linecheck to make format. - date: 2022-12-22 01:06:05 -- bump: minor - changes: - added: - - Household net income - date: 2022-12-23 18:38:20 -- bump: minor - changes: - added: - - Fixed bugs on cwb & pension programs. Created net income Notebook - date: 2022-12-26 21:25:42 -- bump: patch - changes: - fixed: - - Pin yaml-changelog to avoid syntax that outputs the result as a file. - date: 2022-12-27 04:19:58 -- bump: minor - changes: - added: - - Ontario tax rates. - date: 2022-12-29 19:33:52 -- bump: minor - changes: - added: - - Ontario child benefit. - date: 2022-12-30 20:07:58 -- bump: patch - changes: - added: - - Metadata to get PolicyEngine-Canada working. - date: 2023-01-03 20:11:50 -- bump: patch - changes: - fixed: - - PolicyEngine Core dependency relaxed to minor versions. - date: 2023-01-03 20:26:57 -- bump: patch - changes: - fixed: - - Missing package in Pip installs. - date: 2023-01-03 21:22:07 -- bump: minor - changes: - added: - - Ontario sales tax credit - date: 2023-01-03 21:48:21 -- bump: patch - changes: - changed: - - Relaxed Numpy version requirement slightly. - date: 2023-01-03 21:48:48 -- bump: patch - changes: - fixed: - - Pip installs include folders. - date: 2023-01-03 22:01:11 -- bump: patch - changes: - changed: - - Core version widened. - date: 2023-01-03 23:40:13 -- bump: minor - changes: - added: - - Canada provincial income tax structure. - date: 2023-01-04 22:09:26 -- bump: minor - changes: - added: - - Ontario senior homeowners property tax grant. - date: 2023-01-05 19:31:40 -- bump: minor - changes: - added: - - Added OSTC to list of credits. - date: 2023-01-05 20:16:53 -- bump: minor - changes: - added: - - Add ontario province definition to OCB. - date: 2023-01-05 20:33:31 -- bump: patch - changes: - changed: - - Use `adds` and `subtracts` everywhere. - date: 2023-01-10 14:25:18 -- bump: patch - changes: - fixed: - - Fixed age variable - date: 2023-01-13 23:56:13 -- bump: minor - changes: - added: - - Ontario energy and property tax credit (OEPTC). - date: 2023-01-16 20:15:46 -- bump: patch - changes: - added: - - API auto-deployment - date: 2023-01-20 17:15:53 -- bump: minor - changes: - added: - - Rename is_senior_for_oeptc to oeptc_senior_status. - date: 2023-01-20 17:22:26 -- bump: minor - changes: - added: - - Ontario child care fee subsidy. - date: 2023-01-25 04:38:58 -- bump: minor - changes: - added: - - Oshptg adjusted oeptc. - date: 2023-01-25 04:39:47 -- bump: minor - changes: - added: - - Ontario tax credits and benefits to net income tree . - date: 2023-01-26 05:20:56 -- bump: minor - changes: - added: - - GST credit. - date: 2023-01-26 19:18:43 -- bump: patch - changes: - changed: - - Made province yearly to work in the app. - date: 2023-01-28 01:31:28 -- bump: minor - changes: - added: - - Ontario trillium benefit. - date: 2023-01-29 15:46:25 -- bump: minor - changes: - added: - - British Columbia family benefit. - date: 2023-01-31 00:30:36 -- bump: minor - changes: - added: - - Northern Ontario Energy Credit (NOEC). - date: 2023-01-31 18:07:39 -- bump: minor - changes: - added: - - OAS params, vars, and tests - date: 2023-02-02 14:47:47 -- bump: minor - changes: - added: - - Canada net income tree audit. - date: 2023-02-04 21:41:29 -- bump: minor - changes: - added: - - British Columbia climate action tax credit. - date: 2023-02-08 02:29:01 -- bump: minor - changes: - added: - - Ontario Low-Income Individuals and Families tax credit. - date: 2023-02-10 02:12:22 -- bump: minor - changes: - added: - - Cap tax before non-refundable credits at zero. - date: 2023-02-10 02:31:23 -- bump: minor - changes: - added: - - Income tax after refundable credits variable. - date: 2023-02-10 04:37:34 -- bump: minor - changes: - added: - - Ontario Low-income individuals and families tax credit. - date: 2023-02-12 01:47:46 -- bump: minor - changes: - added: - - British columbia tax reduction credit. - date: 2023-02-12 01:48:40 -- bump: patch - changes: - added: - - Expand integration test to go up to household_net_income. - date: 2023-02-14 02:01:10 -- bump: minor - changes: - added: - - defined_for = Province. adjusted. - date: 2023-02-21 18:04:57 -- bump: minor - changes: - added: - - Basic personal amount. - date: 2023-02-23 18:10:43 -- bump: minor - changes: - added: - - Historical and current tax schedule. - date: 2023-02-28 01:30:52 -- bump: minor - changes: - added: - - British Columbia age credit. - date: 2023-02-28 05:08:04 -- bump: patch - changes: - added: - - Province name to the basic input set. - date: 2023-03-14 22:17:09 -- bump: patch - changes: - added: - - README files for parameter folder display text. - changed: - - Revised variable labels for consistency. - date: 2023-03-20 13:59:40 -- bump: patch - changes: - changed: - - Bumped Core to v2. - date: 2023-03-24 22:49:05 -- bump: minor - changes: - added: - - modelled_policies.yaml with content for modal dialog. - date: 2023-03-28 03:30:52 -- bump: patch - changes: - changed: - - Pin pydata-sphinx-theme==0.13.1 to fix a jupyterbook build issue. - date: 2023-03-29 23:52:19 -- bump: minor - changes: - added: - - Yukon child benefit. - date: 2023-03-30 01:24:26 -- bump: minor - changes: - added: - - Yukon Children's arts amount. - date: 2023-04-06 02:49:58 -- bump: minor - changes: - added: - - Quebec income tax rate. - date: 2023-04-17 23:12:32 -- bump: minor - changes: - added: - - New Brunswick Child Tax Benefit. - date: 2023-04-19 03:05:41 -- bump: patch - changes: - changed: - - Set CWB variable units to CAD. - - Rename dependent to dependant everywhere. - date: 2023-04-23 17:24:10 -- bump: minor - changes: - added: - - Active Families Benefit. - date: 2023-04-26 20:30:04 -- bump: minor - changes: - added: - - Quebec cost of living tax credit. - date: 2023-04-28 02:39:42 -- bump: minor - changes: - added: - - Nunavut cost of living credit. - date: 2023-04-28 03:39:27 -- bump: minor - changes: - added: - - Alberta Family and Child benefit. - date: 2023-04-28 19:12:24 -- bump: minor - changes: - added: - - Nova Scotia low income tax reduction. - date: 2023-04-28 19:14:24 -- bump: minor - changes: - added: - - Nova Scotia affordable living tax credit. - date: 2023-05-03 04:19:50 -- bump: minor - changes: - added: - - Nova Scotia Poverty Reduction Credit. - date: 2023-05-03 04:22:00 -- bump: minor - changes: - added: - - New Brunswick low income tax credit. - date: 2023-05-08 04:52:03 -- bump: minor - changes: - changed: - - Add Nunavut Child Benefit. - date: 2023-05-08 04:57:00 -- bump: minor - changes: - added: - - Nova Scotia Child Benefit. - date: 2023-05-08 13:38:57 -- bump: minor - changes: - added: - - Saskatchewan low income tax credit. - date: 2023-05-10 20:12:43 -- bump: minor - changes: - added: - - Newfoundland Physical Activity Tax Credit. - date: 2023-05-18 02:03:51 -- bump: minor - changes: - added: - - Yukon Childrens Fitness Tax Credit. - date: 2023-05-19 20:22:40 -- bump: minor - changes: - added: - - Yukon First Nation Tax. - date: 2023-05-23 05:05:59 -- bump: minor - changes: - added: - - Alberta spouse and common-law partner amount. - date: 2023-05-25 22:46:06 -- bump: minor - changes: - added: - - Python 3.10 support. - date: 2023-05-27 15:38:10 -- bump: minor - changes: - added: - - Quebec childcare expenses tax credit. - date: 2023-05-27 23:28:36 -- bump: minor - changes: - added: - - New Brunswick age amount credit. - date: 2023-05-28 20:47:19 -- bump: minor - changes: - added: - - Manitoba Pension amount credit. - date: 2023-05-30 16:16:25 -- bump: minor - changes: - added: - - Quebec Senior Assistance Tax Credit. - date: 2023-06-01 03:05:10 -- bump: minor - changes: - added: - - Alberta pension credit. - date: 2023-06-29 16:50:09 -- bump: minor - changes: - added: - - Nova Scotia Age tax credit. - date: 2023-07-03 02:09:04 -- bump: minor - changes: - added: - - Yukon Government carbon price rebate - Individuals (YGCPRI) - date: 2023-07-19 18:54:15 -- bump: minor - changes: - added: - - Nova Scotia Income Assistance Age Eligibility. - date: 2023-08-07 00:48:20 -- bump: minor - changes: - added: - - Manitoba basic personal amount. - date: 2023-08-08 01:39:11 -- bump: minor - changes: - added: - - Canada employment amount. - date: 2023-08-09 23:04:22 -- bump: minor - changes: - added: - - Quebec family allowance tax credit. - date: 2023-08-10 01:10:48 -- bump: minor - changes: - added: - - Quebec basic personal amount. - date: 2023-08-10 01:36:53 -- bump: minor - changes: - added: - - Alberta age credit. - date: 2023-08-11 04:31:59 -- bump: minor - changes: - added: - - Saskatchewan disability amount. - date: 2023-08-18 03:48:59 -- bump: minor - changes: - added: - - Saskatchewan Senior Supplementary amount Tax Credit. - date: 2023-08-18 03:53:19 -- bump: minor - changes: - added: - - Saskatchewan age amount tax credit. - date: 2023-08-18 04:11:47 -- bump: minor - changes: - added: - - Yukon Employment Amount. - date: 2023-08-20 20:37:37 -- bump: patch - changes: - fixed: - - Manitoba BPA parameter folder structure. - date: 2023-08-21 20:22:09 -- bump: patch - changes: - fixes: - - Canada Basic Personal Amount Supplement label. - date: 2023-08-21 20:36:42 -- bump: minor - changes: - added: - - Northwest Territories Age Credit. - date: 2023-08-24 21:35:50 -- bump: minor - changes: - added: - - Manitoba age amount credit. - date: 2023-08-25 15:15:09 -- bump: minor - changes: - added: - - Nunavut age amount credit. - date: 2023-09-04 23:15:38 -- bump: minor - changes: - added: - - Northwest Territories basic personal amount. - date: 2023-09-23 22:06:50 -- bump: minor - changes: - added: - - Nova Scotia income assistance asset eligibility. - date: 2023-09-28 18:01:54 -- bump: patch - changes: - fixed: - - Disability tax credit parameter readme file. - date: 2023-10-03 23:05:56 -- bump: minor - changes: - added: - - Quebec work premium tax credit. - date: 2023-10-04 23:17:14 -- bump: patch - changes: - changed: - - Redefine `is_dependant`. - date: 2023-10-06 11:22:22 -- bump: patch - changes: - removed: - - numpy pin. - date: 2023-10-08 04:38:29 -- bump: minor - changes: - added: - - New Brunswick pension benefit. - date: 2023-11-09 20:50:26 -- bump: patch - changes: - changed: - - Unpin black. - date: 2024-01-26 14:53:06 -- bump: minor - changes: - added: - - Nova Scotia pension income amount. - date: 2024-02-02 06:53:53 -- bump: patch - changes: - added: - - Labels to all variables, to pass latest core requirements. - date: 2024-02-18 18:20:19 -- bump: minor - changes: - added: - - Alberta disability credit. - date: 2024-02-24 05:08:23 -- bump: minor - changes: - added: - - British Columbia basic personal amount. - date: 2024-02-29 02:49:05 -- bump: minor - changes: - added: - - British Columbia pension income amount. - date: 2024-02-29 14:47:21 -- bump: minor - changes: - added: - - Nova Scotia disability amount. - date: 2024-03-01 02:01:53 -- bump: minor - changes: - added: - - British Columbia disability credit. - date: 2024-03-01 16:19:20 -- bump: minor - changes: - added: - - Manitoba child benefit. - date: 2024-03-15 03:16:05 -- bump: minor - changes: - added: - - Alberta basic personal amount. - date: 2024-04-22 23:28:02 -- bump: minor - changes: - added: - - Yukon basic personal amount. - date: 2024-08-21 14:25:09 -- bump: patch - changes: - changed: - - Update policyengine-core. - date: 2024-09-03 23:14:20 -- bump: patch - changes: - fixed: - - Core version requirement update. - date: 2024-12-03 22:40:28 -- bump: patch - changes: - fixed: - - Include python-13 support and update microdf to latest versions. - date: 2025-07-24 12:38:45 -- bump: patch - changes: - fixed: - - CI build failure due to missing setuptools dependency in GitHub Actions workflow. - date: 2025-11-12 14:08:46 -- bump: patch - changes: - changed: - - Bump policyengine-core to 3.23.0 (adds strict enum validation). - date: 2025-12-03 23:06:49 -- bump: patch - changes: - changed: - - Bumped policyengine-core to 3.23.6 and microdf to 1.2.1 for pandas 3.0 compatibility - date: 2026-01-25 16:04:56