letify 2.4.0__tar.gz → 2.4.1__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 (200) hide show
  1. {letify-2.4.0 → letify-2.4.1}/PKG-INFO +1 -1
  2. {letify-2.4.0 → letify-2.4.1}/letify/__init__.py +1 -1
  3. {letify-2.4.0 → letify-2.4.1}/letify/protocol/worker.py +8 -2
  4. {letify-2.4.0 → letify-2.4.1}/letify-core/Cargo.lock +3 -3
  5. {letify-2.4.0 → letify-2.4.1}/letify-core/Cargo.toml +1 -1
  6. {letify-2.4.0 → letify-2.4.1}/letify-ext/package-lock.json +2 -2
  7. {letify-2.4.0 → letify-2.4.1}/letify-ext/package.json +1 -1
  8. {letify-2.4.0 → letify-2.4.1}/pyproject.toml +1 -1
  9. {letify-2.4.0 → letify-2.4.1}/.github/workflows/ci.yml +0 -0
  10. {letify-2.4.0 → letify-2.4.1}/.github/workflows/docs.yml +0 -0
  11. {letify-2.4.0 → letify-2.4.1}/.github/workflows/publish.yml +0 -0
  12. {letify-2.4.0 → letify-2.4.1}/.gitignore +0 -0
  13. {letify-2.4.0 → letify-2.4.1}/.researchtree +0 -0
  14. {letify-2.4.0 → letify-2.4.1}/LICENSE +0 -0
  15. {letify-2.4.0 → letify-2.4.1}/README.md +0 -0
  16. {letify-2.4.0 → letify-2.4.1}/docs/guide/01-getting-started.md +0 -0
  17. {letify-2.4.0 → letify-2.4.1}/docs/guide/02-providers.md +0 -0
  18. {letify-2.4.0 → letify-2.4.1}/docs/guide/03-execution-modes.md +0 -0
  19. {letify-2.4.0 → letify-2.4.1}/docs/guide/04-environments-and-data.md +0 -0
  20. {letify-2.4.0 → letify-2.4.1}/docs/guide/05-concurrency.md +0 -0
  21. {letify-2.4.0 → letify-2.4.1}/docs/guide/06-cost.md +0 -0
  22. {letify-2.4.0 → letify-2.4.1}/docs/guide/07-troubleshooting.md +0 -0
  23. {letify-2.4.0 → letify-2.4.1}/docs/guide/08-releasing.md +0 -0
  24. {letify-2.4.0 → letify-2.4.1}/docs/guide/README.md +0 -0
  25. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/01-/354/213/234/354/236/221/355/225/230/352/270/260.md" +0 -0
  26. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/02-/355/224/204/353/241/234/353/260/224/354/235/264/353/215/224.md" +0 -0
  27. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/03-/354/213/244/355/226/211-/353/260/251/354/213/235.md" +0 -0
  28. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/04-/355/231/230/352/262/275/352/263/274-/353/215/260/354/235/264/355/204/260.md" +0 -0
  29. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/05-/353/217/231/354/213/234-/354/213/244/355/226/211.md" +0 -0
  30. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/06-/353/271/204/354/232/251.md" +0 -0
  31. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/07-/353/254/270/354/240/234-/355/225/264/352/262/260.md" +0 -0
  32. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/08-/353/246/264/353/246/254/354/212/244.md" +0 -0
  33. {letify-2.4.0 → letify-2.4.1}/docs/guide/ko/README.md +0 -0
  34. {letify-2.4.0 → letify-2.4.1}/docs/locales/README_ko.md +0 -0
  35. {letify-2.4.0 → letify-2.4.1}/docs/mkdocs.yml +0 -0
  36. {letify-2.4.0 → letify-2.4.1}/examples/README.md +0 -0
  37. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/.letify.example +0 -0
  38. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/00_smoke.py +0 -0
  39. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/01_sweep.py +0 -0
  40. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/02_resume.py +0 -0
  41. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/03_watch.py +0 -0
  42. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/README.md +0 -0
  43. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/README_ko.md +0 -0
  44. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/common.py +0 -0
  45. {letify-2.4.0 → letify-2.4.1}/examples/nvfp4-lora/recipe.py +0 -0
  46. {letify-2.4.0 → letify-2.4.1}/letify/cli.py +0 -0
  47. {letify-2.4.0 → letify-2.4.1}/letify/config/__init__.py +0 -0
  48. {letify-2.4.0 → letify-2.4.1}/letify/config/inventory.py +0 -0
  49. {letify-2.4.0 → letify-2.4.1}/letify/config/login.py +0 -0
  50. {letify-2.4.0 → letify-2.4.1}/letify/config/schema.py +0 -0
  51. {letify-2.4.0 → letify-2.4.1}/letify/config/secrets.py +0 -0
  52. {letify-2.4.0 → letify-2.4.1}/letify/config/writer.py +0 -0
  53. {letify-2.4.0 → letify-2.4.1}/letify/declare/__init__.py +0 -0
  54. {letify-2.4.0 → letify-2.4.1}/letify/declare/cache.py +0 -0
  55. {letify-2.4.0 → letify-2.4.1}/letify/declare/env.py +0 -0
  56. {letify-2.4.0 → letify-2.4.1}/letify/declare/function.py +0 -0
  57. {letify-2.4.0 → letify-2.4.1}/letify/declare/instance.py +0 -0
  58. {letify-2.4.0 → letify-2.4.1}/letify/errors.py +0 -0
  59. {letify-2.4.0 → letify-2.4.1}/letify/install.py +0 -0
  60. {letify-2.4.0 → letify-2.4.1}/letify/launcher.py +0 -0
  61. {letify-2.4.0 → letify-2.4.1}/letify/paths.py +0 -0
  62. {letify-2.4.0 → letify-2.4.1}/letify/protocol/__init__.py +0 -0
  63. {letify-2.4.0 → letify-2.4.1}/letify/protocol/codec.py +0 -0
  64. {letify-2.4.0 → letify-2.4.1}/letify/protocol/driver.py +0 -0
  65. {letify-2.4.0 → letify-2.4.1}/letify/protocol/handle.py +0 -0
  66. {letify-2.4.0 → letify-2.4.1}/letify/protocol/wire.py +0 -0
  67. {letify-2.4.0 → letify-2.4.1}/letify/providers/__init__.py +0 -0
  68. {letify-2.4.0 → letify-2.4.1}/letify/providers/base.py +0 -0
  69. {letify-2.4.0 → letify-2.4.1}/letify/providers/colab.py +0 -0
  70. {letify-2.4.0 → letify-2.4.1}/letify/providers/colab_files.py +0 -0
  71. {letify-2.4.0 → letify-2.4.1}/letify/providers/colab_keepalive.py +0 -0
  72. {letify-2.4.0 → letify-2.4.1}/letify/providers/elice.py +0 -0
  73. {letify-2.4.0 → letify-2.4.1}/letify/providers/kaggle.py +0 -0
  74. {letify-2.4.0 → letify-2.4.1}/letify/providers/kaggle_adapter.py +0 -0
  75. {letify-2.4.0 → letify-2.4.1}/letify/providers/local.py +0 -0
  76. {letify-2.4.0 → letify-2.4.1}/letify/providers/modal.py +0 -0
  77. {letify-2.4.0 → letify-2.4.1}/letify/providers/modal_adapter.py +0 -0
  78. {letify-2.4.0 → letify-2.4.1}/letify/providers/naming.py +0 -0
  79. {letify-2.4.0 → letify-2.4.1}/letify/providers/shell.py +0 -0
  80. {letify-2.4.0 → letify-2.4.1}/letify/providers/tunnel.py +0 -0
  81. {letify-2.4.0 → letify-2.4.1}/letify/providers/usage.py +0 -0
  82. {letify-2.4.0 → letify-2.4.1}/letify/remoting/__init__.py +0 -0
  83. {letify-2.4.0 → letify-2.4.1}/letify/remoting/capability.py +0 -0
  84. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/__init__.py +0 -0
  85. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/client.py +0 -0
  86. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/cuda.py +0 -0
  87. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/executor.py +0 -0
  88. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/frames.py +0 -0
  89. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/guard.py +0 -0
  90. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/tensor.py +0 -0
  91. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/trace.py +0 -0
  92. {letify-2.4.0 → letify-2.4.1}/letify/remoting/device/value.py +0 -0
  93. {letify-2.4.0 → letify-2.4.1}/letify/remoting/loader.py +0 -0
  94. {letify-2.4.0 → letify-2.4.1}/letify/remoting/probe.py +0 -0
  95. {letify-2.4.0 → letify-2.4.1}/letify/render.py +0 -0
  96. {letify-2.4.0 → letify-2.4.1}/letify/runtime/__init__.py +0 -0
  97. {letify-2.4.0 → letify-2.4.1}/letify/runtime/bootstrap.py +0 -0
  98. {letify-2.4.0 → letify-2.4.1}/letify/runtime/channel.py +0 -0
  99. {letify-2.4.0 → letify-2.4.1}/letify/runtime/lease.py +0 -0
  100. {letify-2.4.0 → letify-2.4.1}/letify/runtime/pool.py +0 -0
  101. {letify-2.4.0 → letify-2.4.1}/letify/runtime/session.py +0 -0
  102. {letify-2.4.0 → letify-2.4.1}/letify/runtime/telemetry.py +0 -0
  103. {letify-2.4.0 → letify-2.4.1}/letify/store/__init__.py +0 -0
  104. {letify-2.4.0 → letify-2.4.1}/letify/store/backends/__init__.py +0 -0
  105. {letify-2.4.0 → letify-2.4.1}/letify/store/backends/filesystem.py +0 -0
  106. {letify-2.4.0 → letify-2.4.1}/letify/store/backends/google_auth.py +0 -0
  107. {letify-2.4.0 → letify-2.4.1}/letify/store/backends/layout.py +0 -0
  108. {letify-2.4.0 → letify-2.4.1}/letify/store/backends/objects.py +0 -0
  109. {letify-2.4.0 → letify-2.4.1}/letify/store/cas.py +0 -0
  110. {letify-2.4.0 → letify-2.4.1}/letify/store/pathdata.py +0 -0
  111. {letify-2.4.0 → letify-2.4.1}/letify/store/sendorder.py +0 -0
  112. {letify-2.4.0 → letify-2.4.1}/letify/store/volume.py +0 -0
  113. {letify-2.4.0 → letify-2.4.1}/letify/stubs.py +0 -0
  114. {letify-2.4.0 → letify-2.4.1}/letify/tools.py +0 -0
  115. {letify-2.4.0 → letify-2.4.1}/letify/transport/__init__.py +0 -0
  116. {letify-2.4.0 → letify-2.4.1}/letify/transport/agent.py +0 -0
  117. {letify-2.4.0 → letify-2.4.1}/letify/transport/announce.py +0 -0
  118. {letify-2.4.0 → letify-2.4.1}/letify/transport/link.py +0 -0
  119. {letify-2.4.0 → letify-2.4.1}/letify/transport/nat.py +0 -0
  120. {letify-2.4.0 → letify-2.4.1}/letify/transport/pipeline.py +0 -0
  121. {letify-2.4.0 → letify-2.4.1}/letify/transport/portmap.py +0 -0
  122. {letify-2.4.0 → letify-2.4.1}/letify/transport/probe.py +0 -0
  123. {letify-2.4.0 → letify-2.4.1}/letify/transport/quic.py +0 -0
  124. {letify-2.4.0 → letify-2.4.1}/letify/transport/rendezvous.py +0 -0
  125. {letify-2.4.0 → letify-2.4.1}/letify/transport/setup.py +0 -0
  126. {letify-2.4.0 → letify-2.4.1}/letify/transport/sshopts.py +0 -0
  127. {letify-2.4.0 → letify-2.4.1}/letify/transport/strategies.py +0 -0
  128. {letify-2.4.0 → letify-2.4.1}/letify-core/.gitignore +0 -0
  129. {letify-2.4.0 → letify-2.4.1}/letify-core/build.py +0 -0
  130. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-agent/Cargo.toml +0 -0
  131. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-agent/src/driver.rs +0 -0
  132. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-agent/src/main.rs +0 -0
  133. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/Cargo.toml +0 -0
  134. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/client.rs +0 -0
  135. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/exports.rs +0 -0
  136. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/image.rs +0 -0
  137. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/lib.rs +0 -0
  138. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/status.rs +0 -0
  139. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-driver/src/table.rs +0 -0
  140. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-quic/Cargo.toml +0 -0
  141. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-quic/src/main.rs +0 -0
  142. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-wire/Cargo.toml +0 -0
  143. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-wire/src/lib.rs +0 -0
  144. {letify-2.4.0 → letify-2.4.1}/letify-core/letify-wire/tests/throughput.rs +0 -0
  145. {letify-2.4.0 → letify-2.4.1}/letify-core/rust-toolchain.toml +0 -0
  146. {letify-2.4.0 → letify-2.4.1}/letify-ext/.vscodeignore +0 -0
  147. {letify-2.4.0 → letify-2.4.1}/letify-ext/LICENSE +0 -0
  148. {letify-2.4.0 → letify-2.4.1}/letify-ext/README.md +0 -0
  149. {letify-2.4.0 → letify-2.4.1}/letify-ext/media/icon.svg +0 -0
  150. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/cli.ts +0 -0
  151. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/extension.ts +0 -0
  152. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/history.ts +0 -0
  153. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/model.ts +0 -0
  154. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/poll.ts +0 -0
  155. {letify-2.4.0 → letify-2.4.1}/letify-ext/src/render.ts +0 -0
  156. {letify-2.4.0 → letify-2.4.1}/letify-ext/test/cli.test.ts +0 -0
  157. {letify-2.4.0 → letify-2.4.1}/letify-ext/test/manifest.test.ts +0 -0
  158. {letify-2.4.0 → letify-2.4.1}/letify-ext/test/model.test.ts +0 -0
  159. {letify-2.4.0 → letify-2.4.1}/letify-ext/test/regressions.test.ts +0 -0
  160. {letify-2.4.0 → letify-2.4.1}/letify-ext/tsconfig.json +0 -0
  161. {letify-2.4.0 → letify-2.4.1}/letify_providers.py +0 -0
  162. {letify-2.4.0 → letify-2.4.1}/scripts/sync-main.sh +0 -0
  163. {letify-2.4.0 → letify-2.4.1}/scripts/version.py +0 -0
  164. {letify-2.4.0 → letify-2.4.1}/tests/conftest.py +0 -0
  165. {letify-2.4.0 → letify-2.4.1}/tests/fake_kaggle_adapter.py +0 -0
  166. {letify-2.4.0 → letify-2.4.1}/tests/fake_modal_adapter.py +0 -0
  167. {letify-2.4.0 → letify-2.4.1}/tests/test_cli.py +0 -0
  168. {letify-2.4.0 → letify-2.4.1}/tests/test_cli_output.py +0 -0
  169. {letify-2.4.0 → letify-2.4.1}/tests/test_colab_keepalive.py +0 -0
  170. {letify-2.4.0 → letify-2.4.1}/tests/test_config.py +0 -0
  171. {letify-2.4.0 → letify-2.4.1}/tests/test_core.py +0 -0
  172. {letify-2.4.0 → letify-2.4.1}/tests/test_data.py +0 -0
  173. {letify-2.4.0 → letify-2.4.1}/tests/test_data_streaming.py +0 -0
  174. {letify-2.4.0 → letify-2.4.1}/tests/test_declare.py +0 -0
  175. {letify-2.4.0 → letify-2.4.1}/tests/test_device.py +0 -0
  176. {letify-2.4.0 → letify-2.4.1}/tests/test_editor_sessions.py +0 -0
  177. {letify-2.4.0 → letify-2.4.1}/tests/test_elice.py +0 -0
  178. {letify-2.4.0 → letify-2.4.1}/tests/test_frames.py +0 -0
  179. {letify-2.4.0 → letify-2.4.1}/tests/test_install.py +0 -0
  180. {letify-2.4.0 → letify-2.4.1}/tests/test_kaggle.py +0 -0
  181. {letify-2.4.0 → letify-2.4.1}/tests/test_kaggle_cookie.py +0 -0
  182. {letify-2.4.0 → letify-2.4.1}/tests/test_kaggle_link.py +0 -0
  183. {letify-2.4.0 → letify-2.4.1}/tests/test_link_log.py +0 -0
  184. {letify-2.4.0 → letify-2.4.1}/tests/test_notebook.py +0 -0
  185. {letify-2.4.0 → letify-2.4.1}/tests/test_parallel_placement.py +0 -0
  186. {letify-2.4.0 → letify-2.4.1}/tests/test_paths.py +0 -0
  187. {letify-2.4.0 → letify-2.4.1}/tests/test_portmap.py +0 -0
  188. {letify-2.4.0 → letify-2.4.1}/tests/test_protocol.py +0 -0
  189. {letify-2.4.0 → letify-2.4.1}/tests/test_providers.py +0 -0
  190. {letify-2.4.0 → letify-2.4.1}/tests/test_quic.py +0 -0
  191. {letify-2.4.0 → letify-2.4.1}/tests/test_remoting.py +0 -0
  192. {letify-2.4.0 → letify-2.4.1}/tests/test_render.py +0 -0
  193. {letify-2.4.0 → letify-2.4.1}/tests/test_runtime.py +0 -0
  194. {letify-2.4.0 → letify-2.4.1}/tests/test_ship.py +0 -0
  195. {letify-2.4.0 → letify-2.4.1}/tests/test_store.py +0 -0
  196. {letify-2.4.0 → letify-2.4.1}/tests/test_strategies.py +0 -0
  197. {letify-2.4.0 → letify-2.4.1}/tests/test_stubs.py +0 -0
  198. {letify-2.4.0 → letify-2.4.1}/tests/test_transport.py +0 -0
  199. {letify-2.4.0 → letify-2.4.1}/tests/test_tunnel_setup.py +0 -0
  200. {letify-2.4.0 → letify-2.4.1}/tests/test_version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: letify
3
- Version: 2.4.0
3
+ Version: 2.4.1
4
4
  Summary: Declarations that become infrastructure.
5
5
  Project-URL: Homepage, https://github.com/DarkPyonix/letify
6
6
  Project-URL: Documentation, https://github.com/DarkPyonix/letify/tree/main/docs
@@ -62,7 +62,7 @@ remote: Final = Host.remote
62
62
  # The enum class stays importable from letify.declare.instance for letify's own use.
63
63
  del Host
64
64
 
65
- __version__ = "2.4.0"
65
+ __version__ = "2.4.1"
66
66
 
67
67
 
68
68
  def fetch(tensor): # type: ignore[no-untyped-def]
@@ -2126,12 +2126,18 @@ def _run(stream, request, settle):
2126
2126
  request = None
2127
2127
  if settle:
2128
2128
  _settle()
2129
- if name == "call":
2130
- # Spec "Worker output": the body's output is framed before its result goes out.
2129
+ if name in _DRAINS:
2130
+ # Spec "Worker output": what the program wrote is framed before its result goes
2131
+ # out. Every op that runs a program drains; a stat or a lease renewal does not,
2132
+ # because they write nothing and are on the hot path.
2131
2133
  _drain_output()
2132
2134
  _reply(stream, outcome)
2133
2135
 
2134
2136
 
2137
+ #: Ops that run a program, so output of theirs may still be unframed when they answer.
2138
+ #: Spec "Worker output".
2139
+ _DRAINS = frozenset(("call", "exec"))
2140
+
2135
2141
  _DATA_PREFIX = b"LETIFY-DATA "
2136
2142
 
2137
2143
 
@@ -138,7 +138,7 @@ dependencies = [
138
138
 
139
139
  [[package]]
140
140
  name = "letify-agent"
141
- version = "2.4.0"
141
+ version = "2.4.1"
142
142
  dependencies = [
143
143
  "letify-wire",
144
144
  "libloading",
@@ -146,7 +146,7 @@ dependencies = [
146
146
 
147
147
  [[package]]
148
148
  name = "letify-driver"
149
- version = "2.4.0"
149
+ version = "2.4.1"
150
150
  dependencies = [
151
151
  "letify-wire",
152
152
  ]
@@ -164,7 +164,7 @@ dependencies = [
164
164
 
165
165
  [[package]]
166
166
  name = "letify-wire"
167
- version = "2.4.0"
167
+ version = "2.4.1"
168
168
 
169
169
  [[package]]
170
170
  name = "libc"
@@ -8,7 +8,7 @@ resolver = "3"
8
8
  members = ["letify-wire", "letify-driver", "letify-agent", "letify-quic"]
9
9
 
10
10
  [workspace.package]
11
- version = "2.4.0"
11
+ version = "2.4.1"
12
12
  edition = "2024"
13
13
  license = "MIT"
14
14
  repository = "https://github.com/DarkPyonix/letify"
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "letify-status",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "letify-status",
9
- "version": "2.4.0",
9
+ "version": "2.4.1",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "devDependencies": {
12
12
  "@types/node": "^18.19.0",
@@ -2,7 +2,7 @@
2
2
  "name": "letify-status",
3
3
  "displayName": "letify Status",
4
4
  "description": "letify quota and GPU activity in the status bar, read from the letify CLI.",
5
- "version": "2.4.0",
5
+ "version": "2.4.1",
6
6
  "publisher": "darkpyonix",
7
7
  "license": "SEE LICENSE IN LICENSE",
8
8
  "repository": {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "letify"
3
- version = "2.4.0"
3
+ version = "2.4.1"
4
4
  description = "Declarations that become infrastructure."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes