• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ponder-lab / Hybridize-Functions-Refactoring / #3265
88%

Build:
DEFAULT BRANCH: main
Ran 01 Oct 2026 01:21PM UTC
Jobs 1
Files 44
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

01 Oct 2026 01:02PM UTC coverage: 87.081% (+0.4%) from 86.724%
#3265

push

github

web-flow
Convert a hybrid function to eager only on an established absence (#1001)

* Keep a hybrid function whose scan meets an unresolved call

The hybrid-to-eager benefit precondition (P6) de-hybridized a function
whenever the tensor-op scan found no op. That absence is established
only if the scan saw every call: a call the call graph does not
resolve, such as a method on an object built through a factory the
analysis doesn't follow, may compute tensors the scan cannot see.
De-hybridizing such a function breaks one that relies on graph mode,
for example a training step whose gradients come from
`optimizer.get_gradients`, which returns `None` eagerly.

A "no tensor computation" verdict now records whether the scanned
bodies hold an unresolved call. When they do, P6 keeps the decorator,
as it does when the verdict is undetermined. A function with no
unresolved call still de-hybridizes, and the eager-to-hybrid side is
unchanged.

Part of #997: `translate.predict` is still converted, through the no-tensor-parameter rule (P2), not this one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NTnpjPjJj2aZy1ZkUD1eAn

* Exempt builtins, and keep a function whose signature declares tensors

Exempt builtin calls from the unresolved-call check. Ariadne leaves many
Python builtins (`max`, `"{}".format`, `d.get`, `l.append`, `d.items`)
without a call-graph target, so counting them kept truly barren hybrid
functions. A call of a builtin by name, or of a method on a value that
points only to builtin strings, dictionaries, lists, tuples or sets, no
longer counts. Calling the result of `getattr` still does, and only
user code is inspected.

Keep a hybrid function that carries a supplied `input_signature` out of
every hybrid-to-eager rule (P2, P3 and P6). The signature declares and
enforces its parameters' tensor types, which overrides how the analysis
types them: an argument the analysis sees as a Python `int` becomes a... (continued)

148 of 152 new or added lines in 5 files covered. (97.37%)

4287 of 4923 relevant lines covered (87.08%)

0.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
91.51
3.36% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Util.java
1
90.83
-0.02% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Parameter.java
Jobs
ID Job ID Ran Files Coverage
1 #3265.1 01 Oct 2026 01:21PM UTC 44
87.08
Source Files on build #3265
  • Tree
  • List 44
  • Changed 5
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 663ad088 on github
  • Prev Build on gh-readonly-queue/main/pr-1002-155de7315fa9e4db37f1f77630fdb68a0c1c6b72
  • Next Build on main
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc