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

ponder-lab / Hybridize-Functions-Refactoring / #3456
88%
main: 90%

Build:
Build:
LAST BUILD BRANCH: gh-readonly-queue/main/pr-1196-aab3686e6b3da7f611b9fd3b8ad94a966ad4d124
DEFAULT BRANCH: main
Ran 15 Oct 2026 01:32AM UTC
Jobs 1
Files 45
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

15 Oct 2026 01:23AM UTC coverage: 88.342% (+0.1%) from 88.244%
#3456

push

github

web-flow
Refuse Python over a parameter's value that tracing cannot carry (#1079)

* Refuse Python over a parameter's value that tracing cannot carry

A function was converted when its body applied Python to a value flowing
from its parameters in a way tracing cannot carry, so the converted
function raised where the eager one ran. Measured on TensorFlow 2.9.3:

- float() of the value raises TypeError, and bool() raises
  OperatorNotAllowedInGraphError.
- A branch on the value whose paths disagree about None raises
  ValueError from AutoGraph's conversion of the branch to tf.cond. That
  covers a return None beside a returned tensor, and a variable left
  None on one path.

The numpy-on-parameters walk now also decides these, from the same
taint, across callees and closures. It records float and bool calls on
a tainted value, and branches on a tainted value whose two successor
regions return None and a value, or whose merge block joins None with a
value. A failing function gets a new precondition failure,
HAS_UNTRACEABLE_PYTHON_ON_PARAMETERS (35). A branch whose paths agree,
and int(), which AutoGraph converts to a cast, are left alone.

Fixes #1074.

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

* Leave float() alone, and pin unbound-local and primitive controls

Measured on TensorFlow 2.9.3, float() of a tensor traces under
AutoGraph as int() does, converted to a cast; the earlier case failed
only because it wrapped the result in tf.constant, which rejects any
symbolic tensor. Only bool() stays a sink. Two controls are added: a
local bound only inside a branch on a tensor value, which is unbound
rather than None on the other path, still hybridizes, and a branch on a
primitive parameter is refused for the primitive (code 12), not by
this check.

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

* Pin ... (continued)

71 of 76 new or added lines in 3 files covered. (93.42%)

5062 of 5730 relevant lines covered (88.34%)

0.88 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
95.67
0.12% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/NumpyParameterFlowAnalysis.java
Jobs
ID Job ID Ran Files Coverage
1 #3456.1 15 Oct 2026 01:32AM UTC 45
88.34
Source Files on build #3456
  • Tree
  • List 45
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 51a88a6f on github
  • Prev Build on gh-readonly-queue/main/pr-1073-3582ee6c640945055a73ec6942406e68c12717eb
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