diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 1539d2d158..76efefb843 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -21,7 +21,10 @@ Your PR description goes here.
- [ ] New country/market holidays support (thank you!)
- [ ] Supported country/market holidays update (calendar discrepancy fix, localization)
-- [ ] Existing code/documentation/test/process quality improvement (best practice, cleanup, refactoring, optimization)
+- [ ] Existing code quality improvement (best practice, cleanup, refactoring, optimization)
+- [ ] Documentation update
+- [ ] Test suite update
+- [ ] Development process update (CI/CD, project configuration, internal tooling)
- [ ] Dependency update (version deprecation/pin/upgrade)
- [ ] Bugfix (non-breaking change which fixes an issue)
- [ ] Breaking change (a code change causing existing functionality to break)
diff --git a/.github/workflows/check-country-holiday-updates.yml b/.github/workflows/check-country-holiday-updates.yml
index 848c13ee2b..b8d8cdee79 100644
--- a/.github/workflows/check-country-holiday-updates.yml
+++ b/.github/workflows/check-country-holiday-updates.yml
@@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout holidays repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0 # Get full commit history to accurately determine when each file was last modified
repository: vacanza/holidays
diff --git a/.github/workflows/check-financial-holiday-updates.yml b/.github/workflows/check-financial-holiday-updates.yml
index 999a273f44..0a4e975d4f 100644
--- a/.github/workflows/check-financial-holiday-updates.yml
+++ b/.github/workflows/check-financial-holiday-updates.yml
@@ -30,7 +30,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout holidays repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
fetch-depth: 0 # Get full commit history to accurately determine when each file was last modified
repository: vacanza/holidays
diff --git a/.github/workflows/ci-cd.yml b/.github/workflows/ci-cd.yml
index 9fa121ec53..26c37a5053 100644
--- a/.github/workflows/ci-cd.yml
+++ b/.github/workflows/ci-cd.yml
@@ -18,7 +18,7 @@ on:
env:
DEFAULT_PYTHON_VERSION: '3.14'
- DEFAULT_UV_VERSION: '0.11.8'
+ DEFAULT_UV_VERSION: '0.11.24'
FORCE_COLOR: 1
concurrency:
@@ -31,7 +31,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
@@ -43,7 +43,7 @@ jobs:
run: uv python install "$UV_PYTHON"
- name: Cache pre-commit environments
- uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
key: pre-commit-${{ runner.os }}-${{ hashFiles('.pre-commit-config.yaml') }}
path: ~/.cache/pre-commit
@@ -60,7 +60,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Initialize CodeQL
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
@@ -91,7 +91,7 @@ jobs:
- '3.14'
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
@@ -119,7 +119,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
@@ -169,7 +169,7 @@ jobs:
- windows-latest
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
@@ -204,7 +204,7 @@ jobs:
needs: test
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
@@ -267,7 +267,7 @@ jobs:
done
- name: Sign the files using Sigstore
- uses: sigstore/gh-action-sigstore-python@04cffa1d795717b140764e8b640de88853c92acc # v3.3.0
+ uses: sigstore/gh-action-sigstore-python@5b79a39c381910c090341a2c9b0bf022c8b387e1 # v3.4.0
with:
inputs: |
./dist/*.tar.gz
diff --git a/.github/workflows/deploy-gh-pages.yml b/.github/workflows/deploy-gh-pages.yml
index e944c63005..9c56a0f225 100644
--- a/.github/workflows/deploy-gh-pages.yml
+++ b/.github/workflows/deploy-gh-pages.yml
@@ -8,7 +8,7 @@ on:
env:
DEFAULT_PYTHON_VERSION: '3.14'
- DEFAULT_UV_VERSION: '0.11.8'
+ DEFAULT_UV_VERSION: '0.11.24'
FORCE_COLOR: 1
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true
@@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
diff --git a/.github/workflows/update-snapshots.yml b/.github/workflows/update-snapshots.yml
index 7ac86ccbc2..d1d7204c7b 100644
--- a/.github/workflows/update-snapshots.yml
+++ b/.github/workflows/update-snapshots.yml
@@ -8,7 +8,7 @@ on:
env:
DEFAULT_PYTHON_VERSION: '3.14'
- DEFAULT_UV_VERSION: '0.11.8'
+ DEFAULT_UV_VERSION: '0.11.24'
jobs:
update-snapshots:
@@ -20,7 +20,7 @@ jobs:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
+ uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- name: Install uv
uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 03e05b9db7..2507de413c 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,7 +26,7 @@ repos:
- --py310-plus
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: 22f0422809455ec89ffdcf5a00170ba816e42ddb # v0.15.16
+ rev: 745be0411e3c150e246d527e531e5a221b8c3462 # v0.15.19
hooks:
- id: ruff-check
- id: ruff-format
@@ -64,7 +64,7 @@ repos:
- types-python-dateutil==2.9.0.20260518
- repo: https://github.com/tox-dev/pyproject-fmt
- rev: ca620e0df5ae9a02b7b81a6e4c954894f043ce42 # v2.24.1
+ rev: f073523dfd27b01ec7997cc970a2a7b36c303460 # v2.25.0
hooks:
- id: pyproject-fmt
diff --git a/CHANGES.md b/CHANGES.md
index 543534c7d6..da28c7bb7e 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,18 @@
+## Version 0.101
+
+Released July 20, 2026
+
+- Add SIX Swiss Exchange (SIX) holidays (#3692 by @pareshjoshij)
+- Add Toronto Stock Exchange (TSX) holidays (#3680 by @pareshjoshij, @KJhellico)
+- Update Canada holidays: add observed rule for National Day for Truth and Reconciliation in BC (#3695 by @uttam12331)
+- Update Canada holidays: update Ontario (ON) holidays (#3689 by @KJhellico)
+- Update Kazakhstan holidays: 2026 constitutional law changes (#3690 by @stetat)
+- Update Monaco holidays (#3678 by @KJhellico)
+- Update PR template (#3707 by @KJhellico)
+- Update `HolidayBase::get_closest_holiday` method (#3651 by @gaoflow, @KJhellico)
+- Update iCalendar generation tool: add output filename template support (#3679 by @KJhellico)
+- Update l10n: synchronize Hindi and Gujarati translations (#3681 by @pareshjoshij)
+
## Version 0.100
Released July 6, 2026
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 64a823a30a..8aff346bd6 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -43,6 +43,7 @@ Colin Watson
Dan Gentry
Daniel Musketa
Daniël Niemeijer
+Darkhan Azhibek
David Hedlund
David Hotham
Devaraj K
diff --git a/README.md b/README.md
index 07f10e6b20..650a8f8998 100644
--- a/README.md
+++ b/README.md
@@ -1181,7 +1181,7 @@ any) in brackets, available languages and additional holiday categories. All cou
Monaco |
MC |
|
-en_US, fr, uk |
+en_US, fr_MC, uk |
|
@@ -2037,6 +2037,20 @@ code when available. The following financial markets are available:
| en_US, th, zh_CN, zh_TW |
|
+
+| SIX Swiss Exchange |
+XSWX |
+SIX Swiss Exchange market holidays |
+de, en_US, fr, it, th, uk |
+ |
+
+
+| Toronto Stock Exchange |
+XTSE |
+Toronto Stock Exchange (TSX) market holidays |
+ar, en_CA, en_US, fr, th |
+HALF_DAY |
+
diff --git a/SECURITY.md b/SECURITY.md
index 8237d0f6c2..dc754bbce4 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -4,8 +4,8 @@
| Version | Supported |
|---------| ------------------ |
-| 0.100 | :white_check_mark: |
-| < 0.100 | :x: |
+| 0.101 | :white_check_mark: |
+| < 0.101 | :x: |
## Reporting a Vulnerability
diff --git a/VERSION b/VERSION
index 619142257a..2f3d7fa995 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.100
+0.101
diff --git a/docs/examples.md b/docs/examples.md
index 5a40e60ac7..027e425ceb 100644
--- a/docs/examples.md
+++ b/docs/examples.md
@@ -599,7 +599,7 @@ the [icalendar](https://github.com/collective/icalendar) package.
For user convenience, the library includes `holidays-ics` tool for generating iCalendar (.ics)
files from holiday calendars provided by the library. It supports country, subdivision,
and financial market calendars, holiday category filtering, localized holiday names,
-year selection, and custom output file names.
+year selection, custom output paths, and output filename templates.
The tool can be run either as an installed command:
@@ -625,10 +625,29 @@ a Python installation or any manual setup of `holidays` package.
For installation instructions, see `uv` [documentation](https://docs.astral.sh/uv/getting-started/installation/).
By default, the generated calendar contains holidays for the current year and is written
-to a file whose name is derived from the selected calendar and year range.
+to a file whose name is derived from the selected options and year range.
The `--years` option accepts a single year (2025), a year range (2025-2027), or a
relative range (+10), which selects the current year through the current year plus 10.
+### Output filename templates
+
+Instead of specifying an explicit output path with `--output`, you can use
+`--output-template` to generate output filenames dynamically.
+
+Supported placeholders:
+
+| Placeholder | Description |
+|----------------|------------------------------------------------------------------|
+| `{code}` | Country or financial market code |
+| `{subdiv}` | Subdivision code, or `ALL` if not specified |
+| `{language}` | Requested language, or `DEFAULT` if not specified |
+| `{categories}` | Holiday categories joined with `_`, or `PUBLIC` if not specified |
+| `{start_year}` | First year |
+| `{end_year}` | Last year |
+| `{today}` | Current date in `YYYYMMDD` format |
+
+To include literal `{` or `}` characters, write them as `{{` and `}}`.
+
### Examples
Calendar for the current year:
@@ -694,13 +713,13 @@ holidays-ics XNYS
Spanning the next 10 years, unofficial holidays, saved to a custom file:
```shell
-holidays-ics US --years +10 --categories unofficial --output US_YYYY_YYYY_unofficial.ics
+holidays-ics US --years +10 --categories unofficial --output-template "HOLIDAYS_{code}_{start_year}_{end_year}_{categories}.ics"
```
-Calendar for Switzerland, specific to the Canton of Zurich, localized in German, and saved to a custom file.
+Calendar for Switzerland, specific to the Canton of Zurich, localized in German, and saved to a custom file:
```shell
-holidays-ics CH --subdiv ZH --language de --output CH_ZH_de.ics
+holidays-ics CH --subdiv ZH --language de --output-template "{code}_{subdiv}_{language}_{today}.ics"
```
The tool can also display the supported subdivisions, categories, and languages for a selected
diff --git a/holidays/countries/canada.py b/holidays/countries/canada.py
index 6f11c824cf..1116808938 100644
--- a/holidays/countries/canada.py
+++ b/holidays/countries/canada.py
@@ -22,7 +22,6 @@
SAT_SUN_TO_NEXT_MON,
SAT_SUN_TO_NEXT_MON_TUE,
SUN_TO_NEXT_MON,
- SUN_TO_NEXT_TUE,
)
@@ -34,18 +33,20 @@ class Canada(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
*
*
*
- *
- *
- *
+ * Manitoba:
+ *
+ * [MB National Day for Truth and Reconciliation](https://web.archive.org/web/20240714223654/https://web2.gov.mb.ca/bills/43-1/b004e.php)
+ *
+ * Ontario:
+ * [Employment Standards Act, 2000](https://www.ontario.ca/laws/statute/00e41)
+ * [Proclamation of Oct 12, 2007](https://www.ontario.ca/document/ontario-gazette-volume-140-issue-43-october-27-2007)
+ * [Guide to the Employment Standards Act](https://web.archive.org/web/20250405170509/https://www.ontario.ca/document/your-guide-employment-standards-act-0/public-holidays)
*
- *
- *
*
*
*
*
* [NT National Aboriginal Day](https://web.archive.org/web/20160623071755/http://www.daair.gov.nt.ca/_live/pages/wpPages/National_Aboriginal_Day.aspx)
- * [MB National Day for Truth and Reconciliation](https://web.archive.org/web/20240714223654/https://web2.gov.mb.ca/bills/43-1/b004e.php)
"""
country = "CA"
@@ -258,8 +259,10 @@ def _populate_subdiv_bc_public_holidays(self):
self._add_holiday_1st_mon_of_aug(tr("British Columbia Day"))
if self._year >= 2023:
- # National Day for Truth and Reconciliation.
- self._add_holiday_sep_30(tr("National Day for Truth and Reconciliation"))
+ self._add_observed(
+ # National Day for Truth and Reconciliation.
+ self._add_holiday_sep_30(tr("National Day for Truth and Reconciliation"))
+ )
self._add_thanksgiving_day()
@@ -441,6 +444,7 @@ def _populate_subdiv_nu_optional_holidays(self):
self._add_holiday_jul_9(name)
def _populate_subdiv_on_public_holidays(self):
+ # Proclamation of Oct 12, 2007.
if self._year >= 2008:
# Family Day.
self._add_holiday_3rd_mon_of_feb(tr("Family Day"))
@@ -449,14 +453,24 @@ def _populate_subdiv_on_public_holidays(self):
self._add_thanksgiving_day()
- # Boxing Day.
- self._add_observed(self._add_christmas_day_two(tr("Boxing Day")), rule=SUN_TO_NEXT_TUE)
+ self._add_observed(
+ # Boxing Day.
+ self._add_christmas_day_two(tr("Boxing Day")),
+ rule=SAT_SUN_TO_NEXT_MON_TUE,
+ )
def _populate_subdiv_on_optional_holidays(self):
+ # Easter Monday.
+ self._add_easter_monday(tr("Easter Monday"))
+
if self._year >= 1900:
# Civic Holiday.
self._add_holiday_1st_mon_of_aug(tr("Civic Holiday"))
+ if self._year >= 1931:
+ # Remembrance Day.
+ self._add_observed(self._add_remembrance_day(tr("Remembrance Day")))
+
def _populate_subdiv_pe_public_holidays(self):
if self._year >= 2009:
# Islander Day.
diff --git a/holidays/countries/jersey.py b/holidays/countries/jersey.py
index 10800f04cd..cd41f23f1f 100644
--- a/holidays/countries/jersey.py
+++ b/holidays/countries/jersey.py
@@ -18,8 +18,8 @@
ObservedHolidayBase,
SAT_SUN_TO_NEXT_WORKDAY,
SUN_TO_NEXT_WORKDAY,
- SAT_TO_NONE,
SUN_TO_NONE,
+ SAT_SUN_TO_NONE,
)
@@ -145,7 +145,7 @@ def _populate_public_holidays(self) -> None:
self._add_observed(
# Liberation Day
self._add_holiday_may_9("Liberation Day"),
- rule=SAT_TO_NONE + SUN_TO_NONE if self._year <= 2010 else SUN_TO_NONE,
+ rule=SAT_SUN_TO_NONE if self._year <= 2010 else SUN_TO_NONE,
)
diff --git a/holidays/countries/kazakhstan.py b/holidays/countries/kazakhstan.py
index 594c84cc95..543f22964f 100644
--- a/holidays/countries/kazakhstan.py
+++ b/holidays/countries/kazakhstan.py
@@ -32,7 +32,7 @@ class Kazakhstan(
References:
*
*
- *
+ *
*
Islamic holidays:
@@ -106,14 +106,23 @@ def _populate_public_holidays(self):
dts_observed.add(self._add_holiday_jul_6(tr("Астана күні")))
if self._year >= 1996:
- dts_observed.add(
- # Constitution Day.
- self._add_holiday_aug_30(tr("Қазақстан Республикасының Конституциясы күні"))
- )
+ # Constitution Day.
+ name = tr("Қазақстан Республикасының Конституциясы күні")
+ if self._year >= 2027:
+ dts_observed.add(self._add_holiday_mar_15(name))
+ elif self._year <= 2025:
+ dts_observed.add(self._add_holiday_aug_30(name))
if 1994 <= self._year <= 2008 or self._year >= 2022:
- # Republic Day.
- dts_observed.add(self._add_holiday_oct_25(tr("Республика күні")))
+ dts_observed.add(
+ self._add_holiday_oct_25(
+ # Republic Day.
+ tr("Қазақстан Республикасы күні")
+ if self._year >= 2026
+ # Republic Day.
+ else tr("Республика күні")
+ )
+ )
if 2012 <= self._year <= 2021:
dts_observed.add(
diff --git a/holidays/countries/macau.py b/holidays/countries/macau.py
index 19c87dc01e..d782deec60 100644
--- a/holidays/countries/macau.py
+++ b/holidays/countries/macau.py
@@ -24,8 +24,7 @@
ObservedHolidayBase,
SUN_TO_NEXT_WORKDAY,
SAT_SUN_TO_NEXT_WORKDAY,
- SAT_TO_NONE,
- SUN_TO_NONE,
+ SAT_SUN_TO_NONE,
)
@@ -358,7 +357,7 @@ def _populate_government_holidays(self):
self._move_holiday(
# New Year's Eve.
self._add_new_years_eve(self._format_holiday_name(begin_time_label, tr("除夕"))),
- rule=SAT_TO_NONE + SUN_TO_NONE,
+ rule=SAT_SUN_TO_NONE,
)
if self.observed:
diff --git a/holidays/countries/monaco.py b/holidays/countries/monaco.py
index a86977b87f..8a059584f7 100644
--- a/holidays/countries/monaco.py
+++ b/holidays/countries/monaco.py
@@ -21,15 +21,33 @@ class Monaco(ObservedHolidayBase, ChristianHolidays, InternationalHolidays, Stat
"""Monaco holidays.
References:
+ * [Law No. 798 of Feb 18, 1966](https://web.archive.org/web/20260418044949/https://legimonaco.mc/tnc/loi/1966/02-18-798/)
+ * [Circular No. 2019-2](https://web.archive.org/web/20260415115315/https://journaldemonaco.gouv.mc/Journaux/2019/Journal-8427/Circulaire-n-2019-2-Modification-de-la-circulaire-n-79-93-du-13-novembre-1979-parue-au-Journal-de-Monaco-du-23-novembre-1979-concernant-l-application-de-la-loi-n-1.020-du-5-juillet-1979-modifiant-la-loi-n-800-du-18-fevrier-1966-regissant-la-remunera)
*
- *
+ *
+
+ Checked with:
+ * [2016](https://web.archive.org/web/20260122031654/https://journaldemonaco.gouv.mc/Journaux/2015/Journal-8248/Communique-n-2015-12-du-15-octobre-2015-relatif-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2016)
+ * [2017](https://web.archive.org/web/20220830085850/https://journaldemonaco.gouv.mc/Journaux/2016/Journal-8300/Circulaire-n-2016-09-du-10-octobre-2016-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2017)
+ * [2018](https://web.archive.org/web/20260417161343/https://journaldemonaco.gouv.mc/Journaux/2017/Journal-8353/Circulaire-n-2017-9-du-18-octobre-2017-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2018)
+ * [2019](https://web.archive.org/web/20260413120235/https://journaldemonaco.gouv.mc/Journaux/2018/Journal-8402/Circulaire-n-2018-12-du-24-septembre-2018-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2019)
+ * [2019 Immaculate Conception](https://web.archive.org/web/20260416082709/https://journaldemonaco.gouv.mc/Journaux/2019/Journal-8427/Circulaire-n-2019-1-Modification-de-la-circulaire-n-2018-12-du-24-septembre-2018-parue-au-Journal-de-Monaco-du-5-octobre-2018-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2019)
+ * [2020](https://web.archive.org/web/20250909040043/https://journaldemonaco.gouv.mc/Journaux/2019/Journal-8459/Circulaire-n-2019-12-du-22-octobre-2019-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2020)
+ * [2021](https://web.archive.org/web/20241004075126/https://journaldemonaco.gouv.mc/Journaux/2020/Journal-8505/Circulaire-n-2020-7-du-14-septembre-2020-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2021)
+ * [2022](https://web.archive.org/web/20260210124905/https://journaldemonaco.gouv.mc/Journaux/2021/Journal-8560/Circulaire-n-2021-8-du-27-septembre-2021-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2022.)
+ * [2023](https://web.archive.org/web/20251208004325/https://journaldemonaco.gouv.mc/Journaux/2022/Journal-8612/Circulaire-n-2022-14-du-5-octobre-2022-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2023)
+ * [2024](https://web.archive.org/web/20250906203823/https://journaldemonaco.gouv.mc/Journaux/2023/Journal-8664/Circulaire-n-2023-14-du-2-octobre-2023-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2024.)
+ * [2025](https://web.archive.org/web/20251006035703/https://journaldemonaco.gouv.mc/Journaux/2024/Journal-8716/Circulaire-n-2024-7-du-1er-octobre-2024-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2025.)
+ * [2026](https://web.archive.org/web/20260217063816/https://journaldemonaco.gouv.mc/Journaux/2025/Journal-8768/Circulaire-n-2025-8-du-1er-octobre-2025-relative-a-la-liste-des-jours-chomes-et-payes-pour-l-annee-2026)
"""
country = "MC"
- default_language = "fr"
+ default_language = "fr_MC"
# %s (observed).
- observed_label = tr("%s (observé)")
- supported_languages = ("en_US", "fr", "uk")
+ observed_label = tr("%s (reporté)")
+ # Law No. 798 of Feb 18, 1966.
+ start_year = 1967
+ supported_languages = ("en_US", "fr_MC", "uk")
def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
@@ -43,39 +61,42 @@ def _populate_public_holidays(self):
self._add_observed(self._add_new_years_day(tr("Le jour de l'An")))
# Saint Devote's Day.
- self._add_holiday_jan_27(tr("La Sainte Dévote"))
+ self._add_holiday_jan_27(tr("Le jour de la Sainte-Dévote"))
# Easter Monday.
- self._add_easter_monday(tr("Le lundi de Pâques"))
+ self._add_easter_monday(tr("Le Lundi de Pâques"))
# Labor Day.
- self._add_observed(self._add_labor_day(tr("Fête de la Travaille")))
+ self._add_observed(self._add_labor_day(tr("Le jour de la Fête du Travail")))
# Ascension Day.
- self._add_ascension_thursday(tr("L'Ascension"))
+ self._add_ascension_thursday(tr("Le jour de l'Ascension"))
# Pentecost Monday.
- self._add_pentecost_monday(tr("Le lundi de Pentecôte"))
+ self._add_pentecost_monday(tr("Le Lundi de Pentecôte"))
# Corpus Christi.
- self._add_corpus_christi_day(tr("La Fête Dieu"))
+ self._add_corpus_christi_day(tr("Le jour de la Fête Dieu"))
# Assumption Day.
- self._add_observed(self._add_assumption_of_mary_day(tr("L'Assomption de Marie")))
+ self._add_observed(self._add_assumption_of_mary_day(tr("Le jour de l'Assomption")))
# All Saints' Day.
- self._add_observed(self._add_all_saints_day(tr("La Toussaint")))
+ self._add_observed(self._add_all_saints_day(tr("Le jour de la Toussaint")))
- # Prince's Day.
- self._add_observed(self._add_holiday_nov_19(tr("La Fête du Prince")))
+ self._add_observed(
+ # Prince's Day.
+ self._add_holiday_nov_19(tr("Le jour de la Fête de S.A.S. le Prince Souverain"))
+ )
# Immaculate Conception.
- dec_8 = self._add_immaculate_conception_day(tr("L'Immaculée Conception"))
+ dt = self._add_immaculate_conception_day(tr("Le jour de l'Immaculée Conception"))
+ # Circular No. 2019-2.
if self._year >= 2019:
- self._move_holiday(dec_8, show_observed_label=False)
+ self._add_observed(dt)
# Christmas Day.
- self._add_observed(self._add_christmas_day(tr("Noël")))
+ self._add_observed(self._add_christmas_day(tr("Le jour de Noël")))
class MC(Monaco):
@@ -87,6 +108,12 @@ class MCO(Monaco):
class MonacoStaticHolidays:
+ """Monaco special holidays.
+
+ References:
+ * [Law No. 1.413 of Dec 19, 2014](https://web.archive.org/web/20251215053349/https://journaldemonaco.gouv.mc/Journaux/2014/Journal-8205/Loi-n-1.413-du-19-decembre-2014-declarant-jour-ferie-legal-le-7-janvier-2015)
+ """
+
special_public_holidays = {
# Public holiday.
2015: (JAN, 7, tr("Jour férié")),
diff --git a/holidays/countries/switzerland.py b/holidays/countries/switzerland.py
index 54a49e067d..9e012019fd 100644
--- a/holidays/countries/switzerland.py
+++ b/holidays/countries/switzerland.py
@@ -20,7 +20,7 @@
MON_ONLY,
TUE_TO_NONE,
SAT_TO_NONE,
- SUN_TO_NONE,
+ SAT_SUN_TO_NONE,
ALL_TO_NEXT_MON,
)
@@ -44,7 +44,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
country = "CH"
default_language = "de"
start_year = 1801
- subdivisions = (
+ subdivisions: tuple[str, ...] = (
# Cantons.
"AG", # Aargau.
"AI", # Appenzell Innerrhoden.
@@ -111,7 +111,7 @@ class Switzerland(ObservedHolidayBase, ChristianHolidays, InternationalHolidays)
# Cities.
"Stadt Zürich": "Stadt Zurich",
}
- supported_categories = (DE_FACTO, HALF_DAY, OPTIONAL, PUBLIC)
+ supported_categories: tuple[str, ...] = (DE_FACTO, HALF_DAY, OPTIONAL, PUBLIC)
supported_languages = ("de", "en_US", "fr", "it", "th", "uk")
def __init__(self, *args, **kwargs):
@@ -811,10 +811,10 @@ def _populate_subdiv_stadt_zurich_optional_holidays(self):
# Bridge Holiday.
name = tr("Brückentag")
- self._add_observed(self._add_holiday_dec_27(name), rule=SAT_TO_NONE + SUN_TO_NONE)
- self._add_observed(self._add_holiday_dec_28(name), rule=SAT_TO_NONE + SUN_TO_NONE)
- self._add_observed(self._add_holiday_dec_29(name), rule=SAT_TO_NONE + SUN_TO_NONE)
- self._add_observed(self._add_holiday_dec_30(name), rule=SAT_TO_NONE + SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_27(name), rule=SAT_SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_28(name), rule=SAT_SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_29(name), rule=SAT_SUN_TO_NONE)
+ self._add_observed(self._add_holiday_dec_30(name), rule=SAT_SUN_TO_NONE)
@property
def _vernal_equinox_date(self) -> tuple[int, int]:
diff --git a/holidays/financial/__init__.py b/holidays/financial/__init__.py
index c6190c6f1d..5c1970934c 100644
--- a/holidays/financial/__init__.py
+++ b/holidays/financial/__init__.py
@@ -28,3 +28,5 @@
from holidays.financial.ny_stock_exchange import NewYorkStockExchange, XNYS, NYSE
from holidays.financial.shanghai_stock_exchange import ShanghaiStockExchange, XSHG, SSE
from holidays.financial.shenzhen_stock_exchange import ShenzhenStockExchange, XSHE, SZSE
+from holidays.financial.six_swiss_exchange import SIXSwissExchange, XSWX, SIX
+from holidays.financial.toronto_stock_exchange import TorontoStockExchange, XTSE, TSX
diff --git a/holidays/financial/bolsa_mexicana_de_valores.py b/holidays/financial/bolsa_mexicana_de_valores.py
index 56002323f2..54c46bd174 100644
--- a/holidays/financial/bolsa_mexicana_de_valores.py
+++ b/holidays/financial/bolsa_mexicana_de_valores.py
@@ -14,7 +14,7 @@
from holidays.calendars.gregorian import SEP
from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
-from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_NONE, SUN_TO_NONE
+from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NONE
class BolsaMexicanaDeValores(
@@ -63,7 +63,7 @@ def __init__(self, *args, **kwargs):
ChristianHolidays.__init__(self)
InternationalHolidays.__init__(self)
StaticHolidays.__init__(self, BolsaMexicanaDeValoresStaticHolidays)
- kwargs.setdefault("observed_rule", SAT_TO_NONE + SUN_TO_NONE)
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NONE)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
diff --git a/holidays/financial/national_stock_exchange_of_india.py b/holidays/financial/national_stock_exchange_of_india.py
index b48f2c0d84..b257a0b985 100644
--- a/holidays/financial/national_stock_exchange_of_india.py
+++ b/holidays/financial/national_stock_exchange_of_india.py
@@ -20,7 +20,7 @@
IslamicHolidays,
StaticHolidays,
)
-from holidays.observed_holiday_base import ObservedHolidayBase, SAT_TO_NONE, SUN_TO_NONE
+from holidays.observed_holiday_base import ObservedHolidayBase, SAT_SUN_TO_NONE
class NationalStockExchangeOfIndia(
@@ -85,7 +85,7 @@ def __init__(self, *args, islamic_show_estimated: bool = True, **kwargs):
calendar_delta_days=+1,
)
StaticHolidays.__init__(self, cls=NationalStockExchangeOfIndiaStaticHolidays)
- kwargs.setdefault("observed_rule", SAT_TO_NONE + SUN_TO_NONE)
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NONE)
super().__init__(*args, **kwargs)
def _populate_public_holidays(self):
diff --git a/holidays/financial/six_swiss_exchange.py b/holidays/financial/six_swiss_exchange.py
new file mode 100644
index 0000000000..71ec5700a6
--- /dev/null
+++ b/holidays/financial/six_swiss_exchange.py
@@ -0,0 +1,67 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from datetime import date
+from gettext import gettext as tr
+
+from holidays.constants import PUBLIC
+from holidays.countries.switzerland import Switzerland
+from holidays.mixins.child_entity import ChildEntity
+
+
+class SIXSwissExchange(ChildEntity, Switzerland):
+ """SIX Swiss Exchange (SIX) holidays.
+
+ References:
+ [2018](https://web.archive.org/web/20260712044834/https://www.six-group.com/dam/download/sites/education/preparatory-documentation/trading-module/trading-guide.pdf)
+ [2019](https://web.archive.org/web/20260712044834/https://www.six-group.com/dam/download/sites/education/preparatory-documentation/trading-module/trading-guide.pdf)
+ [2021](https://web.archive.org/web/20211102133818/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2021.pdf)
+ [2022](https://web.archive.org/web/20220420104843/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2022.pdf)
+ [2023](https://web.archive.org/web/20220626051815/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2023.pdf)
+ [2024](https://web.archive.org/web/20240521040627/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2024.pdf)
+ [2025](https://web.archive.org/web/20250908065713/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2025.pdf)
+ [2026](https://web.archive.org/web/20251225182641/https://www.six-group.com/dam/download/the-swiss-stock-exchange/trading/trading-provisions/regulation/trading-guides/trading-calendar-2026.pdf)
+ """
+
+ country = None # type: ignore[assignment]
+ market = "XSWX"
+ parent_entity = Switzerland
+ parent_entity_subdivision_code = "ZH"
+ supported_categories: tuple[str] = (PUBLIC,)
+ start_year = 2000
+
+ def _add_holiday(self, name: str, *args) -> date | None:
+ dt = args if len(args) > 1 else args[0]
+ dt = dt if isinstance(dt, date) else date(self._year, *dt)
+ if self._is_weekend(dt):
+ return None
+ return super()._add_holiday(name, dt)
+
+ def _populate_public_holidays(self) -> None:
+ super()._populate_public_holidays()
+
+ # Saint Berchtold's Day.
+ self._add_new_years_day_two(tr("Berchtoldstag"))
+
+ # Christmas Eve.
+ self._add_christmas_eve(tr("Heiligabend"))
+
+ # New Year's Eve.
+ self._add_new_years_eve(tr("Vortag vor Neujahr"))
+
+
+class XSWX(SIXSwissExchange):
+ pass
+
+
+class SIX(SIXSwissExchange):
+ pass
diff --git a/holidays/financial/toronto_stock_exchange.py b/holidays/financial/toronto_stock_exchange.py
new file mode 100644
index 0000000000..5ee727d338
--- /dev/null
+++ b/holidays/financial/toronto_stock_exchange.py
@@ -0,0 +1,142 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from gettext import gettext as tr
+
+from holidays.calendars.gregorian import DEC
+from holidays.constants import HALF_DAY, PUBLIC
+from holidays.groups import ChristianHolidays, InternationalHolidays, StaticHolidays
+from holidays.observed_holiday_base import (
+ ObservedHolidayBase,
+ SAT_SUN_TO_NEXT_MON_TUE,
+ SAT_SUN_TO_NEXT_MON,
+ MON_TO_NEXT_TUE,
+ SAT_SUN_TO_NONE,
+)
+
+
+class TorontoStockExchange(
+ ObservedHolidayBase, ChristianHolidays, InternationalHolidays, StaticHolidays
+):
+ """Toronto Stock Exchange (TSX) holidays.
+
+ References:
+ * [2002](https://web.archive.org/web/20021222071421/http://www.tsx.com/en/contactUs/index.html#holidays)
+ * [2003](https://web.archive.org/web/20030810042101/http://www.tsx.com/en/contactUs/index.html)
+ * [2004](https://web.archive.org/web/20031203111548/http://www.tsx.com/en/contactUs/index.html)
+ * [2005](https://web.archive.org/web/20050507022430/http://www.tsx.com/en/contactUs/index.html)
+ * [2006](https://web.archive.org/web/20060812063726/http://www.tsx.com/en/market_activity/market_hours.html)
+ * [2007](https://web.archive.org/web/20070415013601/http://www.tsx.com/en/market_activity/market_hours.html)
+ * [2008](https://web.archive.org/web/20080725031101/http://www.tsx.com/en/market_activity/market_hours.html)
+ * [2009](https://web.archive.org/web/20080725031101/http://www.tsx.com/en/market_activity/market_hours.html)
+ * [2010](https://web.archive.org/web/20100102040437/http://tmx.com/en/about_tsx/market_hours.html)
+ * [2011](https://web.archive.org/web/20111004212723/http://tmx.com/en/about_tsx/market_hours.html)
+ * [2012](https://web.archive.org/web/20111004212723/http://tmx.com/en/about_tsx/market_hours.html)
+ * [2013](https://web.archive.org/web/20130123074533/http://tmx.com/en/about_tsx/market_hours.html)
+ * [2014](https://web.archive.org/web/20140209092227/http://tmx.com/en/about_tsx/market_hours.html)
+ * [2015](https://web.archive.org/web/20150920033428/http://tsx.com/trading/calendars-and-trading-hours/calendar-and-events)
+ * [2016](https://web.archive.org/web/20161211012946/http://tsx.com/trading/calendars-and-trading-hours/calendar-and-events)
+ * [2017](https://web.archive.org/web/20170710152044/http://tsx.com/trading/calendars-and-trading-hours/calendar-and-events)
+ * [2018](https://web.archive.org/web/20180911094940/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2019](https://web.archive.org/web/20191016223124/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2020](https://web.archive.org/web/20201025223915/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2021](https://web.archive.org/web/20211109023548/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2022](https://web.archive.org/web/20221208202449/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2023](https://web.archive.org/web/20231215123703/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2024](https://web.archive.org/web/20240618062250/https://www.tsx.com/trading/calendars-and-trading-hours/calendar)
+ * [2025](https://web.archive.org/web/20251222112248/https://www.tsx.com/en/trading/calendars-and-trading-hours/calendar)
+ * [2026](https://web.archive.org/web/20260509153658/https://www.tsx.com/en/trading/calendars-and-trading-hours/calendar)
+ """
+
+ market = "XTSE"
+ default_language = "en_CA"
+ supported_languages = ("ar", "en_CA", "en_US", "fr", "th")
+ start_year = 2002
+ supported_categories = (HALF_DAY, PUBLIC)
+
+ def __init__(self, *args, **kwargs):
+ ChristianHolidays.__init__(self)
+ InternationalHolidays.__init__(self)
+ StaticHolidays.__init__(self, TorontoStockExchangeStaticHolidays)
+ kwargs.setdefault("observed_rule", SAT_SUN_TO_NEXT_MON)
+ super().__init__(*args, **kwargs)
+
+ def _populate_public_holidays(self):
+ # New Year's Day.
+ self._move_holiday(self._add_new_years_day(tr("New Year's Day")))
+
+ if self._year >= 2008:
+ # Family Day.
+ self._add_holiday_3rd_mon_of_feb(tr("Family Day"))
+
+ # Good Friday.
+ self._add_good_friday(tr("Good Friday"))
+
+ # Victoria Day.
+ self._add_holiday_1st_mon_before_may_24(tr("Victoria Day"))
+
+ # Canada Day.
+ self._move_holiday(self._add_holiday_jul_1(tr("Canada Day")))
+
+ # Civic Holiday.
+ self._add_holiday_1st_mon_of_aug(tr("Civic Holiday"))
+
+ # Labor Day.
+ self._add_holiday_1st_mon_of_sep(tr("Labour Day"))
+
+ # Thanksgiving Day.
+ self._add_holiday_2nd_mon_of_oct(tr("Thanksgiving Day"))
+
+ self._move_holiday(
+ # Boxing Day.
+ self._add_christmas_day_two(tr("Boxing Day")),
+ rule=SAT_SUN_TO_NEXT_MON
+ if self._year == 2005
+ else SAT_SUN_TO_NEXT_MON_TUE + MON_TO_NEXT_TUE,
+ )
+
+ self._move_holiday(
+ # Christmas Day.
+ self._add_christmas_day(tr("Christmas Day")),
+ rule=SAT_SUN_TO_NEXT_MON_TUE if self._year == 2005 else SAT_SUN_TO_NEXT_MON,
+ )
+
+ def _populate_half_day_holidays(self):
+ # %s (markets close at 1:00 p.m. ET).
+ pause_label = tr("%s (markets close at 1:00 p.m. ET)")
+
+ self._move_holiday(
+ # Christmas Eve.
+ self._add_christmas_eve(self._format_holiday_name(pause_label, tr("Christmas Eve"))),
+ rule=SAT_SUN_TO_NONE,
+ )
+
+
+class XTSE(TorontoStockExchange):
+ pass
+
+
+class TSX(TorontoStockExchange):
+ pass
+
+
+class TorontoStockExchangeStaticHolidays:
+ """Toronto Stock Exchange (TSX) special holidays.
+
+ References:
+ * [Computer Failure Closure](https://web.archive.org/web/20260703101419/https://archive.nytimes.com/dealbook.nytimes.com/2008/12/17/computer-failure-closes-toronto-exchange/)
+ """
+
+ special_public_holidays = {
+ # Market Closed (Computer Failure).
+ 2008: (DEC, 17, tr("Market Closed (Computer Failure)")),
+ }
diff --git a/holidays/generate_ics.py b/holidays/generate_ics.py
index 04201269d8..10b35f71d2 100644
--- a/holidays/generate_ics.py
+++ b/holidays/generate_ics.py
@@ -61,7 +61,17 @@ def __init__(self):
parser.add_argument(
"-l", "--language", help="Language code for holiday names (e.g., en_US, es)"
)
- parser.add_argument("-o", "--output", help="Output file path (e.g., holidays.ics)")
+
+ output_group = parser.add_mutually_exclusive_group()
+ output_group.add_argument("-o", "--output", help="Output file path")
+ output_group.add_argument(
+ "--output-template",
+ help=(
+ "Output filename template. Available placeholders: {code}, {subdiv}, "
+ "{language}, {categories}, {start_year}, {end_year}, {today}. "
+ "Use '{{' and '}}' for literal '{' and '}'"
+ ),
+ )
list_group = parser.add_mutually_exclusive_group()
list_group.add_argument(
@@ -166,6 +176,40 @@ def validate_language(self) -> None:
"Use --list-languages to see supported values"
)
+ def validate_output_template(self, placeholders: set[str]) -> None:
+ template = self.args.output_template
+ if not template:
+ return None
+
+ field_names = []
+ i = 0
+ n = len(template)
+ while i < n:
+ if i + 1 < n and (template[i : i + 2] == "{{" or template[i : i + 2] == "}}"):
+ i += 2
+ elif template[i] == "{":
+ end = template.find("}", i + 1)
+ if end == -1:
+ raise SystemExit("Invalid output template")
+
+ field_names.append(template[i + 1 : end])
+ i = end + 1
+ elif template[i] == "}":
+ raise SystemExit("Invalid output template")
+ else:
+ i += 1
+
+ if not field_names:
+ raise SystemExit("Output template must contain at least one placeholder")
+
+ for field_name in field_names:
+ if field_name not in placeholders:
+ supported = ", ".join(f"{{{p}}}" for p in sorted(placeholders))
+ raise SystemExit(
+ f"Unknown placeholder '{{{field_name}}}' in output template. "
+ f"Supported placeholders: {supported}"
+ )
+
def handle_list_options(self) -> bool:
if self.args.list_subdivisions:
print(f"Supported subdivisions for {self.args.code}:")
@@ -184,6 +228,26 @@ def handle_list_options(self) -> bool:
return False
+ def get_default_output_template(self) -> str:
+ start_year, end_year = self.args.years
+ parts = ["{code}"]
+
+ if self.args.subdiv:
+ parts.append("{subdiv}")
+
+ if self.args.language:
+ parts.append("{language}")
+
+ if self.args.categories:
+ parts.append("{categories}")
+
+ parts.append("{start_year}")
+
+ if start_year != end_year:
+ parts.append("{end_year}")
+
+ return f"{'_'.join(parts)}.ics"
+
def run(self) -> None:
self.validate_code()
if self.handle_list_options():
@@ -194,9 +258,24 @@ def run(self) -> None:
self.validate_categories()
start_year, end_year = self.args.years
- years_part = f"{start_year}_{end_year}" if start_year != end_year else f"{start_year}"
- subdiv_part = f"_{self.args.subdiv.upper().replace(' ', '_')}" if self.args.subdiv else ""
- output_path = self.args.output or f"{self.args.code}{subdiv_part}_{years_part}.ics"
+
+ if self.args.output:
+ output_path = self.args.output
+ else:
+ values = {
+ "code": self.args.code,
+ "subdiv": (self.args.subdiv or "ALL").upper().replace(" ", "_"),
+ "language": self.args.language.upper() if self.args.language else "DEFAULT",
+ "categories": (
+ "_".join(self.args.categories).upper() if self.args.categories else "PUBLIC"
+ ),
+ "start_year": start_year,
+ "end_year": end_year,
+ "today": datetime.now(timezone.utc).strftime("%Y%m%d"),
+ }
+ self.validate_output_template(set(values))
+ template = self.args.output_template or self.get_default_output_template()
+ output_path = template.format(**values)
try:
holiday_obj = self.entity_loader(
diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py
index cf6ddff394..3ca0082502 100644
--- a/holidays/holiday_base.py
+++ b/holidays/holiday_base.py
@@ -1136,10 +1136,13 @@ def get_closest_holiday(
raise AttributeError(f"Unknown direction: {direction}")
dt = self.__keytransform__(target_date or datetime.now().date())
- if direction == "forward" and (next_year := dt.year + 1) not in self.years:
- self._populate(next_year)
- elif direction == "backward" and (previous_year := dt.year - 1) not in self.years:
- self._populate(previous_year)
+ if self.expand:
+ if direction == "forward" and (next_year := dt.year + 1) not in self.years:
+ self.years.add(next_year)
+ self._populate(next_year)
+ elif direction == "backward" and (previous_year := dt.year - 1) not in self.years:
+ self.years.add(previous_year)
+ self._populate(previous_year)
sorted_dates = sorted(self.keys())
position = (
diff --git a/holidays/locale/ar/LC_MESSAGES/XTSE.po b/holidays/locale/ar/LC_MESSAGES/XTSE.po
new file mode 100644
index 0000000000..9f236afb20
--- /dev/null
+++ b/holidays/locale/ar/LC_MESSAGES/XTSE.po
@@ -0,0 +1,81 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Toronto Stock Exchange (TSX) holidays ar localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-01 16:06+0000\n"
+"PO-Revision-Date: 2026-07-07 05:26+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: ar\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: en_CA\n"
+
+#. New Year's Day.
+msgid "New Year's Day"
+msgstr "يوم السنة الجديدة"
+
+#. Family Day.
+msgid "Family Day"
+msgstr "يوم العائلة"
+
+#. Good Friday.
+msgid "Good Friday"
+msgstr "الجمعة العظيمة"
+
+#. Victoria Day.
+msgid "Victoria Day"
+msgstr "يوم فيكتوريا"
+
+#. Canada Day.
+msgid "Canada Day"
+msgstr "يوم كندا"
+
+#. Civic Holiday.
+msgid "Civic Holiday"
+msgstr "عطلة المدنية"
+
+#. Labor Day.
+msgid "Labour Day"
+msgstr "عيد العمال"
+
+#. Thanksgiving Day.
+msgid "Thanksgiving Day"
+msgstr "عيد الشكر"
+
+#. Boxing Day.
+msgid "Boxing Day"
+msgstr "يوم الملاكمة"
+
+#. Christmas Day.
+msgid "Christmas Day"
+msgstr "عيد الميلاد"
+
+#. %s (markets close at 1:00 p.m. ET).
+#, c-format
+msgid "%s (markets close at 1:00 p.m. ET)"
+msgstr "%s (تغلق الأسواق في الساعة 1:00 مساءً بالتوقيت الشرقي)"
+
+#. Christmas Eve.
+msgid "Christmas Eve"
+msgstr "عشية عيد الميلاد"
+
+#. Market Closed (Computer Failure).
+msgid "Market Closed (Computer Failure)"
+msgstr "السوق مغلق (عطل في الكمبيوتر)"
diff --git a/holidays/locale/de/LC_MESSAGES/XSWX.po b/holidays/locale/de/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..50a2e138bf
--- /dev/null
+++ b/holidays/locale/de/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr ""
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr ""
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr ""
diff --git a/holidays/locale/en_CA/LC_MESSAGES/XTSE.po b/holidays/locale/en_CA/LC_MESSAGES/XTSE.po
new file mode 100644
index 0000000000..ba58d8e615
--- /dev/null
+++ b/holidays/locale/en_CA/LC_MESSAGES/XTSE.po
@@ -0,0 +1,81 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Toronto Stock Exchange (TSX) holidays.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-01 16:06+0000\n"
+"PO-Revision-Date: 2026-07-07 05:26+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: en_CA\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: en_CA\n"
+
+#. New Year's Day.
+msgid "New Year's Day"
+msgstr ""
+
+#. Family Day.
+msgid "Family Day"
+msgstr ""
+
+#. Good Friday.
+msgid "Good Friday"
+msgstr ""
+
+#. Victoria Day.
+msgid "Victoria Day"
+msgstr ""
+
+#. Canada Day.
+msgid "Canada Day"
+msgstr ""
+
+#. Civic Holiday.
+msgid "Civic Holiday"
+msgstr ""
+
+#. Labor Day.
+msgid "Labour Day"
+msgstr ""
+
+#. Thanksgiving Day.
+msgid "Thanksgiving Day"
+msgstr ""
+
+#. Boxing Day.
+msgid "Boxing Day"
+msgstr ""
+
+#. Christmas Day.
+msgid "Christmas Day"
+msgstr ""
+
+#. %s (markets close at 1:00 p.m. ET).
+#, c-format
+msgid "%s (markets close at 1:00 p.m. ET)"
+msgstr ""
+
+#. Christmas Eve.
+msgid "Christmas Eve"
+msgstr ""
+
+#. Market Closed (Computer Failure).
+msgid "Market Closed (Computer Failure)"
+msgstr ""
diff --git a/holidays/locale/en_US/LC_MESSAGES/KZ.po b/holidays/locale/en_US/LC_MESSAGES/KZ.po
index 5db2152cdb..24bf82e270 100644
--- a/holidays/locale/en_US/LC_MESSAGES/KZ.po
+++ b/holidays/locale/en_US/LC_MESSAGES/KZ.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.58\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2024-09-26 20:24+0300\n"
-"PO-Revision-Date: 2024-09-26 20:33+0300\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2026-07-10 16:56+0500\n"
+"Last-Translator: Darkhan Azhibek \n"
"Language-Team: Holidays Localization Team\n"
"Language: en_US\n"
"MIME-Version: 1.0\n"
@@ -79,6 +79,10 @@ msgstr "Capital Day"
msgid "Қазақстан Республикасының Конституциясы күні"
msgstr "Constitution Day"
+#. Republic Day.
+msgid "Қазақстан Республикасы күні"
+msgstr "Republic Day"
+
#. Republic Day.
msgid "Республика күні"
msgstr "Republic Day"
diff --git a/holidays/locale/en_US/LC_MESSAGES/MC.po b/holidays/locale/en_US/LC_MESSAGES/MC.po
index c29e49ee3c..f7bad1c5f5 100644
--- a/holidays/locale/en_US/LC_MESSAGES/MC.po
+++ b/holidays/locale/en_US/LC_MESSAGES/MC.po
@@ -17,7 +17,7 @@ msgstr ""
"Project-Id-Version: Holidays 0.100\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2023-02-20 11:58+0200\n"
-"PO-Revision-Date: 2026-06-30 21:57+0300\n"
+"PO-Revision-Date: 2026-07-04 23:40+0300\n"
"Last-Translator: ~Jhellico \n"
"Language-Team: Holidays Localization Team\n"
"Language: en_US\n"
@@ -26,11 +26,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Lingua 4.15.0\n"
"X-Generator: Poedit 3.4\n"
-"X-Source-Language: fr\n"
+"X-Source-Language: fr_MC\n"
#. %s (observed).
#, c-format
-msgid "%s (observé)"
+msgid "%s (reporté)"
msgstr "%s (observed)"
#. New Year's Day.
@@ -38,47 +38,47 @@ msgid "Le jour de l'An"
msgstr "New Year's Day"
#. Saint Devote's Day.
-msgid "La Sainte Dévote"
+msgid "Le jour de la Sainte-Dévote"
msgstr "Saint Devote's Day"
#. Easter Monday.
-msgid "Le lundi de Pâques"
+msgid "Le Lundi de Pâques"
msgstr "Easter Monday"
#. Labor Day.
-msgid "Fête de la Travaille"
+msgid "Le jour de la Fête du Travail"
msgstr "Labor Day"
#. Ascension Day.
-msgid "L'Ascension"
+msgid "Le jour de l'Ascension"
msgstr "Ascension Day"
#. Pentecost Monday.
-msgid "Le lundi de Pentecôte"
+msgid "Le Lundi de Pentecôte"
msgstr "Pentecost Monday"
#. Corpus Christi.
-msgid "La Fête Dieu"
+msgid "Le jour de la Fête Dieu"
msgstr "Corpus Christi"
#. Assumption Day.
-msgid "L'Assomption de Marie"
+msgid "Le jour de l'Assomption"
msgstr "Assumption Day"
#. All Saints' Day.
-msgid "La Toussaint"
+msgid "Le jour de la Toussaint"
msgstr "All Saints' Day"
#. Prince's Day.
-msgid "La Fête du Prince"
+msgid "Le jour de la Fête de S.A.S. le Prince Souverain"
msgstr "Prince's Day"
#. Immaculate Conception.
-msgid "L'Immaculée Conception"
+msgid "Le jour de l'Immaculée Conception"
msgstr "Immaculate Conception"
#. Christmas Day.
-msgid "Noël"
+msgid "Le jour de Noël"
msgstr "Christmas Day"
#. Public holiday.
diff --git a/holidays/locale/en_US/LC_MESSAGES/XSWX.po b/holidays/locale/en_US/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..0b573cb9f2
--- /dev/null
+++ b/holidays/locale/en_US/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays en_US localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "Saint Berchtold's Day"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Christmas Eve"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "New Year's Eve"
diff --git a/holidays/locale/en_US/LC_MESSAGES/XTSE.po b/holidays/locale/en_US/LC_MESSAGES/XTSE.po
new file mode 100644
index 0000000000..e4e3092896
--- /dev/null
+++ b/holidays/locale/en_US/LC_MESSAGES/XTSE.po
@@ -0,0 +1,81 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Toronto Stock Exchange (TSX) holidays en_US localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-01 16:06+0000\n"
+"PO-Revision-Date: 2026-07-07 05:26+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: en_US\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: en_CA\n"
+
+#. New Year's Day.
+msgid "New Year's Day"
+msgstr "New Year's Day"
+
+#. Family Day.
+msgid "Family Day"
+msgstr "Family Day"
+
+#. Good Friday.
+msgid "Good Friday"
+msgstr "Good Friday"
+
+#. Victoria Day.
+msgid "Victoria Day"
+msgstr "Victoria Day"
+
+#. Canada Day.
+msgid "Canada Day"
+msgstr "Canada Day"
+
+#. Civic Holiday.
+msgid "Civic Holiday"
+msgstr "Civic Holiday"
+
+#. Labor Day.
+msgid "Labour Day"
+msgstr "Labor Day"
+
+#. Thanksgiving Day.
+msgid "Thanksgiving Day"
+msgstr "Thanksgiving Day"
+
+#. Boxing Day.
+msgid "Boxing Day"
+msgstr "Boxing Day"
+
+#. Christmas Day.
+msgid "Christmas Day"
+msgstr "Christmas Day"
+
+#. %s (markets close at 1:00 p.m. ET).
+#, c-format
+msgid "%s (markets close at 1:00 p.m. ET)"
+msgstr "%s (markets close at 1:00 p.m. ET)"
+
+#. Christmas Eve.
+msgid "Christmas Eve"
+msgstr "Christmas Eve"
+
+#. Market Closed (Computer Failure).
+msgid "Market Closed (Computer Failure)"
+msgstr "Market Closed (Computer Failure)"
diff --git a/holidays/locale/fr/LC_MESSAGES/CA.po b/holidays/locale/fr/LC_MESSAGES/CA.po
index 574613ba07..869a100d4a 100644
--- a/holidays/locale/fr/LC_MESSAGES/CA.po
+++ b/holidays/locale/fr/LC_MESSAGES/CA.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.72\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2023-04-10 14:10+0300\n"
-"PO-Revision-Date: 2025-04-28 22:27+0700\n"
-"Last-Translator: PPsyrius \n"
+"PO-Revision-Date: 2026-07-08 22:59+0300\n"
+"Last-Translator: ~Jhellico \n"
"Language-Team: Holidays Localization Team\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -31,7 +31,7 @@ msgstr ""
#. %s (observed).
#, c-format
msgid "%s (observed)"
-msgstr "%s (Observé)"
+msgstr "%s (observé)"
#. New Year's Day.
msgid "New Year's Day"
@@ -107,7 +107,7 @@ msgstr "Journée Terry Fox"
#. Civic Holiday.
msgid "Civic Holiday"
-msgstr "Premier lundi d'août"
+msgstr "Congé civique"
#. New Brunswick Day.
msgid "New Brunswick Day"
diff --git a/holidays/locale/fr/LC_MESSAGES/XSWX.po b/holidays/locale/fr/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..3eebf86a41
--- /dev/null
+++ b/holidays/locale/fr/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays fr localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "Saint-Berchtold"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Veille de Noël"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Réveillon de la Saint-Sylvestre"
diff --git a/holidays/locale/fr/LC_MESSAGES/XTSE.po b/holidays/locale/fr/LC_MESSAGES/XTSE.po
new file mode 100644
index 0000000000..f066d7ca99
--- /dev/null
+++ b/holidays/locale/fr/LC_MESSAGES/XTSE.po
@@ -0,0 +1,81 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Toronto Stock Exchange (TSX) holidays fr localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-01 16:06+0000\n"
+"PO-Revision-Date: 2026-07-07 05:26+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: fr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: en_CA\n"
+
+#. New Year's Day.
+msgid "New Year's Day"
+msgstr "Jour de l'an"
+
+#. Family Day.
+msgid "Family Day"
+msgstr "Fête de la famille"
+
+#. Good Friday.
+msgid "Good Friday"
+msgstr "Vendredi saint"
+
+#. Victoria Day.
+msgid "Victoria Day"
+msgstr "Fête de la Reine"
+
+#. Canada Day.
+msgid "Canada Day"
+msgstr "Fête du Canada"
+
+#. Civic Holiday.
+msgid "Civic Holiday"
+msgstr "Premier lundi d'août"
+
+#. Labor Day.
+msgid "Labour Day"
+msgstr "Fête du Travail"
+
+#. Thanksgiving Day.
+msgid "Thanksgiving Day"
+msgstr "Action de grâce"
+
+#. Boxing Day.
+msgid "Boxing Day"
+msgstr "Boxing Day"
+
+#. Christmas Day.
+msgid "Christmas Day"
+msgstr "Jour de Noël"
+
+#. %s (markets close at 1:00 p.m. ET).
+#, c-format
+msgid "%s (markets close at 1:00 p.m. ET)"
+msgstr "%s (fermeture des marchés à 13h00 HE)"
+
+#. Christmas Eve.
+msgid "Christmas Eve"
+msgstr "Veille de Noël"
+
+#. Market Closed (Computer Failure).
+msgid "Market Closed (Computer Failure)"
+msgstr "Marché fermé (panne informatique)"
diff --git a/holidays/locale/fr/LC_MESSAGES/MC.po b/holidays/locale/fr_MC/LC_MESSAGES/MC.po
similarity index 72%
rename from holidays/locale/fr/LC_MESSAGES/MC.po
rename to holidays/locale/fr_MC/LC_MESSAGES/MC.po
index b888aff8c1..192d5dcc72 100644
--- a/holidays/locale/fr/LC_MESSAGES/MC.po
+++ b/holidays/locale/fr_MC/LC_MESSAGES/MC.po
@@ -14,23 +14,23 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.41\n"
+"Project-Id-Version: Holidays 0.100\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2023-02-20 11:58+0200\n"
-"PO-Revision-Date: 2023-02-20 12:00+0200\n"
+"PO-Revision-Date: 2026-07-04 23:40+0300\n"
"Last-Translator: ~Jhellico \n"
"Language-Team: Holidays Localization Team\n"
-"Language: fr\n"
+"Language: fr_MC\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Lingua 4.15.0\n"
"X-Generator: Poedit 3.2.2\n"
-"X-Source-Language: fr\n"
+"X-Source-Language: fr_MC\n"
#. %s (observed).
#, c-format
-msgid "%s (observé)"
+msgid "%s (reporté)"
msgstr ""
#. New Year's Day.
@@ -38,47 +38,47 @@ msgid "Le jour de l'An"
msgstr ""
#. Saint Devote's Day.
-msgid "La Sainte Dévote"
+msgid "Le jour de la Sainte-Dévote"
msgstr ""
#. Easter Monday.
-msgid "Le lundi de Pâques"
+msgid "Le Lundi de Pâques"
msgstr ""
#. Labor Day.
-msgid "Fête de la Travaille"
+msgid "Le jour de la Fête du Travail"
msgstr ""
#. Ascension Day.
-msgid "L'Ascension"
+msgid "Le jour de l'Ascension"
msgstr ""
#. Pentecost Monday.
-msgid "Le lundi de Pentecôte"
+msgid "Le Lundi de Pentecôte"
msgstr ""
#. Corpus Christi.
-msgid "La Fête Dieu"
+msgid "Le jour de la Fête Dieu"
msgstr ""
#. Assumption Day.
-msgid "L'Assomption de Marie"
+msgid "Le jour de l'Assomption"
msgstr ""
#. All Saints' Day.
-msgid "La Toussaint"
+msgid "Le jour de la Toussaint"
msgstr ""
#. Prince's Day.
-msgid "La Fête du Prince"
+msgid "Le jour de la Fête de S.A.S. le Prince Souverain"
msgstr ""
#. Immaculate Conception.
-msgid "L'Immaculée Conception"
+msgid "Le jour de l'Immaculée Conception"
msgstr ""
#. Christmas Day.
-msgid "Noël"
+msgid "Le jour de Noël"
msgstr ""
#. Public holiday.
diff --git a/holidays/locale/gu/LC_MESSAGES/XCME.po b/holidays/locale/gu/LC_MESSAGES/XCME.po
index 21bac245b3..b4724c3719 100644
--- a/holidays/locale/gu/LC_MESSAGES/XCME.po
+++ b/holidays/locale/gu/LC_MESSAGES/XCME.po
@@ -14,10 +14,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.100\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2026-06-06 17:56+0000\n"
-"PO-Revision-Date: 2026-06-15 17:00+0000\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: gu\n"
diff --git a/holidays/locale/gu/LC_MESSAGES/XNSE.po b/holidays/locale/gu/LC_MESSAGES/XNSE.po
index a8b74084fb..bceb7b14eb 100644
--- a/holidays/locale/gu/LC_MESSAGES/XNSE.po
+++ b/holidays/locale/gu/LC_MESSAGES/XNSE.po
@@ -14,10 +14,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.88\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2025-08-21 16:22+0000\n"
-"PO-Revision-Date: 2025-12-17 13:21+0000\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: gu\n"
@@ -38,7 +38,7 @@ msgstr "પ્રજાસત્તાક દિવસ"
#. Good Friday.
msgid "Good Friday"
-msgstr "ગુડ ફ્રાઈડે"
+msgstr "ગુડ ફ્રાઇડે"
#. Dr. B. R. Ambedkar Jayanti.
msgid "Dr. Baba Saheb Ambedkar Jayanti"
@@ -62,7 +62,7 @@ msgstr "મહાત્મા ગાંધી જયંતિ"
#. Christmas Day.
msgid "Christmas Day"
-msgstr "નાતાલ"
+msgstr "નાતાલનો દિવસ"
#. Maha Shivaratri.
msgid "Maha Shivaratri"
@@ -126,4 +126,4 @@ msgstr "બકરી ઈદ"
#. New Year's Day.
msgid "New Year"
-msgstr "નવું વર્ષ"
+msgstr "નવા વર્ષનો દિવસ"
diff --git a/holidays/locale/gu/LC_MESSAGES/XNYS.po b/holidays/locale/gu/LC_MESSAGES/XNYS.po
index c2b96c8dc8..9d1201e728 100644
--- a/holidays/locale/gu/LC_MESSAGES/XNYS.po
+++ b/holidays/locale/gu/LC_MESSAGES/XNYS.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.99\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2026-06-03 06:52+0000\n"
-"PO-Revision-Date: 2026-06-04 11:21+0000\n"
-"Last-Translator: Paresh Joshi <194076591+pareshjoshij@users.noreply.github.com>\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
+"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: gu\n"
"MIME-Version: 1.0\n"
@@ -70,7 +70,7 @@ msgstr "સ્વતંત્રતા દિવસ"
#. Labor Day.
msgid "Labor Day"
-msgstr "મજૂર દિવસ"
+msgstr "શ્રમ દિવસ"
#. Columbus Day.
msgid "Columbus Day"
@@ -194,7 +194,7 @@ msgstr "વર્લ્ડ ટ્રેડ સેન્ટર પરના હ
#. Hurricane Sandy.
msgid "Hurricane Sandy"
-msgstr "વાવાઝોડું સેન્ડી"
+msgstr "હરિકેન સેન્ડી"
#. Liberty Day.
msgid "Liberty Day"
@@ -234,7 +234,7 @@ msgstr "સ્વતંત્રતા દિવસ પછીનો દિવસ
#. Saturday before Labor Day.
msgid "Saturday before Labor Day"
-msgstr "લેબર ડે પહેલાંનો શનિવાર"
+msgstr "શ્રમ દિવસ પહેલાંનો શનિવાર"
#. Saturday after Columbus Day.
msgid "Saturday after Columbus Day"
diff --git a/holidays/locale/hi/LC_MESSAGES/XCME.po b/holidays/locale/hi/LC_MESSAGES/XCME.po
index 26de1df68c..a610eb524b 100644
--- a/holidays/locale/hi/LC_MESSAGES/XCME.po
+++ b/holidays/locale/hi/LC_MESSAGES/XCME.po
@@ -14,10 +14,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.100\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2026-06-06 17:56+0000\n"
-"PO-Revision-Date: 2026-06-15 17:00+0000\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: hi\n"
@@ -103,11 +103,11 @@ msgstr "पूर्व राष्ट्रपति रोनाल्ड र
#. National Day of Mourning for former President Gerald R. Ford.
msgid "National Day of Mourning for former President Gerald R. Ford"
-msgstr "पूर्व राष्ट्रपति गेराल्ड आर. फोर्ड के लिए राष्ट्रीय शोक दिवस"
+msgstr "पूर्व राष्ट्रपति जेराल्ड आर. फोर्ड के लिए राष्ट्रीय शोक दिवस"
#. National Day of Mourning for former President George H. W. Bush.
msgid "National Day of Mourning for former President George H. W. Bush"
-msgstr "पूर्व राष्ट्रपति जॉर्ज एच. डब्ल्यू. बुश के लिए राष्ट्रीय शोक दिवस"
+msgstr "पूर्व राष्ट्रपति जॉर्ज एच. डब्लू. बुश के लिए राष्ट्रीय शोक दिवस"
#. National Day of Mourning for former President Jimmy Carter.
msgid "National Day of Mourning for former President Jimmy Carter"
diff --git a/holidays/locale/hi/LC_MESSAGES/XNAS.po b/holidays/locale/hi/LC_MESSAGES/XNAS.po
index aec152a8b2..64e48c1383 100644
--- a/holidays/locale/hi/LC_MESSAGES/XNAS.po
+++ b/holidays/locale/hi/LC_MESSAGES/XNAS.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.99\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2026-06-03 06:52+0000\n"
-"PO-Revision-Date: 2026-06-03 06:52+0000\n"
-"Last-Translator: Paresh Joshi <194076591+pareshjoshij@users.noreply.github.com>\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
+"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
diff --git a/holidays/locale/hi/LC_MESSAGES/XNSE.po b/holidays/locale/hi/LC_MESSAGES/XNSE.po
index 8c2ee5b25f..cb42989aab 100644
--- a/holidays/locale/hi/LC_MESSAGES/XNSE.po
+++ b/holidays/locale/hi/LC_MESSAGES/XNSE.po
@@ -14,10 +14,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.84\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2025-08-21 16:22+0000\n"
-"PO-Revision-Date: 2025-08-21 16:22+0000\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
"Last-Translator: Saheel Sapovadia \n"
"Language-Team: Holidays Localization Team\n"
"Language: hi\n"
diff --git a/holidays/locale/hi/LC_MESSAGES/XNYS.po b/holidays/locale/hi/LC_MESSAGES/XNYS.po
index 4a03f7e62b..19cbaac385 100644
--- a/holidays/locale/hi/LC_MESSAGES/XNYS.po
+++ b/holidays/locale/hi/LC_MESSAGES/XNYS.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.99\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2026-06-03 06:52+0000\n"
-"PO-Revision-Date: 2026-06-04 11:21+0000\n"
-"Last-Translator: Paresh Joshi <194076591+pareshjoshij@users.noreply.github.com>\n"
+"PO-Revision-Date: 2026-07-07 11:15+0530\n"
+"Last-Translator: Paresh Joshi \n"
"Language-Team: Holidays Localization Team\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
@@ -70,7 +70,7 @@ msgstr "स्वतंत्रता दिवस"
#. Labor Day.
msgid "Labor Day"
-msgstr "मज़दूर दिवस"
+msgstr "श्रम दिवस"
#. Columbus Day.
msgid "Columbus Day"
@@ -90,7 +90,7 @@ msgstr "थैंक्सगिविंग डे"
#. Christmas Day.
msgid "Christmas Day"
-msgstr "क्रिसमस का दिन"
+msgstr "क्रिसमस दिवस"
#. Pending outbreak of World War I.
msgid "Pending outbreak of World War I"
@@ -130,7 +130,7 @@ msgstr "बैक ऑफिस काम का बोझ"
#. Day before Independence Day.
msgid "Day before Independence Day"
-msgstr "स्वतंत्रता दिवस से एक दिन पहले"
+msgstr "स्वतंत्रता दिवस से पहले का दिन"
#. Day after Thanksgiving Day.
msgid "Day after Thanksgiving Day"
@@ -194,7 +194,7 @@ msgstr "वर्ल्ड ट्रेड सेंटर पर हमलो
#. Hurricane Sandy.
msgid "Hurricane Sandy"
-msgstr "तूफान सैंडी"
+msgstr "हरिकेन सैंडी"
#. Liberty Day.
msgid "Liberty Day"
@@ -234,7 +234,7 @@ msgstr "स्वतंत्रता दिवस के बाद का द
#. Saturday before Labor Day.
msgid "Saturday before Labor Day"
-msgstr "मज़दूर दिवस से पहले का शनिवार"
+msgstr "श्रम दिवस से पहले का शनिवार"
#. Saturday after Columbus Day.
msgid "Saturday after Columbus Day"
diff --git a/holidays/locale/it/LC_MESSAGES/XSWX.po b/holidays/locale/it/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..58f80e2223
--- /dev/null
+++ b/holidays/locale/it/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays it localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: it\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "Giorno di Bertoldo"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Vigilia di Natale"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Vigilia di Capodanno"
diff --git a/holidays/locale/kk/LC_MESSAGES/KZ.po b/holidays/locale/kk/LC_MESSAGES/KZ.po
index 0a9417b183..ec8b6d34c2 100644
--- a/holidays/locale/kk/LC_MESSAGES/KZ.po
+++ b/holidays/locale/kk/LC_MESSAGES/KZ.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.58\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2024-09-26 20:24+0300\n"
-"PO-Revision-Date: 2024-09-26 20:28+0300\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2026-07-10 16:56+0500\n"
+"Last-Translator: Darkhan Azhibek \n"
"Language-Team: Holidays Localization Team\n"
"Language: kk\n"
"MIME-Version: 1.0\n"
@@ -79,6 +79,10 @@ msgstr ""
msgid "Қазақстан Республикасының Конституциясы күні"
msgstr ""
+#. Republic Day.
+msgid "Қазақстан Республикасы күні"
+msgstr ""
+
#. Republic Day.
msgid "Республика күні"
msgstr ""
diff --git a/holidays/locale/th/LC_MESSAGES/XSWX.po b/holidays/locale/th/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..8d664fc96a
--- /dev/null
+++ b/holidays/locale/th/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays th localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "วันสมโภชนักบุญแบร์กโทลด์"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "วันคริสต์มาสอีฟ"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "วันสิ้นปี"
diff --git a/holidays/locale/th/LC_MESSAGES/XTSE.po b/holidays/locale/th/LC_MESSAGES/XTSE.po
new file mode 100644
index 0000000000..3b1f99ab03
--- /dev/null
+++ b/holidays/locale/th/LC_MESSAGES/XTSE.po
@@ -0,0 +1,81 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# Toronto Stock Exchange (TSX) holidays th localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.100\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-01 16:06+0000\n"
+"PO-Revision-Date: 2026-07-07 05:26+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: th\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: en_CA\n"
+
+#. New Year's Day.
+msgid "New Year's Day"
+msgstr "วันขึ้นปีใหม่"
+
+#. Family Day.
+msgid "Family Day"
+msgstr "วันครอบครัว"
+
+#. Good Friday.
+msgid "Good Friday"
+msgstr "วันศุกร์ประเสริฐ"
+
+#. Victoria Day.
+msgid "Victoria Day"
+msgstr "วันวิคตอเรีย"
+
+#. Canada Day.
+msgid "Canada Day"
+msgstr "วันชาติแคนาดา"
+
+#. Civic Holiday.
+msgid "Civic Holiday"
+msgstr "วันหยุดราชการ"
+
+#. Labor Day.
+msgid "Labour Day"
+msgstr "วันแรงงาน"
+
+#. Thanksgiving Day.
+msgid "Thanksgiving Day"
+msgstr "วันขอบคุณพระเจ้า"
+
+#. Boxing Day.
+msgid "Boxing Day"
+msgstr "วันเปิดกล่องของขวัญ"
+
+#. Christmas Day.
+msgid "Christmas Day"
+msgstr "วันคริสต์มาส"
+
+#. %s (markets close at 1:00 p.m. ET).
+#, c-format
+msgid "%s (markets close at 1:00 p.m. ET)"
+msgstr "%s (ตลาดปิดเวลา 13:00 น. ตามเวลา ET)"
+
+#. Christmas Eve.
+msgid "Christmas Eve"
+msgstr "วันคริสต์มาสอีฟ"
+
+#. Market Closed (Computer Failure).
+msgid "Market Closed (Computer Failure)"
+msgstr "ตลาดปิด (ระบบคอมพิวเตอร์ขัดข้อง)"
diff --git a/holidays/locale/uk/LC_MESSAGES/KZ.po b/holidays/locale/uk/LC_MESSAGES/KZ.po
index 11dcba1a7a..ab4a544129 100644
--- a/holidays/locale/uk/LC_MESSAGES/KZ.po
+++ b/holidays/locale/uk/LC_MESSAGES/KZ.po
@@ -14,11 +14,11 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: Holidays 0.58\n"
+"Project-Id-Version: Holidays 0.101\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2024-09-26 20:24+0300\n"
-"PO-Revision-Date: 2024-09-26 20:33+0300\n"
-"Last-Translator: ~Jhellico \n"
+"PO-Revision-Date: 2026-07-10 16:56+0500\n"
+"Last-Translator: Darkhan Azhibek \n"
"Language-Team: Holidays Localization Team\n"
"Language: uk\n"
"MIME-Version: 1.0\n"
@@ -79,6 +79,10 @@ msgstr "День Столиці"
msgid "Қазақстан Республикасының Конституциясы күні"
msgstr "День Конституції Республіки Казахстан"
+#. Republic Day.
+msgid "Қазақстан Республикасы күні"
+msgstr "День Республіки Казахстан"
+
#. Republic Day.
msgid "Республика күні"
msgstr "День Республіки"
diff --git a/holidays/locale/uk/LC_MESSAGES/MC.po b/holidays/locale/uk/LC_MESSAGES/MC.po
index ae4a1a3981..294d07be31 100644
--- a/holidays/locale/uk/LC_MESSAGES/MC.po
+++ b/holidays/locale/uk/LC_MESSAGES/MC.po
@@ -17,7 +17,7 @@ msgstr ""
"Project-Id-Version: Holidays 0.100\n"
"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
"POT-Creation-Date: 2023-02-20 11:58+0200\n"
-"PO-Revision-Date: 2026-06-30 21:57+0300\n"
+"PO-Revision-Date: 2026-07-04 23:40+0300\n"
"Last-Translator: ~Jhellico \n"
"Language-Team: Holidays Localization Team\n"
"Language: uk\n"
@@ -26,11 +26,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Lingua 4.15.0\n"
"X-Generator: Poedit 3.4\n"
-"X-Source-Language: fr\n"
+"X-Source-Language: fr_MC\n"
#. %s (observed).
#, c-format
-msgid "%s (observé)"
+msgid "%s (reporté)"
msgstr "%s (вихідний)"
#. New Year's Day.
@@ -38,47 +38,47 @@ msgid "Le jour de l'An"
msgstr "Новий рік"
#. Saint Devote's Day.
-msgid "La Sainte Dévote"
+msgid "Le jour de la Sainte-Dévote"
msgstr "День Святої Девоти"
#. Easter Monday.
-msgid "Le lundi de Pâques"
+msgid "Le Lundi de Pâques"
msgstr "Великодній понеділок"
#. Labor Day.
-msgid "Fête de la Travaille"
+msgid "Le jour de la Fête du Travail"
msgstr "День праці"
#. Ascension Day.
-msgid "L'Ascension"
+msgid "Le jour de l'Ascension"
msgstr "Вознесіння Господнє"
#. Pentecost Monday.
-msgid "Le lundi de Pentecôte"
+msgid "Le Lundi de Pentecôte"
msgstr "Другий день Пʼятидесятниці"
#. Corpus Christi.
-msgid "La Fête Dieu"
+msgid "Le jour de la Fête Dieu"
msgstr "Свято Тіла і Крові Христових"
#. Assumption Day.
-msgid "L'Assomption de Marie"
+msgid "Le jour de l'Assomption"
msgstr "Внебовзяття Пресвятої Діви Марії"
#. All Saints' Day.
-msgid "La Toussaint"
+msgid "Le jour de la Toussaint"
msgstr "День усіх святих"
#. Prince's Day.
-msgid "La Fête du Prince"
+msgid "Le jour de la Fête de S.A.S. le Prince Souverain"
msgstr "День Князя"
#. Immaculate Conception.
-msgid "L'Immaculée Conception"
+msgid "Le jour de l'Immaculée Conception"
msgstr "Непорочне зачаття Діви Марії"
#. Christmas Day.
-msgid "Noël"
+msgid "Le jour de Noël"
msgstr "Різдво Христове"
#. Public holiday.
diff --git a/holidays/locale/uk/LC_MESSAGES/XSWX.po b/holidays/locale/uk/LC_MESSAGES/XSWX.po
new file mode 100644
index 0000000000..0d2035c8dc
--- /dev/null
+++ b/holidays/locale/uk/LC_MESSAGES/XSWX.po
@@ -0,0 +1,40 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+#
+# SIX Swiss Exchange (SIX) holidays uk localization.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Holidays 0.101\n"
+"Report-Msgid-Bugs-To: l10n@vacanza.dev\n"
+"POT-Creation-Date: 2026-07-11 00:25+0000\n"
+"PO-Revision-Date: 2026-07-12 13:15+0000\n"
+"Last-Translator: Paresh Joshi \n"
+"Language-Team: Holidays Localization Team\n"
+"Language: uk\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Lingva 5.0.6\n"
+"X-Source-Language: de\n"
+
+#. Saint Berchtold's Day.
+msgid "Berchtoldstag"
+msgstr "День Святого Бертольда"
+
+#. Christmas Eve.
+msgid "Heiligabend"
+msgstr "Святвечір"
+
+#. New Year's Eve.
+msgid "Vortag vor Neujahr"
+msgstr "Переддень Нового року"
diff --git a/holidays/observed_holiday_base.py b/holidays/observed_holiday_base.py
index b878e104ed..0d74662694 100644
--- a/holidays/observed_holiday_base.py
+++ b/holidays/observed_holiday_base.py
@@ -115,6 +115,7 @@ def __add__(self, other):
SAT_SUN_TO_NEXT_WED = ObservedRule({SAT: +4, SUN: +3})
SAT_SUN_TO_NEXT_MON_TUE = ObservedRule({SAT: +2, SUN: +2})
SAT_SUN_TO_NEXT_WORKDAY = ObservedRule({SAT: +7, SUN: +7})
+SAT_SUN_TO_NONE = ObservedRule({SAT: None, SUN: None})
class ObservedHolidayBase(HolidayBase):
diff --git a/holidays/registry.py b/holidays/registry.py
index 77ead928a3..b8603a7357 100644
--- a/holidays/registry.py
+++ b/holidays/registry.py
@@ -300,6 +300,8 @@
"ny_stock_exchange": ("NewYorkStockExchange", "XNYS", "NYSE"),
"shanghai_stock_exchange": ("ShanghaiStockExchange", "XSHG", "SSE"),
"shenzhen_stock_exchange": ("ShenzhenStockExchange", "XSHE", "SZSE"),
+ "six_swiss_exchange": ("SIXSwissExchange", "XSWX", "SIX"),
+ "toronto_stock_exchange": ("TorontoStockExchange", "XTSE", "TSX"),
}
# A re-entrant lock. Once a thread has acquired a re-entrant lock,
diff --git a/pyproject.toml b/pyproject.toml
index 21d6a1581b..abd8f88070 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -68,7 +68,8 @@ build = [
tests = [
"coverage>=7.12,<8",
"numpy>=2,<2.3; python_version<'3.11'",
- "numpy>=2.3.5,<3; python_version>='3.11'",
+ "numpy>=2.3,<2.5; python_version=='3.11'",
+ "numpy>=2.5,<3; python_version>='3.12'",
"polib>=1.2,<2",
"pygments>=2.20,<3",
"pytest>=9.0.1,<10",
diff --git a/scripts/generate_site_assets.py b/scripts/generate_site_assets.py
index a2b6d910e7..3d9ddd4533 100644
--- a/scripts/generate_site_assets.py
+++ b/scripts/generate_site_assets.py
@@ -176,6 +176,7 @@
"fr_BI": "French (Burundi)",
"fr_BJ": "French (Benin)",
"fr_HT": "French (Haiti)",
+ "fr_MC": "French (Monaco)",
"fr_NE": "French (Niger)",
"fr_SN": "French (Senegal)",
# --- Italian Locales ---
diff --git a/snapshots/countries/CA_ON.json b/snapshots/countries/CA_ON.json
index 6775dc906a..64e2b059d8 100644
--- a/snapshots/countries/CA_ON.json
+++ b/snapshots/countries/CA_ON.json
@@ -2,6 +2,7 @@
"1950-01-01": "New Year's Day",
"1950-01-02": "New Year's Day (observed)",
"1950-04-07": "Good Friday",
+ "1950-04-10": "Easter Monday",
"1950-05-24": "Victoria Day",
"1950-07-01": "Dominion Day",
"1950-07-03": "Dominion Day (observed)",
@@ -14,6 +15,7 @@
"1950-12-26": "Boxing Day",
"1951-01-01": "New Year's Day",
"1951-03-23": "Good Friday",
+ "1951-03-26": "Easter Monday",
"1951-05-24": "Victoria Day",
"1951-07-01": "Dominion Day",
"1951-07-02": "Dominion Day (observed)",
@@ -26,6 +28,7 @@
"1951-12-26": "Boxing Day",
"1952-01-01": "New Year's Day",
"1952-04-11": "Good Friday",
+ "1952-04-14": "Easter Monday",
"1952-05-24": "Victoria Day",
"1952-07-01": "Dominion Day",
"1952-08-04": "Civic Holiday",
@@ -36,6 +39,7 @@
"1952-12-26": "Boxing Day",
"1953-01-01": "New Year's Day",
"1953-04-03": "Good Friday",
+ "1953-04-06": "Easter Monday",
"1953-05-18": "Victoria Day",
"1953-07-01": "Dominion Day",
"1953-08-03": "Civic Holiday",
@@ -47,6 +51,7 @@
"1953-12-28": "Boxing Day (observed)",
"1954-01-01": "New Year's Day",
"1954-04-16": "Good Friday",
+ "1954-04-19": "Easter Monday",
"1954-05-24": "Victoria Day",
"1954-07-01": "Dominion Day",
"1954-08-02": "Civic Holiday",
@@ -60,6 +65,7 @@
"1955-01-01": "New Year's Day",
"1955-01-03": "New Year's Day (observed)",
"1955-04-08": "Good Friday",
+ "1955-04-11": "Easter Monday",
"1955-05-23": "Victoria Day",
"1955-07-01": "Dominion Day",
"1955-08-01": "Civic Holiday",
@@ -72,6 +78,7 @@
"1956-01-01": "New Year's Day",
"1956-01-02": "New Year's Day (observed)",
"1956-03-30": "Good Friday",
+ "1956-04-02": "Easter Monday",
"1956-05-21": "Victoria Day",
"1956-07-01": "Dominion Day",
"1956-07-02": "Dominion Day (observed)",
@@ -84,6 +91,7 @@
"1956-12-26": "Boxing Day",
"1957-01-01": "New Year's Day",
"1957-04-19": "Good Friday",
+ "1957-04-22": "Easter Monday",
"1957-05-20": "Victoria Day",
"1957-07-01": "Dominion Day",
"1957-08-05": "Civic Holiday",
@@ -94,6 +102,7 @@
"1957-12-26": "Boxing Day",
"1958-01-01": "New Year's Day",
"1958-04-04": "Good Friday",
+ "1958-04-07": "Easter Monday",
"1958-05-19": "Victoria Day",
"1958-07-01": "Dominion Day",
"1958-08-04": "Civic Holiday",
@@ -104,6 +113,7 @@
"1958-12-26": "Boxing Day",
"1959-01-01": "New Year's Day",
"1959-03-27": "Good Friday",
+ "1959-03-30": "Easter Monday",
"1959-05-18": "Victoria Day",
"1959-07-01": "Dominion Day",
"1959-08-03": "Civic Holiday",
@@ -115,6 +125,7 @@
"1959-12-28": "Boxing Day (observed)",
"1960-01-01": "New Year's Day",
"1960-04-15": "Good Friday",
+ "1960-04-18": "Easter Monday",
"1960-05-23": "Victoria Day",
"1960-07-01": "Dominion Day",
"1960-08-01": "Civic Holiday",
@@ -127,6 +138,7 @@
"1961-01-01": "New Year's Day",
"1961-01-02": "New Year's Day (observed)",
"1961-03-31": "Good Friday",
+ "1961-04-03": "Easter Monday",
"1961-05-22": "Victoria Day",
"1961-07-01": "Dominion Day",
"1961-07-03": "Dominion Day (observed)",
@@ -139,6 +151,7 @@
"1961-12-26": "Boxing Day",
"1962-01-01": "New Year's Day",
"1962-04-20": "Good Friday",
+ "1962-04-23": "Easter Monday",
"1962-05-21": "Victoria Day",
"1962-07-01": "Dominion Day",
"1962-07-02": "Dominion Day (observed)",
@@ -151,6 +164,7 @@
"1962-12-26": "Boxing Day",
"1963-01-01": "New Year's Day",
"1963-04-12": "Good Friday",
+ "1963-04-15": "Easter Monday",
"1963-05-20": "Victoria Day",
"1963-07-01": "Dominion Day",
"1963-08-05": "Civic Holiday",
@@ -161,6 +175,7 @@
"1963-12-26": "Boxing Day",
"1964-01-01": "New Year's Day",
"1964-03-27": "Good Friday",
+ "1964-03-30": "Easter Monday",
"1964-05-18": "Victoria Day",
"1964-07-01": "Dominion Day",
"1964-08-03": "Civic Holiday",
@@ -172,6 +187,7 @@
"1964-12-28": "Boxing Day (observed)",
"1965-01-01": "New Year's Day",
"1965-04-16": "Good Friday",
+ "1965-04-19": "Easter Monday",
"1965-05-24": "Victoria Day",
"1965-07-01": "Dominion Day",
"1965-08-02": "Civic Holiday",
@@ -185,6 +201,7 @@
"1966-01-01": "New Year's Day",
"1966-01-03": "New Year's Day (observed)",
"1966-04-08": "Good Friday",
+ "1966-04-11": "Easter Monday",
"1966-05-23": "Victoria Day",
"1966-07-01": "Dominion Day",
"1966-08-01": "Civic Holiday",
@@ -197,6 +214,7 @@
"1967-01-01": "New Year's Day",
"1967-01-02": "New Year's Day (observed)",
"1967-03-24": "Good Friday",
+ "1967-03-27": "Easter Monday",
"1967-05-22": "Victoria Day",
"1967-07-01": "Dominion Day",
"1967-07-03": "Dominion Day (observed)",
@@ -209,6 +227,7 @@
"1967-12-26": "Boxing Day",
"1968-01-01": "New Year's Day",
"1968-04-12": "Good Friday",
+ "1968-04-15": "Easter Monday",
"1968-05-20": "Victoria Day",
"1968-07-01": "Dominion Day",
"1968-08-05": "Civic Holiday",
@@ -219,6 +238,7 @@
"1968-12-26": "Boxing Day",
"1969-01-01": "New Year's Day",
"1969-04-04": "Good Friday",
+ "1969-04-07": "Easter Monday",
"1969-05-19": "Victoria Day",
"1969-07-01": "Dominion Day",
"1969-08-04": "Civic Holiday",
@@ -229,6 +249,7 @@
"1969-12-26": "Boxing Day",
"1970-01-01": "New Year's Day",
"1970-03-27": "Good Friday",
+ "1970-03-30": "Easter Monday",
"1970-05-18": "Victoria Day",
"1970-07-01": "Dominion Day",
"1970-08-03": "Civic Holiday",
@@ -240,6 +261,7 @@
"1970-12-28": "Boxing Day (observed)",
"1971-01-01": "New Year's Day",
"1971-04-09": "Good Friday",
+ "1971-04-12": "Easter Monday",
"1971-05-24": "Victoria Day",
"1971-07-01": "Dominion Day",
"1971-08-02": "Civic Holiday",
@@ -253,6 +275,7 @@
"1972-01-01": "New Year's Day",
"1972-01-03": "New Year's Day (observed)",
"1972-03-31": "Good Friday",
+ "1972-04-03": "Easter Monday",
"1972-05-22": "Victoria Day",
"1972-07-01": "Dominion Day",
"1972-07-03": "Dominion Day (observed)",
@@ -265,6 +288,7 @@
"1972-12-26": "Boxing Day",
"1973-01-01": "New Year's Day",
"1973-04-20": "Good Friday",
+ "1973-04-23": "Easter Monday",
"1973-05-21": "Victoria Day",
"1973-07-01": "Dominion Day",
"1973-07-02": "Dominion Day (observed)",
@@ -277,6 +301,7 @@
"1973-12-26": "Boxing Day",
"1974-01-01": "New Year's Day",
"1974-04-12": "Good Friday",
+ "1974-04-15": "Easter Monday",
"1974-05-20": "Victoria Day",
"1974-07-01": "Dominion Day",
"1974-08-05": "Civic Holiday",
@@ -287,6 +312,7 @@
"1974-12-26": "Boxing Day",
"1975-01-01": "New Year's Day",
"1975-03-28": "Good Friday",
+ "1975-03-31": "Easter Monday",
"1975-05-19": "Victoria Day",
"1975-07-01": "Dominion Day",
"1975-08-04": "Civic Holiday",
@@ -297,6 +323,7 @@
"1975-12-26": "Boxing Day",
"1976-01-01": "New Year's Day",
"1976-04-16": "Good Friday",
+ "1976-04-19": "Easter Monday",
"1976-05-24": "Victoria Day",
"1976-07-01": "Dominion Day",
"1976-08-02": "Civic Holiday",
@@ -310,6 +337,7 @@
"1977-01-01": "New Year's Day",
"1977-01-03": "New Year's Day (observed)",
"1977-04-08": "Good Friday",
+ "1977-04-11": "Easter Monday",
"1977-05-23": "Victoria Day",
"1977-07-01": "Dominion Day",
"1977-08-01": "Civic Holiday",
@@ -322,6 +350,7 @@
"1978-01-01": "New Year's Day",
"1978-01-02": "New Year's Day (observed)",
"1978-03-24": "Good Friday",
+ "1978-03-27": "Easter Monday",
"1978-05-22": "Victoria Day",
"1978-07-01": "Dominion Day",
"1978-07-03": "Dominion Day (observed)",
@@ -334,6 +363,7 @@
"1978-12-26": "Boxing Day",
"1979-01-01": "New Year's Day",
"1979-04-13": "Good Friday",
+ "1979-04-16": "Easter Monday",
"1979-05-21": "Victoria Day",
"1979-07-01": "Dominion Day",
"1979-07-02": "Dominion Day (observed)",
@@ -346,6 +376,7 @@
"1979-12-26": "Boxing Day",
"1980-01-01": "New Year's Day",
"1980-04-04": "Good Friday",
+ "1980-04-07": "Easter Monday",
"1980-05-19": "Victoria Day",
"1980-07-01": "Dominion Day",
"1980-08-04": "Civic Holiday",
@@ -356,6 +387,7 @@
"1980-12-26": "Boxing Day",
"1981-01-01": "New Year's Day",
"1981-04-17": "Good Friday",
+ "1981-04-20": "Easter Monday",
"1981-05-18": "Victoria Day",
"1981-07-01": "Dominion Day",
"1981-08-03": "Civic Holiday",
@@ -367,6 +399,7 @@
"1981-12-28": "Boxing Day (observed)",
"1982-01-01": "New Year's Day",
"1982-04-09": "Good Friday",
+ "1982-04-12": "Easter Monday",
"1982-05-24": "Victoria Day",
"1982-07-01": "Dominion Day",
"1982-08-02": "Civic Holiday",
@@ -380,6 +413,7 @@
"1983-01-01": "New Year's Day",
"1983-01-03": "New Year's Day (observed)",
"1983-04-01": "Good Friday",
+ "1983-04-04": "Easter Monday",
"1983-05-23": "Victoria Day",
"1983-07-01": "Canada Day",
"1983-08-01": "Civic Holiday",
@@ -392,6 +426,7 @@
"1984-01-01": "New Year's Day",
"1984-01-02": "New Year's Day (observed)",
"1984-04-20": "Good Friday",
+ "1984-04-23": "Easter Monday",
"1984-05-21": "Victoria Day",
"1984-07-01": "Canada Day",
"1984-07-02": "Canada Day (observed)",
@@ -404,6 +439,7 @@
"1984-12-26": "Boxing Day",
"1985-01-01": "New Year's Day",
"1985-04-05": "Good Friday",
+ "1985-04-08": "Easter Monday",
"1985-05-20": "Victoria Day",
"1985-07-01": "Canada Day",
"1985-08-05": "Civic Holiday",
@@ -414,6 +450,7 @@
"1985-12-26": "Boxing Day",
"1986-01-01": "New Year's Day",
"1986-03-28": "Good Friday",
+ "1986-03-31": "Easter Monday",
"1986-05-19": "Victoria Day",
"1986-07-01": "Canada Day",
"1986-08-04": "Civic Holiday",
@@ -424,6 +461,7 @@
"1986-12-26": "Boxing Day",
"1987-01-01": "New Year's Day",
"1987-04-17": "Good Friday",
+ "1987-04-20": "Easter Monday",
"1987-05-18": "Victoria Day",
"1987-07-01": "Canada Day",
"1987-08-03": "Civic Holiday",
@@ -435,6 +473,7 @@
"1987-12-28": "Boxing Day (observed)",
"1988-01-01": "New Year's Day",
"1988-04-01": "Good Friday",
+ "1988-04-04": "Easter Monday",
"1988-05-23": "Victoria Day",
"1988-07-01": "Canada Day",
"1988-08-01": "Civic Holiday",
@@ -447,6 +486,7 @@
"1989-01-01": "New Year's Day",
"1989-01-02": "New Year's Day (observed)",
"1989-03-24": "Good Friday",
+ "1989-03-27": "Easter Monday",
"1989-05-22": "Victoria Day",
"1989-07-01": "Canada Day",
"1989-07-03": "Canada Day (observed)",
@@ -459,6 +499,7 @@
"1989-12-26": "Boxing Day",
"1990-01-01": "New Year's Day",
"1990-04-13": "Good Friday",
+ "1990-04-16": "Easter Monday",
"1990-05-21": "Victoria Day",
"1990-07-01": "Canada Day",
"1990-07-02": "Canada Day (observed)",
@@ -471,6 +512,7 @@
"1990-12-26": "Boxing Day",
"1991-01-01": "New Year's Day",
"1991-03-29": "Good Friday",
+ "1991-04-01": "Easter Monday",
"1991-05-20": "Victoria Day",
"1991-07-01": "Canada Day",
"1991-08-05": "Civic Holiday",
@@ -481,6 +523,7 @@
"1991-12-26": "Boxing Day",
"1992-01-01": "New Year's Day",
"1992-04-17": "Good Friday",
+ "1992-04-20": "Easter Monday",
"1992-05-18": "Victoria Day",
"1992-07-01": "Canada Day",
"1992-08-03": "Civic Holiday",
@@ -492,6 +535,7 @@
"1992-12-28": "Boxing Day (observed)",
"1993-01-01": "New Year's Day",
"1993-04-09": "Good Friday",
+ "1993-04-12": "Easter Monday",
"1993-05-24": "Victoria Day",
"1993-07-01": "Canada Day",
"1993-08-02": "Civic Holiday",
@@ -505,6 +549,7 @@
"1994-01-01": "New Year's Day",
"1994-01-03": "New Year's Day (observed)",
"1994-04-01": "Good Friday",
+ "1994-04-04": "Easter Monday",
"1994-05-23": "Victoria Day",
"1994-07-01": "Canada Day",
"1994-08-01": "Civic Holiday",
@@ -517,6 +562,7 @@
"1995-01-01": "New Year's Day",
"1995-01-02": "New Year's Day (observed)",
"1995-04-14": "Good Friday",
+ "1995-04-17": "Easter Monday",
"1995-05-22": "Victoria Day",
"1995-07-01": "Canada Day",
"1995-07-03": "Canada Day (observed)",
@@ -529,6 +575,7 @@
"1995-12-26": "Boxing Day",
"1996-01-01": "New Year's Day",
"1996-04-05": "Good Friday",
+ "1996-04-08": "Easter Monday",
"1996-05-20": "Victoria Day",
"1996-07-01": "Canada Day",
"1996-08-05": "Civic Holiday",
@@ -539,6 +586,7 @@
"1996-12-26": "Boxing Day",
"1997-01-01": "New Year's Day",
"1997-03-28": "Good Friday",
+ "1997-03-31": "Easter Monday",
"1997-05-19": "Victoria Day",
"1997-07-01": "Canada Day",
"1997-08-04": "Civic Holiday",
@@ -549,6 +597,7 @@
"1997-12-26": "Boxing Day",
"1998-01-01": "New Year's Day",
"1998-04-10": "Good Friday",
+ "1998-04-13": "Easter Monday",
"1998-05-18": "Victoria Day",
"1998-07-01": "Canada Day",
"1998-08-03": "Civic Holiday",
@@ -560,6 +609,7 @@
"1998-12-28": "Boxing Day (observed)",
"1999-01-01": "New Year's Day",
"1999-04-02": "Good Friday",
+ "1999-04-05": "Easter Monday",
"1999-05-24": "Victoria Day",
"1999-07-01": "Canada Day",
"1999-08-02": "Civic Holiday",
@@ -573,6 +623,7 @@
"2000-01-01": "New Year's Day",
"2000-01-03": "New Year's Day (observed)",
"2000-04-21": "Good Friday",
+ "2000-04-24": "Easter Monday",
"2000-05-22": "Victoria Day",
"2000-07-01": "Canada Day",
"2000-07-03": "Canada Day (observed)",
@@ -585,6 +636,7 @@
"2000-12-26": "Boxing Day",
"2001-01-01": "New Year's Day",
"2001-04-13": "Good Friday",
+ "2001-04-16": "Easter Monday",
"2001-05-21": "Victoria Day",
"2001-07-01": "Canada Day",
"2001-07-02": "Canada Day (observed)",
@@ -597,6 +649,7 @@
"2001-12-26": "Boxing Day",
"2002-01-01": "New Year's Day",
"2002-03-29": "Good Friday",
+ "2002-04-01": "Easter Monday",
"2002-05-20": "Victoria Day",
"2002-07-01": "Canada Day",
"2002-08-05": "Civic Holiday",
@@ -607,6 +660,7 @@
"2002-12-26": "Boxing Day",
"2003-01-01": "New Year's Day",
"2003-04-18": "Good Friday",
+ "2003-04-21": "Easter Monday",
"2003-05-19": "Victoria Day",
"2003-07-01": "Canada Day",
"2003-08-04": "Civic Holiday",
@@ -617,6 +671,7 @@
"2003-12-26": "Boxing Day",
"2004-01-01": "New Year's Day",
"2004-04-09": "Good Friday",
+ "2004-04-12": "Easter Monday",
"2004-05-24": "Victoria Day",
"2004-07-01": "Canada Day",
"2004-08-02": "Civic Holiday",
@@ -630,6 +685,7 @@
"2005-01-01": "New Year's Day",
"2005-01-03": "New Year's Day (observed)",
"2005-03-25": "Good Friday",
+ "2005-03-28": "Easter Monday",
"2005-05-23": "Victoria Day",
"2005-07-01": "Canada Day",
"2005-08-01": "Civic Holiday",
@@ -642,6 +698,7 @@
"2006-01-01": "New Year's Day",
"2006-01-02": "New Year's Day (observed)",
"2006-04-14": "Good Friday",
+ "2006-04-17": "Easter Monday",
"2006-05-22": "Victoria Day",
"2006-07-01": "Canada Day",
"2006-07-03": "Canada Day (observed)",
@@ -654,6 +711,7 @@
"2006-12-26": "Boxing Day",
"2007-01-01": "New Year's Day",
"2007-04-06": "Good Friday",
+ "2007-04-09": "Easter Monday",
"2007-05-21": "Victoria Day",
"2007-07-01": "Canada Day",
"2007-07-02": "Canada Day (observed)",
@@ -667,6 +725,7 @@
"2008-01-01": "New Year's Day",
"2008-02-18": "Family Day",
"2008-03-21": "Good Friday",
+ "2008-03-24": "Easter Monday",
"2008-05-19": "Victoria Day",
"2008-07-01": "Canada Day",
"2008-08-04": "Civic Holiday",
@@ -678,6 +737,7 @@
"2009-01-01": "New Year's Day",
"2009-02-16": "Family Day",
"2009-04-10": "Good Friday",
+ "2009-04-13": "Easter Monday",
"2009-05-18": "Victoria Day",
"2009-07-01": "Canada Day",
"2009-08-03": "Civic Holiday",
@@ -690,6 +750,7 @@
"2010-01-01": "New Year's Day",
"2010-02-15": "Family Day",
"2010-04-02": "Good Friday",
+ "2010-04-05": "Easter Monday",
"2010-05-24": "Victoria Day",
"2010-07-01": "Canada Day",
"2010-08-02": "Civic Holiday",
@@ -704,6 +765,7 @@
"2011-01-03": "New Year's Day (observed)",
"2011-02-21": "Family Day",
"2011-04-22": "Good Friday",
+ "2011-04-25": "Easter Monday",
"2011-05-23": "Victoria Day",
"2011-07-01": "Canada Day",
"2011-08-01": "Civic Holiday",
@@ -717,6 +779,7 @@
"2012-01-02": "New Year's Day (observed)",
"2012-02-20": "Family Day",
"2012-04-06": "Good Friday",
+ "2012-04-09": "Easter Monday",
"2012-05-21": "Victoria Day",
"2012-07-01": "Canada Day",
"2012-07-02": "Canada Day (observed)",
@@ -730,6 +793,7 @@
"2013-01-01": "New Year's Day",
"2013-02-18": "Family Day",
"2013-03-29": "Good Friday",
+ "2013-04-01": "Easter Monday",
"2013-05-20": "Victoria Day",
"2013-07-01": "Canada Day",
"2013-08-05": "Civic Holiday",
@@ -741,6 +805,7 @@
"2014-01-01": "New Year's Day",
"2014-02-17": "Family Day",
"2014-04-18": "Good Friday",
+ "2014-04-21": "Easter Monday",
"2014-05-19": "Victoria Day",
"2014-07-01": "Canada Day",
"2014-08-04": "Civic Holiday",
@@ -752,6 +817,7 @@
"2015-01-01": "New Year's Day",
"2015-02-16": "Family Day",
"2015-04-03": "Good Friday",
+ "2015-04-06": "Easter Monday",
"2015-05-18": "Victoria Day",
"2015-07-01": "Canada Day",
"2015-08-03": "Civic Holiday",
@@ -764,6 +830,7 @@
"2016-01-01": "New Year's Day",
"2016-02-15": "Family Day",
"2016-03-25": "Good Friday",
+ "2016-03-28": "Easter Monday",
"2016-05-23": "Victoria Day",
"2016-07-01": "Canada Day",
"2016-08-01": "Civic Holiday",
@@ -777,6 +844,7 @@
"2017-01-02": "New Year's Day (observed)",
"2017-02-20": "Family Day",
"2017-04-14": "Good Friday",
+ "2017-04-17": "Easter Monday",
"2017-05-22": "Victoria Day",
"2017-07-01": "Canada Day",
"2017-07-03": "Canada Day (observed)",
@@ -790,6 +858,7 @@
"2018-01-01": "New Year's Day",
"2018-02-19": "Family Day",
"2018-03-30": "Good Friday",
+ "2018-04-02": "Easter Monday",
"2018-05-21": "Victoria Day",
"2018-07-01": "Canada Day",
"2018-07-02": "Canada Day (observed)",
@@ -803,6 +872,7 @@
"2019-01-01": "New Year's Day",
"2019-02-18": "Family Day",
"2019-04-19": "Good Friday",
+ "2019-04-22": "Easter Monday",
"2019-05-20": "Victoria Day",
"2019-07-01": "Canada Day",
"2019-08-05": "Civic Holiday",
@@ -814,6 +884,7 @@
"2020-01-01": "New Year's Day",
"2020-02-17": "Family Day",
"2020-04-10": "Good Friday",
+ "2020-04-13": "Easter Monday",
"2020-05-18": "Victoria Day",
"2020-07-01": "Canada Day",
"2020-08-03": "Civic Holiday",
@@ -826,6 +897,7 @@
"2021-01-01": "New Year's Day",
"2021-02-15": "Family Day",
"2021-04-02": "Good Friday",
+ "2021-04-05": "Easter Monday",
"2021-05-24": "Victoria Day",
"2021-07-01": "Canada Day",
"2021-08-02": "Civic Holiday",
@@ -841,6 +913,7 @@
"2022-01-03": "New Year's Day (observed)",
"2022-02-21": "Family Day",
"2022-04-15": "Good Friday",
+ "2022-04-18": "Easter Monday",
"2022-05-23": "Victoria Day",
"2022-07-01": "Canada Day",
"2022-08-01": "Civic Holiday",
@@ -855,6 +928,7 @@
"2023-01-02": "New Year's Day (observed)",
"2023-02-20": "Family Day",
"2023-04-07": "Good Friday",
+ "2023-04-10": "Easter Monday",
"2023-05-22": "Victoria Day",
"2023-07-01": "Canada Day",
"2023-07-03": "Canada Day (observed)",
@@ -870,6 +944,7 @@
"2024-01-01": "New Year's Day",
"2024-02-19": "Family Day",
"2024-03-29": "Good Friday",
+ "2024-04-01": "Easter Monday",
"2024-05-20": "Victoria Day",
"2024-07-01": "Canada Day",
"2024-08-05": "Civic Holiday",
@@ -882,6 +957,7 @@
"2025-01-01": "New Year's Day",
"2025-02-17": "Family Day",
"2025-04-18": "Good Friday",
+ "2025-04-21": "Easter Monday",
"2025-05-19": "Victoria Day",
"2025-07-01": "Canada Day",
"2025-08-04": "Civic Holiday",
@@ -894,6 +970,7 @@
"2026-01-01": "New Year's Day",
"2026-02-16": "Family Day",
"2026-04-03": "Good Friday",
+ "2026-04-06": "Easter Monday",
"2026-05-18": "Victoria Day",
"2026-07-01": "Canada Day",
"2026-08-03": "Civic Holiday",
@@ -907,6 +984,7 @@
"2027-01-01": "New Year's Day",
"2027-02-15": "Family Day",
"2027-03-26": "Good Friday",
+ "2027-03-29": "Easter Monday",
"2027-05-24": "Victoria Day",
"2027-07-01": "Canada Day",
"2027-08-02": "Civic Holiday",
@@ -922,6 +1000,7 @@
"2028-01-03": "New Year's Day (observed)",
"2028-02-21": "Family Day",
"2028-04-14": "Good Friday",
+ "2028-04-17": "Easter Monday",
"2028-05-22": "Victoria Day",
"2028-07-01": "Canada Day",
"2028-07-03": "Canada Day (observed)",
@@ -937,6 +1016,7 @@
"2029-01-01": "New Year's Day",
"2029-02-19": "Family Day",
"2029-03-30": "Good Friday",
+ "2029-04-02": "Easter Monday",
"2029-05-21": "Victoria Day",
"2029-07-01": "Canada Day",
"2029-07-02": "Canada Day (observed)",
@@ -952,6 +1032,7 @@
"2030-01-01": "New Year's Day",
"2030-02-18": "Family Day",
"2030-04-19": "Good Friday",
+ "2030-04-22": "Easter Monday",
"2030-05-20": "Victoria Day",
"2030-07-01": "Canada Day",
"2030-08-05": "Civic Holiday",
@@ -964,6 +1045,7 @@
"2031-01-01": "New Year's Day",
"2031-02-17": "Family Day",
"2031-04-11": "Good Friday",
+ "2031-04-14": "Easter Monday",
"2031-05-19": "Victoria Day",
"2031-07-01": "Canada Day",
"2031-08-04": "Civic Holiday",
@@ -976,6 +1058,7 @@
"2032-01-01": "New Year's Day",
"2032-02-16": "Family Day",
"2032-03-26": "Good Friday",
+ "2032-03-29": "Easter Monday",
"2032-05-24": "Victoria Day",
"2032-07-01": "Canada Day",
"2032-08-02": "Civic Holiday",
@@ -991,6 +1074,7 @@
"2033-01-03": "New Year's Day (observed)",
"2033-02-21": "Family Day",
"2033-04-15": "Good Friday",
+ "2033-04-18": "Easter Monday",
"2033-05-23": "Victoria Day",
"2033-07-01": "Canada Day",
"2033-08-01": "Civic Holiday",
@@ -1005,6 +1089,7 @@
"2034-01-02": "New Year's Day (observed)",
"2034-02-20": "Family Day",
"2034-04-07": "Good Friday",
+ "2034-04-10": "Easter Monday",
"2034-05-22": "Victoria Day",
"2034-07-01": "Canada Day",
"2034-07-03": "Canada Day (observed)",
@@ -1020,6 +1105,7 @@
"2035-01-01": "New Year's Day",
"2035-02-19": "Family Day",
"2035-03-23": "Good Friday",
+ "2035-03-26": "Easter Monday",
"2035-05-21": "Victoria Day",
"2035-07-01": "Canada Day",
"2035-07-02": "Canada Day (observed)",
@@ -1035,6 +1121,7 @@
"2036-01-01": "New Year's Day",
"2036-02-18": "Family Day",
"2036-04-11": "Good Friday",
+ "2036-04-14": "Easter Monday",
"2036-05-19": "Victoria Day",
"2036-07-01": "Canada Day",
"2036-08-04": "Civic Holiday",
@@ -1047,6 +1134,7 @@
"2037-01-01": "New Year's Day",
"2037-02-16": "Family Day",
"2037-04-03": "Good Friday",
+ "2037-04-06": "Easter Monday",
"2037-05-18": "Victoria Day",
"2037-07-01": "Canada Day",
"2037-08-03": "Civic Holiday",
@@ -1060,6 +1148,7 @@
"2038-01-01": "New Year's Day",
"2038-02-15": "Family Day",
"2038-04-23": "Good Friday",
+ "2038-04-26": "Easter Monday",
"2038-05-24": "Victoria Day",
"2038-07-01": "Canada Day",
"2038-08-02": "Civic Holiday",
@@ -1075,6 +1164,7 @@
"2039-01-03": "New Year's Day (observed)",
"2039-02-21": "Family Day",
"2039-04-08": "Good Friday",
+ "2039-04-11": "Easter Monday",
"2039-05-23": "Victoria Day",
"2039-07-01": "Canada Day",
"2039-08-01": "Civic Holiday",
@@ -1089,6 +1179,7 @@
"2040-01-02": "New Year's Day (observed)",
"2040-02-20": "Family Day",
"2040-03-30": "Good Friday",
+ "2040-04-02": "Easter Monday",
"2040-05-21": "Victoria Day",
"2040-07-01": "Canada Day",
"2040-07-02": "Canada Day (observed)",
@@ -1104,6 +1195,7 @@
"2041-01-01": "New Year's Day",
"2041-02-18": "Family Day",
"2041-04-19": "Good Friday",
+ "2041-04-22": "Easter Monday",
"2041-05-20": "Victoria Day",
"2041-07-01": "Canada Day",
"2041-08-05": "Civic Holiday",
@@ -1116,6 +1208,7 @@
"2042-01-01": "New Year's Day",
"2042-02-17": "Family Day",
"2042-04-04": "Good Friday",
+ "2042-04-07": "Easter Monday",
"2042-05-19": "Victoria Day",
"2042-07-01": "Canada Day",
"2042-08-04": "Civic Holiday",
@@ -1128,6 +1221,7 @@
"2043-01-01": "New Year's Day",
"2043-02-16": "Family Day",
"2043-03-27": "Good Friday",
+ "2043-03-30": "Easter Monday",
"2043-05-18": "Victoria Day",
"2043-07-01": "Canada Day",
"2043-08-03": "Civic Holiday",
@@ -1141,6 +1235,7 @@
"2044-01-01": "New Year's Day",
"2044-02-15": "Family Day",
"2044-04-15": "Good Friday",
+ "2044-04-18": "Easter Monday",
"2044-05-23": "Victoria Day",
"2044-07-01": "Canada Day",
"2044-08-01": "Civic Holiday",
@@ -1155,6 +1250,7 @@
"2045-01-02": "New Year's Day (observed)",
"2045-02-20": "Family Day",
"2045-04-07": "Good Friday",
+ "2045-04-10": "Easter Monday",
"2045-05-22": "Victoria Day",
"2045-07-01": "Canada Day",
"2045-07-03": "Canada Day (observed)",
@@ -1170,6 +1266,7 @@
"2046-01-01": "New Year's Day",
"2046-02-19": "Family Day",
"2046-03-23": "Good Friday",
+ "2046-03-26": "Easter Monday",
"2046-05-21": "Victoria Day",
"2046-07-01": "Canada Day",
"2046-07-02": "Canada Day (observed)",
@@ -1185,6 +1282,7 @@
"2047-01-01": "New Year's Day",
"2047-02-18": "Family Day",
"2047-04-12": "Good Friday",
+ "2047-04-15": "Easter Monday",
"2047-05-20": "Victoria Day",
"2047-07-01": "Canada Day",
"2047-08-05": "Civic Holiday",
@@ -1197,6 +1295,7 @@
"2048-01-01": "New Year's Day",
"2048-02-17": "Family Day",
"2048-04-03": "Good Friday",
+ "2048-04-06": "Easter Monday",
"2048-05-18": "Victoria Day",
"2048-07-01": "Canada Day",
"2048-08-03": "Civic Holiday",
@@ -1210,6 +1309,7 @@
"2049-01-01": "New Year's Day",
"2049-02-15": "Family Day",
"2049-04-16": "Good Friday",
+ "2049-04-19": "Easter Monday",
"2049-05-24": "Victoria Day",
"2049-07-01": "Canada Day",
"2049-08-02": "Civic Holiday",
@@ -1225,6 +1325,7 @@
"2050-01-03": "New Year's Day (observed)",
"2050-02-21": "Family Day",
"2050-04-08": "Good Friday",
+ "2050-04-11": "Easter Monday",
"2050-05-23": "Victoria Day",
"2050-07-01": "Canada Day",
"2050-08-01": "Civic Holiday",
diff --git a/snapshots/countries/KZ_COMMON.json b/snapshots/countries/KZ_COMMON.json
index 0ec79a48f8..5b034a6049 100644
--- a/snapshots/countries/KZ_COMMON.json
+++ b/snapshots/countries/KZ_COMMON.json
@@ -564,8 +564,6 @@
"2026-05-11": "Victory Day (observed)",
"2026-05-27": "Eid al-Adha (estimated)",
"2026-07-06": "Capital Day",
- "2026-08-30": "Constitution Day",
- "2026-08-31": "Constitution Day (observed)",
"2026-10-25": "Republic Day",
"2026-10-26": "Republic Day (observed)",
"2026-12-16": "Independence Day",
@@ -574,6 +572,7 @@
"2027-01-04": "New Year's Day (observed)",
"2027-01-07": "Orthodox Christmas",
"2027-03-08": "International Women's Day",
+ "2027-03-15": "Constitution Day",
"2027-03-21": "Nowruz Holiday",
"2027-03-22": "Nowruz Holiday",
"2027-03-23": "Nowruz Holiday",
@@ -585,7 +584,6 @@
"2027-05-10": "Victory Day (observed)",
"2027-05-16": "Eid al-Adha (estimated)",
"2027-07-06": "Capital Day",
- "2027-08-30": "Constitution Day",
"2027-10-25": "Republic Day",
"2027-12-16": "Independence Day",
"2028-01-01": "New Year's Day",
@@ -594,6 +592,7 @@
"2028-01-04": "New Year's Day (observed)",
"2028-01-07": "Orthodox Christmas",
"2028-03-08": "International Women's Day",
+ "2028-03-15": "Constitution Day",
"2028-03-21": "Nowruz Holiday",
"2028-03-22": "Nowruz Holiday",
"2028-03-23": "Nowruz Holiday",
@@ -603,7 +602,6 @@
"2028-05-08": "Defender of the Fatherland Day (observed)",
"2028-05-09": "Victory Day",
"2028-07-06": "Capital Day",
- "2028-08-30": "Constitution Day",
"2028-10-25": "Republic Day",
"2028-12-16": "Independence Day",
"2028-12-18": "Independence Day (observed)",
@@ -611,6 +609,7 @@
"2029-01-02": "New Year's Day",
"2029-01-07": "Orthodox Christmas",
"2029-03-08": "International Women's Day",
+ "2029-03-15": "Constitution Day",
"2029-03-21": "Nowruz Holiday",
"2029-03-22": "Nowruz Holiday",
"2029-03-23": "Nowruz Holiday",
@@ -619,7 +618,6 @@
"2029-05-07": "Defender of the Fatherland Day",
"2029-05-09": "Victory Day",
"2029-07-06": "Capital Day",
- "2029-08-30": "Constitution Day",
"2029-10-25": "Republic Day",
"2029-12-16": "Independence Day",
"2029-12-17": "Independence Day (observed)",
@@ -627,6 +625,7 @@
"2030-01-02": "New Year's Day",
"2030-01-07": "Orthodox Christmas",
"2030-03-08": "International Women's Day",
+ "2030-03-15": "Constitution Day",
"2030-03-21": "Nowruz Holiday",
"2030-03-22": "Nowruz Holiday",
"2030-03-23": "Nowruz Holiday",
@@ -637,7 +636,6 @@
"2030-05-09": "Victory Day",
"2030-07-06": "Capital Day",
"2030-07-08": "Capital Day (observed)",
- "2030-08-30": "Constitution Day",
"2030-10-25": "Republic Day",
"2030-12-16": "Independence Day",
"2031-01-01": "New Year's Day",
@@ -645,6 +643,8 @@
"2031-01-07": "Orthodox Christmas",
"2031-03-08": "International Women's Day",
"2031-03-10": "International Women's Day (observed)",
+ "2031-03-15": "Constitution Day",
+ "2031-03-17": "Constitution Day (observed)",
"2031-03-21": "Nowruz Holiday",
"2031-03-22": "Nowruz Holiday",
"2031-03-23": "Nowruz Holiday",
@@ -656,8 +656,6 @@
"2031-05-09": "Victory Day",
"2031-07-06": "Capital Day",
"2031-07-07": "Capital Day (observed)",
- "2031-08-30": "Constitution Day",
- "2031-09-01": "Constitution Day (observed)",
"2031-10-25": "Republic Day",
"2031-10-27": "Republic Day (observed)",
"2031-12-16": "Independence Day",
@@ -665,6 +663,7 @@
"2032-01-02": "New Year's Day",
"2032-01-07": "Orthodox Christmas",
"2032-03-08": "International Women's Day",
+ "2032-03-15": "Constitution Day",
"2032-03-21": "Nowruz Holiday",
"2032-03-22": "Eid al-Adha (estimated); Nowruz Holiday",
"2032-03-23": "Nowruz Holiday",
@@ -675,7 +674,6 @@
"2032-05-09": "Victory Day",
"2032-05-10": "Victory Day (observed)",
"2032-07-06": "Capital Day",
- "2032-08-30": "Constitution Day",
"2032-10-25": "Republic Day",
"2032-12-16": "Independence Day",
"2033-01-01": "New Year's Day",
@@ -685,6 +683,7 @@
"2033-01-07": "Orthodox Christmas",
"2033-03-08": "International Women's Day",
"2033-03-11": "Eid al-Adha (estimated)",
+ "2033-03-15": "Constitution Day",
"2033-03-21": "Nowruz Holiday",
"2033-03-22": "Nowruz Holiday",
"2033-03-23": "Nowruz Holiday",
@@ -694,7 +693,6 @@
"2033-05-09": "Victory Day",
"2033-05-10": "Defender of the Fatherland Day (observed)",
"2033-07-06": "Capital Day",
- "2033-08-30": "Constitution Day",
"2033-10-25": "Republic Day",
"2033-12-16": "Independence Day",
"2034-01-01": "New Year's Day",
@@ -703,6 +701,7 @@
"2034-01-07": "Orthodox Christmas",
"2034-03-01": "Eid al-Adha (estimated)",
"2034-03-08": "International Women's Day",
+ "2034-03-15": "Constitution Day",
"2034-03-21": "Nowruz Holiday",
"2034-03-22": "Nowruz Holiday",
"2034-03-23": "Nowruz Holiday",
@@ -711,7 +710,6 @@
"2034-05-08": "Defender of the Fatherland Day (observed)",
"2034-05-09": "Victory Day",
"2034-07-06": "Capital Day",
- "2034-08-30": "Constitution Day",
"2034-10-25": "Republic Day",
"2034-12-16": "Independence Day",
"2034-12-18": "Independence Day (observed)",
@@ -720,6 +718,7 @@
"2035-01-07": "Orthodox Christmas",
"2035-02-18": "Eid al-Adha (estimated)",
"2035-03-08": "International Women's Day",
+ "2035-03-15": "Constitution Day",
"2035-03-21": "Nowruz Holiday",
"2035-03-22": "Nowruz Holiday",
"2035-03-23": "Nowruz Holiday",
@@ -727,7 +726,6 @@
"2035-05-07": "Defender of the Fatherland Day",
"2035-05-09": "Victory Day",
"2035-07-06": "Capital Day",
- "2035-08-30": "Constitution Day",
"2035-10-25": "Republic Day",
"2035-12-16": "Independence Day",
"2035-12-17": "Independence Day (observed)",
@@ -737,6 +735,8 @@
"2036-02-07": "Eid al-Adha (estimated)",
"2036-03-08": "International Women's Day",
"2036-03-10": "International Women's Day (observed)",
+ "2036-03-15": "Constitution Day",
+ "2036-03-17": "Constitution Day (observed)",
"2036-03-21": "Nowruz Holiday",
"2036-03-22": "Nowruz Holiday",
"2036-03-23": "Nowruz Holiday",
@@ -747,8 +747,6 @@
"2036-05-09": "Victory Day",
"2036-07-06": "Capital Day",
"2036-07-07": "Capital Day (observed)",
- "2036-08-30": "Constitution Day",
- "2036-09-01": "Constitution Day (observed)",
"2036-10-25": "Republic Day",
"2036-10-27": "Republic Day (observed)",
"2036-12-16": "Independence Day",
@@ -758,6 +756,8 @@
"2037-01-26": "Eid al-Adha (estimated)",
"2037-03-08": "International Women's Day",
"2037-03-09": "International Women's Day (observed)",
+ "2037-03-15": "Constitution Day",
+ "2037-03-16": "Constitution Day (observed)",
"2037-03-21": "Nowruz Holiday",
"2037-03-22": "Nowruz Holiday",
"2037-03-23": "Nowruz Holiday",
@@ -768,8 +768,6 @@
"2037-05-09": "Victory Day",
"2037-05-11": "Victory Day (observed)",
"2037-07-06": "Capital Day",
- "2037-08-30": "Constitution Day",
- "2037-08-31": "Constitution Day (observed)",
"2037-10-25": "Republic Day",
"2037-10-26": "Republic Day (observed)",
"2037-12-16": "Independence Day",
@@ -779,6 +777,7 @@
"2038-01-07": "Orthodox Christmas",
"2038-01-16": "Eid al-Adha (estimated)",
"2038-03-08": "International Women's Day",
+ "2038-03-15": "Constitution Day",
"2038-03-21": "Nowruz Holiday",
"2038-03-22": "Nowruz Holiday",
"2038-03-23": "Nowruz Holiday",
@@ -789,7 +788,6 @@
"2038-05-09": "Victory Day",
"2038-05-10": "Victory Day (observed)",
"2038-07-06": "Capital Day",
- "2038-08-30": "Constitution Day",
"2038-10-25": "Republic Day",
"2038-12-16": "Independence Day",
"2039-01-01": "New Year's Day",
@@ -799,6 +797,7 @@
"2039-01-05": "Eid al-Adha (estimated)",
"2039-01-07": "Orthodox Christmas",
"2039-03-08": "International Women's Day",
+ "2039-03-15": "Constitution Day",
"2039-03-21": "Nowruz Holiday",
"2039-03-22": "Nowruz Holiday",
"2039-03-23": "Nowruz Holiday",
@@ -808,7 +807,6 @@
"2039-05-09": "Victory Day",
"2039-05-10": "Defender of the Fatherland Day (observed)",
"2039-07-06": "Capital Day",
- "2039-08-30": "Constitution Day",
"2039-10-25": "Republic Day",
"2039-12-16": "Independence Day",
"2039-12-26": "Eid al-Adha (estimated)",
@@ -817,6 +815,7 @@
"2040-01-03": "New Year's Day (observed)",
"2040-01-07": "Orthodox Christmas",
"2040-03-08": "International Women's Day",
+ "2040-03-15": "Constitution Day",
"2040-03-21": "Nowruz Holiday",
"2040-03-22": "Nowruz Holiday",
"2040-03-23": "Nowruz Holiday",
@@ -824,7 +823,6 @@
"2040-05-07": "Defender of the Fatherland Day",
"2040-05-09": "Victory Day",
"2040-07-06": "Capital Day",
- "2040-08-30": "Constitution Day",
"2040-10-25": "Republic Day",
"2040-12-14": "Eid al-Adha (estimated)",
"2040-12-16": "Independence Day",
@@ -833,6 +831,7 @@
"2041-01-02": "New Year's Day",
"2041-01-07": "Orthodox Christmas",
"2041-03-08": "International Women's Day",
+ "2041-03-15": "Constitution Day",
"2041-03-21": "Nowruz Holiday",
"2041-03-22": "Nowruz Holiday",
"2041-03-23": "Nowruz Holiday",
@@ -842,7 +841,6 @@
"2041-05-09": "Victory Day",
"2041-07-06": "Capital Day",
"2041-07-08": "Capital Day (observed)",
- "2041-08-30": "Constitution Day",
"2041-10-25": "Republic Day",
"2041-12-04": "Eid al-Adha (estimated)",
"2041-12-16": "Independence Day",
@@ -851,6 +849,8 @@
"2042-01-07": "Orthodox Christmas",
"2042-03-08": "International Women's Day",
"2042-03-10": "International Women's Day (observed)",
+ "2042-03-15": "Constitution Day",
+ "2042-03-17": "Constitution Day (observed)",
"2042-03-21": "Nowruz Holiday",
"2042-03-22": "Nowruz Holiday",
"2042-03-23": "Nowruz Holiday",
@@ -861,8 +861,6 @@
"2042-05-09": "Victory Day",
"2042-07-06": "Capital Day",
"2042-07-07": "Capital Day (observed)",
- "2042-08-30": "Constitution Day",
- "2042-09-01": "Constitution Day (observed)",
"2042-10-25": "Republic Day",
"2042-10-27": "Republic Day (observed)",
"2042-11-23": "Eid al-Adha (estimated)",
@@ -872,6 +870,8 @@
"2043-01-07": "Orthodox Christmas",
"2043-03-08": "International Women's Day",
"2043-03-09": "International Women's Day (observed)",
+ "2043-03-15": "Constitution Day",
+ "2043-03-16": "Constitution Day (observed)",
"2043-03-21": "Nowruz Holiday",
"2043-03-22": "Nowruz Holiday",
"2043-03-23": "Nowruz Holiday",
@@ -882,8 +882,6 @@
"2043-05-09": "Victory Day",
"2043-05-11": "Victory Day (observed)",
"2043-07-06": "Capital Day",
- "2043-08-30": "Constitution Day",
- "2043-08-31": "Constitution Day (observed)",
"2043-10-25": "Republic Day",
"2043-10-26": "Republic Day (observed)",
"2043-11-12": "Eid al-Adha (estimated)",
@@ -893,6 +891,7 @@
"2044-01-04": "New Year's Day (observed)",
"2044-01-07": "Orthodox Christmas",
"2044-03-08": "International Women's Day",
+ "2044-03-15": "Constitution Day",
"2044-03-21": "Nowruz Holiday",
"2044-03-22": "Nowruz Holiday",
"2044-03-23": "Nowruz Holiday",
@@ -902,7 +901,6 @@
"2044-05-09": "Victory Day",
"2044-05-10": "Defender of the Fatherland Day (observed)",
"2044-07-06": "Capital Day",
- "2044-08-30": "Constitution Day",
"2044-10-25": "Republic Day",
"2044-10-31": "Eid al-Adha (estimated)",
"2044-12-16": "Independence Day",
@@ -911,6 +909,7 @@
"2045-01-03": "New Year's Day (observed)",
"2045-01-07": "Orthodox Christmas",
"2045-03-08": "International Women's Day",
+ "2045-03-15": "Constitution Day",
"2045-03-21": "Nowruz Holiday",
"2045-03-22": "Nowruz Holiday",
"2045-03-23": "Nowruz Holiday",
@@ -919,7 +918,6 @@
"2045-05-08": "Defender of the Fatherland Day (observed)",
"2045-05-09": "Victory Day",
"2045-07-06": "Capital Day",
- "2045-08-30": "Constitution Day",
"2045-10-21": "Eid al-Adha (estimated)",
"2045-10-25": "Republic Day",
"2045-12-16": "Independence Day",
@@ -928,6 +926,7 @@
"2046-01-02": "New Year's Day",
"2046-01-07": "Orthodox Christmas",
"2046-03-08": "International Women's Day",
+ "2046-03-15": "Constitution Day",
"2046-03-21": "Nowruz Holiday",
"2046-03-22": "Nowruz Holiday",
"2046-03-23": "Nowruz Holiday",
@@ -935,7 +934,6 @@
"2046-05-07": "Defender of the Fatherland Day",
"2046-05-09": "Victory Day",
"2046-07-06": "Capital Day",
- "2046-08-30": "Constitution Day",
"2046-10-10": "Eid al-Adha (estimated)",
"2046-10-25": "Republic Day",
"2046-12-16": "Independence Day",
@@ -944,6 +942,7 @@
"2047-01-02": "New Year's Day",
"2047-01-07": "Orthodox Christmas",
"2047-03-08": "International Women's Day",
+ "2047-03-15": "Constitution Day",
"2047-03-21": "Nowruz Holiday",
"2047-03-22": "Nowruz Holiday",
"2047-03-23": "Nowruz Holiday",
@@ -953,7 +952,6 @@
"2047-05-09": "Victory Day",
"2047-07-06": "Capital Day",
"2047-07-08": "Capital Day (observed)",
- "2047-08-30": "Constitution Day",
"2047-09-30": "Eid al-Adha (estimated)",
"2047-10-25": "Republic Day",
"2047-12-16": "Independence Day",
@@ -962,6 +960,8 @@
"2048-01-07": "Orthodox Christmas",
"2048-03-08": "International Women's Day",
"2048-03-09": "International Women's Day (observed)",
+ "2048-03-15": "Constitution Day",
+ "2048-03-16": "Constitution Day (observed)",
"2048-03-21": "Nowruz Holiday",
"2048-03-22": "Nowruz Holiday",
"2048-03-23": "Nowruz Holiday",
@@ -972,8 +972,6 @@
"2048-05-09": "Victory Day",
"2048-05-11": "Victory Day (observed)",
"2048-07-06": "Capital Day",
- "2048-08-30": "Constitution Day",
- "2048-08-31": "Constitution Day (observed)",
"2048-09-19": "Eid al-Adha (estimated)",
"2048-10-25": "Republic Day",
"2048-10-26": "Republic Day (observed)",
@@ -983,6 +981,7 @@
"2049-01-04": "New Year's Day (observed)",
"2049-01-07": "Orthodox Christmas",
"2049-03-08": "International Women's Day",
+ "2049-03-15": "Constitution Day",
"2049-03-21": "Nowruz Holiday",
"2049-03-22": "Nowruz Holiday",
"2049-03-23": "Nowruz Holiday",
@@ -993,7 +992,6 @@
"2049-05-09": "Victory Day",
"2049-05-10": "Victory Day (observed)",
"2049-07-06": "Capital Day",
- "2049-08-30": "Constitution Day",
"2049-09-08": "Eid al-Adha (estimated)",
"2049-10-25": "Republic Day",
"2049-12-16": "Independence Day",
@@ -1003,6 +1001,7 @@
"2050-01-04": "New Year's Day (observed)",
"2050-01-07": "Orthodox Christmas",
"2050-03-08": "International Women's Day",
+ "2050-03-15": "Constitution Day",
"2050-03-21": "Nowruz Holiday",
"2050-03-22": "Nowruz Holiday",
"2050-03-23": "Nowruz Holiday",
@@ -1013,7 +1012,6 @@
"2050-05-10": "Defender of the Fatherland Day (observed)",
"2050-07-06": "Capital Day",
"2050-08-28": "Eid al-Adha (estimated)",
- "2050-08-30": "Constitution Day",
"2050-10-25": "Republic Day",
"2050-12-16": "Independence Day"
}
diff --git a/snapshots/countries/MC_COMMON.json b/snapshots/countries/MC_COMMON.json
index 2018d0d636..c01988ccc3 100644
--- a/snapshots/countries/MC_COMMON.json
+++ b/snapshots/countries/MC_COMMON.json
@@ -1,224 +1,4 @@
{
- "1950-01-01": "New Year's Day",
- "1950-01-02": "New Year's Day (observed)",
- "1950-01-27": "Saint Devote's Day",
- "1950-04-10": "Easter Monday",
- "1950-05-01": "Labor Day",
- "1950-05-18": "Ascension Day",
- "1950-05-29": "Pentecost Monday",
- "1950-06-08": "Corpus Christi",
- "1950-08-15": "Assumption Day",
- "1950-11-01": "All Saints' Day",
- "1950-11-19": "Prince's Day",
- "1950-11-20": "Prince's Day (observed)",
- "1950-12-08": "Immaculate Conception",
- "1950-12-25": "Christmas Day",
- "1951-01-01": "New Year's Day",
- "1951-01-27": "Saint Devote's Day",
- "1951-03-26": "Easter Monday",
- "1951-05-01": "Labor Day",
- "1951-05-03": "Ascension Day",
- "1951-05-14": "Pentecost Monday",
- "1951-05-24": "Corpus Christi",
- "1951-08-15": "Assumption Day",
- "1951-11-01": "All Saints' Day",
- "1951-11-19": "Prince's Day",
- "1951-12-08": "Immaculate Conception",
- "1951-12-25": "Christmas Day",
- "1952-01-01": "New Year's Day",
- "1952-01-27": "Saint Devote's Day",
- "1952-04-14": "Easter Monday",
- "1952-05-01": "Labor Day",
- "1952-05-22": "Ascension Day",
- "1952-06-02": "Pentecost Monday",
- "1952-06-12": "Corpus Christi",
- "1952-08-15": "Assumption Day",
- "1952-11-01": "All Saints' Day",
- "1952-11-19": "Prince's Day",
- "1952-12-08": "Immaculate Conception",
- "1952-12-25": "Christmas Day",
- "1953-01-01": "New Year's Day",
- "1953-01-27": "Saint Devote's Day",
- "1953-04-06": "Easter Monday",
- "1953-05-01": "Labor Day",
- "1953-05-14": "Ascension Day",
- "1953-05-25": "Pentecost Monday",
- "1953-06-04": "Corpus Christi",
- "1953-08-15": "Assumption Day",
- "1953-11-01": "All Saints' Day",
- "1953-11-02": "All Saints' Day (observed)",
- "1953-11-19": "Prince's Day",
- "1953-12-08": "Immaculate Conception",
- "1953-12-25": "Christmas Day",
- "1954-01-01": "New Year's Day",
- "1954-01-27": "Saint Devote's Day",
- "1954-04-19": "Easter Monday",
- "1954-05-01": "Labor Day",
- "1954-05-27": "Ascension Day",
- "1954-06-07": "Pentecost Monday",
- "1954-06-17": "Corpus Christi",
- "1954-08-15": "Assumption Day",
- "1954-08-16": "Assumption Day (observed)",
- "1954-11-01": "All Saints' Day",
- "1954-11-19": "Prince's Day",
- "1954-12-08": "Immaculate Conception",
- "1954-12-25": "Christmas Day",
- "1955-01-01": "New Year's Day",
- "1955-01-27": "Saint Devote's Day",
- "1955-04-11": "Easter Monday",
- "1955-05-01": "Labor Day",
- "1955-05-02": "Labor Day (observed)",
- "1955-05-19": "Ascension Day",
- "1955-05-30": "Pentecost Monday",
- "1955-06-09": "Corpus Christi",
- "1955-08-15": "Assumption Day",
- "1955-11-01": "All Saints' Day",
- "1955-11-19": "Prince's Day",
- "1955-12-08": "Immaculate Conception",
- "1955-12-25": "Christmas Day",
- "1955-12-26": "Christmas Day (observed)",
- "1956-01-01": "New Year's Day",
- "1956-01-02": "New Year's Day (observed)",
- "1956-01-27": "Saint Devote's Day",
- "1956-04-02": "Easter Monday",
- "1956-05-01": "Labor Day",
- "1956-05-10": "Ascension Day",
- "1956-05-21": "Pentecost Monday",
- "1956-05-31": "Corpus Christi",
- "1956-08-15": "Assumption Day",
- "1956-11-01": "All Saints' Day",
- "1956-11-19": "Prince's Day",
- "1956-12-08": "Immaculate Conception",
- "1956-12-25": "Christmas Day",
- "1957-01-01": "New Year's Day",
- "1957-01-27": "Saint Devote's Day",
- "1957-04-22": "Easter Monday",
- "1957-05-01": "Labor Day",
- "1957-05-30": "Ascension Day",
- "1957-06-10": "Pentecost Monday",
- "1957-06-20": "Corpus Christi",
- "1957-08-15": "Assumption Day",
- "1957-11-01": "All Saints' Day",
- "1957-11-19": "Prince's Day",
- "1957-12-08": "Immaculate Conception",
- "1957-12-25": "Christmas Day",
- "1958-01-01": "New Year's Day",
- "1958-01-27": "Saint Devote's Day",
- "1958-04-07": "Easter Monday",
- "1958-05-01": "Labor Day",
- "1958-05-15": "Ascension Day",
- "1958-05-26": "Pentecost Monday",
- "1958-06-05": "Corpus Christi",
- "1958-08-15": "Assumption Day",
- "1958-11-01": "All Saints' Day",
- "1958-11-19": "Prince's Day",
- "1958-12-08": "Immaculate Conception",
- "1958-12-25": "Christmas Day",
- "1959-01-01": "New Year's Day",
- "1959-01-27": "Saint Devote's Day",
- "1959-03-30": "Easter Monday",
- "1959-05-01": "Labor Day",
- "1959-05-07": "Ascension Day",
- "1959-05-18": "Pentecost Monday",
- "1959-05-28": "Corpus Christi",
- "1959-08-15": "Assumption Day",
- "1959-11-01": "All Saints' Day",
- "1959-11-02": "All Saints' Day (observed)",
- "1959-11-19": "Prince's Day",
- "1959-12-08": "Immaculate Conception",
- "1959-12-25": "Christmas Day",
- "1960-01-01": "New Year's Day",
- "1960-01-27": "Saint Devote's Day",
- "1960-04-18": "Easter Monday",
- "1960-05-01": "Labor Day",
- "1960-05-02": "Labor Day (observed)",
- "1960-05-26": "Ascension Day",
- "1960-06-06": "Pentecost Monday",
- "1960-06-16": "Corpus Christi",
- "1960-08-15": "Assumption Day",
- "1960-11-01": "All Saints' Day",
- "1960-11-19": "Prince's Day",
- "1960-12-08": "Immaculate Conception",
- "1960-12-25": "Christmas Day",
- "1960-12-26": "Christmas Day (observed)",
- "1961-01-01": "New Year's Day",
- "1961-01-02": "New Year's Day (observed)",
- "1961-01-27": "Saint Devote's Day",
- "1961-04-03": "Easter Monday",
- "1961-05-01": "Labor Day",
- "1961-05-11": "Ascension Day",
- "1961-05-22": "Pentecost Monday",
- "1961-06-01": "Corpus Christi",
- "1961-08-15": "Assumption Day",
- "1961-11-01": "All Saints' Day",
- "1961-11-19": "Prince's Day",
- "1961-11-20": "Prince's Day (observed)",
- "1961-12-08": "Immaculate Conception",
- "1961-12-25": "Christmas Day",
- "1962-01-01": "New Year's Day",
- "1962-01-27": "Saint Devote's Day",
- "1962-04-23": "Easter Monday",
- "1962-05-01": "Labor Day",
- "1962-05-31": "Ascension Day",
- "1962-06-11": "Pentecost Monday",
- "1962-06-21": "Corpus Christi",
- "1962-08-15": "Assumption Day",
- "1962-11-01": "All Saints' Day",
- "1962-11-19": "Prince's Day",
- "1962-12-08": "Immaculate Conception",
- "1962-12-25": "Christmas Day",
- "1963-01-01": "New Year's Day",
- "1963-01-27": "Saint Devote's Day",
- "1963-04-15": "Easter Monday",
- "1963-05-01": "Labor Day",
- "1963-05-23": "Ascension Day",
- "1963-06-03": "Pentecost Monday",
- "1963-06-13": "Corpus Christi",
- "1963-08-15": "Assumption Day",
- "1963-11-01": "All Saints' Day",
- "1963-11-19": "Prince's Day",
- "1963-12-08": "Immaculate Conception",
- "1963-12-25": "Christmas Day",
- "1964-01-01": "New Year's Day",
- "1964-01-27": "Saint Devote's Day",
- "1964-03-30": "Easter Monday",
- "1964-05-01": "Labor Day",
- "1964-05-07": "Ascension Day",
- "1964-05-18": "Pentecost Monday",
- "1964-05-28": "Corpus Christi",
- "1964-08-15": "Assumption Day",
- "1964-11-01": "All Saints' Day",
- "1964-11-02": "All Saints' Day (observed)",
- "1964-11-19": "Prince's Day",
- "1964-12-08": "Immaculate Conception",
- "1964-12-25": "Christmas Day",
- "1965-01-01": "New Year's Day",
- "1965-01-27": "Saint Devote's Day",
- "1965-04-19": "Easter Monday",
- "1965-05-01": "Labor Day",
- "1965-05-27": "Ascension Day",
- "1965-06-07": "Pentecost Monday",
- "1965-06-17": "Corpus Christi",
- "1965-08-15": "Assumption Day",
- "1965-08-16": "Assumption Day (observed)",
- "1965-11-01": "All Saints' Day",
- "1965-11-19": "Prince's Day",
- "1965-12-08": "Immaculate Conception",
- "1965-12-25": "Christmas Day",
- "1966-01-01": "New Year's Day",
- "1966-01-27": "Saint Devote's Day",
- "1966-04-11": "Easter Monday",
- "1966-05-01": "Labor Day",
- "1966-05-02": "Labor Day (observed)",
- "1966-05-19": "Ascension Day",
- "1966-05-30": "Pentecost Monday",
- "1966-06-09": "Corpus Christi",
- "1966-08-15": "Assumption Day",
- "1966-11-01": "All Saints' Day",
- "1966-11-19": "Prince's Day",
- "1966-12-08": "Immaculate Conception",
- "1966-12-25": "Christmas Day",
- "1966-12-26": "Christmas Day (observed)",
"1967-01-01": "New Year's Day",
"1967-01-02": "New Year's Day (observed)",
"1967-01-27": "Saint Devote's Day",
@@ -897,7 +677,8 @@
"2019-08-15": "Assumption Day",
"2019-11-01": "All Saints' Day",
"2019-11-19": "Prince's Day",
- "2019-12-09": "Immaculate Conception",
+ "2019-12-08": "Immaculate Conception",
+ "2019-12-09": "Immaculate Conception (observed)",
"2019-12-25": "Christmas Day",
"2020-01-01": "New Year's Day",
"2020-01-27": "Saint Devote's Day",
@@ -963,7 +744,8 @@
"2024-08-15": "Assumption Day",
"2024-11-01": "All Saints' Day",
"2024-11-19": "Prince's Day",
- "2024-12-09": "Immaculate Conception",
+ "2024-12-08": "Immaculate Conception",
+ "2024-12-09": "Immaculate Conception (observed)",
"2024-12-25": "Christmas Day",
"2025-01-01": "New Year's Day",
"2025-01-27": "Saint Devote's Day",
@@ -1038,7 +820,8 @@
"2030-08-15": "Assumption Day",
"2030-11-01": "All Saints' Day",
"2030-11-19": "Prince's Day",
- "2030-12-09": "Immaculate Conception",
+ "2030-12-08": "Immaculate Conception",
+ "2030-12-09": "Immaculate Conception (observed)",
"2030-12-25": "Christmas Day",
"2031-01-01": "New Year's Day",
"2031-01-27": "Saint Devote's Day",
@@ -1180,7 +963,8 @@
"2041-08-15": "Assumption Day",
"2041-11-01": "All Saints' Day",
"2041-11-19": "Prince's Day",
- "2041-12-09": "Immaculate Conception",
+ "2041-12-08": "Immaculate Conception",
+ "2041-12-09": "Immaculate Conception (observed)",
"2041-12-25": "Christmas Day",
"2042-01-01": "New Year's Day",
"2042-01-27": "Saint Devote's Day",
@@ -1257,7 +1041,8 @@
"2047-08-15": "Assumption Day",
"2047-11-01": "All Saints' Day",
"2047-11-19": "Prince's Day",
- "2047-12-09": "Immaculate Conception",
+ "2047-12-08": "Immaculate Conception",
+ "2047-12-09": "Immaculate Conception (observed)",
"2047-12-25": "Christmas Day",
"2048-01-01": "New Year's Day",
"2048-01-27": "Saint Devote's Day",
diff --git a/snapshots/financial/XSWX.json b/snapshots/financial/XSWX.json
new file mode 100644
index 0000000000..37d7c57401
--- /dev/null
+++ b/snapshots/financial/XSWX.json
@@ -0,0 +1,495 @@
+{
+ "2000-04-21": "Good Friday",
+ "2000-04-24": "Easter Monday",
+ "2000-05-01": "Labor Day",
+ "2000-06-01": "Ascension Day",
+ "2000-06-12": "Pentecost Monday",
+ "2000-08-01": "National Day",
+ "2000-12-25": "Christmas Day",
+ "2000-12-26": "Saint Stephen's Day",
+ "2001-01-01": "New Year's Day",
+ "2001-01-02": "Saint Berchtold's Day",
+ "2001-04-13": "Good Friday",
+ "2001-04-16": "Easter Monday",
+ "2001-05-01": "Labor Day",
+ "2001-05-24": "Ascension Day",
+ "2001-06-04": "Pentecost Monday",
+ "2001-08-01": "National Day",
+ "2001-12-24": "Christmas Eve",
+ "2001-12-25": "Christmas Day",
+ "2001-12-26": "Saint Stephen's Day",
+ "2001-12-31": "New Year's Eve",
+ "2002-01-01": "New Year's Day",
+ "2002-01-02": "Saint Berchtold's Day",
+ "2002-03-29": "Good Friday",
+ "2002-04-01": "Easter Monday",
+ "2002-05-01": "Labor Day",
+ "2002-05-09": "Ascension Day",
+ "2002-05-20": "Pentecost Monday",
+ "2002-08-01": "National Day",
+ "2002-12-24": "Christmas Eve",
+ "2002-12-25": "Christmas Day",
+ "2002-12-26": "Saint Stephen's Day",
+ "2002-12-31": "New Year's Eve",
+ "2003-01-01": "New Year's Day",
+ "2003-01-02": "Saint Berchtold's Day",
+ "2003-04-18": "Good Friday",
+ "2003-04-21": "Easter Monday",
+ "2003-05-01": "Labor Day",
+ "2003-05-29": "Ascension Day",
+ "2003-06-09": "Pentecost Monday",
+ "2003-08-01": "National Day",
+ "2003-12-24": "Christmas Eve",
+ "2003-12-25": "Christmas Day",
+ "2003-12-26": "Saint Stephen's Day",
+ "2003-12-31": "New Year's Eve",
+ "2004-01-01": "New Year's Day",
+ "2004-01-02": "Saint Berchtold's Day",
+ "2004-04-09": "Good Friday",
+ "2004-04-12": "Easter Monday",
+ "2004-05-20": "Ascension Day",
+ "2004-05-31": "Pentecost Monday",
+ "2004-12-24": "Christmas Eve",
+ "2004-12-31": "New Year's Eve",
+ "2005-03-25": "Good Friday",
+ "2005-03-28": "Easter Monday",
+ "2005-05-05": "Ascension Day",
+ "2005-05-16": "Pentecost Monday",
+ "2005-08-01": "National Day",
+ "2005-12-26": "Saint Stephen's Day",
+ "2006-01-02": "Saint Berchtold's Day",
+ "2006-04-14": "Good Friday",
+ "2006-04-17": "Easter Monday",
+ "2006-05-01": "Labor Day",
+ "2006-05-25": "Ascension Day",
+ "2006-06-05": "Pentecost Monday",
+ "2006-08-01": "National Day",
+ "2006-12-25": "Christmas Day",
+ "2006-12-26": "Saint Stephen's Day",
+ "2007-01-01": "New Year's Day",
+ "2007-01-02": "Saint Berchtold's Day",
+ "2007-04-06": "Good Friday",
+ "2007-04-09": "Easter Monday",
+ "2007-05-01": "Labor Day",
+ "2007-05-17": "Ascension Day",
+ "2007-05-28": "Pentecost Monday",
+ "2007-08-01": "National Day",
+ "2007-12-24": "Christmas Eve",
+ "2007-12-25": "Christmas Day",
+ "2007-12-26": "Saint Stephen's Day",
+ "2007-12-31": "New Year's Eve",
+ "2008-01-01": "New Year's Day",
+ "2008-01-02": "Saint Berchtold's Day",
+ "2008-03-21": "Good Friday",
+ "2008-03-24": "Easter Monday",
+ "2008-05-01": "Ascension Day; Labor Day",
+ "2008-05-12": "Pentecost Monday",
+ "2008-08-01": "National Day",
+ "2008-12-24": "Christmas Eve",
+ "2008-12-25": "Christmas Day",
+ "2008-12-26": "Saint Stephen's Day",
+ "2008-12-31": "New Year's Eve",
+ "2009-01-01": "New Year's Day",
+ "2009-01-02": "Saint Berchtold's Day",
+ "2009-04-10": "Good Friday",
+ "2009-04-13": "Easter Monday",
+ "2009-05-01": "Labor Day",
+ "2009-05-21": "Ascension Day",
+ "2009-06-01": "Pentecost Monday",
+ "2009-12-24": "Christmas Eve",
+ "2009-12-25": "Christmas Day",
+ "2009-12-31": "New Year's Eve",
+ "2010-01-01": "New Year's Day",
+ "2010-04-02": "Good Friday",
+ "2010-04-05": "Easter Monday",
+ "2010-05-13": "Ascension Day",
+ "2010-05-24": "Pentecost Monday",
+ "2010-12-24": "Christmas Eve",
+ "2010-12-31": "New Year's Eve",
+ "2011-04-22": "Good Friday",
+ "2011-04-25": "Easter Monday",
+ "2011-06-02": "Ascension Day",
+ "2011-06-13": "Pentecost Monday",
+ "2011-08-01": "National Day",
+ "2011-12-26": "Saint Stephen's Day",
+ "2012-01-02": "Saint Berchtold's Day",
+ "2012-04-06": "Good Friday",
+ "2012-04-09": "Easter Monday",
+ "2012-05-01": "Labor Day",
+ "2012-05-17": "Ascension Day",
+ "2012-05-28": "Pentecost Monday",
+ "2012-08-01": "National Day",
+ "2012-12-24": "Christmas Eve",
+ "2012-12-25": "Christmas Day",
+ "2012-12-26": "Saint Stephen's Day",
+ "2012-12-31": "New Year's Eve",
+ "2013-01-01": "New Year's Day",
+ "2013-01-02": "Saint Berchtold's Day",
+ "2013-03-29": "Good Friday",
+ "2013-04-01": "Easter Monday",
+ "2013-05-01": "Labor Day",
+ "2013-05-09": "Ascension Day",
+ "2013-05-20": "Pentecost Monday",
+ "2013-08-01": "National Day",
+ "2013-12-24": "Christmas Eve",
+ "2013-12-25": "Christmas Day",
+ "2013-12-26": "Saint Stephen's Day",
+ "2013-12-31": "New Year's Eve",
+ "2014-01-01": "New Year's Day",
+ "2014-01-02": "Saint Berchtold's Day",
+ "2014-04-18": "Good Friday",
+ "2014-04-21": "Easter Monday",
+ "2014-05-01": "Labor Day",
+ "2014-05-29": "Ascension Day",
+ "2014-06-09": "Pentecost Monday",
+ "2014-08-01": "National Day",
+ "2014-12-24": "Christmas Eve",
+ "2014-12-25": "Christmas Day",
+ "2014-12-26": "Saint Stephen's Day",
+ "2014-12-31": "New Year's Eve",
+ "2015-01-01": "New Year's Day",
+ "2015-01-02": "Saint Berchtold's Day",
+ "2015-04-03": "Good Friday",
+ "2015-04-06": "Easter Monday",
+ "2015-05-01": "Labor Day",
+ "2015-05-14": "Ascension Day",
+ "2015-05-25": "Pentecost Monday",
+ "2015-12-24": "Christmas Eve",
+ "2015-12-25": "Christmas Day",
+ "2015-12-31": "New Year's Eve",
+ "2016-01-01": "New Year's Day",
+ "2016-03-25": "Good Friday",
+ "2016-03-28": "Easter Monday",
+ "2016-05-05": "Ascension Day",
+ "2016-05-16": "Pentecost Monday",
+ "2016-08-01": "National Day",
+ "2016-12-26": "Saint Stephen's Day",
+ "2017-01-02": "Saint Berchtold's Day",
+ "2017-04-14": "Good Friday",
+ "2017-04-17": "Easter Monday",
+ "2017-05-01": "Labor Day",
+ "2017-05-25": "Ascension Day",
+ "2017-06-05": "Pentecost Monday",
+ "2017-08-01": "National Day",
+ "2017-12-25": "Christmas Day",
+ "2017-12-26": "Saint Stephen's Day",
+ "2018-01-01": "New Year's Day",
+ "2018-01-02": "Saint Berchtold's Day",
+ "2018-03-30": "Good Friday",
+ "2018-04-02": "Easter Monday",
+ "2018-05-01": "Labor Day",
+ "2018-05-10": "Ascension Day",
+ "2018-05-21": "Pentecost Monday",
+ "2018-08-01": "National Day",
+ "2018-12-24": "Christmas Eve",
+ "2018-12-25": "Christmas Day",
+ "2018-12-26": "Saint Stephen's Day",
+ "2018-12-31": "New Year's Eve",
+ "2019-01-01": "New Year's Day",
+ "2019-01-02": "Saint Berchtold's Day",
+ "2019-04-19": "Good Friday",
+ "2019-04-22": "Easter Monday",
+ "2019-05-01": "Labor Day",
+ "2019-05-30": "Ascension Day",
+ "2019-06-10": "Pentecost Monday",
+ "2019-08-01": "National Day",
+ "2019-12-24": "Christmas Eve",
+ "2019-12-25": "Christmas Day",
+ "2019-12-26": "Saint Stephen's Day",
+ "2019-12-31": "New Year's Eve",
+ "2020-01-01": "New Year's Day",
+ "2020-01-02": "Saint Berchtold's Day",
+ "2020-04-10": "Good Friday",
+ "2020-04-13": "Easter Monday",
+ "2020-05-01": "Labor Day",
+ "2020-05-21": "Ascension Day",
+ "2020-06-01": "Pentecost Monday",
+ "2020-12-24": "Christmas Eve",
+ "2020-12-25": "Christmas Day",
+ "2020-12-31": "New Year's Eve",
+ "2021-01-01": "New Year's Day",
+ "2021-04-02": "Good Friday",
+ "2021-04-05": "Easter Monday",
+ "2021-05-13": "Ascension Day",
+ "2021-05-24": "Pentecost Monday",
+ "2021-12-24": "Christmas Eve",
+ "2021-12-31": "New Year's Eve",
+ "2022-04-15": "Good Friday",
+ "2022-04-18": "Easter Monday",
+ "2022-05-26": "Ascension Day",
+ "2022-06-06": "Pentecost Monday",
+ "2022-08-01": "National Day",
+ "2022-12-26": "Saint Stephen's Day",
+ "2023-01-02": "Saint Berchtold's Day",
+ "2023-04-07": "Good Friday",
+ "2023-04-10": "Easter Monday",
+ "2023-05-01": "Labor Day",
+ "2023-05-18": "Ascension Day",
+ "2023-05-29": "Pentecost Monday",
+ "2023-08-01": "National Day",
+ "2023-12-25": "Christmas Day",
+ "2023-12-26": "Saint Stephen's Day",
+ "2024-01-01": "New Year's Day",
+ "2024-01-02": "Saint Berchtold's Day",
+ "2024-03-29": "Good Friday",
+ "2024-04-01": "Easter Monday",
+ "2024-05-01": "Labor Day",
+ "2024-05-09": "Ascension Day",
+ "2024-05-20": "Pentecost Monday",
+ "2024-08-01": "National Day",
+ "2024-12-24": "Christmas Eve",
+ "2024-12-25": "Christmas Day",
+ "2024-12-26": "Saint Stephen's Day",
+ "2024-12-31": "New Year's Eve",
+ "2025-01-01": "New Year's Day",
+ "2025-01-02": "Saint Berchtold's Day",
+ "2025-04-18": "Good Friday",
+ "2025-04-21": "Easter Monday",
+ "2025-05-01": "Labor Day",
+ "2025-05-29": "Ascension Day",
+ "2025-06-09": "Pentecost Monday",
+ "2025-08-01": "National Day",
+ "2025-12-24": "Christmas Eve",
+ "2025-12-25": "Christmas Day",
+ "2025-12-26": "Saint Stephen's Day",
+ "2025-12-31": "New Year's Eve",
+ "2026-01-01": "New Year's Day",
+ "2026-01-02": "Saint Berchtold's Day",
+ "2026-04-03": "Good Friday",
+ "2026-04-06": "Easter Monday",
+ "2026-05-01": "Labor Day",
+ "2026-05-14": "Ascension Day",
+ "2026-05-25": "Pentecost Monday",
+ "2026-12-24": "Christmas Eve",
+ "2026-12-25": "Christmas Day",
+ "2026-12-31": "New Year's Eve",
+ "2027-01-01": "New Year's Day",
+ "2027-03-26": "Good Friday",
+ "2027-03-29": "Easter Monday",
+ "2027-05-06": "Ascension Day",
+ "2027-05-17": "Pentecost Monday",
+ "2027-12-24": "Christmas Eve",
+ "2027-12-31": "New Year's Eve",
+ "2028-04-14": "Good Friday",
+ "2028-04-17": "Easter Monday",
+ "2028-05-01": "Labor Day",
+ "2028-05-25": "Ascension Day",
+ "2028-06-05": "Pentecost Monday",
+ "2028-08-01": "National Day",
+ "2028-12-25": "Christmas Day",
+ "2028-12-26": "Saint Stephen's Day",
+ "2029-01-01": "New Year's Day",
+ "2029-01-02": "Saint Berchtold's Day",
+ "2029-03-30": "Good Friday",
+ "2029-04-02": "Easter Monday",
+ "2029-05-01": "Labor Day",
+ "2029-05-10": "Ascension Day",
+ "2029-05-21": "Pentecost Monday",
+ "2029-08-01": "National Day",
+ "2029-12-24": "Christmas Eve",
+ "2029-12-25": "Christmas Day",
+ "2029-12-26": "Saint Stephen's Day",
+ "2029-12-31": "New Year's Eve",
+ "2030-01-01": "New Year's Day",
+ "2030-01-02": "Saint Berchtold's Day",
+ "2030-04-19": "Good Friday",
+ "2030-04-22": "Easter Monday",
+ "2030-05-01": "Labor Day",
+ "2030-05-30": "Ascension Day",
+ "2030-06-10": "Pentecost Monday",
+ "2030-08-01": "National Day",
+ "2030-12-24": "Christmas Eve",
+ "2030-12-25": "Christmas Day",
+ "2030-12-26": "Saint Stephen's Day",
+ "2030-12-31": "New Year's Eve",
+ "2031-01-01": "New Year's Day",
+ "2031-01-02": "Saint Berchtold's Day",
+ "2031-04-11": "Good Friday",
+ "2031-04-14": "Easter Monday",
+ "2031-05-01": "Labor Day",
+ "2031-05-22": "Ascension Day",
+ "2031-06-02": "Pentecost Monday",
+ "2031-08-01": "National Day",
+ "2031-12-24": "Christmas Eve",
+ "2031-12-25": "Christmas Day",
+ "2031-12-26": "Saint Stephen's Day",
+ "2031-12-31": "New Year's Eve",
+ "2032-01-01": "New Year's Day",
+ "2032-01-02": "Saint Berchtold's Day",
+ "2032-03-26": "Good Friday",
+ "2032-03-29": "Easter Monday",
+ "2032-05-06": "Ascension Day",
+ "2032-05-17": "Pentecost Monday",
+ "2032-12-24": "Christmas Eve",
+ "2032-12-31": "New Year's Eve",
+ "2033-04-15": "Good Friday",
+ "2033-04-18": "Easter Monday",
+ "2033-05-26": "Ascension Day",
+ "2033-06-06": "Pentecost Monday",
+ "2033-08-01": "National Day",
+ "2033-12-26": "Saint Stephen's Day",
+ "2034-01-02": "Saint Berchtold's Day",
+ "2034-04-07": "Good Friday",
+ "2034-04-10": "Easter Monday",
+ "2034-05-01": "Labor Day",
+ "2034-05-18": "Ascension Day",
+ "2034-05-29": "Pentecost Monday",
+ "2034-08-01": "National Day",
+ "2034-12-25": "Christmas Day",
+ "2034-12-26": "Saint Stephen's Day",
+ "2035-01-01": "New Year's Day",
+ "2035-01-02": "Saint Berchtold's Day",
+ "2035-03-23": "Good Friday",
+ "2035-03-26": "Easter Monday",
+ "2035-05-01": "Labor Day",
+ "2035-05-03": "Ascension Day",
+ "2035-05-14": "Pentecost Monday",
+ "2035-08-01": "National Day",
+ "2035-12-24": "Christmas Eve",
+ "2035-12-25": "Christmas Day",
+ "2035-12-26": "Saint Stephen's Day",
+ "2035-12-31": "New Year's Eve",
+ "2036-01-01": "New Year's Day",
+ "2036-01-02": "Saint Berchtold's Day",
+ "2036-04-11": "Good Friday",
+ "2036-04-14": "Easter Monday",
+ "2036-05-01": "Labor Day",
+ "2036-05-22": "Ascension Day",
+ "2036-06-02": "Pentecost Monday",
+ "2036-08-01": "National Day",
+ "2036-12-24": "Christmas Eve",
+ "2036-12-25": "Christmas Day",
+ "2036-12-26": "Saint Stephen's Day",
+ "2036-12-31": "New Year's Eve",
+ "2037-01-01": "New Year's Day",
+ "2037-01-02": "Saint Berchtold's Day",
+ "2037-04-03": "Good Friday",
+ "2037-04-06": "Easter Monday",
+ "2037-05-01": "Labor Day",
+ "2037-05-14": "Ascension Day",
+ "2037-05-25": "Pentecost Monday",
+ "2037-12-24": "Christmas Eve",
+ "2037-12-25": "Christmas Day",
+ "2037-12-31": "New Year's Eve",
+ "2038-01-01": "New Year's Day",
+ "2038-04-23": "Good Friday",
+ "2038-04-26": "Easter Monday",
+ "2038-06-03": "Ascension Day",
+ "2038-06-14": "Pentecost Monday",
+ "2038-12-24": "Christmas Eve",
+ "2038-12-31": "New Year's Eve",
+ "2039-04-08": "Good Friday",
+ "2039-04-11": "Easter Monday",
+ "2039-05-19": "Ascension Day",
+ "2039-05-30": "Pentecost Monday",
+ "2039-08-01": "National Day",
+ "2039-12-26": "Saint Stephen's Day",
+ "2040-01-02": "Saint Berchtold's Day",
+ "2040-03-30": "Good Friday",
+ "2040-04-02": "Easter Monday",
+ "2040-05-01": "Labor Day",
+ "2040-05-10": "Ascension Day",
+ "2040-05-21": "Pentecost Monday",
+ "2040-08-01": "National Day",
+ "2040-12-24": "Christmas Eve",
+ "2040-12-25": "Christmas Day",
+ "2040-12-26": "Saint Stephen's Day",
+ "2040-12-31": "New Year's Eve",
+ "2041-01-01": "New Year's Day",
+ "2041-01-02": "Saint Berchtold's Day",
+ "2041-04-19": "Good Friday",
+ "2041-04-22": "Easter Monday",
+ "2041-05-01": "Labor Day",
+ "2041-05-30": "Ascension Day",
+ "2041-06-10": "Pentecost Monday",
+ "2041-08-01": "National Day",
+ "2041-12-24": "Christmas Eve",
+ "2041-12-25": "Christmas Day",
+ "2041-12-26": "Saint Stephen's Day",
+ "2041-12-31": "New Year's Eve",
+ "2042-01-01": "New Year's Day",
+ "2042-01-02": "Saint Berchtold's Day",
+ "2042-04-04": "Good Friday",
+ "2042-04-07": "Easter Monday",
+ "2042-05-01": "Labor Day",
+ "2042-05-15": "Ascension Day",
+ "2042-05-26": "Pentecost Monday",
+ "2042-08-01": "National Day",
+ "2042-12-24": "Christmas Eve",
+ "2042-12-25": "Christmas Day",
+ "2042-12-26": "Saint Stephen's Day",
+ "2042-12-31": "New Year's Eve",
+ "2043-01-01": "New Year's Day",
+ "2043-01-02": "Saint Berchtold's Day",
+ "2043-03-27": "Good Friday",
+ "2043-03-30": "Easter Monday",
+ "2043-05-01": "Labor Day",
+ "2043-05-07": "Ascension Day",
+ "2043-05-18": "Pentecost Monday",
+ "2043-12-24": "Christmas Eve",
+ "2043-12-25": "Christmas Day",
+ "2043-12-31": "New Year's Eve",
+ "2044-01-01": "New Year's Day",
+ "2044-04-15": "Good Friday",
+ "2044-04-18": "Easter Monday",
+ "2044-05-26": "Ascension Day",
+ "2044-06-06": "Pentecost Monday",
+ "2044-08-01": "National Day",
+ "2044-12-26": "Saint Stephen's Day",
+ "2045-01-02": "Saint Berchtold's Day",
+ "2045-04-07": "Good Friday",
+ "2045-04-10": "Easter Monday",
+ "2045-05-01": "Labor Day",
+ "2045-05-18": "Ascension Day",
+ "2045-05-29": "Pentecost Monday",
+ "2045-08-01": "National Day",
+ "2045-12-25": "Christmas Day",
+ "2045-12-26": "Saint Stephen's Day",
+ "2046-01-01": "New Year's Day",
+ "2046-01-02": "Saint Berchtold's Day",
+ "2046-03-23": "Good Friday",
+ "2046-03-26": "Easter Monday",
+ "2046-05-01": "Labor Day",
+ "2046-05-03": "Ascension Day",
+ "2046-05-14": "Pentecost Monday",
+ "2046-08-01": "National Day",
+ "2046-12-24": "Christmas Eve",
+ "2046-12-25": "Christmas Day",
+ "2046-12-26": "Saint Stephen's Day",
+ "2046-12-31": "New Year's Eve",
+ "2047-01-01": "New Year's Day",
+ "2047-01-02": "Saint Berchtold's Day",
+ "2047-04-12": "Good Friday",
+ "2047-04-15": "Easter Monday",
+ "2047-05-01": "Labor Day",
+ "2047-05-23": "Ascension Day",
+ "2047-06-03": "Pentecost Monday",
+ "2047-08-01": "National Day",
+ "2047-12-24": "Christmas Eve",
+ "2047-12-25": "Christmas Day",
+ "2047-12-26": "Saint Stephen's Day",
+ "2047-12-31": "New Year's Eve",
+ "2048-01-01": "New Year's Day",
+ "2048-01-02": "Saint Berchtold's Day",
+ "2048-04-03": "Good Friday",
+ "2048-04-06": "Easter Monday",
+ "2048-05-01": "Labor Day",
+ "2048-05-14": "Ascension Day",
+ "2048-05-25": "Pentecost Monday",
+ "2048-12-24": "Christmas Eve",
+ "2048-12-25": "Christmas Day",
+ "2048-12-31": "New Year's Eve",
+ "2049-01-01": "New Year's Day",
+ "2049-04-16": "Good Friday",
+ "2049-04-19": "Easter Monday",
+ "2049-05-27": "Ascension Day",
+ "2049-06-07": "Pentecost Monday",
+ "2049-12-24": "Christmas Eve",
+ "2049-12-31": "New Year's Eve",
+ "2050-04-08": "Good Friday",
+ "2050-04-11": "Easter Monday",
+ "2050-05-19": "Ascension Day",
+ "2050-05-30": "Pentecost Monday",
+ "2050-08-01": "National Day",
+ "2050-12-26": "Saint Stephen's Day"
+}
diff --git a/snapshots/financial/XTSE.json b/snapshots/financial/XTSE.json
new file mode 100644
index 0000000000..d2300b1025
--- /dev/null
+++ b/snapshots/financial/XTSE.json
@@ -0,0 +1,522 @@
+{
+ "2002-01-01": "New Year's Day",
+ "2002-03-29": "Good Friday",
+ "2002-05-20": "Victoria Day",
+ "2002-07-01": "Canada Day",
+ "2002-08-05": "Civic Holiday",
+ "2002-09-02": "Labor Day",
+ "2002-10-14": "Thanksgiving Day",
+ "2002-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2002-12-25": "Christmas Day",
+ "2002-12-26": "Boxing Day",
+ "2003-01-01": "New Year's Day",
+ "2003-04-18": "Good Friday",
+ "2003-05-19": "Victoria Day",
+ "2003-07-01": "Canada Day",
+ "2003-08-04": "Civic Holiday",
+ "2003-09-01": "Labor Day",
+ "2003-10-13": "Thanksgiving Day",
+ "2003-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2003-12-25": "Christmas Day",
+ "2003-12-26": "Boxing Day",
+ "2004-01-01": "New Year's Day",
+ "2004-04-09": "Good Friday",
+ "2004-05-24": "Victoria Day",
+ "2004-07-01": "Canada Day",
+ "2004-08-02": "Civic Holiday",
+ "2004-09-06": "Labor Day",
+ "2004-10-11": "Thanksgiving Day",
+ "2004-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2004-12-27": "Christmas Day",
+ "2004-12-28": "Boxing Day",
+ "2005-01-03": "New Year's Day",
+ "2005-03-25": "Good Friday",
+ "2005-05-23": "Victoria Day",
+ "2005-07-01": "Canada Day",
+ "2005-08-01": "Civic Holiday",
+ "2005-09-05": "Labor Day",
+ "2005-10-10": "Thanksgiving Day",
+ "2005-12-26": "Boxing Day",
+ "2005-12-27": "Christmas Day",
+ "2006-01-02": "New Year's Day",
+ "2006-04-14": "Good Friday",
+ "2006-05-22": "Victoria Day",
+ "2006-07-03": "Canada Day",
+ "2006-08-07": "Civic Holiday",
+ "2006-09-04": "Labor Day",
+ "2006-10-09": "Thanksgiving Day",
+ "2006-12-25": "Christmas Day",
+ "2006-12-26": "Boxing Day",
+ "2007-01-01": "New Year's Day",
+ "2007-04-06": "Good Friday",
+ "2007-05-21": "Victoria Day",
+ "2007-07-02": "Canada Day",
+ "2007-08-06": "Civic Holiday",
+ "2007-09-03": "Labor Day",
+ "2007-10-08": "Thanksgiving Day",
+ "2007-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2007-12-25": "Christmas Day",
+ "2007-12-26": "Boxing Day",
+ "2008-01-01": "New Year's Day",
+ "2008-02-18": "Family Day",
+ "2008-03-21": "Good Friday",
+ "2008-05-19": "Victoria Day",
+ "2008-07-01": "Canada Day",
+ "2008-08-04": "Civic Holiday",
+ "2008-09-01": "Labor Day",
+ "2008-10-13": "Thanksgiving Day",
+ "2008-12-17": "Market Closed (Computer Failure)",
+ "2008-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2008-12-25": "Christmas Day",
+ "2008-12-26": "Boxing Day",
+ "2009-01-01": "New Year's Day",
+ "2009-02-16": "Family Day",
+ "2009-04-10": "Good Friday",
+ "2009-05-18": "Victoria Day",
+ "2009-07-01": "Canada Day",
+ "2009-08-03": "Civic Holiday",
+ "2009-09-07": "Labor Day",
+ "2009-10-12": "Thanksgiving Day",
+ "2009-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2009-12-25": "Christmas Day",
+ "2009-12-28": "Boxing Day",
+ "2010-01-01": "New Year's Day",
+ "2010-02-15": "Family Day",
+ "2010-04-02": "Good Friday",
+ "2010-05-24": "Victoria Day",
+ "2010-07-01": "Canada Day",
+ "2010-08-02": "Civic Holiday",
+ "2010-09-06": "Labor Day",
+ "2010-10-11": "Thanksgiving Day",
+ "2010-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2010-12-27": "Christmas Day",
+ "2010-12-28": "Boxing Day",
+ "2011-01-03": "New Year's Day",
+ "2011-02-21": "Family Day",
+ "2011-04-22": "Good Friday",
+ "2011-05-23": "Victoria Day",
+ "2011-07-01": "Canada Day",
+ "2011-08-01": "Civic Holiday",
+ "2011-09-05": "Labor Day",
+ "2011-10-10": "Thanksgiving Day",
+ "2011-12-26": "Christmas Day",
+ "2011-12-27": "Boxing Day",
+ "2012-01-02": "New Year's Day",
+ "2012-02-20": "Family Day",
+ "2012-04-06": "Good Friday",
+ "2012-05-21": "Victoria Day",
+ "2012-07-02": "Canada Day",
+ "2012-08-06": "Civic Holiday",
+ "2012-09-03": "Labor Day",
+ "2012-10-08": "Thanksgiving Day",
+ "2012-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2012-12-25": "Christmas Day",
+ "2012-12-26": "Boxing Day",
+ "2013-01-01": "New Year's Day",
+ "2013-02-18": "Family Day",
+ "2013-03-29": "Good Friday",
+ "2013-05-20": "Victoria Day",
+ "2013-07-01": "Canada Day",
+ "2013-08-05": "Civic Holiday",
+ "2013-09-02": "Labor Day",
+ "2013-10-14": "Thanksgiving Day",
+ "2013-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2013-12-25": "Christmas Day",
+ "2013-12-26": "Boxing Day",
+ "2014-01-01": "New Year's Day",
+ "2014-02-17": "Family Day",
+ "2014-04-18": "Good Friday",
+ "2014-05-19": "Victoria Day",
+ "2014-07-01": "Canada Day",
+ "2014-08-04": "Civic Holiday",
+ "2014-09-01": "Labor Day",
+ "2014-10-13": "Thanksgiving Day",
+ "2014-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2014-12-25": "Christmas Day",
+ "2014-12-26": "Boxing Day",
+ "2015-01-01": "New Year's Day",
+ "2015-02-16": "Family Day",
+ "2015-04-03": "Good Friday",
+ "2015-05-18": "Victoria Day",
+ "2015-07-01": "Canada Day",
+ "2015-08-03": "Civic Holiday",
+ "2015-09-07": "Labor Day",
+ "2015-10-12": "Thanksgiving Day",
+ "2015-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2015-12-25": "Christmas Day",
+ "2015-12-28": "Boxing Day",
+ "2016-01-01": "New Year's Day",
+ "2016-02-15": "Family Day",
+ "2016-03-25": "Good Friday",
+ "2016-05-23": "Victoria Day",
+ "2016-07-01": "Canada Day",
+ "2016-08-01": "Civic Holiday",
+ "2016-09-05": "Labor Day",
+ "2016-10-10": "Thanksgiving Day",
+ "2016-12-26": "Christmas Day",
+ "2016-12-27": "Boxing Day",
+ "2017-01-02": "New Year's Day",
+ "2017-02-20": "Family Day",
+ "2017-04-14": "Good Friday",
+ "2017-05-22": "Victoria Day",
+ "2017-07-03": "Canada Day",
+ "2017-08-07": "Civic Holiday",
+ "2017-09-04": "Labor Day",
+ "2017-10-09": "Thanksgiving Day",
+ "2017-12-25": "Christmas Day",
+ "2017-12-26": "Boxing Day",
+ "2018-01-01": "New Year's Day",
+ "2018-02-19": "Family Day",
+ "2018-03-30": "Good Friday",
+ "2018-05-21": "Victoria Day",
+ "2018-07-02": "Canada Day",
+ "2018-08-06": "Civic Holiday",
+ "2018-09-03": "Labor Day",
+ "2018-10-08": "Thanksgiving Day",
+ "2018-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2018-12-25": "Christmas Day",
+ "2018-12-26": "Boxing Day",
+ "2019-01-01": "New Year's Day",
+ "2019-02-18": "Family Day",
+ "2019-04-19": "Good Friday",
+ "2019-05-20": "Victoria Day",
+ "2019-07-01": "Canada Day",
+ "2019-08-05": "Civic Holiday",
+ "2019-09-02": "Labor Day",
+ "2019-10-14": "Thanksgiving Day",
+ "2019-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2019-12-25": "Christmas Day",
+ "2019-12-26": "Boxing Day",
+ "2020-01-01": "New Year's Day",
+ "2020-02-17": "Family Day",
+ "2020-04-10": "Good Friday",
+ "2020-05-18": "Victoria Day",
+ "2020-07-01": "Canada Day",
+ "2020-08-03": "Civic Holiday",
+ "2020-09-07": "Labor Day",
+ "2020-10-12": "Thanksgiving Day",
+ "2020-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2020-12-25": "Christmas Day",
+ "2020-12-28": "Boxing Day",
+ "2021-01-01": "New Year's Day",
+ "2021-02-15": "Family Day",
+ "2021-04-02": "Good Friday",
+ "2021-05-24": "Victoria Day",
+ "2021-07-01": "Canada Day",
+ "2021-08-02": "Civic Holiday",
+ "2021-09-06": "Labor Day",
+ "2021-10-11": "Thanksgiving Day",
+ "2021-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2021-12-27": "Christmas Day",
+ "2021-12-28": "Boxing Day",
+ "2022-01-03": "New Year's Day",
+ "2022-02-21": "Family Day",
+ "2022-04-15": "Good Friday",
+ "2022-05-23": "Victoria Day",
+ "2022-07-01": "Canada Day",
+ "2022-08-01": "Civic Holiday",
+ "2022-09-05": "Labor Day",
+ "2022-10-10": "Thanksgiving Day",
+ "2022-12-26": "Christmas Day",
+ "2022-12-27": "Boxing Day",
+ "2023-01-02": "New Year's Day",
+ "2023-02-20": "Family Day",
+ "2023-04-07": "Good Friday",
+ "2023-05-22": "Victoria Day",
+ "2023-07-03": "Canada Day",
+ "2023-08-07": "Civic Holiday",
+ "2023-09-04": "Labor Day",
+ "2023-10-09": "Thanksgiving Day",
+ "2023-12-25": "Christmas Day",
+ "2023-12-26": "Boxing Day",
+ "2024-01-01": "New Year's Day",
+ "2024-02-19": "Family Day",
+ "2024-03-29": "Good Friday",
+ "2024-05-20": "Victoria Day",
+ "2024-07-01": "Canada Day",
+ "2024-08-05": "Civic Holiday",
+ "2024-09-02": "Labor Day",
+ "2024-10-14": "Thanksgiving Day",
+ "2024-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2024-12-25": "Christmas Day",
+ "2024-12-26": "Boxing Day",
+ "2025-01-01": "New Year's Day",
+ "2025-02-17": "Family Day",
+ "2025-04-18": "Good Friday",
+ "2025-05-19": "Victoria Day",
+ "2025-07-01": "Canada Day",
+ "2025-08-04": "Civic Holiday",
+ "2025-09-01": "Labor Day",
+ "2025-10-13": "Thanksgiving Day",
+ "2025-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2025-12-25": "Christmas Day",
+ "2025-12-26": "Boxing Day",
+ "2026-01-01": "New Year's Day",
+ "2026-02-16": "Family Day",
+ "2026-04-03": "Good Friday",
+ "2026-05-18": "Victoria Day",
+ "2026-07-01": "Canada Day",
+ "2026-08-03": "Civic Holiday",
+ "2026-09-07": "Labor Day",
+ "2026-10-12": "Thanksgiving Day",
+ "2026-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2026-12-25": "Christmas Day",
+ "2026-12-28": "Boxing Day",
+ "2027-01-01": "New Year's Day",
+ "2027-02-15": "Family Day",
+ "2027-03-26": "Good Friday",
+ "2027-05-24": "Victoria Day",
+ "2027-07-01": "Canada Day",
+ "2027-08-02": "Civic Holiday",
+ "2027-09-06": "Labor Day",
+ "2027-10-11": "Thanksgiving Day",
+ "2027-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2027-12-27": "Christmas Day",
+ "2027-12-28": "Boxing Day",
+ "2028-01-03": "New Year's Day",
+ "2028-02-21": "Family Day",
+ "2028-04-14": "Good Friday",
+ "2028-05-22": "Victoria Day",
+ "2028-07-03": "Canada Day",
+ "2028-08-07": "Civic Holiday",
+ "2028-09-04": "Labor Day",
+ "2028-10-09": "Thanksgiving Day",
+ "2028-12-25": "Christmas Day",
+ "2028-12-26": "Boxing Day",
+ "2029-01-01": "New Year's Day",
+ "2029-02-19": "Family Day",
+ "2029-03-30": "Good Friday",
+ "2029-05-21": "Victoria Day",
+ "2029-07-02": "Canada Day",
+ "2029-08-06": "Civic Holiday",
+ "2029-09-03": "Labor Day",
+ "2029-10-08": "Thanksgiving Day",
+ "2029-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2029-12-25": "Christmas Day",
+ "2029-12-26": "Boxing Day",
+ "2030-01-01": "New Year's Day",
+ "2030-02-18": "Family Day",
+ "2030-04-19": "Good Friday",
+ "2030-05-20": "Victoria Day",
+ "2030-07-01": "Canada Day",
+ "2030-08-05": "Civic Holiday",
+ "2030-09-02": "Labor Day",
+ "2030-10-14": "Thanksgiving Day",
+ "2030-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2030-12-25": "Christmas Day",
+ "2030-12-26": "Boxing Day",
+ "2031-01-01": "New Year's Day",
+ "2031-02-17": "Family Day",
+ "2031-04-11": "Good Friday",
+ "2031-05-19": "Victoria Day",
+ "2031-07-01": "Canada Day",
+ "2031-08-04": "Civic Holiday",
+ "2031-09-01": "Labor Day",
+ "2031-10-13": "Thanksgiving Day",
+ "2031-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2031-12-25": "Christmas Day",
+ "2031-12-26": "Boxing Day",
+ "2032-01-01": "New Year's Day",
+ "2032-02-16": "Family Day",
+ "2032-03-26": "Good Friday",
+ "2032-05-24": "Victoria Day",
+ "2032-07-01": "Canada Day",
+ "2032-08-02": "Civic Holiday",
+ "2032-09-06": "Labor Day",
+ "2032-10-11": "Thanksgiving Day",
+ "2032-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2032-12-27": "Christmas Day",
+ "2032-12-28": "Boxing Day",
+ "2033-01-03": "New Year's Day",
+ "2033-02-21": "Family Day",
+ "2033-04-15": "Good Friday",
+ "2033-05-23": "Victoria Day",
+ "2033-07-01": "Canada Day",
+ "2033-08-01": "Civic Holiday",
+ "2033-09-05": "Labor Day",
+ "2033-10-10": "Thanksgiving Day",
+ "2033-12-26": "Christmas Day",
+ "2033-12-27": "Boxing Day",
+ "2034-01-02": "New Year's Day",
+ "2034-02-20": "Family Day",
+ "2034-04-07": "Good Friday",
+ "2034-05-22": "Victoria Day",
+ "2034-07-03": "Canada Day",
+ "2034-08-07": "Civic Holiday",
+ "2034-09-04": "Labor Day",
+ "2034-10-09": "Thanksgiving Day",
+ "2034-12-25": "Christmas Day",
+ "2034-12-26": "Boxing Day",
+ "2035-01-01": "New Year's Day",
+ "2035-02-19": "Family Day",
+ "2035-03-23": "Good Friday",
+ "2035-05-21": "Victoria Day",
+ "2035-07-02": "Canada Day",
+ "2035-08-06": "Civic Holiday",
+ "2035-09-03": "Labor Day",
+ "2035-10-08": "Thanksgiving Day",
+ "2035-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2035-12-25": "Christmas Day",
+ "2035-12-26": "Boxing Day",
+ "2036-01-01": "New Year's Day",
+ "2036-02-18": "Family Day",
+ "2036-04-11": "Good Friday",
+ "2036-05-19": "Victoria Day",
+ "2036-07-01": "Canada Day",
+ "2036-08-04": "Civic Holiday",
+ "2036-09-01": "Labor Day",
+ "2036-10-13": "Thanksgiving Day",
+ "2036-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2036-12-25": "Christmas Day",
+ "2036-12-26": "Boxing Day",
+ "2037-01-01": "New Year's Day",
+ "2037-02-16": "Family Day",
+ "2037-04-03": "Good Friday",
+ "2037-05-18": "Victoria Day",
+ "2037-07-01": "Canada Day",
+ "2037-08-03": "Civic Holiday",
+ "2037-09-07": "Labor Day",
+ "2037-10-12": "Thanksgiving Day",
+ "2037-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2037-12-25": "Christmas Day",
+ "2037-12-28": "Boxing Day",
+ "2038-01-01": "New Year's Day",
+ "2038-02-15": "Family Day",
+ "2038-04-23": "Good Friday",
+ "2038-05-24": "Victoria Day",
+ "2038-07-01": "Canada Day",
+ "2038-08-02": "Civic Holiday",
+ "2038-09-06": "Labor Day",
+ "2038-10-11": "Thanksgiving Day",
+ "2038-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2038-12-27": "Christmas Day",
+ "2038-12-28": "Boxing Day",
+ "2039-01-03": "New Year's Day",
+ "2039-02-21": "Family Day",
+ "2039-04-08": "Good Friday",
+ "2039-05-23": "Victoria Day",
+ "2039-07-01": "Canada Day",
+ "2039-08-01": "Civic Holiday",
+ "2039-09-05": "Labor Day",
+ "2039-10-10": "Thanksgiving Day",
+ "2039-12-26": "Christmas Day",
+ "2039-12-27": "Boxing Day",
+ "2040-01-02": "New Year's Day",
+ "2040-02-20": "Family Day",
+ "2040-03-30": "Good Friday",
+ "2040-05-21": "Victoria Day",
+ "2040-07-02": "Canada Day",
+ "2040-08-06": "Civic Holiday",
+ "2040-09-03": "Labor Day",
+ "2040-10-08": "Thanksgiving Day",
+ "2040-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2040-12-25": "Christmas Day",
+ "2040-12-26": "Boxing Day",
+ "2041-01-01": "New Year's Day",
+ "2041-02-18": "Family Day",
+ "2041-04-19": "Good Friday",
+ "2041-05-20": "Victoria Day",
+ "2041-07-01": "Canada Day",
+ "2041-08-05": "Civic Holiday",
+ "2041-09-02": "Labor Day",
+ "2041-10-14": "Thanksgiving Day",
+ "2041-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2041-12-25": "Christmas Day",
+ "2041-12-26": "Boxing Day",
+ "2042-01-01": "New Year's Day",
+ "2042-02-17": "Family Day",
+ "2042-04-04": "Good Friday",
+ "2042-05-19": "Victoria Day",
+ "2042-07-01": "Canada Day",
+ "2042-08-04": "Civic Holiday",
+ "2042-09-01": "Labor Day",
+ "2042-10-13": "Thanksgiving Day",
+ "2042-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2042-12-25": "Christmas Day",
+ "2042-12-26": "Boxing Day",
+ "2043-01-01": "New Year's Day",
+ "2043-02-16": "Family Day",
+ "2043-03-27": "Good Friday",
+ "2043-05-18": "Victoria Day",
+ "2043-07-01": "Canada Day",
+ "2043-08-03": "Civic Holiday",
+ "2043-09-07": "Labor Day",
+ "2043-10-12": "Thanksgiving Day",
+ "2043-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2043-12-25": "Christmas Day",
+ "2043-12-28": "Boxing Day",
+ "2044-01-01": "New Year's Day",
+ "2044-02-15": "Family Day",
+ "2044-04-15": "Good Friday",
+ "2044-05-23": "Victoria Day",
+ "2044-07-01": "Canada Day",
+ "2044-08-01": "Civic Holiday",
+ "2044-09-05": "Labor Day",
+ "2044-10-10": "Thanksgiving Day",
+ "2044-12-26": "Christmas Day",
+ "2044-12-27": "Boxing Day",
+ "2045-01-02": "New Year's Day",
+ "2045-02-20": "Family Day",
+ "2045-04-07": "Good Friday",
+ "2045-05-22": "Victoria Day",
+ "2045-07-03": "Canada Day",
+ "2045-08-07": "Civic Holiday",
+ "2045-09-04": "Labor Day",
+ "2045-10-09": "Thanksgiving Day",
+ "2045-12-25": "Christmas Day",
+ "2045-12-26": "Boxing Day",
+ "2046-01-01": "New Year's Day",
+ "2046-02-19": "Family Day",
+ "2046-03-23": "Good Friday",
+ "2046-05-21": "Victoria Day",
+ "2046-07-02": "Canada Day",
+ "2046-08-06": "Civic Holiday",
+ "2046-09-03": "Labor Day",
+ "2046-10-08": "Thanksgiving Day",
+ "2046-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2046-12-25": "Christmas Day",
+ "2046-12-26": "Boxing Day",
+ "2047-01-01": "New Year's Day",
+ "2047-02-18": "Family Day",
+ "2047-04-12": "Good Friday",
+ "2047-05-20": "Victoria Day",
+ "2047-07-01": "Canada Day",
+ "2047-08-05": "Civic Holiday",
+ "2047-09-02": "Labor Day",
+ "2047-10-14": "Thanksgiving Day",
+ "2047-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2047-12-25": "Christmas Day",
+ "2047-12-26": "Boxing Day",
+ "2048-01-01": "New Year's Day",
+ "2048-02-17": "Family Day",
+ "2048-04-03": "Good Friday",
+ "2048-05-18": "Victoria Day",
+ "2048-07-01": "Canada Day",
+ "2048-08-03": "Civic Holiday",
+ "2048-09-07": "Labor Day",
+ "2048-10-12": "Thanksgiving Day",
+ "2048-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2048-12-25": "Christmas Day",
+ "2048-12-28": "Boxing Day",
+ "2049-01-01": "New Year's Day",
+ "2049-02-15": "Family Day",
+ "2049-04-16": "Good Friday",
+ "2049-05-24": "Victoria Day",
+ "2049-07-01": "Canada Day",
+ "2049-08-02": "Civic Holiday",
+ "2049-09-06": "Labor Day",
+ "2049-10-11": "Thanksgiving Day",
+ "2049-12-24": "Christmas Eve (markets close at 1:00 p.m. ET)",
+ "2049-12-27": "Christmas Day",
+ "2049-12-28": "Boxing Day",
+ "2050-01-03": "New Year's Day",
+ "2050-02-21": "Family Day",
+ "2050-04-08": "Good Friday",
+ "2050-05-23": "Victoria Day",
+ "2050-07-01": "Canada Day",
+ "2050-08-01": "Civic Holiday",
+ "2050-09-05": "Labor Day",
+ "2050-10-10": "Thanksgiving Day",
+ "2050-12-26": "Christmas Day",
+ "2050-12-27": "Boxing Day"
+}
diff --git a/tests/countries/test_canada.py b/tests/countries/test_canada.py
index 47496471ab..ca164facdd 100644
--- a/tests/countries/test_canada.py
+++ b/tests/countries/test_canada.py
@@ -257,6 +257,14 @@ def test_national_day_for_truth_and_reconciliation(self):
self.assertNoHolidayName(name, holidays)
self.assertNoNonObservedHoliday(self.subdiv_holidays_non_observed[subdiv], obs_dts)
+ obs_dts = (
+ "2023-10-02",
+ "2028-10-02",
+ "2029-10-01",
+ )
+ self.assertSubdivBcHolidayName(name_observed, obs_dts)
+ self.assertNoSubdivBcNonObservedHoliday(obs_dts)
+
obs_dts = (
"2028-10-02",
"2029-10-01",
@@ -369,6 +377,13 @@ def test_remembrance_day(self):
self.assertSubdivMbOptionalHolidayName(
name, (f"{year}-11-11" for year in range(1931, self.end_year))
)
+ self.assertNoSubdivMbOptionalHolidayName(name, range(self.start_year, 1931))
+ self.assertSubdivOnOptionalHolidayName(
+ name, (f"{year}-11-11" for year in range(1931, self.end_year))
+ )
+ self.assertNoSubdivOnOptionalHolidayName(name, range(self.start_year, 1931))
+ self.assertSubdivOnOptionalHolidayName(name_observed, obs_dts)
+ self.assertNoSubdivOnNonObservedHoliday(obs_dts)
def test_boxing_day(self):
name = "Boxing Day"
@@ -388,12 +403,6 @@ def test_boxing_day(self):
)
self.assertOptionalHolidayName(name_observed, obs_dts)
self.assertNoOptionalNonObservedHoliday(obs_dts)
-
- obs_dts = (
- "2004-12-28",
- "2010-12-28",
- "2021-12-28",
- )
self.assertSubdivOnHolidayName(name_observed, obs_dts)
self.assertNoSubdivOnNonObservedHoliday(obs_dts)
@@ -500,8 +509,13 @@ def test_easter_monday(self):
self.assertNoHoliday(holidays, dts)
self.assertNoHolidayName(name, holidays)
- if subdiv in {"AB", "QC"}:
+ if subdiv in {"AB", "ON", "QC"}:
self.assertHolidayName(name, self.subdiv_optional_holidays[subdiv], dts)
+ self.assertHolidayName(
+ name, self.subdiv_optional_holidays[subdiv], self.full_range
+ )
+ else:
+ self.assertNoHolidayName(name, self.subdiv_optional_holidays[subdiv])
def test_civic_holiday_ab(self):
name = "Heritage Day"
@@ -980,7 +994,7 @@ def test_l10n_fr(self):
self.assertLocalizedHolidays(
"fr",
("2022-01-01", "Jour de l'an"),
- ("2022-01-03", "Jour de l'an (Observé)"),
+ ("2022-01-03", "Jour de l'an (observé)"),
(
"2022-02-21",
"Fête de la famille; Fête des Insulaires; Fête du Patrimoine; Journée Louis Riel",
@@ -999,9 +1013,9 @@ def test_l10n_fr(self):
("2022-07-11", "Journée des Orangistes"),
(
"2022-08-01",
- "Fête du Patrimoine; Jour de la Colombie Britannique; Jour de la Fondation; "
- "Jour du Nouveau Brunswick; Jour du Saskatchewan; Journée Terry Fox; "
- "Premier lundi d'août",
+ "Congé civique; Fête du Patrimoine; Jour de la Colombie Britannique; "
+ "Jour de la Fondation; Jour du Nouveau Brunswick; Jour du Saskatchewan; "
+ "Journée Terry Fox",
),
("2022-08-15", "Jour de la Découverte"),
("2022-09-05", "Fête du Travail"),
@@ -1010,8 +1024,8 @@ def test_l10n_fr(self):
("2022-10-10", "Action de grâce"),
("2022-11-11", "Jour du Souvenir"),
("2022-12-25", "Jour de Noël"),
- ("2022-12-26", "Boxing Day; Jour de Noël (Observé)"),
- ("2022-12-27", "Jour de Noël (Observé)"),
+ ("2022-12-26", "Boxing Day; Jour de Noël (observé)"),
+ ("2022-12-27", "Jour de Noël (observé)"),
)
def test_l10n_th(self):
diff --git a/tests/countries/test_kazakhstan.py b/tests/countries/test_kazakhstan.py
index 080165e300..2a6f26873d 100644
--- a/tests/countries/test_kazakhstan.py
+++ b/tests/countries/test_kazakhstan.py
@@ -250,31 +250,50 @@ def test_capital_day(self):
def test_constitution_day(self):
name = "Қазақстан Республикасының Конституциясы күні"
- self.assertHolidayName(name, (f"{year}-08-30" for year in range(1996, self.end_year)))
- self.assertNoHolidayName(name, range(self.start_year, 1996))
+ self.assertHolidayName(name, (f"{year}-08-30" for year in range(1996, 2026)))
+ self.assertHolidayName(name, (f"{year}-03-15" for year in range(2027, self.end_year)))
+ self.assertNoHolidayName(name, range(self.start_year, 1996), 2026)
+ self.assertNoHolidayName(name, (f"{year}-08-30" for year in range(2026, self.end_year)))
+ self.assertNoHolidayName(name, (f"{year}-03-15" for year in range(1996, 2027)))
+
obs_dts = (
"2009-08-31",
"2014-09-01",
"2015-08-31",
"2020-08-31",
"2025-09-01",
+ "2031-03-17",
+ "2036-03-17",
+ "2037-03-16",
)
self.assertHolidayName(f"{name} (қайта белгіленген демалыс)", obs_dts)
self.assertNoNonObservedHoliday(obs_dts)
def test_republic_day(self):
- name = "Республика күні"
+ name_1994 = "Республика күні"
+ name_2026 = "Қазақстан Республикасы күні"
self.assertHolidayName(
- name, (f"{year}-10-25" for year in (*range(1994, 2009), *range(2022, self.end_year)))
+ name_1994, (f"{year}-10-25" for year in (*range(1994, 2009), *range(2022, 2026)))
)
- self.assertNoHolidayName(name, range(self.start_year, 1994), range(2009, 2022))
- obs_dts = (
+ self.assertHolidayName(name_2026, (f"{year}-10-25" for year in range(2026, self.end_year)))
+ self.assertNoHolidayName(
+ name_1994, range(self.start_year, 1994), range(2009, 2022), range(2026, self.end_year)
+ )
+ self.assertNoHolidayName(name_2026, range(self.start_year, 2026))
+ obs_dts_1994 = (
"2003-10-27",
"2008-10-27",
"2025-10-27",
)
- self.assertHolidayName(f"{name} (қайта белгіленген демалыс)", obs_dts)
- self.assertNoNonObservedHoliday(obs_dts)
+ obs_dts_2026 = (
+ "2026-10-26",
+ "2031-10-27",
+ "2036-10-27",
+ "2037-10-26",
+ )
+ self.assertHolidayName(f"{name_1994} (қайта белгіленген демалыс)", obs_dts_1994)
+ self.assertHolidayName(f"{name_2026} (қайта белгіленген демалыс)", obs_dts_2026)
+ self.assertNoNonObservedHoliday(obs_dts_1994, obs_dts_2026)
def test_first_president_day(self):
name = "Қазақстан Республикасының Тұңғыш Президенті күні"
diff --git a/tests/countries/test_monaco.py b/tests/countries/test_monaco.py
index 830b603df0..0365adca2e 100644
--- a/tests/countries/test_monaco.py
+++ b/tests/countries/test_monaco.py
@@ -21,128 +21,182 @@ class TestMonaco(CommonCountryTests, TestCase):
def setUpClass(cls):
super().setUpClass(Monaco)
- def test_immaculate_conception_day(self):
- self.assertHoliday(
- "2018-12-08",
- "2019-12-09",
- "2020-12-08",
- "2021-12-08",
- "2022-12-08",
- "2023-12-08",
- "2024-12-09",
- )
+ def test_special_holidays(self):
+ self.assertHoliday("2015-01-07")
- def test_observed(self):
- observed_holidays = (
- "2010-08-16",
- "2011-05-02",
- "2011-12-26",
+ def test_new_years_day(self):
+ name = "Le jour de l'An"
+ self.assertHolidayName(name, (f"{year}-01-01" for year in self.full_range))
+ obs_dts = (
+ "2006-01-02",
"2012-01-02",
- "2015-11-02",
- "2016-05-02",
- "2016-12-26",
"2017-01-02",
- "2017-11-20",
- "2020-11-02",
- "2021-08-16",
- "2022-05-02",
- "2022-12-26",
"2023-01-02",
- "2023-11-20",
)
- self.assertHoliday(observed_holidays)
- self.assertNoNonObservedHoliday(observed_holidays)
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
- def test_2020(self):
- self.assertHolidayDatesInYear(
- 2020,
- "2020-01-01",
- "2020-01-27",
- "2020-04-13",
- "2020-05-01",
- "2020-05-21",
- "2020-06-01",
- "2020-06-11",
- "2020-08-15",
- "2020-11-01",
- "2020-11-02",
- "2020-11-19",
- "2020-12-08",
- "2020-12-25",
+ def test_saint_devotes_day(self):
+ self.assertHolidayName(
+ "Le jour de la Sainte-Dévote", (f"{year}-01-27" for year in self.full_range)
)
- def test_2021(self):
- self.assertHolidayDatesInYear(
- 2021,
- "2021-01-01",
- "2021-01-27",
+ def test_easter_monday(self):
+ name = "Le Lundi de Pâques"
+ self.assertHolidayName(
+ name,
+ "2020-04-13",
"2021-04-05",
- "2021-05-01",
- "2021-05-13",
- "2021-05-24",
- "2021-06-03",
- "2021-08-15",
- "2021-08-16",
- "2021-11-01",
- "2021-11-19",
- "2021-12-08",
- "2021-12-25",
+ "2022-04-18",
+ "2023-04-10",
+ "2024-04-01",
+ "2025-04-21",
)
+ self.assertHolidayName(name, self.full_range)
- def test_2022(self):
- self.assertHolidayDatesInYear(
- 2022,
- "2022-01-01",
- "2022-01-27",
- "2022-04-18",
- "2022-05-01",
+ def test_labor_day(self):
+ name = "Le jour de la Fête du Travail"
+ self.assertHolidayName(name, (f"{year}-05-01" for year in self.full_range))
+ obs_dts = (
+ "2005-05-02",
+ "2011-05-02",
+ "2016-05-02",
"2022-05-02",
+ )
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
+
+ def test_ascension_day(self):
+ name = "Le jour de l'Ascension"
+ self.assertHolidayName(
+ name,
+ "2020-05-21",
+ "2021-05-13",
"2022-05-26",
+ "2023-05-18",
+ "2024-05-09",
+ "2025-05-29",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_pentecost_monday(self):
+ name = "Le Lundi de Pentecôte"
+ self.assertHolidayName(
+ name,
+ "2020-06-01",
+ "2021-05-24",
"2022-06-06",
+ "2023-05-29",
+ "2024-05-20",
+ "2025-06-09",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_corpus_christi(self):
+ name = "Le jour de la Fête Dieu"
+ self.assertHolidayName(
+ name,
+ "2020-06-11",
+ "2021-06-03",
"2022-06-16",
- "2022-08-15",
- "2022-11-01",
- "2022-11-19",
- "2022-12-08",
- "2022-12-25",
+ "2023-06-08",
+ "2024-05-30",
+ "2025-06-19",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_assumption_day(self):
+ name = "Le jour de l'Assomption"
+ self.assertHolidayName(name, (f"{year}-08-15" for year in self.full_range))
+ obs_dts = (
+ "2004-08-16",
+ "2010-08-16",
+ "2021-08-16",
+ )
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
+
+ def test_all_saints_day(self):
+ name = "Le jour de la Toussaint"
+ self.assertHolidayName(name, (f"{year}-11-01" for year in self.full_range))
+ obs_dts = (
+ "2009-11-02",
+ "2015-11-02",
+ "2020-11-02",
+ )
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
+
+ def test_princes_day(self):
+ name = "Le jour de la Fête de S.A.S. le Prince Souverain"
+ self.assertHolidayName(name, (f"{year}-11-19" for year in self.full_range))
+ obs_dts = (
+ "2006-11-20",
+ "2017-11-20",
+ "2023-11-20",
+ )
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
+
+ def test_immaculate_conception(self):
+ name = "Le jour de l'Immaculée Conception"
+ name_observed = f"{name} (reporté)"
+ self.assertHolidayName(name, (f"{year}-12-08" for year in self.full_range))
+ obs_dts = (
+ "2019-12-09",
+ "2024-12-09",
+ )
+ self.assertHolidayName(name_observed, obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
+ self.assertNoHolidayName(name_observed, range(self.start_year, 2019))
+
+ def test_christmas_day(self):
+ name = "Le jour de Noël"
+ self.assertHolidayName(name, (f"{year}-12-25" for year in self.full_range))
+ obs_dts = (
+ "2005-12-26",
+ "2011-12-26",
+ "2016-12-26",
"2022-12-26",
)
+ self.assertHolidayName(f"{name} (reporté)", obs_dts)
+ self.assertNoNonObservedHoliday(obs_dts)
def test_2023(self):
- self.assertHolidayDatesInYear(
+ self.assertHolidaysInYear(
2023,
- "2023-01-01",
- "2023-01-02",
- "2023-01-27",
- "2023-04-10",
- "2023-05-01",
- "2023-05-18",
- "2023-05-29",
- "2023-06-08",
- "2023-08-15",
- "2023-11-01",
- "2023-11-19",
- "2023-11-20",
- "2023-12-08",
- "2023-12-25",
+ ("2023-01-01", "Le jour de l'An"),
+ ("2023-01-02", "Le jour de l'An (reporté)"),
+ ("2023-01-27", "Le jour de la Sainte-Dévote"),
+ ("2023-04-10", "Le Lundi de Pâques"),
+ ("2023-05-01", "Le jour de la Fête du Travail"),
+ ("2023-05-18", "Le jour de l'Ascension"),
+ ("2023-05-29", "Le Lundi de Pentecôte"),
+ ("2023-06-08", "Le jour de la Fête Dieu"),
+ ("2023-08-15", "Le jour de l'Assomption"),
+ ("2023-11-01", "Le jour de la Toussaint"),
+ ("2023-11-19", "Le jour de la Fête de S.A.S. le Prince Souverain"),
+ ("2023-11-20", "Le jour de la Fête de S.A.S. le Prince Souverain (reporté)"),
+ ("2023-12-08", "Le jour de l'Immaculée Conception"),
+ ("2023-12-25", "Le jour de Noël"),
)
def test_l10n_default(self):
self.assertLocalizedHolidays(
("2022-01-01", "Le jour de l'An"),
- ("2022-01-27", "La Sainte Dévote"),
- ("2022-04-18", "Le lundi de Pâques"),
- ("2022-05-01", "Fête de la Travaille"),
- ("2022-05-02", "Fête de la Travaille (observé)"),
- ("2022-05-26", "L'Ascension"),
- ("2022-06-06", "Le lundi de Pentecôte"),
- ("2022-06-16", "La Fête Dieu"),
- ("2022-08-15", "L'Assomption de Marie"),
- ("2022-11-01", "La Toussaint"),
- ("2022-11-19", "La Fête du Prince"),
- ("2022-12-08", "L'Immaculée Conception"),
- ("2022-12-25", "Noël"),
- ("2022-12-26", "Noël (observé)"),
+ ("2022-01-27", "Le jour de la Sainte-Dévote"),
+ ("2022-04-18", "Le Lundi de Pâques"),
+ ("2022-05-01", "Le jour de la Fête du Travail"),
+ ("2022-05-02", "Le jour de la Fête du Travail (reporté)"),
+ ("2022-05-26", "Le jour de l'Ascension"),
+ ("2022-06-06", "Le Lundi de Pentecôte"),
+ ("2022-06-16", "Le jour de la Fête Dieu"),
+ ("2022-08-15", "Le jour de l'Assomption"),
+ ("2022-11-01", "Le jour de la Toussaint"),
+ ("2022-11-19", "Le jour de la Fête de S.A.S. le Prince Souverain"),
+ ("2022-12-08", "Le jour de l'Immaculée Conception"),
+ ("2022-12-25", "Le jour de Noël"),
+ ("2022-12-26", "Le jour de Noël (reporté)"),
)
def test_l10n_en_us(self):
diff --git a/tests/financial/test_bombay_stock_exchange.py b/tests/financial/test_bombay_stock_exchange.py
index b9cf2cd239..0238e5ac1d 100644
--- a/tests/financial/test_bombay_stock_exchange.py
+++ b/tests/financial/test_bombay_stock_exchange.py
@@ -67,7 +67,7 @@ def test_l10n_gu(self):
("2023-03-07", "હોળી"),
("2023-03-30", "રામ નવમી"),
("2023-04-04", "મહાવીર જયંતિ"),
- ("2023-04-07", "ગુડ ફ્રાઈડે"),
+ ("2023-04-07", "ગુડ ફ્રાઇડે"),
("2023-04-14", "ડૉ. બાબાસાહેબ આંબેડકર જયંતિ"),
("2023-05-01", "મહારાષ્ટ્ર દિવસ"),
("2023-06-28", "બકરી ઈદ"),
@@ -77,7 +77,7 @@ def test_l10n_gu(self):
("2023-10-24", "દશેરા"),
("2023-11-14", "દિવાળી બલિપ્રતિપદા"),
("2023-11-27", "ગુરુ નાનક જયંતિ"),
- ("2023-12-25", "નાતાલ"),
+ ("2023-12-25", "નાતાલનો દિવસ"),
)
def test_l10n_hi(self):
diff --git a/tests/financial/test_nasdaq.py b/tests/financial/test_nasdaq.py
index 50a20e4165..91315a74fa 100644
--- a/tests/financial/test_nasdaq.py
+++ b/tests/financial/test_nasdaq.py
@@ -73,7 +73,7 @@ def test_l10n_gu(self):
("2024-06-19", "જુનટીન્થ રાષ્ટ્રીય સ્વતંત્રતા દિવસ"),
("2024-07-03", "સ્વતંત્રતા દિવસનો આગલો દિવસ (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
("2024-07-04", "સ્વતંત્રતા દિવસ"),
- ("2024-09-02", "મજૂર દિવસ"),
+ ("2024-09-02", "શ્રમ દિવસ"),
("2024-11-28", "થેંક્સગિવિંગ ડે"),
("2024-11-29", "થેંક્સગિવિંગ ડે પછીનો દિવસ (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
("2024-12-24", "નાતાલ પૂર્વસંધ્યા (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
@@ -89,11 +89,11 @@ def test_l10n_hi(self):
("2024-03-29", "गुड फ्राइडे"),
("2024-05-27", "मेमोरियल डे"),
("2024-06-19", "जूनटीन्थ राष्ट्रीय स्वतंत्रता दिवस"),
- ("2024-07-03", "स्वतंत्रता दिवस से एक दिन पहले (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
+ ("2024-07-03", "स्वतंत्रता दिवस से पहले का दिन (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
("2024-07-04", "स्वतंत्रता दिवस"),
- ("2024-09-02", "मज़दूर दिवस"),
+ ("2024-09-02", "श्रम दिवस"),
("2024-11-28", "थैंक्सगिविंग डे"),
("2024-11-29", "थैंक्सगिविंग डे के बाद का दिन (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
("2024-12-24", "क्रिसमस की पूर्व संध्या (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
- ("2024-12-25", "क्रिसमस का दिन"),
+ ("2024-12-25", "क्रिसमस दिवस"),
)
diff --git a/tests/financial/test_national_stock_exchange_of_india.py b/tests/financial/test_national_stock_exchange_of_india.py
index 47d7506df6..6243b6481d 100644
--- a/tests/financial/test_national_stock_exchange_of_india.py
+++ b/tests/financial/test_national_stock_exchange_of_india.py
@@ -496,7 +496,7 @@ def test_l10n_gu(self):
("2023-03-07", "હોળી"),
("2023-03-30", "રામ નવમી"),
("2023-04-04", "મહાવીર જયંતિ"),
- ("2023-04-07", "ગુડ ફ્રાઈડે"),
+ ("2023-04-07", "ગુડ ફ્રાઇડે"),
("2023-04-14", "ડૉ. બાબાસાહેબ આંબેડકર જયંતિ"),
("2023-05-01", "મહારાષ્ટ્ર દિવસ"),
("2023-06-28", "બકરી ઈદ"),
@@ -506,7 +506,7 @@ def test_l10n_gu(self):
("2023-10-24", "દશેરા"),
("2023-11-14", "દિવાળી બલિપ્રતિપદા"),
("2023-11-27", "ગુરુ નાનક જયંતિ"),
- ("2023-12-25", "નાતાલ"),
+ ("2023-12-25", "નાતાલનો દિવસ"),
)
def test_l10n_hi(self):
diff --git a/tests/financial/test_ny_stock_exchange.py b/tests/financial/test_ny_stock_exchange.py
index 72514cf382..f595e16a0f 100644
--- a/tests/financial/test_ny_stock_exchange.py
+++ b/tests/financial/test_ny_stock_exchange.py
@@ -832,7 +832,7 @@ def test_l10n_gu(self):
("2024-06-19", "જુનટીન્થ રાષ્ટ્રીય સ્વતંત્રતા દિવસ"),
("2024-07-03", "સ્વતંત્રતા દિવસનો આગલો દિવસ (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
("2024-07-04", "સ્વતંત્રતા દિવસ"),
- ("2024-09-02", "મજૂર દિવસ"),
+ ("2024-09-02", "શ્રમ દિવસ"),
("2024-11-28", "થેંક્સગિવિંગ ડે"),
("2024-11-29", "થેંક્સગિવિંગ ડે પછીનો દિવસ (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
("2024-12-24", "નાતાલ પૂર્વસંધ્યા (બજારો બપોરે 1:00 વાગ્યે બંધ થાય છે)"),
@@ -848,11 +848,11 @@ def test_l10n_hi(self):
("2024-03-29", "गुड फ्राइडे"),
("2024-05-27", "मेमोरियल डे"),
("2024-06-19", "जूनटीन्थ राष्ट्रीय स्वतंत्रता दिवस"),
- ("2024-07-03", "स्वतंत्रता दिवस से एक दिन पहले (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
+ ("2024-07-03", "स्वतंत्रता दिवस से पहले का दिन (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
("2024-07-04", "स्वतंत्रता दिवस"),
- ("2024-09-02", "मज़दूर दिवस"),
+ ("2024-09-02", "श्रम दिवस"),
("2024-11-28", "थैंक्सगिविंग डे"),
("2024-11-29", "थैंक्सगिविंग डे के बाद का दिन (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
("2024-12-24", "क्रिसमस की पूर्व संध्या (बाज़ार दोपहर 1:00 बजे बंद होते हैं)"),
- ("2024-12-25", "क्रिसमस का दिन"),
+ ("2024-12-25", "क्रिसमस दिवस"),
)
diff --git a/tests/financial/test_six_swiss_exchange.py b/tests/financial/test_six_swiss_exchange.py
new file mode 100644
index 0000000000..416ebd7a53
--- /dev/null
+++ b/tests/financial/test_six_swiss_exchange.py
@@ -0,0 +1,169 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from unittest import TestCase
+
+from holidays.financial.six_swiss_exchange import SIXSwissExchange
+from tests.common import CommonFinancialTests
+
+
+class TestSIXSwissExchange(CommonFinancialTests, TestCase):
+ @classmethod
+ def setUpClass(cls):
+ cls.full_range = range(2000, 2027)
+ super().setUpClass(SIXSwissExchange)
+
+ def test_code(self):
+ self.assertTrue(hasattr(self.holidays, "market"))
+ self.assertIsNone(getattr(self.holidays, "country", None))
+
+ def test_berchtolds_day(self):
+ name = "Berchtoldstag"
+ years_absent = {2000, 2005, 2010, 2011, 2016, 2021, 2022}
+ self.assertNoHolidayName(name, years_absent)
+ self.assertHolidayName(
+ name, (year for year in self.full_range if year not in years_absent)
+ )
+
+ def test_christmas_eve(self):
+ name = "Heiligabend"
+ years_absent = {2000, 2005, 2006, 2011, 2016, 2017, 2022, 2023}
+ self.assertNoHolidayName(name, years_absent)
+ self.assertHolidayName(
+ name, (year for year in self.full_range if year not in years_absent)
+ )
+
+ def test_new_years_eve(self):
+ name = "Vortag vor Neujahr"
+ years_absent = {2000, 2005, 2006, 2011, 2016, 2017, 2022, 2023}
+ self.assertNoHolidayName(name, years_absent)
+ self.assertHolidayName(
+ name, (year for year in self.full_range if year not in years_absent)
+ )
+
+ def test_2025(self):
+ self.assertHolidaysInYear(
+ 2025,
+ ("2025-01-01", "Neujahrstag"),
+ ("2025-01-02", "Berchtoldstag"),
+ ("2025-04-18", "Karfreitag"),
+ ("2025-04-21", "Ostermontag"),
+ ("2025-05-01", "Tag der Arbeit"),
+ ("2025-05-29", "Auffahrt"),
+ ("2025-06-09", "Pfingstmontag"),
+ ("2025-08-01", "Nationalfeiertag"),
+ ("2025-12-24", "Heiligabend"),
+ ("2025-12-25", "Weihnachten"),
+ ("2025-12-26", "Stephanstag"),
+ ("2025-12-31", "Vortag vor Neujahr"),
+ )
+
+ def test_l10n_de(self):
+ self.assertLocalizedHolidays(
+ ("2024-01-01", "Neujahrstag"),
+ ("2024-01-02", "Berchtoldstag"),
+ ("2024-03-29", "Karfreitag"),
+ ("2024-04-01", "Ostermontag"),
+ ("2024-05-01", "Tag der Arbeit"),
+ ("2024-05-09", "Auffahrt"),
+ ("2024-05-20", "Pfingstmontag"),
+ ("2024-08-01", "Nationalfeiertag"),
+ ("2024-12-24", "Heiligabend"),
+ ("2024-12-25", "Weihnachten"),
+ ("2024-12-26", "Stephanstag"),
+ ("2024-12-31", "Vortag vor Neujahr"),
+ )
+
+ def test_l10n_en_us(self):
+ self.assertLocalizedHolidays(
+ "en_US",
+ ("2024-01-01", "New Year's Day"),
+ ("2024-01-02", "Saint Berchtold's Day"),
+ ("2024-03-29", "Good Friday"),
+ ("2024-04-01", "Easter Monday"),
+ ("2024-05-01", "Labor Day"),
+ ("2024-05-09", "Ascension Day"),
+ ("2024-05-20", "Pentecost Monday"),
+ ("2024-08-01", "National Day"),
+ ("2024-12-24", "Christmas Eve"),
+ ("2024-12-25", "Christmas Day"),
+ ("2024-12-26", "Saint Stephen's Day"),
+ ("2024-12-31", "New Year's Eve"),
+ )
+
+ def test_l10n_fr(self):
+ self.assertLocalizedHolidays(
+ "fr",
+ ("2024-01-01", "Nouvel An"),
+ ("2024-01-02", "Saint-Berchtold"),
+ ("2024-03-29", "Vendredi saint"),
+ ("2024-04-01", "Lundi de Pâques"),
+ ("2024-05-01", "Fête du Travail"),
+ ("2024-05-09", "Ascension"),
+ ("2024-05-20", "Lundi de Pentecôte"),
+ ("2024-08-01", "Fête nationale"),
+ ("2024-12-24", "Veille de Noël"),
+ ("2024-12-25", "Noël"),
+ ("2024-12-26", "Saint-Étienne"),
+ ("2024-12-31", "Réveillon de la Saint-Sylvestre"),
+ )
+
+ def test_l10n_it(self):
+ self.assertLocalizedHolidays(
+ "it",
+ ("2024-01-01", "Capodanno"),
+ ("2024-01-02", "Giorno di Bertoldo"),
+ ("2024-03-29", "Venerdì Santo"),
+ ("2024-04-01", "Lunedì dell'Angelo"),
+ ("2024-05-01", "Festa del lavoro"),
+ ("2024-05-09", "Ascensione di Gesù"),
+ ("2024-05-20", "Lunedì di Pentecoste"),
+ ("2024-08-01", "Festa nazionale"),
+ ("2024-12-24", "Vigilia di Natale"),
+ ("2024-12-25", "Natale"),
+ ("2024-12-26", "Giorno di Santo Stefano"),
+ ("2024-12-31", "Vigilia di Capodanno"),
+ )
+
+ def test_l10n_th(self):
+ self.assertLocalizedHolidays(
+ "th",
+ ("2024-01-01", "วันขึ้นปีใหม่"),
+ ("2024-01-02", "วันสมโภชนักบุญแบร์กโทลด์"),
+ ("2024-03-29", "วันศุกร์ประเสริฐ"),
+ ("2024-04-01", "วันจันทร์อีสเตอร์"),
+ ("2024-05-01", "วันแรงงาน"),
+ ("2024-05-09", "วันสมโภชพระเยซูเจ้าเสด็จขึ้นสวรรค์"),
+ ("2024-05-20", "วันจันทร์หลังวันสมโภชพระจิตเจ้า"),
+ ("2024-08-01", "วันชาติสวิตเซอร์แลนด์"),
+ ("2024-12-24", "วันคริสต์มาสอีฟ"),
+ ("2024-12-25", "วันคริสต์มาส"),
+ ("2024-12-26", "วันสมโภชนักบุญสเตเฟน"),
+ ("2024-12-31", "วันสิ้นปี"),
+ )
+
+ def test_l10n_uk(self):
+ self.assertLocalizedHolidays(
+ "uk",
+ ("2024-01-01", "Новий рік"),
+ ("2024-01-02", "День Святого Бертольда"),
+ ("2024-03-29", "Страсна пʼятниця"),
+ ("2024-04-01", "Великодній понеділок"),
+ ("2024-05-01", "День праці"),
+ ("2024-05-09", "Вознесіння Господнє"),
+ ("2024-05-20", "Другий день Пʼятидесятниці"),
+ ("2024-08-01", "Національне свято"),
+ ("2024-12-24", "Святвечір"),
+ ("2024-12-25", "Різдво Христове"),
+ ("2024-12-26", "День Святого Стефана"),
+ ("2024-12-31", "Переддень Нового року"),
+ )
diff --git a/tests/financial/test_toronto_stock_exchange.py b/tests/financial/test_toronto_stock_exchange.py
new file mode 100644
index 0000000000..eb062bf8b8
--- /dev/null
+++ b/tests/financial/test_toronto_stock_exchange.py
@@ -0,0 +1,318 @@
+# holidays
+# --------
+# A fast, efficient Python library for generating country, province and state
+# specific sets of holidays on the fly. It aims to make determining whether a
+# specific date is a holiday as fast and flexible as possible.
+#
+# Authors: Vacanza Team and individual contributors (see CONTRIBUTORS file)
+# dr-prodigy (c) 2017-2023
+# ryanss (c) 2014-2017
+# Website: https://github.com/vacanza/holidays
+# License: MIT (see LICENSE file)
+
+from unittest import TestCase
+
+from holidays.financial.toronto_stock_exchange import TorontoStockExchange
+from tests.common import CommonFinancialTests
+
+
+class TestTorontoStockExchange(CommonFinancialTests, TestCase):
+ @classmethod
+ def setUpClass(cls):
+ super().setUpClass(TorontoStockExchange)
+
+ def test_special_holidays(self):
+ self.assertHoliday("2008-12-17")
+
+ def test_new_years_day(self):
+ name = "New Year's Day"
+ self.assertNonObservedHolidayName(name, (f"{year}-01-01" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2005-01-03",
+ "2006-01-02",
+ "2011-01-03",
+ "2012-01-02",
+ "2017-01-02",
+ "2022-01-03",
+ "2023-01-02",
+ )
+ self.assertNoHoliday(
+ "2005-01-01",
+ "2006-01-01",
+ "2011-01-01",
+ "2012-01-01",
+ "2017-01-01",
+ "2022-01-01",
+ "2023-01-01",
+ )
+
+ def test_family_day(self):
+ name = "Family Day"
+ self.assertHolidayName(
+ name,
+ "2020-02-17",
+ "2021-02-15",
+ "2022-02-21",
+ "2023-02-20",
+ "2024-02-19",
+ "2025-02-17",
+ )
+ self.assertHolidayName(name, range(2008, self.end_year))
+ self.assertNoHolidayName(name, range(self.start_year, 2008))
+
+ def test_good_friday(self):
+ name = "Good Friday"
+ self.assertHolidayName(
+ name,
+ "2020-04-10",
+ "2021-04-02",
+ "2022-04-15",
+ "2023-04-07",
+ "2024-03-29",
+ "2025-04-18",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_victoria_day(self):
+ name = "Victoria Day"
+ self.assertHolidayName(
+ name,
+ "2020-05-18",
+ "2021-05-24",
+ "2022-05-23",
+ "2023-05-22",
+ "2024-05-20",
+ "2025-05-19",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_canada_day(self):
+ name = "Canada Day"
+ self.assertNonObservedHolidayName(name, (f"{year}-07-01" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2006-07-03",
+ "2007-07-02",
+ "2012-07-02",
+ "2017-07-03",
+ "2018-07-02",
+ "2023-07-03",
+ )
+ self.assertNoHoliday(
+ "2006-07-01",
+ "2007-07-01",
+ "2012-07-01",
+ "2017-07-01",
+ "2018-07-01",
+ "2023-07-01",
+ )
+
+ def test_civic_holiday(self):
+ name = "Civic Holiday"
+ self.assertHolidayName(
+ name,
+ "2020-08-03",
+ "2021-08-02",
+ "2022-08-01",
+ "2023-08-07",
+ "2024-08-05",
+ "2025-08-04",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_labor_day(self):
+ name = "Labour Day"
+ self.assertHolidayName(
+ name,
+ "2020-09-07",
+ "2021-09-06",
+ "2022-09-05",
+ "2023-09-04",
+ "2024-09-02",
+ "2025-09-01",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_thanksgiving_day(self):
+ name = "Thanksgiving Day"
+ self.assertHolidayName(
+ name,
+ "2020-10-12",
+ "2021-10-11",
+ "2022-10-10",
+ "2023-10-09",
+ "2024-10-14",
+ "2025-10-13",
+ )
+ self.assertHolidayName(name, self.full_range)
+
+ def test_christmas_day(self):
+ name = "Christmas Day"
+ self.assertNonObservedHolidayName(name, (f"{year}-12-25" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2004-12-27",
+ "2005-12-27",
+ "2010-12-27",
+ "2011-12-26",
+ "2016-12-26",
+ "2021-12-27",
+ "2022-12-26",
+ )
+ self.assertNoHoliday(
+ "2004-12-25",
+ "2005-12-25",
+ "2010-12-25",
+ "2011-12-25",
+ "2016-12-25",
+ "2021-12-25",
+ "2022-12-25",
+ )
+
+ def test_boxing_day(self):
+ name = "Boxing Day"
+ self.assertNonObservedHolidayName(name, (f"{year}-12-26" for year in self.full_range))
+ self.assertHolidayName(
+ name,
+ "2004-12-28",
+ "2005-12-26", # special case.
+ "2009-12-28",
+ "2010-12-28",
+ "2011-12-27",
+ "2015-12-28",
+ "2016-12-27",
+ "2020-12-28",
+ "2021-12-28",
+ "2022-12-27",
+ )
+ self.assertNoHoliday(
+ "2004-12-26",
+ "2009-12-26",
+ "2010-12-26",
+ "2015-12-26",
+ "2020-12-26",
+ "2021-12-26",
+ )
+
+ def test_christmas_eve_half_day(self):
+ name = "Christmas Eve (markets close at 1:00 p.m. ET)"
+ self.assertNoHolidayName(name)
+ self.assertHalfDayHolidayName(
+ name,
+ "2020-12-24",
+ "2021-12-24",
+ "2024-12-24",
+ "2025-12-24",
+ "2026-12-24",
+ )
+ self.assertNoHalfDayHolidayName(
+ name,
+ "2022-12-24",
+ "2023-12-24",
+ )
+
+ def test_2025(self):
+ self.assertHolidaysInYear(
+ 2025,
+ ("2025-01-01", "New Year's Day"),
+ ("2025-02-17", "Family Day"),
+ ("2025-04-18", "Good Friday"),
+ ("2025-05-19", "Victoria Day"),
+ ("2025-07-01", "Canada Day"),
+ ("2025-08-04", "Civic Holiday"),
+ ("2025-09-01", "Labour Day"),
+ ("2025-10-13", "Thanksgiving Day"),
+ ("2025-12-25", "Christmas Day"),
+ ("2025-12-26", "Boxing Day"),
+ )
+
+ def test_half_day_2025(self):
+ self.assertHalfDayHolidaysInYear(
+ 2025,
+ ("2025-12-24", "Christmas Eve (markets close at 1:00 p.m. ET)"),
+ )
+
+ def test_l10n_default(self):
+ self.assertLocalizedHolidays(
+ ("2008-01-01", "New Year's Day"),
+ ("2008-02-18", "Family Day"),
+ ("2008-03-21", "Good Friday"),
+ ("2008-05-19", "Victoria Day"),
+ ("2008-07-01", "Canada Day"),
+ ("2008-08-04", "Civic Holiday"),
+ ("2008-09-01", "Labour Day"),
+ ("2008-10-13", "Thanksgiving Day"),
+ ("2008-12-17", "Market Closed (Computer Failure)"),
+ ("2008-12-24", "Christmas Eve (markets close at 1:00 p.m. ET)"),
+ ("2008-12-25", "Christmas Day"),
+ ("2008-12-26", "Boxing Day"),
+ )
+
+ def test_l10n_en_us(self):
+ self.assertLocalizedHolidays(
+ "en_US",
+ ("2008-01-01", "New Year's Day"),
+ ("2008-02-18", "Family Day"),
+ ("2008-03-21", "Good Friday"),
+ ("2008-05-19", "Victoria Day"),
+ ("2008-07-01", "Canada Day"),
+ ("2008-08-04", "Civic Holiday"),
+ ("2008-09-01", "Labor Day"),
+ ("2008-10-13", "Thanksgiving Day"),
+ ("2008-12-17", "Market Closed (Computer Failure)"),
+ ("2008-12-24", "Christmas Eve (markets close at 1:00 p.m. ET)"),
+ ("2008-12-25", "Christmas Day"),
+ ("2008-12-26", "Boxing Day"),
+ )
+
+ def test_l10n_fr(self):
+ self.assertLocalizedHolidays(
+ "fr",
+ ("2008-01-01", "Jour de l'an"),
+ ("2008-02-18", "Fête de la famille"),
+ ("2008-03-21", "Vendredi saint"),
+ ("2008-05-19", "Fête de la Reine"),
+ ("2008-07-01", "Fête du Canada"),
+ ("2008-08-04", "Premier lundi d'août"),
+ ("2008-09-01", "Fête du Travail"),
+ ("2008-10-13", "Action de grâce"),
+ ("2008-12-17", "Marché fermé (panne informatique)"),
+ ("2008-12-24", "Veille de Noël (fermeture des marchés à 13h00 HE)"),
+ ("2008-12-25", "Jour de Noël"),
+ ("2008-12-26", "Boxing Day"),
+ )
+
+ def test_l10n_ar(self):
+ self.assertLocalizedHolidays(
+ "ar",
+ ("2008-01-01", "يوم السنة الجديدة"),
+ ("2008-02-18", "يوم العائلة"),
+ ("2008-03-21", "الجمعة العظيمة"),
+ ("2008-05-19", "يوم فيكتوريا"),
+ ("2008-07-01", "يوم كندا"),
+ ("2008-08-04", "عطلة المدنية"),
+ ("2008-09-01", "عيد العمال"),
+ ("2008-10-13", "عيد الشكر"),
+ ("2008-12-17", "السوق مغلق (عطل في الكمبيوتر)"),
+ ("2008-12-24", "عشية عيد الميلاد (تغلق الأسواق في الساعة 1:00 مساءً بالتوقيت الشرقي)"),
+ ("2008-12-25", "عيد الميلاد"),
+ ("2008-12-26", "يوم الملاكمة"),
+ )
+
+ def test_l10n_th(self):
+ self.assertLocalizedHolidays(
+ "th",
+ ("2008-01-01", "วันขึ้นปีใหม่"),
+ ("2008-02-18", "วันครอบครัว"),
+ ("2008-03-21", "วันศุกร์ประเสริฐ"),
+ ("2008-05-19", "วันวิคตอเรีย"),
+ ("2008-07-01", "วันชาติแคนาดา"),
+ ("2008-08-04", "วันหยุดราชการ"),
+ ("2008-09-01", "วันแรงงาน"),
+ ("2008-10-13", "วันขอบคุณพระเจ้า"),
+ ("2008-12-17", "ตลาดปิด (ระบบคอมพิวเตอร์ขัดข้อง)"),
+ ("2008-12-24", "วันคริสต์มาสอีฟ (ตลาดปิดเวลา 13:00 น. ตามเวลา ET)"),
+ ("2008-12-25", "วันคริสต์มาส"),
+ ("2008-12-26", "วันเปิดกล่องของขวัญ"),
+ )
diff --git a/tests/test_generate_ics.py b/tests/test_generate_ics.py
index 9a60227dfe..9ae30dec96 100644
--- a/tests/test_generate_ics.py
+++ b/tests/test_generate_ics.py
@@ -403,6 +403,44 @@ def test_filename_default(self):
self.assertTrue((temp_dir / "US_2024.ics").exists())
+ def test_filename_subdivision(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv("US", "--subdiv", "CA", "--years", "2025"):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "US_CA_2025.ics").exists())
+
+ def test_filename_language(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv("AT", "--language", "uk", "--years", "2025"):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "AT_UK_2025.ics").exists())
+
+ def test_filename_categories(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv("AT", "--categories", "bank", "--years", "2025"):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "AT_BANK_2025.ics").exists())
+
+ def test_filename_language_categories_subdivision(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv(
+ "AT",
+ "--subdiv",
+ "1",
+ "--language",
+ "uk",
+ "--categories",
+ "bank,public",
+ "--years",
+ "2025",
+ ):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "AT_1_UK_BANK_PUBLIC_2025.ics").exists())
+
def test_filename_year_range(self):
with self.temp_cwd() as temp_dir:
with self.argv("US", "--years", "2024-2026"):
@@ -418,18 +456,77 @@ def test_filename_year_offset(self):
self.assertTrue((temp_dir / "US_2025_2031.ics").exists())
- def test_filename_subdivision(self):
+ def test_output_template(self):
with self.temp_cwd() as temp_dir:
- with self.argv("US", "--subdiv", "CA", "--years", "2025"):
+ with self.argv(
+ "US", "--years", "2025", "--output-template", "{start_year}_{code}.ics"
+ ):
IcsGenerator().run()
- self.assertTrue((temp_dir / "US_CA_2025.ics").exists())
+ self.assertTrue((temp_dir / "2025_US.ics").exists())
+
+ def test_output_template_default_values(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv(
+ "US",
+ "--years",
+ "2025",
+ "--output-template",
+ "{code}_{subdiv}_{language}_{categories}.ics",
+ ):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "US_ALL_DEFAULT_PUBLIC.ics").exists())
+
+ @patch("holidays.generate_ics.datetime", MockDatetime)
+ def test_output_template_today(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv("US", "--years", "2025", "--output-template", "{code}_{today}.ics"):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "US_20250701.ics").exists())
+
+ def test_output_template_with_braces(self):
+ with self.temp_cwd() as temp_dir:
+ with self.argv("US", "--years", "2025", "--output-template", "{{{code}}}.ics"):
+ IcsGenerator().run()
+
+ self.assertTrue((temp_dir / "{US}.ics").exists())
+
+ def test_output_template_unknown_placeholder(self):
+ for template in ("{foo}", "{code!r}", "{code:>10}"):
+ with self.subTest(template=template):
+ with self.argv("US", "--output-template", template):
+ with self.assertRaises(SystemExit) as context:
+ IcsGenerator().run()
+
+ self.assertEqual(
+ str(context.exception),
+ f"Unknown placeholder '{template}' in output template. "
+ "Supported placeholders: {categories}, {code}, {end_year}, {language}, "
+ "{start_year}, {subdiv}, {today}",
+ )
+
+ def test_output_template_without_placeholders(self):
+ with self.argv("US", "--output-template", "calendar.ics"):
+ with self.assertRaises(SystemExit) as context:
+ IcsGenerator().run()
+
+ self.assertEqual(
+ str(context.exception), "Output template must contain at least one placeholder"
+ )
+
+ def test_output_template_invalid(self):
+ for template in ("{", "}", "{code:{bad}}", "{code:{", "code}"):
+ with self.subTest(template=template):
+ with self.argv("US", "--output-template", template):
+ with self.assertRaises(SystemExit) as context:
+ IcsGenerator().run()
+
+ self.assertEqual(str(context.exception), "Invalid output template")
def test_generate_calendar_error(self):
- with patch(
- "holidays.ical.ICalExporter.save_ics",
- side_effect=ValueError("unknown error"),
- ):
+ with patch("holidays.ical.ICalExporter.save_ics", side_effect=ValueError("unknown error")):
with self.argv("US"):
with self.assertRaises(SystemExit) as context:
IcsGenerator().run()
diff --git a/tests/test_holiday_base.py b/tests/test_holiday_base.py
index 04dba8228b..e0c7166285 100644
--- a/tests/test_holiday_base.py
+++ b/tests/test_holiday_base.py
@@ -1477,6 +1477,34 @@ def test_get_closest_holiday_unsorted_calendars(self):
(date(2024, 1, 15), "Martin Luther King Jr. Day"),
)
+ def test_get_closest_holiday_updates_years(self):
+ us = US(years=2024)
+ self.assertEqual(us.years, {2024})
+
+ us.get_closest_holiday(date(2024, 12, 31), "forward")
+ self.assertIn(2025, us.years)
+
+ us_2 = US(years=2024)
+ self.assertEqual(us_2.years, {2024})
+
+ us_2.get_closest_holiday(date(2024, 1, 1), "backward")
+ self.assertIn(2023, us_2.years)
+
+ def test_get_closest_holiday_expand_false_keeps_state(self):
+ us = US(years=2024, expand=False)
+ keys_before = set(us.keys())
+
+ self.assertIsNone(us.get_closest_holiday(date(2024, 12, 31), "forward"))
+ self.assertEqual(us.years, {2024})
+ self.assertEqual(set(us.keys()), keys_before)
+
+ self.assertEqual(
+ us.get_closest_holiday(date(2024, 12, 31), "backward"),
+ (date(2024, 12, 25), "Christmas Day"),
+ )
+ self.assertEqual(us.years, {2024})
+ self.assertEqual(set(us.keys()), keys_before)
+
def test_get_closest_holiday_invalid_direction(self):
self.assertRaises(
AttributeError, lambda: HolidayBase().get_closest_holiday(direction="invalid")
diff --git a/uv.lock b/uv.lock
index 0a6584e018..b706e79c3c 100644
--- a/uv.lock
+++ b/uv.lock
@@ -2,7 +2,8 @@ version = 1
revision = 3
requires-python = ">=3.10"
resolution-markers = [
- "python_full_version >= '3.11'",
+ "python_full_version >= '3.12'",
+ "python_full_version == '3.11.*'",
"python_full_version < '3.11'",
]
@@ -17,11 +18,11 @@ wheels = [
[[package]]
name = "certifi"
-version = "2026.2.25"
+version = "2026.6.17"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c9/c7/424b75da314c1045981bd9777432fad05a9e0c69daa4ed7e308bbaffe405/certifi-2026.6.17.tar.gz", hash = "sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432", size = 134594, upload-time = "2026-06-17T10:31:07.894Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" },
+ { url = "https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl", hash = "sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db", size = 133289, upload-time = "2026-06-17T10:31:06.348Z" },
]
[[package]]
@@ -117,119 +118,119 @@ wheels = [
[[package]]
name = "charset-normalizer"
-version = "3.4.6"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/7b/60/e3bec1881450851b087e301bedc3daa9377a4d45f1c26aa90b0b235e38aa/charset_normalizer-3.4.6.tar.gz", hash = "sha256:1ae6b62897110aa7c79ea2f5dd38d1abca6db663687c0b1ad9aed6f6bae3d9d6", size = 143363, upload-time = "2026-03-15T18:53:25.478Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/e6/8c/2c56124c6dc53a774d435f985b5973bc592f42d437be58c0c92d65ae7296/charset_normalizer-3.4.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e1d8ca8611099001949d1cdfaefc510cf0f212484fe7c565f735b68c78c3c95", size = 298751, upload-time = "2026-03-15T18:50:00.003Z" },
- { url = "https://files.pythonhosted.org/packages/86/2a/2a7db6b314b966a3bcad8c731c0719c60b931b931de7ae9f34b2839289ee/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e25369dc110d58ddf29b949377a93e0716d72a24f62bad72b2b39f155949c1fd", size = 200027, upload-time = "2026-03-15T18:50:01.702Z" },
- { url = "https://files.pythonhosted.org/packages/68/f2/0fe775c74ae25e2a3b07b01538fc162737b3e3f795bada3bc26f4d4d495c/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:259695e2ccc253feb2a016303543d691825e920917e31f894ca1a687982b1de4", size = 220741, upload-time = "2026-03-15T18:50:03.194Z" },
- { url = "https://files.pythonhosted.org/packages/10/98/8085596e41f00b27dd6aa1e68413d1ddda7e605f34dd546833c61fddd709/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:dda86aba335c902b6149a02a55b38e96287157e609200811837678214ba2b1db", size = 215802, upload-time = "2026-03-15T18:50:05.859Z" },
- { url = "https://files.pythonhosted.org/packages/fd/ce/865e4e09b041bad659d682bbd98b47fb490b8e124f9398c9448065f64fee/charset_normalizer-3.4.6-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fb3c322c81d20567019778cb5a4a6f2dc1c200b886bc0d636238e364848c89", size = 207908, upload-time = "2026-03-15T18:50:07.676Z" },
- { url = "https://files.pythonhosted.org/packages/a8/54/8c757f1f7349262898c2f169e0d562b39dcb977503f18fdf0814e923db78/charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:4482481cb0572180b6fd976a4d5c72a30263e98564da68b86ec91f0fe35e8565", size = 194357, upload-time = "2026-03-15T18:50:09.327Z" },
- { url = "https://files.pythonhosted.org/packages/6f/29/e88f2fac9218907fc7a70722b393d1bbe8334c61fe9c46640dba349b6e66/charset_normalizer-3.4.6-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:39f5068d35621da2881271e5c3205125cc456f54e9030d3f723288c873a71bf9", size = 205610, upload-time = "2026-03-15T18:50:10.732Z" },
- { url = "https://files.pythonhosted.org/packages/4c/c5/21d7bb0cb415287178450171d130bed9d664211fdd59731ed2c34267b07d/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:8bea55c4eef25b0b19a0337dc4e3f9a15b00d569c77211fa8cde38684f234fb7", size = 203512, upload-time = "2026-03-15T18:50:12.535Z" },
- { url = "https://files.pythonhosted.org/packages/a4/be/ce52f3c7fdb35cc987ad38a53ebcef52eec498f4fb6c66ecfe62cfe57ba2/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f0cdaecd4c953bfae0b6bb64910aaaca5a424ad9c72d85cb88417bb9814f7550", size = 195398, upload-time = "2026-03-15T18:50:14.236Z" },
- { url = "https://files.pythonhosted.org/packages/81/a0/3ab5dd39d4859a3555e5dadfc8a9fa7f8352f8c183d1a65c90264517da0e/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:150b8ce8e830eb7ccb029ec9ca36022f756986aaaa7956aad6d9ec90089338c0", size = 221772, upload-time = "2026-03-15T18:50:15.581Z" },
- { url = "https://files.pythonhosted.org/packages/04/6e/6a4e41a97ba6b2fa87f849c41e4d229449a586be85053c4d90135fe82d26/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:e68c14b04827dd76dcbd1aeea9e604e3e4b78322d8faf2f8132c7138efa340a8", size = 205759, upload-time = "2026-03-15T18:50:17.047Z" },
- { url = "https://files.pythonhosted.org/packages/db/3b/34a712a5ee64a6957bf355b01dc17b12de457638d436fdb05d01e463cd1c/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3778fd7d7cd04ae8f54651f4a7a0bd6e39a0cf20f801720a4c21d80e9b7ad6b0", size = 216938, upload-time = "2026-03-15T18:50:18.44Z" },
- { url = "https://files.pythonhosted.org/packages/cb/05/5bd1e12da9ab18790af05c61aafd01a60f489778179b621ac2a305243c62/charset_normalizer-3.4.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:dad6e0f2e481fffdcf776d10ebee25e0ef89f16d691f1e5dee4b586375fdc64b", size = 210138, upload-time = "2026-03-15T18:50:19.852Z" },
- { url = "https://files.pythonhosted.org/packages/bd/8e/3cb9e2d998ff6b21c0a1860343cb7b83eba9cdb66b91410e18fc4969d6ab/charset_normalizer-3.4.6-cp310-cp310-win32.whl", hash = "sha256:74a2e659c7ecbc73562e2a15e05039f1e22c75b7c7618b4b574a3ea9118d1557", size = 144137, upload-time = "2026-03-15T18:50:21.505Z" },
- { url = "https://files.pythonhosted.org/packages/d8/8f/78f5489ffadb0db3eb7aff53d31c24531d33eb545f0c6f6567c25f49a5ff/charset_normalizer-3.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:aa9cccf4a44b9b62d8ba8b4dd06c649ba683e4bf04eea606d2e94cfc2d6ff4d6", size = 154244, upload-time = "2026-03-15T18:50:22.81Z" },
- { url = "https://files.pythonhosted.org/packages/e4/74/e472659dffb0cadb2f411282d2d76c60da1fc94076d7fffed4ae8a93ec01/charset_normalizer-3.4.6-cp310-cp310-win_arm64.whl", hash = "sha256:e985a16ff513596f217cee86c21371b8cd011c0f6f056d0920aa2d926c544058", size = 143312, upload-time = "2026-03-15T18:50:24.074Z" },
- { url = "https://files.pythonhosted.org/packages/62/28/ff6f234e628a2de61c458be2779cb182bc03f6eec12200d4a525bbfc9741/charset_normalizer-3.4.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:82060f995ab5003a2d6e0f4ad29065b7672b6593c8c63559beefe5b443242c3e", size = 293582, upload-time = "2026-03-15T18:50:25.454Z" },
- { url = "https://files.pythonhosted.org/packages/1c/b7/b1a117e5385cbdb3205f6055403c2a2a220c5ea80b8716c324eaf75c5c95/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60c74963d8350241a79cb8feea80e54d518f72c26db618862a8f53e5023deaf9", size = 197240, upload-time = "2026-03-15T18:50:27.196Z" },
- { url = "https://files.pythonhosted.org/packages/a1/5f/2574f0f09f3c3bc1b2f992e20bce6546cb1f17e111c5be07308dc5427956/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f6e4333fb15c83f7d1482a76d45a0818897b3d33f00efd215528ff7c51b8e35d", size = 217363, upload-time = "2026-03-15T18:50:28.601Z" },
- { url = "https://files.pythonhosted.org/packages/4a/d1/0ae20ad77bc949ddd39b51bf383b6ca932f2916074c95cad34ae465ab71f/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:bc72863f4d9aba2e8fd9085e63548a324ba706d2ea2c83b260da08a59b9482de", size = 212994, upload-time = "2026-03-15T18:50:30.102Z" },
- { url = "https://files.pythonhosted.org/packages/60/ac/3233d262a310c1b12633536a07cde5ddd16985e6e7e238e9f3f9423d8eb9/charset_normalizer-3.4.6-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9cc4fc6c196d6a8b76629a70ddfcd4635a6898756e2d9cac5565cf0654605d73", size = 204697, upload-time = "2026-03-15T18:50:31.654Z" },
- { url = "https://files.pythonhosted.org/packages/25/3c/8a18fc411f085b82303cfb7154eed5bd49c77035eb7608d049468b53f87c/charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:0c173ce3a681f309f31b87125fecec7a5d1347261ea11ebbb856fa6006b23c8c", size = 191673, upload-time = "2026-03-15T18:50:33.433Z" },
- { url = "https://files.pythonhosted.org/packages/ff/a7/11cfe61d6c5c5c7438d6ba40919d0306ed83c9ab957f3d4da2277ff67836/charset_normalizer-3.4.6-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:c907cdc8109f6c619e6254212e794d6548373cc40e1ec75e6e3823d9135d29cc", size = 201120, upload-time = "2026-03-15T18:50:35.105Z" },
- { url = "https://files.pythonhosted.org/packages/b5/10/cf491fa1abd47c02f69687046b896c950b92b6cd7337a27e6548adbec8e4/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:404a1e552cf5b675a87f0651f8b79f5f1e6fd100ee88dc612f89aa16abd4486f", size = 200911, upload-time = "2026-03-15T18:50:36.819Z" },
- { url = "https://files.pythonhosted.org/packages/28/70/039796160b48b18ed466fde0af84c1b090c4e288fae26cd674ad04a2d703/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e3c701e954abf6fc03a49f7c579cc80c2c6cc52525340ca3186c41d3f33482ef", size = 192516, upload-time = "2026-03-15T18:50:38.228Z" },
- { url = "https://files.pythonhosted.org/packages/ff/34/c56f3223393d6ff3124b9e78f7de738047c2d6bc40a4f16ac0c9d7a1cb3c/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:7a6967aaf043bceabab5412ed6bd6bd26603dae84d5cb75bf8d9a74a4959d398", size = 218795, upload-time = "2026-03-15T18:50:39.664Z" },
- { url = "https://files.pythonhosted.org/packages/e8/3b/ce2d4f86c5282191a041fdc5a4ce18f1c6bd40a5bd1f74cf8625f08d51c1/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:5feb91325bbceade6afab43eb3b508c63ee53579fe896c77137ded51c6b6958e", size = 201833, upload-time = "2026-03-15T18:50:41.552Z" },
- { url = "https://files.pythonhosted.org/packages/3b/9b/b6a9f76b0fd7c5b5ec58b228ff7e85095370282150f0bd50b3126f5506d6/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:f820f24b09e3e779fe84c3c456cb4108a7aa639b0d1f02c28046e11bfcd088ed", size = 213920, upload-time = "2026-03-15T18:50:43.33Z" },
- { url = "https://files.pythonhosted.org/packages/ae/98/7bc23513a33d8172365ed30ee3a3b3fe1ece14a395e5fc94129541fc6003/charset_normalizer-3.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b35b200d6a71b9839a46b9b7fff66b6638bb52fc9658aa58796b0326595d3021", size = 206951, upload-time = "2026-03-15T18:50:44.789Z" },
- { url = "https://files.pythonhosted.org/packages/32/73/c0b86f3d1458468e11aec870e6b3feac931facbe105a894b552b0e518e79/charset_normalizer-3.4.6-cp311-cp311-win32.whl", hash = "sha256:9ca4c0b502ab399ef89248a2c84c54954f77a070f28e546a85e91da627d1301e", size = 143703, upload-time = "2026-03-15T18:50:46.103Z" },
- { url = "https://files.pythonhosted.org/packages/c6/e3/76f2facfe8eddee0bbd38d2594e709033338eae44ebf1738bcefe0a06185/charset_normalizer-3.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:a9e68c9d88823b274cf1e72f28cb5dc89c990edf430b0bfd3e2fb0785bfeabf4", size = 153857, upload-time = "2026-03-15T18:50:47.563Z" },
- { url = "https://files.pythonhosted.org/packages/e2/dc/9abe19c9b27e6cd3636036b9d1b387b78c40dedbf0b47f9366737684b4b0/charset_normalizer-3.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:97d0235baafca5f2b09cf332cc275f021e694e8362c6bb9c96fc9a0eb74fc316", size = 142751, upload-time = "2026-03-15T18:50:49.234Z" },
- { url = "https://files.pythonhosted.org/packages/e5/62/c0815c992c9545347aeea7859b50dc9044d147e2e7278329c6e02ac9a616/charset_normalizer-3.4.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:2ef7fedc7a6ecbe99969cd09632516738a97eeb8bd7258bf8a0f23114c057dab", size = 295154, upload-time = "2026-03-15T18:50:50.88Z" },
- { url = "https://files.pythonhosted.org/packages/a8/37/bdca6613c2e3c58c7421891d80cc3efa1d32e882f7c4a7ee6039c3fc951a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a4ea868bc28109052790eb2b52a9ab33f3aa7adc02f96673526ff47419490e21", size = 199191, upload-time = "2026-03-15T18:50:52.658Z" },
- { url = "https://files.pythonhosted.org/packages/6c/92/9934d1bbd69f7f398b38c5dae1cbf9cc672e7c34a4adf7b17c0a9c17d15d/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:836ab36280f21fc1a03c99cd05c6b7af70d2697e374c7af0b61ed271401a72a2", size = 218674, upload-time = "2026-03-15T18:50:54.102Z" },
- { url = "https://files.pythonhosted.org/packages/af/90/25f6ab406659286be929fd89ab0e78e38aa183fc374e03aa3c12d730af8a/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f1ce721c8a7dfec21fcbdfe04e8f68174183cf4e8188e0645e92aa23985c57ff", size = 215259, upload-time = "2026-03-15T18:50:55.616Z" },
- { url = "https://files.pythonhosted.org/packages/4e/ef/79a463eb0fff7f96afa04c1d4c51f8fc85426f918db467854bfb6a569ce3/charset_normalizer-3.4.6-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e28d62a8fc7a1fa411c43bd65e346f3bce9716dc51b897fbe930c5987b402d5", size = 207276, upload-time = "2026-03-15T18:50:57.054Z" },
- { url = "https://files.pythonhosted.org/packages/f7/72/d0426afec4b71dc159fa6b4e68f868cd5a3ecd918fec5813a15d292a7d10/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:530d548084c4a9f7a16ed4a294d459b4f229db50df689bfe92027452452943a0", size = 195161, upload-time = "2026-03-15T18:50:58.686Z" },
- { url = "https://files.pythonhosted.org/packages/bf/18/c82b06a68bfcb6ce55e508225d210c7e6a4ea122bfc0748892f3dc4e8e11/charset_normalizer-3.4.6-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:30f445ae60aad5e1f8bdbb3108e39f6fbc09f4ea16c815c66578878325f8f15a", size = 203452, upload-time = "2026-03-15T18:51:00.196Z" },
- { url = "https://files.pythonhosted.org/packages/44/d6/0c25979b92f8adafdbb946160348d8d44aa60ce99afdc27df524379875cb/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ac2393c73378fea4e52aa56285a3d64be50f1a12395afef9cce47772f60334c2", size = 202272, upload-time = "2026-03-15T18:51:01.703Z" },
- { url = "https://files.pythonhosted.org/packages/2e/3d/7fea3e8fe84136bebbac715dd1221cc25c173c57a699c030ab9b8900cbb7/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:90ca27cd8da8118b18a52d5f547859cc1f8354a00cd1e8e5120df3e30d6279e5", size = 195622, upload-time = "2026-03-15T18:51:03.526Z" },
- { url = "https://files.pythonhosted.org/packages/57/8a/d6f7fd5cb96c58ef2f681424fbca01264461336d2a7fc875e4446b1f1346/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8e5a94886bedca0f9b78fecd6afb6629142fd2605aa70a125d49f4edc6037ee6", size = 220056, upload-time = "2026-03-15T18:51:05.269Z" },
- { url = "https://files.pythonhosted.org/packages/16/50/478cdda782c8c9c3fb5da3cc72dd7f331f031e7f1363a893cdd6ca0f8de0/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:695f5c2823691a25f17bc5d5ffe79fa90972cc34b002ac6c843bb8a1720e950d", size = 203751, upload-time = "2026-03-15T18:51:06.858Z" },
- { url = "https://files.pythonhosted.org/packages/75/fc/cc2fcac943939c8e4d8791abfa139f685e5150cae9f94b60f12520feaa9b/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:231d4da14bcd9301310faf492051bee27df11f2bc7549bc0bb41fef11b82daa2", size = 216563, upload-time = "2026-03-15T18:51:08.564Z" },
- { url = "https://files.pythonhosted.org/packages/a8/b7/a4add1d9a5f68f3d037261aecca83abdb0ab15960a3591d340e829b37298/charset_normalizer-3.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a056d1ad2633548ca18ffa2f85c202cfb48b68615129143915b8dc72a806a923", size = 209265, upload-time = "2026-03-15T18:51:10.312Z" },
- { url = "https://files.pythonhosted.org/packages/6c/18/c094561b5d64a24277707698e54b7f67bd17a4f857bbfbb1072bba07c8bf/charset_normalizer-3.4.6-cp312-cp312-win32.whl", hash = "sha256:c2274ca724536f173122f36c98ce188fd24ce3dad886ec2b7af859518ce008a4", size = 144229, upload-time = "2026-03-15T18:51:11.694Z" },
- { url = "https://files.pythonhosted.org/packages/ab/20/0567efb3a8fd481b8f34f739ebddc098ed062a59fed41a8d193a61939e8f/charset_normalizer-3.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:c8ae56368f8cc97c7e40a7ee18e1cedaf8e780cd8bc5ed5ac8b81f238614facb", size = 154277, upload-time = "2026-03-15T18:51:13.004Z" },
- { url = "https://files.pythonhosted.org/packages/15/57/28d79b44b51933119e21f65479d0864a8d5893e494cf5daab15df0247c17/charset_normalizer-3.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:899d28f422116b08be5118ef350c292b36fc15ec2daeb9ea987c89281c7bb5c4", size = 142817, upload-time = "2026-03-15T18:51:14.408Z" },
- { url = "https://files.pythonhosted.org/packages/1e/1d/4fdabeef4e231153b6ed7567602f3b68265ec4e5b76d6024cf647d43d981/charset_normalizer-3.4.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:11afb56037cbc4b1555a34dd69151e8e069bee82e613a73bef6e714ce733585f", size = 294823, upload-time = "2026-03-15T18:51:15.755Z" },
- { url = "https://files.pythonhosted.org/packages/47/7b/20e809b89c69d37be748d98e84dce6820bf663cf19cf6b942c951a3e8f41/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:423fb7e748a08f854a08a222b983f4df1912b1daedce51a72bd24fe8f26a1843", size = 198527, upload-time = "2026-03-15T18:51:17.177Z" },
- { url = "https://files.pythonhosted.org/packages/37/a6/4f8d27527d59c039dce6f7622593cdcd3d70a8504d87d09eb11e9fdc6062/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d73beaac5e90173ac3deb9928a74763a6d230f494e4bfb422c217a0ad8e629bf", size = 218388, upload-time = "2026-03-15T18:51:18.934Z" },
- { url = "https://files.pythonhosted.org/packages/f6/9b/4770ccb3e491a9bacf1c46cc8b812214fe367c86a96353ccc6daf87b01ec/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d60377dce4511655582e300dc1e5a5f24ba0cb229005a1d5c8d0cb72bb758ab8", size = 214563, upload-time = "2026-03-15T18:51:20.374Z" },
- { url = "https://files.pythonhosted.org/packages/2b/58/a199d245894b12db0b957d627516c78e055adc3a0d978bc7f65ddaf7c399/charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:530e8cebeea0d76bdcf93357aa5e41336f48c3dc709ac52da2bb167c5b8271d9", size = 206587, upload-time = "2026-03-15T18:51:21.807Z" },
- { url = "https://files.pythonhosted.org/packages/7e/70/3def227f1ec56f5c69dfc8392b8bd63b11a18ca8178d9211d7cc5e5e4f27/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:a26611d9987b230566f24a0a125f17fe0de6a6aff9f25c9f564aaa2721a5fb88", size = 194724, upload-time = "2026-03-15T18:51:23.508Z" },
- { url = "https://files.pythonhosted.org/packages/58/ab/9318352e220c05efd31c2779a23b50969dc94b985a2efa643ed9077bfca5/charset_normalizer-3.4.6-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:34315ff4fc374b285ad7f4a0bf7dcbfe769e1b104230d40f49f700d4ab6bbd84", size = 202956, upload-time = "2026-03-15T18:51:25.239Z" },
- { url = "https://files.pythonhosted.org/packages/75/13/f3550a3ac25b70f87ac98c40d3199a8503676c2f1620efbf8d42095cfc40/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5f8ddd609f9e1af8c7bd6e2aca279c931aefecd148a14402d4e368f3171769fd", size = 201923, upload-time = "2026-03-15T18:51:26.682Z" },
- { url = "https://files.pythonhosted.org/packages/1b/db/c5c643b912740b45e8eec21de1bbab8e7fc085944d37e1e709d3dcd9d72f/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:80d0a5615143c0b3225e5e3ef22c8d5d51f3f72ce0ea6fb84c943546c7b25b6c", size = 195366, upload-time = "2026-03-15T18:51:28.129Z" },
- { url = "https://files.pythonhosted.org/packages/5a/67/3b1c62744f9b2448443e0eb160d8b001c849ec3fef591e012eda6484787c/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:92734d4d8d187a354a556626c221cd1a892a4e0802ccb2af432a1d85ec012194", size = 219752, upload-time = "2026-03-15T18:51:29.556Z" },
- { url = "https://files.pythonhosted.org/packages/f6/98/32ffbaf7f0366ffb0445930b87d103f6b406bc2c271563644bde8a2b1093/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:613f19aa6e082cf96e17e3ffd89383343d0d589abda756b7764cf78361fd41dc", size = 203296, upload-time = "2026-03-15T18:51:30.921Z" },
- { url = "https://files.pythonhosted.org/packages/41/12/5d308c1bbe60cabb0c5ef511574a647067e2a1f631bc8634fcafaccd8293/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:2b1a63e8224e401cafe7739f77efd3f9e7f5f2026bda4aead8e59afab537784f", size = 215956, upload-time = "2026-03-15T18:51:32.399Z" },
- { url = "https://files.pythonhosted.org/packages/53/e9/5f85f6c5e20669dbe56b165c67b0260547dea97dba7e187938833d791687/charset_normalizer-3.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6cceb5473417d28edd20c6c984ab6fee6c6267d38d906823ebfe20b03d607dc2", size = 208652, upload-time = "2026-03-15T18:51:34.214Z" },
- { url = "https://files.pythonhosted.org/packages/f1/11/897052ea6af56df3eef3ca94edafee410ca699ca0c7b87960ad19932c55e/charset_normalizer-3.4.6-cp313-cp313-win32.whl", hash = "sha256:d7de2637729c67d67cf87614b566626057e95c303bc0a55ffe391f5205e7003d", size = 143940, upload-time = "2026-03-15T18:51:36.15Z" },
- { url = "https://files.pythonhosted.org/packages/a1/5c/724b6b363603e419829f561c854b87ed7c7e31231a7908708ac086cdf3e2/charset_normalizer-3.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:572d7c822caf521f0525ba1bce1a622a0b85cf47ffbdae6c9c19e3b5ac3c4389", size = 154101, upload-time = "2026-03-15T18:51:37.876Z" },
- { url = "https://files.pythonhosted.org/packages/01/a5/7abf15b4c0968e47020f9ca0935fb3274deb87cb288cd187cad92e8cdffd/charset_normalizer-3.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a4474d924a47185a06411e0064b803c68be044be2d60e50e8bddcc2649957c1f", size = 143109, upload-time = "2026-03-15T18:51:39.565Z" },
- { url = "https://files.pythonhosted.org/packages/25/6f/ffe1e1259f384594063ea1869bfb6be5cdb8bc81020fc36c3636bc8302a1/charset_normalizer-3.4.6-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:9cc6e6d9e571d2f863fa77700701dae73ed5f78881efc8b3f9a4398772ff53e8", size = 294458, upload-time = "2026-03-15T18:51:41.134Z" },
- { url = "https://files.pythonhosted.org/packages/56/60/09bb6c13a8c1016c2ed5c6a6488e4ffef506461aa5161662bd7636936fb1/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ef5960d965e67165d75b7c7ffc60a83ec5abfc5c11b764ec13ea54fbef8b4421", size = 199277, upload-time = "2026-03-15T18:51:42.953Z" },
- { url = "https://files.pythonhosted.org/packages/00/50/dcfbb72a5138bbefdc3332e8d81a23494bf67998b4b100703fd15fa52d81/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b3694e3f87f8ac7ce279d4355645b3c878d24d1424581b46282f24b92f5a4ae2", size = 218758, upload-time = "2026-03-15T18:51:44.339Z" },
- { url = "https://files.pythonhosted.org/packages/03/b3/d79a9a191bb75f5aa81f3aaaa387ef29ce7cb7a9e5074ba8ea095cc073c2/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d11595abf8dd942a77883a39d81433739b287b6aa71620f15164f8096221b30", size = 215299, upload-time = "2026-03-15T18:51:45.871Z" },
- { url = "https://files.pythonhosted.org/packages/76/7e/bc8911719f7084f72fd545f647601ea3532363927f807d296a8c88a62c0d/charset_normalizer-3.4.6-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7bda6eebafd42133efdca535b04ccb338ab29467b3f7bf79569883676fc628db", size = 206811, upload-time = "2026-03-15T18:51:47.308Z" },
- { url = "https://files.pythonhosted.org/packages/e2/40/c430b969d41dda0c465aa36cc7c2c068afb67177bef50905ac371b28ccc7/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:bbc8c8650c6e51041ad1be191742b8b421d05bbd3410f43fa2a00c8db87678e8", size = 193706, upload-time = "2026-03-15T18:51:48.849Z" },
- { url = "https://files.pythonhosted.org/packages/48/15/e35e0590af254f7df984de1323640ef375df5761f615b6225ba8deb9799a/charset_normalizer-3.4.6-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:22c6f0c2fbc31e76c3b8a86fba1a56eda6166e238c29cdd3d14befdb4a4e4815", size = 202706, upload-time = "2026-03-15T18:51:50.257Z" },
- { url = "https://files.pythonhosted.org/packages/5e/bd/f736f7b9cc5e93a18b794a50346bb16fbfd6b37f99e8f306f7951d27c17c/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7edbed096e4a4798710ed6bc75dcaa2a21b68b6c356553ac4823c3658d53743a", size = 202497, upload-time = "2026-03-15T18:51:52.012Z" },
- { url = "https://files.pythonhosted.org/packages/9d/ba/2cc9e3e7dfdf7760a6ed8da7446d22536f3d0ce114ac63dee2a5a3599e62/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:7f9019c9cb613f084481bd6a100b12e1547cf2efe362d873c2e31e4035a6fa43", size = 193511, upload-time = "2026-03-15T18:51:53.723Z" },
- { url = "https://files.pythonhosted.org/packages/9e/cb/5be49b5f776e5613be07298c80e1b02a2d900f7a7de807230595c85a8b2e/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:58c948d0d086229efc484fe2f30c2d382c86720f55cd9bc33591774348ad44e0", size = 220133, upload-time = "2026-03-15T18:51:55.333Z" },
- { url = "https://files.pythonhosted.org/packages/83/43/99f1b5dad345accb322c80c7821071554f791a95ee50c1c90041c157ae99/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:419a9d91bd238052642a51938af8ac05da5b3343becde08d5cdeab9046df9ee1", size = 203035, upload-time = "2026-03-15T18:51:56.736Z" },
- { url = "https://files.pythonhosted.org/packages/87/9a/62c2cb6a531483b55dddff1a68b3d891a8b498f3ca555fbcf2978e804d9d/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:5273b9f0b5835ff0350c0828faea623c68bfa65b792720c453e22b25cc72930f", size = 216321, upload-time = "2026-03-15T18:51:58.17Z" },
- { url = "https://files.pythonhosted.org/packages/6e/79/94a010ff81e3aec7c293eb82c28f930918e517bc144c9906a060844462eb/charset_normalizer-3.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:0e901eb1049fdb80f5bd11ed5ea1e498ec423102f7a9b9e4645d5b8204ff2815", size = 208973, upload-time = "2026-03-15T18:51:59.998Z" },
- { url = "https://files.pythonhosted.org/packages/2a/57/4ecff6d4ec8585342f0c71bc03efaa99cb7468f7c91a57b105bcd561cea8/charset_normalizer-3.4.6-cp314-cp314-win32.whl", hash = "sha256:b4ff1d35e8c5bd078be89349b6f3a845128e685e751b6ea1169cf2160b344c4d", size = 144610, upload-time = "2026-03-15T18:52:02.213Z" },
- { url = "https://files.pythonhosted.org/packages/80/94/8434a02d9d7f168c25767c64671fead8d599744a05d6a6c877144c754246/charset_normalizer-3.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:74119174722c4349af9708993118581686f343adc1c8c9c007d59be90d077f3f", size = 154962, upload-time = "2026-03-15T18:52:03.658Z" },
- { url = "https://files.pythonhosted.org/packages/46/4c/48f2cdbfd923026503dfd67ccea45c94fd8fe988d9056b468579c66ed62b/charset_normalizer-3.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:e5bcc1a1ae744e0bb59641171ae53743760130600da8db48cbb6e4918e186e4e", size = 143595, upload-time = "2026-03-15T18:52:05.123Z" },
- { url = "https://files.pythonhosted.org/packages/31/93/8878be7569f87b14f1d52032946131bcb6ebbd8af3e20446bc04053dc3f1/charset_normalizer-3.4.6-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ad8faf8df23f0378c6d527d8b0b15ea4a2e23c89376877c598c4870d1b2c7866", size = 314828, upload-time = "2026-03-15T18:52:06.831Z" },
- { url = "https://files.pythonhosted.org/packages/06/b6/fae511ca98aac69ecc35cde828b0a3d146325dd03d99655ad38fc2cc3293/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f5ea69428fa1b49573eef0cc44a1d43bebd45ad0c611eb7d7eac760c7ae771bc", size = 208138, upload-time = "2026-03-15T18:52:08.239Z" },
- { url = "https://files.pythonhosted.org/packages/54/57/64caf6e1bf07274a1e0b7c160a55ee9e8c9ec32c46846ce59b9c333f7008/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:06a7e86163334edfc5d20fe104db92fcd666e5a5df0977cb5680a506fe26cc8e", size = 224679, upload-time = "2026-03-15T18:52:10.043Z" },
- { url = "https://files.pythonhosted.org/packages/aa/cb/9ff5a25b9273ef160861b41f6937f86fae18b0792fe0a8e75e06acb08f1d/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e1f6e2f00a6b8edb562826e4632e26d063ac10307e80f7461f7de3ad8ef3f077", size = 223475, upload-time = "2026-03-15T18:52:11.854Z" },
- { url = "https://files.pythonhosted.org/packages/fc/97/440635fc093b8d7347502a377031f9605a1039c958f3cd18dcacffb37743/charset_normalizer-3.4.6-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:95b52c68d64c1878818687a473a10547b3292e82b6f6fe483808fb1468e2f52f", size = 215230, upload-time = "2026-03-15T18:52:13.325Z" },
- { url = "https://files.pythonhosted.org/packages/cd/24/afff630feb571a13f07c8539fbb502d2ab494019492aaffc78ef41f1d1d0/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:7504e9b7dc05f99a9bbb4525c67a2c155073b44d720470a148b34166a69c054e", size = 199045, upload-time = "2026-03-15T18:52:14.752Z" },
- { url = "https://files.pythonhosted.org/packages/e5/17/d1399ecdaf7e0498c327433e7eefdd862b41236a7e484355b8e0e5ebd64b/charset_normalizer-3.4.6-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:172985e4ff804a7ad08eebec0a1640ece87ba5041d565fff23c8f99c1f389484", size = 211658, upload-time = "2026-03-15T18:52:16.278Z" },
- { url = "https://files.pythonhosted.org/packages/b5/38/16baa0affb957b3d880e5ac2144caf3f9d7de7bc4a91842e447fbb5e8b67/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:4be9f4830ba8741527693848403e2c457c16e499100963ec711b1c6f2049b7c7", size = 210769, upload-time = "2026-03-15T18:52:17.782Z" },
- { url = "https://files.pythonhosted.org/packages/05/34/c531bc6ac4c21da9ddfddb3107be2287188b3ea4b53b70fc58f2a77ac8d8/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:79090741d842f564b1b2827c0b82d846405b744d31e84f18d7a7b41c20e473ff", size = 201328, upload-time = "2026-03-15T18:52:19.553Z" },
- { url = "https://files.pythonhosted.org/packages/fa/73/a5a1e9ca5f234519c1953608a03fe109c306b97fdfb25f09182babad51a7/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:87725cfb1a4f1f8c2fc9890ae2f42094120f4b44db9360be5d99a4c6b0e03a9e", size = 225302, upload-time = "2026-03-15T18:52:21.043Z" },
- { url = "https://files.pythonhosted.org/packages/ba/f6/cd782923d112d296294dea4bcc7af5a7ae0f86ab79f8fefbda5526b6cfc0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:fcce033e4021347d80ed9c66dcf1e7b1546319834b74445f561d2e2221de5659", size = 211127, upload-time = "2026-03-15T18:52:22.491Z" },
- { url = "https://files.pythonhosted.org/packages/0e/c5/0b6898950627af7d6103a449b22320372c24c6feda91aa24e201a478d161/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ca0276464d148c72defa8bb4390cce01b4a0e425f3b50d1435aa6d7a18107602", size = 222840, upload-time = "2026-03-15T18:52:24.113Z" },
- { url = "https://files.pythonhosted.org/packages/7d/25/c4bba773bef442cbdc06111d40daa3de5050a676fa26e85090fc54dd12f0/charset_normalizer-3.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:197c1a244a274bb016dd8b79204850144ef77fe81c5b797dc389327adb552407", size = 216890, upload-time = "2026-03-15T18:52:25.541Z" },
- { url = "https://files.pythonhosted.org/packages/35/1a/05dacadb0978da72ee287b0143097db12f2e7e8d3ffc4647da07a383b0b7/charset_normalizer-3.4.6-cp314-cp314t-win32.whl", hash = "sha256:2a24157fa36980478dd1770b585c0f30d19e18f4fb0c47c13aa568f871718579", size = 155379, upload-time = "2026-03-15T18:52:27.05Z" },
- { url = "https://files.pythonhosted.org/packages/5d/7a/d269d834cb3a76291651256f3b9a5945e81d0a49ab9f4a498964e83c0416/charset_normalizer-3.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:cd5e2801c89992ed8c0a3f0293ae83c159a60d9a5d685005383ef4caca77f2c4", size = 169043, upload-time = "2026-03-15T18:52:28.502Z" },
- { url = "https://files.pythonhosted.org/packages/23/06/28b29fba521a37a8932c6a84192175c34d49f84a6d4773fa63d05f9aff22/charset_normalizer-3.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:47955475ac79cc504ef2704b192364e51d0d473ad452caedd0002605f780101c", size = 148523, upload-time = "2026-03-15T18:52:29.956Z" },
- { url = "https://files.pythonhosted.org/packages/2a/68/687187c7e26cb24ccbd88e5069f5ef00eba804d36dde11d99aad0838ab45/charset_normalizer-3.4.6-py3-none-any.whl", hash = "sha256:947cf925bc916d90adba35a64c82aace04fa39b46b52d4630ece166655905a69", size = 61455, upload-time = "2026-03-15T18:53:23.833Z" },
+version = "3.4.7"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e7/a1/67fe25fac3c7642725500a3f6cfe5821ad557c3abb11c9d20d12c7008d3e/charset_normalizer-3.4.7.tar.gz", hash = "sha256:ae89db9e5f98a11a4bf50407d4363e7b09b31e55bc117b4f7d80aab97ba009e5", size = 144271, upload-time = "2026-04-02T09:28:39.342Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/26/08/0f303cb0b529e456bb116f2d50565a482694fbb94340bf56d44677e7ed03/charset_normalizer-3.4.7-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:cdd68a1fb318e290a2077696b7eb7a21a49163c455979c639bf5a5dcdc46617d", size = 315182, upload-time = "2026-04-02T09:25:40.673Z" },
+ { url = "https://files.pythonhosted.org/packages/24/47/b192933e94b546f1b1fe4df9cc1f84fcdbf2359f8d1081d46dd029b50207/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e17b8d5d6a8c47c85e68ca8379def1303fd360c3e22093a807cd34a71cd082b8", size = 209329, upload-time = "2026-04-02T09:25:42.354Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/b4/01fa81c5ca6141024d89a8fc15968002b71da7f825dd14113207113fabbd/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:511ef87c8aec0783e08ac18565a16d435372bc1ac25a91e6ac7f5ef2b0bff790", size = 231230, upload-time = "2026-04-02T09:25:44.281Z" },
+ { url = "https://files.pythonhosted.org/packages/20/f7/7b991776844dfa058017e600e6e55ff01984a063290ca5622c0b63162f68/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:007d05ec7321d12a40227aae9e2bc6dca73f3cb21058999a1df9e193555a9dcc", size = 225890, upload-time = "2026-04-02T09:25:45.475Z" },
+ { url = "https://files.pythonhosted.org/packages/20/e7/bed0024a0f4ab0c8a9c64d4445f39b30c99bd1acd228291959e3de664247/charset_normalizer-3.4.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf29836da5119f3c8a8a70667b0ef5fdca3bb12f80fd06487cfa575b3909b393", size = 216930, upload-time = "2026-04-02T09:25:46.58Z" },
+ { url = "https://files.pythonhosted.org/packages/e2/ab/b18f0ab31cdd7b3ddb8bb76c4a414aeb8160c9810fdf1bc62f269a539d87/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:12d8baf840cc7889b37c7c770f478adea7adce3dcb3944d02ec87508e2dcf153", size = 202109, upload-time = "2026-04-02T09:25:48.031Z" },
+ { url = "https://files.pythonhosted.org/packages/82/e5/7e9440768a06dfb3075936490cb82dbf0ee20a133bf0dd8551fa096914ec/charset_normalizer-3.4.7-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:d560742f3c0d62afaccf9f41fe485ed69bd7661a241f86a3ef0f0fb8b1a397af", size = 214684, upload-time = "2026-04-02T09:25:49.245Z" },
+ { url = "https://files.pythonhosted.org/packages/71/94/8c61d8da9f062fdf457c80acfa25060ec22bf1d34bbeaca4350f13bcfd07/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b14b2d9dac08e28bb8046a1a0434b1750eb221c8f5b87a68f4fa11a6f97b5e34", size = 212785, upload-time = "2026-04-02T09:25:50.671Z" },
+ { url = "https://files.pythonhosted.org/packages/66/cd/6e9889c648e72c0ab2e5967528bb83508f354d706637bc7097190c874e13/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:bc17a677b21b3502a21f66a8cc64f5bfad4df8a0b8434d661666f8ce90ac3af1", size = 203055, upload-time = "2026-04-02T09:25:51.802Z" },
+ { url = "https://files.pythonhosted.org/packages/92/2e/7a951d6a08aefb7eb8e1b54cdfb580b1365afdd9dd484dc4bee9e5d8f258/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:750e02e074872a3fad7f233b47734166440af3cdea0add3e95163110816d6752", size = 232502, upload-time = "2026-04-02T09:25:53.388Z" },
+ { url = "https://files.pythonhosted.org/packages/58/d5/abcf2d83bf8e0a1286df55cd0dc1d49af0da4282aa77e986df343e7de124/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:4e5163c14bffd570ef2affbfdd77bba66383890797df43dc8b4cc7d6f500bf53", size = 214295, upload-time = "2026-04-02T09:25:54.765Z" },
+ { url = "https://files.pythonhosted.org/packages/47/3a/7d4cd7ed54be99973a0dc176032cba5cb1f258082c31fa6df35cff46acfc/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:6ed74185b2db44f41ef35fd1617c5888e59792da9bbc9190d6c7300617182616", size = 227145, upload-time = "2026-04-02T09:25:55.904Z" },
+ { url = "https://files.pythonhosted.org/packages/1d/98/3a45bf8247889cf28262ebd3d0872edff11565b2a1e3064ccb132db3fbb0/charset_normalizer-3.4.7-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94e1885b270625a9a828c9793b4d52a64445299baa1fea5a173bf1d3dd9a1a5a", size = 218884, upload-time = "2026-04-02T09:25:57.074Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/80/2e8b7f8915ed5c9ef13aa828d82738e33888c485b65ebf744d615040c7ea/charset_normalizer-3.4.7-cp310-cp310-win32.whl", hash = "sha256:6785f414ae0f3c733c437e0f3929197934f526d19dfaa75e18fdb4f94c6fb374", size = 148343, upload-time = "2026-04-02T09:25:58.199Z" },
+ { url = "https://files.pythonhosted.org/packages/35/1b/3b8c8c77184af465ee9ad88b5aea46ea6b2e1f7b9dc9502891e37af21e30/charset_normalizer-3.4.7-cp310-cp310-win_amd64.whl", hash = "sha256:6696b7688f54f5af4462118f0bfa7c1621eeb87154f77fa04b9295ce7a8f2943", size = 159174, upload-time = "2026-04-02T09:25:59.322Z" },
+ { url = "https://files.pythonhosted.org/packages/be/c1/feb40dca40dbb21e0a908801782d9288c64fc8d8e562c2098e9994c8c21b/charset_normalizer-3.4.7-cp310-cp310-win_arm64.whl", hash = "sha256:66671f93accb62ed07da56613636f3641f1a12c13046ce91ffc923721f23c008", size = 147805, upload-time = "2026-04-02T09:26:00.756Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/d7/b5b7020a0565c2e9fa8c09f4b5fa6232feb326b8c20081ccded47ea368fd/charset_normalizer-3.4.7-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7641bb8895e77f921102f72833904dcd9901df5d6d72a2ab8f31d04b7e51e4e7", size = 309705, upload-time = "2026-04-02T09:26:02.191Z" },
+ { url = "https://files.pythonhosted.org/packages/5a/53/58c29116c340e5456724ecd2fff4196d236b98f3da97b404bc5e51ac3493/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:202389074300232baeb53ae2569a60901f7efadd4245cf3a3bf0617d60b439d7", size = 206419, upload-time = "2026-04-02T09:26:03.583Z" },
+ { url = "https://files.pythonhosted.org/packages/b2/02/e8146dc6591a37a00e5144c63f29fb7c97a734ea8a111190783c0e60ab63/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:30b8d1d8c52a48c2c5690e152c169b673487a2a58de1ec7393196753063fcd5e", size = 227901, upload-time = "2026-04-02T09:26:04.738Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/73/77486c4cd58f1267bf17db420e930c9afa1b3be3fe8c8b8ebbebc9624359/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:532bc9bf33a68613fd7d65e4b1c71a6a38d7d42604ecf239c77392e9b4e8998c", size = 222742, upload-time = "2026-04-02T09:26:06.36Z" },
+ { url = "https://files.pythonhosted.org/packages/a1/fa/f74eb381a7d94ded44739e9d94de18dc5edc9c17fb8c11f0a6890696c0a9/charset_normalizer-3.4.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2fe249cb4651fd12605b7288b24751d8bfd46d35f12a20b1ba33dea122e690df", size = 214061, upload-time = "2026-04-02T09:26:08.347Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/92/42bd3cefcf7687253fb86694b45f37b733c97f59af3724f356fa92b8c344/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:65bcd23054beab4d166035cabbc868a09c1a49d1efe458fe8e4361215df40265", size = 199239, upload-time = "2026-04-02T09:26:09.823Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/3d/069e7184e2aa3b3cddc700e3dd267413dc259854adc3380421c805c6a17d/charset_normalizer-3.4.7-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:08e721811161356f97b4059a9ba7bafb23ea5ee2255402c42881c214e173c6b4", size = 210173, upload-time = "2026-04-02T09:26:10.953Z" },
+ { url = "https://files.pythonhosted.org/packages/62/51/9d56feb5f2e7074c46f93e0ebdbe61f0848ee246e2f0d89f8e20b89ebb8f/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:e060d01aec0a910bdccb8be71faf34e7799ce36950f8294c8bf612cba65a2c9e", size = 209841, upload-time = "2026-04-02T09:26:12.142Z" },
+ { url = "https://files.pythonhosted.org/packages/d2/59/893d8f99cc4c837dda1fe2f1139079703deb9f321aabcb032355de13b6c7/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:38c0109396c4cfc574d502df99742a45c72c08eff0a36158b6f04000043dbf38", size = 200304, upload-time = "2026-04-02T09:26:13.711Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/1d/ee6f3be3464247578d1ed5c46de545ccc3d3ff933695395c402c21fa6b77/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:1c2a768fdd44ee4a9339a9b0b130049139b8ce3c01d2ce09f67f5a68048d477c", size = 229455, upload-time = "2026-04-02T09:26:14.941Z" },
+ { url = "https://files.pythonhosted.org/packages/54/bb/8fb0a946296ea96a488928bdce8ef99023998c48e4713af533e9bb98ef07/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:1a87ca9d5df6fe460483d9a5bbf2b18f620cbed41b432e2bddb686228282d10b", size = 210036, upload-time = "2026-04-02T09:26:16.478Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/bc/015b2387f913749f82afd4fcba07846d05b6d784dd16123cb66860e0237d/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:d635aab80466bc95771bb78d5370e74d36d1fe31467b6b29b8b57b2a3cd7d22c", size = 224739, upload-time = "2026-04-02T09:26:17.751Z" },
+ { url = "https://files.pythonhosted.org/packages/17/ab/63133691f56baae417493cba6b7c641571a2130eb7bceba6773367ab9ec5/charset_normalizer-3.4.7-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ae196f021b5e7c78e918242d217db021ed2a6ace2bc6ae94c0fc596221c7f58d", size = 216277, upload-time = "2026-04-02T09:26:18.981Z" },
+ { url = "https://files.pythonhosted.org/packages/06/6d/3be70e827977f20db77c12a97e6a9f973631a45b8d186c084527e53e77a4/charset_normalizer-3.4.7-cp311-cp311-win32.whl", hash = "sha256:adb2597b428735679446b46c8badf467b4ca5f5056aae4d51a19f9570301b1ad", size = 147819, upload-time = "2026-04-02T09:26:20.295Z" },
+ { url = "https://files.pythonhosted.org/packages/20/d9/5f67790f06b735d7c7637171bbfd89882ad67201891b7275e51116ed8207/charset_normalizer-3.4.7-cp311-cp311-win_amd64.whl", hash = "sha256:8e385e4267ab76874ae30db04c627faaaf0b509e1ccc11a95b3fc3e83f855c00", size = 159281, upload-time = "2026-04-02T09:26:21.74Z" },
+ { url = "https://files.pythonhosted.org/packages/ca/83/6413f36c5a34afead88ce6f66684d943d91f233d76dd083798f9602b75ae/charset_normalizer-3.4.7-cp311-cp311-win_arm64.whl", hash = "sha256:d4a48e5b3c2a489fae013b7589308a40146ee081f6f509e047e0e096084ceca1", size = 147843, upload-time = "2026-04-02T09:26:22.901Z" },
+ { url = "https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46", size = 311328, upload-time = "2026-04-02T09:26:24.331Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/e3/0fadc706008ac9d7b9b5be6dc767c05f9d3e5df51744ce4cc9605de7b9f4/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6178f72c5508bfc5fd446a5905e698c6212932f25bcdd4b47a757a50605a90e2", size = 208061, upload-time = "2026-04-02T09:26:25.568Z" },
+ { url = "https://files.pythonhosted.org/packages/42/f0/3dd1045c47f4a4604df85ec18ad093912ae1344ac706993aff91d38773a2/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:e1421b502d83040e6d7fb2fb18dff63957f720da3d77b2fbd3187ceb63755d7b", size = 229031, upload-time = "2026-04-02T09:26:26.865Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/67/675a46eb016118a2fbde5a277a5d15f4f69d5f3f5f338e5ee2f8948fcf43/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:edac0f1ab77644605be2cbba52e6b7f630731fc42b34cb0f634be1a6eface56a", size = 225239, upload-time = "2026-04-02T09:26:28.044Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116", size = 216589, upload-time = "2026-04-02T09:26:29.239Z" },
+ { url = "https://files.pythonhosted.org/packages/b1/f1/6d2b0b261b6c4ceef0fcb0d17a01cc5bc53586c2d4796fa04b5c540bc13d/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:203104ed3e428044fd943bc4bf45fa73c0730391f9621e37fe39ecf477b128cb", size = 202733, upload-time = "2026-04-02T09:26:30.5Z" },
+ { url = "https://files.pythonhosted.org/packages/6f/c0/7b1f943f7e87cc3db9626ba17807d042c38645f0a1d4415c7a14afb5591f/charset_normalizer-3.4.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:298930cec56029e05497a76988377cbd7457ba864beeea92ad7e844fe74cd1f1", size = 212652, upload-time = "2026-04-02T09:26:31.709Z" },
+ { url = "https://files.pythonhosted.org/packages/38/dd/5a9ab159fe45c6e72079398f277b7d2b523e7f716acc489726115a910097/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:708838739abf24b2ceb208d0e22403dd018faeef86ddac04319a62ae884c4f15", size = 211229, upload-time = "2026-04-02T09:26:33.282Z" },
+ { url = "https://files.pythonhosted.org/packages/d5/ff/531a1cad5ca855d1c1a8b69cb71abfd6d85c0291580146fda7c82857caa1/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:0f7eb884681e3938906ed0434f20c63046eacd0111c4ba96f27b76084cd679f5", size = 203552, upload-time = "2026-04-02T09:26:34.845Z" },
+ { url = "https://files.pythonhosted.org/packages/c1/4c/a5fb52d528a8ca41f7598cb619409ece30a169fbdf9cdce592e53b46c3a6/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:4dc1e73c36828f982bfe79fadf5919923f8a6f4df2860804db9a98c48824ce8d", size = 230806, upload-time = "2026-04-02T09:26:36.152Z" },
+ { url = "https://files.pythonhosted.org/packages/59/7a/071feed8124111a32b316b33ae4de83d36923039ef8cf48120266844285b/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:aed52fea0513bac0ccde438c188c8a471c4e0f457c2dd20cdbf6ea7a450046c7", size = 212316, upload-time = "2026-04-02T09:26:37.672Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/35/f7dba3994312d7ba508e041eaac39a36b120f32d4c8662b8814dab876431/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:fea24543955a6a729c45a73fe90e08c743f0b3334bbf3201e6c4bc1b0c7fa464", size = 227274, upload-time = "2026-04-02T09:26:38.93Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/2d/a572df5c9204ab7688ec1edc895a73ebded3b023bb07364710b05dd1c9be/charset_normalizer-3.4.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bb6d88045545b26da47aa879dd4a89a71d1dce0f0e549b1abcb31dfe4a8eac49", size = 218468, upload-time = "2026-04-02T09:26:40.17Z" },
+ { url = "https://files.pythonhosted.org/packages/86/eb/890922a8b03a568ca2f336c36585a4713c55d4d67bf0f0c78924be6315ca/charset_normalizer-3.4.7-cp312-cp312-win32.whl", hash = "sha256:2257141f39fe65a3fdf38aeccae4b953e5f3b3324f4ff0daf9f15b8518666a2c", size = 148460, upload-time = "2026-04-02T09:26:41.416Z" },
+ { url = "https://files.pythonhosted.org/packages/35/d9/0e7dffa06c5ab081f75b1b786f0aefc88365825dfcd0ac544bdb7b2b6853/charset_normalizer-3.4.7-cp312-cp312-win_amd64.whl", hash = "sha256:5ed6ab538499c8644b8a3e18debabcd7ce684f3fa91cf867521a7a0279cab2d6", size = 159330, upload-time = "2026-04-02T09:26:42.554Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/5d/481bcc2a7c88ea6b0878c299547843b2521ccbc40980cb406267088bc701/charset_normalizer-3.4.7-cp312-cp312-win_arm64.whl", hash = "sha256:56be790f86bfb2c98fb742ce566dfb4816e5a83384616ab59c49e0604d49c51d", size = 147828, upload-time = "2026-04-02T09:26:44.075Z" },
+ { url = "https://files.pythonhosted.org/packages/c1/3b/66777e39d3ae1ddc77ee606be4ec6d8cbd4c801f65e5a1b6f2b11b8346dd/charset_normalizer-3.4.7-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f496c9c3cc02230093d8330875c4c3cdfc3b73612a5fd921c65d39cbcef08063", size = 309627, upload-time = "2026-04-02T09:26:45.198Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/4e/b7f84e617b4854ade48a1b7915c8ccfadeba444d2a18c291f696e37f0d3b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ea948db76d31190bf08bd371623927ee1339d5f2a0b4b1b4a4439a65298703c", size = 207008, upload-time = "2026-04-02T09:26:46.824Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/bb/ec73c0257c9e11b268f018f068f5d00aa0ef8c8b09f7753ebd5f2880e248/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a277ab8928b9f299723bc1a2dabb1265911b1a76341f90a510368ca44ad9ab66", size = 228303, upload-time = "2026-04-02T09:26:48.397Z" },
+ { url = "https://files.pythonhosted.org/packages/85/fb/32d1f5033484494619f701e719429c69b766bfc4dbc61aa9e9c8c166528b/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3bec022aec2c514d9cf199522a802bd007cd588ab17ab2525f20f9c34d067c18", size = 224282, upload-time = "2026-04-02T09:26:49.684Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/07/330e3a0dda4c404d6da83b327270906e9654a24f6c546dc886a0eb0ffb23/charset_normalizer-3.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e044c39e41b92c845bc815e5ae4230804e8e7bc29e399b0437d64222d92809dd", size = 215595, upload-time = "2026-04-02T09:26:50.915Z" },
+ { url = "https://files.pythonhosted.org/packages/e3/7c/fc890655786e423f02556e0216d4b8c6bcb6bdfa890160dc66bf52dee468/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:f495a1652cf3fbab2eb0639776dad966c2fb874d79d87ca07f9d5f059b8bd215", size = 201986, upload-time = "2026-04-02T09:26:52.197Z" },
+ { url = "https://files.pythonhosted.org/packages/d8/97/bfb18b3db2aed3b90cf54dc292ad79fdd5ad65c4eae454099475cbeadd0d/charset_normalizer-3.4.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e712b419df8ba5e42b226c510472b37bd57b38e897d3eca5e8cfd410a29fa859", size = 211711, upload-time = "2026-04-02T09:26:53.49Z" },
+ { url = "https://files.pythonhosted.org/packages/6f/a5/a581c13798546a7fd557c82614a5c65a13df2157e9ad6373166d2a3e645d/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7804338df6fcc08105c7745f1502ba68d900f45fd770d5bdd5288ddccb8a42d8", size = 210036, upload-time = "2026-04-02T09:26:54.975Z" },
+ { url = "https://files.pythonhosted.org/packages/8c/bf/b3ab5bcb478e4193d517644b0fb2bf5497fbceeaa7a1bc0f4d5b50953861/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:481551899c856c704d58119b5025793fa6730adda3571971af568f66d2424bb5", size = 202998, upload-time = "2026-04-02T09:26:56.303Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/4e/23efd79b65d314fa320ec6017b4b5834d5c12a58ba4610aa353af2e2f577/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f59099f9b66f0d7145115e6f80dd8b1d847176df89b234a5a6b3f00437aa0832", size = 230056, upload-time = "2026-04-02T09:26:57.554Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/9f/1e1941bc3f0e01df116e68dc37a55c4d249df5e6fa77f008841aef68264f/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:f59ad4c0e8f6bba240a9bb85504faa1ab438237199d4cce5f622761507b8f6a6", size = 211537, upload-time = "2026-04-02T09:26:58.843Z" },
+ { url = "https://files.pythonhosted.org/packages/80/0f/088cbb3020d44428964a6c97fe1edfb1b9550396bf6d278330281e8b709c/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:3dedcc22d73ec993f42055eff4fcfed9318d1eeb9a6606c55892a26964964e48", size = 226176, upload-time = "2026-04-02T09:27:00.437Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/9f/130394f9bbe06f4f63e22641d32fc9b202b7e251c9aef4db044324dac493/charset_normalizer-3.4.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:64f02c6841d7d83f832cd97ccf8eb8a906d06eb95d5276069175c696b024b60a", size = 217723, upload-time = "2026-04-02T09:27:02.021Z" },
+ { url = "https://files.pythonhosted.org/packages/73/55/c469897448a06e49f8fa03f6caae97074fde823f432a98f979cc42b90e69/charset_normalizer-3.4.7-cp313-cp313-win32.whl", hash = "sha256:4042d5c8f957e15221d423ba781e85d553722fc4113f523f2feb7b188cc34c5e", size = 148085, upload-time = "2026-04-02T09:27:03.192Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/78/1b74c5bbb3f99b77a1715c91b3e0b5bdb6fe302d95ace4f5b1bec37b0167/charset_normalizer-3.4.7-cp313-cp313-win_amd64.whl", hash = "sha256:3946fa46a0cf3e4c8cb1cc52f56bb536310d34f25f01ca9b6c16afa767dab110", size = 158819, upload-time = "2026-04-02T09:27:04.454Z" },
+ { url = "https://files.pythonhosted.org/packages/68/86/46bd42279d323deb8687c4a5a811fd548cb7d1de10cf6535d099877a9a9f/charset_normalizer-3.4.7-cp313-cp313-win_arm64.whl", hash = "sha256:80d04837f55fc81da168b98de4f4b797ef007fc8a79ab71c6ec9bc4dd662b15b", size = 147915, upload-time = "2026-04-02T09:27:05.971Z" },
+ { url = "https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0", size = 309234, upload-time = "2026-04-02T09:27:07.194Z" },
+ { url = "https://files.pythonhosted.org/packages/99/85/c091fdee33f20de70d6c8b522743b6f831a2f1cd3ff86de4c6a827c48a76/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c2aed2e5e41f24ea8ef1590b8e848a79b56f3a5564a65ceec43c9d692dc7d8a", size = 208042, upload-time = "2026-04-02T09:27:08.749Z" },
+ { url = "https://files.pythonhosted.org/packages/87/1c/ab2ce611b984d2fd5d86a5a8a19c1ae26acac6bad967da4967562c75114d/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:54523e136b8948060c0fa0bc7b1b50c32c186f2fceee897a495406bb6e311d2b", size = 228706, upload-time = "2026-04-02T09:27:09.951Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/29/2b1d2cb00bf085f59d29eb773ce58ec2d325430f8c216804a0a5cd83cbca/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:715479b9a2802ecac752a3b0efa2b0b60285cf962ee38414211abdfccc233b41", size = 224727, upload-time = "2026-04-02T09:27:11.175Z" },
+ { url = "https://files.pythonhosted.org/packages/47/5c/032c2d5a07fe4d4855fea851209cca2b6f03ebeb6d4e3afdb3358386a684/charset_normalizer-3.4.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bd6c2a1c7573c64738d716488d2cdd3c00e340e4835707d8fdb8dc1a66ef164e", size = 215882, upload-time = "2026-04-02T09:27:12.446Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/c2/356065d5a8b78ed04499cae5f339f091946a6a74f91e03476c33f0ab7100/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:c45e9440fb78f8ddabcf714b68f936737a121355bf59f3907f4e17721b9d1aae", size = 200860, upload-time = "2026-04-02T09:27:13.721Z" },
+ { url = "https://files.pythonhosted.org/packages/0c/cd/a32a84217ced5039f53b29f460962abb2d4420def55afabe45b1c3c7483d/charset_normalizer-3.4.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3534e7dcbdcf757da6b85a0bbf5b6868786d5982dd959b065e65481644817a18", size = 211564, upload-time = "2026-04-02T09:27:15.272Z" },
+ { url = "https://files.pythonhosted.org/packages/44/86/58e6f13ce26cc3b8f4a36b94a0f22ae2f00a72534520f4ae6857c4b81f89/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e8ac484bf18ce6975760921bb6148041faa8fef0547200386ea0b52b5d27bf7b", size = 211276, upload-time = "2026-04-02T09:27:16.834Z" },
+ { url = "https://files.pythonhosted.org/packages/8f/fe/d17c32dc72e17e155e06883efa84514ca375f8a528ba2546bee73fc4df81/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:a5fe03b42827c13cdccd08e6c0247b6a6d4b5e3cdc53fd1749f5896adcdc2356", size = 201238, upload-time = "2026-04-02T09:27:18.229Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/29/f33daa50b06525a237451cdb6c69da366c381a3dadcd833fa5676bc468b3/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:2d6eb928e13016cea4f1f21d1e10c1cebd5a421bc57ddf5b1142ae3f86824fab", size = 230189, upload-time = "2026-04-02T09:27:19.445Z" },
+ { url = "https://files.pythonhosted.org/packages/b6/6e/52c84015394a6a0bdcd435210a7e944c5f94ea1055f5cc5d56c5fe368e7b/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:e74327fb75de8986940def6e8dee4f127cc9752bee7355bb323cc5b2659b6d46", size = 211352, upload-time = "2026-04-02T09:27:20.79Z" },
+ { url = "https://files.pythonhosted.org/packages/8c/d7/4353be581b373033fb9198bf1da3cf8f09c1082561e8e922aa7b39bf9fe8/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:d6038d37043bced98a66e68d3aa2b6a35505dc01328cd65217cefe82f25def44", size = 227024, upload-time = "2026-04-02T09:27:22.063Z" },
+ { url = "https://files.pythonhosted.org/packages/30/45/99d18aa925bd1740098ccd3060e238e21115fffbfdcb8f3ece837d0ace6c/charset_normalizer-3.4.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:7579e913a5339fb8fa133f6bbcfd8e6749696206cf05acdbdca71a1b436d8e72", size = 217869, upload-time = "2026-04-02T09:27:23.486Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/05/5ee478aa53f4bb7996482153d4bfe1b89e0f087f0ab6b294fcf92d595873/charset_normalizer-3.4.7-cp314-cp314-win32.whl", hash = "sha256:5b77459df20e08151cd6f8b9ef8ef1f961ef73d85c21a555c7eed5b79410ec10", size = 148541, upload-time = "2026-04-02T09:27:25.146Z" },
+ { url = "https://files.pythonhosted.org/packages/48/77/72dcb0921b2ce86420b2d79d454c7022bf5be40202a2a07906b9f2a35c97/charset_normalizer-3.4.7-cp314-cp314-win_amd64.whl", hash = "sha256:92a0a01ead5e668468e952e4238cccd7c537364eb7d851ab144ab6627dbbe12f", size = 159634, upload-time = "2026-04-02T09:27:26.642Z" },
+ { url = "https://files.pythonhosted.org/packages/c6/a3/c2369911cd72f02386e4e340770f6e158c7980267da16af8f668217abaa0/charset_normalizer-3.4.7-cp314-cp314-win_arm64.whl", hash = "sha256:67f6279d125ca0046a7fd386d01b311c6363844deac3e5b069b514ba3e63c246", size = 148384, upload-time = "2026-04-02T09:27:28.271Z" },
+ { url = "https://files.pythonhosted.org/packages/94/09/7e8a7f73d24dba1f0035fbbf014d2c36828fc1bf9c88f84093e57d315935/charset_normalizer-3.4.7-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:effc3f449787117233702311a1b7d8f59cba9ced946ba727bdc329ec69028e24", size = 330133, upload-time = "2026-04-02T09:27:29.474Z" },
+ { url = "https://files.pythonhosted.org/packages/8d/da/96975ddb11f8e977f706f45cddd8540fd8242f71ecdb5d18a80723dcf62c/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fbccdc05410c9ee21bbf16a35f4c1d16123dcdeb8a1d38f33654fa21d0234f79", size = 216257, upload-time = "2026-04-02T09:27:30.793Z" },
+ { url = "https://files.pythonhosted.org/packages/e5/e8/1d63bf8ef2d388e95c64b2098f45f84758f6d102a087552da1485912637b/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:733784b6d6def852c814bce5f318d25da2ee65dd4839a0718641c696e09a2960", size = 234851, upload-time = "2026-04-02T09:27:32.44Z" },
+ { url = "https://files.pythonhosted.org/packages/9b/40/e5ff04233e70da2681fa43969ad6f66ca5611d7e669be0246c4c7aaf6dc8/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a89c23ef8d2c6b27fd200a42aa4ac72786e7c60d40efdc76e6011260b6e949c4", size = 233393, upload-time = "2026-04-02T09:27:34.03Z" },
+ { url = "https://files.pythonhosted.org/packages/be/c1/06c6c49d5a5450f76899992f1ee40b41d076aee9279b49cf9974d2f313d5/charset_normalizer-3.4.7-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6c114670c45346afedc0d947faf3c7f701051d2518b943679c8ff88befe14f8e", size = 223251, upload-time = "2026-04-02T09:27:35.369Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/9f/f2ff16fb050946169e3e1f82134d107e5d4ae72647ec8a1b1446c148480f/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:a180c5e59792af262bf263b21a3c49353f25945d8d9f70628e73de370d55e1e1", size = 206609, upload-time = "2026-04-02T09:27:36.661Z" },
+ { url = "https://files.pythonhosted.org/packages/69/d5/a527c0cd8d64d2eab7459784fb4169a0ac76e5a6fc5237337982fd61347e/charset_normalizer-3.4.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:3c9a494bc5ec77d43cea229c4f6db1e4d8fe7e1bbffa8b6f0f0032430ff8ab44", size = 220014, upload-time = "2026-04-02T09:27:38.019Z" },
+ { url = "https://files.pythonhosted.org/packages/7e/80/8a7b8104a3e203074dc9aa2c613d4b726c0e136bad1cc734594b02867972/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8d828b6667a32a728a1ad1d93957cdf37489c57b97ae6c4de2860fa749b8fc1e", size = 218979, upload-time = "2026-04-02T09:27:39.37Z" },
+ { url = "https://files.pythonhosted.org/packages/02/9a/b759b503d507f375b2b5c153e4d2ee0a75aa215b7f2489cf314f4541f2c0/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:cf1493cd8607bec4d8a7b9b004e699fcf8f9103a9284cc94962cb73d20f9d4a3", size = 209238, upload-time = "2026-04-02T09:27:40.722Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/4e/0f3f5d47b86bdb79256e7290b26ac847a2832d9a4033f7eb2cd4bcf4bb5b/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:0c96c3b819b5c3e9e165495db84d41914d6894d55181d2d108cc1a69bfc9cce0", size = 236110, upload-time = "2026-04-02T09:27:42.33Z" },
+ { url = "https://files.pythonhosted.org/packages/96/23/bce28734eb3ed2c91dcf93abeb8a5cf393a7b2749725030bb630e554fdd8/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:752a45dc4a6934060b3b0dab47e04edc3326575f82be64bc4fc293914566503e", size = 219824, upload-time = "2026-04-02T09:27:43.924Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/6f/6e897c6984cc4d41af319b077f2f600fc8214eb2fe2d6bcb79141b882400/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:8778f0c7a52e56f75d12dae53ae320fae900a8b9b4164b981b9c5ce059cd1fcb", size = 233103, upload-time = "2026-04-02T09:27:45.348Z" },
+ { url = "https://files.pythonhosted.org/packages/76/22/ef7bd0fe480a0ae9b656189ec00744b60933f68b4f42a7bb06589f6f576a/charset_normalizer-3.4.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ce3412fbe1e31eb81ea42f4169ed94861c56e643189e1e75f0041f3fe7020abe", size = 225194, upload-time = "2026-04-02T09:27:46.706Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/a7/0e0ab3e0b5bc1219bd80a6a0d4d72ca74d9250cb2382b7c699c147e06017/charset_normalizer-3.4.7-cp314-cp314t-win32.whl", hash = "sha256:c03a41a8784091e67a39648f70c5f97b5b6a37f216896d44d2cdcb82615339a0", size = 159827, upload-time = "2026-04-02T09:27:48.053Z" },
+ { url = "https://files.pythonhosted.org/packages/7a/1d/29d32e0fb40864b1f878c7f5a0b343ae676c6e2b271a2d55cc3a152391da/charset_normalizer-3.4.7-cp314-cp314t-win_amd64.whl", hash = "sha256:03853ed82eeebbce3c2abfdbc98c96dc205f32a79627688ac9a27370ea61a49c", size = 174168, upload-time = "2026-04-02T09:27:49.795Z" },
+ { url = "https://files.pythonhosted.org/packages/de/32/d92444ad05c7a6e41fb2036749777c163baf7a0301a040cb672d6b2b1ae9/charset_normalizer-3.4.7-cp314-cp314t-win_arm64.whl", hash = "sha256:c35abb8bfff0185efac5878da64c45dafd2b37fb0383add1be155a763c1f083d", size = 153018, upload-time = "2026-04-02T09:27:51.116Z" },
+ { url = "https://files.pythonhosted.org/packages/db/8f/61959034484a4a7c527811f4721e75d02d653a35afb0b6054474d8185d4c/charset_normalizer-3.4.7-py3-none-any.whl", hash = "sha256:3dce51d0f5e7951f8bb4900c257dad282f49190fdbebecd4ba99bcc41fef404d", size = 61958, upload-time = "2026-04-02T09:28:37.794Z" },
]
[[package]]
name = "click"
-version = "8.3.1"
+version = "8.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/76/d4/81420972a676e8ffea40450d8c8c92943e7218a78fe9b64359836cc9876b/click-8.4.2.tar.gz", hash = "sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6", size = 338000, upload-time = "2026-06-24T17:45:15.148Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/e2/79c688af8b210d232694e31e59da9f6ec747bae31c3f5946e4e9b98860d5/click-8.4.2-py3-none-any.whl", hash = "sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76", size = 119243, upload-time = "2026-06-24T17:45:13.73Z" },
]
[[package]]
@@ -243,115 +244,100 @@ wheels = [
[[package]]
name = "coverage"
-version = "7.14.1"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/54/fd/0ab2772530e946e1be1abd0bc09e647ec9b02e88f0867857601fefca8953/coverage-7.14.1.tar.gz", hash = "sha256:30c08f7d90415aa98b3c990385dea2939b0da55f38515e5b369b83655f8523be", size = 920132, upload-time = "2026-05-26T20:41:36.783Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/92/69/0d2ef01ff4b8fcecd4cba920d11e92fa4f96ae412441d3b56a90a258e69b/coverage-7.14.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:3e3680291c4a1d0dadfa84a2c459576a4af5133abb617905714339a0c73138cf", size = 219722, upload-time = "2026-05-26T20:38:14.002Z" },
- { url = "https://files.pythonhosted.org/packages/f8/ae/9afdeaa31b9d9ce98124b6abf8bb49119bf71aecae04f8567c189d91299f/coverage-7.14.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a5274669f37f2343635a347b91a60777621341ab3378e9c6ac9335eee704bddf", size = 220240, upload-time = "2026-05-26T20:38:17.424Z" },
- { url = "https://files.pythonhosted.org/packages/51/69/c998589871df7ea7dba865cc5ee32b5a3e1d47ba6c68ef91104c7c46fa5e/coverage-7.14.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:cfe5a5fec635799ef33428f1e5e61bafa45a92a96190ba731561ba558ccc214d", size = 246981, upload-time = "2026-05-26T20:38:19.266Z" },
- { url = "https://files.pythonhosted.org/packages/fc/10/1c7d04c13040dac531d21b712bbe08f902e6dd9b58f5d77875c4d030f8f2/coverage-7.14.1-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:62a9f70b52e0b5a95cfef4a5c5641b06983cadc5e538a3feeb5c00211f523ac2", size = 248812, upload-time = "2026-05-26T20:38:20.75Z" },
- { url = "https://files.pythonhosted.org/packages/c1/65/2a38a4607ef27cadcfbcee034dba5830ae2569f90144a0f4c7dbf47d30b0/coverage-7.14.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c18ebc343e15be53049b3a2dce38fe82d58f37e20ab9094b3a39c0aa4f6bb47", size = 250675, upload-time = "2026-05-26T20:38:22.159Z" },
- { url = "https://files.pythonhosted.org/packages/c9/a2/a446ed9752a4a59b79e0fb6cbb319f6facb2183045c0725462625e66f87e/coverage-7.14.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b84ffdf877644e7096aa936991efeed873f7f3df57b9cd001312b7668ab08550", size = 252590, upload-time = "2026-05-26T20:38:23.63Z" },
- { url = "https://files.pythonhosted.org/packages/9e/fd/e81fbd7ba752365546e9842b1cbdaad3d6919d2a522c590aef16a281ec5e/coverage-7.14.1-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e854312c4103f2ad4c0dc023b69b77ebfd2c89db5f86c4c94dc2353f9a92167e", size = 247691, upload-time = "2026-05-26T20:38:25.057Z" },
- { url = "https://files.pythonhosted.org/packages/53/35/f3c26fdaae9ea937d154ca4d372e5ea0a4167ff70d36c6074ac2eacb2f83/coverage-7.14.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:c643734307300234fafa36bf2a040a7235f8f177ea1fd6ec1423aea6fb7b929f", size = 248716, upload-time = "2026-05-26T20:38:26.406Z" },
- { url = "https://files.pythonhosted.org/packages/2e/14/940b6c49551fd343e8507ee2b0ba7af5d0aa04ed5bf768285cb7c72a9884/coverage-7.14.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:84ac9499e48700399a5dd0ea7085b5091961fec52c68d66b4ec0d3cf7f4441b1", size = 246721, upload-time = "2026-05-26T20:38:28.282Z" },
- { url = "https://files.pythonhosted.org/packages/aa/2c/40fc0634186c28292a662dff578866b3913983d6c375a3c2a74020938719/coverage-7.14.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:7f02d09f70776579b926d889a4c9c235070a1f47c40458aeaca563fae5acfdb5", size = 250533, upload-time = "2026-05-26T20:38:29.753Z" },
- { url = "https://files.pythonhosted.org/packages/de/e3/2c26bf1e811f9df991ff2a9bdddebdd13ee0665d564df7d05979f9146297/coverage-7.14.1-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:ce66d8e46da2bb5ee313a745cbd2e391d319176c1f7a9451bfcd3a2fb920859b", size = 246990, upload-time = "2026-05-26T20:38:31.516Z" },
- { url = "https://files.pythonhosted.org/packages/a8/b0/060260ef56bd92363ebdce0c7095ce422b06e69aae71828efeca473ab1ca/coverage-7.14.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c912c259304cfb5ee584481cfb7ce1ff932b4d61e6c9140b8f19cb7b5ed82332", size = 247593, upload-time = "2026-05-26T20:38:33.065Z" },
- { url = "https://files.pythonhosted.org/packages/63/f3/501502046efeb0d6d94b5ca54941d95f1184183dd6bdb7f283985783bb4a/coverage-7.14.1-cp310-cp310-win32.whl", hash = "sha256:1238cb94638e610e972c60dac68e813f868dc7d6e982535270558443058d9d59", size = 222330, upload-time = "2026-05-26T20:38:35.36Z" },
- { url = "https://files.pythonhosted.org/packages/a0/5d/1bf99f2c558f128faf7906817ccbdb576ba815d3b41ce2ac1719b70a3663/coverage-7.14.1-cp310-cp310-win_amd64.whl", hash = "sha256:fc459e5d73be2d6332fcfe8dbf3d8994671fe33c700f4565988ecfa511547253", size = 223261, upload-time = "2026-05-26T20:38:37.196Z" },
- { url = "https://files.pythonhosted.org/packages/7d/d7/477ad149490e6cb849f28abea1dabb9c823cea72e7500c81b4240ce619c0/coverage-7.14.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:478b5bcd63c2e1357c5c7e16c070690df7b07f676b1c114d7b93e533c664309f", size = 219848, upload-time = "2026-05-26T20:38:38.715Z" },
- { url = "https://files.pythonhosted.org/packages/91/82/a5eb47257c50601bb7b9a9d2857c67b7a3a85ad74180eb2c98bb1fbe0ce5/coverage-7.14.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a24a81f9715ee42ef59a316cc11611c98fe23920f7c81861315c9f3ff4a230f4", size = 220354, upload-time = "2026-05-26T20:38:40.232Z" },
- { url = "https://files.pythonhosted.org/packages/43/8b/78419b5391a5cb706b6544390507e469d83ffc9a8248b02c4011aceb9365/coverage-7.14.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:196a13319ad88d6d8ef5ab489ec4f44ddde2143c0c7d5b27786f6c3ffd56a7e1", size = 250771, upload-time = "2026-05-26T20:38:41.782Z" },
- { url = "https://files.pythonhosted.org/packages/77/63/e77aaacd491182210d639636b7a8bba23ffffa9b82aa3762da9431855fa9/coverage-7.14.1-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3d452fd08b5c72c5167c93e6867b5c08500bd40f2a21e1e854a500550b6cc36f", size = 252683, upload-time = "2026-05-26T20:38:43.305Z" },
- { url = "https://files.pythonhosted.org/packages/65/1c/a022e3cfbec2ac241640003cb3a817e161d9c7f5aa9b49173756cdc03204/coverage-7.14.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23bf7fa51ac02e07fc7c96849b82946da47ae862dc8f86d183b2a4864fc38129", size = 254791, upload-time = "2026-05-26T20:38:45.361Z" },
- { url = "https://files.pythonhosted.org/packages/61/d6/967e408aca4c1ceb88cb0cc677169110ae7f5995fb5eaf5fb1f5a1bb8f5d/coverage-7.14.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:bcaa50684dcaadfa599ac48f81103c756d791cfd85c97203d2217c593d48b860", size = 256748, upload-time = "2026-05-26T20:38:46.91Z" },
- { url = "https://files.pythonhosted.org/packages/b8/be/869188f7fe28638078ec479331ace6dc5f7b40b7153eb616f47ab79404d8/coverage-7.14.1-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:4ea1c034f95c9b056e856b794630b17f9fa3d57e4800ff1e503d3be0f9c9078c", size = 250907, upload-time = "2026-05-26T20:38:48.493Z" },
- { url = "https://files.pythonhosted.org/packages/07/aa/adb7d3b4278d690e68703abcd76ab1b948242e3668d921711551b78f9ddb/coverage-7.14.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c7e057326434e441306226fbeb5d1aaf14a2637efe97ba668306635835f32ad7", size = 252483, upload-time = "2026-05-26T20:38:50.074Z" },
- { url = "https://files.pythonhosted.org/packages/43/61/331c74103c62dcb0c4b9b3a0de9a61aca016208b0a90f109592a9f9ecc28/coverage-7.14.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:59baf88468dbc8d63b1887afd92bda52e40bb1561696e5819670601403810cec", size = 250545, upload-time = "2026-05-26T20:38:51.613Z" },
- { url = "https://files.pythonhosted.org/packages/f6/b6/c5dae3c104d89be04828f61810e6b3473825482e4c288cc4ed04553e08ae/coverage-7.14.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d34d75f892b3ab73ba11cab5442cce7b3e168fd64162b16f0e1e0d09c508edef", size = 254310, upload-time = "2026-05-26T20:38:53.503Z" },
- { url = "https://files.pythonhosted.org/packages/ad/a1/2b9d5863e3b83c01ad8199e3c597802fbb3a9dc90b058885804c20296d31/coverage-7.14.1-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:3a56abc20a472baf0304c455721bc601477440d28ecfde8a03dde79ede07e0df", size = 250266, upload-time = "2026-05-26T20:38:55.414Z" },
- { url = "https://files.pythonhosted.org/packages/7f/5e/0e511fbdb269359be26fe678a1c3fa1f2aa2a01573cc3f54268c8d6d4797/coverage-7.14.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6a3cb83d1552c0cd1b4906655b6a33fd4a8473229633a901c6b73bf86914dee9", size = 251174, upload-time = "2026-05-26T20:38:57.141Z" },
- { url = "https://files.pythonhosted.org/packages/85/10/e55307b622b3dd9671cb321824502dc10f93e72f2802b9946159a8edadeb/coverage-7.14.1-cp311-cp311-win32.whl", hash = "sha256:10274a1fbeb8ec5d72966e17bb198a3104257aca4ac09d98667c5f8aca8c8548", size = 222354, upload-time = "2026-05-26T20:38:58.727Z" },
- { url = "https://files.pythonhosted.org/packages/71/cf/107421693cfb71e4f1ca5bf70443f64d4161878068d07a3e51c7ad21d17b/coverage-7.14.1-cp311-cp311-win_amd64.whl", hash = "sha256:87ebdf787d4888e3f3f2d523eadc6e18c6d18c6d0eb173801a189641627fb37e", size = 223290, upload-time = "2026-05-26T20:39:00.413Z" },
- { url = "https://files.pythonhosted.org/packages/b8/1d/3e3644585eb29e9dafefb19555078529a4d7cce12bd21929664eea989277/coverage-7.14.1-cp311-cp311-win_arm64.whl", hash = "sha256:dd34767fa19848d35659ffc0a75314f58c7af3f1cd87ec521e8292a1238398a3", size = 221953, upload-time = "2026-05-26T20:39:02.159Z" },
- { url = "https://files.pythonhosted.org/packages/3d/b7/bdbb725ba02c5b42825b200c940f38b7a54fcad24627b7192f78f8110d76/coverage-7.14.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a06c76364a9360e33d6d23769aefdf7f66f38e2ffb60ceb1baaa4989d83b695c", size = 220022, upload-time = "2026-05-26T20:39:03.702Z" },
- { url = "https://files.pythonhosted.org/packages/72/81/fdc0898a55c6219223291ec1a1fe89966ef212ce82276aa0899df84b5de0/coverage-7.14.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fad54e871165f6ec2f536063ac74c3104508a12963e64072ba44bd822de52b0c", size = 220379, upload-time = "2026-05-26T20:39:05.381Z" },
- { url = "https://files.pythonhosted.org/packages/de/72/de048c4a25e13bce59ac6a339351c10bdf2515e07459afcdaf04dc3143a2/coverage-7.14.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:84b535f00655ecafe1d929d1fb00ed5d6fa3051ea643ab2c161a3887b86f294b", size = 251888, upload-time = "2026-05-26T20:39:07.367Z" },
- { url = "https://files.pythonhosted.org/packages/28/30/300c343f68beb9d4cbb64ec81e58c5b6b80b56927f72d2b38654ac26e013/coverage-7.14.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6b6b0853b895fe0e98cbfc580d1ec3393d9302b4b1e96a77b3f5c91fdab899e6", size = 254624, upload-time = "2026-05-26T20:39:09.037Z" },
- { url = "https://files.pythonhosted.org/packages/b1/ed/7b25642496e8170b6bac14adce00537c6e5fa2d586159401a4de3e8b49e6/coverage-7.14.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:442cc9c952b2df400cda54bb04ab87330cf2cd08a8692cbbea36773531eb6f37", size = 255739, upload-time = "2026-05-26T20:39:10.889Z" },
- { url = "https://files.pythonhosted.org/packages/7f/a2/abd210b8c4e29c24e4624916db97bb519097a91034aaeb767f937e7da794/coverage-7.14.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8270544c361ed405a27a060dbc9ed2c124b084d96dfdc2d9a2510482aef981ad", size = 257998, upload-time = "2026-05-26T20:39:12.722Z" },
- { url = "https://files.pythonhosted.org/packages/7f/24/7c50beed3792fe62f6ce0545c6686ce83379719e2c0276179333d97eae92/coverage-7.14.1-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:48b283b1dd6372e8de2a7a9a4c4d5dc06f4d4fd209b876f3c88a7a205a0c8f84", size = 252296, upload-time = "2026-05-26T20:39:14.259Z" },
- { url = "https://files.pythonhosted.org/packages/15/05/0f874628ebcbfc77ead559ff210281ef06a97db08481832e7dd39274a135/coverage-7.14.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5b0c99ba93a07d56f6df340bb79be53202a082b2fdb81bfe6190b741a3470d54", size = 253658, upload-time = "2026-05-26T20:39:15.923Z" },
- { url = "https://files.pythonhosted.org/packages/99/6f/ca6ad067364b337ef997802115e7ecad2abd2248b05471464b0dea02b4d4/coverage-7.14.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e471bc5769ff073b058cfadb0d736b56ce067c8560eabeb0da88462df98c23e7", size = 251803, upload-time = "2026-05-26T20:39:17.537Z" },
- { url = "https://files.pythonhosted.org/packages/c0/30/b9b4d377cd9f40baf228068f5a81faf8450c6228503011bd499708483a50/coverage-7.14.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:f497a1ea81d4cd7c10ddcaa685135b9aabd291af3d55775a9ddf3cb7a364cdd9", size = 255873, upload-time = "2026-05-26T20:39:19.414Z" },
- { url = "https://files.pythonhosted.org/packages/3c/21/7c721a9e5e6bb88547d30a787aefb97512d3f54c1324c7488d9b3743f7f9/coverage-7.14.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2222be86d0b54f5dd5a38f45f17f315f737245e857bf0bdedc70734f84a13c02", size = 251372, upload-time = "2026-05-26T20:39:21.169Z" },
- { url = "https://files.pythonhosted.org/packages/9d/8c/f8ae5a2200130e1503cd7661a6cd3b2b7bacef98277fbf3571fb13f8b766/coverage-7.14.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:85e85586565842f6932abebd4c18bcb1074223dc0b3576e7d173ca710622813a", size = 253245, upload-time = "2026-05-26T20:39:23.097Z" },
- { url = "https://files.pythonhosted.org/packages/34/62/70a9024672a5f6910517d9628c52c9afbdd3cf8f46426af52bb148a56fff/coverage-7.14.1-cp312-cp312-win32.whl", hash = "sha256:4a28fd227808366b196a75476dced2eb35b351d6766ba9c858dc93319e87f4f1", size = 222567, upload-time = "2026-05-26T20:39:24.868Z" },
- { url = "https://files.pythonhosted.org/packages/f6/81/8b7cd386839b039ebe1855733b9f9449a8dec5d79564018234f185a7fa70/coverage-7.14.1-cp312-cp312-win_amd64.whl", hash = "sha256:54acdb6674a4661768d7bf7db32dfb9f46ab1d764f8aba6df75ce1a6a088724e", size = 223372, upload-time = "2026-05-26T20:39:26.603Z" },
- { url = "https://files.pythonhosted.org/packages/ae/ba/b44d472022f620d289d95fa830143235c0c36461c6f2437ea8d51e5481ed/coverage-7.14.1-cp312-cp312-win_arm64.whl", hash = "sha256:99cd41ff91afd94896fea3bc002706b6ae4ce95727d06e4a0f39c0a8d8bd8b1a", size = 221989, upload-time = "2026-05-26T20:39:28.242Z" },
- { url = "https://files.pythonhosted.org/packages/8a/9e/5f6d56327c62b185225d145191c607e07515294a0aa6338e58805cd4a5ac/coverage-7.14.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:be9f2c802dcfce3f71298303aa5dad0dce440a76c52f2f60dacd8656dab78793", size = 220044, upload-time = "2026-05-26T20:39:29.902Z" },
- { url = "https://files.pythonhosted.org/packages/75/92/e82aca356744cbbc0f77a0b623e38918c1872361963413a3bab5d0340393/coverage-7.14.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6223a72fd0e4c7156353ec0f08a5f93623e1d3034d0e2683b9bb8ea674131b1d", size = 220412, upload-time = "2026-05-26T20:39:31.561Z" },
- { url = "https://files.pythonhosted.org/packages/27/c9/385bde0bf7ed0f4bf3a7ee5367060a86b5d218718cfd6fb943c0f836b34f/coverage-7.14.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7279d2110a28cebc738b6459ecda2771735a4c18465fbbd36b3288fe5ed92247", size = 251412, upload-time = "2026-05-26T20:39:33.337Z" },
- { url = "https://files.pythonhosted.org/packages/51/8c/23faf6a2343a0d17f960a4bd56c43bc7eb4cf312f774dd6ceebd82c7d8fc/coverage-7.14.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:9eeb3fcbc13ba40dfbdb22d01d196a28e9cef9ed4c29b60061a1e0e823a9929d", size = 254008, upload-time = "2026-05-26T20:39:35.009Z" },
- { url = "https://files.pythonhosted.org/packages/42/06/36f4aa9ca8a815e6036156e80706a67828bb97bd826948244f6996dda957/coverage-7.14.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f0cfc27c539f07cf5c0a4cfe211d0b6cae039f8f40526dbaa71944e64b50a7b", size = 255241, upload-time = "2026-05-26T20:39:36.71Z" },
- { url = "https://files.pythonhosted.org/packages/ca/79/95266316352f90f6b1c6736bb413302edfde2453fb32422d3911642691b3/coverage-7.14.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:221c70f316241a78e77e607c227cefc8808d4e08f28d99c04f35694690e940be", size = 257373, upload-time = "2026-05-26T20:39:38.412Z" },
- { url = "https://files.pythonhosted.org/packages/e3/9c/58316d1f66c488b5fca8a0eb3e98348807813efa8a0d0833b9021be27488/coverage-7.14.1-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:da028256b04ec30e5e0114b6f76172938c313991f0a2d3d894271315cf5d5e43", size = 251635, upload-time = "2026-05-26T20:39:40.268Z" },
- { url = "https://files.pythonhosted.org/packages/ef/5a/ca2398a568e16fed7bb713e84ba3603a7164fb65779abe645c565ec890d5/coverage-7.14.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:76a085d7005236a767e3426148b2c407e53ad61695c562f8a81da2d373324901", size = 253373, upload-time = "2026-05-26T20:39:42.145Z" },
- { url = "https://files.pythonhosted.org/packages/6e/2c/0396562c32deaebe7be51d865b3a41e9a87d7561acafe1a28f53b07e019a/coverage-7.14.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b553d04b5e778a8e56d57eb134aff42a92718ecba45e79c4764ecfa40efd92ff", size = 251341, upload-time = "2026-05-26T20:39:43.907Z" },
- { url = "https://files.pythonhosted.org/packages/fd/8f/a94f9221184c9cae1ee115820e3798e48b6b17777a9f19e46fb9a0c8dc74/coverage-7.14.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:46f714d2fb8ae2f4f29f23ada7f1e79b759fff5a70f94a1dac23af204c3ec9e4", size = 255497, upload-time = "2026-05-26T20:39:46.166Z" },
- { url = "https://files.pythonhosted.org/packages/71/69/505d70e47db1eaebcd002c39759707621ef184cd6b1ae084d9f41293f323/coverage-7.14.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:1896f5e19ff3f0431c7ce2172adc54890fd97f86b59ced8ca1649145d9ffe35d", size = 251159, upload-time = "2026-05-26T20:39:48.03Z" },
- { url = "https://files.pythonhosted.org/packages/e0/aa/58681c383aa33a9d2ed40a02d7a22fbf780d1fa4d575396365777828198c/coverage-7.14.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:62fd185ef9df3c33d1c8178c5af105f762afbad96038de9a4ae100aa6297ca33", size = 252934, upload-time = "2026-05-26T20:39:49.872Z" },
- { url = "https://files.pythonhosted.org/packages/eb/fd/11c928cd6bdffc7074bb5965c173d9ebf517fb00205e1da524b98d29ef92/coverage-7.14.1-cp313-cp313-win32.whl", hash = "sha256:ab4af6352741a604c431c6072fce5bee33bf0f20dc7a56618d6bf6bb89e9810c", size = 222584, upload-time = "2026-05-26T20:39:51.68Z" },
- { url = "https://files.pythonhosted.org/packages/6f/92/fb416fc26d340dcba19518c418d6048e913186e17243982c5e435e41fa7a/coverage-7.14.1-cp313-cp313-win_amd64.whl", hash = "sha256:7af486dabe8954d03b087f0021540897afe084f04e16ff5579e08cc46f871416", size = 223394, upload-time = "2026-05-26T20:39:53.472Z" },
- { url = "https://files.pythonhosted.org/packages/73/c6/02d56e3867972f77d5036de924643f26c056e848f00452cafb4dbc3c29b4/coverage-7.14.1-cp313-cp313-win_arm64.whl", hash = "sha256:2224f89ffd0c5605ccce1ed7a584da162bc7c55f601ab1c946bc9de31a486b42", size = 222015, upload-time = "2026-05-26T20:39:55.374Z" },
- { url = "https://files.pythonhosted.org/packages/4d/9e/fcc77914050df73f7662fa1f00902774c79c075a8388ab334074574bf77e/coverage-7.14.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:de286598cc65d2b489411174b1faec2f5a7775fb3201fd925db2a76b4030f37d", size = 220733, upload-time = "2026-05-26T20:39:57.189Z" },
- { url = "https://files.pythonhosted.org/packages/f7/67/2963cbdaf5cbadec44efa3a1e39eaa1f02df4079585f05387607a221e126/coverage-7.14.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:042c46ded7c288aeb07cf14a28b6c1e10b78fcba40171c3fa1e939377eeef0b5", size = 221086, upload-time = "2026-05-26T20:39:59.019Z" },
- { url = "https://files.pythonhosted.org/packages/c8/c5/8701645574e11881f2f47d8930f98bc48b5d43b25eb5b4430dfc4a2f9f48/coverage-7.14.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f4ddbe407477f04c45115d1a4e5bc480f753553b534d338d4c3358b1cdd0ea52", size = 262381, upload-time = "2026-05-26T20:40:00.822Z" },
- { url = "https://files.pythonhosted.org/packages/7c/28/7a64d73598263e0c5abd5084211a8474488d31b3c552ff531c719dfcff62/coverage-7.14.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d13e6725992e2d2fd7d81d4f5241952d13740121dfd501da09201be39b2c003a", size = 264458, upload-time = "2026-05-26T20:40:02.506Z" },
- { url = "https://files.pythonhosted.org/packages/fa/d8/4969179db9f7eb4df218e69540adf829d1c835f59452513d065d15446802/coverage-7.14.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f747dc8edcfe740130f28f32f3995e955494285717e86ee25af51db2219df08a", size = 266884, upload-time = "2026-05-26T20:40:04.421Z" },
- { url = "https://files.pythonhosted.org/packages/a6/78/a45d5794dbc9bafd97afc96a4377c86c7820d78b6cf51b89bc1d4e919275/coverage-7.14.1-cp313-cp313t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:ced2f09ef276fd58611a1ef502164ad266d2b75174e5a40cabbdb4033f9f6cf2", size = 268022, upload-time = "2026-05-26T20:40:06.298Z" },
- { url = "https://files.pythonhosted.org/packages/21/cb/4f5e354e9e3e67af96bd4e57113e6db6b22298c7168b13eec408a549903d/coverage-7.14.1-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b84800013769a78ccb9ef4659402e26d06867e337b61ec365f77ad008adea80e", size = 261631, upload-time = "2026-05-26T20:40:08.226Z" },
- { url = "https://files.pythonhosted.org/packages/ec/49/eced49af4cb996d5d8b7e94e736175c513e4facd3398507b89892b4326d8/coverage-7.14.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:ea8cd6ca0ee9f616aaef3afc6882e32c2cbf18b00d96313ffd76af650574034d", size = 264443, upload-time = "2026-05-26T20:40:10.137Z" },
- { url = "https://files.pythonhosted.org/packages/f1/d8/5603a88a7c5913a6b54f6cb1a8c46f7b39cbb30f27cd3f492908da09b2d7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:aa5e304a873fabddc11e484e9b6b738bd38bd7bed17b09aa84eecf5332e8b8bb", size = 262069, upload-time = "2026-05-26T20:40:11.999Z" },
- { url = "https://files.pythonhosted.org/packages/f0/59/2ae3cb79da554a06c8619d6c88ea19dd1e4aed4b834b6a83bb1fa243bdc5/coverage-7.14.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:5a1c5215be81035e629d5bc756650634d0bf31991038db7a0eccb90f025ce16d", size = 265780, upload-time = "2026-05-26T20:40:13.858Z" },
- { url = "https://files.pythonhosted.org/packages/af/5f/b130c1dc999031f2648bd25317fbce505ad8d5562079b4ed81e736a84967/coverage-7.14.1-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:79058c47dae6788504b5effb319961bcd72d7240551464b91d474bc0ed186d69", size = 260970, upload-time = "2026-05-26T20:40:16.142Z" },
- { url = "https://files.pythonhosted.org/packages/87/d1/ec13ccddeb48ec963bdfa72a11224bac2584bd045ba13beca82f8113e9c7/coverage-7.14.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:370c5afae3fa0658e11694a32b24c2778f6bc2d17718121f94ee185e69f26b54", size = 263157, upload-time = "2026-05-26T20:40:18.382Z" },
- { url = "https://files.pythonhosted.org/packages/cf/c2/cd91ead503045161092d3845f7bb95ea2f25131ce96d3e314dd835d91b9c/coverage-7.14.1-cp313-cp313t-win32.whl", hash = "sha256:3758dd0a7f1fa57365ef2e781df0f0731d38b6e3772259d13dae4bd8a958d4b1", size = 223259, upload-time = "2026-05-26T20:40:20.381Z" },
- { url = "https://files.pythonhosted.org/packages/71/9f/1e28d97e6bd2c76b07f38b7c02870f1371255ff6717f54eca578fcbbdd0e/coverage-7.14.1-cp313-cp313t-win_amd64.whl", hash = "sha256:6ff665fb023a77386fe11685190cee1f60a7d635994a30d9b0a061533d470fce", size = 224320, upload-time = "2026-05-26T20:40:22.316Z" },
- { url = "https://files.pythonhosted.org/packages/a9/e0/d936e908f0e1efa55e52b91e01b52f1055cef5e1ab2718493390ed8e2fb8/coverage-7.14.1-cp313-cp313t-win_arm64.whl", hash = "sha256:17a5a241e5997621a956a7f402a7433ef4221e5152809b785bec79e2323799f1", size = 222577, upload-time = "2026-05-26T20:40:24.894Z" },
- { url = "https://files.pythonhosted.org/packages/d6/34/fc2f101b151af3799a101f0550b0454aa008afdc0add677394ec4aa8ea10/coverage-7.14.1-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:d5ed429d0b8edaac649e889b4ffcedb6c80b06629a3f93050e3dddfb99235bee", size = 220091, upload-time = "2026-05-26T20:40:27.249Z" },
- { url = "https://files.pythonhosted.org/packages/3d/a7/1ebae2ab5b961b5c79bb09fe7b3ac99edb190d8be4a8c510b2cf66f46468/coverage-7.14.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8011224a62280e50dab346960c03cf47aca1a1e09e608c0fb33fd6e0cc8e9500", size = 220421, upload-time = "2026-05-26T20:40:30.084Z" },
- { url = "https://files.pythonhosted.org/packages/5e/90/92aca9cf0acc95123c96cd1eb1f08917897a7f5dee01e15738922971ec31/coverage-7.14.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:12c42ec1e14f553c4f817e989365982e646e27211f10a0f717855b94a79c8906", size = 251466, upload-time = "2026-05-26T20:40:32.542Z" },
- { url = "https://files.pythonhosted.org/packages/26/2b/78048cbe3b999f6cbf9cc0d90abba6a88a3e0863a8c1c6cbc762f3f8802f/coverage-7.14.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:06144cd511cf2624873a035c5069cf297144f6e77a73ee3d7a55b605ec5efb42", size = 253973, upload-time = "2026-05-26T20:40:34.473Z" },
- { url = "https://files.pythonhosted.org/packages/8e/21/c2e33b29d1cfde484a19d437afc343c6cd30b08d78cbbf9f5aff14e57b2b/coverage-7.14.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a311d8e1da24be5c1ccf85cbfb06315dbaa1703d5a1eab3f6432c72b837917c8", size = 255318, upload-time = "2026-05-26T20:40:38.154Z" },
- { url = "https://files.pythonhosted.org/packages/8e/ee/aad2f108d63b769121005302f16bf66db8625c88ceaba466942e09a2607e/coverage-7.14.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c79cead5b5bc584d9c71451cb984d0e3a84e0c0937379c8efcbf27c8d661b851", size = 257633, upload-time = "2026-05-26T20:40:40.164Z" },
- { url = "https://files.pythonhosted.org/packages/c2/f8/11a2c29b4fd76d9849f81d0bb812ec0017a9396df3217214e38934a8c837/coverage-7.14.1-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:dcbf65f1f66a26cdd88c35cf68fb4729c5d1cd2e88added72420541dfb212034", size = 251488, upload-time = "2026-05-26T20:40:42.631Z" },
- { url = "https://files.pythonhosted.org/packages/c9/b8/9a5820de4b8ac2b71d85e3b5fb49108d7469c665f0e2ad0dd7569023e305/coverage-7.14.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:fd86572566fb40189a8260446158235159bc7a82dfbc87a3b39cf4fb57fcec1c", size = 253329, upload-time = "2026-05-26T20:40:45.208Z" },
- { url = "https://files.pythonhosted.org/packages/6b/ff/f33e4823667e27548e8fd8df44217515303f9808d0ff29817db56f87d990/coverage-7.14.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:7771b601718fdde84832c3a434ca9bbf4ae9adbc49d84198b4110700c3c77c36", size = 251291, upload-time = "2026-05-26T20:40:47.502Z" },
- { url = "https://files.pythonhosted.org/packages/68/9b/489db0ebb209054766b90a9014a45f6d26eb724c02ec21311c3733b5a644/coverage-7.14.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:39b21e212c55af06fa375e3dbf90a8a8e38792f3a910c580066d23563830ddd5", size = 255564, upload-time = "2026-05-26T20:40:49.372Z" },
- { url = "https://files.pythonhosted.org/packages/27/b5/16bc2d4c2409b23c7737edb68c83bc89e345f378050549fe1d75ac7d34d5/coverage-7.14.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f2302660e32562a532b442480121aef8aa61a5bdb20b30bf0adab29f10a5a4b4", size = 251107, upload-time = "2026-05-26T20:40:51.677Z" },
- { url = "https://files.pythonhosted.org/packages/7d/0c/2629997469a00cd069d588a41c9dc887610f2775ae89d250c4791e65272a/coverage-7.14.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:03a6f93c1ec3b7f2e77b5dbcc5573a2c21f12529a5c6bbe0f16f72303cc2fa4d", size = 252764, upload-time = "2026-05-26T20:40:54.267Z" },
- { url = "https://files.pythonhosted.org/packages/d2/ee/f78d63c8f079e0d7211c7e2401fa17e311514534ba61bae03e4b287ce4ab/coverage-7.14.1-cp314-cp314-win32.whl", hash = "sha256:8a3ce026d73290f42f08dafecbd82c193a74df280461fbf97300fec51fd133ee", size = 222837, upload-time = "2026-05-26T20:40:56.496Z" },
- { url = "https://files.pythonhosted.org/packages/dc/b9/be539854f93a70dfbeec69117f33ec70dc42ff0b65b5b07ab8d40d04228e/coverage-7.14.1-cp314-cp314-win_amd64.whl", hash = "sha256:114c95ef29302423b87d159075805f4ab973254a2638a5d7d046c94887cc87d7", size = 223650, upload-time = "2026-05-26T20:40:58.351Z" },
- { url = "https://files.pythonhosted.org/packages/fe/9e/24e2842fef40f35ac82ba3a7719c8023d011bf3bf652d0675316a9d088a1/coverage-7.14.1-cp314-cp314-win_arm64.whl", hash = "sha256:a07891c3f4805442b31b71e84ba3cf29ed1aa9a428284e06deeb4b23e5b46343", size = 222218, upload-time = "2026-05-26T20:41:00.321Z" },
- { url = "https://files.pythonhosted.org/packages/0a/1d/ac0a9df5fe31c1e8bdd658074905fc12844a05c1a7e3fdb8417e97c31e23/coverage-7.14.1-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:1101a5ebb083aecb625ebb6209d4105b58f647b093cb2dc8122d7b33f743cfe1", size = 220822, upload-time = "2026-05-26T20:41:02.281Z" },
- { url = "https://files.pythonhosted.org/packages/32/cf/f964fd9aff20323f9f1a726c97135f8a76bcd87b92dad141a456a43f3c64/coverage-7.14.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:851b9e1e4e8a4608e77c79714b2e77c0970d2ed7202a05e92ae407817481887b", size = 221084, upload-time = "2026-05-26T20:41:04.593Z" },
- { url = "https://files.pythonhosted.org/packages/d8/5e/7e5ef2aba844de2b80d678619fcf0841b42e3f37f16411226f3fe4c1016f/coverage-7.14.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:d5b89cdfb2ee051b71e8c3c70bd81a9eff81100f736a269136fe1a68efe00474", size = 262454, upload-time = "2026-05-26T20:41:06.641Z" },
- { url = "https://files.pythonhosted.org/packages/64/62/75809bded87015cc4935524218a2a8ed8dd1a8498bfed30a2f4f7a4b4d34/coverage-7.14.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:0177614a0370f227888b4e436a7c55686d6a9f90eb1ade2b624ba685a1686e86", size = 264578, upload-time = "2026-05-26T20:41:08.556Z" },
- { url = "https://files.pythonhosted.org/packages/f3/42/d33392dc14633525012d2d504fa1a33b05538bf535f5c1d64675e5754b78/coverage-7.14.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2d69af5dea2de76fc485a83032a630523f985198b7e25be901ec60181587b01e", size = 266981, upload-time = "2026-05-26T20:41:10.824Z" },
- { url = "https://files.pythonhosted.org/packages/2a/49/0157c4428c2aca7f1e09d5565930586fd5ae36f1655f08b0daa7cf1fcae1/coverage-7.14.1-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:35ab22d91de736e8966b980dc355cbcdd2c6dbbcfe275f9a2991bc8a91b3df65", size = 268112, upload-time = "2026-05-26T20:41:12.966Z" },
- { url = "https://files.pythonhosted.org/packages/96/26/86b9ce71f4092b1ed325ce1421698081df1286b833400b6836912834d6e0/coverage-7.14.1-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:357d4e32935c36588aaba057d734fa32428c360c9fc2e4442afbf1b646beee6e", size = 261558, upload-time = "2026-05-26T20:41:15Z" },
- { url = "https://files.pythonhosted.org/packages/20/4c/c311210c5472cf5401d8422b0d7812cdd520f24417673afabda6c323faca/coverage-7.14.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:51bd64741cc6fa065abd300ede1afe5a5291ece9c31da8b24884deda48bcc3f8", size = 264447, upload-time = "2026-05-26T20:41:17.369Z" },
- { url = "https://files.pythonhosted.org/packages/fb/71/59513f8710ed3e6b0ac0a050a5b7e977bb9c9e880354863b5d00d8809256/coverage-7.14.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:9132cd363a68a4c3daa7c8704a654b1e39d3360f6f5b8ddd470608a945236c07", size = 262048, upload-time = "2026-05-26T20:41:19.309Z" },
- { url = "https://files.pythonhosted.org/packages/84/8d/bceed32dc494f5bbf50f775cd2e78ca814953942b5ea28d3c1c3ac316f14/coverage-7.14.1-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:07c6290b1697b862c0478eab545eec949a0d0e4d6d03497f446d706da3b4f2de", size = 265781, upload-time = "2026-05-26T20:41:21.559Z" },
- { url = "https://files.pythonhosted.org/packages/e7/c5/9348fe40dbfd4991aaf78df2c6c3098bfb2cc834d1fd362a64b4efef855a/coverage-7.14.1-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:5ea0c297e27133853b4d8a3eb799bff5a2dbd9f2f41537a240d337ac9b4df890", size = 260896, upload-time = "2026-05-26T20:41:23.428Z" },
- { url = "https://files.pythonhosted.org/packages/ca/92/1ea0f03929da7cf87206b1fa24f4c8e9c158be0455481af29ec0a1f3503f/coverage-7.14.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:01b7733daad0237daa01ef80fe2dfceffc911e6a17fa7b55d14aa8214eaaaecd", size = 263214, upload-time = "2026-05-26T20:41:25.419Z" },
- { url = "https://files.pythonhosted.org/packages/f6/a9/b2493c054c0e01a643266742ab45e15744e60743f9260cd930c7142b1124/coverage-7.14.1-cp314-cp314t-win32.whl", hash = "sha256:6adc5a36984624a70bf11d7184e20fa0a49aa7c47ffab43804106a1a695ea22e", size = 223624, upload-time = "2026-05-26T20:41:27.795Z" },
- { url = "https://files.pythonhosted.org/packages/fc/bd/3e1e6a57fccd2d7c83fcdf338e93ba98eb85c6e877dd34731ac585375490/coverage-7.14.1-cp314-cp314t-win_amd64.whl", hash = "sha256:ddf799247318f34dbcd2efa8c95a8d0642674e926bb1774cf9b63dfd2a389d1c", size = 224728, upload-time = "2026-05-26T20:41:30.098Z" },
- { url = "https://files.pythonhosted.org/packages/bb/d7/31066cf1d2f0c6c797fce911bcfa01dd35642dc6da992a950256097c5860/coverage-7.14.1-cp314-cp314t-win_arm64.whl", hash = "sha256:145986fe66647eb489f18d9a997567a3fd358584c4b5a808769113abc07466af", size = 222752, upload-time = "2026-05-26T20:41:32.123Z" },
- { url = "https://files.pythonhosted.org/packages/8a/3c/1a983b9a745d7f83d53f057bcc5bf79ba6a2bbc08266b3f0c7d6fe630c9b/coverage-7.14.1-py3-none-any.whl", hash = "sha256:a252f21c27e38347e60111a3266b03827422a7d5525951aceee313aa68bab1d2", size = 211815, upload-time = "2026-05-26T20:41:34.078Z" },
+version = "7.14.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/b4/91/0a7c28934e50d8ac9a7b117712d176f2953c3170bccced5eaacfa3e96175/coverage-7.14.3.tar.gz", hash = "sha256:1a7563a443f3d53fdeb040ec8c9f7466aed7ca3dc5891aa09d3ca3625fa4387f", size = 924398, upload-time = "2026-06-22T23:10:25.584Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ec/bd/b01188f0de73ee8b6597cf20c63fccd898ad31405772f15165cb61a62c00/coverage-7.14.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:360bec1f58e7243e3405d3bdf7a1a8115aa9b448d54dc7cd6f7b7e0e9406b62e", size = 220378, upload-time = "2026-06-22T23:07:38.925Z" },
+ { url = "https://files.pythonhosted.org/packages/33/eb/f7aa3cb46500b709070c8d12335446971ec8b8c2ea155fea05d2000b4b1f/coverage-7.14.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ed68faa5e85de2f3e400bc3f122e5c82735a58c8bb24b9f63a2215954ba17b2d", size = 220895, upload-time = "2026-06-22T23:07:41.536Z" },
+ { url = "https://files.pythonhosted.org/packages/c3/c0/b41b8499fc9060ca40ad2a197d301155be1ead398f0f0bfdb27b2b4a660f/coverage-7.14.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:830c1fca669c572dec37ce9c838224ee45aac5be0f6961edf871e82e49d6537c", size = 247631, upload-time = "2026-06-22T23:07:43.244Z" },
+ { url = "https://files.pythonhosted.org/packages/da/bb/e9ecea1307c6a549c223842cccbd5d55193cc27b82f26338782d4355047c/coverage-7.14.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a64caee2193563601dbaaa55fe2dcf597debef04a2f8f1fa8a07aa4bb7ac7a1e", size = 249460, upload-time = "2026-06-22T23:07:45.147Z" },
+ { url = "https://files.pythonhosted.org/packages/59/cb/3821542809b7b726296fd364ed1c23d10a5770f1469957010c3b4bc5d408/coverage-7.14.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0096fd7559178f0cc9cf088f2dbd2a02ef85bacaa69732c633517286b4494610", size = 251324, upload-time = "2026-06-22T23:07:46.875Z" },
+ { url = "https://files.pythonhosted.org/packages/76/27/f34f66f0ff152189ccc7b3f0582cf7909e239cb3b8c214362ed2149719b8/coverage-7.14.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:6197e5a00183c11a8ce7c6abd18be1a9189fd8399084ffc95196f4f0db4f2137", size = 253237, upload-time = "2026-06-22T23:07:48.352Z" },
+ { url = "https://files.pythonhosted.org/packages/22/81/aa363fa95d14fc892bd5de80edadc8d7cce584a0f6376f6336e492618e67/coverage-7.14.3-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7dfe427045520d6abca33687dfef767b4f635015893a1816c5decb12eb72ce18", size = 248344, upload-time = "2026-06-22T23:07:49.896Z" },
+ { url = "https://files.pythonhosted.org/packages/66/fe/dc8a149441a3fea611cbbaf46bb12099adbe08f69903df1794581b0504b8/coverage-7.14.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9a3f142070eb7b82fc4085a55d887396f9c4e21250bccebe2ba22502c45b9647", size = 249365, upload-time = "2026-06-22T23:07:51.464Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/a2/0004127deee122e020be24a4d86ce72fa14ae28198811b945aabf91293b5/coverage-7.14.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:64b2055bb6e0dc945af35cdeceb3633e6ed9273475ef3af85592410fd6803803", size = 247369, upload-time = "2026-06-22T23:07:53.064Z" },
+ { url = "https://files.pythonhosted.org/packages/1e/72/3654c004f4df4f0c5a9643d9abaed5b26e5d3c1d0ecabe788786cb425efa/coverage-7.14.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:1551b4caac3e3ec9f2bfcec6bf3776e01c0edbdd2e240431a50ca1a1aac72c27", size = 251182, upload-time = "2026-06-22T23:07:54.789Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/2f/7bdcdf1e7c4d0632648852768063c25582a0a747bb5f8036a04e211e7eb7/coverage-7.14.3-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:583d50d59142f8549470bd6390471d0fe8b8c8d69d6a0f28ac71e05380cef640", size = 247639, upload-time = "2026-06-22T23:07:56.254Z" },
+ { url = "https://files.pythonhosted.org/packages/03/dc/0e01b071f69021d262a51ce39345dd6bc194465db0acfc7b34fd89e6b787/coverage-7.14.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e0bb8a6bc7015efdf8a928753b25da1b9ca2d6f24ef04d2ee0688e486f32aae7", size = 248242, upload-time = "2026-06-22T23:07:57.692Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/51/08279e6ebe3479bf705db5fdc1a968e44ba1567e4cbc567f76b45f5e646e/coverage-7.14.3-cp310-cp310-win32.whl", hash = "sha256:d48400185564042287dc487c1f016a3397f18ab4f4c5d5ec36edc218f7ffa35b", size = 222431, upload-time = "2026-06-22T23:07:59.094Z" },
+ { url = "https://files.pythonhosted.org/packages/40/2f/5c56670781fee5722ef0c415a74750c9a033bfacdb9d07b1493a0308108d/coverage-7.14.3-cp310-cp310-win_amd64.whl", hash = "sha256:eadea7aba74e40adee867a8c0eec17b820b061d308a4b014f7a0e118c2b0aa61", size = 223059, upload-time = "2026-06-22T23:08:00.662Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/24/efb17eb94018dd3415d0e8a76a4786a866e8964aa9c50f033399d23939c2/coverage-7.14.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:e574801e1d643561594aa021206c46d80b257e9853087090ba97bed8b0a509d3", size = 220501, upload-time = "2026-06-22T23:08:02.182Z" },
+ { url = "https://files.pythonhosted.org/packages/76/93/32f1bfca6cdd34259c8af42820a034b7a28dfb44969a13ed38c17e0ba5b0/coverage-7.14.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f82b6bb7d75a2613e85d07cefa3a8c973d0544a8993337f6e2728e4a1e94c305", size = 221008, upload-time = "2026-06-22T23:08:03.701Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/88/0d0f974855ff905d15a64f7873d00bdc4182e2736267486c6634f4af293c/coverage-7.14.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a2335ea5fed26af2e831094964fa3f8fae60b45f7e37fcc2d3b615b2add3ad87", size = 251420, upload-time = "2026-06-22T23:08:05.211Z" },
+ { url = "https://files.pythonhosted.org/packages/39/7f/117dd2ec65e4140576f8ef991d88220f9b806769f7a8c20e0550c0f924e2/coverage-7.14.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fbb8c3a98e779013786ae01d229662aeacbc77100efbd3f2f245219ace5af700", size = 253331, upload-time = "2026-06-22T23:08:06.672Z" },
+ { url = "https://files.pythonhosted.org/packages/87/55/f0bd6d6538e3f16829fb8a44b6c0d2fe9da638bbfdd6a20f8b5da8f4fa81/coverage-7.14.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac082660de8f429ba0ea363595abb838998570b9a7546777c60f413ab902bbde", size = 255441, upload-time = "2026-06-22T23:08:08.208Z" },
+ { url = "https://files.pythonhosted.org/packages/1e/98/aa71f7879019c846a8a9662579ea4484b0202cf1e252ffeed647075e7eca/coverage-7.14.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:8ac012839ff7e396030f1e94e10553a431d14e4de2ab65cb3acb72bbd5628ca2", size = 257398, upload-time = "2026-06-22T23:08:09.749Z" },
+ { url = "https://files.pythonhosted.org/packages/f3/4f/5fd367e59844190f5965015d7bee899e67a89d13eb2760118479bf836f2f/coverage-7.14.3-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5952f8c1bda2a5347154450379316e6dfa4d934d62ca35f6784451e6f55074fb", size = 251558, upload-time = "2026-06-22T23:08:11.37Z" },
+ { url = "https://files.pythonhosted.org/packages/8f/de/5383a6ee5a6376701fe07d980fa8e4a66c0c377fead16712720340d701a3/coverage-7.14.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8cf0f2509acb4619e2471a1951089054dd58ebea7a912066d2ea56dd4c24ca4a", size = 253134, upload-time = "2026-06-22T23:08:13.04Z" },
+ { url = "https://files.pythonhosted.org/packages/01/99/09542b1a99f788e3daec7f0fadc288821e71aca9ea298d51bfa1ba79fed5/coverage-7.14.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:2e41fd3aab806770008279a93879b0924b16247e09ab537c043d08bbca53b4ab", size = 251195, upload-time = "2026-06-22T23:08:14.606Z" },
+ { url = "https://files.pythonhosted.org/packages/02/9d/722fe8c13f0fbb064491b9e8656e56a606286792e5068c47ca1042e773e8/coverage-7.14.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:f0a47095963cfe054e0df178daca95aec21e680d6076da807c3add28dfe920f7", size = 254959, upload-time = "2026-06-22T23:08:16.431Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/58/943627179ff1d82da9e54d0a5b0bb907bb19cf19515599ccd921de50b469/coverage-7.14.3-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:a090cbf9521e78ffdb2fcf448b72902afe9f5923ff6a12d5c0d0120200348af9", size = 250914, upload-time = "2026-06-22T23:08:18.03Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/d4/803efcbf9ae5567454a0c71e983589529448e2704ee0da2dc0163d482f18/coverage-7.14.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4d310baf69a4fbe8a098ce727e4808a34866ac718a6f759ae659cbd3221358bc", size = 251824, upload-time = "2026-06-22T23:08:19.704Z" },
+ { url = "https://files.pythonhosted.org/packages/32/79/3f78ea9563132746eed5cecb75d2e576f9d8fec45a47242b5ae0950b82a3/coverage-7.14.3-cp311-cp311-win32.whl", hash = "sha256:74fdd718d88fe144f4579b8747873a07ec3f04cb837d5faec5a25d9e22fa31a8", size = 222594, upload-time = "2026-06-22T23:08:21.311Z" },
+ { url = "https://files.pythonhosted.org/packages/85/22/9ebbc5a2ab42ac5d0eea1f48648629e1de9bbe41ec243ed6b93d55a5a53f/coverage-7.14.3-cp311-cp311-win_amd64.whl", hash = "sha256:cc96aa922e21d4bc5d5ed3c915cef27dfcbc13686f47d5e378d647fbfba655a2", size = 223073, upload-time = "2026-06-22T23:08:23.318Z" },
+ { url = "https://files.pythonhosted.org/packages/71/af/69d5fcc16cb555153f99cec5467922f226be0369f7335a9506856d2a7bd0/coverage-7.14.3-cp311-cp311-win_arm64.whl", hash = "sha256:c66f9f9d4f1e9712eb9b1de5310f881d4e2188cfcba5065e1a8490f38687f2c4", size = 222617, upload-time = "2026-06-22T23:08:25.054Z" },
+ { url = "https://files.pythonhosted.org/packages/bd/b0/8a911f6ffe6974dac4df95b468ab9a2899d0e59f0f99a489afeec39f00bc/coverage-7.14.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3d74ff26299c4879ce3a4d826f9d3d4d556fd285fde7bbce3c0ef5a8ab1cec24", size = 220672, upload-time = "2026-06-22T23:08:26.621Z" },
+ { url = "https://files.pythonhosted.org/packages/36/16/0fc0cb52538783dbbae0934b834f5a58fd5354380ee6cad4a07b15dc845d/coverage-7.14.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:96150a9cf3468ea20f0bc5d0e21b3df8972c31480ef90fa7614b773cc6429665", size = 221035, upload-time = "2026-06-22T23:08:28.372Z" },
+ { url = "https://files.pythonhosted.org/packages/77/e2/421ccfbb48335ac49e93301478cf5d623b0c2bf1c0cadd8e2b2fc6c0c710/coverage-7.14.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:27d07a46500ba23515b838dbcf52512026af04090755cf6cc64166d88c9b9a1a", size = 252540, upload-time = "2026-06-22T23:08:30.226Z" },
+ { url = "https://files.pythonhosted.org/packages/06/c2/05b8c890097c61a7f4406b35396b997a635200ded0339eda83dfbe526c5f/coverage-7.14.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:621e13c6108234d7960aaf5762ab5c3c00f33c30c15af06dcbff0c73bf112727", size = 255274, upload-time = "2026-06-22T23:08:31.876Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/be/b6d9efe447f8ba3c3c854195f326bd64c54b907d936cd2fdebf8767ec72e/coverage-7.14.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4b60ca6d8af70473491a15a343cbabab2e8f9ea66a4376e81c7aa24876a6f977", size = 256389, upload-time = "2026-06-22T23:08:33.843Z" },
+ { url = "https://files.pythonhosted.org/packages/d4/3c/f26e50acc429e608bc534ac06f0a3c169019c798178ec5e9de3dbc0df9c9/coverage-7.14.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c90a7cdd5e380e1ce02f19792e2ac2fbfbf177e35a27e69fd3e873b30d895c0c", size = 258648, upload-time = "2026-06-22T23:08:35.481Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/a2/01c1fabf816c8e1dae197e258edf878a3d3ddc86fbda34b76e5794277d8f/coverage-7.14.3-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5d788e5fd55347eef06ca0732c77d04a264de67e8ff24631270cdff3767a60cf", size = 252949, upload-time = "2026-06-22T23:08:37.562Z" },
+ { url = "https://files.pythonhosted.org/packages/89/c6/941166dd79c31fd44a13063780ae8d552eee0089a0a0930b9bdb7df554ed/coverage-7.14.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:62c7f79db2851c95ef020e5d28b97afde3daf9f7febcd35b53e05638f729063f", size = 254310, upload-time = "2026-06-22T23:08:39.174Z" },
+ { url = "https://files.pythonhosted.org/packages/10/31/80b1fd028201a961033ce95be3cd1e39e521b3762e6b4a1ac1616cb291e7/coverage-7.14.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:90f7608aeb5d9b60b523b9fb2a4ee1973867cc4865a3f26fe6c7577073b70205", size = 252453, upload-time = "2026-06-22T23:08:40.84Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/85/c3d9addd94c4b524f3f4af0232075f5fe7170ce99a1386edff803e5934db/coverage-7.14.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:1e3b91f9c4740aeb571ecf82e5e8d8e4ab62d34fcb5a5d4e5baa38c6f7d2857c", size = 256522, upload-time = "2026-06-22T23:08:42.494Z" },
+ { url = "https://files.pythonhosted.org/packages/91/14/e5a0575f73795af3a7a9ae13dadf812e17d32422896839987dc3f86947e1/coverage-7.14.3-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:c946099774a7699de03cbd0ff0a64e21aed4525eed9d959adde4afe6d15758ef", size = 252023, upload-time = "2026-06-22T23:08:44.243Z" },
+ { url = "https://files.pythonhosted.org/packages/38/9b/9652ee531937ce3b8a63a8896885b2b4a2d56adc30e53c9540c666286d88/coverage-7.14.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:16b206e521feb8b7133a45754643dead0538489cf8b783b90cf5f4e3299625fd", size = 253893, upload-time = "2026-06-22T23:08:46.113Z" },
+ { url = "https://files.pythonhosted.org/packages/b1/05/42678841c8c38e4b08bdfc48269f5a16dfbf5806000fe6a89b4cece3c691/coverage-7.14.3-cp312-cp312-win32.whl", hash = "sha256:ea3169c7116eb6cdf7608c6c7da9ecfcb3da40688e3a510fac2d1d2bafd6dc35", size = 222734, upload-time = "2026-06-22T23:08:47.858Z" },
+ { url = "https://files.pythonhosted.org/packages/df/87/07a4fcee55177a25f1b52331a8e92cf4f2c53b1a9c75ce2981fd59c684ad/coverage-7.14.3-cp312-cp312-win_amd64.whl", hash = "sha256:7ea52fc08f007bcc494d4bb3df3851e95843d881860ba38fe2c64dc100db5e7d", size = 223266, upload-time = "2026-06-22T23:08:49.494Z" },
+ { url = "https://files.pythonhosted.org/packages/aa/34/2b8b66a989282ea7b370beb49f50bab29470dc30bb0b03935b6b802782f7/coverage-7.14.3-cp312-cp312-win_arm64.whl", hash = "sha256:8cec0ad652ec57790970d817490105bd917d783c2f7b38d6b58a0ca312e1a336", size = 222655, upload-time = "2026-06-22T23:08:51.766Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/83/7fefbf5df23ed2b7f489907564a7b34b9b07098128e12e0fdfa92626e456/coverage-7.14.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:47968988b367990ae4ab17523790c38cd125e02c6bfd379b6022be2d40bdc38c", size = 220699, upload-time = "2026-06-22T23:08:53.522Z" },
+ { url = "https://files.pythonhosted.org/packages/31/e6/38c3653ff6d56d704b29241362387ca824e38e15b76fdcb7096538195790/coverage-7.14.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0ee68f5c34812780f3a7063382c0a9fcbb99985b7ddcdcaa626e4f3fb2e0783a", size = 221068, upload-time = "2026-06-22T23:08:55.571Z" },
+ { url = "https://files.pythonhosted.org/packages/20/86/4f5c45d51c5cd10a128933f0fd235393c9146abbfd2ce2dfa68b3267ead3/coverage-7.14.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:fa9e5c6857a7e80fa22ace5cf3550ae392bbfc322f1d8dd2d2d5a8be38cec027", size = 252060, upload-time = "2026-06-22T23:08:57.464Z" },
+ { url = "https://files.pythonhosted.org/packages/82/50/dfce42eff2cecabcd5a9bbad5489449c87db3415f408d23ffee417ce01f6/coverage-7.14.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:98a0859b0e98e43e1178a9402e19c8127766b14f7109a374d976e5a62c0e5c73", size = 254657, upload-time = "2026-06-22T23:08:59.453Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/d2/639ceb1bc8038fd0d66768278d5dc22df3391918b8278c2a21aa2602a531/coverage-7.14.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:69918344541ed9c8368566c2adc03c0e33d4550d7faa87d1b35e49b6a3286ea9", size = 255892, upload-time = "2026-06-22T23:09:01.291Z" },
+ { url = "https://files.pythonhosted.org/packages/8b/96/002094a10e113512500dc1e10430a449417e17b0f90f7d496bcb820208b7/coverage-7.14.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b7f300ac92cd4b570724c8ffbbd0c130fee298d2447f41d5a3abf58976fae1de", size = 258026, upload-time = "2026-06-22T23:09:03.017Z" },
+ { url = "https://files.pythonhosted.org/packages/0b/ec/286a5d2fad9c4bee59bd724feeb7d5bf8303c6c9200b51d1dd945a9c72b0/coverage-7.14.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:11a7ec9f97ab950f4c5af62229befc7faf208fdbc0116d3902d7e306cf2c5abd", size = 252285, upload-time = "2026-06-22T23:09:04.773Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/7d/a17753a0b12dd48d0d50f5fab079ad99d3be1eac790494d89f3a417ca0b9/coverage-7.14.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a571bd889cd36c5922ce8e42e059f9d37d02301531d11374afa4c87a578625d5", size = 254023, upload-time = "2026-06-22T23:09:06.513Z" },
+ { url = "https://files.pythonhosted.org/packages/86/ef/a76c6ceba6a2c313f905310abf2701d534cada22d372db11731831e9e209/coverage-7.14.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:de76caefc8deabb0dd1678b6a980be97d14c8d87e213ac194dbf8b09e96d63fb", size = 251989, upload-time = "2026-06-22T23:09:08.382Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/39/353013a75fec0fb49f7553519f9d52b4441e902e5178c93f38eb6c07cedb/coverage-7.14.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d20a15c622194234161535459affa8f7905830391c9ccfa060d495dbfe3a1c7f", size = 256144, upload-time = "2026-06-22T23:09:10.369Z" },
+ { url = "https://files.pythonhosted.org/packages/29/0e/613878555d734def11c5b20a2701a15cb3781b9e9ea749da27c5f436e928/coverage-7.14.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b488bd4b23397db62e7a9459129d01ff06a846582a732efd24834b24a6ada498", size = 251808, upload-time = "2026-06-22T23:09:12.057Z" },
+ { url = "https://files.pythonhosted.org/packages/af/76/359c058c9cfdcf1e8b107663881225b03b364a320017eda24a2a66e55102/coverage-7.14.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6a3693b4153394d265f44fb855fdc80e72403024d4d6f91c4871b334d028e4e0", size = 253579, upload-time = "2026-06-22T23:09:13.858Z" },
+ { url = "https://files.pythonhosted.org/packages/1d/d9/4ba2f060933a30ebe363cef9f67a365b0a317e580c0d5d9169d56a73ef1c/coverage-7.14.3-cp313-cp313-win32.whl", hash = "sha256:338b19131ab1a6b767b462bfcbaa692e7ae22f24463e39d49b02a83410ff6b37", size = 222741, upload-time = "2026-06-22T23:09:15.636Z" },
+ { url = "https://files.pythonhosted.org/packages/76/e8/196ebc25d8f34c06d43a6e9c8513c9266ef8dbf3b5672beb1a00cf5e29fa/coverage-7.14.3-cp313-cp313-win_amd64.whl", hash = "sha256:b3d77f7f196abdef7e01415de1bce09f216189e83e58159cfeef2b92d0464994", size = 223283, upload-time = "2026-06-22T23:09:17.478Z" },
+ { url = "https://files.pythonhosted.org/packages/7c/af/51d2aac6417523a286f10fb25f09eb9518a84df9f1151e93ff6871f34849/coverage-7.14.3-cp313-cp313-win_arm64.whl", hash = "sha256:e6230e688c7c3e65cedd41a774eb4ec221adc6bfee13768231015b702d5e4150", size = 222678, upload-time = "2026-06-22T23:09:19.7Z" },
+ { url = "https://files.pythonhosted.org/packages/61/56/14e3b97facbfa1304dd19e676e26599ad359f04714bed32f7f1c5a88efdc/coverage-7.14.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:605ab2b566a22bd94834529d66d295c364aba84afd3e5498285c7a524017b1fc", size = 220741, upload-time = "2026-06-22T23:09:21.616Z" },
+ { url = "https://files.pythonhosted.org/packages/12/1d/db378b5cca433b90b893f26dab728b280ddd89f272a1fdfed4aeaa05c686/coverage-7.14.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:a3c2134809e80fac091bfed18a6991b5a5eb5df5ae32b17ac4f4f99864b73dd7", size = 221068, upload-time = "2026-06-22T23:09:23.452Z" },
+ { url = "https://files.pythonhosted.org/packages/47/f0/3f8421b20d9c4fcd39be9a8ca3c3fda8bc204b44efbd09fede153afd3e2f/coverage-7.14.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c02efd507227bde9969cab0db8f48890eb3b5dcad6afac57a4792df4133543ce", size = 252117, upload-time = "2026-06-22T23:09:25.458Z" },
+ { url = "https://files.pythonhosted.org/packages/27/ca/59ea35fb99743549ec8b37eff141ece4431fea590c89e536ed8032ef45cf/coverage-7.14.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1bb93c2aa61d2a5b38f1526546d95cf4132cb681e541a337bf8dfd092be816e5", size = 254622, upload-time = "2026-06-22T23:09:27.523Z" },
+ { url = "https://files.pythonhosted.org/packages/c8/25/ec6de51ae7493b92a1cf74d1b763121c29636759167e2a593ba4db5881e4/coverage-7.14.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f502e948e03e866538048bba081c075caaa62e5bda6ea5b7432e45f587eb462a", size = 255968, upload-time = "2026-06-22T23:09:29.43Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/05/c8bfc77823f42b4664fb25842f13b567022f6f84a4c83c8ecbb16734b7cb/coverage-7.14.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9973ef2463f8e6cfb61a6324126bb3e17d67a85f22f58d856e583ea2e3ca6501", size = 258284, upload-time = "2026-06-22T23:09:31.397Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/15/1d1b242027124a32b26ef01f82018b8c4ef34ef174aa6aeba7b1eeef48e8/coverage-7.14.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:9be4e7d4c5ca0427889f8f9d614bd630c2be741b1de7699bca3b2b6c0e41003e", size = 252143, upload-time = "2026-06-22T23:09:33.256Z" },
+ { url = "https://files.pythonhosted.org/packages/74/b6/d2a9842fd2a5d7d27f1ac851c043a734a494ad75402c5331db3da79ed691/coverage-7.14.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:a574912f3bde4b0619f6e97d01aa590b70998859244793769eb3a6df78ee56d3", size = 253976, upload-time = "2026-06-22T23:09:35.351Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/30/e1600ddf7e226db5558bb5323d2186fff00f505c4b764643ec89ce5d8175/coverage-7.14.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:e343fb086c9cd780b38622fea7c369acd64c1a0724312149b5d769c387a2b1f5", size = 251942, upload-time = "2026-06-22T23:09:37.313Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/2c/9159de64f9dd648e324328d588a44cfab1e331eb5259ce1141afe2a92dfb/coverage-7.14.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:3c68df8e61f1e09633fefc7538297145623957a048534368c9d212782aa5e845", size = 256220, upload-time = "2026-06-22T23:09:39.165Z" },
+ { url = "https://files.pythonhosted.org/packages/91/67/b7f536cc2c124f48e91b22fbb741d2261f4e3d310faf6f76007f47566e5d/coverage-7.14.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:3e5b550a128419373c2f6cec28a244207013ef15f5cbcff6a5ca09d1dfaaf027", size = 251756, upload-time = "2026-06-22T23:09:41.056Z" },
+ { url = "https://files.pythonhosted.org/packages/dd/ec/f3718038e2d4860c715a55428377ca7f6c75872caf98cabd982e1d76967d/coverage-7.14.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2bfc4dd0a912329eccc7484a7d0b2a38032b38c40663b1e1ac595f10c457954b", size = 253413, upload-time = "2026-06-22T23:09:43.306Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/a5/91f11efeef89b3cc9b30461128db15b0511ef813ab889a7b7ab636b3a497/coverage-7.14.3-cp314-cp314-win32.whl", hash = "sha256:0423d64c013057a06e70f070f073cec4b0cbc7d2b27f3c7007292f2ff1d52965", size = 222946, upload-time = "2026-06-22T23:09:45.261Z" },
+ { url = "https://files.pythonhosted.org/packages/58/fd/98ac9f524d9ec378de831c034dbdeb544ca7ef7d2d9c9996daf232a037fd/coverage-7.14.3-cp314-cp314-win_amd64.whl", hash = "sha256:92c22e19ce64ca3f2ad751f16f14df1468b4c231bd6af97185063a9c292a0cb3", size = 223436, upload-time = "2026-06-22T23:09:47.177Z" },
+ { url = "https://files.pythonhosted.org/packages/b4/a0/7cd612d650a772a0ae80144443406bf61981c896c3d57c9e6e79fb2cdbd1/coverage-7.14.3-cp314-cp314-win_arm64.whl", hash = "sha256:41de778bd41780586e2b04912079c73089ab5d839624e28db3bdb26de638da92", size = 222861, upload-time = "2026-06-22T23:09:49.384Z" },
+ { url = "https://files.pythonhosted.org/packages/55/57/017353fab573779c0d00448e47d102edd36c792f7b6f233a4d89a7a08384/coverage-7.14.3-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:8427f370ca67db4c975d2a26acfc0e5783ca0b52444dbc50278ace0f35445949", size = 221474, upload-time = "2026-06-22T23:09:51.417Z" },
+ { url = "https://files.pythonhosted.org/packages/69/92/90cf1f1a5c468a9c1b7ba2716e0e205293ad9b02f5f573a6de4318b15ba1/coverage-7.14.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:d8e88f335544a47e22ae2e45b344772925ec65166555c958720d5ed971880891", size = 221738, upload-time = "2026-06-22T23:09:53.487Z" },
+ { url = "https://files.pythonhosted.org/packages/a4/c0/4df964fa539f8399fd7679c09c472d73744de334686fd3f01e3a2465ce4e/coverage-7.14.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:beaab199b9e5ceaf5a225e16a9d4df136f2a1eae0a5c20de1e277c8a5225f388", size = 263101, upload-time = "2026-06-22T23:09:55.895Z" },
+ { url = "https://files.pythonhosted.org/packages/06/76/e5d33b2576ae3bf2be2058cd1cae57774b61e400f2c3c58f3783dc2ffb4a/coverage-7.14.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:b3ff255799f5a1676c71c1c32ec01fd043aa09d57b3d95764b24992757184784", size = 265225, upload-time = "2026-06-22T23:09:57.904Z" },
+ { url = "https://files.pythonhosted.org/packages/61/d2/e52419afe391a39ba27fdefaf0737d8e34bf03faef6ab3b3006545bbd0d0/coverage-7.14.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:878832eaac515b62decfa76965aed558775f86bf1fc8cca76993c0c84ae31aed", size = 267643, upload-time = "2026-06-22T23:09:59.938Z" },
+ { url = "https://files.pythonhosted.org/packages/58/7a/f2625d8d5006b6b20fba5afaef00b24a763fe96476ea798a3076cbc1f84e/coverage-7.14.3-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:611e62cb9386096d81b63e0a05330750268617231e7bd598e1fe77482a2c58a5", size = 268762, upload-time = "2026-06-22T23:10:01.943Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/bf/908024006bba57127354d74e938954b9c3cd765cc2e0412dc9c37b415cda/coverage-7.14.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:02c41de2a88011b893050fc9830267d927a50a215f7ad5ec17349db7090ccf26", size = 262208, upload-time = "2026-06-22T23:10:03.954Z" },
+ { url = "https://files.pythonhosted.org/packages/34/a0/d4f9296441b909817442fdb26bd77a698f08272ec683a7394b00eb2e47a0/coverage-7.14.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:526ce9721116af23b1065089f0b75046fe521e7772ab94b641cd66b7a0421889", size = 265096, upload-time = "2026-06-22T23:10:05.936Z" },
+ { url = "https://files.pythonhosted.org/packages/e8/da/4ae4f3f4e477b56a4ce1e5c48a35eff38a94b50130ce5bdc897024741cfc/coverage-7.14.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e4ed44705ca4bead6fc977a8b741f2145608289b33c8a9b42a95d0f15aedbf4d", size = 262699, upload-time = "2026-06-22T23:10:07.973Z" },
+ { url = "https://files.pythonhosted.org/packages/d8/7a/6927148073ff32856d78baa77b4ddc07a9be7e90020f9db0661c4ca523a1/coverage-7.14.3-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:2415902f385a23dcc4ccd26e0ba803249a169af6a930c003a4c715eeb9a5444e", size = 266433, upload-time = "2026-06-22T23:10:10.145Z" },
+ { url = "https://files.pythonhosted.org/packages/f7/a7/774f658dbe9c4c3f5daa86a87e0459ac3832e4e3cc67affe078547f727b9/coverage-7.14.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:b75ee850fc2d7c831e883220c445b035f2224de2ba6103f1e56dbd237ab913f7", size = 261547, upload-time = "2026-06-22T23:10:12.191Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/14/a0c18c0376c43cbf973f43ef6ca20019c950597180e6396232f7b6a27102/coverage-7.14.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dc9b4e35e7c3920e925ba7f14886fd5fbe481232754624e832ddba66c7535635", size = 263859, upload-time = "2026-06-22T23:10:14.492Z" },
+ { url = "https://files.pythonhosted.org/packages/10/ac/43a3d0f460af524b131a6191805bc5d18b806ab4e828fbf82e8c8c3af446/coverage-7.14.3-cp314-cp314t-win32.whl", hash = "sha256:7b27c822a8161afbe48e99f1adfb098d270ae7e0f7d7b0555ce110529bdb69cc", size = 223250, upload-time = "2026-06-22T23:10:16.758Z" },
+ { url = "https://files.pythonhosted.org/packages/3f/5f/d5e5c56b0712e96ce8f69fe7dbf229ff938b437bc50862743c8a0d2cea84/coverage-7.14.3-cp314-cp314t-win_amd64.whl", hash = "sha256:39e1dbbb6ff2c338e0196a482558a792a1de3aa64261196f5cdb3da016ad9cda", size = 224082, upload-time = "2026-06-22T23:10:19.23Z" },
+ { url = "https://files.pythonhosted.org/packages/62/35/947cbd5be1d3bcbbdc43d6791de8a56c6501903311d42915ae06a82815f0/coverage-7.14.3-cp314-cp314t-win_arm64.whl", hash = "sha256:68520c90babfa2d560eca6d497921ed3a4f469623bd709733124491b2aa8ef3f", size = 223400, upload-time = "2026-06-22T23:10:21.24Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/e3/a0aa32bfa3a081951f60a23bc0e7b512891ef0eecda1153cf1d8ba36c6b1/coverage-7.14.3-py3-none-any.whl", hash = "sha256:fb7e18afb6e903c1a92401a2f0501ac277dca527bb9ca6fe1f691a8a0026a0e8", size = 212469, upload-time = "2026-06-22T23:10:23.405Z" },
]
[package.optional-dependencies]
@@ -361,71 +347,68 @@ toml = [
[[package]]
name = "cryptography"
-version = "48.0.1"
+version = "49.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/1b/bc/ee4137cbbe105652c0ee4252792b78fc8e7afa4b8e61d9d5dc05a7f45731/cryptography-48.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:3e4a1a3232eef2e6c732827d5722db29a0cc8b27af2a4d865b094cf954be9ca1", size = 8008324, upload-time = "2026-06-09T22:31:00.702Z" },
- { url = "https://files.pythonhosted.org/packages/d5/85/6379d42181bfc713094f081360fc5784d6c816b599d45e7f082502d173ce/cryptography-48.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:32143b24adb918f078134e1e230f1eb8cc04886b92c28b5f0041aaf3e5699225", size = 4696243, upload-time = "2026-06-09T22:32:33.446Z" },
- { url = "https://files.pythonhosted.org/packages/9c/87/c85d147b53323c7eb4d850920c8901377323c2a0ff8d79c262d4fee89aa2/cryptography-48.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0d27a5696721ef7a672b8c810f6aded391058e0b9486e63e6d93baf765da691", size = 4713235, upload-time = "2026-06-09T22:31:40.141Z" },
- { url = "https://files.pythonhosted.org/packages/79/58/67cbf8cf1ee7c54b439ca07bbecf8362c07afc11a3724fea70f745784add/cryptography-48.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:eb86ce1af36fe65041b6db9a8bb064ee621a7e5fded0f80d475ec243477cd242", size = 4702323, upload-time = "2026-06-09T22:31:42.191Z" },
- { url = "https://files.pythonhosted.org/packages/89/c6/24266ac10c47f6cd2a865f4446062b466da1d1f10b27189eac00e61bf0c9/cryptography-48.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:b024e784ad6c077ee0147b35ea9cbfc1e34e1fd4c1dcca214c2794d73a12df08", size = 5300085, upload-time = "2026-06-09T22:31:58.703Z" },
- { url = "https://files.pythonhosted.org/packages/d2/bb/cc4b78784f97efc8c5874c2a9743708d172be6663024b34a0467885ae0c8/cryptography-48.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3752f2dbc8f07a30aad2932c986cea495b03bb554887828225da104f732852b6", size = 4746137, upload-time = "2026-06-09T22:31:31.01Z" },
- { url = "https://files.pythonhosted.org/packages/1f/52/0c44de3f5267f8fbe8e835138017522a333436166e406f0db9b9e6e3033f/cryptography-48.0.1-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:bd81490cd5801d755cf97bb68ac191f14b708470b1c7cf4580f669b9c9264cd8", size = 4333867, upload-time = "2026-06-09T22:32:28.096Z" },
- { url = "https://files.pythonhosted.org/packages/9a/2e/772d7adbfa931537bc401640b7cac9976bff689bda187833e5d63b428e49/cryptography-48.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:66fd0771e7b9c6dcd44cf1120690d2338d16d72795cf40cae2786a39eba65429", size = 4701805, upload-time = "2026-06-09T22:31:38.284Z" },
- { url = "https://files.pythonhosted.org/packages/f8/a3/b06844f303873493c963caf581c04df31c7035e0c1b0f02c4814d319ec80/cryptography-48.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:3fd2ca57062b241c856670b073487d2e86c4637937ca5601e48f97bf8e11fc8f", size = 5258461, upload-time = "2026-06-09T22:31:04.187Z" },
- { url = "https://files.pythonhosted.org/packages/9f/13/8b765e2e12b07c74941caadb9d1c8fdc006c4dfbf2b8f2d610519758954d/cryptography-48.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:0ee6ea481db1ab889cba043ec1eda17bb9c1ea79db6722f779c3667f9f70322f", size = 4745488, upload-time = "2026-06-09T22:32:30.07Z" },
- { url = "https://files.pythonhosted.org/packages/2e/aa/48972bce55049b32a94f4907eda4d75fa385aad8a39506cc2fc72196ecf0/cryptography-48.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f2ceef93cb096aa3c4cc4b5c94ca6131f9196d28c64d6111533402a9b2054d41", size = 4830256, upload-time = "2026-06-09T22:31:43.868Z" },
- { url = "https://files.pythonhosted.org/packages/47/a2/e5079a032fb85cf6005046ca92bbd78b0c82dad2b5751ab8c311659da06f/cryptography-48.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9bd3f92d76217892b15df84ca256c2c113d386fdda7a7d8691aeeced976507c6", size = 4979117, upload-time = "2026-06-09T22:31:05.845Z" },
- { url = "https://files.pythonhosted.org/packages/b7/a0/8f50cae9c74e718ed769d63ed5c74bd0ea830c9550a74629cebd1b9c7bc7/cryptography-48.0.1-cp311-abi3-win32.whl", hash = "sha256:b9a32b876490d66c8bcc9963ef220199569748434ab01a9d6aaeabf88e7f5158", size = 3304154, upload-time = "2026-06-09T22:32:16.845Z" },
- { url = "https://files.pythonhosted.org/packages/c5/69/0572c77dbace6fef72f33755bd52ea399c71367250d366237f8691826b9e/cryptography-48.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:39489bfca54c7a1f6b297efcd8bc608ab92d16c4ca631b0cad4da46724588b24", size = 3817138, upload-time = "2026-06-09T22:32:00.388Z" },
- { url = "https://files.pythonhosted.org/packages/42/06/3e768b4c3bc78201583fa35a0e18f640dd782ff41afba88f8545481a8874/cryptography-48.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:f817adc181390bd54f2f700107a7419040fb7c1bdf2fc26f36551a06a68c3345", size = 7989830, upload-time = "2026-06-09T22:31:07.8Z" },
- { url = "https://files.pythonhosted.org/packages/8a/13/6476736484b94041110c8340a3eb63962fea4975baea8cb4a512adb44d4d/cryptography-48.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d5d30989c6917b478b5817902e85fddaea2261efa8648383d965381ccb9e1ac4", size = 4689201, upload-time = "2026-06-09T22:31:09.745Z" },
- { url = "https://files.pythonhosted.org/packages/79/62/65a87f34d2a431546e2509b85d55e8c90df86d668f6731da64d538512ac2/cryptography-48.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:df637c05205ea7c1d7fbcbe54bbfea648a52951155f997af13d895d0ecc96991", size = 4702822, upload-time = "2026-06-09T22:32:24.409Z" },
- { url = "https://files.pythonhosted.org/packages/7f/59/810b5204b0a9b10f4b6bc06bd551a8b609803cd931806bc3b71884b225e5/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:869c3b8a53bfe27147832df48b32adadf558249d50e76cb3769d40e986b13265", size = 4694875, upload-time = "2026-06-09T22:32:08.737Z" },
- { url = "https://files.pythonhosted.org/packages/24/dc/d8ca05ffea724eec6d232ea6f18e74c269eb6bdfdcc9bfba689790d1325f/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:e361afba8918070d376df76f408a4f67fec0ee9cff81a99e48fe9a233ef59e17", size = 5290385, upload-time = "2026-06-09T22:31:15.212Z" },
- { url = "https://files.pythonhosted.org/packages/03/8c/3be6cb4da181f5bb6c19cf560c2359d60644a6b5fc5b57854e528f47b296/cryptography-48.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:d069066deead00ac7f090be101be875a06855908f7ec004c27b8fefb4acfb411", size = 4737082, upload-time = "2026-06-09T22:32:22.66Z" },
- { url = "https://files.pythonhosted.org/packages/aa/f6/d5f60a5a1434dbfd949e227fd0065d194c7e6b6ac526b17f5c06152b8231/cryptography-48.0.1-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:09f73a725d582cef64b91281a322cd798d14a33b2b6f2b7ad9531dc336d84c02", size = 4325328, upload-time = "2026-06-09T22:32:10.777Z" },
- { url = "https://files.pythonhosted.org/packages/17/b7/ba75dd947a14b6ad907b01ae8f6b5b348cdd1b48142f0063dee9e20c1d9d/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:15254441469dd6bf027039453288e2072124f8b6603563f5d759e1c9b69273fa", size = 4694530, upload-time = "2026-06-09T22:31:53.105Z" },
- { url = "https://files.pythonhosted.org/packages/62/29/50d6b9e8aff12d8b67afaeb3569335e32dc83a5723e3bbded24fdac9f809/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:8ace4507d1e6533c125f4fac754f8bb8b6a74c08e92179dabd7e16571a3efbf3", size = 5245046, upload-time = "2026-06-09T22:31:25.774Z" },
- { url = "https://files.pythonhosted.org/packages/9f/04/618f4115cfc0add0838c82507aa18a346089428da8653ad38b3ff36f5cb3/cryptography-48.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:b4e391975f038e66432328639620a4aff2d307513b004f1ca06d6225bced815c", size = 4736660, upload-time = "2026-06-09T22:32:12.676Z" },
- { url = "https://files.pythonhosted.org/packages/24/9c/06e062462a0de28a3b3911322eded4c16deb9f441b1b7575d3dc59488ab5/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42fcd8e26fe555d9b3577a135f5091fefa0aa4e99129c23fb56787a1bd4ada72", size = 4822229, upload-time = "2026-06-09T22:31:17.062Z" },
- { url = "https://files.pythonhosted.org/packages/f4/be/0561971eaaee4b8a0e7d5113c536921063ab91aaf23278ac374eaf881e11/cryptography-48.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1400da5e32a43253392277eac7490a60e497d810a63dd5608d71bbd7af507c9", size = 4966364, upload-time = "2026-06-09T22:31:32.842Z" },
- { url = "https://files.pythonhosted.org/packages/a4/27/728c77876f12b000820b69ae490f3c4083775e79e07827e9e60be07ad209/cryptography-48.0.1-cp314-cp314t-win32.whl", hash = "sha256:0df56b056bc17c1b7d6821dfa65216e62bd232d8ab05eb3db44e71d235651471", size = 3278498, upload-time = "2026-06-09T22:31:29.154Z" },
- { url = "https://files.pythonhosted.org/packages/06/e3/79a612c6d7b1e6ee0edd43633d53035bec2cfb78c82b76f7864f39e36f34/cryptography-48.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:9de21387aa95e2a895823d0745b430bed4f33503ba9ab5e0b5311f33e37d66d2", size = 3798790, upload-time = "2026-06-09T22:31:56.697Z" },
- { url = "https://files.pythonhosted.org/packages/ca/6c/00fa2a95997164c8b2072ce327c23d4ab20809ccc323ea5fab91e53a4bba/cryptography-48.0.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:4fdc69f8e4316bcf0c8c8ec1f26f285d12e8142d88d96c876a59a03be3f6ae67", size = 7987408, upload-time = "2026-06-09T22:32:20.777Z" },
- { url = "https://files.pythonhosted.org/packages/b0/d9/45f309a7e4e5f3f8f121d6d3be9e94024a7726ec598d6e08ae04edb2f04d/cryptography-48.0.1-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48fe40804d4caa2288f24e70ca8c64c42dd826da0ad7e4f1b41b2128d679e6c8", size = 4690196, upload-time = "2026-06-09T22:31:54.74Z" },
- { url = "https://files.pythonhosted.org/packages/5f/9f/a1bc8bcc798811b8527eb374bbccf30a3f3e806829d967118222bf1125eb/cryptography-48.0.1-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:86be3b1b0b6bf09482fb50a979c508d2950ed95f5621ec77f4e385962006b83a", size = 4696782, upload-time = "2026-06-09T22:31:45.615Z" },
- { url = "https://files.pythonhosted.org/packages/66/c2/81a4fb4e4373c500bb526bc337ac5719dd31dd15b970b84a238168c6aa08/cryptography-48.0.1-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:4ab0a343c807bbcd90c971cd1ecf072937cd01847a9e002bef88fb47ac6be577", size = 4696618, upload-time = "2026-06-09T22:31:11.564Z" },
- { url = "https://files.pythonhosted.org/packages/e5/0b/aa68b221dde92d09cb29a024ede17550ee21e77a404e59fc093c82bb51e1/cryptography-48.0.1-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9621de99d2da096006b629979efd8ae7eb2d8b822488d0c89ee4000c306c59b1", size = 5289970, upload-time = "2026-06-09T22:31:20.368Z" },
- { url = "https://files.pythonhosted.org/packages/78/13/fba657f958d2af66ea959a4ba01212632089249d34af1ae48054136344d7/cryptography-48.0.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:88c852a0ae366e262e5a1744b685e6a433dc8788dd2a277e418bf4904203609d", size = 4731873, upload-time = "2026-06-09T22:31:22.253Z" },
- { url = "https://files.pythonhosted.org/packages/4c/4c/9a964756d24a26b3e34dfcb16f961b89838786e6700b635b0d1e3adff4b6/cryptography-48.0.1-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:43c5835e2cb98c8733d86f57d6fc879b613f5c3478607281c3e36daffc6dd8a6", size = 4330804, upload-time = "2026-06-09T22:31:36.56Z" },
- { url = "https://files.pythonhosted.org/packages/4b/0f/a10f3a6eb12950a10e3a874070283aa2dd5875b2bfd15fad8a3e17b3f13e/cryptography-48.0.1-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:fe0180af5bf9236518a087e35bf2d9a347d5f5f51e63c579d683ddff424e3d46", size = 4696217, upload-time = "2026-06-09T22:31:13.351Z" },
- { url = "https://files.pythonhosted.org/packages/f3/6f/5cd12f951165ea73ef85266775d97e4c763b2474ccfd816dd69d3a18d6f8/cryptography-48.0.1-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:b7a2d1a937a738a881737cec135a38bb61470589b17515b9f73f571d0ae10401", size = 5245252, upload-time = "2026-06-09T22:32:02.193Z" },
- { url = "https://files.pythonhosted.org/packages/68/ab/8aaa12e4516ec4464033ab79b6f3b592bd5a92102467c4ace8a0d970203f/cryptography-48.0.1-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b74ca3b8e5ecdd833bf6a002ca41b4793bb27fb8f1c06ffaf2643c9e9140e31b", size = 4731388, upload-time = "2026-06-09T22:32:04.019Z" },
- { url = "https://files.pythonhosted.org/packages/1b/24/50027ea4dca85ec1f40688f3c24fb32ccacd520583c9592c3cc95628e6fb/cryptography-48.0.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2c37f2461406063b417837f5f3daab668652acd82423efcd7f0a9f04be972de1", size = 4824186, upload-time = "2026-06-09T22:32:18.707Z" },
- { url = "https://files.pythonhosted.org/packages/52/41/04cb5eb17085ade6f50cc611fb657df6a0f5885350de8764ece89c050197/cryptography-48.0.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:86fe77abb1bd87afb251d4d02ada7ecf53a32cee9b67d976abb2e45a13297475", size = 4964539, upload-time = "2026-06-09T22:31:18.793Z" },
- { url = "https://files.pythonhosted.org/packages/36/bf/ed70785c496e89d7e73b7cda2d21f2447fd6d4e821714b8d04ff217fed92/cryptography-48.0.1-cp39-abi3-win32.whl", hash = "sha256:6b2c0c3e6ccf3ade7750f836ef3ee36eea250cc467d45c256895573ac08cc6f1", size = 3282307, upload-time = "2026-06-09T22:30:53.162Z" },
- { url = "https://files.pythonhosted.org/packages/b3/ff/371ea7d252656ee1eb6d83eeeef3d1d0c6baf1d6497687d081ea03814670/cryptography-48.0.1-cp39-abi3-win_amd64.whl", hash = "sha256:9a49ca6c81417f6a5edb50375a60cccdd70fa0a91a5211829dbea74eba94d2ac", size = 3793408, upload-time = "2026-06-09T22:32:15.191Z" },
- { url = "https://files.pythonhosted.org/packages/a9/d3/eb4e394e587341fdad09a09101fa76478ead3a78b0ad63e55c22f0d75c02/cryptography-48.0.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:08a597acce1ff37f347400087776599e2348a3a8bc53b44120e463cd274efe4a", size = 3951747, upload-time = "2026-06-09T22:31:23.871Z" },
- { url = "https://files.pythonhosted.org/packages/e0/4a/3f43451b4f858bfceaaaffc649e6e787e8d4fb332a1d443af39ab02cc8f1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:735824ec41b7f74a7c45fb1591349333e4c696cb6c044e5f46356e560143e4cd", size = 4641226, upload-time = "2026-06-09T22:31:02.532Z" },
- { url = "https://files.pythonhosted.org/packages/73/4e/855584c2c23b09e4ce2d3b9c30e983e679cd60b068c513c6bbdb91e11782/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:92a46e1d638daa264ba2971c0b0489c9409787943efae4d60ffda3d091ef832c", size = 4668958, upload-time = "2026-06-09T22:32:06.213Z" },
- { url = "https://files.pythonhosted.org/packages/42/3b/d35750e41d803d1e516fd6d6011f065424924da7af1748cef4cc9cb3ede1/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:7e234ac052af99f2700826a5c29ea99d9c1b1f80341cde62d11c8154dc8e0bd9", size = 4640793, upload-time = "2026-06-09T22:32:26.331Z" },
- { url = "https://files.pythonhosted.org/packages/ca/aa/cdb7181fe865285e87e96825aaab239400f1de0c3bfba9bd9769b79f1a92/cryptography-48.0.1-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:33842cf0888951cef5bc7ac724ab844a42044c1727b967b7f8997289a0464f92", size = 4668505, upload-time = "2026-06-09T22:31:27.534Z" },
- { url = "https://files.pythonhosted.org/packages/5d/8c/ce3823c06c2804f194f9e64f0d67fa3f4094a39f2bb1a990cd03603af8fc/cryptography-48.0.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:6184ca7b174f28d7c703f1290d4b297217c45355f77a98f67e9b7f14549ac54a", size = 3742204, upload-time = "2026-06-09T22:31:34.773Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl", hash = "sha256:966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db", size = 4032100, upload-time = "2026-06-12T20:02:32.143Z" },
+ { url = "https://files.pythonhosted.org/packages/09/41/3797cfaf69cae04a13ee78ebd83f0678d9c02b4779d21ce24445326f1a69/cryptography-49.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:36d1709f992593689b45bda411498d62c6e365f2ca00b84657d4dadd24de16db", size = 4692978, upload-time = "2026-06-12T20:01:21.305Z" },
+ { url = "https://files.pythonhosted.org/packages/e6/8b/43011f7ebe515a8aa20d61f290a326cd890c2e738e16e59eaff8d9c3a412/cryptography-49.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0e959b578856a3924bc0cbb710fc12c387b9412a951389f3ca61704a9e25f325", size = 4716422, upload-time = "2026-06-12T20:01:48.566Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/91/01ce7303a4579e6d3a6abef01bd322848e9ea7a219adcabc5048b9033571/cryptography-49.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:53ecee2e23f7169b6117e99fc8a944e5e50f79e69758a83b52a00cb98ab2b2d2", size = 4700503, upload-time = "2026-06-12T20:02:47.091Z" },
+ { url = "https://files.pythonhosted.org/packages/62/99/a2c95cf8293f07491e9e27c20cc4dcd18176d944e674679adeb1d0173fd6/cryptography-49.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:2eda353d8a27bcbcaa4cbed18994a74ab4d19a2ca897db188ea269ab9b71419b", size = 5309779, upload-time = "2026-06-12T20:02:08.987Z" },
+ { url = "https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6", size = 4749683, upload-time = "2026-06-12T20:02:03.335Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/5b/c5246635d5fd3b64e0d45ae10e99fd32fe9676a79915ccfe5a61ba9af1a5/cryptography-49.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:0b82e28ee398a386f0807bba7884d30f25218855690f45115831bcce5d90822c", size = 4337874, upload-time = "2026-06-12T20:02:54.323Z" },
+ { url = "https://files.pythonhosted.org/packages/6d/88/05563c7fe2e914e87d1a536d06fe83e66b4e1d95cb593e05aea375531da8/cryptography-49.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ccac2bfebc306b862133e3bb71f3f6ee8bb525240089b2d952e4144b3a6d5da7", size = 4700283, upload-time = "2026-06-12T20:01:34.822Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/b6/d7696e4e890d6ae1469935164c9e5215c557671cb78d6e3f458ccceaa632/cryptography-49.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:d0527ce944105f257f605a827d6ebead966c752038b6e8656abb9c5edee6fc68", size = 5265844, upload-time = "2026-06-12T20:01:24.09Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/3c/f3ad17eecc1a57b0ba236dc01f90e783c51f4a2f35f64777cc4f47a184b2/cryptography-49.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:cbc77da8c523d5abd028635ba850a6966fcee2c82e2bf65a41d1d8afe0f98be9", size = 4749290, upload-time = "2026-06-12T20:01:30.848Z" },
+ { url = "https://files.pythonhosted.org/packages/4f/01/339573cf1023163a400b0b5d16f6d507de413b9f60be6fd1b77feeaf6737/cryptography-49.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:b87e65d263b3e5d3bb92a57e2a6638e2f31110fa7aa890c7b2dbba42248d0a3f", size = 4834612, upload-time = "2026-06-12T20:01:29.246Z" },
+ { url = "https://files.pythonhosted.org/packages/71/fd/577302e213a1be9468f92d1afef66fcf1ef83d516819d9992ca547f592bd/cryptography-49.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:66ec79c3904820572d7e987abdf304281f141d37ad9a489b8e97066e7b9b6459", size = 4980804, upload-time = "2026-06-12T20:01:42.853Z" },
+ { url = "https://files.pythonhosted.org/packages/1f/09/f42b1d190c5ba75f72062a387f8030d1d75f6ab035788f1d9c4b01de6525/cryptography-49.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:e5dfc1e64de5677cec922ffa8da89c546d0415bf6efdf081842e5d44c84e1f0e", size = 3810026, upload-time = "2026-06-12T20:02:39.262Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/9e/db72b3ae7fc9cfad53e630e56c6ae83b9b6ff0bf3718ffb8012d20b3aabf/cryptography-49.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:73a205dce83953d131a4aa1e0fd917a2fd1c5b1eef251e9d7152efefcbf5caf7", size = 4013892, upload-time = "2026-06-12T20:02:10.735Z" },
+ { url = "https://files.pythonhosted.org/packages/86/12/c48a424f38db03027be9f7ed5c7dc5de9933dbee992865f98b13727a009d/cryptography-49.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:196ecd6a36e4e9aa10270393bb98d8df88fccee0bf1e5128b91ae4eb4375896d", size = 4678835, upload-time = "2026-06-12T20:02:48.743Z" },
+ { url = "https://files.pythonhosted.org/packages/68/28/8a3ad4653662c93fc44dc4e5d8fd374c25c42e07b34bbfbadf49cf57a5a8/cryptography-49.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7abcee80084cda3f7691f3eb1ce480d8df49cec637b429aa35986c1de71738aa", size = 4697239, upload-time = "2026-06-12T20:02:56.03Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/b2/2193fc74f81aee4f9b62733133b73b5176718932ed8f2e4b03fa040480a6/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:4ae387c9cb68ea569ca17e490d66d8142b81c3cc814bf179974b7d146e490bbb", size = 4685593, upload-time = "2026-06-12T20:02:50.666Z" },
+ { url = "https://files.pythonhosted.org/packages/47/f1/1d3eaa243bfc5de4a187b22aa8c048b3e4980bfbe830ac46e6bac2e66947/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:f37d847238971164fdbc68ade6f6574aecc9c0af714190e2083429ff68f4ce9d", size = 5289961, upload-time = "2026-06-12T20:01:46.468Z" },
+ { url = "https://files.pythonhosted.org/packages/58/39/2d51306721330c486495853eda1c567880ff036de15a14c4b74f399934af/cryptography-49.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:c2bc30226390d60ea19d9f82b19db005fe0452154a23c1c410c12ea801e43561", size = 4731145, upload-time = "2026-06-12T20:02:16.832Z" },
+ { url = "https://files.pythonhosted.org/packages/17/50/983e838c7fd0d87fd8c969bcdd328edaf5f756e38df5281637424c155873/cryptography-49.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:07cab27cc7b7e0fd28e5e26bb9eeedde5c135c868b46de4a27845abe94af6122", size = 4321719, upload-time = "2026-06-12T20:02:52.611Z" },
+ { url = "https://files.pythonhosted.org/packages/a7/f5/8f571d7e27c55bce9f76f026143bcb1e040a4233149ecca0bea5fa5dd5f7/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:b20133d204d2bb56ba047642199603876c872026ca53e79c35b83772ab2cc505", size = 4685209, upload-time = "2026-06-12T20:02:07.282Z" },
+ { url = "https://files.pythonhosted.org/packages/e7/84/0e27016a6fc5a0886f797018b26aa42f40c09a82332bff77822a451deaaa/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b970c6da94d5bb18629db453d14f2a1300f6bf59b61e9b82377931ef95504866", size = 5246285, upload-time = "2026-06-12T20:01:32.439Z" },
+ { url = "https://files.pythonhosted.org/packages/11/2d/5e1fb307cb5931881516b464c98774b3f2c36b5d4bb9a2830253cf553cad/cryptography-49.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:d8ecde755e2e91bf773fc94e8c9d730cd7f2007004cb492263a794ec3899a1c8", size = 4730441, upload-time = "2026-06-12T20:02:01.469Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/c0/bff5a02ee731d207d6a1ed51732549d8c53d2bc8da1d10ec6f2844201d68/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e3fb64c420688e5319ae25113a354015abbd8dffbfbc41781a1ea66fc7622ac3", size = 4815869, upload-time = "2026-06-12T20:01:36.574Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/26/814681d14248d95d73d5c3eea0c39a94eb8302df966f670a2c60de90974b/cryptography-49.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:32703d93296f5c1f4b53349ad3a250c2cae0fdecd3a3dd5d47e616d8d616af27", size = 4960948, upload-time = "2026-06-12T20:02:18.688Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/fe/93ecac273d3738939d023612ad12cca9a3740a5345d69fda04134c43fd96/cryptography-49.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:33cd0565932807baddb67b96dbee92f2c374b5c89dee09fd74079aeb8c8dba61", size = 3799153, upload-time = "2026-06-12T20:01:39.059Z" },
+ { url = "https://files.pythonhosted.org/packages/19/2a/5bb823f5bedcf80718cea7fbc95ec5515cca3769633c4b01a32be7f30e7c/cryptography-49.0.0-cp39-abi3-macosx_11_0_arm64.whl", hash = "sha256:ec5e529fb80935c94fe7b729f9972b50e351a0e6b50aa294fd5cabb109fcc29a", size = 4025947, upload-time = "2026-06-12T20:01:25.745Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/df/40577043ca124e17012f408ddddaeb213b856336ac82ddb3bc915f39e29f/cryptography-49.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f78ff2c9ed8dc2d036b0f4d640e22522213d047c1b14e61205a7e55c80a494d4", size = 4692429, upload-time = "2026-06-12T20:01:53.628Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/99/2d13299eb3dd27b02dcfaafcc91d6b5cb3329f7cbd6d8f51921acd566c1a/cryptography-49.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:35b151772baff2c74cba7fa290ceaff4c3b11c0c881eb93eb5dbc05a7cfbba18", size = 4700968, upload-time = "2026-06-12T20:02:45.383Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/4d/9c0cd02f95e2602dd5e563da149ee0830abef3537be8b34dc56281ebe27a/cryptography-49.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0f21641cf4b30fca7aee061ced0ec7ad7b073518088b7c9969a297c0ae796c69", size = 4697758, upload-time = "2026-06-12T20:01:41.13Z" },
+ { url = "https://files.pythonhosted.org/packages/24/01/186c825898477d77e2324d5360fefe622ff1d8d1963ec0554e2cada8ec77/cryptography-49.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:9e82dcc8e56052715fb18b2429e3bca4823b1629136a2084fc45a9a5cecb9b64", size = 5298863, upload-time = "2026-06-12T20:02:24.579Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/7b/62cbbab75d0659865bf0273790031544a0b16c8072d258f9428dcd8190dc/cryptography-49.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:6f2debedf9ca60cf1d5bd466475638af5130f89965605cd818484d19987d3a21", size = 4735983, upload-time = "2026-06-12T20:01:50.14Z" },
+ { url = "https://files.pythonhosted.org/packages/6c/72/3e798c064bc39e471008075d0f9bc9daf77a80879c092e4a8e170c585ed4/cryptography-49.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:8c25ceb16df5b9435f3f6a9829204985b0e0cbee3b48aacd432c7d2c850b44d9", size = 4334173, upload-time = "2026-06-12T20:01:44.743Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/ee/6fca21d1ac73e06f8bef71940abfd4d2f6472b4bca284d770f32bd4086f6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:28d8b15e6275f12c8a207dc309dfa957903c927d08d0cc937ee3f63f200693cc", size = 4697298, upload-time = "2026-06-12T20:02:20.918Z" },
+ { url = "https://files.pythonhosted.org/packages/67/d0/a5fcd3515f0bae49a7b6d0413cc1bdccdcc1fc0047037a0d480642cdc5d6/cryptography-49.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:6fc361c34fb6aac015ce19435876635e5c6d21db31998b0920f675f131e043b8", size = 5254338, upload-time = "2026-06-12T20:02:22.737Z" },
+ { url = "https://files.pythonhosted.org/packages/a0/84/84fe36f19caf857d61cb7fc9c63035a47ffabd84ea12d1d393148efa3615/cryptography-49.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:2400ef9c9e2299a25614eb1dea3db54a69b1349efd043bfac9c67630d136df36", size = 4735650, upload-time = "2026-06-12T20:02:41.389Z" },
+ { url = "https://files.pythonhosted.org/packages/6c/a0/db537264e234f7273a73ec020873d6d6b39dfd8a53db78b550ca8320440e/cryptography-49.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:67e1d20ad9ef3a563c59ef22e7a8a0b8210bd26604369ea4a30a7c66aefe504e", size = 4834820, upload-time = "2026-06-12T20:01:51.847Z" },
+ { url = "https://files.pythonhosted.org/packages/93/77/8df9eb486495979bccecd1062e2eaf435250e84437040295b57d09048b0b/cryptography-49.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:42b0684e0e40cf26122427802486f6d93aea593612603a94fbf260c7eb1e9c1b", size = 4967968, upload-time = "2026-06-12T20:02:12.524Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/e6/f60198ea8d9dfa15fff9ed4ca02ce362f6eadd9ba757dcc50634c4257b63/cryptography-49.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:026ac7423e6fa66872d3bf889be5974507da3944f866f704fa200eadacd00001", size = 3785547, upload-time = "2026-06-12T20:02:26.847Z" },
+ { url = "https://files.pythonhosted.org/packages/63/d3/4a83af35d65e3fad632c926fad684c193ea4398569ccb0bbbc7fe8f5dc9a/cryptography-49.0.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:fc1e275c2f1d97b1a6450b8b0ea3ebfa6e087a611c2b26cb2404d48588abab7b", size = 3993685, upload-time = "2026-06-12T20:02:14.883Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/a7/f9dac0ab7f80368c56993a7bf638ef9935f825c91902798481fac0898138/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83782480a4a9da4d0feb51950131ba32e12e70813848b3343f6e18c28a66838", size = 4676239, upload-time = "2026-06-12T20:02:28.793Z" },
+ { url = "https://files.pythonhosted.org/packages/d7/70/2ba3769dd0ae167e2f33dfa9592d45db6ff9a61d62ca1a5b3d1bdd09068f/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:b39efa323140595abd3ecca8529d321ae50f55f3aa3ba9cc81ea56a6011953d5", size = 4715584, upload-time = "2026-06-12T20:01:27.495Z" },
+ { url = "https://files.pythonhosted.org/packages/94/64/2923570ac1c0bd3a737aa366ac3abbbbde273042308b8cde95e2364a6e6a/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:b47db11c2c3525083296069b98ac5221907455e989ae0c2e3008bde851921615", size = 4675885, upload-time = "2026-06-12T20:01:55.49Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/f8/614dc7e051418cfe53d55173c1e24c6b0085e89996fe90508c2fdf769aef/cryptography-49.0.0-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:084ef1af862eb07ec46d25f68689f2102a9fc0e05ce7b80f14f5fe51e4eef0f6", size = 4715449, upload-time = "2026-06-12T20:02:05.469Z" },
+ { url = "https://files.pythonhosted.org/packages/aa/50/a9caea39ad19c431c1a3f8a31114df65b260cdfe67786b6c7e7c040c4c44/cryptography-49.0.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:be9fcb48a55f023493482827d4f459bd263cc20efde64f204b97c123201850c6", size = 3783731, upload-time = "2026-06-12T20:02:43.319Z" },
]
[[package]]
name = "distlib"
-version = "0.4.0"
+version = "0.4.3"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload-time = "2025-07-17T16:52:00.465Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c9/02/bd72be9134d25ed783ecbbc38a539ffaefbf90c78418c7fb7229600dbac7/distlib-0.4.3.tar.gz", hash = "sha256:f152097224a0ae24be5a0f6bae1b9359af82133bce63f98a95f86cae1aede9ed", size = 615141, upload-time = "2026-06-12T08:04:52.847Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload-time = "2025-07-17T16:51:58.613Z" },
+ { url = "https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl", hash = "sha256:4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b", size = 470628, upload-time = "2026-06-12T08:04:50.506Z" },
]
[[package]]
@@ -433,7 +416,7 @@ name = "exceptiongroup"
version = "1.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "typing-extensions", marker = "python_full_version < '3.11'" },
+ { name = "typing-extensions" },
]
sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
wheels = [
@@ -451,11 +434,11 @@ wheels = [
[[package]]
name = "filelock"
-version = "3.25.2"
+version = "3.29.4"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/94/b8/00651a0f559862f3bb7d6f7477b192afe3f583cc5e26403b44e59a55ab34/filelock-3.25.2.tar.gz", hash = "sha256:b64ece2b38f4ca29dd3e810287aa8c48182bbecd1ae6e9ae126c9b35f1382694", size = 40480, upload-time = "2026-03-11T20:45:38.487Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e6/dc/be6cbe99670cd6e4ad387123647cb08e0c32975e223f82551e914c5568a6/filelock-3.29.4.tar.gz", hash = "sha256:10cdb3656fc44541cdf30652a93fb10ec6b05325620eb316bd26893e4201538a", size = 63028, upload-time = "2026-06-13T16:12:00.744Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/a4/a5/842ae8f0c08b61d6484b52f99a03510a3a72d23141942d216ebe81fefbce/filelock-3.25.2-py3-none-any.whl", hash = "sha256:ca8afb0da15f229774c9ad1b455ed96e85a81373065fb10446672f64444ddf70", size = 26759, upload-time = "2026-03-11T20:45:37.437Z" },
+ { url = "https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl", hash = "sha256:dac1648087d5115554850d113e7dd8c83ab2d38e3435dde2d4f163847e57b767", size = 42757, upload-time = "2026-06-13T16:11:59.582Z" },
]
[[package]]
@@ -496,11 +479,11 @@ wheels = [
[[package]]
name = "griffelib"
-version = "2.0.1"
+version = "2.1.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/71/d7/2b805e89cdc609e5b304361d80586b272ef00f6287ee63de1e571b1f71ec/griffelib-2.0.1.tar.gz", hash = "sha256:59f39eabb4c777483a3823e39e8f9e03e69df271a7e49aee64e91a8cfa91bdf5", size = 166383, upload-time = "2026-03-23T21:05:25.882Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/33/e4/8d187ea29c2e30b3a09505c567513077d6117861bde1fbd997a167f262ec/griffelib-2.1.0.tar.gz", hash = "sha256:762a186d2c6fd6794d4ea20d428d597ffb857cb56b66421651cbba15bdd5e813", size = 216234, upload-time = "2026-06-19T12:05:42.278Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/4b/4c/cc8c68196db727cfc1432f2ad5de50aa6707e630d44b2e6361dc06d8f134/griffelib-2.0.1-py3-none-any.whl", hash = "sha256:b769eed581c0e857d362fc8fcd8e57ecd2330c124b6104ac8b4c1c86d76970aa", size = 142377, upload-time = "2026-03-23T21:04:01.116Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/d3/5268aeabf2ad82658c4e2ff3a060648d0f02f3926cb53247c0e4d0dab49e/griffelib-2.1.0-py3-none-any.whl", hash = "sha256:cc7b3d2d2865ad0b909fcc38086e3f554b5ea7acbaa7bbb7ecaa3f5dfb7d9f00", size = 142560, upload-time = "2026-06-19T12:05:38.742Z" },
]
[[package]]
@@ -543,7 +526,8 @@ docs = [
tests = [
{ name = "coverage" },
{ name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" },
- { name = "numpy", version = "2.4.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" },
+ { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*'" },
+ { name = "numpy", version = "2.5.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12'" },
{ name = "polib" },
{ name = "pygments" },
{ name = "pytest" },
@@ -576,7 +560,8 @@ docs = [
tests = [
{ name = "coverage", specifier = ">=7.12,<8" },
{ name = "numpy", marker = "python_full_version < '3.11'", specifier = ">=2,<2.3" },
- { name = "numpy", marker = "python_full_version >= '3.11'", specifier = ">=2.3.5,<3" },
+ { name = "numpy", marker = "python_full_version == '3.11.*'", specifier = ">=2.3,<2.5" },
+ { name = "numpy", marker = "python_full_version >= '3.12'", specifier = ">=2.5,<3" },
{ name = "polib", specifier = ">=1.2,<2" },
{ name = "pygments", specifier = ">=2.20,<3" },
{ name = "pytest", specifier = ">=9.0.1,<10" },
@@ -586,20 +571,20 @@ tests = [
[[package]]
name = "identify"
-version = "2.6.18"
+version = "2.6.19"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/46/c4/7fb4db12296cdb11893d61c92048fe617ee853f8523b9b296ac03b43757e/identify-2.6.18.tar.gz", hash = "sha256:873ac56a5e3fd63e7438a7ecbc4d91aca692eb3fefa4534db2b7913f3fc352fd", size = 99580, upload-time = "2026-03-15T18:39:50.319Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/52/63/51723b5f116cc04b061cb6f5a561790abf249d25931d515cd375e063e0f4/identify-2.6.19.tar.gz", hash = "sha256:6be5020c38fcb07da56c53733538a3081ea5aa70d36a156f83044bfbf9173842", size = 99567, upload-time = "2026-04-17T18:39:50.265Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/46/33/92ef41c6fad0233e41d3d84ba8e8ad18d1780f1e5d99b3c683e6d7f98b63/identify-2.6.18-py2.py3-none-any.whl", hash = "sha256:8db9d3c8ea9079db92cafb0ebf97abdc09d52e97f4dcf773a2e694048b7cd737", size = 99394, upload-time = "2026-03-15T18:39:48.915Z" },
+ { url = "https://files.pythonhosted.org/packages/94/84/d9273cd09688070a6523c4aee4663a8538721b2b755c4962aafae0011e72/identify-2.6.19-py2.py3-none-any.whl", hash = "sha256:20e6a87f786f768c092a721ad107fc9df0eb89347be9396cadf3f4abbd1fb78a", size = 99397, upload-time = "2026-04-17T18:39:49.221Z" },
]
[[package]]
name = "idna"
-version = "3.15"
+version = "3.18"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/cd/63/9496c57188a2ee585e0f1db071d75089a11e98aa86eb99d9d7618fc1edce/idna-3.18.tar.gz", hash = "sha256:ffb385a7e039654cef1ab9ef32c6fafe283c0c0467bba1d9029738ce4a14a848", size = 196711, upload-time = "2026-06-02T14:34:07.794Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
+ { url = "https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl", hash = "sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2", size = 65455, upload-time = "2026-06-02T14:34:06.319Z" },
]
[[package]]
@@ -831,7 +816,7 @@ wheels = [
[[package]]
name = "mkdocstrings"
-version = "1.0.3"
+version = "1.0.4"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "jinja2" },
@@ -841,14 +826,14 @@ dependencies = [
{ name = "mkdocs-autorefs" },
{ name = "pymdown-extensions" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/46/62/0dfc5719514115bf1781f44b1d7f2a0923fcc01e9c5d7990e48a05c9ae5d/mkdocstrings-1.0.3.tar.gz", hash = "sha256:ab670f55040722b49bb45865b2e93b824450fb4aef638b00d7acb493a9020434", size = 100946, upload-time = "2026-02-07T14:31:40.973Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/1d/5d/f888d4d3eb31359b327bc9b17a212d6ef03fe0b0682fbb3fc2cb849fb12b/mkdocstrings-1.0.4.tar.gz", hash = "sha256:3969a6515b77db65fd097b53c1b7aa4ae840bd71a2ee62a6a3e89503446d7172", size = 100088, upload-time = "2026-04-15T09:16:53.376Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/04/41/1cf02e3df279d2dd846a1bf235a928254eba9006dd22b4a14caa71aed0f7/mkdocstrings-1.0.3-py3-none-any.whl", hash = "sha256:0d66d18430c2201dc7fe85134277382baaa15e6b30979f3f3bdbabd6dbdb6046", size = 35523, upload-time = "2026-02-07T14:31:39.27Z" },
+ { url = "https://files.pythonhosted.org/packages/6e/94/be70f8ee9c45f2f62b39a1f0e9303bc20e138a8f3b8e50ffd89498e177e1/mkdocstrings-1.0.4-py3-none-any.whl", hash = "sha256:63464b4b29053514f32a1dbbf604e52876d5e638111b0c295ab7ed3cac73ca9b", size = 35560, upload-time = "2026-04-15T09:16:51.436Z" },
]
[[package]]
name = "mkdocstrings-python"
-version = "2.0.4"
+version = "2.0.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "griffelib" },
@@ -856,9 +841,9 @@ dependencies = [
{ name = "mkdocstrings" },
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/a4/b4/5fed370d8ebd96e4e399460a7146ae989263f16588b05a6facd6dbd51e60/mkdocstrings_python-2.0.4.tar.gz", hash = "sha256:58c73c5d358e64e9b1673447663f4a2f8a8941e392e225fc0a0c893758cc452f", size = 199219, upload-time = "2026-06-05T08:13:01.819Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/b1/b6/e858701499d57eee8b3fd8e78168083956c6683ddbe727b46758b19e1119/mkdocstrings_python-2.0.5.tar.gz", hash = "sha256:3a4d92556ad39637e88af94a5374213af9a8e3040c3824ceaed04b486c017594", size = 199578, upload-time = "2026-06-19T10:41:08.868Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/5e/e3/00ec594aef5f55522e6d373bc2ac53e53a8f5e9ae32f2d6854b0de4270f3/mkdocstrings_python-2.0.4-py3-none-any.whl", hash = "sha256:fd87c173e1e719a85997b6d4f852cdc55f36710e0ed08da3a7bd9abe79c9db00", size = 104790, upload-time = "2026-06-05T08:13:00.393Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/fc/10ab7e80650a9c9e8f4f1105f8c8e73567f88ed0c06ada589ab81d38687c/mkdocstrings_python-2.0.5-py3-none-any.whl", hash = "sha256:30c837bbff016549f659fcba6539ac351303f0fd7e713c89a040611072236e9d", size = 104951, upload-time = "2026-06-19T10:41:07.378Z" },
]
[[package]]
@@ -937,129 +922,183 @@ wheels = [
[[package]]
name = "numpy"
-version = "2.4.3"
+version = "2.4.6"
+source = { registry = "https://pypi.org/simple" }
+resolution-markers = [
+ "python_full_version == '3.11.*'",
+]
+sdist = { url = "https://files.pythonhosted.org/packages/d0/ad/fed0499ce6a338d2a03ebae59cd15093910c8875328855781952abf6c2fe/numpy-2.4.6.tar.gz", hash = "sha256:f3a3570c4a2a16746ac2c31a7c7c7b0c186b95ce902e33db6f28094ed7387dda", size = 20735807, upload-time = "2026-05-18T23:37:14.07Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b3/49/ec46835a70be8fa6446c495126ac84fdb28cb2558e1620ffb87a10c8b64c/numpy-2.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0280e0356c0829a18d9de1cb7eee50ec22ca639878d7240307ca0943d73cd2c4", size = 16969194, upload-time = "2026-05-18T23:33:13.503Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/0d/f5957185c0ee2f3e12f78715aa9e3b353fd83633316c8532b38faa37e3f6/numpy-2.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:110f8b71aacb688ec69062bb7f6938a0f8acb01b7c1c4beb453c65b6d234584d", size = 14964111, upload-time = "2026-05-18T23:33:17.795Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/40/40a40ee0ddf7ceb782c49af278894b686e586d65d8c1889c8b5da01a3d7d/numpy-2.4.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:4cfe66903cc32a9921a6733d96b19bb6abf310397581bbad89c228f5abaf0ee8", size = 5469159, upload-time = "2026-05-18T23:33:20.654Z" },
+ { url = "https://files.pythonhosted.org/packages/63/13/f9a8046535cb21deae82f8d03de9617e08882d274fad2539630761888228/numpy-2.4.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:8155154c7c691289fe18f510b5d4657c68c67989f293f0535a91360392ff6538", size = 6798936, upload-time = "2026-05-18T23:33:22.987Z" },
+ { url = "https://files.pythonhosted.org/packages/33/a8/6fa8c1a345a8c85dbb21932c447bee07c30a2c2a3f31e369c0a84b300147/numpy-2.4.6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ab0a9c4ffb1a6d95ef519fe4247dba8eb6b18ad93999f76b7f657039acabd47", size = 15966692, upload-time = "2026-05-18T23:33:26.62Z" },
+ { url = "https://files.pythonhosted.org/packages/02/03/74fe2a4cb3817d94d86402f2506554130a2f01414e299b5a843e5a8a957f/numpy-2.4.6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:89cd468399cfd2504718f0ba50e410dca55a170b61a02ad92bb18c8a65186e93", size = 16918164, upload-time = "2026-05-18T23:33:29.955Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/80/3615be3313f7e7696609bc194b9f0101da809df79e859bdb84e0cd043f46/numpy-2.4.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c2d37ab77531417474168eb79d6d80b14f821a966818505d03013d0833edb7a8", size = 17322877, upload-time = "2026-05-18T23:33:34.724Z" },
+ { url = "https://files.pythonhosted.org/packages/ca/ac/a691e0fe2675e370d0e08ff905adc49a1c8830e8cae03efe4477e92cd55d/numpy-2.4.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f407cb6b8e9d6d8c626bc73c945db1706035af8fd632295547bf1c9e46d092d6", size = 18651487, upload-time = "2026-05-18T23:33:38.217Z" },
+ { url = "https://files.pythonhosted.org/packages/15/a7/9bc1cd626d7bf6869bfedf27b91b6ab5dd607758bf8e959d6fa80c6a59cb/numpy-2.4.6-cp311-cp311-win32.whl", hash = "sha256:ddea102b48f9e339f3948bf22040944184627a30fdf7f858667673b9c5f033c8", size = 6233945, upload-time = "2026-05-18T23:33:41.331Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/31/7fc6239c12bce7e931463251cca4426c465e1876ba3cc785402ef4dd8f4e/numpy-2.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:1e254a00cdf42b1e4d5b3d68d33af63268d41340d8885df2ab6470f2e1500147", size = 12608406, upload-time = "2026-05-18T23:33:44.131Z" },
+ { url = "https://files.pythonhosted.org/packages/27/83/140f85a466595a16382996a1bf06b2b54bcd597488921b0c9daaeeda72af/numpy-2.4.6-cp311-cp311-win_arm64.whl", hash = "sha256:ed9749eef4cbd126da3dc1d6bcb3a57f5eb7ac6a6484146bdbf743f552dfc577", size = 10479528, upload-time = "2026-05-18T23:33:50.725Z" },
+ { url = "https://files.pythonhosted.org/packages/95/2a/3d7b5ac8aac24feaf9ad7ed58f45b0bbc06d37e4338ae84c9f2298b570f9/numpy-2.4.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:001fbb8e08d942dd57599e781f2472269ee7f2755fae407b4f67b2f0b17da3f1", size = 16689119, upload-time = "2026-05-18T23:33:54.065Z" },
+ { url = "https://files.pythonhosted.org/packages/ea/12/92c4c131527599e8288d6918e888d88726f84d805d784b771f32408aeaef/numpy-2.4.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ebfb099f8dcf083deef3ac1ca4c1503f387cf76296fcb3816b66f5ecb5f54fdb", size = 14699246, upload-time = "2026-05-18T23:33:57.621Z" },
+ { url = "https://files.pythonhosted.org/packages/ad/fe/c0a6b7b2ca128a8fb228575147073b660656734b8ebe4d76c8fd748dcc79/numpy-2.4.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:3213d622a0283a39a93d188f3cf72b26862df52fbb4ca3697f51705016523d41", size = 5204410, upload-time = "2026-05-18T23:34:00.302Z" },
+ { url = "https://files.pythonhosted.org/packages/f3/d4/9770d14ba719432bb90a421bfd443872ed0f70f7264b64bec12ea363d5fd/numpy-2.4.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:357cc07a6d7b0b182ff02249616a03742827ebb1277546b5c7cd7f7620a45698", size = 6551240, upload-time = "2026-05-18T23:34:02.852Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/c6/50a46a6205feba2343f1d6d17438107c5dc491ed1c736e6ea68689fd906b/numpy-2.4.6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5f9fb9157b4ce2971008323afe46053787b526ef624fea915b261468a8421a0f", size = 15671012, upload-time = "2026-05-18T23:34:05.485Z" },
+ { url = "https://files.pythonhosted.org/packages/99/60/14115e6364fa676c5397c2ad3004e527e9aa487abf5d0706ec81bbd08529/numpy-2.4.6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90f9849678c75fe7afa2d348ac842c168b0a4d3d61919687216dfc547976d853", size = 16645538, upload-time = "2026-05-18T23:34:09.265Z" },
+ { url = "https://files.pythonhosted.org/packages/ae/c5/693cbe59e57db94d2231fa519ca3978dc9e19da5a8f088588f5c6e947ff2/numpy-2.4.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c1a2af6c6ef86344a6b0db6b97834208bf598db514f2b155042439b62605601a", size = 17020706, upload-time = "2026-05-18T23:34:13.053Z" },
+ { url = "https://files.pythonhosted.org/packages/ef/fc/85b7c4eff9b4966ade25c2273cf7e7012e92366c032058653934b37de044/numpy-2.4.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e5805d5a22fd19c8ccff10a9561f9df94436b0545619ea579db2d3c35294bce2", size = 18368541, upload-time = "2026-05-18T23:34:17.024Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/81/e1b27545deedce7f4a0b348618c6b62d74e36a4dc9ccd42f3eb2f85eee32/numpy-2.4.6-cp312-cp312-win32.whl", hash = "sha256:e3eeb0aabd6bd5ce64faae67e9935203a6991b4bc2a485a767fbafb2c5125f45", size = 5962825, upload-time = "2026-05-18T23:34:20.3Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/ca/feab00bd44aa5fe1ad2c18f08b4d3bb92e26484b0b1d1443897809ed528c/numpy-2.4.6-cp312-cp312-win_amd64.whl", hash = "sha256:d8e8286dd7cea7895157318d1b91cdacac64c479f3cbc8dce548331728484751", size = 12321687, upload-time = "2026-05-18T23:34:23.095Z" },
+ { url = "https://files.pythonhosted.org/packages/63/cf/5a6d34850a39d1093558564f77ee8e8e0bee5061151b8f05a55711001ec7/numpy-2.4.6-cp312-cp312-win_arm64.whl", hash = "sha256:4081eb135ac24158bd51cdfbef16f1c64df7063b1143f24731387137c092bec8", size = 10221482, upload-time = "2026-05-18T23:34:25.876Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/82/bdab26d7438c6791ca31b7c024ca37c1eab8b726ba236129005cd4a06e45/numpy-2.4.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:511dbaf848decaaaf4b4ca48032619fb3138710c4bf7da7617765edad1ef96b0", size = 16684648, upload-time = "2026-05-18T23:34:29.41Z" },
+ { url = "https://files.pythonhosted.org/packages/1b/30/a80189bcc7f5e4258b3fbc3968d909d1756f54d023299ecc39ad6fdb9ef8/numpy-2.4.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:bf162abab1c1a736333192707cef898e735a5ca00f38f27eeedf44b39d9e85eb", size = 14693902, upload-time = "2026-05-18T23:34:33.013Z" },
+ { url = "https://files.pythonhosted.org/packages/97/12/70b5d0d7c15e1ebb8a6a84a8caa1d19e181d84fb58bb6d70aca29099dec1/numpy-2.4.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:043191bfa8eab18c776647b62723ac9dddece59743b13f49b2016094129c2b3f", size = 5198992, upload-time = "2026-05-18T23:34:36.132Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/8c/ebd2a8f8a83541f8d38cc5667e8c2b69cecfd30da6e45693e8158857d44b/numpy-2.4.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:6180d8b35af935aed8ece3a85e0a43f87393ae0ac87c8d2c8bd2c993f7270ef3", size = 6546944, upload-time = "2026-05-18T23:34:38.484Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/c5/7b863a97a91671a0338f4253bd3b5a3d3852f0692dae91711c9f4a10e787/numpy-2.4.6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:72fbe16c6fac95aedf5937fa873445cec2110be35d8a4e9433d7501fd98dae6b", size = 15669392, upload-time = "2026-05-18T23:34:41.257Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/9d/3584b9984ca4c047aea75214ce1a4c4c73d849bd71b604264b7f5653f8a8/numpy-2.4.6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7830bab239b79cda9c08c2da014761cafb48da6150e1da17ac06283f43b6089", size = 16633220, upload-time = "2026-05-18T23:34:45.075Z" },
+ { url = "https://files.pythonhosted.org/packages/05/ae/7c67fba23bd98caec7c99261f3a16072ade14813486b0282cb29846de832/numpy-2.4.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ef4aea96ce4d3b074422cb4f2f64e216bf9e213004bb58ecfdf50ea02ea8eb9a", size = 17020800, upload-time = "2026-05-18T23:34:49.065Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/5d/3b6725cb31d983c5e66916f5d36f6d7e5521129e4c4404d64f918292a5b6/numpy-2.4.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dfa20cc6ca228e6b155b11da03825975ce66aea520985dbbddf0f2a5a495c605", size = 18357600, upload-time = "2026-05-18T23:34:52.709Z" },
+ { url = "https://files.pythonhosted.org/packages/f7/da/2ccc6c2fe8898dee01d90c75c5f5f914a23daf99e3e0f59516a08760c8b5/numpy-2.4.6-cp313-cp313-win32.whl", hash = "sha256:56b39e5e0622a09a25bf5baf62f4bcf0cb8a41ae6e2819cf49bbc5a74c083f91", size = 5961134, upload-time = "2026-05-18T23:34:55.618Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/cd/9cc4dc876fb065d5c220aae4d5e14826b2715331bb7618ce1fb07a679d99/numpy-2.4.6-cp313-cp313-win_amd64.whl", hash = "sha256:c4fc99836233ea196540b17ab0983aff60ed07941751930f5f4d05bc3b3b7359", size = 12318598, upload-time = "2026-05-18T23:34:58.928Z" },
+ { url = "https://files.pythonhosted.org/packages/39/1e/c0bcba1f8694116485fe28fd1be698c278fcda4141c5b0e53a2aed8b12a8/numpy-2.4.6-cp313-cp313-win_arm64.whl", hash = "sha256:a7c711e21628b52034bb5ab8d1bce291f752fcc5e92accc615778acee1ff4778", size = 10222272, upload-time = "2026-05-18T23:35:02.167Z" },
+ { url = "https://files.pythonhosted.org/packages/63/6d/cc5619247c8f4204e507f5883528372e4ac4bb189e579fb859a12e480b1f/numpy-2.4.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:112b06a867b235ef466ed3508ddf0238050df9c727cafb5301ac385b899189a1", size = 14821197, upload-time = "2026-05-18T23:35:05.468Z" },
+ { url = "https://files.pythonhosted.org/packages/00/58/f1c39161c87d9e9bed660f1ed4bafc0e403d5ec9650b6dd77aead07d489b/numpy-2.4.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:eaf7fa2de5c0be8ae6ff8e9bea2ccd725e980541244521d8d4b5f3354a27babe", size = 5326287, upload-time = "2026-05-18T23:35:08.693Z" },
+ { url = "https://files.pythonhosted.org/packages/af/57/3917ab0fd97f271a8694513581b8a36c655f111c446852c302f04ccdb6fc/numpy-2.4.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:7265a2f3d436e54ef9f2b52b5c937e6be778781bd97a590319d7348f1c1ca997", size = 6646763, upload-time = "2026-05-18T23:35:11.459Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/0f/037e64c494b67581ae18193d770adef354c41f3f2c8ebf865602d949bf8f/numpy-2.4.6-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f74a575920ab21fe304421a3fc28793d82e299cae9eccb37084e9fc7f3617c20", size = 15728070, upload-time = "2026-05-18T23:35:14.79Z" },
+ { url = "https://files.pythonhosted.org/packages/21/a6/5d2bae9c9542eb4df16dc9c46dc79c186e9bad53805dfa5399a6023c6db0/numpy-2.4.6-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ede83e07a75dd06bc501566c1eca2afc0d61677c1472ac9ad93fdee6e638a48d", size = 16681752, upload-time = "2026-05-18T23:35:18.836Z" },
+ { url = "https://files.pythonhosted.org/packages/92/14/23d1dfb410ae362cd59ce53e936b1513d545eb40db3949ced632e19a459e/numpy-2.4.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:68bb27509ac1b9a3443094260f6326150663b06abe40b73a2f81160623da5b67", size = 17086024, upload-time = "2026-05-18T23:35:22.52Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/6e/23595a2c642cdf3bc567877064bdd7f91c8b0038a4453cf2daf7248eafe9/numpy-2.4.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a0df0043bdb289bde1f62da130d20df23d58b45429f752bc7a8fc5325a225ecd", size = 18403398, upload-time = "2026-05-18T23:35:26.398Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/90/0ac3bc947217e66dec77e7cbc6a1979d1af70b6461b82f620d3bccd5e4c8/numpy-2.4.6-cp313-cp313t-win32.whl", hash = "sha256:29a287e0cf63ff528da061de6b9f64a4618da591ca1046aafc54062e40ca7eab", size = 6084971, upload-time = "2026-05-18T23:35:29.387Z" },
+ { url = "https://files.pythonhosted.org/packages/77/71/5673e351671a1d2bd6063b91b44f70c0affea7d1516fa7a6572941ba4aa1/numpy-2.4.6-cp313-cp313t-win_amd64.whl", hash = "sha256:25c692919ac5a01f170a3bfcd62d745b24fd095c353d50812637d6fcab442e75", size = 12458532, upload-time = "2026-05-18T23:35:32.175Z" },
+ { url = "https://files.pythonhosted.org/packages/3f/88/19d3503c5046e688f049274b27a3ef3d771152fa80d3ba3d01a3dff61abe/numpy-2.4.6-cp313-cp313t-win_arm64.whl", hash = "sha256:1e978ec1e8bd0e0e4de6bb75de9d30cbb74db6b6a2bb727618613703ca0167dd", size = 10291881, upload-time = "2026-05-18T23:35:35.465Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/91/3ab2044d05fd16d343c5ac2e69b127f1b2854040dd20b193257c78028bd3/numpy-2.4.6-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:06ca2f61ec4385a07a6977c55ba998a4466c123642b4a32694d3128fce18c079", size = 16683458, upload-time = "2026-05-18T23:35:38.353Z" },
+ { url = "https://files.pythonhosted.org/packages/8e/62/764ce66fa4147ae6d73071a3abf804ffe606f174618697c571acdf26a7c9/numpy-2.4.6-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:38efbc8de75c7a0fc1ac190162d892787f3f47b57cc291231aafee36b80982b7", size = 14704559, upload-time = "2026-05-18T23:35:42.14Z" },
+ { url = "https://files.pythonhosted.org/packages/60/61/23f27c172f022e04025b7dc2367f4d63c1a398120607ec896228649a6f48/numpy-2.4.6-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:d581b735e177fdcdce6fed8e7e8880a3fb6ee4e3653a3ac6af01c6f4c03effc5", size = 5209716, upload-time = "2026-05-18T23:35:45.377Z" },
+ { url = "https://files.pythonhosted.org/packages/03/71/21cf70dc6ea3e3acb95fc53a265b2fc248b981f0194ceb5b475271b8809d/numpy-2.4.6-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:0a041d3d761dc3c35cc56ce0351506a02bcbc25f7b169f652435141a17db9096", size = 6543947, upload-time = "2026-05-18T23:35:47.926Z" },
+ { url = "https://files.pythonhosted.org/packages/d5/91/64288395ee1799bd2e0b04a305dce9666da90c961e1f3fe982a05ee1c036/numpy-2.4.6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:40fdc1ae7125e518ea98e53e69a4ebc27e1fd50510c47b7ea130cf21e5e1d42b", size = 15685197, upload-time = "2026-05-18T23:35:50.863Z" },
+ { url = "https://files.pythonhosted.org/packages/f3/eb/ebffaa97dc55502df69584a8f0dcf07f69a3e0b3e2323670a2722db9aa39/numpy-2.4.6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a2c306dea656c12c68f51f4cea133cbe78ca7435eb28c735eac1d3ebe73be6e8", size = 16638245, upload-time = "2026-05-18T23:35:54.752Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/0b/54f9da33128d7e350fab89c7455902eeae70349ee52bddb448dc4a576f45/numpy-2.4.6-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:33111801a01c12a8a1e3721f0a9232f8cfc8ae2c6b7098167e6f623c6073f402", size = 17036587, upload-time = "2026-05-18T23:35:58.355Z" },
+ { url = "https://files.pythonhosted.org/packages/b6/f0/fdebc1052db1cc37c64beb22072d67cd6d1c71adca1299f53dec2b5e20d3/numpy-2.4.6-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae506e6902902557576a26ff33eda8695e7ecb3cb36c3b573a0765dee114ebdb", size = 18363226, upload-time = "2026-05-18T23:36:02.845Z" },
+ { url = "https://files.pythonhosted.org/packages/aa/b4/298628d98c72b57e57f7165ae6a481a1deaf6f3c28262a6e4c739c275930/numpy-2.4.6-cp314-cp314-win32.whl", hash = "sha256:aaf159caa35993cb1f56fb9b8e4610d35758e7ca005412eb1daa856a78c9c4b1", size = 6010196, upload-time = "2026-05-18T23:36:05.92Z" },
+ { url = "https://files.pythonhosted.org/packages/df/ac/46de6dda46478f7942f839e094970be2d4a861e005c4b3bf07c92e291a09/numpy-2.4.6-cp314-cp314-win_amd64.whl", hash = "sha256:b507f5c4c1d508876d1819b6bf9a49d365b96320b5d4993426b33a23ca4b8261", size = 12450334, upload-time = "2026-05-18T23:36:09.107Z" },
+ { url = "https://files.pythonhosted.org/packages/78/92/b8b798ac784102c0da830d2257d59358e3d3d90d1e2b3f2575dad976c5cf/numpy-2.4.6-cp314-cp314-win_arm64.whl", hash = "sha256:6f41ae150c4e32db4f3310cdaf64b1593a03dbabe29eec77fc9b50fe64061df6", size = 10495678, upload-time = "2026-05-18T23:36:12.766Z" },
+ { url = "https://files.pythonhosted.org/packages/30/34/ec28d1aa8115971537c01469ab2011ee96827930f0a124de1000cc2a7ed7/numpy-2.4.6-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:ece3d2cfe132e7d51f44a832b303895e6f2d499c5e74dfbdb06ee246147a304a", size = 14823672, upload-time = "2026-05-18T23:36:16.473Z" },
+ { url = "https://files.pythonhosted.org/packages/16/bd/f6d1fede4e54e8042a7ff97bb495510f3c220f94bcd9e8b228e87c92cc0d/numpy-2.4.6-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:e3e5193ef5a3dc73bceee50f7fdc2c90dbb76c42df8d8fae3d1067a583df579e", size = 5328731, upload-time = "2026-05-18T23:36:19.767Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/f0/e105b9e2fd728a9910103884decd6951d9dd73896b914a98d9a231de02ee/numpy-2.4.6-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:17f9ade344e7d9b464a084d69bcf18fc691cb1db67c62ed80820bf4926d78f0e", size = 6649805, upload-time = "2026-05-18T23:36:22.266Z" },
+ { url = "https://files.pythonhosted.org/packages/82/dd/1206a7ca6ab15e3f02069707ca96222e202af681bb73756da7527f3cb837/numpy-2.4.6-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9cd5ffd25db4e7ba6a375693b3fc0fc1791ec636c17db3720da19bde7180ec43", size = 15730496, upload-time = "2026-05-18T23:36:25.713Z" },
+ { url = "https://files.pythonhosted.org/packages/51/e7/38d3ea825dcab85a591734decb2f6c67caa7c8367d374df1a1c3842f9b07/numpy-2.4.6-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7d92c3819208a60205a12a245c91ad70cb0a85336659b19b834205573ac8456e", size = 16679616, upload-time = "2026-05-18T23:36:29.652Z" },
+ { url = "https://files.pythonhosted.org/packages/93/b7/caabfdf53edf663e0b4eb74d7d405d83baef09eb5e83bcd32d601d72b93e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e85b752a1e912b70eaad4fafbd4d1238007ab221de2009b9a2f5ae7461239895", size = 17085145, upload-time = "2026-05-18T23:36:33.449Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/45/68d7c33a6bcf3e5aa3bdbd57a367e6f615286dfd6482f97e8ffeb734306e/numpy-2.4.6-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:29cb7f67d10b479ff07c17d33e39f78c07f71c40ef30d63c153d340e96cd3fb4", size = 18403813, upload-time = "2026-05-18T23:36:37.369Z" },
+ { url = "https://files.pythonhosted.org/packages/9c/50/0753655aa844c99cd9e018aacf76f130f1bd81d881bb74bc0aef5d73a8ba/numpy-2.4.6-cp314-cp314t-win32.whl", hash = "sha256:260a5d70215b61ab4fadf5c7baacd64821842975eea312125ed3c39a6391b063", size = 6156982, upload-time = "2026-05-18T23:36:40.817Z" },
+ { url = "https://files.pythonhosted.org/packages/b2/d4/7c67becf668f973cb490cec3e98dfd799d866f9c989a54d355672cfa0db6/numpy-2.4.6-cp314-cp314t-win_amd64.whl", hash = "sha256:81a1cca95ed5bb92aa8b10dd2cdc9a0d3853a50fad926c28b5d7e8ea54389627", size = 12638908, upload-time = "2026-05-18T23:36:43.996Z" },
+ { url = "https://files.pythonhosted.org/packages/43/bb/e1c71a4295b1b1d1393d50dbb4f2a36283c6859d9d3892e84f00ec5a91d5/numpy-2.4.6-cp314-cp314t-win_arm64.whl", hash = "sha256:0c9136e14ed34a9e343a31c533d78a9813a69a3148332bce5e9821cb2f996e66", size = 10565867, upload-time = "2026-05-18T23:36:47.114Z" },
+ { url = "https://files.pythonhosted.org/packages/de/12/b422cc84439adc0d00de605bf4a308890ae5c26f2c71fbd73e5d08fbb0dd/numpy-2.4.6-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:55cced7c52e981362f708ad635198e97a752dfba412cc03c23bbf3bd8d5cd662", size = 16847511, upload-time = "2026-05-18T23:36:50.673Z" },
+ { url = "https://files.pythonhosted.org/packages/44/53/f481bef68011740f8849418d82db07230e825013f31f4eef5ba5b805316a/numpy-2.4.6-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6da64deb6b8ed903e7560180a92f2d804ee1ba5eeb849ac2748b8c1aba1f6d7", size = 14889064, upload-time = "2026-05-18T23:36:53.879Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/57/42ed575c10ced8af951d426bc4e1f8aff16fd851db33f067036215a7f860/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:68a5124b13fa6cc2086764a20005d30bc0548146f7f5322f02fce212ca14317f", size = 5394157, upload-time = "2026-05-18T23:36:57.194Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/ef/f66cc724fcc36c1e364c67f51ae9146090b8b584f27d58b97fdae3edd737/numpy-2.4.6-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:948424b06129ce883307e8cff868c31396d8dc7630a59c61d70d98dbe70f222c", size = 6708728, upload-time = "2026-05-18T23:36:59.575Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/9c/c531f2293b91265d8b48e9b329f54fdd7ffae73cb4134ea10cca4237e9cc/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5dbbdb29840ca3d91ee0fece42fc29278886d908280bfec0a5846c6f901a3eb0", size = 15798374, upload-time = "2026-05-18T23:37:02.674Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/b0/413077f6b1153ed3cba361401c6783bbad6114804a000cc22eb71c13e190/numpy-2.4.6-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8ad03c0965fb3c692200e74d458ca28c1dbb4ce96f9a479a8aa041ad5fabca02", size = 16747286, upload-time = "2026-05-18T23:37:06.327Z" },
+ { url = "https://files.pythonhosted.org/packages/15/ce/e5ec180bc41812edcd8daeb8639d205622c0e8c02259d8ab25a0201b3c2a/numpy-2.4.6-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:2803abfebfc990042cd494d8ce2d5f82e9d847af6d35ec486923aa19dbad5e73", size = 12504263, upload-time = "2026-05-18T23:37:09.715Z" },
+]
+
+[[package]]
+name = "numpy"
+version = "2.5.0"
source = { registry = "https://pypi.org/simple" }
resolution-markers = [
- "python_full_version >= '3.11'",
-]
-sdist = { url = "https://files.pythonhosted.org/packages/10/8b/c265f4823726ab832de836cdd184d0986dcf94480f81e8739692a7ac7af2/numpy-2.4.3.tar.gz", hash = "sha256:483a201202b73495f00dbc83796c6ae63137a9bdade074f7648b3e32613412dd", size = 20727743, upload-time = "2026-03-09T07:58:53.426Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/f9/51/5093a2df15c4dc19da3f79d1021e891f5dcf1d9d1db6ba38891d5590f3fe/numpy-2.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:33b3bf58ee84b172c067f56aeadc7ee9ab6de69c5e800ab5b10295d54c581adb", size = 16957183, upload-time = "2026-03-09T07:55:57.774Z" },
- { url = "https://files.pythonhosted.org/packages/b5/7c/c061f3de0630941073d2598dc271ac2f6cbcf5c83c74a5870fea07488333/numpy-2.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ba7b51e71c05aa1f9bc3641463cd82308eab40ce0d5c7e1fd4038cbf9938147", size = 14968734, upload-time = "2026-03-09T07:56:00.494Z" },
- { url = "https://files.pythonhosted.org/packages/ef/27/d26c85cbcd86b26e4f125b0668e7a7c0542d19dd7d23ee12e87b550e95b5/numpy-2.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1988292870c7cb9d0ebb4cc96b4d447513a9644801de54606dc7aabf2b7d920", size = 5475288, upload-time = "2026-03-09T07:56:02.857Z" },
- { url = "https://files.pythonhosted.org/packages/2b/09/3c4abbc1dcd8010bf1a611d174c7aa689fc505585ec806111b4406f6f1b1/numpy-2.4.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:23b46bb6d8ecb68b58c09944483c135ae5f0e9b8d8858ece5e4ead783771d2a9", size = 6805253, upload-time = "2026-03-09T07:56:04.53Z" },
- { url = "https://files.pythonhosted.org/packages/21/bc/e7aa3f6817e40c3f517d407742337cbb8e6fc4b83ce0b55ab780c829243b/numpy-2.4.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a016db5c5dba78fa8fe9f5d80d6708f9c42ab087a739803c0ac83a43d686a470", size = 15969479, upload-time = "2026-03-09T07:56:06.638Z" },
- { url = "https://files.pythonhosted.org/packages/78/51/9f5d7a41f0b51649ddf2f2320595e15e122a40610b233d51928dd6c92353/numpy-2.4.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:715de7f82e192e8cae5a507a347d97ad17598f8e026152ca97233e3666daaa71", size = 16901035, upload-time = "2026-03-09T07:56:09.405Z" },
- { url = "https://files.pythonhosted.org/packages/64/6e/b221dd847d7181bc5ee4857bfb026182ef69499f9305eb1371cbb1aea626/numpy-2.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2ddb7919366ee468342b91dea2352824c25b55814a987847b6c52003a7c97f15", size = 17325657, upload-time = "2026-03-09T07:56:12.067Z" },
- { url = "https://files.pythonhosted.org/packages/eb/b8/8f3fd2da596e1063964b758b5e3c970aed1949a05200d7e3d46a9d46d643/numpy-2.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a315e5234d88067f2d97e1f2ef670a7569df445d55400f1e33d117418d008d52", size = 18635512, upload-time = "2026-03-09T07:56:14.629Z" },
- { url = "https://files.pythonhosted.org/packages/5c/24/2993b775c37e39d2f8ab4125b44337ab0b2ba106c100980b7c274a22bee7/numpy-2.4.3-cp311-cp311-win32.whl", hash = "sha256:2b3f8d2c4589b1a2028d2a770b0fc4d1f332fb5e01521f4de3199a896d158ddd", size = 6238100, upload-time = "2026-03-09T07:56:17.243Z" },
- { url = "https://files.pythonhosted.org/packages/76/1d/edccf27adedb754db7c4511d5eac8b83f004ae948fe2d3509e8b78097d4c/numpy-2.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:77e76d932c49a75617c6d13464e41203cd410956614d0a0e999b25e9e8d27eec", size = 12609816, upload-time = "2026-03-09T07:56:19.089Z" },
- { url = "https://files.pythonhosted.org/packages/92/82/190b99153480076c8dce85f4cfe7d53ea84444145ffa54cb58dcd460d66b/numpy-2.4.3-cp311-cp311-win_arm64.whl", hash = "sha256:eb610595dd91560905c132c709412b512135a60f1851ccbd2c959e136431ff67", size = 10485757, upload-time = "2026-03-09T07:56:21.753Z" },
- { url = "https://files.pythonhosted.org/packages/a9/ed/6388632536f9788cea23a3a1b629f25b43eaacd7d7377e5d6bc7b9deb69b/numpy-2.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:61b0cbabbb6126c8df63b9a3a0c4b1f44ebca5e12ff6997b80fcf267fb3150ef", size = 16669628, upload-time = "2026-03-09T07:56:24.252Z" },
- { url = "https://files.pythonhosted.org/packages/74/1b/ee2abfc68e1ce728b2958b6ba831d65c62e1b13ce3017c13943f8f9b5b2e/numpy-2.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7395e69ff32526710748f92cd8c9849b361830968ea3e24a676f272653e8983e", size = 14696872, upload-time = "2026-03-09T07:56:26.991Z" },
- { url = "https://files.pythonhosted.org/packages/ba/d1/780400e915ff5638166f11ca9dc2c5815189f3d7cf6f8759a1685e586413/numpy-2.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:abdce0f71dcb4a00e4e77f3faf05e4616ceccfe72ccaa07f47ee79cda3b7b0f4", size = 5203489, upload-time = "2026-03-09T07:56:29.414Z" },
- { url = "https://files.pythonhosted.org/packages/0b/bb/baffa907e9da4cc34a6e556d6d90e032f6d7a75ea47968ea92b4858826c4/numpy-2.4.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:48da3a4ee1336454b07497ff7ec83903efa5505792c4e6d9bf83d99dc07a1e18", size = 6550814, upload-time = "2026-03-09T07:56:32.225Z" },
- { url = "https://files.pythonhosted.org/packages/7b/12/8c9f0c6c95f76aeb20fc4a699c33e9f827fa0d0f857747c73bb7b17af945/numpy-2.4.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:32e3bef222ad6b052280311d1d60db8e259e4947052c3ae7dd6817451fc8a4c5", size = 15666601, upload-time = "2026-03-09T07:56:34.461Z" },
- { url = "https://files.pythonhosted.org/packages/bd/79/cc665495e4d57d0aa6fbcc0aa57aa82671dfc78fbf95fe733ed86d98f52a/numpy-2.4.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e7dd01a46700b1967487141a66ac1a3cf0dd8ebf1f08db37d46389401512ca97", size = 16621358, upload-time = "2026-03-09T07:56:36.852Z" },
- { url = "https://files.pythonhosted.org/packages/a8/40/b4ecb7224af1065c3539f5ecfff879d090de09608ad1008f02c05c770cb3/numpy-2.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:76f0f283506c28b12bba319c0fab98217e9f9b54e6160e9c79e9f7348ba32e9c", size = 17016135, upload-time = "2026-03-09T07:56:39.337Z" },
- { url = "https://files.pythonhosted.org/packages/f7/b1/6a88e888052eed951afed7a142dcdf3b149a030ca59b4c71eef085858e43/numpy-2.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737f630a337364665aba3b5a77e56a68cc42d350edd010c345d65a3efa3addcc", size = 18345816, upload-time = "2026-03-09T07:56:42.31Z" },
- { url = "https://files.pythonhosted.org/packages/f3/8f/103a60c5f8c3d7fc678c19cd7b2476110da689ccb80bc18050efbaeae183/numpy-2.4.3-cp312-cp312-win32.whl", hash = "sha256:26952e18d82a1dbbc2f008d402021baa8d6fc8e84347a2072a25e08b46d698b9", size = 5960132, upload-time = "2026-03-09T07:56:44.851Z" },
- { url = "https://files.pythonhosted.org/packages/d7/7c/f5ee1bf6ed888494978046a809df2882aad35d414b622893322df7286879/numpy-2.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:65f3c2455188f09678355f5cae1f959a06b778bc66d535da07bf2ef20cd319d5", size = 12316144, upload-time = "2026-03-09T07:56:47.057Z" },
- { url = "https://files.pythonhosted.org/packages/71/46/8d1cb3f7a00f2fb6394140e7e6623696e54c6318a9d9691bb4904672cf42/numpy-2.4.3-cp312-cp312-win_arm64.whl", hash = "sha256:2abad5c7fef172b3377502bde47892439bae394a71bc329f31df0fd829b41a9e", size = 10220364, upload-time = "2026-03-09T07:56:49.849Z" },
- { url = "https://files.pythonhosted.org/packages/b6/d0/1fe47a98ce0df229238b77611340aff92d52691bcbc10583303181abf7fc/numpy-2.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b346845443716c8e542d54112966383b448f4a3ba5c66409771b8c0889485dd3", size = 16665297, upload-time = "2026-03-09T07:56:52.296Z" },
- { url = "https://files.pythonhosted.org/packages/27/d9/4e7c3f0e68dfa91f21c6fb6cf839bc829ec920688b1ce7ec722b1a6202fb/numpy-2.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2629289168f4897a3c4e23dc98d6f1731f0fc0fe52fb9db19f974041e4cc12b9", size = 14691853, upload-time = "2026-03-09T07:56:54.992Z" },
- { url = "https://files.pythonhosted.org/packages/3a/66/bd096b13a87549683812b53ab211e6d413497f84e794fb3c39191948da97/numpy-2.4.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bb2e3cf95854233799013779216c57e153c1ee67a0bf92138acca0e429aefaee", size = 5198435, upload-time = "2026-03-09T07:56:57.184Z" },
- { url = "https://files.pythonhosted.org/packages/a2/2f/687722910b5a5601de2135c891108f51dfc873d8e43c8ed9f4ebb440b4a2/numpy-2.4.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:7f3408ff897f8ab07a07fbe2823d7aee6ff644c097cc1f90382511fe982f647f", size = 6546347, upload-time = "2026-03-09T07:56:59.531Z" },
- { url = "https://files.pythonhosted.org/packages/bf/ec/7971c4e98d86c564750393fab8d7d83d0a9432a9d78bb8a163a6dc59967a/numpy-2.4.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:decb0eb8a53c3b009b0962378065589685d66b23467ef5dac16cbe818afde27f", size = 15664626, upload-time = "2026-03-09T07:57:01.385Z" },
- { url = "https://files.pythonhosted.org/packages/7e/eb/7daecbea84ec935b7fc732e18f532073064a3816f0932a40a17f3349185f/numpy-2.4.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d5f51900414fc9204a0e0da158ba2ac52b75656e7dce7e77fb9f84bfa343b4cc", size = 16608916, upload-time = "2026-03-09T07:57:04.008Z" },
- { url = "https://files.pythonhosted.org/packages/df/58/2a2b4a817ffd7472dca4421d9f0776898b364154e30c95f42195041dc03b/numpy-2.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6bd06731541f89cdc01b261ba2c9e037f1543df7472517836b78dfb15bd6e476", size = 17015824, upload-time = "2026-03-09T07:57:06.347Z" },
- { url = "https://files.pythonhosted.org/packages/4a/ca/627a828d44e78a418c55f82dd4caea8ea4a8ef24e5144d9e71016e52fb40/numpy-2.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:22654fe6be0e5206f553a9250762c653d3698e46686eee53b399ab90da59bd92", size = 18334581, upload-time = "2026-03-09T07:57:09.114Z" },
- { url = "https://files.pythonhosted.org/packages/cd/c0/76f93962fc79955fcba30a429b62304332345f22d4daec1cb33653425643/numpy-2.4.3-cp313-cp313-win32.whl", hash = "sha256:d71e379452a2f670ccb689ec801b1218cd3983e253105d6e83780967e899d687", size = 5958618, upload-time = "2026-03-09T07:57:11.432Z" },
- { url = "https://files.pythonhosted.org/packages/b1/3c/88af0040119209b9b5cb59485fa48b76f372c73068dbf9254784b975ac53/numpy-2.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:0a60e17a14d640f49146cb38e3f105f571318db7826d9b6fef7e4dce758faecd", size = 12312824, upload-time = "2026-03-09T07:57:13.586Z" },
- { url = "https://files.pythonhosted.org/packages/58/ce/3d07743aced3d173f877c3ef6a454c2174ba42b584ab0b7e6d99374f51ed/numpy-2.4.3-cp313-cp313-win_arm64.whl", hash = "sha256:c9619741e9da2059cd9c3f206110b97583c7152c1dc9f8aafd4beb450ac1c89d", size = 10221218, upload-time = "2026-03-09T07:57:16.183Z" },
- { url = "https://files.pythonhosted.org/packages/62/09/d96b02a91d09e9d97862f4fc8bfebf5400f567d8eb1fe4b0cc4795679c15/numpy-2.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7aa4e54f6469300ebca1d9eb80acd5253cdfa36f2c03d79a35883687da430875", size = 14819570, upload-time = "2026-03-09T07:57:18.564Z" },
- { url = "https://files.pythonhosted.org/packages/b5/ca/0b1aba3905fdfa3373d523b2b15b19029f4f3031c87f4066bd9d20ef6c6b/numpy-2.4.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d1b90d840b25874cf5cd20c219af10bac3667db3876d9a495609273ebe679070", size = 5326113, upload-time = "2026-03-09T07:57:21.052Z" },
- { url = "https://files.pythonhosted.org/packages/c0/63/406e0fd32fcaeb94180fd6a4c41e55736d676c54346b7efbce548b94a914/numpy-2.4.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:a749547700de0a20a6718293396ec237bb38218049cfce788e08fcb716e8cf73", size = 6646370, upload-time = "2026-03-09T07:57:22.804Z" },
- { url = "https://files.pythonhosted.org/packages/b6/d0/10f7dc157d4b37af92720a196be6f54f889e90dcd30dce9dc657ed92c257/numpy-2.4.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94f3c4a151a2e529adf49c1d54f0f57ff8f9b233ee4d44af623a81553ab86368", size = 15723499, upload-time = "2026-03-09T07:57:24.693Z" },
- { url = "https://files.pythonhosted.org/packages/66/f1/d1c2bf1161396629701bc284d958dc1efa3a5a542aab83cf11ee6eb4cba5/numpy-2.4.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:22c31dc07025123aedf7f2db9e91783df13f1776dc52c6b22c620870dc0fab22", size = 16657164, upload-time = "2026-03-09T07:57:27.676Z" },
- { url = "https://files.pythonhosted.org/packages/1a/be/cca19230b740af199ac47331a21c71e7a3d0ba59661350483c1600d28c37/numpy-2.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:148d59127ac95979d6f07e4d460f934ebdd6eed641db9c0db6c73026f2b2101a", size = 17081544, upload-time = "2026-03-09T07:57:30.664Z" },
- { url = "https://files.pythonhosted.org/packages/b9/c5/9602b0cbb703a0936fb40f8a95407e8171935b15846de2f0776e08af04c7/numpy-2.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a97cbf7e905c435865c2d939af3d93f99d18eaaa3cabe4256f4304fb51604349", size = 18380290, upload-time = "2026-03-09T07:57:33.763Z" },
- { url = "https://files.pythonhosted.org/packages/ed/81/9f24708953cd30be9ee36ec4778f4b112b45165812f2ada4cc5ea1c1f254/numpy-2.4.3-cp313-cp313t-win32.whl", hash = "sha256:be3b8487d725a77acccc9924f65fd8bce9af7fac8c9820df1049424a2115af6c", size = 6082814, upload-time = "2026-03-09T07:57:36.491Z" },
- { url = "https://files.pythonhosted.org/packages/e2/9e/52f6eaa13e1a799f0ab79066c17f7016a4a8ae0c1aefa58c82b4dab690b4/numpy-2.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1ec84fd7c8e652b0f4aaaf2e6e9cc8eaa9b1b80a537e06b2e3a2fb176eedcb26", size = 12452673, upload-time = "2026-03-09T07:57:38.281Z" },
- { url = "https://files.pythonhosted.org/packages/c4/04/b8cece6ead0b30c9fbd99bb835ad7ea0112ac5f39f069788c5558e3b1ab2/numpy-2.4.3-cp313-cp313t-win_arm64.whl", hash = "sha256:120df8c0a81ebbf5b9020c91439fccd85f5e018a927a39f624845be194a2be02", size = 10290907, upload-time = "2026-03-09T07:57:40.747Z" },
- { url = "https://files.pythonhosted.org/packages/70/ae/3936f79adebf8caf81bd7a599b90a561334a658be4dcc7b6329ebf4ee8de/numpy-2.4.3-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:5884ce5c7acfae1e4e1b6fde43797d10aa506074d25b531b4f54bde33c0c31d4", size = 16664563, upload-time = "2026-03-09T07:57:43.817Z" },
- { url = "https://files.pythonhosted.org/packages/9b/62/760f2b55866b496bb1fa7da2a6db076bef908110e568b02fcfc1422e2a3a/numpy-2.4.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:297837823f5bc572c5f9379b0c9f3a3365f08492cbdc33bcc3af174372ebb168", size = 14702161, upload-time = "2026-03-09T07:57:46.169Z" },
- { url = "https://files.pythonhosted.org/packages/32/af/a7a39464e2c0a21526fb4fb76e346fb172ebc92f6d1c7a07c2c139cc17b1/numpy-2.4.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:a111698b4a3f8dcbe54c64a7708f049355abd603e619013c346553c1fd4ca90b", size = 5208738, upload-time = "2026-03-09T07:57:48.506Z" },
- { url = "https://files.pythonhosted.org/packages/29/8c/2a0cf86a59558fa078d83805589c2de490f29ed4fb336c14313a161d358a/numpy-2.4.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:4bd4741a6a676770e0e97fe9ab2e51de01183df3dcbcec591d26d331a40de950", size = 6543618, upload-time = "2026-03-09T07:57:50.591Z" },
- { url = "https://files.pythonhosted.org/packages/aa/b8/612ce010c0728b1c363fa4ea3aa4c22fe1c5da1de008486f8c2f5cb92fae/numpy-2.4.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:54f29b877279d51e210e0c80709ee14ccbbad647810e8f3d375561c45ef613dd", size = 15680676, upload-time = "2026-03-09T07:57:52.34Z" },
- { url = "https://files.pythonhosted.org/packages/a9/7e/4f120ecc54ba26ddf3dc348eeb9eb063f421de65c05fc961941798feea18/numpy-2.4.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:679f2a834bae9020f81534671c56fd0cc76dd7e5182f57131478e23d0dc59e24", size = 16613492, upload-time = "2026-03-09T07:57:54.91Z" },
- { url = "https://files.pythonhosted.org/packages/2c/86/1b6020db73be330c4b45d5c6ee4295d59cfeef0e3ea323959d053e5a6909/numpy-2.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d84f0f881cb2225c2dfd7f78a10a5645d487a496c6668d6cc39f0f114164f3d0", size = 17031789, upload-time = "2026-03-09T07:57:57.641Z" },
- { url = "https://files.pythonhosted.org/packages/07/3a/3b90463bf41ebc21d1b7e06079f03070334374208c0f9a1f05e4ae8455e7/numpy-2.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d213c7e6e8d211888cc359bab7199670a00f5b82c0978b9d1c75baf1eddbeac0", size = 18339941, upload-time = "2026-03-09T07:58:00.577Z" },
- { url = "https://files.pythonhosted.org/packages/a8/74/6d736c4cd962259fd8bae9be27363eb4883a2f9069763747347544c2a487/numpy-2.4.3-cp314-cp314-win32.whl", hash = "sha256:52077feedeff7c76ed7c9f1a0428558e50825347b7545bbb8523da2cd55c547a", size = 6007503, upload-time = "2026-03-09T07:58:03.331Z" },
- { url = "https://files.pythonhosted.org/packages/48/39/c56ef87af669364356bb011922ef0734fc49dad51964568634c72a009488/numpy-2.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:0448e7f9caefb34b4b7dd2b77f21e8906e5d6f0365ad525f9f4f530b13df2afc", size = 12444915, upload-time = "2026-03-09T07:58:06.353Z" },
- { url = "https://files.pythonhosted.org/packages/9d/1f/ab8528e38d295fd349310807496fabb7cf9fe2e1f70b97bc20a483ea9d4a/numpy-2.4.3-cp314-cp314-win_arm64.whl", hash = "sha256:b44fd60341c4d9783039598efadd03617fa28d041fc37d22b62d08f2027fa0e7", size = 10494875, upload-time = "2026-03-09T07:58:08.734Z" },
- { url = "https://files.pythonhosted.org/packages/e6/ef/b7c35e4d5ef141b836658ab21a66d1a573e15b335b1d111d31f26c8ef80f/numpy-2.4.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:0a195f4216be9305a73c0e91c9b026a35f2161237cf1c6de9b681637772ea657", size = 14822225, upload-time = "2026-03-09T07:58:11.034Z" },
- { url = "https://files.pythonhosted.org/packages/cd/8d/7730fa9278cf6648639946cc816e7cc89f0d891602584697923375f801ed/numpy-2.4.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:cd32fbacb9fd1bf041bf8e89e4576b6f00b895f06d00914820ae06a616bdfef7", size = 5328769, upload-time = "2026-03-09T07:58:13.67Z" },
- { url = "https://files.pythonhosted.org/packages/47/01/d2a137317c958b074d338807c1b6a383406cdf8b8e53b075d804cc3d211d/numpy-2.4.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:2e03c05abaee1f672e9d67bc858f300b5ccba1c21397211e8d77d98350972093", size = 6649461, upload-time = "2026-03-09T07:58:15.912Z" },
- { url = "https://files.pythonhosted.org/packages/5c/34/812ce12bc0f00272a4b0ec0d713cd237cb390666eb6206323d1cc9cedbb2/numpy-2.4.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7d1ce23cce91fcea443320a9d0ece9b9305d4368875bab09538f7a5b4131938a", size = 15725809, upload-time = "2026-03-09T07:58:17.787Z" },
- { url = "https://files.pythonhosted.org/packages/25/c0/2aed473a4823e905e765fee3dc2cbf504bd3e68ccb1150fbdabd5c39f527/numpy-2.4.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c59020932feb24ed49ffd03704fbab89f22aa9c0d4b180ff45542fe8918f5611", size = 16655242, upload-time = "2026-03-09T07:58:20.476Z" },
- { url = "https://files.pythonhosted.org/packages/f2/c8/7e052b2fc87aa0e86de23f20e2c42bd261c624748aa8efd2c78f7bb8d8c6/numpy-2.4.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9684823a78a6cd6ad7511fc5e25b07947d1d5b5e2812c93fe99d7d4195130720", size = 17080660, upload-time = "2026-03-09T07:58:23.067Z" },
- { url = "https://files.pythonhosted.org/packages/f3/3d/0876746044db2adcb11549f214d104f2e1be00f07a67edbb4e2812094847/numpy-2.4.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0200b25c687033316fb39f0ff4e3e690e8957a2c3c8d22499891ec58c37a3eb5", size = 18380384, upload-time = "2026-03-09T07:58:25.839Z" },
- { url = "https://files.pythonhosted.org/packages/07/12/8160bea39da3335737b10308df4f484235fd297f556745f13092aa039d3b/numpy-2.4.3-cp314-cp314t-win32.whl", hash = "sha256:5e10da9e93247e554bb1d22f8edc51847ddd7dde52d85ce31024c1b4312bfba0", size = 6154547, upload-time = "2026-03-09T07:58:28.289Z" },
- { url = "https://files.pythonhosted.org/packages/42/f3/76534f61f80d74cc9cdf2e570d3d4eeb92c2280a27c39b0aaf471eda7b48/numpy-2.4.3-cp314-cp314t-win_amd64.whl", hash = "sha256:45f003dbdffb997a03da2d1d0cb41fbd24a87507fb41605c0420a3db5bd4667b", size = 12633645, upload-time = "2026-03-09T07:58:30.384Z" },
- { url = "https://files.pythonhosted.org/packages/1f/b6/7c0d4334c15983cec7f92a69e8ce9b1e6f31857e5ee3a413ac424e6bd63d/numpy-2.4.3-cp314-cp314t-win_arm64.whl", hash = "sha256:4d382735cecd7bcf090172489a525cd7d4087bc331f7df9f60ddc9a296cf208e", size = 10565454, upload-time = "2026-03-09T07:58:33.031Z" },
- { url = "https://files.pythonhosted.org/packages/64/e4/4dab9fb43c83719c29241c535d9e07be73bea4bc0c6686c5816d8e1b6689/numpy-2.4.3-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c6b124bfcafb9e8d3ed09130dbee44848c20b3e758b6bbf006e641778927c028", size = 16834892, upload-time = "2026-03-09T07:58:35.334Z" },
- { url = "https://files.pythonhosted.org/packages/c9/29/f8b6d4af90fed3dfda84ebc0df06c9833d38880c79ce954e5b661758aa31/numpy-2.4.3-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:76dbb9d4e43c16cf9aa711fcd8de1e2eeb27539dcefb60a1d5e9f12fae1d1ed8", size = 14893070, upload-time = "2026-03-09T07:58:37.7Z" },
- { url = "https://files.pythonhosted.org/packages/9a/04/a19b3c91dbec0a49269407f15d5753673a09832daed40c45e8150e6fa558/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_arm64.whl", hash = "sha256:29363fbfa6f8ee855d7569c96ce524845e3d726d6c19b29eceec7dd555dab152", size = 5399609, upload-time = "2026-03-09T07:58:39.853Z" },
- { url = "https://files.pythonhosted.org/packages/79/34/4d73603f5420eab89ea8a67097b31364bf7c30f811d4dd84b1659c7476d9/numpy-2.4.3-pp311-pypy311_pp73-macosx_14_0_x86_64.whl", hash = "sha256:bc71942c789ef415a37f0d4eab90341425a00d538cd0642445d30b41023d3395", size = 6714355, upload-time = "2026-03-09T07:58:42.365Z" },
- { url = "https://files.pythonhosted.org/packages/58/ad/1100d7229bb248394939a12a8074d485b655e8ed44207d328fdd7fcebc7b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7e58765ad74dcebd3ef0208a5078fba32dc8ec3578fe84a604432950cd043d79", size = 15800434, upload-time = "2026-03-09T07:58:44.837Z" },
- { url = "https://files.pythonhosted.org/packages/0c/fd/16d710c085d28ba4feaf29ac60c936c9d662e390344f94a6beaa2ac9899b/numpy-2.4.3-pp311-pypy311_pp73-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8e236dbda4e1d319d681afcbb136c0c4a8e0f1a5c58ceec2adebb547357fe857", size = 16729409, upload-time = "2026-03-09T07:58:47.972Z" },
- { url = "https://files.pythonhosted.org/packages/57/a7/b35835e278c18b85206834b3aa3abe68e77a98769c59233d1f6300284781/numpy-2.4.3-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:4b42639cdde6d24e732ff823a3fa5b701d8acad89c4142bc1d0bd6dc85200ba5", size = 12504685, upload-time = "2026-03-09T07:58:50.525Z" },
+ "python_full_version >= '3.12'",
+]
+sdist = { url = "https://files.pythonhosted.org/packages/e7/05/3d27272d30698dc0ecb7fdfaa41ad70303b444f81722bb99bce1d818638a/numpy-2.5.0.tar.gz", hash = "sha256:5a129578019311b6e56bdd714250f19b518f7dceeeb8d1af5490f4942d3f891c", size = 20652461, upload-time = "2026-06-21T20:57:51.95Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/fa/0a/11486d02add7b1384dff7374d124b1cfbb0ee864dcc9f6a2c0380638cf84/numpy-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:489780423903667933b4ed6197b6ec3b75ea5dd17d1d8f0f38d798feb6921561", size = 16789987, upload-time = "2026-06-21T20:56:16.657Z" },
+ { url = "https://files.pythonhosted.org/packages/55/b2/285f48640a181947b4587a3766d21ec1eaa7fea833d4b49957e09da467a2/numpy-2.5.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ece55976ced6bca95a03ae2839e2e5ccffe8eb6a3e7022415645eb154a81e4e6", size = 11760322, upload-time = "2026-06-21T20:56:19.813Z" },
+ { url = "https://files.pythonhosted.org/packages/dd/67/b032db1eb03ca30d16eda3b0c22aaa615338b9263c2fd559d0f29451aca4/numpy-2.5.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:c83b664b0e6eee9594fa920cf0639d8af796606d3fad6cc70180c87e4b97c7be", size = 5319605, upload-time = "2026-06-21T20:56:22.173Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/83/03fc7300c7c6b6c84c487b1dc80d322817b95fbd1f4dd57a85e23b7198de/numpy-2.5.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:bf80333980bf37f523341ddd72c783f39d6829ec7736b9eb99086388a2d52cc2", size = 6653628, upload-time = "2026-06-21T20:56:23.914Z" },
+ { url = "https://files.pythonhosted.org/packages/82/49/2ec21730bc63ccfda829323f7040a8ed4715b3852ce658689cf74ee96a8c/numpy-2.5.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a1a4874217b36d5ac8fc876f52e39df56f8182c88463e9e2dceabf7ca8b7efb8", size = 15153691, upload-time = "2026-06-21T20:56:25.631Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aaa760137137e8d3c920d27927748215b56014f92667dc9b6c27dfc61249255a", size = 16660066, upload-time = "2026-06-21T20:56:28.009Z" },
+ { url = "https://files.pythonhosted.org/packages/3a/2f/c354ec86d1f3f5c19649463b0d39652e160736e5b0a4cd18dff0576715c4/numpy-2.5.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7174ce8265fc7f7417d171c9ea8fe905220748893ea67a2a7abe726ec331c4b0", size = 16514638, upload-time = "2026-06-21T20:56:30.26Z" },
+ { url = "https://files.pythonhosted.org/packages/06/34/43efdcb319988648580f93c11f1ae82cf7e2faa74925e98e454ae3aa95f8/numpy-2.5.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b8c3daaf99de52415d20b42f8e8155c78642cb04207d02f9d317a0dcf1b3fb54", size = 18419647, upload-time = "2026-06-21T20:56:32.41Z" },
+ { url = "https://files.pythonhosted.org/packages/71/e2/f5d1676b1d7fb682eb5e9a1641e7ebd2414b3216c370661d1029778908b4/numpy-2.5.0-cp312-cp312-win32.whl", hash = "sha256:6206db0af545d73d068add6d992279145f158428d1da6cc49adc4b630c5d6ee5", size = 6056688, upload-time = "2026-06-21T20:56:34.657Z" },
+ { url = "https://files.pythonhosted.org/packages/8f/7c/48f115d1c58a34032facebcd51fdf2d02df2c51d4a46a81dd1197bb2ea6b/numpy-2.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:6f2d6873e2940c860a309d21e25b1e69af6aaffdd80aa056b04c16380db1c4f2", size = 12419237, upload-time = "2026-06-21T20:56:36.24Z" },
+ { url = "https://files.pythonhosted.org/packages/86/26/2e0882f4044d1b1a1b63e875151fb2393389032022a8b7f5657a7996d3b2/numpy-2.5.0-cp312-cp312-win_arm64.whl", hash = "sha256:a55e1eb2bca2cfd17a16b213c99dfc8502d47b0d494224d2122277d0400935ca", size = 10339912, upload-time = "2026-06-21T20:56:38.733Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/33/07675aaad7f26ea013d5e884d9a0d784b79c6bd7566c333f5a52fa3c610b/numpy-2.5.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:520e6b8be0a4b65840ac8090d4f51cef4bed66e2b0894d5a520f099adc24a9b2", size = 16784890, upload-time = "2026-06-21T20:56:40.799Z" },
+ { url = "https://files.pythonhosted.org/packages/85/4b/953118a730ee3b35e28645e0eb4cf9beec5bdbb954e1ac2f5fcefba6bbc3/numpy-2.5.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:146b81cdd3967fdb6beca8ba25f00c58741d8f3cbd797f55af0fbe0bfec3469c", size = 11754584, upload-time = "2026-06-21T20:56:43.094Z" },
+ { url = "https://files.pythonhosted.org/packages/44/9b/56dd530c367c74ae17411027cea4135ca57e1e0583bf5594cee18bd83217/numpy-2.5.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:126b88d95e8ff9b00c9e717aa540469f21d6180162f84c0caec51b16215d49cd", size = 5313904, upload-time = "2026-06-21T20:56:45.503Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/b0/bcd672edad27ecca7da1f7bb0ce72cd1706a4f2d79ae94990afc97c13e1c/numpy-2.5.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d4313cef1594c5ce46c31b6e54e918338f63f16ee9322304e8c9114d6d81c8bd", size = 6648504, upload-time = "2026-06-21T20:56:47.567Z" },
+ { url = "https://files.pythonhosted.org/packages/80/9e/15cdfcbd30a1544a46c9e487a00df331c4672450216538705a9e51fa6710/numpy-2.5.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:750fb097caf26fa878746d9d119f6f9da12dedcbff1eea966c3e3447647c4a9e", size = 15150086, upload-time = "2026-06-21T20:56:49.352Z" },
+ { url = "https://files.pythonhosted.org/packages/32/4e/8d7656ccaab3e81e97258b8a9bc5f0c8502513a92fb4ceb0a2cbfebc17bf/numpy-2.5.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3893adc2dc7c0412ba76777db55a049215d99c9aa3113003be8f49f4f1290ab9", size = 16647250, upload-time = "2026-06-21T20:56:51.542Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/81/97060281b602ed07f21b12f4ec409eac1f75a2f91fbc829ed8b2becf3ad4/numpy-2.5.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:835e454dd99b238cdc5a3f63bce2371296f5ebc53ca1e0f8e6ddbb6d92a29aab", size = 16512864, upload-time = "2026-06-21T20:56:55.401Z" },
+ { url = "https://files.pythonhosted.org/packages/33/ab/4496208146911f8d8ddb54f68a972aafa6c8d44babcb2ea03b0e5cc87c9d/numpy-2.5.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f9836778081a0a3c02a6a21493f3e9f5b311f8d2541934f31f05583dc999ea4", size = 18408407, upload-time = "2026-06-21T20:56:57.75Z" },
+ { url = "https://files.pythonhosted.org/packages/d4/9f/a4df67c181e4ee8b467aa3332dc2db10fd5c515136831302f3ca48bc0a01/numpy-2.5.0-cp313-cp313-win32.whl", hash = "sha256:0b525be4744b60bb0557ac872d53ef07d085b5f39622bc579c98d3809d05b988", size = 6054431, upload-time = "2026-06-21T20:57:00.016Z" },
+ { url = "https://files.pythonhosted.org/packages/30/53/491e1c47c55b62ccc6a63c1c5b8635c73fc2258dddeb9bda27cae4a0ae96/numpy-2.5.0-cp313-cp313-win_amd64.whl", hash = "sha256:44353e2878930039db472b99dc353d749826e4010bd4d2a7f835e94a97a5c748", size = 12414420, upload-time = "2026-06-21T20:57:01.815Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/4a/25c2906f541e9d9f4c5769764db732e6627be91a13f4724fa10634d77db4/numpy-2.5.0-cp313-cp313-win_arm64.whl", hash = "sha256:48f54b00711f83a5f796b70c518e8c2b3c5848dda03a54911f23eb68519b9b60", size = 10339533, upload-time = "2026-06-21T20:57:03.961Z" },
+ { url = "https://files.pythonhosted.org/packages/86/ad/abc44aaceaf7b17ee1edde2bbb4458da591bc79574cffff50c4bb35f00d1/numpy-2.5.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:f27582c55ba4c750b7c58c8faf021d2cd9324a662b466229db8a417b41368af9", size = 16783807, upload-time = "2026-06-21T20:57:06.253Z" },
+ { url = "https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:28e7137057d551e4a83c4ae414e3451f50568409db7569aacc7f9811ee06a446", size = 11765215, upload-time = "2026-06-21T20:57:08.547Z" },
+ { url = "https://files.pythonhosted.org/packages/f7/a0/8400a9c0e3625182347593f5e1f57da9a617a534794805c8df5518154ddc/numpy-2.5.0-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:e1da54b53e75cd9fcfc23efcc7edab2c6aecf97b6037566d8a0fe804af8ec57c", size = 5324493, upload-time = "2026-06-21T20:57:11.012Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/8c/0d104deaa0401c93395a629ec902891618a2eff76d19229139cb5a887bfc/numpy-2.5.0-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:694d8f74e156f7fd01179f1aa8faa2f648ab6ae0f70b6c3fe57a03249aea2303", size = 6645211, upload-time = "2026-06-21T20:57:12.919Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/d9/4a4a628c812750363786afc3d33492709a5cd64b215469c16b0f6c7bb811/numpy-2.5.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1a7569a7b53c77716f036bb28cb1c91f166a26ec7d9502cd1e4bdfe502fdec22", size = 15166004, upload-time = "2026-06-21T20:57:14.717Z" },
+ { url = "https://files.pythonhosted.org/packages/a0/5e/2a902317d7fc4aa93236e80c932662dadfc459b323d758329e01775125e1/numpy-2.5.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:39a0433bd4086ebd462960cf375e19195bb07b53dc1d87dd5fcf47ad78576f03", size = 16650797, upload-time = "2026-06-21T20:57:16.906Z" },
+ { url = "https://files.pythonhosted.org/packages/e9/a0/a0090e6329f4ca5992c07847bb579c5259a19953dc57255bb08793142ffb/numpy-2.5.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:929f0c79ac38bcbd7154fe631dc907abfeddbcc5027a896bd1f7767323271e7a", size = 16524647, upload-time = "2026-06-21T20:57:19.165Z" },
+ { url = "https://files.pythonhosted.org/packages/5e/7d/6caf27734c42b65837e7461ed0dbbd6b6fc835060c9714ec59d673bb383a/numpy-2.5.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:cc4f247a47bbf070bfd70be53ccdcf47b800af563535e7bbe172322197c30e21", size = 18411841, upload-time = "2026-06-21T20:57:21.638Z" },
+ { url = "https://files.pythonhosted.org/packages/13/dc/26edadbd812536769a82c2e9e002234e33feb5da43061d47a044f6d309b7/numpy-2.5.0-cp314-cp314-win32.whl", hash = "sha256:5dc71423499fab3f46f7a7201155ade1669ea101f2f429d332df9e72f8161731", size = 6106361, upload-time = "2026-06-21T20:57:23.844Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/9e/4dd1459282229a72d92dece2ae9138e5cac94a72263a7ceb48f37434c925/numpy-2.5.0-cp314-cp314-win_amd64.whl", hash = "sha256:ebb81d9d5443e0309d6c54894c3fbed74ad7da0714352a67b6d773cd189eae73", size = 12551749, upload-time = "2026-06-21T20:57:25.945Z" },
+ { url = "https://files.pythonhosted.org/packages/05/a7/6bc6384c080b86c7f6c85c5bc5b540b24f4f679cd144791d99574e90d462/numpy-2.5.0-cp314-cp314-win_arm64.whl", hash = "sha256:3b94d0d0deceebfad3e67ae5c0e5eb87371e8f7a0581cd04a779928c2450cf1e", size = 10617072, upload-time = "2026-06-21T20:57:28.175Z" },
+ { url = "https://files.pythonhosted.org/packages/86/6b/4a2b71d66ada5608ae02b63f150dfad520f6940721cb7f029ad270befc0e/numpy-2.5.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:22f3d43e362d650bc39db1f17851302874a148ca95ba6981c1dfb5fa6862f35b", size = 11881067, upload-time = "2026-06-21T20:57:30.104Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/b2/d365eb40a20efb49d67e9feb90494ed8511282ee1f5fa16006675c65397d/numpy-2.5.0-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:243563efb4cd7528a264567e9fd206c87826457322521d06206a00bfa316c927", size = 5440290, upload-time = "2026-06-21T20:57:32.193Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/5e/e9c03188de5f9b767e46a8fe988bcfd3efad066a4a3fda8b9cb11a93f895/numpy-2.5.0-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:84881d825ca75249b189bbee875fcfe3238aa5c479e6100893cda566e8e86826", size = 6748371, upload-time = "2026-06-21T20:57:33.933Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/1d/68c186a38a5027bae2c4ddd5ea681fdaf8b4d30fb7301def6d8ad270390f/numpy-2.5.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cda12aa4779d42b8771180aba759c96f527d43446d8f380ab59e2b35e8489efd", size = 15214643, upload-time = "2026-06-21T20:57:35.677Z" },
+ { url = "https://files.pythonhosted.org/packages/8c/67/73f67b7c7e20635baae9c4c3ead4ae7326a005900297a6110971abd62eb5/numpy-2.5.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c0121101093d2bd74981b10f8837d78e794a8ff57834eb27179f49e1ba11ac6", size = 16690128, upload-time = "2026-06-21T20:57:38.159Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/05/d4c1fb0c46d02a27d6b2b8b319a78c90937acec8631c1641874670b31e6f/numpy-2.5.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:d371c92cfa09da00022f501ab67fafaea813d752eb30ac44336d45b1e5b0268a", size = 16577902, upload-time = "2026-06-21T20:57:40.447Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/1d/771c797d50fa26e4888989cccf1d50ee51f530d4e455ad2692dcb64fa711/numpy-2.5.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9990713e9c38154c6861e7547f1e3fc7a87e75ff09bab24ef1cc81d81c2835e9", size = 18452814, upload-time = "2026-06-21T20:57:42.875Z" },
+ { url = "https://files.pythonhosted.org/packages/e8/46/52fc0d2a68d7643f0f149eeea5a5d8ea2a3507056ac8afa83c9212606e8b/numpy-2.5.0-cp314-cp314t-win32.whl", hash = "sha256:edadfbd4794b1086c0d822f81863e8a68fc129d132fd0bb9e31e955d7fbbbdb7", size = 6253168, upload-time = "2026-06-21T20:57:45.101Z" },
+ { url = "https://files.pythonhosted.org/packages/2a/be/6c8d1118b5f13b2881dc095d5b345de19c6638b8959c17409b6eff84c8aa/numpy-2.5.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f7e5fa4382967ae6548bd2f174219afb908e294b0d5f625af01166edd5f7d9aa", size = 12736286, upload-time = "2026-06-21T20:57:46.935Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/6a/d3a169aaf8536cf228d56a09e04bcb713a2fe4410d4e2105b9419b5a9c89/numpy-2.5.0-cp314-cp314t-win_arm64.whl", hash = "sha256:016623417bb330d719d579daf2d6b9a01ddc52e41a9ed61a47f39fde46dcd865", size = 10686451, upload-time = "2026-06-21T20:57:49.313Z" },
]
[[package]]
name = "packaging"
-version = "26.0"
+version = "26.2"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
+ { url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" },
]
[[package]]
name = "pathspec"
-version = "1.0.4"
+version = "1.1.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/fa/36/e27608899f9b8d4dff0617b2d9ab17ca5608956ca44461ac14ac48b44015/pathspec-1.0.4.tar.gz", hash = "sha256:0210e2ae8a21a9137c0d470578cb0e595af87edaa6ebf12ff176f14a02e0e645", size = 131200, upload-time = "2026-01-27T03:59:46.938Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5a/82/42f767fc1c1143d6fd36efb827202a2d997a375e160a71eb2888a925aac1/pathspec-1.1.1.tar.gz", hash = "sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a", size = 135180, upload-time = "2026-04-27T01:46:08.907Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ef/3c/2c197d226f9ea224a9ab8d197933f9da0ae0aac5b6e0f884e2b8d9c8e9f7/pathspec-1.0.4-py3-none-any.whl", hash = "sha256:fb6ae2fd4e7c921a165808a552060e722767cfa526f99ca5156ed2ce45a5c723", size = 55206, upload-time = "2026-01-27T03:59:45.137Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/d9/7fb5aa316bc299258e68c73ba3bddbc499654a07f151cba08f6153988714/pathspec-1.1.1-py3-none-any.whl", hash = "sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189", size = 57328, upload-time = "2026-04-27T01:46:07.06Z" },
]
[[package]]
name = "pdfminer-six"
-version = "20251230"
+version = "20260107"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "charset-normalizer" },
{ name = "cryptography" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/46/9a/d79d8fa6d47a0338846bb558b39b9963b8eb2dfedec61867c138c1b17eeb/pdfminer_six-20251230.tar.gz", hash = "sha256:e8f68a14c57e00c2d7276d26519ea64be1b48f91db1cdc776faa80528ca06c1e", size = 8511285, upload-time = "2025-12-30T15:49:13.104Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/34/a4/5cec1112009f0439a5ca6afa8ace321f0ab2f48da3255b7a1c8953014670/pdfminer_six-20260107.tar.gz", hash = "sha256:96bfd431e3577a55a0efd25676968ca4ce8fd5b53f14565f85716ff363889602", size = 8512094, upload-time = "2026-01-07T13:29:12.937Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/65/d7/b288ea32deb752a09aab73c75e1e7572ab2a2b56c3124a5d1eb24c62ceb3/pdfminer_six-20251230-py3-none-any.whl", hash = "sha256:9ff2e3466a7dfc6de6fd779478850b6b7c2d9e9405aa2a5869376a822771f485", size = 6591909, upload-time = "2025-12-30T15:49:10.76Z" },
+ { url = "https://files.pythonhosted.org/packages/20/8b/28c4eaec9d6b036a52cb44720408f26b1a143ca9bce76cc19e8f5de00ab4/pdfminer_six-20260107-py3-none-any.whl", hash = "sha256:366585ba97e80dffa8f00cebe303d2f381884d8637af4ce422f1df3ef38111a9", size = 6592252, upload-time = "2026-01-07T13:29:10.742Z" },
]
[[package]]
name = "pdfplumber"
-version = "0.11.9"
+version = "0.11.10"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pdfminer-six" },
{ name = "pillow" },
{ name = "pypdfium2" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/38/37/9ca3519e92a8434eb93be570b131476cc0a4e840bb39c62ddb7813a39d53/pdfplumber-0.11.9.tar.gz", hash = "sha256:481224b678b2bbdbf376e2c39bf914144eef7c3d301b4a28eebf0f7f6109d6dc", size = 102768, upload-time = "2026-01-05T08:10:29.072Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/05/56/6f450312ba05a27d7713b73857c1a25100dbda04fbc1331b13fb227a607d/pdfplumber-0.11.10.tar.gz", hash = "sha256:b95b2d28c66efb0a794a83b88c6c6aea5987532a445d20a1cbcfa657022e6e57", size = 102892, upload-time = "2026-06-15T03:31:31.035Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/8b/c8/cdbc975f5b634e249cfa6597e37c50f3078412474f21c015e508bfbfe3c3/pdfplumber-0.11.9-py3-none-any.whl", hash = "sha256:33ec5580959ba524e9100138746e090879504c42955df1b8a997604dd326c443", size = 60045, upload-time = "2026-01-05T08:10:27.512Z" },
+ { url = "https://files.pythonhosted.org/packages/a2/9a/07d658e1e7fad860f1c541ab941348125dbdab773be3a0afaf32361866c7/pdfplumber-0.11.10-py3-none-any.whl", hash = "sha256:7741ea81bf165b474b153e6789d10d18e06b6ddcf3ec84289c3ef2fed6802580", size = 60047, upload-time = "2026-06-15T03:31:29.702Z" },
]
[[package]]
@@ -1162,11 +1201,11 @@ wheels = [
[[package]]
name = "platformdirs"
-version = "4.9.4"
+version = "4.10.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size = 28737, upload-time = "2026-03-05T18:34:13.271Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/d7/47/e4501f49c178ae1d9f4a75073fda4204f52647993f075a9db4d14930e0c5/platformdirs-4.10.0.tar.gz", hash = "sha256:31e761a6a0ca04faf7353ea759bdba55652be214725111e5aac52dfa29d4bef7", size = 31224, upload-time = "2026-05-28T03:32:53.587Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size = 21216, upload-time = "2026-03-05T18:34:12.172Z" },
+ { url = "https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl", hash = "sha256:fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a", size = 22743, upload-time = "2026-05-28T03:32:52.175Z" },
]
[[package]]
@@ -1292,15 +1331,15 @@ crypto = [
[[package]]
name = "pymdown-extensions"
-version = "10.21.3"
+version = "11.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown" },
{ name = "pyyaml" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/9e/26/d1015444da4d952a1ca487a236b522eb979766f0295a0bd0c5fc089989a9/pymdown_extensions-10.21.3.tar.gz", hash = "sha256:72cfcf55f07aea0d4af2c4f11dd4e52466ddfb1bb819673146398e0bd3a77354", size = 854140, upload-time = "2026-05-13T12:57:32.267Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/47/67/f1e79672a5f91985577c7984c9709ca110e4fd37fe7fd167b60422e6ccc2/pymdown_extensions-11.0.tar.gz", hash = "sha256:8269cef0247f9e2d0a62fcea10860aba05c1cbab5470fd4b63230b96434dc589", size = 857049, upload-time = "2026-06-23T02:27:45.146Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/7e/85/545a951eecc270fcd688288c600017e2050a1aacb56c711d208586d3e470/pymdown_extensions-10.21.3-py3-none-any.whl", hash = "sha256:d7a5d08014fc571e80ca21dd6f854e31f94c489800350564d55d15b3c41e76b6", size = 269002, upload-time = "2026-05-13T12:57:30.296Z" },
+ { url = "https://files.pythonhosted.org/packages/af/b6/1ae53367e28b9cffa3be7574e13fbe4589694272fd47710fbdbafd3d63c6/pymdown_extensions-11.0-py3-none-any.whl", hash = "sha256:fbc4acb641814fa9d17521bbd21a5240ef739a662f11c06330c4b78c93e954d6", size = 269415, upload-time = "2026-06-23T02:27:43.826Z" },
]
[[package]]
@@ -1340,36 +1379,36 @@ wheels = [
[[package]]
name = "pypdfium2"
-version = "5.7.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/0f/76/19aacfff78d328a700ca34b5b1dff891e587aac2fd6b928b035ed366cc37/pypdfium2-5.7.0.tar.gz", hash = "sha256:9febb09f532555485f064c1f6442f46d31e27be5981359cb06b5826695906a06", size = 265935, upload-time = "2026-04-08T19:58:16.831Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/81/a5/7e6d9532e7753a1dc439412b38dda5943c692d3ab3f1e01826f9b5527c67/pypdfium2-5.7.0-py3-none-android_23_arm64_v8a.whl", hash = "sha256:9e815e75498a03a3049baf68ff00b90459bead0d9eee65b1860142529faba81d", size = 3343748, upload-time = "2026-04-08T19:57:40.293Z" },
- { url = "https://files.pythonhosted.org/packages/d3/ea/9d4a0b41f86d342dfb6529c31789e70d1123cc6521b29979e02ec2b267b6/pypdfium2-5.7.0-py3-none-android_23_armeabi_v7a.whl", hash = "sha256:405bb3c6d0e7a5a32e98eb45a3343da1ad847d6d6eef77bf6f285652a250e0b7", size = 2805480, upload-time = "2026-04-08T19:57:42.109Z" },
- { url = "https://files.pythonhosted.org/packages/34/dc/ce1c8e94082a84d1669606f90c4f694acbdcabd359d92db7302d16b5938b/pypdfium2-5.7.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:609b34d91871c185f399b1a503513c03a9de83597f55404de00c3d31a8037544", size = 3420156, upload-time = "2026-04-08T19:57:43.672Z" },
- { url = "https://files.pythonhosted.org/packages/51/84/6d859ce82a3723ba7cd70d88ad87eca3cb40553c68db182976fd2b0febe1/pypdfium2-5.7.0-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:6ae6c6bba0cde30c9293c3f525778c229466de7782e8f7d99e7c2a1b8f9c7a6f", size = 3601560, upload-time = "2026-04-08T19:57:45.148Z" },
- { url = "https://files.pythonhosted.org/packages/66/0c/8bc2258d1e7ba971d05241a049cd3100c75df6bcf930423de7d0c6265a30/pypdfium2-5.7.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b518d78211cb2912139d10d7f4e39669231eb155e8258159e3413e9e5e4baef", size = 3588134, upload-time = "2026-04-08T19:57:47.379Z" },
- { url = "https://files.pythonhosted.org/packages/b5/f7/3248cc569a92ff25f1fe0a4a1790807e6e05df60563e39e74c9b723d5620/pypdfium2-5.7.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8aaa8e7681ebcaa042ac8adc152521fd5f16a4ceee1e9b9b582e148519528aa9", size = 3323100, upload-time = "2026-04-08T19:57:49.243Z" },
- { url = "https://files.pythonhosted.org/packages/0d/ee/6f004509df77ce963ed5a0f2e090ea0c43036e49cc72c321ce90f3d328bf/pypdfium2-5.7.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8d2284f799adbae755b66ce1a579834e487337d89bbb34ee749ecfa68322425", size = 3719217, upload-time = "2026-04-08T19:57:50.708Z" },
- { url = "https://files.pythonhosted.org/packages/ae/f0/bb61601aa1c2990d4a5d194440281941781250f6a438813a13fe20eb95cf/pypdfium2-5.7.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:08e9e9576eefbc085ba9a63feede4bcaf93d9fa0d9b17cb549aba6f065a8750e", size = 4147676, upload-time = "2026-04-08T19:57:52.292Z" },
- { url = "https://files.pythonhosted.org/packages/bd/27/a119e0519049afcfca51e9834b67949ffaba5b9afe7e74ed04d6c39b0285/pypdfium2-5.7.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ace647320bae562903097977b83449f91d30e045dd19ce62939d3100869f180", size = 3635469, upload-time = "2026-04-08T19:57:53.948Z" },
- { url = "https://files.pythonhosted.org/packages/70/0b/4bcb67b039f057aca01ddbe692ae7666b630ad42b91a3aca3cb4d4f01222/pypdfium2-5.7.0-py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:f7bb7555fe613cd76fff871a12299f902b80443f90b49e2001338718c758f6f4", size = 3091818, upload-time = "2026-04-08T19:57:55.471Z" },
- { url = "https://files.pythonhosted.org/packages/a6/c9/31490ab7cecaf433195683ff5c750f4111c7347f1fef9131d3d8704618eb/pypdfium2-5.7.0-py3-none-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e7c0ef5ae35d40daa1883f3993b3b7ecf3fb06993bcc46651e28cf058d9da992", size = 2959579, upload-time = "2026-04-08T19:57:57.238Z" },
- { url = "https://files.pythonhosted.org/packages/f9/1e/bf5fe52f007130c0b1b38786ef82c98b4ac06f77e7ca001a17cda6ce76b6/pypdfium2-5.7.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:423c749e8cab22ddaf833041498ec5ad477c1c2abbff0a8ec00b99663c284592", size = 4126033, upload-time = "2026-04-08T19:57:59.111Z" },
- { url = "https://files.pythonhosted.org/packages/18/7d/46dcebf4eb9ccf9b5fafe79702c31863b4c127e9c3140c0f335c375d3818/pypdfium2-5.7.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f48f453f848a90ec7786bcc84a4c0ee42eb84c2d8af3ca9004f7c18648939838", size = 3742063, upload-time = "2026-04-08T19:58:00.643Z" },
- { url = "https://files.pythonhosted.org/packages/4d/29/cfec37942f13a1dfe3ab059cf8d130609143d33ca1dd554b017a30bffe97/pypdfium2-5.7.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e84bfa61f0243ed4b33bfe2492946ba761007b7feb5e7e0a086c635436d47906", size = 4332177, upload-time = "2026-04-08T19:58:02.425Z" },
- { url = "https://files.pythonhosted.org/packages/3f/da/07812153eff746bbc548d50129ada699765036674ff94065d538015c9556/pypdfium2-5.7.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:e3f4d7f4473b5ef762560cd5971cad3b51a77da3a25af479ef5aae4611709bb8", size = 4370704, upload-time = "2026-04-08T19:58:04.379Z" },
- { url = "https://files.pythonhosted.org/packages/9b/df/07a6a038ccb6fae6a1a06708c98d00aa03f2ca720b02cd3b75248dc5da70/pypdfium2-5.7.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:9e0b6c9be8c92b63ce0a00a94f6635eec22831e253811d6692824a1244e21780", size = 3924428, upload-time = "2026-04-08T19:58:06.406Z" },
- { url = "https://files.pythonhosted.org/packages/b4/a8/70ce4f997fef4186098c032fb3dd2c39193027a92a23b5a94d7a4c85e068/pypdfium2-5.7.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:3e4974a8545f726fc97a7443507713007e177f22058cd1ca0b28cb0e8e2d7dc2", size = 4264817, upload-time = "2026-04-08T19:58:08.003Z" },
- { url = "https://files.pythonhosted.org/packages/02/42/03779e61ca40120f87839b4693899c72031b7a9e23676dcd8914d92e460c/pypdfium2-5.7.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:2fe12d57a0b413d42bdba435a608b2435a921a5f6a9d78fd8091b6266b63901a", size = 4175393, upload-time = "2026-04-08T19:58:09.858Z" },
- { url = "https://files.pythonhosted.org/packages/ee/f1/19bea36b354f2407c6ffdc60ad8564d95eb515badec457043ff57ad636f0/pypdfium2-5.7.0-py3-none-win32.whl", hash = "sha256:23958aec5c28c52e71f183a647fcc9fcec96ef703cc60a3ade44e55f4701678f", size = 3606308, upload-time = "2026-04-08T19:58:11.672Z" },
- { url = "https://files.pythonhosted.org/packages/70/aa/fb333c1912a019de26e2395afd3dbef09e8118a59d70f1e5886fc90aa565/pypdfium2-5.7.0-py3-none-win_amd64.whl", hash = "sha256:a33d2c190042ae09c5512f599a540f88b07be956f18c4bb49c027e8c5118ce44", size = 3726429, upload-time = "2026-04-08T19:58:13.374Z" },
- { url = "https://files.pythonhosted.org/packages/86/cf/6d4bc1ae4466a1f223abfe27210dce218da307e921961cd687f6e5a795a0/pypdfium2-5.7.0-py3-none-win_arm64.whl", hash = "sha256:8233fd06b0b8c22a5ea0bccbd7c4f73d6e9d0388040ea51909a5b2b1f63157e8", size = 3519317, upload-time = "2026-04-08T19:58:15.261Z" },
+version = "5.10.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/1d/78/d9b45abb97a3686643f7c6472a5f7688f2013a373226121dc76b9debbacf/pypdfium2-5.10.1.tar.gz", hash = "sha256:f257d2011eb43c846b7e9f5a802e28646b29732763e4a35dd6ca76f9be580538", size = 272963, upload-time = "2026-06-15T10:09:16.179Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/98/49/0b85fcc0d236582143a25cf275b0b4f5d786f51eb07a89ec9c79d43efe18/pypdfium2-5.10.1-py3-none-android_23_arm64_v8a.whl", hash = "sha256:13abf7a9f5e0ddebc8bbcccea5f13ae5abe8a298ea219e125b0fc24c1d2171b4", size = 3409176, upload-time = "2026-06-15T10:08:36.017Z" },
+ { url = "https://files.pythonhosted.org/packages/20/d2/2f522c5b2ad5166edf256bb4dbab97de5d07b2573f8a5630ddfcd1f8d4ee/pypdfium2-5.10.1-py3-none-android_23_armeabi_v7a.whl", hash = "sha256:a0dc52b56631e2f7edcdb22bae3b155aa840bec32c5bd05781e90baaecee88e7", size = 2866175, upload-time = "2026-06-15T10:08:37.955Z" },
+ { url = "https://files.pythonhosted.org/packages/a7/be/477548c026c2badfdbf4afc3358b7135121fb5bec2e2effcb67e3a674d0b/pypdfium2-5.10.1-py3-none-macosx_12_0_arm64.whl", hash = "sha256:ebb9e63f92d15fc41b359fe7a187233dfae37548800e1fa09cb2fc466ac89951", size = 3621427, upload-time = "2026-06-15T10:08:39.969Z" },
+ { url = "https://files.pythonhosted.org/packages/8c/9b/0131c7f711b62c6edd6b200e9eb6340be6de4f6dc5baae625e3394d8d5fb/pypdfium2-5.10.1-py3-none-macosx_12_0_x86_64.whl", hash = "sha256:d04f2050b6b32bb18624688b600543342a4ab3aacf64bf66521a5af72bbc7de1", size = 3682825, upload-time = "2026-06-15T10:08:42.181Z" },
+ { url = "https://files.pythonhosted.org/packages/9d/3d/bddfceb6e67e54d6dd1ab6c0f1feff796a89596e40f6345a3b4cc6a3d408/pypdfium2-5.10.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0de53d2710ca9509fc2812340acc57c3f043697609068592d87de654f8cabf44", size = 3682206, upload-time = "2026-06-15T10:08:44.087Z" },
+ { url = "https://files.pythonhosted.org/packages/58/08/dedeb25c6645fc8a5eda24f54e0b1d083b7334ababf5f518bb939d729cc0/pypdfium2-5.10.1-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:10a26ce04795f8ec079e81c707fcb5737061e8a78025babc3d6e36642e9c903a", size = 3413720, upload-time = "2026-06-15T10:08:45.739Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/48/69e1fc8b1216005243c6415183bbf6de1cda3f5a06758b3fa4a26a7385c6/pypdfium2-5.10.1-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be6d2a8d1bcfd777188e7aa55a25c83f34d54e8350ad8810fb32017787d9b0d9", size = 3812913, upload-time = "2026-06-15T10:08:47.45Z" },
+ { url = "https://files.pythonhosted.org/packages/72/7f/132455a58ad736d76815c6cd1307532c3f433299d945b9d2f8cc2387c309/pypdfium2-5.10.1-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cf4d2527f79f31c550490cc74c9f32e19385a944630a3ef4cd4d9b6f961fbf77", size = 4223220, upload-time = "2026-06-15T10:08:49.099Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/8c/4d5804eca598bbe894e0a9a510807e221c1623e7276ce6b68fa2660dc933/pypdfium2-5.10.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3ba127750bc3f4161461538d532d74491cd976f584f1753a6cee9cb821338ec1", size = 3738950, upload-time = "2026-06-15T10:08:50.821Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/7f/baac59bf14ff914d97789ee0368c22ae233aa857aa9c0726bcb515dbc4d7/pypdfium2-5.10.1-py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:80f30517ee089dfbbc6e9de6da365b6e8c0ce8f80c40b7d4025a3b1d3bbd8a70", size = 4029869, upload-time = "2026-06-15T10:08:52.494Z" },
+ { url = "https://files.pythonhosted.org/packages/d0/d7/a5d58a0bcba31a0e37ed636a76ef3d2d215733f28af61637287d061b0c54/pypdfium2-5.10.1-py3-none-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ad5f5de15febb788c6eb3853e58aceda9cd8c5187c92472abaeecf9558deb0cf", size = 3990927, upload-time = "2026-06-15T10:08:54.555Z" },
+ { url = "https://files.pythonhosted.org/packages/da/1a/98eebd14b36812176297cf765d504ebeebc982f895c8a3a9fbd2717797de/pypdfium2-5.10.1-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:8947fa3cd808da33960bdf8ff9e5247aa94ccd94f0b09bb3402e99498d83bcc9", size = 4989624, upload-time = "2026-06-15T10:08:56.284Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/20/f2e124d607b8bb90a9f1ce976afff38c70e215cd7ea86af784cb2e8a19dd/pypdfium2-5.10.1-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:139a6387a3a2652f288e53164268bb03af4fa221d78484ee18407053a60082a3", size = 4535124, upload-time = "2026-06-15T10:08:58.214Z" },
+ { url = "https://files.pythonhosted.org/packages/59/ef/469ea87f668a32ff3280ea15e522e3a7858d2c80f1ecc320ece1244624c9/pypdfium2-5.10.1-py3-none-musllinux_1_2_i686.whl", hash = "sha256:172ff3e10358d66456e27fb0b8b5098e28ec24e51072eb4b5b86077d550e21bb", size = 5229373, upload-time = "2026-06-15T10:09:00.702Z" },
+ { url = "https://files.pythonhosted.org/packages/c3/48/c7ed3001f0c5e28114c98bf918c8121e422a65ba7323e1e12f3f28e2d278/pypdfium2-5.10.1-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:09fda0609dc4749c9865a0315c447d6f2583a580693bcabd69980d3fbb22ad51", size = 5140010, upload-time = "2026-06-15T10:09:02.734Z" },
+ { url = "https://files.pythonhosted.org/packages/b2/bc/00b731bfc1fdc0f3c7d91108fceb54978ff4f5a92336820e5ed6c12535ff/pypdfium2-5.10.1-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:6b01adcfe9aaf7a635a59bed5687fd4fd7b0da292664f050d4ebd2bfa5c70584", size = 4643310, upload-time = "2026-06-15T10:09:04.794Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/e8/3ad242233f657c19092a8c83684c8154b8d02a826535a6a2591d91aa5dde/pypdfium2-5.10.1-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:610e14c37d2090b826dccc0604fc7e7612c0ce591190780ae228abdb9abb971e", size = 5087879, upload-time = "2026-06-15T10:09:06.861Z" },
+ { url = "https://files.pythonhosted.org/packages/80/3f/9d0747a02ac3021ed3db7ac27c5187d97e78b0253a4bdfbf386666968474/pypdfium2-5.10.1-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f2803020952afa57e1e148adc19369b835154e1fa251a1ca85008ab6466a710f", size = 5047369, upload-time = "2026-06-15T10:09:08.883Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/41/7d5187e9527eae81890a3b13193442112ef788d61ddaa68a6d59ac447bec/pypdfium2-5.10.1-py3-none-win32.whl", hash = "sha256:8702bb4f01ddfc8e7757b41b4c2c8392ac17c9f0234476e1e69672ea7c6d6aa0", size = 3680056, upload-time = "2026-06-15T10:09:10.95Z" },
+ { url = "https://files.pythonhosted.org/packages/16/1d/c62bd59dd8345cc4b640f942f465633f6b07b859d01ddb648610a7bf5c7c/pypdfium2-5.10.1-py3-none-win_amd64.whl", hash = "sha256:58da5b51fb7884c7d21a05062ab13edb011d1a08dfd9694f3d5d685df62796b9", size = 3812105, upload-time = "2026-06-15T10:09:12.684Z" },
+ { url = "https://files.pythonhosted.org/packages/10/d5/21bac39125df8a93e99c04583486b58a62b5997d6b3541e3ad0f69053392/pypdfium2-5.10.1-py3-none-win_arm64.whl", hash = "sha256:e3301c2f7a66fb8cb57dba857d0c9e90215e178f6602a87c5a306cd98513dab8", size = 3600043, upload-time = "2026-06-15T10:09:14.606Z" },
]
[[package]]
name = "pytest"
-version = "9.0.3"
+version = "9.1.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1380,9 +1419,9 @@ dependencies = [
{ name = "pygments" },
{ name = "tomli", marker = "python_full_version < '3.11'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
+ { url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
]
[[package]]
@@ -1426,15 +1465,15 @@ wheels = [
[[package]]
name = "python-discovery"
-version = "1.2.0"
+version = "1.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "filelock" },
{ name = "platformdirs" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/9c/90/bcce6b46823c9bec1757c964dc37ed332579be512e17a30e9698095dcae4/python_discovery-1.2.0.tar.gz", hash = "sha256:7d33e350704818b09e3da2bd419d37e21e7c30db6e0977bb438916e06b41b5b1", size = 58055, upload-time = "2026-03-19T01:43:08.248Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/0b/1a/cbbaf13b730abb0a16b964d984e19f2fe520c21a4dc664051359a3f5a9e7/python_discovery-1.4.2.tar.gz", hash = "sha256:8f3746c4b4968d22afbb97d36e1a0e5b66e6c0f297290f2e95f05b9b8bf18690", size = 70277, upload-time = "2026-06-11T16:10:42.383Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/c2/3c/2005227cb951df502412de2fa781f800663cccbef8d90ec6f1b371ac2c0d/python_discovery-1.2.0-py3-none-any.whl", hash = "sha256:1e108f1bbe2ed0ef089823d28805d5ad32be8e734b86a5f212bf89b71c266e4a", size = 31524, upload-time = "2026-03-19T01:43:07.045Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl", hash = "sha256:475803f53b7b2ed6e490e27373f9d8340f7d2eebf9acdaf645d7d714c97bb500", size = 33886, upload-time = "2026-06-11T16:10:41.192Z" },
]
[[package]]
@@ -1620,7 +1659,7 @@ wheels = [
[[package]]
name = "virtualenv"
-version = "21.2.0"
+version = "21.5.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "distlib" },
@@ -1629,9 +1668,9 @@ dependencies = [
{ name = "python-discovery" },
{ name = "typing-extensions", marker = "python_full_version < '3.11'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/aa/92/58199fe10049f9703c2666e809c4f686c54ef0a68b0f6afccf518c0b1eb9/virtualenv-21.2.0.tar.gz", hash = "sha256:1720dc3a62ef5b443092e3f499228599045d7fea4c79199770499df8becf9098", size = 5840618, upload-time = "2026-03-09T17:24:38.013Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/f1/a5/81f987504738e6defeed61ec1c47e2aefab3c35d8eeb87e1b3f38cf28254/virtualenv-21.5.1.tar.gz", hash = "sha256:dca3bf98275a59c652b69d68e73433e597d977c2da9198882479d1a7188009c8", size = 4578798, upload-time = "2026-06-16T16:23:58.603Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/c6/59/7d02447a55b2e55755011a647479041bc92a82e143f96a8195cb33bd0a1c/virtualenv-21.2.0-py3-none-any.whl", hash = "sha256:1bd755b504931164a5a496d217c014d098426cddc79363ad66ac78125f9d908f", size = 5825084, upload-time = "2026-03-09T17:24:35.378Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl", hash = "sha256:55aa670b67bbfb991b03fda39bd3276d92c419d702376e98c5df1c9989a26783", size = 4558820, upload-time = "2026-06-16T16:23:56.963Z" },
]
[[package]]