Skip to content

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Oct 24, 2025

This PR contains the following updates:

Package Type Update Change
actions/upload-artifact action major v4 -> v5

Release Notes

actions/upload-artifact (actions/upload-artifact)

v5

Compare Source


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions
Copy link
Contributor

github-actions bot commented Oct 24, 2025

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ BASH shellcheck 1 0 0 0.28s
✅ BASH shfmt 1 0 0 0 0.09s
⚠️ COPYPASTE jscpd yes 198 no 6.58s
⚠️ JSON jsonlint 8 1 0 0.16s
✅ JSON prettier 8 0 0 0 0.53s
✅ JSON v8r 8 0 0 4.54s
⚠️ PYTHON ruff yes yes 1481 no 15.78s
✅ SPELL cspell 226 0 0 5.7s
✅ YAML prettier 4 0 0 0 0.4s
✅ YAML v8r 4 0 0 3.59s
✅ YAML yamllint 4 0 0 0.28s

Detailed Issues

⚠️ COPYPASTE / jscpd - 198 errors
Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/phace/func.py [98:6 - 104:17] (6 lines, 85 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/phace/func.py [71:6 - 76:17]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap_active/_main.py [1:1 - 15:11] (14 lines, 119 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/phace/_main.py [1:1 - 15:6]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap_active/_main.py [15:11 - 39:3] (24 lines, 227 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/phace/_main.py [15:6 - 39:16]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap/func.py [43:5 - 54:5] (11 lines, 134 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/arap_active/func.py [49:6 - 60:6]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap/func.py [57:5 - 68:5] (11 lines, 137 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/arap_active/func.py [63:6 - 74:6]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap/_main.py [1:1 - 11:5] (10 lines, 100 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/phace/_main.py [1:1 - 9:2]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/arap/_main.py [23:5 - 40:2] (17 lines, 167 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/phace/_main.py [16:5 - 33:2]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [83:11 - 92:5] (9 lines, 99 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [58:11 - 67:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [92:5 - 103:4] (11 lines, 162 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [67:7 - 78:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [113:17 - 133:10] (20 lines, 262 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [58:11 - 78:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [154:2 - 169:3] (15 lines, 217 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [62:2 - 77:12]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [184:17 - 210:10] (26 lines, 359 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [149:17 - 175:10]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [220:19 - 229:4] (9 lines, 90 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [58:11 - 67:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [230:4 - 241:4] (11 lines, 171 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [92:7 - 78:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [252:25 - 261:4] (9 lines, 90 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [58:11 - 67:7]

Clone found (python):
 - src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [262:10 - 274:9] (12 lines, 188 tokens)
   src/liblaf/apple/warp/sim/energy/elastic/_elastic.py [92:7 - 104:4]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_phace_active.py [6:1 - 13:5] (7 lines, 78 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_static.py [3:1 - 12:6]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_phace_active.py [40:9 - 45:2] (5 lines, 129 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_static.py [29:9 - 34:2]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_arap_active.py [1:1 - 19:11] (18 lines, 145 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_active.py [1:1 - 19:12]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_arap_active.py [27:13 - 37:3] (10 lines, 100 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_active.py [30:9 - 40:8]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_arap_active.py [42:5 - 56:7] (14 lines, 200 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_active.py [50:5 - 64:7]

Clone found (python):
 - src/liblaf/apple/jax/sim/energy/elastic/_arap.py [3:1 - 13:5] (10 lines, 86 tokens)
   src/liblaf/apple/jax/sim/energy/elastic/_phace_static.py [3:1 - 13:12]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny-bunny/main.py [1:1 - 14:5] (13 lines, 115 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [1:1 - 14:4]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny-bunny/main.py [22:5 - 84:78] (62 lines, 768 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [22:5 - 84:8]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny-bunny/main.py [87:5 - 114:2] (27 lines, 319 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [84:4 - 111:2]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [21:5 - 35:7] (14 lines, 116 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-bunny/main.py [17:5 - 31:4]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [58:1 - 67:4] (9 lines, 151 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [31:1 - 40:3]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [67:3 - 77:9] (10 lines, 124 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [40:3 - 49:6]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [81:9 - 88:5] (7 lines, 101 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [52:9 - 59:7]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [90:4 - 100:5] (10 lines, 128 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [58:2 - 68:4]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [100:2 - 116:4] (16 lines, 181 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [68:2 - 84:10]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-bunny/main.py [116:6 - 132:5] (16 lines, 200 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [87:5 - 103:13]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-box/main.py [1:1 - 50:5] (49 lines, 490 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny/main.py [1:1 - 50:3]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-box/main.py [52:9 - 79:28] (27 lines, 359 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny/main.py [54:2 - 81:3]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-box/main.py [78:9 - 96:75] (18 lines, 224 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny-sphere/main.py [49:10 - 96:8]

Clone found (python):
 - exp/2025/07/30/dynamics/collision/collision-box/main.py [104:5 - 142:10] (38 lines, 481 tokens)
   exp/2025/07/30/dynamics/collision/collision-bunny/main.py [97:8 - 105:12]

Clone found (python):
 - tests/warp/sim/energy/elastic/utils/test_hess_diag.py [9:10 - 30:15] (21 lines, 241 tokens)
   tests/warp/sim/energy/elastic/utils/test_hess_quad.py [10:6 - 31:11]

Clone found (python):
 - tests/warp/sim/energy/elastic/utils/test_hess_diag.py [87:5 - 93:13] (6 lines, 71 tokens)
   tests/warp/sim/energy/elastic/utils/test_hess_quad.py [97:5 - 103:13]

Clone found (python):
 - tests/warp/sim/energy/elastic/utils/test_hess_diag.py [94:5 - 106:11] (12 lines, 239 tokens)
   tests/warp/sim/energy/elastic/utils/test_hess_quad.py [105:5 - 117:11]

Clone found (python):
 - src/liblaf/apple/jax/sim/model/_model.py [40:10 - 48:10] (8 lines, 102 tokens)
   src/liblaf/apple/jax/sim/model/_model.py [22:4 - 30:4]

Clone found (python):
 - src/liblaf/apple/jax/sim/model/_model.py [58:2 - 66:10] (8 lines, 97 tokens)
   src/liblaf/apple/jax/sim/model/_model.py [22:2 - 30:4]

Clone found (python):
 - src/liblaf/apple/jax/optim/_minimize/_minimizer.py [77:5 - 85:2] (8 lines, 91 tokens)
   src/liblaf/apple/jax/optim/_minimize/_scipy.py [21:5 - 30:8]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [416:18 - 422:9] (6 lines, 109 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [360:16 - 366:16]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [429:15 - 434:12] (5 lines, 88 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [360:16 - 365:14]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [1:1 - 37:7] (36 lines, 317 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [1:1 - 37:10]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [37:29 - 123:9] (86 lines, 799 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [37:31 - 123:8]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [124:10 - 138:16] (14 lines, 101 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [126:11 - 140:8]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [141:5 - 211:7] (70 lines, 741 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [145:5 - 215:6]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [212:10 - 322:9] (110 lines, 968 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [218:11 - 328:8]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [333:10 - 353:2] (20 lines, 292 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [349:11 - 369:4]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [353:2 - 368:11] (15 lines, 193 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [369:2 - 384:4]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [368:2 - 385:71] (17 lines, 189 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [384:2 - 401:6]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [396:9 - 457:2] (61 lines, 662 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [464:13 - 525:2]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [457:2 - 488:2] (31 lines, 134 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [525:2 - 556:2]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py [1:1 - 37:34] (36 lines, 319 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [1:1 - 37:29]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py [37:34 - 401:5] (364 lines, 3645 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [37:31 - 416:18]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py [396:13 - 458:2] (62 lines, 677 tokens)
   exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [395:13 - 525:2]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py [458:2 - 489:2] (31 lines, 134 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [525:2 - 556:2]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/36-inverse-abs.py [1:1 - 37:28] (36 lines, 319 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [1:1 - 37:29]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/36-inverse-abs.py [37:28 - 382:9] (345 lines, 3480 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [37:31 - 398:42]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/36-inverse-abs.py [392:13 - 488:2] (96 lines, 821 tokens)
   exp/2025/09/24/inverse-grin/src/37-inverse-quadratic.py [393:13 - 556:2]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [1:1 - 37:24] (36 lines, 319 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [1:1 - 37:29]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [37:24 - 138:4] (101 lines, 914 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [37:31 - 138:4]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [141:5 - 265:47] (124 lines, 1184 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [145:5 - 271:44]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [269:17 - 282:25] (13 lines, 126 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [279:17 - 292:22]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [284:35 - 378:15] (94 lines, 1138 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [294:32 - 398:42]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [385:5 - 439:46] (54 lines, 595 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [469:5 - 523:56]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/35-inverse-small-reg.py [443:5 - 451:8] (8 lines, 96 tokens)
   exp/2025/09/24/inverse-grin/src/38-inverse-cbrt.py [456:5 - 464:32]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/34-inverse-no-reg.py [1:1 - 37:24] (36 lines, 319 tokens)
   exp/2025/09/24/inverse-grin/src/39-inverse-sparse.py [1:1 - 37:29]

Clone found (python):
 - exp/2025/09/24/inverse-grin/src/34-i

(Truncated to 13333 characters out of 36839)
⚠️ JSON / jsonlint - 1 error
File: .vscode/settings.json
Parse error on line 27, column 5:
....customTags": [    // ref: <https://squ...
----------------------^
Unexpected token "/"
⚠️ PYTHON / ruff - 1481 errors
F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/cubic/src/10-gen.py:54:29
   |
53 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
54 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
   |                             ^^^^
55 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
56 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/cubic/src/10-gen.py:55:29
   |
53 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
54 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
55 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
   |                             ^^^^
56 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
57 |         result: pv.UnstructuredGrid = physics.objects["box"].geometry
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/cubic/src/10-gen.py:56:29
   |
54 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
55 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
56 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
   |                             ^^^^^
57 |         result: pv.UnstructuredGrid = physics.objects["box"].geometry
58 |         result.point_data["solution"] = np.asarray(u)
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/fat-muscle/src/10-gen.py:32:40
   |
30 |     ):
31 |         cell: pv.Cell
32 |         barycentric: Float[np.ndarray, "N 3"] = melon.sample_barycentric_coords(
   |                                        ^^^^^
33 |             (cfg.n_samples, 4)
34 |         )
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/fat-muscle/src/10-gen.py:35:36
   |
33 |             (cfg.n_samples, 4)
34 |         )
35 |         samples: Float[np.ndarray, "N 3"] = melon.barycentric_to_points(
   |                                    ^^^^^
36 |             einops.repeat(cell.points, "B D -> N B D", N=cfg.n_samples), barycentric
37 |         )
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/10-gen.py:38:33
   |
36 |             einops.repeat(cell.points, "B D -> N B D", N=cfg.n_samples), barycentric
37 |         )
38 |         is_in: Bool[np.ndarray, " N"] = melon.triangle.contains(muscle, samples)
   |                                 ^^^^
39 |         tetmesh.cell_data["muscle-fraction"][cid] = (
40 |             np.count_nonzero(is_in) / cfg.n_samples
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/11-inspect-volume.py:24:40
   |
23 |     tetmesh = tetmesh.compute_cell_sizes()
24 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
   |                                        ^^^^
25 |     volume: Float[np.ndarray, " C"] = tetmesh.cell_data["Volume"]
26 |     occupied_volume: Float[np.ndarray, " C"] = np.sum(volume[muscle_fraction > 1e-9])
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/11-inspect-volume.py:25:31
   |
23 |     tetmesh = tetmesh.compute_cell_sizes()
24 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
25 |     volume: Float[np.ndarray, " C"] = tetmesh.cell_data["Volume"]
   |                               ^^^^
26 |     occupied_volume: Float[np.ndarray, " C"] = np.sum(volume[muscle_fraction > 1e-9])
27 |     ic(occupied_volume / tetmesh.volume)
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/11-inspect-volume.py:26:40
   |
24 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
25 |     volume: Float[np.ndarray, " C"] = tetmesh.cell_data["Volume"]
26 |     occupied_volume: Float[np.ndarray, " C"] = np.sum(volume[muscle_fraction > 1e-9])
   |                                        ^^^^
27 |     ic(occupied_volume / tetmesh.volume)
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/20-simulate.py:56:29
   |
55 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
56 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
   |                             ^^^^
57 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
58 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/fat-muscle/src/20-simulate.py:57:29
   |
55 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
56 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
57 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
   |                             ^^^^
58 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
59 |         result: pv.UnstructuredGrid = physics.objects["box"].geometry
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/fat-muscle/src/20-simulate.py:58:29
   |
56 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
57 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
58 |         u: Float[jax.Array, "P 3"] = u[physics.objects["box"].dof_id]
   |                             ^^^^^
59 |         result: pv.UnstructuredGrid = physics.objects["box"].geometry
60 |         result.point_data["solution"] = np.asarray(u)
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:32:34
   |
30 |     )
31 |     physics.add(apple.Object("flesh", apple.jax.energy.tetra.Phace(), geometry))
32 |     activation: Float[jax.Array, "C 3 3"] = activations(
   |                                  ^^^^^^^
33 |         geometry,
34 |         np.asarray(
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:55:29
   |
54 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
55 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
   |                             ^^^^
56 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
57 |         u: Float[jax.Array, "P 3"] = u[physics.objects["flesh"].dof_id]
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:56:29
   |
54 |     def callback(intermediate_result: apple.OptimizeResult) -> None:
55 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
56 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
   |                             ^^^^
57 |         u: Float[jax.Array, "P 3"] = u[physics.objects["flesh"].dof_id]
58 |         result: pv.UnstructuredGrid = physics.objects["flesh"].geometry
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:57:29
   |
55 |         u: Float[jax.Array, " F"] = intermediate_result["x"]
56 |         u: Float[jax.Array, " T"] = physics.fill_dirichlet(u, q)
57 |         u: Float[jax.Array, "P 3"] = u[physics.objects["flesh"].dof_id]
   |                             ^^^^^
58 |         result: pv.UnstructuredGrid = physics.objects["flesh"].geometry
59 |         result.point_data["solution"] = np.asarray(u)
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:72:61
   |
71 | def activations(
72 |     tetmesh: pv.UnstructuredGrid, stretch: Float[ArrayLike, " 3"]
   |                                                             ^^^^
73 | ) -> Float[jax.Array, "C 3 3"]:
74 |     muscle_direction: Float[np.ndarray, "C 3"] = tetmesh.cell_data["muscle-direction"]
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:73:23
   |
71 | def activations(
72 |     tetmesh: pv.UnstructuredGrid, stretch: Float[ArrayLike, " 3"]
73 | ) -> Float[jax.Array, "C 3 3"]:
   |                       ^^^^^^^
74 |     muscle_direction: Float[np.ndarray, "C 3"] = tetmesh.cell_data["muscle-direction"]
75 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:74:41
   |
72 |     tetmesh: pv.UnstructuredGrid, stretch: Float[ArrayLike, " 3"]
73 | ) -> Float[jax.Array, "C 3 3"]:
74 |     muscle_direction: Float[np.ndarray, "C 3"] = tetmesh.cell_data["muscle-direction"]
   |                                         ^^^^^
75 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
76 |     stretch: Float[jax.Array, " 3"] = jnp.asarray(stretch)
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:75:40
   |
73 | ) -> Float[jax.Array, "C 3 3"]:
74 |     muscle_direction: Float[np.ndarray, "C 3"] = tetmesh.cell_data["muscle-direction"]
75 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
   |                                        ^^^^
76 |     stretch: Float[jax.Array, " 3"] = jnp.asarray(stretch)
77 |     orientation: Float[jax.Array, "C 3 3"] = apple.jax.math.orientation_matrix(
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:76:31
   |
74 |     muscle_direction: Float[np.ndarray, "C 3"] = tetmesh.cell_data["muscle-direction"]
75 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
76 |     stretch: Float[jax.Array, " 3"] = jnp.asarray(stretch)
   |                               ^^^^
77 |     orientation: Float[jax.Array, "C 3 3"] = apple.jax.math.orientation_matrix(
78 |         muscle_direction,
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:77:35
   |
75 |     muscle_fraction: Float[np.ndarray, " C"] = tetmesh.cell_data["muscle-fraction"]
76 |     stretch: Float[jax.Array, " 3"] = jnp.asarray(stretch)
77 |     orientation: Float[jax.Array, "C 3 3"] = apple.jax.math.orientation_matrix(
   |                                   ^^^^^^^
78 |         muscle_direction,
79 |         einops.repeat(np.asarray([1.0, 0.0, 0.0]), "i -> C i", C=tetmesh.n_cells),
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/10-simulate.py:81:34
   |
79 |         einops.repeat(np.asarray([1.0, 0.0, 0.0]), "i -> C i", C=tetmesh.n_cells),
80 |     )
81 |     activation: Float[jax.Array, "C 3 3"] = einops.einsum(
   |                                  ^^^^^^^
82 |         orientation,
83 |         jnp.asarray(stretch),
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/11-muscle-deformation.py:23:40
   |
21 |     tetmesh: pv.UnstructuredGrid = melon.load_unstructured_grid(cfg.tetmesh)
22 |
23 |     muscle_direction: Float[jax.Array, "C 3"] = jnp.asarray(
   |                                        ^^^^^
24 |         tetmesh.cell_data["muscle-direction"]
25 |     )
   |

F722 Syntax error in forward annotation: Expected an expression
  --> exp/2025/04/30/human-head/src/11-muscle-deformation.py:26:39
   |
24 |         tetmesh.cell_data["muscle-direction"]
25 |     )
26 |     muscle_fraction: Float[jax.Array, " C"] = jnp.asarray(
   |                                       ^^^^
27 |         tetmesh.cell_data["muscle-fraction"]
28 |     )
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/11-muscle-deformation.py:29:35
   |
27 |         tetmesh.cell_data["muscle-fraction"]
28 |     )
29 |     orientation: Float[jax.Array, "C 3 3"] = apple.jax.math.orientation_matrix(
   |                                   ^^^^^^^
30 |         muscle_direction,
31 |         einops.repeat(jnp.asarray([1.0, 0.0, 0.0]), "i -> C i", C=tetmesh.n_cells),
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/11-muscle-deformation.py:34:30
   |
32 |     )
33 |
34 |     points: Float[jax.Array, "P 3"] = jnp.asarray(tetmesh.points)
   |                              ^^^^^
35 |     cells: Float[jax.Array, "C 4"] = jnp.asarray(tetmesh.cells_dict[pv.CellType.TETRA])
36 |     dh_dX: Float[jax.Array, "C 4 3"] = apple.jax.elem.tetra.dh_dX(points[cells])
   |

F722 Syntax error in forward annotation: Unexpected token at the end of an expression
  --> exp/2025/04/30/human-head/src/11-muscle-deformation.py:35:29
   |
34 |     points: Float[jax.Array, "P 3"] = jnp.asarray(tetmesh.points)
35 |     cells: Float[jax.Array, "C 4"] = jnp.asarray(tetmesh.cells_dict[pv.C

(Truncated to 13333 characters out of 600238)

See detailed reports in MegaLinter artifacts

MegaLinter is graciously provided by OX Security

@codecov
Copy link

codecov bot commented Oct 24, 2025

❌ 3 Tests Failed:

Tests completed Failed Passed Skipped
24 3 21 1
View the full list of 3 ❄️ flaky test(s)
tests/jax/optim/minimize/test_scipy.py::test_minimize_scipy_lbfgs

Flake rate in main: 22.22% (Passed 21 times, Failed 6 times)

Stack Traces | 18.2s run time
#x1B[0m#x1B[37m@hypothesis#x1B[39;49;00m.given(#x1B[90m#x1B[39;49;00m
>       hnp.arrays(#x1B[90m#x1B[39;49;00m
                   ^#x1B[90m#x1B[39;49;00m
            dtype=np.float64,#x1B[90m#x1B[39;49;00m
            shape=hnp.array_shapes(min_dims=#x1B[94m1#x1B[39;49;00m, max_dims=#x1B[94m1#x1B[39;49;00m, min_side=#x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            elements=hnp.from_dtype(np.dtype(np.float16), min_value=#x1B[94m0.0#x1B[39;49;00m, max_value=#x1B[94m2.0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test at 0x7fada282d9e0>

#x1B[1m#x1B[.../optim/minimize/test_scipy.py#x1B[0m:31: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

x0 = array([0., 1.])

    #x1B[0m#x1B[37m@hypothesis#x1B[39;49;00m.given(#x1B[90m#x1B[39;49;00m
        hnp.arrays(#x1B[90m#x1B[39;49;00m
            dtype=np.float64,#x1B[90m#x1B[39;49;00m
            shape=hnp.array_shapes(min_dims=#x1B[94m1#x1B[39;49;00m, max_dims=#x1B[94m1#x1B[39;49;00m, min_side=#x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            elements=hnp.from_dtype(np.dtype(np.float16), min_value=#x1B[94m0.0#x1B[39;49;00m, max_value=#x1B[94m2.0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[37m@hypothesis#x1B[39;49;00m.settings(max_examples=#x1B[94m10#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_minimize_scipy_lbfgs#x1B[39;49;00m(x0: ArrayLike) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        optimizer = optim.MinimizerScipy(jit=#x1B[94mFalse#x1B[39;49;00m, method=#x1B[33m"#x1B[39;49;00m#x1B[33mL-BFGS-B#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, options={})#x1B[90m#x1B[39;49;00m
        solution: optim.Solution = optimizer.minimize(#x1B[90m#x1B[39;49;00m
            x0=x0, fun=testing.rosen, jac=testing.rosen_der#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
>       np.testing.assert_allclose(solution[#x1B[33m"#x1B[39;49;00m#x1B[33mx#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94m1.0#x1B[39;49;00m, rtol=#x1B[94m1e-4#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: #x1B[0m
#x1B[1m#x1B[31mE       Not equal to tolerance rtol=0.0001, atol=0#x1B[0m
#x1B[1m#x1B[31mE       #x1B[0m
#x1B[1m#x1B[31mE       Mismatched elements: 2 / 2 (100%)#x1B[0m
#x1B[1m#x1B[31mE       Max absolute difference among violations: 0.00040014#x1B[0m
#x1B[1m#x1B[31mE       Max relative difference among violations: 0.00040014#x1B[0m
#x1B[1m#x1B[31mE        ACTUAL: array([0.999792, 0.9996  ])#x1B[0m
#x1B[1m#x1B[31mE        DESIRED: array(1.)#x1B[0m
#x1B[1m#x1B[31mE       Falsifying example: test_minimize_scipy_lbfgs(#x1B[0m
#x1B[1m#x1B[31mE           x0=array([0., 1.]),#x1B[0m
#x1B[1m#x1B[31mE       )#x1B[0m
#x1B[1m#x1B[31mE       Explanation:#x1B[0m
#x1B[1m#x1B[31mE           These lines were always and only run by failing examples:#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1009#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1010#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1016#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1021#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/getlimits.py:498#x1B[0m
#x1B[1m#x1B[31mE               (and 6 more with settings.verbosity >= verbose)#x1B[0m
#x1B[1m#x1B[31mE       #x1B[0m
#x1B[1m#x1B[31mE       You can reproduce this example by temporarily adding @reproduce_failure('6.142.2', b'AXicc2RidGTQYIABDfsPEAYAGLECBQ==') as a decorator on your test case#x1B[0m

optimizer  = MinimizerScipy(jit=False, method='L-BFGS-B', options={})
solution   =   message: CONVERGENCE: RELATIVE REDUCTION OF F <= FACTR*EPSMCH
  success: True
   status: 0
      fun: 6.790301496989...e-03]
     nfev: 28
     njev: 28
 hess_inv: <2x2 LbfgsInvHessProduct with dtype=float64>
     time: 0.5298576340001091
x0         = array([0., 1.])

#x1B[1m#x1B[.../optim/minimize/test_scipy.py#x1B[0m:43: AssertionError
tests/jax/optim/minimize/test_scipy.py::test_minimize_scipy_trust_constr

Flake rate in main: 22.22% (Passed 21 times, Failed 6 times)

Stack Traces | 75.3s run time
#x1B[0m#x1B[37m@hypothesis#x1B[39;49;00m.given(#x1B[90m#x1B[39;49;00m
>       hnp.arrays(#x1B[90m#x1B[39;49;00m
                   ^#x1B[90m#x1B[39;49;00m
            dtype=np.float64,#x1B[90m#x1B[39;49;00m
            shape=hnp.array_shapes(min_dims=#x1B[94m1#x1B[39;49;00m, max_dims=#x1B[94m1#x1B[39;49;00m, min_side=#x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            elements=hnp.from_dtype(np.dtype(np.float16), min_value=#x1B[94m0.0#x1B[39;49;00m, max_value=#x1B[94m2.0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test at 0x7fada282d3a0>

#x1B[1m#x1B[.../optim/minimize/test_scipy.py#x1B[0m:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

x0 = array([0., 0., 0.])

    #x1B[0m#x1B[37m@hypothesis#x1B[39;49;00m.given(#x1B[90m#x1B[39;49;00m
        hnp.arrays(#x1B[90m#x1B[39;49;00m
            dtype=np.float64,#x1B[90m#x1B[39;49;00m
            shape=hnp.array_shapes(min_dims=#x1B[94m1#x1B[39;49;00m, max_dims=#x1B[94m1#x1B[39;49;00m, min_side=#x1B[94m2#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
            elements=hnp.from_dtype(np.dtype(np.float16), min_value=#x1B[94m0.0#x1B[39;49;00m, max_value=#x1B[94m2.0#x1B[39;49;00m),#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[37m@hypothesis#x1B[39;49;00m.settings(max_examples=#x1B[94m10#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_minimize_scipy_trust_constr#x1B[39;49;00m(x0: ArrayLike) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        optimizer = optim.MinimizerScipy(#x1B[90m#x1B[39;49;00m
            jit=#x1B[94mFalse#x1B[39;49;00m, method=#x1B[33m"#x1B[39;49;00m#x1B[33mtrust-constr#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m, options={#x1B[33m"#x1B[39;49;00m#x1B[33mverbose#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m: #x1B[94m3#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
        solution: optim.Solution = optimizer.minimize(#x1B[90m#x1B[39;49;00m
            x0=x0,#x1B[90m#x1B[39;49;00m
            fun=testing.rosen,#x1B[90m#x1B[39;49;00m
            jac=testing.rosen_der,#x1B[90m#x1B[39;49;00m
            hessp=testing.rosen_hess_prod,#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
>       np.testing.assert_allclose(solution[#x1B[33m"#x1B[39;49;00m#x1B[33mx#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m], #x1B[94m1.0#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       AssertionError: #x1B[0m
#x1B[1m#x1B[31mE       Not equal to tolerance rtol=1e-07, atol=0#x1B[0m
#x1B[1m#x1B[31mE       #x1B[0m
#x1B[1m#x1B[31mE       Mismatched elements: 2 / 3 (66.7%)#x1B[0m
#x1B[1m#x1B[31mE       Max absolute difference among violations: 3.20262951e-07#x1B[0m
#x1B[1m#x1B[31mE       Max relative difference among violations: 3.20262951e-07#x1B[0m
#x1B[1m#x1B[31mE        ACTUAL: array([1., 1., 1.])#x1B[0m
#x1B[1m#x1B[31mE        DESIRED: array(1.)#x1B[0m
#x1B[1m#x1B[31mE       Falsifying example: test_minimize_scipy_trust_constr(#x1B[0m
#x1B[1m#x1B[31mE           x0=array([0., 0., 0.]),#x1B[0m
#x1B[1m#x1B[31mE       )#x1B[0m
#x1B[1m#x1B[31mE       Explanation:#x1B[0m
#x1B[1m#x1B[31mE           These lines were always and only run by failing examples:#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1009#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1010#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1016#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1021#x1B[0m
#x1B[1m#x1B[31mE               .../apple/apple/.venv/lib/python3.13.../numpy/lib/_stride_tricks_impl.py:342#x1B[0m
#x1B[1m#x1B[31mE               (and 6 more with settings.verbosity >= verbose)#x1B[0m
#x1B[1m#x1B[31mE       #x1B[0m
#x1B[1m#x1B[31mE       You can reproduce this example by temporarily adding @reproduce_failure('6.142.2', b'AEEDACgAAAAAAAAAAA==') as a decorator on your test case#x1B[0m

optimizer  = MinimizerScipy(jit=False, method='trust-constr', options={'verbose': 3})
solution   =           message: `gtol` termination condition is satisfied.
          success: True
           status: 1
           ...        tr_radius: 0.4187059657823221
   constr_penalty: 1.0
            niter: 30
             time: 5.304069763999905
x0         = array([0., 0., 0.])

#x1B[1m#x1B[.../optim/minimize/test_scipy.py#x1B[0m:27: AssertionError
tests/warp/sim/energy/elastic/utils/test_hess_quad.py::test_h6_quad

Flake rate in main: 100.00% (Passed 0 times, Failed 5 times)

Stack Traces | 35.8s run time
#x1B[0m#x1B[37m@hypothesis#x1B[39;49;00m.given(#x1B[90m#x1B[39;49;00m
>       p=random_matrices((#x1B[94m4#x1B[39;49;00m, #x1B[94m3#x1B[39;49;00m)), dhdX=random_matrices((#x1B[94m4#x1B[39;49;00m, #x1B[94m3#x1B[39;49;00m)), F=random_matrices((#x1B[94m3#x1B[39;49;00m, #x1B[94m3#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
                   ^^^#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test at 0x7fada26c9940>

#x1B[1m#x1B[.../elastic/utils/test_hess_quad.py#x1B[0m:128: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../elastic/utils/test_hess_quad.py#x1B[0m:138: in test_h6_quad
    #x1B[0mcheck_quad(func.h6_prod, func.h6_quad, p, args)#x1B[90m#x1B[39;49;00m
        F          = Array([[[ 0.63525391,  0.63525391,  0.63525391],
        [ 0.63525391,  0.63525391,  0.63525391],
        [ 0.63525391...91],
        [ 0.63525391,  0.        ,  0.63525391],
        [ 0.63525391,  0.63525391,  0.63525391]]], dtype=float64)
        F_wp       = array(shape=(2,), dtype=mat33(d))
        args       = (array(shape=(2,), dtype=mat43(d)), array(shape=(2,), dtype=mat33(d)))
        dhdX       = Array([[[0.98779297, 0.98779297, 0.98779297],
        [0.98779297, 0.98779297, 0.98779297],
        [0.98779297, 0.987...98779297],
        [0.98779297, 0.98779297, 0.98779297],
        [0.98779297, 0.98779297, 0.98779297]]], dtype=float64)
        dhdX_wp    = array(shape=(2,), dtype=mat43(d))
        p          = Array([[[0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.807...80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.        , 0.80761719, 0.80761719]]], dtype=float64)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

prod = <Function h6_prod(p: typing.Any, dhdX: typing.Any, F: typing.Any)>
quad = <Function h6_quad(p: typing.Any, dhdX: typing.Any, F: typing.Any)>
p = Array([[[0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.807...80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.        , 0.80761719, 0.80761719]]], dtype=float64)
args = (array(shape=(2,), dtype=mat43(d)), array(shape=(2,), dtype=mat33(d)))

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mcheck_quad#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        prod: Callable | wp.Function,#x1B[90m#x1B[39;49;00m
        quad: Callable | wp.Function,#x1B[90m#x1B[39;49;00m
        p: Float[Array, #x1B[33m"#x1B[39;49;00m#x1B[33mbatch 4 3#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m],#x1B[90m#x1B[39;49;00m
        args: Sequence[wp.array],#x1B[90m#x1B[39;49;00m
    ) -> #x1B[94mNone#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
        p_wp: wp.array = wp_utils.to_warp(p, wp_utils.MatrixLike(#x1B[94m4#x1B[39;49;00m, #x1B[94m3#x1B[39;49;00m))#x1B[90m#x1B[39;49;00m
        prod_wp: wp.array = wp.map(prod, p_wp, *args)  #x1B[90m# pyright: ignore[reportAssignmentType]#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        prod_jax: Float[Array, #x1B[33m"#x1B[39;49;00m#x1B[33mbatch 4 3#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = wp.to_jax(prod_wp)#x1B[90m#x1B[39;49;00m
        quad_wp: wp.array = wp.map(quad, p_wp, *args)  #x1B[90m# pyright: ignore[reportAssignmentType]#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        quad_jax: Float[Array, #x1B[33m"#x1B[39;49;00m#x1B[33m batch#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = wp.to_jax(quad_wp)#x1B[90m#x1B[39;49;00m
        quad_expected: Float[Array, #x1B[33m"#x1B[39;49;00m#x1B[33m batch#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m] = einops.einsum(#x1B[90m#x1B[39;49;00m
            p, prod_jax, #x1B[33m"#x1B[39;49;00m#x1B[33mbatch i j, batch i j -> batch#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        )#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m jnp.isdtype(p.dtype, jnp.float32):#x1B[90m#x1B[39;49;00m
            np.testing.assert_allclose(quad_jax, quad_expected, atol=#x1B[94m1e-5#x1B[39;49;00m, rtol=#x1B[94m1e-5#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
        #x1B[94melif#x1B[39;49;00m jnp.isdtype(p.dtype, jnp.float64):#x1B[90m#x1B[39;49;00m
>           np.testing.assert_allclose(quad_jax, quad_expected, atol=#x1B[94m1e-15#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE           AssertionError: #x1B[0m
#x1B[1m#x1B[31mE           Not equal to tolerance rtol=1e-07, atol=1e-15#x1B[0m
#x1B[1m#x1B[31mE           #x1B[0m
#x1B[1m#x1B[31mE           Mismatched elements: 1 / 2 (50%)#x1B[0m
#x1B[1m#x1B[31mE           Max absolute difference among violations: 3.55271368e-15#x1B[0m
#x1B[1m#x1B[31mE           Max relative difference among violations: inf#x1B[0m
#x1B[1m#x1B[31mE            ACTUAL: array([0.000000e+00, 3.552714e-15])#x1B[0m
#x1B[1m#x1B[31mE            DESIRED: array([0., 0.])#x1B[0m
#x1B[1m#x1B[31mE           Falsifying example: test_h6_quad(#x1B[0m
#x1B[1m#x1B[31mE               p=(lambda a: jnp.asarray(a))(#x1B[0m
#x1B[1m#x1B[31mE                   array([[[0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.80761719, 0.80761719, 0.80761719]],#x1B[0m
#x1B[1m#x1B[31mE                   #x1B[0m
#x1B[1m#x1B[31mE                          [[0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.80761719, 0.80761719, 0.80761719],#x1B[0m
#x1B[1m#x1B[31mE                           [0.        , 0.80761719, 0.80761719]]]),#x1B[0m
#x1B[1m#x1B[31mE               ),#x1B[0m
#x1B[1m#x1B[31mE               dhdX=(lambda a: jnp.asarray(a))(#x1B[0m
#x1B[1m#x1B[31mE                   array([[[0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297]],#x1B[0m
#x1B[1m#x1B[31mE                   #x1B[0m
#x1B[1m#x1B[31mE                          [[0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297],#x1B[0m
#x1B[1m#x1B[31mE                           [0.98779297, 0.98779297, 0.98779297]]]),#x1B[0m
#x1B[1m#x1B[31mE               ),#x1B[0m
#x1B[1m#x1B[31mE               F=(lambda a: jnp.asarray(a))(#x1B[0m
#x1B[1m#x1B[31mE                   array([[[ 0.63525391,  0.63525391,  0.63525391],#x1B[0m
#x1B[1m#x1B[31mE                           [ 0.63525391,  0.63525391,  0.63525391],#x1B[0m
#x1B[1m#x1B[31mE                           [ 0.63525391,  0.63525391,  0.63525391]],#x1B[0m
#x1B[1m#x1B[31mE                   #x1B[0m
#x1B[1m#x1B[31mE                          [[-0.5       ,  0.63525391,  0.63525391],#x1B[0m
#x1B[1m#x1B[31mE                           [ 0.63525391,  0.        ,  0.63525391],#x1B[0m
#x1B[1m#x1B[31mE                           [ 0.63525391,  0.63525391,  0.63525391]]]),#x1B[0m
#x1B[1m#x1B[31mE               ),#x1B[0m
#x1B[1m#x1B[31mE           )#x1B[0m
#x1B[1m#x1B[31mE           Explanation:#x1B[0m
#x1B[1m#x1B[31mE               These lines were always and only run by failing examples:#x1B[0m
#x1B[1m#x1B[31mE                   .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:68#x1B[0m
#x1B[1m#x1B[31mE                   .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:964#x1B[0m
#x1B[1m#x1B[31mE                   .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1009#x1B[0m
#x1B[1m#x1B[31mE                   .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1010#x1B[0m
#x1B[1m#x1B[31mE                   .../apple/apple/.venv/lib/python3.13.../numpy/_core/arrayprint.py:1016#x1B[0m
#x1B[1m#x1B[31mE                   (and 7 more with settings.verbosity >= verbose)#x1B[0m
#x1B[1m#x1B[31mE           #x1B[0m
#x1B[1m#x1B[31mE           You can reproduce this example by temporarily adding @reproduce_failure('6.142.2', b'AXicc2R0ZGJ0FNVggAEN+5c3stYt3JcAZL2fW7K3PsiB0ZFTY/8DiDSjIy+y2idB5ZkHtnsAADaTEP4=') as a decorator on your test case#x1B[0m

args       = (array(shape=(2,), dtype=mat43(d)), array(shape=(2,), dtype=mat33(d)))
p          = Array([[[0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.80761719, 0.807...80761719],
        [0.80761719, 0.80761719, 0.80761719],
        [0.        , 0.80761719, 0.80761719]]], dtype=float64)
p_wp       = array(shape=(2,), dtype=mat43(d))
prod       = <Function h6_prod(p: typing.Any, dhdX: typing.Any, F: typing.Any)>
prod_jax   = Array([[[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.],
        [0., 0., 0.]]], dtype=float64)
prod_wp    = array(shape=(2,), dtype=mat43(d))
quad       = <Function h6_quad(p: typing.Any, dhdX: typing.Any, F: typing.Any)>
quad_expected = Array([0., 0.], dtype=float64)
quad_jax   = Array([0.00000000e+00, 3.55271368e-15], dtype=float64)
quad_wp    = array(shape=(2,), dtype=float64)

#x1B[1m#x1B[.../elastic/utils/test_hess_quad.py#x1B[0m:48: AssertionError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@renovate renovate bot requested a review from liblaf October 25, 2025 00:10
@renovate renovate bot force-pushed the renovate/major-github-artifact-actions branch from f201fb7 to 6489e63 Compare October 25, 2025 05:47
@renovate renovate bot changed the title chore(deps): update github artifact actions (major) chore(deps): update actions/upload-artifact action to v5 Oct 26, 2025
@renovate renovate bot force-pushed the renovate/major-github-artifact-actions branch from 6489e63 to 9bb10e8 Compare October 26, 2025 01:09
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.

2 participants