Skip to content

v0.103 - #3769

Merged
arkid15r merged 29 commits into
mainfrom
dev
Aug 17, 2026
Merged

v0.103#3769
arkid15r merged 29 commits into
mainfrom
dev

Conversation

@arkid15r

Copy link
Copy Markdown
Collaborator

Version 0.103

Released August 17, 2026

KJhellico and others added 29 commits August 3, 2026 20:22
Co-authored-by: uttam12331 <uttam12331@users.noreply.github.com>
Co-authored-by: ~Jhellico <jhellico@gmail.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Paresh Joshi <194076591+pareshjoshij@users.noreply.github.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue[bot] <118344674+github-merge-queue[bot]@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>

Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: HarshBaghel <hk5324519@gmail.com>
Co-authored-by: github-merge-queue[bot] <118344674+github-merge-queue[bot]@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>

Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
… publish]

Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
…ctory (#3758)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…directory (#3759)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: Paresh Joshi <194076591+pareshjoshij@users.noreply.github.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Co-authored-by: Panpakorn Siripanich <19505219+PPsyrius@users.noreply.github.com>
Co-authored-by: arkid15r <2201626+arkid15r@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…3750)

Signed-off-by: Drona Jadhav <dronajadhav07@gmail.com>
Co-authored-by: ~Jhellico <KJhellico@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue[bot] <118344674+github-merge-queue[bot]@users.noreply.github.com>
Signed-off-by: Arkadii Yakovets <2201626+arkid15r@users.noreply.github.com>
Comment thread .github/workflows/publish-pre-release.yml Dismissed
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7969c7f3-745a-4de8-9800-3e443860fcc9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sonarqubecloud

Copy link
Copy Markdown

@codecov

codecov Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (7336c39) to head (dc84205).

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #3769   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          325       327    +2     
  Lines        19597     19657   +60     
  Branches      2492      2497    +5     
=========================================
+ Hits         19597     19657   +60     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@arkid15r
arkid15r marked this pull request as ready for review August 17, 2026 18:39
@arkid15r
arkid15r enabled auto-merge August 17, 2026 18:39

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

6 issues found across 61 files

Confidence score: 2/5

  • In .github/workflows/publish-release.yml, the tag/version guard can still publish when release_tag and checked-out VERSION differ, so a v0.104 tag on a 0.103 commit could ship mislabeled artifacts/SBOMs — enforce a hard equality check and fail the job on mismatch before make package runs.
  • In .github/workflows/ci.yml, manual dispatches on dev/v1 share the same concurrency group as push runs and can cancel them, which may block publish-pre-release.yml from seeing a successful push — scope concurrency so manual runs cannot cancel release-driving push executions.
  • In make.cmd (:Upgrade), failure of pre-commit autoupdate does not stop the target, so the command can report success after later steps and hide a real update failure — exit immediately on that failure to match the POSIX upgrade behavior.
  • Calendar data handling has correctness risk in holidays/countries/india.py and snapshots/financial/XTAI.json: Maharashtra aliases may be misclassified and multiple years contain duplicate “Chinese New Year’s Eve” dates, which can surface wrong holiday outputs — normalize alias comparison to MH and correct the affected snapshot entries.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".github/workflows/publish-release.yml">

<violation number="1" location=".github/workflows/publish-release.yml:43">
P1: When a `v...` tag does not match the checked-out `VERSION`, this guard still publishes it. `make package` uses `VERSION`, while `release_tag` names the SBOM, so a `v0.104` tag on a `0.103` commit can publish the wrong package under that release or fail after building; compare the tag with `VERSION` before exporting `tag_commit`.</violation>
</file>

<file name=".github/workflows/run-code-tests.yml">

<violation number="1" location=".github/workflows/run-code-tests.yml:10">
P3: The workflow-level `DEFAULT_PYTHON_VERSION` env variable is declared but never referenced in this file: every setup step uses `${{ matrix.python-version }}` rather than `${{ env.DEFAULT_PYTHON_VERSION }}`. It is dead configuration copied from `run-build-tests.yml`, where it is actually consumed. Remove it (or use it as the setup-uv `python-version` default) to avoid confusion about which version is authoritative.</violation>
</file>

<file name=".github/workflows/ci.yml">

<violation number="1" location=".github/workflows/ci.yml:23">
P1: When this workflow is manually dispatched on `dev` or `v1`, it shares the push group and cancels an in-progress push run. That can prevent `publish-pre-release.yml` from seeing a successful `dev` push; only enable cancellation for `pull_request` and `merge_group` events.</violation>
</file>

<file name="make.cmd">

<violation number="1" location="make.cmd:159">
P2: When `pre-commit autoupdate` fails, `:Upgrade` continues and can report success after the later lock and sync commands succeed. Exit immediately on this failure, matching the POSIX upgrade target.</violation>
</file>

<file name="snapshots/financial/XTAI.json">

<violation number="1" location="snapshots/financial/XTAI.json:340">
P2: Multiple years list a consecutive pair of days both labeled "Chinese New Year's Eve" (e.g., 2026-02-15 and 2026-02-16, 2027-02-04 and 2027-02-05, 2030-02-01 and 2030-02-02). The Lunar New Year holiday has a single eve; the day immediately before Chinese New Year's Eve is a market closure ("No Trading"), not a second eve. The first of the pair should be "Chinese New Year's Eve" and the second "Chinese New Year" (or the extra eve is spurious). Confirm against the TWSE source data and fix in taiwan_stock_exchange.py, then regenerate this snapshot.</violation>
</file>

<file name="holidays/countries/india.py">

<violation number="1" location="holidays/countries/india.py:425">
P2: When Maharashtra is selected through a supported alias, this condition does not recognize it as `MH`, so Ganesh Chaturthi is incorrectly exposed as an optional holiday and can be merged with the public entry. Compare the normalized subdivision instead.</violation>
</file>

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

run: |
set -euo pipefail
git fetch --no-tags origin main
tag_commit="$(git rev-parse HEAD)"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: When a v... tag does not match the checked-out VERSION, this guard still publishes it. make package uses VERSION, while release_tag names the SBOM, so a v0.104 tag on a 0.103 commit can publish the wrong package under that release or fail after building; compare the tag with VERSION before exporting tag_commit.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/publish-release.yml, line 43:

<comment>When a `v...` tag does not match the checked-out `VERSION`, this guard still publishes it. `make package` uses `VERSION`, while `release_tag` names the SBOM, so a `v0.104` tag on a `0.103` commit can publish the wrong package under that release or fail after building; compare the tag with `VERSION` before exporting `tag_commit`.</comment>

<file context>
@@ -0,0 +1,145 @@
+        run: |
+          set -euo pipefail
+          git fetch --no-tags origin main
+          tag_commit="$(git rev-parse HEAD)"
+          if ! git merge-base --is-ancestor "$tag_commit" origin/main; then
+            echo "Release tag ${RELEASE_TAG} (${tag_commit}) is not on main." >&2
</file context>

Comment thread .github/workflows/ci.yml
# Don't cancel push CI: cancelled runs never conclude success, so pre-release
# workflow_run would miss that commit. Still cancel superseded PR/merge_group runs.
group: ${{ github.repository }}-ci-${{ github.head_ref || github.ref }}
cancel-in-progress: ${{ github.event_name != 'push' }}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: When this workflow is manually dispatched on dev or v1, it shares the push group and cancels an in-progress push run. That can prevent publish-pre-release.yml from seeing a successful dev push; only enable cancellation for pull_request and merge_group events.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/ci.yml, line 23:

<comment>When this workflow is manually dispatched on `dev` or `v1`, it shares the push group and cancels an in-progress push run. That can prevent `publish-pre-release.yml` from seeing a successful `dev` push; only enable cancellation for `pull_request` and `merge_group` events.</comment>

<file context>
@@ -0,0 +1,49 @@
+  # Don't cancel push CI: cancelled runs never conclude success, so pre-release
+  # workflow_run would miss that commit. Still cancel superseded PR/merge_group runs.
+  group: ${{ github.repository }}-ci-${{ github.head_ref || github.ref }}
+  cancel-in-progress: ${{ github.event_name != 'push' }}
+
+permissions: {}
</file context>

Comment thread make.cmd
:Upgrade
uv lock --upgrade
uv sync --all-groups
%UV_RUN_CMD% pre-commit autoupdate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: When pre-commit autoupdate fails, :Upgrade continues and can report success after the later lock and sync commands succeed. Exit immediately on this failure, matching the POSIX upgrade target.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At make.cmd, line 159:

<comment>When `pre-commit autoupdate` fails, `:Upgrade` continues and can report success after the later lock and sync commands succeed. Exit immediately on this failure, matching the POSIX upgrade target.</comment>

<file context>
@@ -107,6 +156,7 @@ GoTo :Help
 :Upgrade
-    uv lock --upgrade
-    uv sync --all-groups
+    %UV_RUN_CMD% pre-commit autoupdate
+    %UV% lock --upgrade
+    %UV% sync --all-groups
</file context>
Suggested change
%UV_RUN_CMD% pre-commit autoupdate
%UV_RUN_CMD% pre-commit autoupdate
If ErrorLevel 1 Exit /B 1

"2026-02-12": "No Trading (Market opens only for Clearing & Settlement)",
"2026-02-13": "No Trading (Market opens only for Clearing & Settlement)",
"2026-02-15": "Chinese New Year's Eve",
"2026-02-16": "Chinese New Year's Eve",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: Multiple years list a consecutive pair of days both labeled "Chinese New Year's Eve" (e.g., 2026-02-15 and 2026-02-16, 2027-02-04 and 2027-02-05, 2030-02-01 and 2030-02-02). The Lunar New Year holiday has a single eve; the day immediately before Chinese New Year's Eve is a market closure ("No Trading"), not a second eve. The first of the pair should be "Chinese New Year's Eve" and the second "Chinese New Year" (or the extra eve is spurious). Confirm against the TWSE source data and fix in taiwan_stock_exchange.py, then regenerate this snapshot.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At snapshots/financial/XTAI.json, line 340:

<comment>Multiple years list a consecutive pair of days both labeled "Chinese New Year's Eve" (e.g., 2026-02-15 and 2026-02-16, 2027-02-04 and 2027-02-05, 2030-02-01 and 2030-02-02). The Lunar New Year holiday has a single eve; the day immediately before Chinese New Year's Eve is a market closure ("No Trading"), not a second eve. The first of the pair should be "Chinese New Year's Eve" and the second "Chinese New Year" (or the extra eve is spurious). Confirm against the TWSE source data and fix in taiwan_stock_exchange.py, then regenerate this snapshot.</comment>

<file context>
@@ -0,0 +1,897 @@
+    "2026-02-12": "No Trading (Market opens only for Clearing & Settlement)",
+    "2026-02-13": "No Trading (Market opens only for Clearing & Settlement)",
+    "2026-02-15": "Chinese New Year's Eve",
+    "2026-02-16": "Chinese New Year's Eve",
+    "2026-02-17": "Chinese New Year",
+    "2026-02-18": "Chinese New Year",
</file context>

if self._year not in {2012, 2023}:
# Ganesh Chaturthi / Vinayak Chaturthi.
self._add_ganesh_chaturthi(tr("Ganesh Chaturthi / Vinayak Chaturthi"))
if self.subdiv != "MH":

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: When Maharashtra is selected through a supported alias, this condition does not recognize it as MH, so Ganesh Chaturthi is incorrectly exposed as an optional holiday and can be merged with the public entry. Compare the normalized subdivision instead.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At holidays/countries/india.py, line 425:

<comment>When Maharashtra is selected through a supported alias, this condition does not recognize it as `MH`, so Ganesh Chaturthi is incorrectly exposed as an optional holiday and can be merged with the public entry. Compare the normalized subdivision instead.</comment>

<file context>
@@ -421,9 +422,22 @@ def _populate_optional_holidays(self):
-        if self._year not in {2012, 2023}:
-            # Ganesh Chaturthi / Vinayak Chaturthi.
-            self._add_ganesh_chaturthi(tr("Ganesh Chaturthi / Vinayak Chaturthi"))
+        if self.subdiv != "MH":
+            self._add_ganesh_chaturthi(
+                # Ganesh Chaturthi / Vinayak Chaturthi.
</file context>

required: false

env:
DEFAULT_PYTHON_VERSION: '3.14'

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The workflow-level DEFAULT_PYTHON_VERSION env variable is declared but never referenced in this file: every setup step uses ${{ matrix.python-version }} rather than ${{ env.DEFAULT_PYTHON_VERSION }}. It is dead configuration copied from run-build-tests.yml, where it is actually consumed. Remove it (or use it as the setup-uv python-version default) to avoid confusion about which version is authoritative.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At .github/workflows/run-code-tests.yml, line 10:

<comment>The workflow-level `DEFAULT_PYTHON_VERSION` env variable is declared but never referenced in this file: every setup step uses `${{ matrix.python-version }}` rather than `${{ env.DEFAULT_PYTHON_VERSION }}`. It is dead configuration copied from `run-build-tests.yml`, where it is actually consumed. Remove it (or use it as the setup-uv `python-version` default) to avoid confusion about which version is authoritative.</comment>

<file context>
@@ -0,0 +1,57 @@
+        required: false
+
+env:
+  DEFAULT_PYTHON_VERSION: '3.14'
+  FORCE_COLOR: 1
+
</file context>

@arkid15r
arkid15r added this pull request to the merge queue Aug 17, 2026
Merged via the queue into main with commit 74c8050 Aug 17, 2026
44 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants