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

ponder-lab / Hybridize-Functions-Refactoring / #3583
89%
main: 90%

Build:
Build:
LAST BUILD BRANCH: 77821b194a8331d004f43848866fd8ac2af33551
DEFAULT BRANCH: main
Ran 17 Oct 2026 02:23PM UTC
Jobs 1
Files 48
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

17 Oct 2026 02:12PM UTC coverage: 88.638% (+0.04%) from 88.594%
#3583

push

github

web-flow
Refuse reads of a tensor field another method rebinds (#1093)

* Refuse reads of a tensor field another method rebinds

A method was converted when it read a tensor from a field of self that
another method rebinds on every call, so the converted method returned
the first call's state. Measured on TensorFlow 2.9.3, with each reader
alone under tf.function and its state set up twice with different
tensors, the second call returns the first call's state for distilled
TensorFlowTTS readers (Tacotron2Sampler.next_inputs, the location
sensitive attention's __call__ and _compute_window_mask, and
TFTacotronDecoder.step) and OpenNMT-tf's
AttentionalRNNDecoder._get_initial_state.

A new analysis collects the fields the function and every node it
reaches read into a value the tensor-type analysis types as a tensor,
using ModRef's ref sets, and refuses the function when a node outside
its closure, other than __init__ or build, writes one of them, per
ModRef's mod sets. A function that does fails a new precondition,
HAS_REBOUND_STATE_READS (39). The elements of a list, tuple,
dictionary, or set are not read as state, since tf.function passes a
container argument in afresh. A field set only in __init__ or build, a
string field used as an op name, a variable updated with assign, a list
argument's elements, and a holder created and read within one call are
left alone. A getter of an object created afresh on each call is
refused, since objects are told apart by allocation site.

OpenNMT-tf's make_features fills in the dictionary its caller passes,
which tf.function refuses with a ValueError. The side-effect
precondition already refuses it when the caller passes a dictionary it
built. It misses the caller that passes a copy, as OpenNMT-tf's Model
does, because dict.copy is not modeled and the copy points to nothing.
That case is pinned with a TODO, as is a reader whose memory is a
tensor multiplied by a float computed from a loop variable, whose
product has no tensor t... (continued)

84 of 91 new or added lines in 4 files covered. (92.31%)

5289 of 5967 relevant lines covered (88.64%)

0.89 hits per line

Uncovered Changes

Lines Coverage ∆ File
4
92.97
-0.13% edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/Function.java
3
95.31
edu.cuny.hunter.hybridize.core/src/edu/cuny/hunter/hybridize/core/analysis/ReboundStateReadAnalysis.java
Jobs
ID Job ID Ran Files Coverage
1 #3583.1 17 Oct 2026 02:23PM UTC 48
88.64
Source Files on build #3583
  • Tree
  • List 48
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • 51991d38 on github
  • Prev Build on gh-readonly-queue/main/pr-1116-e8b71b1bfc86d298e0a6a980f8ac52f2a85b0329
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