docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs: add cdf_/ibnr_/pipe/set_backend examples (#704) - #1212

Merged
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Aug 25, 2026
Merged

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
henrydingliu merged 7 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples

Conversation

@EKtheSage

Copy link
Copy Markdown
Contributor

Summary of Changes

  • Add doctest Examples for cdf_, pct_reported_, ibnr_, and set_backend in chainladder/core/common.py.
  • Convert the existing pipe example from >>> doctest style to testsetup / testcode / testoutput.
  • Stop excluding cdf_ / ibnr_ / pct_reported_ from the class autosummary templates so the examples appear on estimator and Triangle API pages.

Related GitHub Issue(s)

Additional Context for Reviewers

Bite-sized core-module follow-up for #704. Companions: #1208 (slice), #1209 (io), #1210 (display).

Checklist

  • I passed tests locally for both code (uv run pytest) and documentation changes (uv run --directory docs jb build . --builder=custom --custom-builder=doctest)

Made with Cursor

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actionsBot commented Aug 13, 2026

Copy link
Copy Markdown

Pyright Type Completeness

View the full pyright --verifytypes output for this commit

Project (full chainladder package, at this PR's head): 14.9% of exported symbols fully typed (202 / 1356)

KnownAmbiguousUnknownTotal
Project (head)20211110431356

Other symbols referenced but not exported by chainladder: 13

KnownAmbiguousUnknownTotal
Other (head)31913

Symbols without documentation:

  • Functions without docstring: 324
  • Functions without default param: 0
  • Classes without docstring: 10

Patch (exported symbols added or changed by this PR): 0.0% fully typed (0 / 1)

KnownAmbiguousUnknownTotal
Patch0011
Patch symbol details
SymbolStatusChange
chainladder.core.tests.test_pattern_cum_to_incr.test_pattern_cum_to_incr_zero_cells_stay_finite❌ unknownnew

@codecov

codecovBot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.85714% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 91.32%. Comparing base (bd0d539) to head (e4e141f).

Files with missing linesPatch %Lines
chainladder/core/triangle.py91.30%1 Missing and 1 partial ⚠️
Additional details and impacted files
@@ Coverage Diff @@## main #1212 +/- ##
=======================================
Coverage 91.31% 91.32% =======================================
Files 91 92 +1 Lines 5434 5438 +4 Branches 700 700 =======================================
+ Hits 4962 4966 +4 
Misses 336 336 Partials 136 136 
FlagCoverage Δ
unittests91.32% <92.85%> (+<0.01%)⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ 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.

@henrydingliu

Copy link
Copy Markdown
Member

for cdf_/ibnr_, i think we need to make them a part of a bigger refactor that make ldf_ and ultimate_ into properties. for now, i would recommend that we point the user from Triangle to the lists of attributes in Development and Chainladder, via a See Also.

pct_reported_ should be added to the attribute list in Development

good with the rest.

…_ on Development.
These stay estimator attributes until ldf_/ultimate_ are properties too, so they are no longer un-excluded on the Triangle autosummary page.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

cdf_ / ibnr_ are no longer un-excluded on the Triangle autosummary page. Triangle now has a See Also to Development (ldf_, cdf_) and Chainladder (ultimate_, ibnr_).

pct_reported_ is on the Development attribute list. The property examples stay on the estimator pages via class.rst.

@henrydingliu

Copy link
Copy Markdown
Member

ruff fix pretty pls?

@kennethshsu

Copy link
Copy Markdown
Member

@EKtheSage you may need to do a uv sync to get the ruff stuff in

…template.
Clearing per-file ignores on triangle.py and common.py surfaced E721/E731/E712/F401/F841. The template unions documented attrs and arithmetic dunders so sibling casact#704 PRs merge without wiping each other.
Co-authored-by: Cursor <cursoragent@cursor.com>
EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
… autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so casact#1208, casact#1212, and casact#1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Ruff: the workflow clears per-file ignores on touched files, so triangle.py / common.py needed the actual E721/E731/E712/F401/F841 fixes rather than a uv sync. Those ignores are dropped.

The autosummary template is the same union as #1208/#1211/#1213 (indexers, shape attrs, arithmetic dunders). cdf_ / ibnr_ / pct_reported_ stay off the Triangle page.

EKtheSage added a commit to EKtheSage/chainladder-python that referenced this pull request Aug 14, 2026
The last merge of casact#1208/casact#1211/casact#1212/casact#1213 would otherwise wipe documented indexers, shape attrs, or arithmetic dunders.
Co-authored-by: Cursor <cursoragent@cursor.com>
The pipe() doctest now normalizes whitespace so pandas header padding does not fail CI.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

Copy link
Copy Markdown
ContributorAuthor

Merged main. The new E2 ruleset from #1204 is what CI ruff actually enforces on touched files (--config lint.per-file-ignores={}); uv sync does not change that. triangle.py / development.py are E2-clean and those ignores are dropped.

The failing Triangle pipe() doctest was pandas header padding. That example now uses NORMALIZE_WHITESPACE.

@cursorcursorBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want reviews to match your repository better? Bugbot Learning can learn team-specific rules from PR activity. A team admin can enable Learning in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

Comment threadchainladder/core/triangle.py
henrydingliu pushed a commit that referenced this pull request Aug 14, 2026
* docs: add Triangle shape/empty/compute doctest examples (#704)
Co-authored-by: Cursor <cursoragent@cursor.com>
* Tighten TriangleBase examples from review on nan_triangle, get_array_module, and compute.
Print the nan mask as-is, show numpy/sparse module identity, and document compute with a dask code sample instead of a numpy no-op doctest.
Co-authored-by: Cursor <cursoragent@cursor.com>
* Fix E721 in TriangleBase, show a fake compute() output, and align the autosummary template.
The ruff workflow lints touched files with per-file ignores cleared. The template now unions the documented Triangle attrs and arithmetic dunders so #1208, #1212, and #1213 do not clobber each other on merge.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
@henrydingliu

Copy link
Copy Markdown
Member

@EKtheSage thanks for all the work! FYI there's a cursor warning and a conflict

EKtheSageand others added 3 commits August 24, 2026 08:42
num_to_value mutates zeros in place; the F841 cleanup dropped that write and left adjacent-age division seeing raw zeros.
Co-authored-by: Cursor <cursoragent@cursor.com>
…mples
Co-authored-by: Cursor <cursoragent@cursor.com>
# Conflicts:
#	pyproject.toml
… regression test that pattern cum_to_incr stays finite when CDF cells are zero.
Co-authored-by: Cursor <cursoragent@cursor.com>
@EKtheSage

EKtheSage commented Aug 24, 2026

Copy link
Copy Markdown
ContributorAuthor

The Cursor warning was a real side-effect of the F841 cleanup: num_to_value(self.values, 1) mutates zeros to ones before pattern cum_to_incr divides adjacent ages. That call is restored, with a regression test that a zero CDF cell stays finite.

Conflict: merged upstream/main into this branch (not into casact main).

@henrydingliuhenrydingliu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

new test doesn't need to be its own file but harmless as is

@henrydingliu
henrydingliu merged commit fee267d into casact:mainAug 25, 2026
13 checks passed
Sign up for freeto 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.

3 participants

@EKtheSage@henrydingliu@kennethshsu