warp-lang 1.9.0__py3-none-win_amd64.whl → 1.10.0rc2__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of warp-lang might be problematic. Click here for more details.

Files changed (350) hide show
  1. warp/__init__.py +301 -287
  2. warp/__init__.pyi +2220 -313
  3. warp/_src/__init__.py +14 -0
  4. warp/_src/autograd.py +1075 -0
  5. warp/_src/build.py +618 -0
  6. warp/_src/build_dll.py +640 -0
  7. warp/{builtins.py → _src/builtins.py} +1497 -226
  8. warp/_src/codegen.py +4359 -0
  9. warp/{config.py → _src/config.py} +178 -169
  10. warp/_src/constants.py +57 -0
  11. warp/_src/context.py +8294 -0
  12. warp/_src/dlpack.py +462 -0
  13. warp/_src/fabric.py +355 -0
  14. warp/_src/fem/__init__.py +14 -0
  15. warp/_src/fem/adaptivity.py +508 -0
  16. warp/_src/fem/cache.py +687 -0
  17. warp/_src/fem/dirichlet.py +188 -0
  18. warp/{fem → _src/fem}/domain.py +40 -30
  19. warp/_src/fem/field/__init__.py +131 -0
  20. warp/_src/fem/field/field.py +701 -0
  21. warp/{fem → _src/fem}/field/nodal_field.py +30 -15
  22. warp/{fem → _src/fem}/field/restriction.py +1 -1
  23. warp/{fem → _src/fem}/field/virtual.py +53 -27
  24. warp/_src/fem/geometry/__init__.py +32 -0
  25. warp/{fem → _src/fem}/geometry/adaptive_nanogrid.py +77 -163
  26. warp/_src/fem/geometry/closest_point.py +97 -0
  27. warp/{fem → _src/fem}/geometry/deformed_geometry.py +14 -22
  28. warp/{fem → _src/fem}/geometry/element.py +32 -10
  29. warp/{fem → _src/fem}/geometry/geometry.py +48 -20
  30. warp/{fem → _src/fem}/geometry/grid_2d.py +12 -23
  31. warp/{fem → _src/fem}/geometry/grid_3d.py +12 -23
  32. warp/{fem → _src/fem}/geometry/hexmesh.py +40 -63
  33. warp/{fem → _src/fem}/geometry/nanogrid.py +255 -248
  34. warp/{fem → _src/fem}/geometry/partition.py +121 -63
  35. warp/{fem → _src/fem}/geometry/quadmesh.py +26 -45
  36. warp/{fem → _src/fem}/geometry/tetmesh.py +40 -63
  37. warp/{fem → _src/fem}/geometry/trimesh.py +26 -45
  38. warp/{fem → _src/fem}/integrate.py +164 -158
  39. warp/_src/fem/linalg.py +383 -0
  40. warp/_src/fem/operator.py +396 -0
  41. warp/_src/fem/polynomial.py +229 -0
  42. warp/{fem → _src/fem}/quadrature/pic_quadrature.py +15 -20
  43. warp/{fem → _src/fem}/quadrature/quadrature.py +95 -47
  44. warp/_src/fem/space/__init__.py +248 -0
  45. warp/{fem → _src/fem}/space/basis_function_space.py +20 -11
  46. warp/_src/fem/space/basis_space.py +679 -0
  47. warp/{fem → _src/fem}/space/dof_mapper.py +3 -3
  48. warp/{fem → _src/fem}/space/function_space.py +14 -13
  49. warp/{fem → _src/fem}/space/grid_2d_function_space.py +4 -7
  50. warp/{fem → _src/fem}/space/grid_3d_function_space.py +4 -4
  51. warp/{fem → _src/fem}/space/hexmesh_function_space.py +4 -10
  52. warp/{fem → _src/fem}/space/nanogrid_function_space.py +3 -9
  53. warp/{fem → _src/fem}/space/partition.py +117 -60
  54. warp/{fem → _src/fem}/space/quadmesh_function_space.py +4 -10
  55. warp/{fem → _src/fem}/space/restriction.py +66 -33
  56. warp/_src/fem/space/shape/__init__.py +152 -0
  57. warp/{fem → _src/fem}/space/shape/cube_shape_function.py +9 -9
  58. warp/{fem → _src/fem}/space/shape/shape_function.py +8 -9
  59. warp/{fem → _src/fem}/space/shape/square_shape_function.py +6 -6
  60. warp/{fem → _src/fem}/space/shape/tet_shape_function.py +3 -3
  61. warp/{fem → _src/fem}/space/shape/triangle_shape_function.py +3 -3
  62. warp/{fem → _src/fem}/space/tetmesh_function_space.py +3 -9
  63. warp/_src/fem/space/topology.py +459 -0
  64. warp/{fem → _src/fem}/space/trimesh_function_space.py +3 -9
  65. warp/_src/fem/types.py +112 -0
  66. warp/_src/fem/utils.py +486 -0
  67. warp/_src/jax.py +186 -0
  68. warp/_src/jax_experimental/__init__.py +14 -0
  69. warp/_src/jax_experimental/custom_call.py +387 -0
  70. warp/_src/jax_experimental/ffi.py +1284 -0
  71. warp/_src/jax_experimental/xla_ffi.py +656 -0
  72. warp/_src/marching_cubes.py +708 -0
  73. warp/_src/math.py +414 -0
  74. warp/_src/optim/__init__.py +14 -0
  75. warp/_src/optim/adam.py +163 -0
  76. warp/_src/optim/linear.py +1606 -0
  77. warp/_src/optim/sgd.py +112 -0
  78. warp/_src/paddle.py +406 -0
  79. warp/_src/render/__init__.py +14 -0
  80. warp/_src/render/imgui_manager.py +289 -0
  81. warp/_src/render/render_opengl.py +3636 -0
  82. warp/_src/render/render_usd.py +937 -0
  83. warp/_src/render/utils.py +160 -0
  84. warp/_src/sparse.py +2716 -0
  85. warp/_src/tape.py +1206 -0
  86. warp/{thirdparty → _src/thirdparty}/unittest_parallel.py +9 -2
  87. warp/_src/torch.py +391 -0
  88. warp/_src/types.py +5870 -0
  89. warp/_src/utils.py +1693 -0
  90. warp/autograd.py +12 -1054
  91. warp/bin/warp-clang.dll +0 -0
  92. warp/bin/warp.dll +0 -0
  93. warp/build.py +8 -588
  94. warp/build_dll.py +6 -471
  95. warp/codegen.py +6 -4246
  96. warp/constants.py +6 -39
  97. warp/context.py +12 -7851
  98. warp/dlpack.py +6 -444
  99. warp/examples/distributed/example_jacobi_mpi.py +4 -5
  100. warp/examples/fem/example_adaptive_grid.py +1 -1
  101. warp/examples/fem/example_apic_fluid.py +1 -1
  102. warp/examples/fem/example_burgers.py +8 -8
  103. warp/examples/fem/example_diffusion.py +1 -1
  104. warp/examples/fem/example_distortion_energy.py +1 -1
  105. warp/examples/fem/example_mixed_elasticity.py +2 -2
  106. warp/examples/fem/example_navier_stokes.py +1 -1
  107. warp/examples/fem/example_nonconforming_contact.py +7 -7
  108. warp/examples/fem/example_stokes.py +1 -1
  109. warp/examples/fem/example_stokes_transfer.py +1 -1
  110. warp/examples/fem/utils.py +2 -2
  111. warp/examples/interop/example_jax_callable.py +1 -1
  112. warp/examples/interop/example_jax_ffi_callback.py +1 -1
  113. warp/examples/interop/example_jax_kernel.py +3 -2
  114. warp/examples/tile/example_tile_mcgp.py +191 -0
  115. warp/fabric.py +6 -337
  116. warp/fem/__init__.py +159 -97
  117. warp/fem/adaptivity.py +7 -489
  118. warp/fem/cache.py +9 -648
  119. warp/fem/dirichlet.py +6 -184
  120. warp/fem/field/__init__.py +8 -109
  121. warp/fem/field/field.py +7 -652
  122. warp/fem/geometry/__init__.py +7 -18
  123. warp/fem/geometry/closest_point.py +11 -77
  124. warp/fem/linalg.py +18 -366
  125. warp/fem/operator.py +11 -369
  126. warp/fem/polynomial.py +9 -209
  127. warp/fem/space/__init__.py +5 -211
  128. warp/fem/space/basis_space.py +6 -662
  129. warp/fem/space/shape/__init__.py +41 -118
  130. warp/fem/space/topology.py +6 -437
  131. warp/fem/types.py +6 -81
  132. warp/fem/utils.py +11 -444
  133. warp/jax.py +8 -165
  134. warp/jax_experimental/__init__.py +14 -1
  135. warp/jax_experimental/custom_call.py +8 -342
  136. warp/jax_experimental/ffi.py +17 -853
  137. warp/jax_experimental/xla_ffi.py +5 -596
  138. warp/marching_cubes.py +5 -689
  139. warp/math.py +16 -393
  140. warp/native/array.h +385 -37
  141. warp/native/builtin.h +316 -39
  142. warp/native/bvh.cpp +43 -9
  143. warp/native/bvh.cu +62 -27
  144. warp/native/bvh.h +310 -309
  145. warp/native/clang/clang.cpp +102 -97
  146. warp/native/coloring.cpp +0 -1
  147. warp/native/crt.h +208 -0
  148. warp/native/exports.h +156 -0
  149. warp/native/hashgrid.cu +2 -0
  150. warp/native/intersect.h +24 -1
  151. warp/native/intersect_tri.h +44 -35
  152. warp/native/mat.h +1456 -276
  153. warp/native/mesh.cpp +4 -4
  154. warp/native/mesh.cu +4 -2
  155. warp/native/mesh.h +176 -61
  156. warp/native/quat.h +0 -52
  157. warp/native/scan.cu +2 -0
  158. warp/native/sort.cu +22 -13
  159. warp/native/sort.h +2 -0
  160. warp/native/sparse.cu +7 -3
  161. warp/native/spatial.h +12 -0
  162. warp/native/tile.h +837 -70
  163. warp/native/tile_radix_sort.h +1 -1
  164. warp/native/tile_reduce.h +394 -46
  165. warp/native/tile_scan.h +4 -4
  166. warp/native/vec.h +469 -53
  167. warp/native/version.h +23 -0
  168. warp/native/volume.cpp +1 -1
  169. warp/native/volume.cu +1 -0
  170. warp/native/volume.h +1 -1
  171. warp/native/volume_builder.cu +2 -0
  172. warp/native/warp.cpp +60 -32
  173. warp/native/warp.cu +313 -201
  174. warp/native/warp.h +14 -11
  175. warp/optim/__init__.py +6 -3
  176. warp/optim/adam.py +6 -145
  177. warp/optim/linear.py +14 -1585
  178. warp/optim/sgd.py +6 -94
  179. warp/paddle.py +6 -388
  180. warp/render/__init__.py +8 -4
  181. warp/render/imgui_manager.py +7 -267
  182. warp/render/render_opengl.py +6 -3616
  183. warp/render/render_usd.py +6 -918
  184. warp/render/utils.py +6 -142
  185. warp/sparse.py +37 -2563
  186. warp/tape.py +6 -1188
  187. warp/tests/__main__.py +1 -1
  188. warp/tests/cuda/test_async.py +4 -4
  189. warp/tests/cuda/test_conditional_captures.py +1 -1
  190. warp/tests/cuda/test_multigpu.py +1 -1
  191. warp/tests/cuda/test_streams.py +58 -1
  192. warp/tests/geometry/test_bvh.py +157 -22
  193. warp/tests/geometry/test_hash_grid.py +38 -0
  194. warp/tests/geometry/test_marching_cubes.py +0 -1
  195. warp/tests/geometry/test_mesh.py +5 -3
  196. warp/tests/geometry/test_mesh_query_aabb.py +5 -12
  197. warp/tests/geometry/test_mesh_query_point.py +5 -2
  198. warp/tests/geometry/test_mesh_query_ray.py +15 -3
  199. warp/tests/geometry/test_volume_write.py +5 -5
  200. warp/tests/interop/test_dlpack.py +14 -14
  201. warp/tests/interop/test_jax.py +1382 -79
  202. warp/tests/interop/test_paddle.py +1 -1
  203. warp/tests/test_adam.py +0 -1
  204. warp/tests/test_arithmetic.py +9 -9
  205. warp/tests/test_array.py +529 -100
  206. warp/tests/test_array_reduce.py +3 -3
  207. warp/tests/test_atomic.py +12 -8
  208. warp/tests/test_atomic_bitwise.py +209 -0
  209. warp/tests/test_atomic_cas.py +4 -4
  210. warp/tests/test_bool.py +2 -2
  211. warp/tests/test_builtins_resolution.py +5 -571
  212. warp/tests/test_codegen.py +34 -15
  213. warp/tests/test_conditional.py +1 -1
  214. warp/tests/test_context.py +6 -6
  215. warp/tests/test_copy.py +242 -161
  216. warp/tests/test_ctypes.py +3 -3
  217. warp/tests/test_devices.py +24 -2
  218. warp/tests/test_examples.py +16 -84
  219. warp/tests/test_fabricarray.py +35 -35
  220. warp/tests/test_fast_math.py +0 -2
  221. warp/tests/test_fem.py +60 -14
  222. warp/tests/test_fixedarray.py +3 -3
  223. warp/tests/test_func.py +8 -5
  224. warp/tests/test_generics.py +1 -1
  225. warp/tests/test_indexedarray.py +24 -24
  226. warp/tests/test_intersect.py +39 -9
  227. warp/tests/test_large.py +1 -1
  228. warp/tests/test_lerp.py +3 -1
  229. warp/tests/test_linear_solvers.py +1 -1
  230. warp/tests/test_map.py +49 -4
  231. warp/tests/test_mat.py +52 -62
  232. warp/tests/test_mat_constructors.py +4 -5
  233. warp/tests/test_mat_lite.py +1 -1
  234. warp/tests/test_mat_scalar_ops.py +121 -121
  235. warp/tests/test_math.py +34 -0
  236. warp/tests/test_module_aot.py +4 -4
  237. warp/tests/test_modules_lite.py +28 -2
  238. warp/tests/test_print.py +11 -11
  239. warp/tests/test_quat.py +93 -58
  240. warp/tests/test_runlength_encode.py +1 -1
  241. warp/tests/test_scalar_ops.py +38 -10
  242. warp/tests/test_smoothstep.py +1 -1
  243. warp/tests/test_sparse.py +126 -15
  244. warp/tests/test_spatial.py +105 -87
  245. warp/tests/test_special_values.py +6 -6
  246. warp/tests/test_static.py +7 -7
  247. warp/tests/test_struct.py +13 -2
  248. warp/tests/test_triangle_closest_point.py +48 -1
  249. warp/tests/test_tuple.py +96 -0
  250. warp/tests/test_types.py +82 -9
  251. warp/tests/test_utils.py +52 -52
  252. warp/tests/test_vec.py +29 -29
  253. warp/tests/test_vec_constructors.py +5 -5
  254. warp/tests/test_vec_scalar_ops.py +97 -97
  255. warp/tests/test_version.py +75 -0
  256. warp/tests/tile/test_tile.py +239 -0
  257. warp/tests/tile/test_tile_atomic_bitwise.py +403 -0
  258. warp/tests/tile/test_tile_cholesky.py +7 -4
  259. warp/tests/tile/test_tile_load.py +26 -2
  260. warp/tests/tile/test_tile_mathdx.py +3 -3
  261. warp/tests/tile/test_tile_matmul.py +1 -1
  262. warp/tests/tile/test_tile_mlp.py +2 -4
  263. warp/tests/tile/test_tile_reduce.py +214 -13
  264. warp/tests/unittest_suites.py +6 -14
  265. warp/tests/unittest_utils.py +10 -9
  266. warp/tests/walkthrough_debug.py +3 -1
  267. warp/torch.py +6 -373
  268. warp/types.py +29 -5750
  269. warp/utils.py +10 -1659
  270. {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/METADATA +47 -103
  271. warp_lang-1.10.0rc2.dist-info/RECORD +468 -0
  272. warp_lang-1.10.0rc2.dist-info/licenses/licenses/Gaia-LICENSE.txt +6 -0
  273. warp_lang-1.10.0rc2.dist-info/licenses/licenses/appdirs-LICENSE.txt +22 -0
  274. warp_lang-1.10.0rc2.dist-info/licenses/licenses/asset_pixel_jpg-LICENSE.txt +3 -0
  275. warp_lang-1.10.0rc2.dist-info/licenses/licenses/cuda-LICENSE.txt +1582 -0
  276. warp_lang-1.10.0rc2.dist-info/licenses/licenses/dlpack-LICENSE.txt +201 -0
  277. warp_lang-1.10.0rc2.dist-info/licenses/licenses/fp16-LICENSE.txt +28 -0
  278. warp_lang-1.10.0rc2.dist-info/licenses/licenses/libmathdx-LICENSE.txt +220 -0
  279. warp_lang-1.10.0rc2.dist-info/licenses/licenses/llvm-LICENSE.txt +279 -0
  280. warp_lang-1.10.0rc2.dist-info/licenses/licenses/moller-LICENSE.txt +16 -0
  281. warp_lang-1.10.0rc2.dist-info/licenses/licenses/nanovdb-LICENSE.txt +2 -0
  282. warp_lang-1.10.0rc2.dist-info/licenses/licenses/nvrtc-LICENSE.txt +1592 -0
  283. warp_lang-1.10.0rc2.dist-info/licenses/licenses/svd-LICENSE.txt +23 -0
  284. warp_lang-1.10.0rc2.dist-info/licenses/licenses/unittest_parallel-LICENSE.txt +21 -0
  285. warp_lang-1.10.0rc2.dist-info/licenses/licenses/usd-LICENSE.txt +213 -0
  286. warp_lang-1.10.0rc2.dist-info/licenses/licenses/windingnumber-LICENSE.txt +21 -0
  287. warp/examples/assets/cartpole.urdf +0 -110
  288. warp/examples/assets/crazyflie.usd +0 -0
  289. warp/examples/assets/nv_ant.xml +0 -92
  290. warp/examples/assets/nv_humanoid.xml +0 -183
  291. warp/examples/assets/quadruped.urdf +0 -268
  292. warp/examples/optim/example_bounce.py +0 -266
  293. warp/examples/optim/example_cloth_throw.py +0 -228
  294. warp/examples/optim/example_drone.py +0 -870
  295. warp/examples/optim/example_inverse_kinematics.py +0 -182
  296. warp/examples/optim/example_inverse_kinematics_torch.py +0 -191
  297. warp/examples/optim/example_softbody_properties.py +0 -400
  298. warp/examples/optim/example_spring_cage.py +0 -245
  299. warp/examples/optim/example_trajectory.py +0 -227
  300. warp/examples/sim/example_cartpole.py +0 -143
  301. warp/examples/sim/example_cloth.py +0 -225
  302. warp/examples/sim/example_cloth_self_contact.py +0 -316
  303. warp/examples/sim/example_granular.py +0 -130
  304. warp/examples/sim/example_granular_collision_sdf.py +0 -202
  305. warp/examples/sim/example_jacobian_ik.py +0 -244
  306. warp/examples/sim/example_particle_chain.py +0 -124
  307. warp/examples/sim/example_quadruped.py +0 -203
  308. warp/examples/sim/example_rigid_chain.py +0 -203
  309. warp/examples/sim/example_rigid_contact.py +0 -195
  310. warp/examples/sim/example_rigid_force.py +0 -133
  311. warp/examples/sim/example_rigid_gyroscopic.py +0 -115
  312. warp/examples/sim/example_rigid_soft_contact.py +0 -140
  313. warp/examples/sim/example_soft_body.py +0 -196
  314. warp/examples/tile/example_tile_walker.py +0 -327
  315. warp/sim/__init__.py +0 -74
  316. warp/sim/articulation.py +0 -793
  317. warp/sim/collide.py +0 -2570
  318. warp/sim/graph_coloring.py +0 -307
  319. warp/sim/import_mjcf.py +0 -791
  320. warp/sim/import_snu.py +0 -227
  321. warp/sim/import_urdf.py +0 -579
  322. warp/sim/import_usd.py +0 -898
  323. warp/sim/inertia.py +0 -357
  324. warp/sim/integrator.py +0 -245
  325. warp/sim/integrator_euler.py +0 -2000
  326. warp/sim/integrator_featherstone.py +0 -2101
  327. warp/sim/integrator_vbd.py +0 -2487
  328. warp/sim/integrator_xpbd.py +0 -3295
  329. warp/sim/model.py +0 -4821
  330. warp/sim/particles.py +0 -121
  331. warp/sim/render.py +0 -431
  332. warp/sim/utils.py +0 -431
  333. warp/tests/sim/disabled_kinematics.py +0 -244
  334. warp/tests/sim/test_cloth.py +0 -863
  335. warp/tests/sim/test_collision.py +0 -743
  336. warp/tests/sim/test_coloring.py +0 -347
  337. warp/tests/sim/test_inertia.py +0 -161
  338. warp/tests/sim/test_model.py +0 -226
  339. warp/tests/sim/test_sim_grad.py +0 -287
  340. warp/tests/sim/test_sim_grad_bounce_linear.py +0 -212
  341. warp/tests/sim/test_sim_kinematics.py +0 -98
  342. warp/thirdparty/__init__.py +0 -0
  343. warp_lang-1.9.0.dist-info/RECORD +0 -456
  344. /warp/{fem → _src/fem}/quadrature/__init__.py +0 -0
  345. /warp/{tests/sim → _src/thirdparty}/__init__.py +0 -0
  346. /warp/{thirdparty → _src/thirdparty}/appdirs.py +0 -0
  347. /warp/{thirdparty → _src/thirdparty}/dlpack.py +0 -0
  348. {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/WHEEL +0 -0
  349. {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/licenses/LICENSE.md +0 -0
  350. {warp_lang-1.9.0.dist-info → warp_lang-1.10.0rc2.dist-info}/top_level.txt +0 -0
@@ -268,9 +268,9 @@ def test_indexedarray_mixed(test, device):
268
268
  wp.launch(kernel_3d, dim=iarr.shape, inputs=[iarr, expected_arr], device=device)
269
269
 
270
270
 
271
- vec2i = wp.types.vector(length=2, dtype=wp.int32)
272
- vec3i = wp.types.vector(length=3, dtype=wp.int32)
273
- vec4i = wp.types.vector(length=4, dtype=wp.int32)
271
+ vec2i = wp._src.types.vector(length=2, dtype=wp.int32)
272
+ vec3i = wp._src.types.vector(length=3, dtype=wp.int32)
273
+ vec4i = wp._src.types.vector(length=4, dtype=wp.int32)
274
274
 
275
275
 
276
276
  @wp.kernel
@@ -571,13 +571,13 @@ def test_indexedarray_empty(test, device):
571
571
  data_shape = (1,) * ndim
572
572
  dtype_shape = ()
573
573
 
574
- if wptype in wp.types.scalar_types:
574
+ if wptype in wp._src.types.scalar_types:
575
575
  # scalar, vector, or matrix
576
576
  if ncols > 0:
577
577
  if nrows > 0:
578
- wptype = wp.types.matrix((nrows, ncols), wptype)
578
+ wptype = wp._src.types.matrix((nrows, ncols), wptype)
579
579
  else:
580
- wptype = wp.types.vector(ncols, wptype)
580
+ wptype = wp._src.types.vector(ncols, wptype)
581
581
  dtype_shape = wptype._shape_
582
582
  fill_value = wptype(42)
583
583
  else:
@@ -620,7 +620,7 @@ def test_indexedarray_empty(test, device):
620
620
 
621
621
  for ndim in range(1, 5):
622
622
  # test with scalars, vectors, and matrices
623
- for nptype, wptype in wp.types.np_dtype_to_warp_type.items():
623
+ for nptype, wptype in wp._src.types.np_dtype_to_warp_type.items():
624
624
  # scalars
625
625
  test_empty_ops(ndim, 0, 0, wptype, nptype)
626
626
 
@@ -643,7 +643,7 @@ def test_indexedarray_empty(test, device):
643
643
  def test_indexedarray_fill_scalar(test, device):
644
644
  dim_x = 4
645
645
 
646
- for nptype, wptype in wp.types.np_dtype_to_warp_type.items():
646
+ for nptype, wptype in wp._src.types.np_dtype_to_warp_type.items():
647
647
  data1 = wp.zeros(dim_x, dtype=wptype, device=device)
648
648
  data2 = wp.zeros((dim_x, dim_x), dtype=wptype, device=device)
649
649
  data3 = wp.zeros((dim_x, dim_x, dim_x), dtype=wptype, device=device)
@@ -684,7 +684,7 @@ def test_indexedarray_fill_scalar(test, device):
684
684
  assert_np_equal(a3.numpy(), np.zeros(a3.shape, dtype=nptype))
685
685
  assert_np_equal(a4.numpy(), np.zeros(a4.shape, dtype=nptype))
686
686
 
687
- if wptype in wp.types.float_types:
687
+ if wptype in wp._src.types.float_types:
688
688
  # fill with float value
689
689
  fill_value = 13.37
690
690
 
@@ -717,13 +717,13 @@ def test_indexedarray_fill_vector(test, device):
717
717
 
718
718
  dim_x = 4
719
719
 
720
- for nptype, wptype in wp.types.np_dtype_to_warp_type.items():
720
+ for nptype, wptype in wp._src.types.np_dtype_to_warp_type.items():
721
721
  # vector types
722
722
  vector_types = [
723
- wp.types.vector(2, wptype),
724
- wp.types.vector(3, wptype),
725
- wp.types.vector(4, wptype),
726
- wp.types.vector(5, wptype),
723
+ wp._src.types.vector(2, wptype),
724
+ wp._src.types.vector(3, wptype),
725
+ wp._src.types.vector(4, wptype),
726
+ wp._src.types.vector(5, wptype),
727
727
  ]
728
728
 
729
729
  for vec_type in vector_types:
@@ -825,7 +825,7 @@ def test_indexedarray_fill_vector(test, device):
825
825
  assert_np_equal(a3.numpy(), expected3)
826
826
  assert_np_equal(a4.numpy(), expected4)
827
827
 
828
- if wptype in wp.types.float_types:
828
+ if wptype in wp._src.types.float_types:
829
829
  # fill with float scalar
830
830
  fill_value = 13.37
831
831
 
@@ -863,19 +863,19 @@ def test_indexedarray_fill_matrix(test, device):
863
863
 
864
864
  dim_x = 4
865
865
 
866
- for nptype, wptype in wp.types.np_dtype_to_warp_type.items():
866
+ for nptype, wptype in wp._src.types.np_dtype_to_warp_type.items():
867
867
  # matrix types
868
868
  matrix_types = [
869
869
  # square matrices
870
- wp.types.matrix((2, 2), wptype),
871
- wp.types.matrix((3, 3), wptype),
872
- wp.types.matrix((4, 4), wptype),
873
- wp.types.matrix((5, 5), wptype),
870
+ wp._src.types.matrix((2, 2), wptype),
871
+ wp._src.types.matrix((3, 3), wptype),
872
+ wp._src.types.matrix((4, 4), wptype),
873
+ wp._src.types.matrix((5, 5), wptype),
874
874
  # non-square matrices
875
- wp.types.matrix((2, 3), wptype),
876
- wp.types.matrix((3, 2), wptype),
877
- wp.types.matrix((3, 4), wptype),
878
- wp.types.matrix((4, 3), wptype),
875
+ wp._src.types.matrix((2, 3), wptype),
876
+ wp._src.types.matrix((3, 2), wptype),
877
+ wp._src.types.matrix((3, 4), wptype),
878
+ wp._src.types.matrix((4, 3), wptype),
879
879
  ]
880
880
 
881
881
  for mat_type in matrix_types:
@@ -23,11 +23,28 @@ from warp.tests.unittest_utils import *
23
23
 
24
24
  @wp.kernel
25
25
  def intersect_tri(
26
- v0: wp.vec3, v1: wp.vec3, v2: wp.vec3, u0: wp.vec3, u1: wp.vec3, u2: wp.vec3, result: wp.array(dtype=int)
26
+ v0: wp.vec3,
27
+ v1: wp.vec3,
28
+ v2: wp.vec3,
29
+ u0: wp.vec3,
30
+ u1: wp.vec3,
31
+ u2: wp.vec3,
32
+ result_single_precision: wp.array(dtype=int),
33
+ result_double_precision: wp.array(dtype=int),
27
34
  ):
28
35
  tid = wp.tid()
29
36
 
30
- result[0] = wp.intersect_tri_tri(v0, v1, v2, u0, u1, u2)
37
+ result_single_precision[0] = wp.intersect_tri_tri(v0, v1, v2, u0, u1, u2)
38
+
39
+ u0_d = wp.vec3d(u0)
40
+ u1_d = wp.vec3d(u1)
41
+ u2_d = wp.vec3d(u2)
42
+
43
+ v0_d = wp.vec3d(v0)
44
+ v1_d = wp.vec3d(v1)
45
+ v2_d = wp.vec3d(v2)
46
+
47
+ result_double_precision[0] = wp.intersect_tri_tri(v0_d, v1_d, v2_d, u0_d, u1_d, u2_d)
31
48
 
32
49
 
33
50
  def test_intersect_tri(test, device):
@@ -49,13 +66,26 @@ def test_intersect_tri(test, device):
49
66
  wp.vec3(-0.5, 0.5, 0.0),
50
67
  ]
51
68
 
52
- result = wp.zeros(1, dtype=int, device=device)
53
-
54
- wp.launch(intersect_tri, dim=1, inputs=[*points_intersect, result], device=device)
55
- assert_np_equal(result.numpy(), np.array([1]))
56
-
57
- wp.launch(intersect_tri, dim=1, inputs=[*points_separated, result], device=device)
58
- assert_np_equal(result.numpy(), np.array([0]))
69
+ result_single_precision = wp.zeros(1, dtype=int, device=device)
70
+ result_double_precision = wp.zeros(1, dtype=int, device=device)
71
+
72
+ wp.launch(
73
+ intersect_tri,
74
+ dim=1,
75
+ inputs=[*points_intersect, result_single_precision, result_double_precision],
76
+ device=device,
77
+ )
78
+ assert_np_equal(result_single_precision.numpy(), np.array([1]))
79
+ assert_np_equal(result_double_precision.numpy(), np.array([1]))
80
+
81
+ wp.launch(
82
+ intersect_tri,
83
+ dim=1,
84
+ inputs=[*points_separated, result_single_precision, result_double_precision],
85
+ device=device,
86
+ )
87
+ assert_np_equal(result_single_precision.numpy(), np.array([0]))
88
+ assert_np_equal(result_double_precision.numpy(), np.array([0]))
59
89
 
60
90
 
61
91
  devices = get_test_devices()
warp/tests/test_large.py CHANGED
@@ -93,7 +93,7 @@ def test_large_arrays_slow(test, device):
93
93
  dim_x = math.ceil(total_elements ** (1 / total_dims))
94
94
  shape_tuple = tuple([dim_x] * total_dims)
95
95
 
96
- for wptype in wp.types.scalar_types:
96
+ for wptype in wp._src.types.scalar_types:
97
97
  a1 = wp.zeros(shape_tuple, dtype=wptype, device=device)
98
98
  assert_np_equal(a1.numpy(), np.zeros_like(a1.numpy()))
99
99
 
warp/tests/test_lerp.py CHANGED
@@ -119,7 +119,9 @@ def test_lerp(test, device):
119
119
  a = wp.array([test_data.a], dtype=data_type, device=device, requires_grad=True)
120
120
  b = wp.array([test_data.b], dtype=data_type, device=device, requires_grad=True)
121
121
  t = wp.array([test_data.t], dtype=float, device=device, requires_grad=True)
122
- out = wp.array([0] * wp.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True)
122
+ out = wp.array(
123
+ [0] * wp._src.types.type_size(data_type), dtype=data_type, device=device, requires_grad=True
124
+ )
123
125
 
124
126
  with wp.Tape() as tape:
125
127
  wp.launch(kernel, dim=1, inputs=[a, b, t, out], device=device)
@@ -18,7 +18,7 @@ import unittest
18
18
  import numpy as np
19
19
 
20
20
  import warp as wp
21
- from warp.context import assert_conditional_graph_support
21
+ from warp._src.context import assert_conditional_graph_support
22
22
  from warp.optim.linear import bicgstab, cg, cr, gmres, preconditioner
23
23
  from warp.tests.unittest_utils import *
24
24
 
warp/tests/test_map.py CHANGED
@@ -18,7 +18,7 @@ import unittest
18
18
  import numpy as np
19
19
 
20
20
  import warp as wp
21
- import warp.context
21
+ import warp._src.context
22
22
  import warp.tests.aux_test_name_clash1 as name_clash_module_1
23
23
  import warp.tests.aux_test_name_clash2 as name_clash_module_2
24
24
  from warp.tests.unittest_utils import add_function_test, assert_np_equal, get_cuda_test_devices, get_test_devices
@@ -101,6 +101,37 @@ def test_lambda(test, device):
101
101
  expected = np.array(np.arange(10) * local_var, dtype=np.float32)
102
102
  assert_np_equal(out2.numpy(), expected)
103
103
 
104
+ # inline variable construction which uses parentheses
105
+ out = wp.map(lambda a: wp.length(wp.vec3(a, a + 1.0, a + 2.0)), a1)
106
+ expected = np.array([np.sqrt(i * i + (i + 1) * (i + 1) + (i + 2) * (i + 2)) for i in range(10)], dtype=np.float32)
107
+ assert_np_equal(out.numpy(), expected)
108
+
109
+ # multi-line lambda
110
+ # fmt: off
111
+ out = wp.map(lambda a: (\
112
+ a + 1.0 + 2.0 + 3.0 + 4.0 + 5.0 \
113
+ + 6.0 + 7.0 + 8.0 + 9.0 + 10.0\
114
+ ), a1)
115
+ # fmt: on
116
+ expected = np.array([np.sum(np.arange(1, 11)) + i for i in range(10)], dtype=np.float32)
117
+ assert_np_equal(out.numpy(), expected)
118
+
119
+ # complicated expression with parentheses and line continuation
120
+ # fmt: off
121
+ out = wp.map(lambda a: (
122
+ a + 1.0 + ((
123
+ + 6.0 + 7.0 + 8.0) + 9.0 + (10.0
124
+ # an inline comment to make sure it is ignored
125
+ + 0.0) \
126
+ + wp.clamp(a, -0.5, 0.5) \
127
+ + (wp.sin(a) + wp.cos(a))
128
+ )), a1)
129
+ # fmt: on
130
+ expected = np.array(
131
+ [41.0 + i + np.clip(i, -0.5, 0.5) + (np.sin(i) + np.cos(i)) for i in range(10)], dtype=np.float32
132
+ )
133
+ assert_np_equal(out.numpy(), expected, tol=1e-6)
134
+
104
135
 
105
136
  def test_multiple_return_values(test, device):
106
137
  @wp.func
@@ -152,7 +183,7 @@ def test_custom_struct_operator(test, device):
152
183
 
153
184
 
154
185
  def test_name_clash(test, device):
155
- vec5 = wp.types.vector(5, dtype=wp.float32)
186
+ vec5 = wp._src.types.vector(5, dtype=wp.float32)
156
187
 
157
188
  @wp.func
158
189
  def name_clash_structs_args_func(
@@ -415,8 +446,8 @@ def test_kernel_creation(test, device):
415
446
 
416
447
 
417
448
  def test_graph_capture(test, device):
418
- assert warp.context.runtime.driver_version is not None
419
- if warp.context.runtime.driver_version < (12, 3):
449
+ assert warp._src.context.runtime.driver_version is not None
450
+ if warp._src.context.runtime.driver_version < (12, 3):
420
451
  test.skipTest("Module loading during CUDA graph capture is not supported on driver versions < 12.3")
421
452
  a_np = np.arange(10, dtype=np.float32)
422
453
  b_np = np.arange(1, 11, dtype=np.float32)
@@ -476,6 +507,20 @@ add_function_test(TestMap, "test_graph_capture", test_graph_capture, devices=cud
476
507
  add_function_test(TestMap, "test_renamed_warp_module", test_renamed_warp_module, devices=devices)
477
508
 
478
509
 
510
+ class TestMapDebug(unittest.TestCase):
511
+ @classmethod
512
+ def setUpClass(cls):
513
+ cls._saved_mode = wp.config.mode
514
+ wp.config.mode = "debug"
515
+
516
+ @classmethod
517
+ def tearDownClass(cls):
518
+ wp.config.mode = cls._saved_mode
519
+
520
+
521
+ add_function_test(TestMapDebug, "test_mixed_inputs", test_mixed_inputs, devices=devices)
522
+ add_function_test(TestMapDebug, "test_kernel_creation", test_kernel_creation, devices=devices)
523
+
479
524
  if __name__ == "__main__":
480
525
  wp.clear_kernel_cache()
481
526
  unittest.main(verbosity=2)
warp/tests/test_mat.py CHANGED
@@ -67,17 +67,17 @@ def test_shape_mismatch(test, device):
67
67
 
68
68
 
69
69
  def test_py_arithmetic_ops(test, device, dtype):
70
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
70
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
71
71
 
72
72
  def make_mat(*args):
73
- if wptype in wp.types.int_types:
73
+ if wptype in wp._src.types.int_types:
74
74
  # Cast to the correct integer type to simulate wrapping.
75
75
  return tuple(tuple(wptype._type_(x).value for x in row) for row in args)
76
76
 
77
77
  return args
78
78
 
79
79
  def make_vec(*args):
80
- if wptype in wp.types.int_types:
80
+ if wptype in wp._src.types.int_types:
81
81
  # Cast to the correct integer type to simulate wrapping.
82
82
  return tuple(wptype._type_(x).value for x in args)
83
83
 
@@ -116,11 +116,11 @@ def test_negation(test, device, dtype, register_kernels=False):
116
116
  np.float64: 1.0e-8,
117
117
  }.get(dtype, 0)
118
118
 
119
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
120
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
121
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
122
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
123
- mat55 = wp.types.matrix(shape=(5, 5), dtype=wptype)
119
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
120
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
121
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
122
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
123
+ mat55 = wp._src.types.matrix(shape=(5, 5), dtype=wptype)
124
124
 
125
125
  output_select_kernel = get_select_kernel(wptype)
126
126
 
@@ -205,12 +205,12 @@ def test_matmul(test, device, dtype, register_kernels=False):
205
205
  np.float64: 1.0e-12,
206
206
  }.get(dtype, 0)
207
207
 
208
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
209
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
210
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
211
- mat23 = wp.types.matrix(shape=(2, 3), dtype=wptype)
212
- mat32 = wp.types.matrix(shape=(3, 2), dtype=wptype)
213
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
208
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
209
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
210
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
211
+ mat23 = wp._src.types.matrix(shape=(2, 3), dtype=wptype)
212
+ mat32 = wp._src.types.matrix(shape=(3, 2), dtype=wptype)
213
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
214
214
 
215
215
  output_select_kernel = get_select_kernel(wptype)
216
216
 
@@ -276,11 +276,11 @@ def test_subtraction(test, device, dtype, register_kernels=False):
276
276
  np.float64: 1.0e-8,
277
277
  }.get(dtype, 0)
278
278
 
279
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
280
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
281
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
282
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
283
- mat55 = wp.types.matrix(shape=(5, 5), dtype=wptype)
279
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
280
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
281
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
282
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
283
+ mat55 = wp._src.types.matrix(shape=(5, 5), dtype=wptype)
284
284
 
285
285
  output_select_kernel = get_select_kernel(wptype)
286
286
 
@@ -397,10 +397,10 @@ def test_determinant(test, device, dtype, register_kernels=False):
397
397
  np.float64: 1.0e-8,
398
398
  }.get(dtype, 0)
399
399
 
400
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
401
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
402
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
403
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
400
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
401
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
402
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
403
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
404
404
 
405
405
  def check_mat_det(
406
406
  v2: wp.array(dtype=mat22),
@@ -535,8 +535,8 @@ def test_determinant(test, device, dtype, register_kernels=False):
535
535
  # np.float64: 1.0e-8,
536
536
  # }.get(dtype, 0)
537
537
  #
538
- # wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
539
- # mat55 = wp.types.vector(shape=(5, 5), dtype=wptype)
538
+ # wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
539
+ # mat55 = wp._src.types.vector(shape=(5, 5), dtype=wptype)
540
540
  #
541
541
  # output_select_kernel = get_select_kernel(wptype)
542
542
  #
@@ -590,10 +590,10 @@ def test_inverse(test, device, dtype, register_kernels=False):
590
590
  np.float64: 1.0e-8,
591
591
  }.get(dtype, 0)
592
592
 
593
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
594
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
595
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
596
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
593
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
594
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
595
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
596
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
597
597
 
598
598
  output_select_kernel = get_select_kernel(wptype)
599
599
 
@@ -760,9 +760,9 @@ def test_svd(test, device, dtype, register_kernels=False):
760
760
  np.float64: 1.0e-12,
761
761
  }.get(dtype, 0)
762
762
 
763
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
764
- vec3 = wp.types.vector(length=3, dtype=wptype)
765
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
763
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
764
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
765
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
766
766
 
767
767
  def check_mat_svd(
768
768
  m3: wp.array(dtype=mat33),
@@ -879,9 +879,9 @@ def test_svd_2D(test, device, dtype, register_kernels=False):
879
879
  np.float64: 1.0e-12,
880
880
  }.get(dtype, 0)
881
881
 
882
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
883
- vec2 = wp.types.vector(length=2, dtype=wptype)
884
- mat22 = wp.types.matrix(shape=(2, 2), dtype=wptype)
882
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
883
+ vec2 = wp._src.types.vector(length=2, dtype=wptype)
884
+ mat22 = wp._src.types.matrix(shape=(2, 2), dtype=wptype)
885
885
 
886
886
  def check_mat_svd2(
887
887
  m2: wp.array(dtype=mat22),
@@ -1027,8 +1027,8 @@ def test_qr(test, device, dtype, register_kernels=False):
1027
1027
  np.float64: 1.0e-12,
1028
1028
  }.get(dtype, 0)
1029
1029
 
1030
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1031
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
1030
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1031
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
1032
1032
 
1033
1033
  def check_mat_qr(
1034
1034
  m3: wp.array(dtype=mat33),
@@ -1139,9 +1139,9 @@ def test_eig(test, device, dtype, register_kernels=False):
1139
1139
  np.float64: 1.0e-5,
1140
1140
  }.get(dtype, 0)
1141
1141
 
1142
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1143
- vec3 = wp.types.vector(length=3, dtype=wptype)
1144
- mat33 = wp.types.matrix(shape=(3, 3), dtype=wptype)
1142
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1143
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1144
+ mat33 = wp._src.types.matrix(shape=(3, 3), dtype=wptype)
1145
1145
 
1146
1146
  def check_mat_eig(
1147
1147
  m3: wp.array(dtype=mat33),
@@ -1251,8 +1251,8 @@ def test_skew(test, device, dtype, register_kernels=False):
1251
1251
  np.float64: 1.0e-8,
1252
1252
  }.get(dtype, 0)
1253
1253
 
1254
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1255
- vec3 = wp.types.vector(length=3, dtype=wptype)
1254
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1255
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1256
1256
 
1257
1257
  output_select_kernel = get_select_kernel(wptype)
1258
1258
 
@@ -1283,7 +1283,6 @@ def test_skew(test, device, dtype, register_kernels=False):
1283
1283
 
1284
1284
  # make sure it gives you a cross product matrix:
1285
1285
  crossprodmat = outcomponents.numpy().reshape(3, 3)
1286
- v = np.array([1, 0, 0])
1287
1286
  assert_np_equal(
1288
1287
  np.matmul(crossprodmat, np.array([1, 0, 0])).reshape(-1),
1289
1288
  2 * np.cross(v3.numpy()[0], np.array([1, 0, 0])),
@@ -1353,9 +1352,9 @@ def test_transform_point(test, device, dtype, register_kernels=False):
1353
1352
  np.float64: 1.0e-8,
1354
1353
  }.get(dtype, 0)
1355
1354
 
1356
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1357
- vec3 = wp.types.vector(length=3, dtype=wptype)
1358
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
1355
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1356
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1357
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
1359
1358
 
1360
1359
  output_select_kernel = get_select_kernel(wptype)
1361
1360
 
@@ -1414,9 +1413,9 @@ def test_transform_vector(test, device, dtype, register_kernels=False):
1414
1413
  np.float64: 1.0e-8,
1415
1414
  }.get(dtype, 0)
1416
1415
 
1417
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
1418
- vec3 = wp.types.vector(length=3, dtype=wptype)
1419
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
1416
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
1417
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
1418
+ mat44 = wp._src.types.matrix(shape=(4, 4), dtype=wptype)
1420
1419
 
1421
1420
  output_select_kernel = get_select_kernel(wptype)
1422
1421
 
@@ -1466,22 +1465,13 @@ def test_transform_vector(test, device, dtype, register_kernels=False):
1466
1465
 
1467
1466
 
1468
1467
  @wp.kernel
1469
- def test_matrix_mutation(expected: wp.types.matrix(shape=(10, 3), dtype=float)):
1468
+ def test_matrix_mutation(expected: wp._src.types.matrix(shape=(10, 3), dtype=float)):
1470
1469
  m = wp.matrix(shape=(10, 3), dtype=float)
1471
1470
 
1472
1471
  # test direct element indexing
1473
1472
  m[0, 0] = 1.0
1474
- m[0, 1] = 2.0
1475
- m[0, 2] = 3.0
1476
-
1477
- # The nested indexing (matrix->vector->scalar) below does not
1478
- # currently modify m because m[0] returns row vector by
1479
- # value rather than reference, this is different from NumPy
1480
- # which always returns by ref. Not clear how we can support
1481
- # this as well as auto-diff.
1482
-
1483
- # m[0][1] = 2.0
1484
- # m[0][2] = 3.0
1473
+ m[0][1] = 2.0
1474
+ m[0][2] = 3.0
1485
1475
 
1486
1476
  # test setting rows
1487
1477
  for i in range(1, 10):
@@ -3443,7 +3433,7 @@ class TestMat(unittest.TestCase):
3443
3433
  self.assertSequenceEqual(m, ((0.0, 1.0), (2.0, 3.0)))
3444
3434
 
3445
3435
 
3446
- mat103 = wp.types.matrix(shape=(10, 3), dtype=float)
3436
+ mat103 = wp._src.types.matrix(shape=(10, 3), dtype=float)
3447
3437
  add_kernel_test(
3448
3438
  TestMat,
3449
3439
  test_matrix_mutation,
@@ -419,11 +419,10 @@ def test_quat_constructor(test, device, dtype, register_kernels=False):
419
419
  np.float64: 1.0e-8,
420
420
  }.get(dtype, 0)
421
421
 
422
- wptype = wp.types.np_dtype_to_warp_type[np.dtype(dtype)]
423
- mat44 = wp.types.matrix(shape=(4, 4), dtype=wptype)
424
- vec4 = wp.types.vector(length=4, dtype=wptype)
425
- vec3 = wp.types.vector(length=3, dtype=wptype)
426
- quat = wp.types.quaternion(dtype=wptype)
422
+ wptype = wp._src.types.np_dtype_to_warp_type[np.dtype(dtype)]
423
+ vec4 = wp._src.types.vector(length=4, dtype=wptype)
424
+ vec3 = wp._src.types.vector(length=3, dtype=wptype)
425
+ quat = wp._src.types.quaternion(dtype=wptype)
427
426
 
428
427
  output_select_kernel = get_select_kernel(wptype)
429
428
 
@@ -81,7 +81,7 @@ def test_constructors_default_precision():
81
81
 
82
82
 
83
83
  @wp.kernel
84
- def test_matrix_mutation(expected: wp.types.matrix(shape=(10, 3), dtype=float)):
84
+ def test_matrix_mutation(expected: wp._src.types.matrix(shape=(10, 3), dtype=float)):
85
85
  m = wp.matrix(shape=(10, 3), dtype=float)
86
86
 
87
87
  # test direct element indexing