Skip to content

chore(copier): update from template#64

Open
copier-update[bot] wants to merge 1 commit intomainfrom
copier-update
Open

chore(copier): update from template#64
copier-update[bot] wants to merge 1 commit intomainfrom
copier-update

Conversation

@copier-update
Copy link

@copier-update copier-update bot commented Nov 2, 2025

Automated changes by Bot > Copier Update Workflow

liblaf
liblaf previously approved these changes Nov 2, 2025
@github-actions
Copy link
Contributor

github-actions bot commented Nov 2, 2025

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Warnings Elapsed time
✅ BASH shellcheck 1 0 0 0.29s
✅ BASH shfmt 1 0 0 0 0.6s
⚠️ COPYPASTE jscpd yes 198 no 6.49s
⚠️ JSON jsonlint 7 1 0 0.16s
✅ JSON prettier 7 0 0 0 1.04s
✅ JSON v8r 7 0 0 4.41s
⚠️ PYTHON ruff yes yes 1481 no 15.64s
✅ SPELL cspell 225 0 0 5.81s
✅ YAML prettier 4 0 0 0 0.82s
✅ YAML v8r 4 0 0 3.44s
✅ YAML yamllint 4 0 0 0.25s

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

@liblaf liblaf bot force-pushed the copier-update branch from b69fb40 to 997e084 Compare November 2, 2025 12:05
@liblaf liblaf bot requested a review from liblaf November 2, 2025 12:05
@liblaf liblaf bot force-pushed the copier-update branch from 997e084 to 2360124 Compare November 2, 2025 12:39
@liblaf liblaf bot force-pushed the copier-update branch from 2360124 to 51bdbcb Compare November 2, 2025 13:34
@liblaf liblaf bot added the bot label Nov 2, 2025
liblaf
liblaf previously approved these changes Nov 2, 2025
@liblaf liblaf bot force-pushed the copier-update branch from 51bdbcb to ae6b22f Compare November 2, 2025 18:56
@liblaf liblaf bot added the automerge Merge the pull request once unit tests and other checks pass. label Nov 2, 2025
@liblaf liblaf bot requested a review from liblaf November 2, 2025 18:56
@liblaf liblaf bot requested a review from liblaf November 2, 2025 19:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automerge Merge the pull request once unit tests and other checks pass. bot

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant