zoo-kcl 0.3.99__tar.gz → 0.3.101__tar.gz

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.
Files changed (260) hide show
  1. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/Cargo.lock +20 -20
  2. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/Cargo.toml +1 -1
  3. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/PKG-INFO +1 -1
  4. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-api/Cargo.toml +1 -1
  5. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/Cargo.toml +1 -1
  6. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/src/example_tests.rs +4 -0
  7. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-directory-test-macro/Cargo.toml +1 -1
  8. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-error/Cargo.toml +1 -1
  9. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/Cargo.toml +3 -3
  10. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/exec_ast.rs +1 -1
  11. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/mod.rs +1 -1
  12. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/modules.rs +1 -0
  13. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/simulation_tests.rs +21 -0
  14. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/args.rs +7 -11
  15. zoo_kcl-0.3.101/kcl-lib/src/std/gdt.rs +288 -0
  16. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/mod.rs +9 -0
  17. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/planes.rs +5 -0
  18. zoo_kcl-0.3.101/kcl-lib/std/gdt.kcl +113 -0
  19. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/prelude.kcl +1 -0
  20. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/Cargo.toml +1 -1
  21. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-api/src/lib.rs +0 -0
  22. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-api/src/sketch.rs +0 -0
  23. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/src/lib.rs +0 -0
  24. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/args_with_lifetime.gen +0 -0
  25. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/args_with_refs.gen +0 -0
  26. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/array.gen +0 -0
  27. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/box.gen +0 -0
  28. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/doc_comment_with_code.gen +0 -0
  29. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/lineTo.gen +0 -0
  30. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/min.gen +0 -0
  31. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/option.gen +0 -0
  32. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/option_input_format.gen +0 -0
  33. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/return_vec_box_sketch.gen +0 -0
  34. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/return_vec_sketch.gen +0 -0
  35. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/show.gen +0 -0
  36. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-derive-docs/tests/test_args_with_exec_state.gen +0 -0
  37. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-directory-test-macro/src/lib.rs +0 -0
  38. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-error/src/lib.rs +0 -0
  39. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-error/src/source_range.rs +0 -0
  40. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/README.md +0 -0
  41. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/clippy.toml +0 -0
  42. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/common.kcl +0 -0
  43. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/coredump/local.rs +0 -0
  44. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/coredump/mod.rs +0 -0
  45. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/coredump/wasm.rs +0 -0
  46. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/gen_std_tests.rs +0 -0
  47. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/kcl_doc.rs +0 -0
  48. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/mod.rs +0 -0
  49. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/templates/const.hbs +0 -0
  50. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/templates/function.hbs +0 -0
  51. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/templates/index.hbs +0 -0
  52. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/templates/kclType.hbs +0 -0
  53. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/docs/templates/module.hbs +0 -0
  54. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/async_tasks/mod.rs +0 -0
  55. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/async_tasks/tasks.rs +0 -0
  56. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/async_tasks/tasks_wasm.rs +0 -0
  57. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/conn.rs +0 -0
  58. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/conn_mock.rs +0 -0
  59. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/conn_wasm.rs +0 -0
  60. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/engine/mod.rs +0 -0
  61. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/errors.rs +0 -0
  62. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/annotations.rs +0 -0
  63. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/artifact/mermaid_tests.rs +0 -0
  64. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/artifact.rs +0 -0
  65. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/cache.rs +0 -0
  66. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/cad_op.rs +0 -0
  67. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/fn_call.rs +0 -0
  68. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/geometry.rs +0 -0
  69. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/id_generator.rs +0 -0
  70. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/import.rs +0 -0
  71. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/import_graph.rs +0 -0
  72. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/kcl_value.rs +0 -0
  73. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/memory.rs +0 -0
  74. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/modeling.rs +0 -0
  75. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/state.rs +0 -0
  76. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/typed_path.rs +0 -0
  77. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/execution/types.rs +0 -0
  78. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/fmt.rs +0 -0
  79. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/fs/local.rs +0 -0
  80. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/fs/mod.rs +0 -0
  81. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/fs/wasm.rs +0 -0
  82. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lib.rs +0 -0
  83. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/checks/camel_case.rs +0 -0
  84. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/checks/default_plane.rs +0 -0
  85. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/checks/mod.rs +0 -0
  86. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/checks/offset_plane.rs +0 -0
  87. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/mod.rs +0 -0
  88. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lint/rule.rs +0 -0
  89. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/log.rs +0 -0
  90. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/backend.rs +0 -0
  91. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/copilot/cache.rs +0 -0
  92. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/copilot/mod.rs +0 -0
  93. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/copilot/types.rs +0 -0
  94. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/kcl/custom_notifications.rs +0 -0
  95. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/kcl/hover.rs +0 -0
  96. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/kcl/mod.rs +0 -0
  97. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/mod.rs +0 -0
  98. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/test_util.rs +0 -0
  99. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/tests.rs +0 -0
  100. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/lsp/util.rs +0 -0
  101. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/main.rs +0 -0
  102. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/digest.rs +0 -0
  103. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/mod.rs +0 -0
  104. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/types/condition.rs +0 -0
  105. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/types/literal_value.rs +0 -0
  106. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/types/mod.rs +0 -0
  107. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/types/none.rs +0 -0
  108. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/ast/types/path.rs +0 -0
  109. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/math.rs +0 -0
  110. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/mod.rs +0 -0
  111. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/parser.rs +0 -0
  112. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__a.snap +0 -0
  113. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__b.snap +0 -0
  114. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__c.snap +0 -0
  115. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__d.snap +0 -0
  116. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__e.snap +0 -0
  117. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__f.snap +0 -0
  118. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__g.snap +0 -0
  119. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__h.snap +0 -0
  120. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__i.snap +0 -0
  121. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__j.snap +0 -0
  122. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_math_tests__k.snap +0 -0
  123. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__a.snap +0 -0
  124. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aa.snap +0 -0
  125. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ab.snap +0 -0
  126. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ac.snap +0 -0
  127. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ad.snap +0 -0
  128. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ae.snap +0 -0
  129. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__af.snap +0 -0
  130. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ag.snap +0 -0
  131. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ah.snap +0 -0
  132. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ai.snap +0 -0
  133. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aj.snap +0 -0
  134. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ak.snap +0 -0
  135. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ap.snap +0 -0
  136. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aq.snap +0 -0
  137. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ar.snap +0 -0
  138. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__array_ranges.snap +0 -0
  139. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__at.snap +0 -0
  140. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__au.snap +0 -0
  141. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__av.snap +0 -0
  142. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__aw.snap +0 -0
  143. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ax.snap +0 -0
  144. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__ay.snap +0 -0
  145. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__az.snap +0 -0
  146. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__b.snap +0 -0
  147. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bb.snap +0 -0
  148. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bc.snap +0 -0
  149. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bd.snap +0 -0
  150. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__be.snap +0 -0
  151. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bf.snap +0 -0
  152. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bg.snap +0 -0
  153. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bh.snap +0 -0
  154. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bi.snap +0 -0
  155. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bj.snap +0 -0
  156. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bk.snap +0 -0
  157. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bl.snap +0 -0
  158. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bm.snap +0 -0
  159. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__bn.snap +0 -0
  160. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__c.snap +0 -0
  161. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d.snap +0 -0
  162. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__d2.snap +0 -0
  163. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__e.snap +0 -0
  164. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__f.snap +0 -0
  165. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__g.snap +0 -0
  166. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__h.snap +0 -0
  167. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__i.snap +0 -0
  168. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__j.snap +0 -0
  169. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__k.snap +0 -0
  170. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_all_named.snap +0 -0
  171. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_in_pipe.snap +0 -0
  172. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline.snap +0 -0
  173. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_call_multiline_with_comments.snap +0 -0
  174. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_all_labeled.snap +0 -0
  175. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_first_unlabeled.snap +0 -0
  176. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_and_type.snap +0 -0
  177. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_decl_with_default_no_type.snap +0 -0
  178. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_in_binary_op.snap +0 -0
  179. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__kw_function_unnamed_first.snap +0 -0
  180. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__l.snap +0 -0
  181. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__m.snap +0 -0
  182. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__n.snap +0 -0
  183. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__o.snap +0 -0
  184. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__p.snap +0 -0
  185. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__q.snap +0 -0
  186. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__r.snap +0 -0
  187. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__s.snap +0 -0
  188. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__space_between_expr_and_array.snap +0 -0
  189. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__space_between_unary_and_operand.snap +0 -0
  190. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__t.snap +0 -0
  191. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__u.snap +0 -0
  192. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__v.snap +0 -0
  193. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__w.snap +0 -0
  194. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__x.snap +0 -0
  195. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__y.snap +0 -0
  196. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/snapshots/kcl_lib__parsing__parser__snapshot_tests__z.snap +0 -0
  197. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/token/mod.rs +0 -0
  198. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/token/snapshots/kcl_lib__parsing__token__tokeniser__tests__program2.snap +0 -0
  199. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/parsing/token/tokeniser.rs +0 -0
  200. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/project/mod.rs +0 -0
  201. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/settings/generate_settings_docs.rs +0 -0
  202. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/settings/mod.rs +0 -0
  203. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/settings/templates/settings.hbs +0 -0
  204. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/settings/types/mod.rs +0 -0
  205. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/settings/types/project.rs +0 -0
  206. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/simulation_tests/kcl_samples.rs +0 -0
  207. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/appearance.rs +0 -0
  208. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/array.rs +0 -0
  209. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/assert.rs +0 -0
  210. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/axis_or_reference.rs +0 -0
  211. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/chamfer.rs +0 -0
  212. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/clone.rs +0 -0
  213. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/constraints.rs +0 -0
  214. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/csg.rs +0 -0
  215. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/edge.rs +0 -0
  216. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/extrude.rs +0 -0
  217. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/fillet.rs +0 -0
  218. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/helix.rs +0 -0
  219. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/loft.rs +0 -0
  220. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/math.rs +0 -0
  221. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/mirror.rs +0 -0
  222. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/patterns.rs +0 -0
  223. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/revolve.rs +0 -0
  224. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/segment.rs +0 -0
  225. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/shapes.rs +0 -0
  226. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/shell.rs +0 -0
  227. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/sketch.rs +0 -0
  228. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/sweep.rs +0 -0
  229. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/transform.rs +0 -0
  230. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/std/utils.rs +0 -0
  231. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/test_server.rs +0 -0
  232. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/thread/local.rs +0 -0
  233. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/thread/mod.rs +0 -0
  234. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/thread/wasm.rs +0 -0
  235. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/unparser.rs +0 -0
  236. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/variant_name.rs +0 -0
  237. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/walk/ast_node.rs +0 -0
  238. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/walk/ast_visitor.rs +0 -0
  239. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/walk/ast_walk.rs +0 -0
  240. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/walk/mod.rs +0 -0
  241. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/src/wasm/mod.rs +0 -0
  242. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/appearance.kcl +0 -0
  243. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/array.kcl +0 -0
  244. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/math.kcl +0 -0
  245. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/sketch.kcl +0 -0
  246. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/sketch2.kcl +0 -0
  247. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/solid.kcl +0 -0
  248. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/sweep.kcl +0 -0
  249. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/transform.kcl +0 -0
  250. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/turns.kcl +0 -0
  251. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/types.kcl +0 -0
  252. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/units.kcl +0 -0
  253. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-lib/std/vector.kcl +0 -0
  254. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/README.md +0 -0
  255. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/justfile +0 -0
  256. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/kcl.pyi +0 -0
  257. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/src/bin/stub_gen.rs +0 -0
  258. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/src/bridge.rs +0 -0
  259. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/kcl-python-bindings/src/lib.rs +0 -0
  260. {zoo_kcl-0.3.99 → zoo_kcl-0.3.101}/pyproject.toml +0 -0
@@ -2524,7 +2524,7 @@ dependencies = [
2524
2524
 
2525
2525
  [[package]]
2526
2526
  name = "kcl-api"
2527
- version = "0.1.6"
2527
+ version = "0.1.8"
2528
2528
  dependencies = [
2529
2529
  "indexmap 2.11.4",
2530
2530
  "kcl-error",
@@ -2535,7 +2535,7 @@ dependencies = [
2535
2535
 
2536
2536
  [[package]]
2537
2537
  name = "kcl-bumper"
2538
- version = "0.1.99"
2538
+ version = "0.1.101"
2539
2539
  dependencies = [
2540
2540
  "anyhow",
2541
2541
  "clap",
@@ -2546,7 +2546,7 @@ dependencies = [
2546
2546
 
2547
2547
  [[package]]
2548
2548
  name = "kcl-derive-docs"
2549
- version = "0.1.99"
2549
+ version = "0.1.101"
2550
2550
  dependencies = [
2551
2551
  "proc-macro2",
2552
2552
  "quote",
@@ -2555,7 +2555,7 @@ dependencies = [
2555
2555
 
2556
2556
  [[package]]
2557
2557
  name = "kcl-directory-test-macro"
2558
- version = "0.1.99"
2558
+ version = "0.1.101"
2559
2559
  dependencies = [
2560
2560
  "convert_case",
2561
2561
  "proc-macro2",
@@ -2565,7 +2565,7 @@ dependencies = [
2565
2565
 
2566
2566
  [[package]]
2567
2567
  name = "kcl-error"
2568
- version = "0.1.6"
2568
+ version = "0.1.8"
2569
2569
  dependencies = [
2570
2570
  "miette",
2571
2571
  "serde",
@@ -2588,7 +2588,7 @@ dependencies = [
2588
2588
 
2589
2589
  [[package]]
2590
2590
  name = "kcl-language-server"
2591
- version = "0.2.99"
2591
+ version = "0.2.101"
2592
2592
  dependencies = [
2593
2593
  "anyhow",
2594
2594
  "clap",
@@ -2609,7 +2609,7 @@ dependencies = [
2609
2609
 
2610
2610
  [[package]]
2611
2611
  name = "kcl-language-server-release"
2612
- version = "0.1.99"
2612
+ version = "0.1.101"
2613
2613
  dependencies = [
2614
2614
  "anyhow",
2615
2615
  "clap",
@@ -2629,7 +2629,7 @@ dependencies = [
2629
2629
 
2630
2630
  [[package]]
2631
2631
  name = "kcl-lib"
2632
- version = "0.2.99"
2632
+ version = "0.2.101"
2633
2633
  dependencies = [
2634
2634
  "anyhow",
2635
2635
  "approx 0.5.1",
@@ -2709,7 +2709,7 @@ dependencies = [
2709
2709
 
2710
2710
  [[package]]
2711
2711
  name = "kcl-python-bindings"
2712
- version = "0.3.99"
2712
+ version = "0.3.101"
2713
2713
  dependencies = [
2714
2714
  "anyhow",
2715
2715
  "kcl-lib",
@@ -2725,7 +2725,7 @@ dependencies = [
2725
2725
 
2726
2726
  [[package]]
2727
2727
  name = "kcl-test-server"
2728
- version = "0.1.99"
2728
+ version = "0.1.101"
2729
2729
  dependencies = [
2730
2730
  "anyhow",
2731
2731
  "hyper 0.14.32",
@@ -2738,7 +2738,7 @@ dependencies = [
2738
2738
 
2739
2739
  [[package]]
2740
2740
  name = "kcl-to-core"
2741
- version = "0.1.99"
2741
+ version = "0.1.101"
2742
2742
  dependencies = [
2743
2743
  "anyhow",
2744
2744
  "async-trait",
@@ -2752,7 +2752,7 @@ dependencies = [
2752
2752
 
2753
2753
  [[package]]
2754
2754
  name = "kcl-wasm-lib"
2755
- version = "0.1.99"
2755
+ version = "0.1.101"
2756
2756
  dependencies = [
2757
2757
  "anyhow",
2758
2758
  "bson",
@@ -2820,9 +2820,9 @@ dependencies = [
2820
2820
 
2821
2821
  [[package]]
2822
2822
  name = "kittycad-modeling-cmds"
2823
- version = "0.2.143"
2823
+ version = "0.2.144"
2824
2824
  source = "registry+https://github.com/rust-lang/crates.io-index"
2825
- checksum = "503df8ed39129217980214fb623cf13b5511df34d8da4db977980cac6a511ee5"
2825
+ checksum = "58c575ffec0c363c3cfcffcfcce8891dc365f9cbe7fe79404ed2087e7664f10c"
2826
2826
  dependencies = [
2827
2827
  "anyhow",
2828
2828
  "chrono",
@@ -5277,9 +5277,9 @@ checksum = "e502f78cdbb8ba4718f566c418c52bc729126ffd16baee5baa718cf25dd5a69a"
5277
5277
 
5278
5278
  [[package]]
5279
5279
  name = "tempfile"
5280
- version = "3.21.0"
5280
+ version = "3.23.0"
5281
5281
  source = "registry+https://github.com/rust-lang/crates.io-index"
5282
- checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e"
5282
+ checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16"
5283
5283
  dependencies = [
5284
5284
  "fastrand",
5285
5285
  "getrandom 0.3.1",
@@ -5501,9 +5501,9 @@ dependencies = [
5501
5501
 
5502
5502
  [[package]]
5503
5503
  name = "tokio-tungstenite"
5504
- version = "0.27.0"
5504
+ version = "0.28.0"
5505
5505
  source = "registry+https://github.com/rust-lang/crates.io-index"
5506
- checksum = "489a59b6730eda1b0171fcfda8b121f4bee2b35cba8645ca35c5f7ba3eb736c1"
5506
+ checksum = "d25a406cddcc431a75d3d9afc6a7c0f7428d4891dd973e4d54c56b46127bf857"
5507
5507
  dependencies = [
5508
5508
  "futures-util",
5509
5509
  "log",
@@ -5824,9 +5824,9 @@ dependencies = [
5824
5824
 
5825
5825
  [[package]]
5826
5826
  name = "tungstenite"
5827
- version = "0.27.0"
5827
+ version = "0.28.0"
5828
5828
  source = "registry+https://github.com/rust-lang/crates.io-index"
5829
- checksum = "eadc29d668c91fcc564941132e17b28a7ceb2f3ebf0b9dae3e03fd7a6748eb0d"
5829
+ checksum = "8628dcc84e5a09eb3d8423d6cb682965dea9133204e8fb3efee74c2a0c259442"
5830
5830
  dependencies = [
5831
5831
  "bytes",
5832
5832
  "data-encoding",
@@ -15,7 +15,7 @@ kittycad = { version = "0.4.2", default-features = false, features = [
15
15
  "js",
16
16
  "requests",
17
17
  ] }
18
- kittycad-modeling-cmds = { version = "0.2.143", features = [
18
+ kittycad-modeling-cmds = { version = "0.2.144", features = [
19
19
  "ts-rs",
20
20
  "websocket",
21
21
  ] }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zoo-kcl
3
- Version: 0.3.99
3
+ Version: 0.3.101
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "kcl-api"
3
- version = "0.1.6"
3
+ version = "0.1.8"
4
4
  edition = "2024"
5
5
  description = "KCL interpreter API"
6
6
  license = "MIT"
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "kcl-derive-docs"
3
3
  description = "A tool for generating documentation from Rust derive macros"
4
- version = "0.1.99"
4
+ version = "0.1.101"
5
5
  edition = "2021"
6
6
  license = "MIT"
7
7
  repository = "https://github.com/KittyCAD/modeling-app"
@@ -67,6 +67,10 @@ pub const TEST_NAMES: &[&str] = &[
67
67
  "std-clone-7",
68
68
  "std-clone-8",
69
69
  "std-clone-9",
70
+ "std-gdt-datum-0",
71
+ "std-gdt-flatness-0",
72
+ "std-gdt-flatness-1",
73
+ "std-gdt-flatness-2",
70
74
  "std-helix-0",
71
75
  "std-helix-1",
72
76
  "std-helix-2",
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "kcl-directory-test-macro"
3
3
  description = "A tool for generating tests from a directory of kcl files"
4
- version = "0.1.99"
4
+ version = "0.1.101"
5
5
  edition = "2021"
6
6
  license = "MIT"
7
7
  repository = "https://github.com/KittyCAD/modeling-app"
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "kcl-error"
3
- version = "0.1.6"
3
+ version = "0.1.8"
4
4
  edition = "2024"
5
5
  description = "KCL error definitions"
6
6
  license = "MIT"
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "kcl-lib"
3
3
  description = "KittyCAD Language implementation and tools"
4
- version = "0.2.99"
4
+ version = "0.2.101"
5
5
  edition = "2024"
6
6
  license = "MIT"
7
7
  repository = "https://github.com/KittyCAD/modeling-app"
@@ -98,7 +98,7 @@ serde = { workspace = true }
98
98
  serde_json = { workspace = true }
99
99
  sha2 = "0.10.9"
100
100
  tabled = { version = "0.20.0", optional = true }
101
- tempfile = "3.21"
101
+ tempfile = "3.23"
102
102
  thiserror = "2.0.16"
103
103
  toml = "0.9.6"
104
104
  ts-rs = { version = "11.0.1", features = [
@@ -120,7 +120,7 @@ zip = { workspace = true }
120
120
 
121
121
  [target.'cfg(not(target_arch = "wasm32"))'.dependencies]
122
122
  tokio = { workspace = true, features = ["full"] }
123
- tokio-tungstenite = { version = "0.27.0", features = [
123
+ tokio-tungstenite = { version = "0.28.0", features = [
124
124
  "rustls-tls-native-roots",
125
125
  ] }
126
126
  tower-lsp = { workspace = true, features = ["proposed", "default"] }
@@ -712,7 +712,7 @@ impl ExecutorContext {
712
712
  }
713
713
 
714
714
  #[async_recursion]
715
- pub(super) async fn execute_expr<'a: 'async_recursion>(
715
+ pub(crate) async fn execute_expr<'a: 'async_recursion>(
716
716
  &self,
717
717
  init: &Expr,
718
718
  exec_state: &mut ExecState,
@@ -60,7 +60,7 @@ mod state;
60
60
  pub mod typed_path;
61
61
  pub(crate) mod types;
62
62
 
63
- enum StatementKind<'a> {
63
+ pub(crate) enum StatementKind<'a> {
64
64
  Declaration { name: &'a str },
65
65
  Expression,
66
66
  }
@@ -60,6 +60,7 @@ impl ModuleLoader {
60
60
  pub(crate) fn read_std(mod_name: &str) -> Option<&'static str> {
61
61
  match mod_name {
62
62
  "prelude" => Some(include_str!("../std/prelude.kcl")),
63
+ "gdt" => Some(include_str!("../std/gdt.kcl")),
63
64
  "math" => Some(include_str!("../std/math.kcl")),
64
65
  "sketch" => Some(include_str!("../std/sketch.kcl")),
65
66
  "sketch2" => Some(include_str!("../std/sketch2.kcl")),
@@ -3941,3 +3941,24 @@ mod union_self {
3941
3941
  super::execute(TEST_NAME, true).await
3942
3942
  }
3943
3943
  }
3944
+ mod plane_of_chamfer {
3945
+ const TEST_NAME: &str = "plane_of_chamfer";
3946
+
3947
+ /// Test parsing KCL.
3948
+ #[test]
3949
+ fn parse() {
3950
+ super::parse(TEST_NAME)
3951
+ }
3952
+
3953
+ /// Test that parsing and unparsing KCL produces the original KCL input.
3954
+ #[tokio::test(flavor = "multi_thread")]
3955
+ async fn unparse() {
3956
+ super::unparse(TEST_NAME).await
3957
+ }
3958
+
3959
+ /// Test that KCL is executed correctly.
3960
+ #[tokio::test(flavor = "multi_thread")]
3961
+ async fn kcl_test_execute() {
3962
+ super::execute(TEST_NAME, true).await
3963
+ }
3964
+ }
@@ -471,17 +471,13 @@ impl<'a> FromKclValue<'a> for TagIdentifier {
471
471
 
472
472
  impl<'a> FromKclValue<'a> for Vec<TagIdentifier> {
473
473
  fn from_kcl_val(arg: &'a KclValue) -> Option<Self> {
474
- match arg {
475
- KclValue::HomArray { value, .. } => {
476
- let tags = value.iter().map(|v| v.get_tag_identifier().unwrap()).collect();
477
- Some(tags)
478
- }
479
- KclValue::Tuple { value, .. } => {
480
- let tags = value.iter().map(|v| v.get_tag_identifier().unwrap()).collect();
481
- Some(tags)
482
- }
483
- _ => None,
484
- }
474
+ let tags = arg
475
+ .clone()
476
+ .into_array()
477
+ .iter()
478
+ .map(|v| v.get_tag_identifier().unwrap())
479
+ .collect();
480
+ Some(tags)
485
481
  }
486
482
  }
487
483
 
@@ -0,0 +1,288 @@
1
+ use kcl_error::SourceRange;
2
+ use kcmc::{ModelingCmd, each_cmd as mcmd};
3
+ use kittycad_modeling_cmds::{
4
+ self as kcmc,
5
+ shared::{
6
+ AnnotationFeatureControl, AnnotationLineEnd, AnnotationMbdControlFrame, AnnotationOptions, AnnotationType,
7
+ MbdSymbol, Point2d as KPoint2d,
8
+ },
9
+ };
10
+
11
+ use crate::{
12
+ ExecState, KclError,
13
+ errors::KclErrorDetails,
14
+ exec::KclValue,
15
+ execution::{
16
+ Metadata, Plane, StatementKind, TagIdentifier,
17
+ types::{ArrayLen, RuntimeType},
18
+ },
19
+ parsing::ast::types as ast,
20
+ std::{Args, args::TyF64, sketch::make_sketch_plane_from_orientation},
21
+ };
22
+
23
+ /// Bundle of common GD&T annotation style arguments.
24
+ #[derive(Debug, Clone)]
25
+ pub(crate) struct AnnotationStyle {
26
+ pub font_point_size: Option<TyF64>,
27
+ pub font_scale: Option<TyF64>,
28
+ }
29
+
30
+ pub async fn datum(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
31
+ let face: TagIdentifier = args.get_kw_arg("face", &RuntimeType::tagged_face(), exec_state)?;
32
+ let name: String = args.get_kw_arg("name", &RuntimeType::string(), exec_state)?;
33
+ let frame_position: Option<[TyF64; 2]> =
34
+ args.get_kw_arg_opt("framePosition", &RuntimeType::point2d(), exec_state)?;
35
+ let frame_plane: Option<Plane> = args.get_kw_arg_opt("framePlane", &RuntimeType::plane(), exec_state)?;
36
+ let font_point_size: Option<TyF64> = args.get_kw_arg_opt("fontPointSize", &RuntimeType::count(), exec_state)?;
37
+ let font_scale: Option<TyF64> = args.get_kw_arg_opt("fontScale", &RuntimeType::count(), exec_state)?;
38
+
39
+ inner_datum(
40
+ face,
41
+ name,
42
+ frame_position,
43
+ frame_plane,
44
+ AnnotationStyle {
45
+ font_point_size,
46
+ font_scale,
47
+ },
48
+ exec_state,
49
+ &args,
50
+ )
51
+ .await?;
52
+ Ok(KclValue::none())
53
+ }
54
+
55
+ async fn inner_datum(
56
+ face: TagIdentifier,
57
+ name: String,
58
+ frame_position: Option<[TyF64; 2]>,
59
+ frame_plane: Option<Plane>,
60
+ style: AnnotationStyle,
61
+ exec_state: &mut ExecState,
62
+ args: &Args,
63
+ ) -> Result<(), KclError> {
64
+ const DATUM_LENGTH_ERROR: &str = "Datum name must be a single character.";
65
+ if name.len() > 1 {
66
+ return Err(KclError::new_semantic(KclErrorDetails::new(
67
+ DATUM_LENGTH_ERROR.to_owned(),
68
+ vec![args.source_range],
69
+ )));
70
+ }
71
+ let name_char = name.chars().next().ok_or_else(|| {
72
+ KclError::new_semantic(KclErrorDetails::new(
73
+ DATUM_LENGTH_ERROR.to_owned(),
74
+ vec![args.source_range],
75
+ ))
76
+ })?;
77
+ let frame_plane = if let Some(plane) = frame_plane {
78
+ plane
79
+ } else {
80
+ // No plane given. Use one of the standard planes.
81
+ xy_plane(exec_state, args).await?
82
+ };
83
+ let frame_plane_id = if frame_plane.value == crate::exec::PlaneType::Uninit {
84
+ // Create it in the engine.
85
+ let engine_plane =
86
+ make_sketch_plane_from_orientation(frame_plane.info.into_plane_data(), exec_state, args).await?;
87
+ engine_plane.id
88
+ } else {
89
+ frame_plane.id
90
+ };
91
+ let face_id = args.get_adjacent_face_to_tag(exec_state, &face, false).await?;
92
+ exec_state
93
+ .batch_modeling_cmd(
94
+ args.into(),
95
+ ModelingCmd::from(mcmd::NewAnnotation {
96
+ options: AnnotationOptions {
97
+ text: None,
98
+ line_ends: None,
99
+ line_width: None,
100
+ color: None,
101
+ position: None,
102
+ dimension: None,
103
+ feature_control: Some(AnnotationFeatureControl {
104
+ entity_id: face_id,
105
+ // Point to the center of the face.
106
+ entity_pos: KPoint2d { x: 0.5, y: 0.5 },
107
+ leader_type: AnnotationLineEnd::Dot,
108
+ dimension: None,
109
+ control_frame: None,
110
+ defined_datum: Some(name_char),
111
+ prefix: None,
112
+ suffix: None,
113
+ plane_id: frame_plane_id,
114
+ offset: if let Some(offset) = &frame_position {
115
+ KPoint2d {
116
+ x: offset[0].to_mm(),
117
+ y: offset[1].to_mm(),
118
+ }
119
+ } else {
120
+ KPoint2d { x: 100.0, y: 100.0 }
121
+ },
122
+ precision: 0,
123
+ font_scale: style.font_scale.as_ref().map(|n| n.n as f32).unwrap_or(1.0),
124
+ font_point_size: style.font_point_size.as_ref().map(|n| n.n.round() as u32).unwrap_or(36),
125
+ }),
126
+ feature_tag: None,
127
+ },
128
+ clobber: false,
129
+ annotation_type: AnnotationType::T3D,
130
+ }),
131
+ )
132
+ .await?;
133
+ Ok(())
134
+ }
135
+
136
+ pub async fn flatness(exec_state: &mut ExecState, args: Args) -> Result<KclValue, KclError> {
137
+ let faces: Vec<TagIdentifier> = args.get_kw_arg(
138
+ "faces",
139
+ &RuntimeType::Array(Box::new(RuntimeType::tagged_face()), ArrayLen::Minimum(1)),
140
+ exec_state,
141
+ )?;
142
+ let tolerance = args.get_kw_arg("tolerance", &RuntimeType::length(), exec_state)?;
143
+ let precision = args.get_kw_arg_opt("precision", &RuntimeType::count(), exec_state)?;
144
+ let frame_position: Option<[TyF64; 2]> =
145
+ args.get_kw_arg_opt("framePosition", &RuntimeType::point2d(), exec_state)?;
146
+ let frame_plane: Option<Plane> = args.get_kw_arg_opt("framePlane", &RuntimeType::plane(), exec_state)?;
147
+ let font_point_size: Option<TyF64> = args.get_kw_arg_opt("fontPointSize", &RuntimeType::count(), exec_state)?;
148
+ let font_scale: Option<TyF64> = args.get_kw_arg_opt("fontScale", &RuntimeType::count(), exec_state)?;
149
+
150
+ inner_flatness(
151
+ faces,
152
+ tolerance,
153
+ precision,
154
+ frame_position,
155
+ frame_plane,
156
+ AnnotationStyle {
157
+ font_point_size,
158
+ font_scale,
159
+ },
160
+ exec_state,
161
+ &args,
162
+ )
163
+ .await?;
164
+ Ok(KclValue::none())
165
+ }
166
+
167
+ #[allow(clippy::too_many_arguments)]
168
+ async fn inner_flatness(
169
+ faces: Vec<TagIdentifier>,
170
+ tolerance: TyF64,
171
+ precision: Option<TyF64>,
172
+ frame_position: Option<[TyF64; 2]>,
173
+ frame_plane: Option<Plane>,
174
+ style: AnnotationStyle,
175
+ exec_state: &mut ExecState,
176
+ args: &Args,
177
+ ) -> Result<(), KclError> {
178
+ let frame_plane = if let Some(plane) = frame_plane {
179
+ plane
180
+ } else {
181
+ // No plane given. Use one of the standard planes.
182
+ xy_plane(exec_state, args).await?
183
+ };
184
+ let frame_plane_id = if frame_plane.value == crate::exec::PlaneType::Uninit {
185
+ // Create it in the engine.
186
+ let engine_plane =
187
+ make_sketch_plane_from_orientation(frame_plane.info.into_plane_data(), exec_state, args).await?;
188
+ engine_plane.id
189
+ } else {
190
+ frame_plane.id
191
+ };
192
+ for face in &faces {
193
+ let face_id = args.get_adjacent_face_to_tag(exec_state, face, false).await?;
194
+ exec_state
195
+ .batch_modeling_cmd(
196
+ args.into(),
197
+ ModelingCmd::from(mcmd::NewAnnotation {
198
+ options: AnnotationOptions {
199
+ text: None,
200
+ line_ends: None,
201
+ line_width: None,
202
+ color: None,
203
+ position: None,
204
+ dimension: None,
205
+ feature_control: Some(AnnotationFeatureControl {
206
+ entity_id: face_id,
207
+ // Point to the center of the face.
208
+ entity_pos: KPoint2d { x: 0.5, y: 0.5 },
209
+ leader_type: AnnotationLineEnd::Dot,
210
+ dimension: None,
211
+ control_frame: Some(AnnotationMbdControlFrame {
212
+ symbol: MbdSymbol::Flatness,
213
+ diameter_symbol: None,
214
+ tolerance: tolerance.to_mm(),
215
+ modifier: None,
216
+ primary_datum: None,
217
+ secondary_datum: None,
218
+ tertiary_datum: None,
219
+ }),
220
+ defined_datum: None,
221
+ prefix: None,
222
+ suffix: None,
223
+ plane_id: frame_plane_id,
224
+ offset: if let Some(offset) = &frame_position {
225
+ KPoint2d {
226
+ x: offset[0].to_mm(),
227
+ y: offset[1].to_mm(),
228
+ }
229
+ } else {
230
+ KPoint2d { x: 100.0, y: 100.0 }
231
+ },
232
+ precision: precision.as_ref().map(|n| n.n.round() as u32).unwrap_or(3),
233
+ font_scale: style.font_scale.as_ref().map(|n| n.n as f32).unwrap_or(1.0),
234
+ font_point_size: style.font_point_size.as_ref().map(|n| n.n.round() as u32).unwrap_or(36),
235
+ }),
236
+ feature_tag: None,
237
+ },
238
+ clobber: false,
239
+ annotation_type: AnnotationType::T3D,
240
+ }),
241
+ )
242
+ .await?;
243
+ }
244
+ Ok(())
245
+ }
246
+
247
+ /// Get the XY plane by evaluating the `XY` expression so that it's the same as
248
+ /// if the user specified `XY`.
249
+ async fn xy_plane(exec_state: &mut ExecState, args: &Args) -> Result<Plane, KclError> {
250
+ let plane_ast = plane_ast("XY", args.source_range);
251
+ let metadata = Metadata::from(args.source_range);
252
+ let plane_value = args
253
+ .ctx
254
+ .execute_expr(&plane_ast, exec_state, &metadata, &[], StatementKind::Expression)
255
+ .await?
256
+ .clone();
257
+ Ok(plane_value
258
+ .as_plane()
259
+ .ok_or_else(|| {
260
+ KclError::new_internal(KclErrorDetails::new(
261
+ "Expected XY plane to be defined".to_owned(),
262
+ vec![args.source_range],
263
+ ))
264
+ })?
265
+ .clone())
266
+ }
267
+
268
+ /// An AST node for a plane with the given name.
269
+ fn plane_ast(plane_name: &str, range: SourceRange) -> ast::Node<ast::Expr> {
270
+ ast::Node::new(
271
+ ast::Expr::Name(Box::new(ast::Node::new(
272
+ ast::Name {
273
+ name: ast::Identifier::new(plane_name),
274
+ path: Vec::new(),
275
+ // TODO: We may want to set this to true once we implement it to
276
+ // prevent it breaking if users redefine the identifier.
277
+ abs_path: false,
278
+ digest: None,
279
+ },
280
+ range.start(),
281
+ range.end(),
282
+ range.module_id(),
283
+ ))),
284
+ range.start(),
285
+ range.end(),
286
+ range.module_id(),
287
+ )
288
+ }
@@ -12,6 +12,7 @@ pub mod csg;
12
12
  pub mod edge;
13
13
  pub mod extrude;
14
14
  pub mod fillet;
15
+ pub mod gdt;
15
16
  pub mod helix;
16
17
  pub mod loft;
17
18
  pub mod math;
@@ -62,6 +63,14 @@ impl StdFnProps {
62
63
 
63
64
  pub(crate) fn std_fn(path: &str, fn_name: &str) -> (crate::std::StdFn, StdFnProps) {
64
65
  match (path, fn_name) {
66
+ ("gdt", "datum") => (
67
+ |e, a| Box::pin(crate::std::gdt::datum(e, a)),
68
+ StdFnProps::default("std::gdt::datum").include_in_feature_tree(),
69
+ ),
70
+ ("gdt", "flatness") => (
71
+ |e, a| Box::pin(crate::std::gdt::flatness(e, a)),
72
+ StdFnProps::default("std::gdt::flatness").include_in_feature_tree(),
73
+ ),
65
74
  ("math", "cos") => (
66
75
  |e, a| Box::pin(crate::std::math::cos(e, a)),
67
76
  StdFnProps::default("std::math::cos"),
@@ -60,6 +60,11 @@ pub(crate) async fn inner_plane_of(
60
60
  });
61
61
  }
62
62
 
63
+ // Flush the batch for our fillets/chamfers if there are any.
64
+ exec_state
65
+ .flush_batch_for_solids(args.into(), std::slice::from_ref(&solid))
66
+ .await?;
67
+
63
68
  // Query the engine to learn what plane, if any, this face is on.
64
69
  let face_id = face.get_face_id(&solid, exec_state, args, true).await?;
65
70
  let plane_id = exec_state.id_generator().next_uuid();