Skip to content

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

Open
EKtheSage wants to merge 4 commits into
casact:mainfrom
EKtheSage:docs/704-common-examples
Open

docs: add cdf_/ibnr_/pipe/set_backend examples (#704)#1212
EKtheSage wants to merge 4 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-actions Bot 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): 15.1% of exported symbols fully typed (201 / 1333)

Known Ambiguous Unknown Total
Project (head) 201 111 1021 1333

Other symbols referenced but not exported by chainladder: 13

Known Ambiguous Unknown Total
Other (head) 3 1 9 13

Symbols without documentation:

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

Patch (exported symbols added or changed by this PR): no exported symbol type-completeness changes detected.

@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 92.30769% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 91.26%. Comparing base (272cbe1) to head (daf006a).

Files with missing lines Patch % Lines
chainladder/core/triangle.py 92.30% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1212   +/-   ##
=======================================
  Coverage   91.25%   91.26%           
=======================================
  Files          91       91           
  Lines        5400     5402    +2     
  Branches      691      691           
=======================================
+ Hits         4928     4930    +2     
  Misses        338      338           
  Partials      134      134           
Flag Coverage Δ
unittests 91.26% <92.30%> (+<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
Contributor Author

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
Contributor Author

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
Contributor Author

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.

@cursor cursor Bot 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.

if self.is_pattern & (not self.is_disposal_rate):
xp = self.get_array_module()
self.values = xp.nan_to_num(self.values)
values = num_to_value(self.values, 1)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pattern conversion drops zero fill

Medium Severity

The F841 cleanup removed num_to_value(self.values, 1) from the pattern cum_to_incr path. That call looks unused, but num_to_value writes through self.values (zeros become ones after nan_to_num). Adjacent-age division now sees raw zeros and can produce infinities or wrong LDFs whenever a cumulative pattern has missing or zero cells.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit daf006a. Configure here.

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

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.

3 participants