pyfect-dev 0.1.0__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 (1265) hide show
  1. pyfect_dev-0.1.0/LICENSE +21 -0
  2. pyfect_dev-0.1.0/PKG-INFO +296 -0
  3. pyfect_dev-0.1.0/README.md +242 -0
  4. pyfect_dev-0.1.0/pyproject.toml +147 -0
  5. pyfect_dev-0.1.0/pyproject.toml.orig +156 -0
  6. pyfect_dev-0.1.0/src/pyfect/__init__.py +729 -0
  7. pyfect_dev-0.1.0/src/pyfect/_all.py +242 -0
  8. pyfect_dev-0.1.0/src/pyfect/_background.py +28 -0
  9. pyfect_dev-0.1.0/src/pyfect/_binary_codecs.py +124 -0
  10. pyfect_dev-0.1.0/src/pyfect/_cached.py +165 -0
  11. pyfect_dev-0.1.0/src/pyfect/_catch.py +128 -0
  12. pyfect_dev-0.1.0/src/pyfect/_catch_reason.py +574 -0
  13. pyfect_dev-0.1.0/src/pyfect/_concurrency.py +291 -0
  14. pyfect_dev-0.1.0/src/pyfect/_context_effects.py +163 -0
  15. pyfect_dev-0.1.0/src/pyfect/_context_managers.py +76 -0
  16. pyfect_dev-0.1.0/src/pyfect/_core.py +368 -0
  17. pyfect_dev-0.1.0/src/pyfect/_digits.py +71 -0
  18. pyfect_dev-0.1.0/src/pyfect/_effect_args.py +46 -0
  19. pyfect_dev-0.1.0/src/pyfect/_effect_base.py +71 -0
  20. pyfect_dev-0.1.0/src/pyfect/_effect_concurrency.py +133 -0
  21. pyfect_dev-0.1.0/src/pyfect/_effect_eager.py +103 -0
  22. pyfect_dev-0.1.0/src/pyfect/_effect_errors.py +344 -0
  23. pyfect_dev-0.1.0/src/pyfect/_effect_folding.py +110 -0
  24. pyfect_dev-0.1.0/src/pyfect/_effect_hash.py +140 -0
  25. pyfect_dev-0.1.0/src/pyfect/_effect_logging.py +57 -0
  26. pyfect_dev-0.1.0/src/pyfect/_effect_metrics.py +102 -0
  27. pyfect_dev-0.1.0/src/pyfect/_effect_resources.py +179 -0
  28. pyfect_dev-0.1.0/src/pyfect/_effect_services.py +25 -0
  29. pyfect_dev-0.1.0/src/pyfect/_effect_timing.py +199 -0
  30. pyfect_dev-0.1.0/src/pyfect/_effect_tracing.py +99 -0
  31. pyfect_dev-0.1.0/src/pyfect/_equal.py +195 -0
  32. pyfect_dev-0.1.0/src/pyfect/_extras.py +43 -0
  33. pyfect_dev-0.1.0/src/pyfect/_fiber.py +969 -0
  34. pyfect_dev-0.1.0/src/pyfect/_fiber_all.py +134 -0
  35. pyfect_dev-0.1.0/src/pyfect/_fiber_collections.py +106 -0
  36. pyfect_dev-0.1.0/src/pyfect/_fn.py +706 -0
  37. pyfect_dev-0.1.0/src/pyfect/_hamt.py +174 -0
  38. pyfect_dev-0.1.0/src/pyfect/_interrupt_reason.py +33 -0
  39. pyfect_dev-0.1.0/src/pyfect/_isaac.py +149 -0
  40. pyfect_dev-0.1.0/src/pyfect/_iterables.py +231 -0
  41. pyfect_dev-0.1.0/src/pyfect/_js.py +263 -0
  42. pyfect_dev-0.1.0/src/pyfect/_js_date.py +87 -0
  43. pyfect_dev-0.1.0/src/pyfect/_json_text.py +286 -0
  44. pyfect_dev-0.1.0/src/pyfect/_json_value.py +9 -0
  45. pyfect_dev-0.1.0/src/pyfect/_layer_core.py +403 -0
  46. pyfect_dev-0.1.0/src/pyfect/_layer_for_life.py +33 -0
  47. pyfect_dev-0.1.0/src/pyfect/_layer_tracing.py +70 -0
  48. pyfect_dev-0.1.0/src/pyfect/_locked_ref.py +147 -0
  49. pyfect_dev-0.1.0/src/pyfect/_loop_thread.py +152 -0
  50. pyfect_dev-0.1.0/src/pyfect/_metric_ref.py +29 -0
  51. pyfect_dev-0.1.0/src/pyfect/_one_or_many.py +14 -0
  52. pyfect_dev-0.1.0/src/pyfect/_os_wait.py +118 -0
  53. pyfect_dev-0.1.0/src/pyfect/_path_posix.py +129 -0
  54. pyfect_dev-0.1.0/src/pyfect/_primitives.py +434 -0
  55. pyfect_dev-0.1.0/src/pyfect/_public.py +36 -0
  56. pyfect_dev-0.1.0/src/pyfect/_reasons.py +64 -0
  57. pyfect_dev-0.1.0/src/pyfect/_released.py +67 -0
  58. pyfect_dev-0.1.0/src/pyfect/_root.py +87 -0
  59. pyfect_dev-0.1.0/src/pyfect/_round_robin.py +73 -0
  60. pyfect_dev-0.1.0/src/pyfect/_some.py +17 -0
  61. pyfect_dev-0.1.0/src/pyfect/_stack.py +52 -0
  62. pyfect_dev-0.1.0/src/pyfect/_stack_frame.py +114 -0
  63. pyfect_dev-0.1.0/src/pyfect/_string_hash.py +35 -0
  64. pyfect_dev-0.1.0/src/pyfect/_subscriber_queue.py +47 -0
  65. pyfect_dev-0.1.0/src/pyfect/_tags.py +14 -0
  66. pyfect_dev-0.1.0/src/pyfect/_tracer_ref.py +21 -0
  67. pyfect_dev-0.1.0/src/pyfect/_tx_ops.py +77 -0
  68. pyfect_dev-0.1.0/src/pyfect/_unsubscripted.py +23 -0
  69. pyfect_dev-0.1.0/src/pyfect/_url.py +54 -0
  70. pyfect_dev-0.1.0/src/pyfect/_waiters.py +127 -0
  71. pyfect_dev-0.1.0/src/pyfect/_wake_tracking.py +98 -0
  72. pyfect_dev-0.1.0/src/pyfect/_wire_codec.py +123 -0
  73. pyfect_dev-0.1.0/src/pyfect/ai/__init__.py +73 -0
  74. pyfect_dev-0.1.0/src/pyfect/ai/_approvals.py +249 -0
  75. pyfect_dev-0.1.0/src/pyfect/ai/_decision_answers.py +185 -0
  76. pyfect_dev-0.1.0/src/pyfect/ai/_generated_client.py +298 -0
  77. pyfect_dev-0.1.0/src/pyfect/ai/_generated_support.py +84 -0
  78. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/__init__.py +1 -0
  79. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/batch.py +68 -0
  80. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/client_transport.py +412 -0
  81. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/client_wire.py +284 -0
  82. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/core.py +490 -0
  83. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/dispatch.py +1048 -0
  84. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/http.py +462 -0
  85. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/http_admission.py +269 -0
  86. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/http_status.py +27 -0
  87. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/input_wire.py +226 -0
  88. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/log_levels.py +55 -0
  89. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/param_headers.py +63 -0
  90. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/projection.py +248 -0
  91. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/register.py +683 -0
  92. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/reverse_policy.py +155 -0
  93. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/routing_header.py +24 -0
  94. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/sessions.py +114 -0
  95. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/stdio.py +110 -0
  96. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/subscriptions.py +134 -0
  97. pyfect_dev-0.1.0/src/pyfect/ai/_mcp/tool_schema.py +35 -0
  98. pyfect_dev-0.1.0/src/pyfect/ai/_noul_answers.py +64 -0
  99. pyfect_dev-0.1.0/src/pyfect/ai/_openai_all_of.py +137 -0
  100. pyfect_dev-0.1.0/src/pyfect/ai/_openai_errors.py +233 -0
  101. pyfect_dev-0.1.0/src/pyfect/ai/_provider.py +439 -0
  102. pyfect_dev-0.1.0/src/pyfect/ai/_provider_tools.py +129 -0
  103. pyfect_dev-0.1.0/src/pyfect/ai/_stream_resolution.py +231 -0
  104. pyfect_dev-0.1.0/src/pyfect/ai/_structured_output_checks.py +138 -0
  105. pyfect_dev-0.1.0/src/pyfect/ai/_structured_output_codec.py +229 -0
  106. pyfect_dev-0.1.0/src/pyfect/ai/_structured_output_json.py +109 -0
  107. pyfect_dev-0.1.0/src/pyfect/ai/_tool_call_ids.py +80 -0
  108. pyfect_dev-0.1.0/src/pyfect/ai/ai_error.py +785 -0
  109. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/__init__.py +28 -0
  110. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_errors.py +164 -0
  111. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_prompt.py +375 -0
  112. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_response.py +443 -0
  113. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_schema.py +206 -0
  114. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_stream.py +377 -0
  115. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/_tools.py +248 -0
  116. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/client.py +289 -0
  117. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/config.py +32 -0
  118. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/error.py +27 -0
  119. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/language_model.py +366 -0
  120. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/telemetry.py +51 -0
  121. pyfect_dev-0.1.0/src/pyfect/ai/anthropic/tool.py +570 -0
  122. pyfect_dev-0.1.0/src/pyfect/ai/anthropic_structured_output.py +138 -0
  123. pyfect_dev-0.1.0/src/pyfect/ai/chat.py +548 -0
  124. pyfect_dev-0.1.0/src/pyfect/ai/cloudflare/__init__.py +15 -0
  125. pyfect_dev-0.1.0/src/pyfect/ai/cloudflare/_errors.py +108 -0
  126. pyfect_dev-0.1.0/src/pyfect/ai/cloudflare/client.py +174 -0
  127. pyfect_dev-0.1.0/src/pyfect/ai/cloudflare/decision_model.py +117 -0
  128. pyfect_dev-0.1.0/src/pyfect/ai/cloudflare/schema.py +144 -0
  129. pyfect_dev-0.1.0/src/pyfect/ai/decision.py +290 -0
  130. pyfect_dev-0.1.0/src/pyfect/ai/decision_model.py +283 -0
  131. pyfect_dev-0.1.0/src/pyfect/ai/embedding_model.py +177 -0
  132. pyfect_dev-0.1.0/src/pyfect/ai/id_generator.py +79 -0
  133. pyfect_dev-0.1.0/src/pyfect/ai/language_model.py +1077 -0
  134. pyfect_dev-0.1.0/src/pyfect/ai/mcp_client.py +682 -0
  135. pyfect_dev-0.1.0/src/pyfect/ai/mcp_client_error.py +223 -0
  136. pyfect_dev-0.1.0/src/pyfect/ai/mcp_protocol.py +205 -0
  137. pyfect_dev-0.1.0/src/pyfect/ai/mcp_schema.py +1300 -0
  138. pyfect_dev-0.1.0/src/pyfect/ai/mcp_server.py +404 -0
  139. pyfect_dev-0.1.0/src/pyfect/ai/model.py +56 -0
  140. pyfect_dev-0.1.0/src/pyfect/ai/openai/__init__.py +49 -0
  141. pyfect_dev-0.1.0/src/pyfect/ai/openai/_errors.py +89 -0
  142. pyfect_dev-0.1.0/src/pyfect/ai/openai/_prompt.py +527 -0
  143. pyfect_dev-0.1.0/src/pyfect/ai/openai/_requests.py +34 -0
  144. pyfect_dev-0.1.0/src/pyfect/ai/openai/_response.py +569 -0
  145. pyfect_dev-0.1.0/src/pyfect/ai/openai/_schema.py +769 -0
  146. pyfect_dev-0.1.0/src/pyfect/ai/openai/_stream.py +771 -0
  147. pyfect_dev-0.1.0/src/pyfect/ai/openai/_tools.py +128 -0
  148. pyfect_dev-0.1.0/src/pyfect/ai/openai/_web_socket.py +295 -0
  149. pyfect_dev-0.1.0/src/pyfect/ai/openai/client.py +296 -0
  150. pyfect_dev-0.1.0/src/pyfect/ai/openai/client_generated.py +123 -0
  151. pyfect_dev-0.1.0/src/pyfect/ai/openai/config.py +34 -0
  152. pyfect_dev-0.1.0/src/pyfect/ai/openai/decision_model.py +177 -0
  153. pyfect_dev-0.1.0/src/pyfect/ai/openai/embedding_model.py +116 -0
  154. pyfect_dev-0.1.0/src/pyfect/ai/openai/error.py +8 -0
  155. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/__init__.py +7213 -0
  156. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/_recursive.py +18 -0
  157. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/_schemas_0.py +1015 -0
  158. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/_schemas_1.py +1016 -0
  159. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/_schemas_2.py +1017 -0
  160. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/_schemas_3.py +615 -0
  161. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/client.py +5298 -0
  162. pyfect_dev-0.1.0/src/pyfect/ai/openai/generated/types.py +8123 -0
  163. pyfect_dev-0.1.0/src/pyfect/ai/openai/language_model.py +304 -0
  164. pyfect_dev-0.1.0/src/pyfect/ai/openai/telemetry.py +19 -0
  165. pyfect_dev-0.1.0/src/pyfect/ai/openai/tool.py +391 -0
  166. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/__init__.py +25 -0
  167. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/_prompt.py +191 -0
  168. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/_request.py +153 -0
  169. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/_response.py +407 -0
  170. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/_schema.py +97 -0
  171. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/client.py +234 -0
  172. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/config.py +32 -0
  173. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/embedding_model.py +139 -0
  174. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/error.py +7 -0
  175. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/language_model.py +245 -0
  176. pyfect_dev-0.1.0/src/pyfect/ai/openai_compat/telemetry.py +51 -0
  177. pyfect_dev-0.1.0/src/pyfect/ai/openai_structured_output.py +118 -0
  178. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/__init__.py +36 -0
  179. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/_errors.py +186 -0
  180. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/_prompt.py +272 -0
  181. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/_response.py +226 -0
  182. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/_stream.py +320 -0
  183. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/client.py +283 -0
  184. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/config.py +36 -0
  185. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/decision_model.py +161 -0
  186. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/error.py +23 -0
  187. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/__init__.py +3029 -0
  188. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/_recursive.py +15 -0
  189. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/_schemas_0.py +1015 -0
  190. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/_schemas_1.py +522 -0
  191. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/client.py +1445 -0
  192. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/generated/types.py +4769 -0
  193. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/language_model.py +345 -0
  194. pyfect_dev-0.1.0/src/pyfect/ai/openrouter/schema.py +165 -0
  195. pyfect_dev-0.1.0/src/pyfect/ai/prompt.py +664 -0
  196. pyfect_dev-0.1.0/src/pyfect/ai/response.py +768 -0
  197. pyfect_dev-0.1.0/src/pyfect/ai/response_id_tracker.py +82 -0
  198. pyfect_dev-0.1.0/src/pyfect/ai/telemetry.py +126 -0
  199. pyfect_dev-0.1.0/src/pyfect/ai/tokenizer.py +61 -0
  200. pyfect_dev-0.1.0/src/pyfect/ai/tool.py +536 -0
  201. pyfect_dev-0.1.0/src/pyfect/ai/toolkit.py +490 -0
  202. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/__init__.py +17 -0
  203. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/_errors.py +120 -0
  204. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/client.py +146 -0
  205. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/config.py +34 -0
  206. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/decision_model.py +90 -0
  207. pyfect_dev-0.1.0/src/pyfect/ai/typesafe/schema.py +140 -0
  208. pyfect_dev-0.1.0/src/pyfect/batching/__init__.py +58 -0
  209. pyfect_dev-0.1.0/src/pyfect/batching/_api.py +71 -0
  210. pyfect_dev-0.1.0/src/pyfect/batching/_engine.py +229 -0
  211. pyfect_dev-0.1.0/src/pyfect/batching/_from_effect.py +76 -0
  212. pyfect_dev-0.1.0/src/pyfect/batching/_persisted.py +98 -0
  213. pyfect_dev-0.1.0/src/pyfect/batching/_request.py +133 -0
  214. pyfect_dev-0.1.0/src/pyfect/batching/_resolver.py +477 -0
  215. pyfect_dev-0.1.0/src/pyfect/batching/_with_cache.py +90 -0
  216. pyfect_dev-0.1.0/src/pyfect/big_decimal.py +500 -0
  217. pyfect_dev-0.1.0/src/pyfect/brand.py +114 -0
  218. pyfect_dev-0.1.0/src/pyfect/byte_size.py +354 -0
  219. pyfect_dev-0.1.0/src/pyfect/cache/__init__.py +29 -0
  220. pyfect_dev-0.1.0/src/pyfect/cache/_cache.py +426 -0
  221. pyfect_dev-0.1.0/src/pyfect/cache/_expiry.py +69 -0
  222. pyfect_dev-0.1.0/src/pyfect/cache/_scoped_cache.py +546 -0
  223. pyfect_dev-0.1.0/src/pyfect/case.py +174 -0
  224. pyfect_dev-0.1.0/src/pyfect/cause.py +462 -0
  225. pyfect_dev-0.1.0/src/pyfect/channel/__init__.py +155 -0
  226. pyfect_dev-0.1.0/src/pyfect/channel/_base.py +92 -0
  227. pyfect_dev-0.1.0/src/pyfect/channel/_catch.py +158 -0
  228. pyfect_dev-0.1.0/src/pyfect/channel/_catch_reason.py +572 -0
  229. pyfect_dev-0.1.0/src/pyfect/channel/_channel.py +158 -0
  230. pyfect_dev-0.1.0/src/pyfect/channel/_combinators.py +220 -0
  231. pyfect_dev-0.1.0/src/pyfect/channel/_concurrency_methods.py +217 -0
  232. pyfect_dev-0.1.0/src/pyfect/channel/_concurrent_map.py +118 -0
  233. pyfect_dev-0.1.0/src/pyfect/channel/_constructors.py +349 -0
  234. pyfect_dev-0.1.0/src/pyfect/channel/_context.py +232 -0
  235. pyfect_dev-0.1.0/src/pyfect/channel/_error_methods.py +336 -0
  236. pyfect_dev-0.1.0/src/pyfect/channel/_errors.py +180 -0
  237. pyfect_dev-0.1.0/src/pyfect/channel/_filters.py +225 -0
  238. pyfect_dev-0.1.0/src/pyfect/channel/_lifecycle.py +71 -0
  239. pyfect_dev-0.1.0/src/pyfect/channel/_lifecycle_methods.py +206 -0
  240. pyfect_dev-0.1.0/src/pyfect/channel/_loop.py +100 -0
  241. pyfect_dev-0.1.0/src/pyfect/channel/_merge.py +246 -0
  242. pyfect_dev-0.1.0/src/pyfect/channel/_repeat.py +154 -0
  243. pyfect_dev-0.1.0/src/pyfect/channel/_run.py +149 -0
  244. pyfect_dev-0.1.0/src/pyfect/channel/_run_methods.py +341 -0
  245. pyfect_dev-0.1.0/src/pyfect/channel/_sinks.py +88 -0
  246. pyfect_dev-0.1.0/src/pyfect/channel/_sources.py +238 -0
  247. pyfect_dev-0.1.0/src/pyfect/channel/_text.py +176 -0
  248. pyfect_dev-0.1.0/src/pyfect/channel/_transform_methods.py +415 -0
  249. pyfect_dev-0.1.0/src/pyfect/channel/_upstream.py +67 -0
  250. pyfect_dev-0.1.0/src/pyfect/channel_schema.py +131 -0
  251. pyfect_dev-0.1.0/src/pyfect/cli/__init__.py +79 -0
  252. pyfect_dev-0.1.0/src/pyfect/cli/_ansi.py +82 -0
  253. pyfect_dev-0.1.0/src/pyfect/cli/_command.py +469 -0
  254. pyfect_dev-0.1.0/src/pyfect/cli/_config.py +164 -0
  255. pyfect_dev-0.1.0/src/pyfect/cli/_environment.py +10 -0
  256. pyfect_dev-0.1.0/src/pyfect/cli/_help.py +195 -0
  257. pyfect_dev-0.1.0/src/pyfect/cli/_lexer.py +81 -0
  258. pyfect_dev-0.1.0/src/pyfect/cli/_parser.py +465 -0
  259. pyfect_dev-0.1.0/src/pyfect/cli/_settings.py +85 -0
  260. pyfect_dev-0.1.0/src/pyfect/cli/_suggest.py +33 -0
  261. pyfect_dev-0.1.0/src/pyfect/cli/_width.py +134 -0
  262. pyfect_dev-0.1.0/src/pyfect/cli/_wizard.py +317 -0
  263. pyfect_dev-0.1.0/src/pyfect/cli/argument.py +212 -0
  264. pyfect_dev-0.1.0/src/pyfect/cli/cli_config.py +40 -0
  265. pyfect_dev-0.1.0/src/pyfect/cli/cli_error.py +242 -0
  266. pyfect_dev-0.1.0/src/pyfect/cli/cli_output.py +305 -0
  267. pyfect_dev-0.1.0/src/pyfect/cli/command.py +440 -0
  268. pyfect_dev-0.1.0/src/pyfect/cli/completions/__init__.py +50 -0
  269. pyfect_dev-0.1.0/src/pyfect/cli/completions/_completer.ps1 +190 -0
  270. pyfect_dev-0.1.0/src/pyfect/cli/completions/_descriptor.py +182 -0
  271. pyfect_dev-0.1.0/src/pyfect/cli/completions/bash.py +300 -0
  272. pyfect_dev-0.1.0/src/pyfect/cli/completions/fish.py +164 -0
  273. pyfect_dev-0.1.0/src/pyfect/cli/completions/powershell.py +156 -0
  274. pyfect_dev-0.1.0/src/pyfect/cli/completions/zsh.py +189 -0
  275. pyfect_dev-0.1.0/src/pyfect/cli/flag.py +246 -0
  276. pyfect_dev-0.1.0/src/pyfect/cli/global_flag.py +99 -0
  277. pyfect_dev-0.1.0/src/pyfect/cli/help_doc.py +63 -0
  278. pyfect_dev-0.1.0/src/pyfect/cli/param.py +789 -0
  279. pyfect_dev-0.1.0/src/pyfect/cli/primitive.py +308 -0
  280. pyfect_dev-0.1.0/src/pyfect/cli/prompt/__init__.py +75 -0
  281. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_auto_complete.py +205 -0
  282. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_choices.py +104 -0
  283. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_confirm.py +195 -0
  284. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_core.py +512 -0
  285. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_date.py +173 -0
  286. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_date_parts.py +387 -0
  287. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_file.py +372 -0
  288. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_multi_select.py +204 -0
  289. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_number.py +257 -0
  290. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_select.py +117 -0
  291. pyfect_dev-0.1.0/src/pyfect/cli/prompt/_text.py +239 -0
  292. pyfect_dev-0.1.0/src/pyfect/cli/terminal_capabilities.py +118 -0
  293. pyfect_dev-0.1.0/src/pyfect/clock.py +150 -0
  294. pyfect_dev-0.1.0/src/pyfect/cluster/__init__.py +155 -0
  295. pyfect_dev-0.1.0/src/pyfect/cluster/_cluster_abandon.py +36 -0
  296. pyfect_dev-0.1.0/src/pyfect/cluster/_cluster_layer.py +122 -0
  297. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_activation.py +16 -0
  298. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/__init__.py +22 -0
  299. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/_activation.py +540 -0
  300. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/_core.py +186 -0
  301. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/_decode.py +60 -0
  302. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/_manager.py +423 -0
  303. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_manager/_state.py +113 -0
  304. pyfect_dev-0.1.0/src/pyfect/cluster/_entity_reaper.py +94 -0
  305. pyfect_dev-0.1.0/src/pyfect/cluster/_hash.py +13 -0
  306. pyfect_dev-0.1.0/src/pyfect/cluster/_interruptors.py +88 -0
  307. pyfect_dev-0.1.0/src/pyfect/cluster/_resource_map.py +179 -0
  308. pyfect_dev-0.1.0/src/pyfect/cluster/_resource_ref.py +266 -0
  309. pyfect_dev-0.1.0/src/pyfect/cluster/_shard_lock.py +14 -0
  310. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_cron.py +230 -0
  311. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_error.py +81 -0
  312. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_http.py +210 -0
  313. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_metrics.py +54 -0
  314. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_schema.py +137 -0
  315. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_socket.py +197 -0
  316. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_workflow_engine/__init__.py +24 -0
  317. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_workflow_engine/_engine.py +1099 -0
  318. pyfect_dev-0.1.0/src/pyfect/cluster/cluster_workflow_engine/_entities.py +298 -0
  319. pyfect_dev-0.1.0/src/pyfect/cluster/deliver_at.py +31 -0
  320. pyfect_dev-0.1.0/src/pyfect/cluster/entity/__init__.py +39 -0
  321. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_entity.py +332 -0
  322. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_handlers.py +168 -0
  323. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_keep_alive.py +74 -0
  324. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_queue.py +103 -0
  325. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_request.py +34 -0
  326. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_services.py +23 -0
  327. pyfect_dev-0.1.0/src/pyfect/cluster/entity/_test_client.py +237 -0
  328. pyfect_dev-0.1.0/src/pyfect/cluster/entity_address.py +25 -0
  329. pyfect_dev-0.1.0/src/pyfect/cluster/entity_id.py +20 -0
  330. pyfect_dev-0.1.0/src/pyfect/cluster/entity_proxy.py +161 -0
  331. pyfect_dev-0.1.0/src/pyfect/cluster/entity_proxy_server.py +103 -0
  332. pyfect_dev-0.1.0/src/pyfect/cluster/entity_resource.py +122 -0
  333. pyfect_dev-0.1.0/src/pyfect/cluster/entity_type.py +20 -0
  334. pyfect_dev-0.1.0/src/pyfect/cluster/envelope.py +307 -0
  335. pyfect_dev-0.1.0/src/pyfect/cluster/http_runner.py +254 -0
  336. pyfect_dev-0.1.0/src/pyfect/cluster/k8s_http_client.py +281 -0
  337. pyfect_dev-0.1.0/src/pyfect/cluster/k8s_types.py +1394 -0
  338. pyfect_dev-0.1.0/src/pyfect/cluster/machine_id.py +21 -0
  339. pyfect_dev-0.1.0/src/pyfect/cluster/message.py +219 -0
  340. pyfect_dev-0.1.0/src/pyfect/cluster/message_storage/__init__.py +67 -0
  341. pyfect_dev-0.1.0/src/pyfect/cluster/message_storage/_encoded.py +393 -0
  342. pyfect_dev-0.1.0/src/pyfect/cluster/message_storage/_memory.py +386 -0
  343. pyfect_dev-0.1.0/src/pyfect/cluster/message_storage/_noop.py +109 -0
  344. pyfect_dev-0.1.0/src/pyfect/cluster/message_storage/_service.py +388 -0
  345. pyfect_dev-0.1.0/src/pyfect/cluster/reply.py +236 -0
  346. pyfect_dev-0.1.0/src/pyfect/cluster/runner.py +32 -0
  347. pyfect_dev-0.1.0/src/pyfect/cluster/runner_address.py +23 -0
  348. pyfect_dev-0.1.0/src/pyfect/cluster/runner_health.py +93 -0
  349. pyfect_dev-0.1.0/src/pyfect/cluster/runner_server.py +286 -0
  350. pyfect_dev-0.1.0/src/pyfect/cluster/runner_storage.py +212 -0
  351. pyfect_dev-0.1.0/src/pyfect/cluster/runners/__init__.py +55 -0
  352. pyfect_dev-0.1.0/src/pyfect/cluster/runners/_local.py +460 -0
  353. pyfect_dev-0.1.0/src/pyfect/cluster/runners/_noop.py +57 -0
  354. pyfect_dev-0.1.0/src/pyfect/cluster/runners/_rpc.py +290 -0
  355. pyfect_dev-0.1.0/src/pyfect/cluster/runners/_service.py +113 -0
  356. pyfect_dev-0.1.0/src/pyfect/cluster/shard_id.py +39 -0
  357. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/__init__.py +12 -0
  358. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_acquisition.py +490 -0
  359. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_clients.py +271 -0
  360. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_make.py +388 -0
  361. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_routing.py +296 -0
  362. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_runners_sync.py +198 -0
  363. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_service.py +91 -0
  364. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_singletons.py +183 -0
  365. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_state.py +296 -0
  366. pyfect_dev-0.1.0/src/pyfect/cluster/sharding/_storage_loop.py +421 -0
  367. pyfect_dev-0.1.0/src/pyfect/cluster/sharding_config.py +230 -0
  368. pyfect_dev-0.1.0/src/pyfect/cluster/sharding_registration_event.py +28 -0
  369. pyfect_dev-0.1.0/src/pyfect/cluster/single_runner.py +49 -0
  370. pyfect_dev-0.1.0/src/pyfect/cluster/singleton.py +36 -0
  371. pyfect_dev-0.1.0/src/pyfect/cluster/singleton_address.py +20 -0
  372. pyfect_dev-0.1.0/src/pyfect/cluster/snowflake.py +133 -0
  373. pyfect_dev-0.1.0/src/pyfect/cluster/socket_runner.py +67 -0
  374. pyfect_dev-0.1.0/src/pyfect/cluster/sql_message_storage.py +1001 -0
  375. pyfect_dev-0.1.0/src/pyfect/cluster/sql_runner_storage.py +841 -0
  376. pyfect_dev-0.1.0/src/pyfect/cluster/test_runner.py +23 -0
  377. pyfect_dev-0.1.0/src/pyfect/config/__init__.py +93 -0
  378. pyfect_dev-0.1.0/src/pyfect/config/_all.py +96 -0
  379. pyfect_dev-0.1.0/src/pyfect/config/_collections.py +291 -0
  380. pyfect_dev-0.1.0/src/pyfect/config/_config.py +261 -0
  381. pyfect_dev-0.1.0/src/pyfect/config/_constructors.py +106 -0
  382. pyfect_dev-0.1.0/src/pyfect/config/_error.py +27 -0
  383. pyfect_dev-0.1.0/src/pyfect/config/_leaf.py +92 -0
  384. pyfect_dev-0.1.0/src/pyfect/config/_scalars.py +193 -0
  385. pyfect_dev-0.1.0/src/pyfect/config/_schema.py +340 -0
  386. pyfect_dev-0.1.0/src/pyfect/config_provider/__init__.py +60 -0
  387. pyfect_dev-0.1.0/src/pyfect/config_provider/_dir.py +84 -0
  388. pyfect_dev-0.1.0/src/pyfect/config_provider/_dotenv.py +127 -0
  389. pyfect_dev-0.1.0/src/pyfect/config_provider/_env.py +79 -0
  390. pyfect_dev-0.1.0/src/pyfect/config_provider/_layers.py +80 -0
  391. pyfect_dev-0.1.0/src/pyfect/config_provider/_node.py +90 -0
  392. pyfect_dev-0.1.0/src/pyfect/config_provider/_provider.py +118 -0
  393. pyfect_dev-0.1.0/src/pyfect/config_provider/_unknown.py +62 -0
  394. pyfect_dev-0.1.0/src/pyfect/console/__init__.py +63 -0
  395. pyfect_dev-0.1.0/src/pyfect/console/_effects.py +134 -0
  396. pyfect_dev-0.1.0/src/pyfect/console/_live.py +156 -0
  397. pyfect_dev-0.1.0/src/pyfect/console/_service.py +49 -0
  398. pyfect_dev-0.1.0/src/pyfect/console/_table.py +90 -0
  399. pyfect_dev-0.1.0/src/pyfect/context.py +414 -0
  400. pyfect_dev-0.1.0/src/pyfect/cron/__init__.py +30 -0
  401. pyfect_dev-0.1.0/src/pyfect/cron/_model.py +183 -0
  402. pyfect_dev-0.1.0/src/pyfect/cron/_search.py +268 -0
  403. pyfect_dev-0.1.0/src/pyfect/cron/_text.py +202 -0
  404. pyfect_dev-0.1.0/src/pyfect/cron/_wall.py +42 -0
  405. pyfect_dev-0.1.0/src/pyfect/crypto.py +257 -0
  406. pyfect_dev-0.1.0/src/pyfect/date_time/__init__.py +77 -0
  407. pyfect_dev-0.1.0/src/pyfect/date_time/_calendar.py +209 -0
  408. pyfect_dev-0.1.0/src/pyfect/date_time/_current.py +118 -0
  409. pyfect_dev-0.1.0/src/pyfect/date_time/_epoch.py +22 -0
  410. pyfect_dev-0.1.0/src/pyfect/date_time/_iso.py +80 -0
  411. pyfect_dev-0.1.0/src/pyfect/date_time/_zones.py +135 -0
  412. pyfect_dev-0.1.0/src/pyfect/date_time/intl.py +144 -0
  413. pyfect_dev-0.1.0/src/pyfect/deferred.py +145 -0
  414. pyfect_dev-0.1.0/src/pyfect/devtools/__init__.py +24 -0
  415. pyfect_dev-0.1.0/src/pyfect/devtools/client.py +323 -0
  416. pyfect_dev-0.1.0/src/pyfect/devtools/layers.py +32 -0
  417. pyfect_dev-0.1.0/src/pyfect/devtools/schema.py +301 -0
  418. pyfect_dev-0.1.0/src/pyfect/devtools/server.py +72 -0
  419. pyfect_dev-0.1.0/src/pyfect/duration.py +295 -0
  420. pyfect_dev-0.1.0/src/pyfect/effect.py +565 -0
  421. pyfect_dev-0.1.0/src/pyfect/effectable.py +37 -0
  422. pyfect_dev-0.1.0/src/pyfect/encoding/__init__.py +62 -0
  423. pyfect_dev-0.1.0/src/pyfect/encoding/_archive.py +197 -0
  424. pyfect_dev-0.1.0/src/pyfect/encoding/_json_array_scanner.py +477 -0
  425. pyfect_dev-0.1.0/src/pyfect/encoding/base64.py +23 -0
  426. pyfect_dev-0.1.0/src/pyfect/encoding/base64_url.py +19 -0
  427. pyfect_dev-0.1.0/src/pyfect/encoding/encoding_error.py +17 -0
  428. pyfect_dev-0.1.0/src/pyfect/encoding/hex.py +28 -0
  429. pyfect_dev-0.1.0/src/pyfect/encoding/ini.py +188 -0
  430. pyfect_dev-0.1.0/src/pyfect/encoding/json_array.py +246 -0
  431. pyfect_dev-0.1.0/src/pyfect/encoding/ndjson.py +461 -0
  432. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/__init__.py +257 -0
  433. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_channels.py +173 -0
  434. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_compile.py +584 -0
  435. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_decode.py +848 -0
  436. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_dictionary.py +90 -0
  437. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_encode.py +838 -0
  438. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_fingerprint.py +168 -0
  439. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_layout.py +350 -0
  440. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_literals.py +47 -0
  441. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_parser.py +163 -0
  442. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_reader.py +148 -0
  443. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_target.py +310 -0
  444. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_values.py +133 -0
  445. pyfect_dev-0.1.0/src/pyfect/encoding/schema_binary/_wire.py +253 -0
  446. pyfect_dev-0.1.0/src/pyfect/encoding/sse.py +476 -0
  447. pyfect_dev-0.1.0/src/pyfect/encoding/tar/__init__.py +396 -0
  448. pyfect_dev-0.1.0/src/pyfect/encoding/tar/_decoder.py +220 -0
  449. pyfect_dev-0.1.0/src/pyfect/encoding/tar/_encoder.py +83 -0
  450. pyfect_dev-0.1.0/src/pyfect/encoding/tar/_header.py +494 -0
  451. pyfect_dev-0.1.0/src/pyfect/encoding/tar/_model.py +82 -0
  452. pyfect_dev-0.1.0/src/pyfect/encoding/toml.py +375 -0
  453. pyfect_dev-0.1.0/src/pyfect/encoding/xml/__init__.py +222 -0
  454. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_chars.py +119 -0
  455. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_collector.py +106 -0
  456. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_inputs.py +126 -0
  457. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_model.py +114 -0
  458. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_parser.py +694 -0
  459. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_scanner.py +180 -0
  460. pyfect_dev-0.1.0/src/pyfect/encoding/xml/_writer.py +238 -0
  461. pyfect_dev-0.1.0/src/pyfect/encoding/yaml.py +739 -0
  462. pyfect_dev-0.1.0/src/pyfect/encoding/zip/__init__.py +392 -0
  463. pyfect_dev-0.1.0/src/pyfect/encoding/zip/_decoder.py +378 -0
  464. pyfect_dev-0.1.0/src/pyfect/encoding/zip/_format.py +122 -0
  465. pyfect_dev-0.1.0/src/pyfect/encoding/zip/_inflate.py +65 -0
  466. pyfect_dev-0.1.0/src/pyfect/encoding/zip/_model.py +86 -0
  467. pyfect_dev-0.1.0/src/pyfect/encoding/zip/_writer.py +311 -0
  468. pyfect_dev-0.1.0/src/pyfect/error_reporter.py +240 -0
  469. pyfect_dev-0.1.0/src/pyfect/errors.py +321 -0
  470. pyfect_dev-0.1.0/src/pyfect/eventlog/__init__.py +77 -0
  471. pyfect_dev-0.1.0/src/pyfect/eventlog/_conflicts.py +94 -0
  472. pyfect_dev-0.1.0/src/pyfect/eventlog/_crypto.py +64 -0
  473. pyfect_dev-0.1.0/src/pyfect/eventlog/_identity.py +26 -0
  474. pyfect_dev-0.1.0/src/pyfect/eventlog/_identity_derivation.py +79 -0
  475. pyfect_dev-0.1.0/src/pyfect/eventlog/_transferable_bytes.py +55 -0
  476. pyfect_dev-0.1.0/src/pyfect/eventlog/_uuid.py +33 -0
  477. pyfect_dev-0.1.0/src/pyfect/eventlog/event.py +115 -0
  478. pyfect_dev-0.1.0/src/pyfect/eventlog/event_group.py +55 -0
  479. pyfect_dev-0.1.0/src/pyfect/eventlog/event_journal.py +630 -0
  480. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log.py +1039 -0
  481. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_encryption.py +219 -0
  482. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_message.py +357 -0
  483. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_remote.py +465 -0
  484. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_server.py +442 -0
  485. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_server_encrypted.py +322 -0
  486. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_server_unencrypted.py +814 -0
  487. pyfect_dev-0.1.0/src/pyfect/eventlog/event_log_session_auth.py +250 -0
  488. pyfect_dev-0.1.0/src/pyfect/eventlog/event_row.py +423 -0
  489. pyfect_dev-0.1.0/src/pyfect/eventlog/sql_event_journal.py +692 -0
  490. pyfect_dev-0.1.0/src/pyfect/eventlog/sql_event_log_server_encrypted.py +440 -0
  491. pyfect_dev-0.1.0/src/pyfect/eventlog/sql_event_log_server_unencrypted.py +568 -0
  492. pyfect_dev-0.1.0/src/pyfect/execution_plan/__init__.py +42 -0
  493. pyfect_dev-0.1.0/src/pyfect/execution_plan/_events.py +128 -0
  494. pyfect_dev-0.1.0/src/pyfect/execution_plan/_model.py +108 -0
  495. pyfect_dev-0.1.0/src/pyfect/execution_plan/_run.py +176 -0
  496. pyfect_dev-0.1.0/src/pyfect/exit.py +205 -0
  497. pyfect_dev-0.1.0/src/pyfect/fiber_handle.py +305 -0
  498. pyfect_dev-0.1.0/src/pyfect/fiber_map.py +350 -0
  499. pyfect_dev-0.1.0/src/pyfect/fiber_set.py +232 -0
  500. pyfect_dev-0.1.0/src/pyfect/file_system/__init__.py +69 -0
  501. pyfect_dev-0.1.0/src/pyfect/file_system/_copy.py +116 -0
  502. pyfect_dev-0.1.0/src/pyfect/file_system/_errors.py +32 -0
  503. pyfect_dev-0.1.0/src/pyfect/file_system/_file.py +177 -0
  504. pyfect_dev-0.1.0/src/pyfect/file_system/_live.py +351 -0
  505. pyfect_dev-0.1.0/src/pyfect/file_system/_model.py +72 -0
  506. pyfect_dev-0.1.0/src/pyfect/file_system/_noop.py +189 -0
  507. pyfect_dev-0.1.0/src/pyfect/file_system/_service.py +336 -0
  508. pyfect_dev-0.1.0/src/pyfect/file_system/_stat.py +69 -0
  509. pyfect_dev-0.1.0/src/pyfect/file_system/_watch.py +107 -0
  510. pyfect_dev-0.1.0/src/pyfect/filters.py +245 -0
  511. pyfect_dev-0.1.0/src/pyfect/graph/__init__.py +101 -0
  512. pyfect_dev-0.1.0/src/pyfect/graph/_all_pairs.py +150 -0
  513. pyfect_dev-0.1.0/src/pyfect/graph/_combine.py +259 -0
  514. pyfect_dev-0.1.0/src/pyfect/graph/_compact.py +143 -0
  515. pyfect_dev-0.1.0/src/pyfect/graph/_components.py +200 -0
  516. pyfect_dev-0.1.0/src/pyfect/graph/_cycles.py +144 -0
  517. pyfect_dev-0.1.0/src/pyfect/graph/_enumerate.py +168 -0
  518. pyfect_dev-0.1.0/src/pyfect/graph/_errors.py +51 -0
  519. pyfect_dev-0.1.0/src/pyfect/graph/_flow.py +164 -0
  520. pyfect_dev-0.1.0/src/pyfect/graph/_forest.py +109 -0
  521. pyfect_dev-0.1.0/src/pyfect/graph/_graph.py +269 -0
  522. pyfect_dev-0.1.0/src/pyfect/graph/_lowlink.py +98 -0
  523. pyfect_dev-0.1.0/src/pyfect/graph/_matching.py +101 -0
  524. pyfect_dev-0.1.0/src/pyfect/graph/_mutate.py +211 -0
  525. pyfect_dev-0.1.0/src/pyfect/graph/_query.py +138 -0
  526. pyfect_dev-0.1.0/src/pyfect/graph/_records.py +119 -0
  527. pyfect_dev-0.1.0/src/pyfect/graph/_render.py +109 -0
  528. pyfect_dev-0.1.0/src/pyfect/graph/_shortest.py +274 -0
  529. pyfect_dev-0.1.0/src/pyfect/graph/_snapshot.py +50 -0
  530. pyfect_dev-0.1.0/src/pyfect/graph/_store.py +136 -0
  531. pyfect_dev-0.1.0/src/pyfect/graph/_traverse.py +289 -0
  532. pyfect_dev-0.1.0/src/pyfect/graph/_view.py +384 -0
  533. pyfect_dev-0.1.0/src/pyfect/graph/_walker.py +70 -0
  534. pyfect_dev-0.1.0/src/pyfect/graphql/__init__.py +87 -0
  535. pyfect_dev-0.1.0/src/pyfect/graphql/_codec.py +117 -0
  536. pyfect_dev-0.1.0/src/pyfect/graphql/_http.py +309 -0
  537. pyfect_dev-0.1.0/src/pyfect/graphql/_schemas.py +39 -0
  538. pyfect_dev-0.1.0/src/pyfect/graphql/_slices.py +110 -0
  539. pyfect_dev-0.1.0/src/pyfect/graphql/_template.py +111 -0
  540. pyfect_dev-0.1.0/src/pyfect/graphql/_types.py +115 -0
  541. pyfect_dev-0.1.0/src/pyfect/graphql/_ws.py +395 -0
  542. pyfect_dev-0.1.0/src/pyfect/graphql/_ws_messages.py +120 -0
  543. pyfect_dev-0.1.0/src/pyfect/graphql/client.py +428 -0
  544. pyfect_dev-0.1.0/src/pyfect/graphql/client_error.py +285 -0
  545. pyfect_dev-0.1.0/src/pyfect/graphql/group.py +142 -0
  546. pyfect_dev-0.1.0/src/pyfect/graphql/middleware.py +98 -0
  547. pyfect_dev-0.1.0/src/pyfect/graphql/operation.py +409 -0
  548. pyfect_dev-0.1.0/src/pyfect/graphql/protocol.py +119 -0
  549. pyfect_dev-0.1.0/src/pyfect/graphql/resolver.py +574 -0
  550. pyfect_dev-0.1.0/src/pyfect/graphql/template.py +61 -0
  551. pyfect_dev-0.1.0/src/pyfect/hash_map.py +317 -0
  552. pyfect_dev-0.1.0/src/pyfect/hash_ring.py +206 -0
  553. pyfect_dev-0.1.0/src/pyfect/hash_set.py +163 -0
  554. pyfect_dev-0.1.0/src/pyfect/http/__init__.py +125 -0
  555. pyfect_dev-0.1.0/src/pyfect/http/_asgi_listener.py +272 -0
  556. pyfect_dev-0.1.0/src/pyfect/http/_authority.py +63 -0
  557. pyfect_dev-0.1.0/src/pyfect/http/_brotli.py +27 -0
  558. pyfect_dev-0.1.0/src/pyfect/http/_compression.py +52 -0
  559. pyfect_dev-0.1.0/src/pyfect/http/_field.py +18 -0
  560. pyfect_dev-0.1.0/src/pyfect/http/_foreign_path.py +27 -0
  561. pyfect_dev-0.1.0/src/pyfect/http/_form_data.py +34 -0
  562. pyfect_dev-0.1.0/src/pyfect/http/_httpx_options.py +120 -0
  563. pyfect_dev-0.1.0/src/pyfect/http/_in_memory.py +76 -0
  564. pyfect_dev-0.1.0/src/pyfect/http/_request_state.py +59 -0
  565. pyfect_dev-0.1.0/src/pyfect/http/_vary.py +14 -0
  566. pyfect_dev-0.1.0/src/pyfect/http/abort.py +65 -0
  567. pyfect_dev-0.1.0/src/pyfect/http/asgi/__init__.py +59 -0
  568. pyfect_dev-0.1.0/src/pyfect/http/asgi/_app.py +155 -0
  569. pyfect_dev-0.1.0/src/pyfect/http/asgi/_http.py +201 -0
  570. pyfect_dev-0.1.0/src/pyfect/http/asgi/_mount.py +263 -0
  571. pyfect_dev-0.1.0/src/pyfect/http/asgi/_scope.py +86 -0
  572. pyfect_dev-0.1.0/src/pyfect/http/asgi/_serve.py +72 -0
  573. pyfect_dev-0.1.0/src/pyfect/http/asgi/_types.py +13 -0
  574. pyfect_dev-0.1.0/src/pyfect/http/asgi/_web_socket.py +325 -0
  575. pyfect_dev-0.1.0/src/pyfect/http/body.py +437 -0
  576. pyfect_dev-0.1.0/src/pyfect/http/client/__init__.py +111 -0
  577. pyfect_dev-0.1.0/src/pyfect/http/client/_circuit_breaker.py +113 -0
  578. pyfect_dev-0.1.0/src/pyfect/http/client/_cookie_jar.py +120 -0
  579. pyfect_dev-0.1.0/src/pyfect/http/client/_make.py +252 -0
  580. pyfect_dev-0.1.0/src/pyfect/http/client/_rate_limit.py +423 -0
  581. pyfect_dev-0.1.0/src/pyfect/http/client/_redirects.py +93 -0
  582. pyfect_dev-0.1.0/src/pyfect/http/client/_retry.py +115 -0
  583. pyfect_dev-0.1.0/src/pyfect/http/client/_service.py +497 -0
  584. pyfect_dev-0.1.0/src/pyfect/http/cookies.py +444 -0
  585. pyfect_dev-0.1.0/src/pyfect/http/error.py +188 -0
  586. pyfect_dev-0.1.0/src/pyfect/http/etag.py +96 -0
  587. pyfect_dev-0.1.0/src/pyfect/http/file_like.py +49 -0
  588. pyfect_dev-0.1.0/src/pyfect/http/find_my_way/__init__.py +10 -0
  589. pyfect_dev-0.1.0/src/pyfect/http/find_my_way/_nodes.py +186 -0
  590. pyfect_dev-0.1.0/src/pyfect/http/find_my_way/_paths.py +43 -0
  591. pyfect_dev-0.1.0/src/pyfect/http/find_my_way/_query_string.py +67 -0
  592. pyfect_dev-0.1.0/src/pyfect/http/find_my_way/_router.py +401 -0
  593. pyfect_dev-0.1.0/src/pyfect/http/headers.py +343 -0
  594. pyfect_dev-0.1.0/src/pyfect/http/http_effect.py +198 -0
  595. pyfect_dev-0.1.0/src/pyfect/http/httpx_client.py +291 -0
  596. pyfect_dev-0.1.0/src/pyfect/http/hypercorn_server.py +122 -0
  597. pyfect_dev-0.1.0/src/pyfect/http/incoming_message.py +140 -0
  598. pyfect_dev-0.1.0/src/pyfect/http/live_server/__init__.py +191 -0
  599. pyfect_dev-0.1.0/src/pyfect/http/live_server/_body.py +164 -0
  600. pyfect_dev-0.1.0/src/pyfect/http/live_server/_exchange.py +321 -0
  601. pyfect_dev-0.1.0/src/pyfect/http/live_server/_head.py +194 -0
  602. pyfect_dev-0.1.0/src/pyfect/http/live_server/_inbound.py +156 -0
  603. pyfect_dev-0.1.0/src/pyfect/http/live_server/_listener.py +211 -0
  604. pyfect_dev-0.1.0/src/pyfect/http/live_server/_serve.py +225 -0
  605. pyfect_dev-0.1.0/src/pyfect/http/live_server/_timers.py +20 -0
  606. pyfect_dev-0.1.0/src/pyfect/http/live_server/_upgrade.py +108 -0
  607. pyfect_dev-0.1.0/src/pyfect/http/live_server/_websocket.py +286 -0
  608. pyfect_dev-0.1.0/src/pyfect/http/live_server/_ws_frames.py +242 -0
  609. pyfect_dev-0.1.0/src/pyfect/http/method.py +30 -0
  610. pyfect_dev-0.1.0/src/pyfect/http/middleware/__init__.py +61 -0
  611. pyfect_dev-0.1.0/src/pyfect/http/middleware/_compression.py +156 -0
  612. pyfect_dev-0.1.0/src/pyfect/http/middleware/_cors.py +129 -0
  613. pyfect_dev-0.1.0/src/pyfect/http/middleware/_decompression.py +274 -0
  614. pyfect_dev-0.1.0/src/pyfect/http/middleware/_forwarded.py +113 -0
  615. pyfect_dev-0.1.0/src/pyfect/http/middleware/_logger.py +73 -0
  616. pyfect_dev-0.1.0/src/pyfect/http/middleware/_search_params.py +34 -0
  617. pyfect_dev-0.1.0/src/pyfect/http/middleware/_tracer.py +153 -0
  618. pyfect_dev-0.1.0/src/pyfect/http/middleware/_types.py +16 -0
  619. pyfect_dev-0.1.0/src/pyfect/http/mime/__init__.py +69 -0
  620. pyfect_dev-0.1.0/src/pyfect/http/mime/_types.py +361 -0
  621. pyfect_dev-0.1.0/src/pyfect/http/multipart.py +613 -0
  622. pyfect_dev-0.1.0/src/pyfect/http/multipart_parser/__init__.py +348 -0
  623. pyfect_dev-0.1.0/src/pyfect/http/multipart_parser/_content_type.py +109 -0
  624. pyfect_dev-0.1.0/src/pyfect/http/multipart_parser/_headers.py +206 -0
  625. pyfect_dev-0.1.0/src/pyfect/http/multipart_parser/_search.py +85 -0
  626. pyfect_dev-0.1.0/src/pyfect/http/origin.py +146 -0
  627. pyfect_dev-0.1.0/src/pyfect/http/platform.py +593 -0
  628. pyfect_dev-0.1.0/src/pyfect/http/prometheus.py +34 -0
  629. pyfect_dev-0.1.0/src/pyfect/http/request.py +384 -0
  630. pyfect_dev-0.1.0/src/pyfect/http/response.py +474 -0
  631. pyfect_dev-0.1.0/src/pyfect/http/router/__init__.py +82 -0
  632. pyfect_dev-0.1.0/src/pyfect/http/router/_api.py +462 -0
  633. pyfect_dev-0.1.0/src/pyfect/http/router/_in_memory.py +76 -0
  634. pyfect_dev-0.1.0/src/pyfect/http/router/_markers.py +47 -0
  635. pyfect_dev-0.1.0/src/pyfect/http/router/_middleware.py +181 -0
  636. pyfect_dev-0.1.0/src/pyfect/http/router/_middleware_stack.py +51 -0
  637. pyfect_dev-0.1.0/src/pyfect/http/router/_provided.py +31 -0
  638. pyfect_dev-0.1.0/src/pyfect/http/router/_route.py +114 -0
  639. pyfect_dev-0.1.0/src/pyfect/http/router/_router.py +308 -0
  640. pyfect_dev-0.1.0/src/pyfect/http/schema.py +276 -0
  641. pyfect_dev-0.1.0/src/pyfect/http/server.py +199 -0
  642. pyfect_dev-0.1.0/src/pyfect/http/server_error.py +261 -0
  643. pyfect_dev-0.1.0/src/pyfect/http/server_request.py +729 -0
  644. pyfect_dev-0.1.0/src/pyfect/http/server_respondable.py +77 -0
  645. pyfect_dev-0.1.0/src/pyfect/http/server_response.py +569 -0
  646. pyfect_dev-0.1.0/src/pyfect/http/static_server/__init__.py +257 -0
  647. pyfect_dev-0.1.0/src/pyfect/http/static_server/_conditional.py +72 -0
  648. pyfect_dev-0.1.0/src/pyfect/http/static_server/_mime.py +55 -0
  649. pyfect_dev-0.1.0/src/pyfect/http/static_server/_range.py +53 -0
  650. pyfect_dev-0.1.0/src/pyfect/http/status.py +51 -0
  651. pyfect_dev-0.1.0/src/pyfect/http/template.py +161 -0
  652. pyfect_dev-0.1.0/src/pyfect/http/trace_context.py +91 -0
  653. pyfect_dev-0.1.0/src/pyfect/http/url.py +442 -0
  654. pyfect_dev-0.1.0/src/pyfect/http/url_params.py +304 -0
  655. pyfect_dev-0.1.0/src/pyfect/http/uvicorn_server.py +119 -0
  656. pyfect_dev-0.1.0/src/pyfect/http/web.py +171 -0
  657. pyfect_dev-0.1.0/src/pyfect/http/web_handler.py +463 -0
  658. pyfect_dev-0.1.0/src/pyfect/http/wire.py +209 -0
  659. pyfect_dev-0.1.0/src/pyfect/http_api/__init__.py +83 -0
  660. pyfect_dev-0.1.0/src/pyfect/http_api/_assets/scalar.js +8 -0
  661. pyfect_dev-0.1.0/src/pyfect/http_api/_assets/swagger-ui.css +3 -0
  662. pyfect_dev-0.1.0/src/pyfect/http_api/_assets/swagger-ui.js +4 -0
  663. pyfect_dev-0.1.0/src/pyfect/http_api/_client_method.py +220 -0
  664. pyfect_dev-0.1.0/src/pyfect/http_api/_client_payload.py +144 -0
  665. pyfect_dev-0.1.0/src/pyfect/http_api/_client_response.py +377 -0
  666. pyfect_dev-0.1.0/src/pyfect/http_api/_handlers.py +282 -0
  667. pyfect_dev-0.1.0/src/pyfect/http_api/_html.py +38 -0
  668. pyfect_dev-0.1.0/src/pyfect/http_api/_media_type.py +6 -0
  669. pyfect_dev-0.1.0/src/pyfect/http_api/_openapi_responses.py +164 -0
  670. pyfect_dev-0.1.0/src/pyfect/http_api/_openapi_schemas.py +163 -0
  671. pyfect_dev-0.1.0/src/pyfect/http_api/_path.py +102 -0
  672. pyfect_dev-0.1.0/src/pyfect/http_api/_payload.py +260 -0
  673. pyfect_dev-0.1.0/src/pyfect/http_api/_response.py +363 -0
  674. pyfect_dev-0.1.0/src/pyfect/http_api/_security.py +174 -0
  675. pyfect_dev-0.1.0/src/pyfect/http_api/api.py +265 -0
  676. pyfect_dev-0.1.0/src/pyfect/http_api/builder.py +447 -0
  677. pyfect_dev-0.1.0/src/pyfect/http_api/client.py +474 -0
  678. pyfect_dev-0.1.0/src/pyfect/http_api/endpoint.py +969 -0
  679. pyfect_dev-0.1.0/src/pyfect/http_api/error.py +280 -0
  680. pyfect_dev-0.1.0/src/pyfect/http_api/group.py +215 -0
  681. pyfect_dev-0.1.0/src/pyfect/http_api/middleware.py +232 -0
  682. pyfect_dev-0.1.0/src/pyfect/http_api/openapi.py +396 -0
  683. pyfect_dev-0.1.0/src/pyfect/http_api/scalar.py +143 -0
  684. pyfect_dev-0.1.0/src/pyfect/http_api/schema.py +713 -0
  685. pyfect_dev-0.1.0/src/pyfect/http_api/security.py +91 -0
  686. pyfect_dev-0.1.0/src/pyfect/http_api/swagger.py +69 -0
  687. pyfect_dev-0.1.0/src/pyfect/http_api/test.py +105 -0
  688. pyfect_dev-0.1.0/src/pyfect/json_patch.py +255 -0
  689. pyfect_dev-0.1.0/src/pyfect/json_pointer.py +100 -0
  690. pyfect_dev-0.1.0/src/pyfect/json_schema/__init__.py +66 -0
  691. pyfect_dev-0.1.0/src/pyfect/json_schema/_api.py +96 -0
  692. pyfect_dev-0.1.0/src/pyfect/json_schema/_converter.py +258 -0
  693. pyfect_dev-0.1.0/src/pyfect/json_schema/_draft04.py +198 -0
  694. pyfect_dev-0.1.0/src/pyfect/json_schema/_draft07.py +203 -0
  695. pyfect_dev-0.1.0/src/pyfect/json_schema/_keywords.py +202 -0
  696. pyfect_dev-0.1.0/src/pyfect/json_schema/_model.py +201 -0
  697. pyfect_dev-0.1.0/src/pyfect/json_schema/_openapi.py +208 -0
  698. pyfect_dev-0.1.0/src/pyfect/latch.py +127 -0
  699. pyfect_dev-0.1.0/src/pyfect/layer.py +479 -0
  700. pyfect_dev-0.1.0/src/pyfect/layer_map.py +279 -0
  701. pyfect_dev-0.1.0/src/pyfect/layer_ref.py +208 -0
  702. pyfect_dev-0.1.0/src/pyfect/logger/__init__.py +91 -0
  703. pyfect_dev-0.1.0/src/pyfect/logger/_batched.py +49 -0
  704. pyfect_dev-0.1.0/src/pyfect/logger/_console.py +116 -0
  705. pyfect_dev-0.1.0/src/pyfect/logger/_file.py +31 -0
  706. pyfect_dev-0.1.0/src/pyfect/logger/_formats.py +104 -0
  707. pyfect_dev-0.1.0/src/pyfect/logger/_layer.py +50 -0
  708. pyfect_dev-0.1.0/src/pyfect/logger/_level.py +53 -0
  709. pyfect_dev-0.1.0/src/pyfect/logger/_log.py +142 -0
  710. pyfect_dev-0.1.0/src/pyfect/logger/_model.py +163 -0
  711. pyfect_dev-0.1.0/src/pyfect/logger/_refs.py +78 -0
  712. pyfect_dev-0.1.0/src/pyfect/logger/_stdlib.py +54 -0
  713. pyfect_dev-0.1.0/src/pyfect/logger/_text.py +263 -0
  714. pyfect_dev-0.1.0/src/pyfect/logger/_tracer.py +35 -0
  715. pyfect_dev-0.1.0/src/pyfect/managed_runtime.py +393 -0
  716. pyfect_dev-0.1.0/src/pyfect/metric/__init__.py +119 -0
  717. pyfect_dev-0.1.0/src/pyfect/metric/_boundaries.py +27 -0
  718. pyfect_dev-0.1.0/src/pyfect/metric/_kinds.py +417 -0
  719. pyfect_dev-0.1.0/src/pyfect/metric/_metric.py +302 -0
  720. pyfect_dev-0.1.0/src/pyfect/metric/_prometheus.py +150 -0
  721. pyfect_dev-0.1.0/src/pyfect/metric/_refs.py +78 -0
  722. pyfect_dev-0.1.0/src/pyfect/metric/_runtime.py +75 -0
  723. pyfect_dev-0.1.0/src/pyfect/metric/_snapshot.py +97 -0
  724. pyfect_dev-0.1.0/src/pyfect/metric/_state.py +74 -0
  725. pyfect_dev-0.1.0/src/pyfect/msgspec.py +98 -0
  726. pyfect_dev-0.1.0/src/pyfect/mutable_hash_map.py +140 -0
  727. pyfect_dev-0.1.0/src/pyfect/mutable_hash_set.py +95 -0
  728. pyfect_dev-0.1.0/src/pyfect/net/__init__.py +18 -0
  729. pyfect_dev-0.1.0/src/pyfect/net/_errors.py +29 -0
  730. pyfect_dev-0.1.0/src/pyfect/net/address_resolver.py +179 -0
  731. pyfect_dev-0.1.0/src/pyfect/net/dns/__init__.py +92 -0
  732. pyfect_dev-0.1.0/src/pyfect/net/dns/_error.py +43 -0
  733. pyfect_dev-0.1.0/src/pyfect/net/dns/_records.py +335 -0
  734. pyfect_dev-0.1.0/src/pyfect/net/dns/_service.py +287 -0
  735. pyfect_dev-0.1.0/src/pyfect/net/dns/_system.py +89 -0
  736. pyfect_dev-0.1.0/src/pyfect/net/host.py +311 -0
  737. pyfect_dev-0.1.0/src/pyfect/net/ip_interface.py +202 -0
  738. pyfect_dev-0.1.0/src/pyfect/net/ip_network.py +250 -0
  739. pyfect_dev-0.1.0/src/pyfect/net/net_address/__init__.py +245 -0
  740. pyfect_dev-0.1.0/src/pyfect/net/net_address/_inet.py +412 -0
  741. pyfect_dev-0.1.0/src/pyfect/net/net_address/_ip.py +348 -0
  742. pyfect_dev-0.1.0/src/pyfect/net/net_address/_mac.py +119 -0
  743. pyfect_dev-0.1.0/src/pyfect/optic/__init__.py +50 -0
  744. pyfect_dev-0.1.0/src/pyfect/optic/_builtins.py +90 -0
  745. pyfect_dev-0.1.0/src/pyfect/optic/_data.py +97 -0
  746. pyfect_dev-0.1.0/src/pyfect/optic/_optic.py +422 -0
  747. pyfect_dev-0.1.0/src/pyfect/optic/_steps.py +151 -0
  748. pyfect_dev-0.1.0/src/pyfect/option.py +362 -0
  749. pyfect_dev-0.1.0/src/pyfect/otel/__init__.py +22 -0
  750. pyfect_dev-0.1.0/src/pyfect/otel/_attributes.py +67 -0
  751. pyfect_dev-0.1.0/src/pyfect/otel/_producer.py +322 -0
  752. pyfect_dev-0.1.0/src/pyfect/otel/_shutdown.py +26 -0
  753. pyfect_dev-0.1.0/src/pyfect/otel/_span.py +292 -0
  754. pyfect_dev-0.1.0/src/pyfect/otel/_wrapper.py +92 -0
  755. pyfect_dev-0.1.0/src/pyfect/otel/logger.py +154 -0
  756. pyfect_dev-0.1.0/src/pyfect/otel/metrics.py +126 -0
  757. pyfect_dev-0.1.0/src/pyfect/otel/resource.py +111 -0
  758. pyfect_dev-0.1.0/src/pyfect/otel/sdk.py +195 -0
  759. pyfect_dev-0.1.0/src/pyfect/otel/tracer.py +157 -0
  760. pyfect_dev-0.1.0/src/pyfect/partitioned_semaphore.py +211 -0
  761. pyfect_dev-0.1.0/src/pyfect/path.py +304 -0
  762. pyfect_dev-0.1.0/src/pyfect/persistence/__init__.py +77 -0
  763. pyfect_dev-0.1.0/src/pyfect/persistence/_columns.py +32 -0
  764. pyfect_dev-0.1.0/src/pyfect/persistence/_error.py +14 -0
  765. pyfect_dev-0.1.0/src/pyfect/persistence/_seconds.py +68 -0
  766. pyfect_dev-0.1.0/src/pyfect/persistence/_sql_keys.py +47 -0
  767. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/__init__.py +120 -0
  768. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_breaker.py +317 -0
  769. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_errors.py +67 -0
  770. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_memory.py +243 -0
  771. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_redis.py +509 -0
  772. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_store.py +60 -0
  773. pyfect_dev-0.1.0/src/pyfect/persistence/circuit_breaker/_types.py +191 -0
  774. pyfect_dev-0.1.0/src/pyfect/persistence/key_value_store/__init__.py +51 -0
  775. pyfect_dev-0.1.0/src/pyfect/persistence/key_value_store/_layers.py +216 -0
  776. pyfect_dev-0.1.0/src/pyfect/persistence/key_value_store/_schema_store.py +91 -0
  777. pyfect_dev-0.1.0/src/pyfect/persistence/key_value_store/_sql.py +197 -0
  778. pyfect_dev-0.1.0/src/pyfect/persistence/key_value_store/_store.py +212 -0
  779. pyfect_dev-0.1.0/src/pyfect/persistence/persistable.py +164 -0
  780. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_cache.py +159 -0
  781. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/__init__.py +75 -0
  782. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_error.py +42 -0
  783. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_mailbox.py +101 -0
  784. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_memory.py +182 -0
  785. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_queue.py +272 -0
  786. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_redis.py +455 -0
  787. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_redis_scripts.py +395 -0
  788. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_sql.py +334 -0
  789. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_sql_migrations.py +319 -0
  790. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_sql_statements.py +441 -0
  791. pyfect_dev-0.1.0/src/pyfect/persistence/persisted_queue/_store.py +147 -0
  792. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/__init__.py +84 -0
  793. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/_kvs.py +135 -0
  794. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/_memory.py +62 -0
  795. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/_redis.py +162 -0
  796. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/_service.py +276 -0
  797. pyfect_dev-0.1.0/src/pyfect/persistence/persistence/_sql.py +499 -0
  798. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/__init__.py +82 -0
  799. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/_errors.py +59 -0
  800. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/_limiter.py +325 -0
  801. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/_memory.py +217 -0
  802. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/_redis.py +485 -0
  803. pyfect_dev-0.1.0/src/pyfect/persistence/rate_limiter/_store.py +89 -0
  804. pyfect_dev-0.1.0/src/pyfect/persistence/redis/__init__.py +52 -0
  805. pyfect_dev-0.1.0/src/pyfect/persistence/redis/_error.py +12 -0
  806. pyfect_dev-0.1.0/src/pyfect/persistence/redis/_make.py +234 -0
  807. pyfect_dev-0.1.0/src/pyfect/persistence/redis/_script.py +78 -0
  808. pyfect_dev-0.1.0/src/pyfect/persistence/redis/_service.py +104 -0
  809. pyfect_dev-0.1.0/src/pyfect/persistence/redis_py.py +303 -0
  810. pyfect_dev-0.1.0/src/pyfect/persistence/user_directories.py +195 -0
  811. pyfect_dev-0.1.0/src/pyfect/platform.py +26 -0
  812. pyfect_dev-0.1.0/src/pyfect/platform_error.py +256 -0
  813. pyfect_dev-0.1.0/src/pyfect/pool/__init__.py +36 -0
  814. pyfect_dev-0.1.0/src/pyfect/pool/_pool.py +707 -0
  815. pyfect_dev-0.1.0/src/pyfect/pool/_state.py +161 -0
  816. pyfect_dev-0.1.0/src/pyfect/pool/_ttl.py +105 -0
  817. pyfect_dev-0.1.0/src/pyfect/pool/_waiters.py +116 -0
  818. pyfect_dev-0.1.0/src/pyfect/primary_key.py +35 -0
  819. pyfect_dev-0.1.0/src/pyfect/process/__init__.py +82 -0
  820. pyfect_dev-0.1.0/src/pyfect/process/_child.py +213 -0
  821. pyfect_dev-0.1.0/src/pyfect/process/_command.py +358 -0
  822. pyfect_dev-0.1.0/src/pyfect/process/_handle.py +77 -0
  823. pyfect_dev-0.1.0/src/pyfect/process/_live.py +455 -0
  824. pyfect_dev-0.1.0/src/pyfect/process/_os.py +78 -0
  825. pyfect_dev-0.1.0/src/pyfect/process/_pipes.py +291 -0
  826. pyfect_dev-0.1.0/src/pyfect/process/_spawner.py +75 -0
  827. pyfect_dev-0.1.0/src/pyfect/pubsub/__init__.py +33 -0
  828. pyfect_dev-0.1.0/src/pyfect/pubsub/_atomic.py +181 -0
  829. pyfect_dev-0.1.0/src/pyfect/pubsub/_hub.py +214 -0
  830. pyfect_dev-0.1.0/src/pyfect/pubsub/_pubsub.py +214 -0
  831. pyfect_dev-0.1.0/src/pyfect/pubsub/_replay.py +107 -0
  832. pyfect_dev-0.1.0/src/pyfect/pubsub/_subscription.py +226 -0
  833. pyfect_dev-0.1.0/src/pyfect/pull.py +132 -0
  834. pyfect_dev-0.1.0/src/pyfect/py.typed +0 -0
  835. pyfect_dev-0.1.0/src/pyfect/pydantic.py +188 -0
  836. pyfect_dev-0.1.0/src/pyfect/queue/__init__.py +33 -0
  837. pyfect_dev-0.1.0/src/pyfect/queue/_queue.py +525 -0
  838. pyfect_dev-0.1.0/src/pyfect/queue/_state.py +111 -0
  839. pyfect_dev-0.1.0/src/pyfect/queue/_views.py +55 -0
  840. pyfect_dev-0.1.0/src/pyfect/random.py +146 -0
  841. pyfect_dev-0.1.0/src/pyfect/rc_map.py +363 -0
  842. pyfect_dev-0.1.0/src/pyfect/rc_ref.py +271 -0
  843. pyfect_dev-0.1.0/src/pyfect/reactivity/__init__.py +53 -0
  844. pyfect_dev-0.1.0/src/pyfect/reactivity/_async_result_schema.py +227 -0
  845. pyfect_dev-0.1.0/src/pyfect/reactivity/_hydration.py +18 -0
  846. pyfect_dev-0.1.0/src/pyfect/reactivity/_live.py +21 -0
  847. pyfect_dev-0.1.0/src/pyfect/reactivity/_reactivity.py +256 -0
  848. pyfect_dev-0.1.0/src/pyfect/reactivity/_result_effect.py +17 -0
  849. pyfect_dev-0.1.0/src/pyfect/reactivity/_time.py +11 -0
  850. pyfect_dev-0.1.0/src/pyfect/reactivity/async_result.py +679 -0
  851. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/__init__.py +143 -0
  852. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_combinators.py +223 -0
  853. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_constructors.py +80 -0
  854. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_conversions.py +79 -0
  855. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_effect.py +252 -0
  856. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_fn.py +341 -0
  857. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_kvs.py +101 -0
  858. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_optimistic.py +162 -0
  859. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_runtime.py +323 -0
  860. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_serializable.py +65 -0
  861. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_subscription_ref.py +102 -0
  862. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_swr.py +69 -0
  863. pyfect_dev-0.1.0/src/pyfect/reactivity/atom/_types.py +435 -0
  864. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_http_api.py +667 -0
  865. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_ref.py +260 -0
  866. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/__init__.py +219 -0
  867. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/_batch.py +96 -0
  868. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/_dispatcher.py +60 -0
  869. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/_lifetime.py +202 -0
  870. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/_node.py +423 -0
  871. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_registry/_registry.py +380 -0
  872. pyfect_dev-0.1.0/src/pyfect/reactivity/atom_rpc.py +283 -0
  873. pyfect_dev-0.1.0/src/pyfect/reactivity/hydration.py +200 -0
  874. pyfect_dev-0.1.0/src/pyfect/redacted.py +83 -0
  875. pyfect_dev-0.1.0/src/pyfect/ref.py +129 -0
  876. pyfect_dev-0.1.0/src/pyfect/resource.py +98 -0
  877. pyfect_dev-0.1.0/src/pyfect/result.py +306 -0
  878. pyfect_dev-0.1.0/src/pyfect/rpc/__init__.py +64 -0
  879. pyfect_dev-0.1.0/src/pyfect/rpc/_encoded_schema.py +86 -0
  880. pyfect_dev-0.1.0/src/pyfect/rpc/_json_rpc.py +246 -0
  881. pyfect_dev-0.1.0/src/pyfect/rpc/_methods.py +177 -0
  882. pyfect_dev-0.1.0/src/pyfect/rpc/_rpc.py +498 -0
  883. pyfect_dev-0.1.0/src/pyfect/rpc/client/__init__.py +100 -0
  884. pyfect_dev-0.1.0/src/pyfect/rpc/client/_core.py +449 -0
  885. pyfect_dev-0.1.0/src/pyfect/rpc/client/_http.py +257 -0
  886. pyfect_dev-0.1.0/src/pyfect/rpc/client/_protocol.py +171 -0
  887. pyfect_dev-0.1.0/src/pyfect/rpc/client/_serialized.py +321 -0
  888. pyfect_dev-0.1.0/src/pyfect/rpc/client/_transports.py +328 -0
  889. pyfect_dev-0.1.0/src/pyfect/rpc/client/_worker.py +283 -0
  890. pyfect_dev-0.1.0/src/pyfect/rpc/client_error.py +35 -0
  891. pyfect_dev-0.1.0/src/pyfect/rpc/group.py +296 -0
  892. pyfect_dev-0.1.0/src/pyfect/rpc/message.py +299 -0
  893. pyfect_dev-0.1.0/src/pyfect/rpc/middleware.py +182 -0
  894. pyfect_dev-0.1.0/src/pyfect/rpc/schema.py +89 -0
  895. pyfect_dev-0.1.0/src/pyfect/rpc/serialization.py +366 -0
  896. pyfect_dev-0.1.0/src/pyfect/rpc/server/__init__.py +181 -0
  897. pyfect_dev-0.1.0/src/pyfect/rpc/server/_core.py +549 -0
  898. pyfect_dev-0.1.0/src/pyfect/rpc/server/_protocol.py +123 -0
  899. pyfect_dev-0.1.0/src/pyfect/rpc/server/_serialized.py +363 -0
  900. pyfect_dev-0.1.0/src/pyfect/rpc/server/_stdio.py +101 -0
  901. pyfect_dev-0.1.0/src/pyfect/rpc/server/_transports.py +427 -0
  902. pyfect_dev-0.1.0/src/pyfect/rpc/server/_worker.py +108 -0
  903. pyfect_dev-0.1.0/src/pyfect/rpc/test.py +74 -0
  904. pyfect_dev-0.1.0/src/pyfect/rpc/worker.py +92 -0
  905. pyfect_dev-0.1.0/src/pyfect/run.py +393 -0
  906. pyfect_dev-0.1.0/src/pyfect/schedule/__init__.py +91 -0
  907. pyfect_dev-0.1.0/src/pyfect/schedule/_combinators.py +168 -0
  908. pyfect_dev-0.1.0/src/pyfect/schedule/_constructors.py +223 -0
  909. pyfect_dev-0.1.0/src/pyfect/schedule/_cron.py +49 -0
  910. pyfect_dev-0.1.0/src/pyfect/schedule/_drive.py +191 -0
  911. pyfect_dev-0.1.0/src/pyfect/schedule/_model.py +405 -0
  912. pyfect_dev-0.1.0/src/pyfect/scheduler.py +575 -0
  913. pyfect_dev-0.1.0/src/pyfect/schema/__init__.py +866 -0
  914. pyfect_dev-0.1.0/src/pyfect/schema/_adapters.py +39 -0
  915. pyfect_dev-0.1.0/src/pyfect/schema/_arbitrary_constraint.py +242 -0
  916. pyfect_dev-0.1.0/src/pyfect/schema/_arbitrary_graph.py +325 -0
  917. pyfect_dev-0.1.0/src/pyfect/schema/_arbitrary_links.py +179 -0
  918. pyfect_dev-0.1.0/src/pyfect/schema/_arbitrary_number.py +112 -0
  919. pyfect_dev-0.1.0/src/pyfect/schema/_arrays.py +287 -0
  920. pyfect_dev-0.1.0/src/pyfect/schema/_assignable.py +118 -0
  921. pyfect_dev-0.1.0/src/pyfect/schema/_boolean_literals.py +31 -0
  922. pyfect_dev-0.1.0/src/pyfect/schema/_checks_number.py +216 -0
  923. pyfect_dev-0.1.0/src/pyfect/schema/_checks_order.py +140 -0
  924. pyfect_dev-0.1.0/src/pyfect/schema/_checks_size.py +277 -0
  925. pyfect_dev-0.1.0/src/pyfect/schema/_checks_string.py +241 -0
  926. pyfect_dev-0.1.0/src/pyfect/schema/_class.py +569 -0
  927. pyfect_dev-0.1.0/src/pyfect/schema/_codec_derivation.py +227 -0
  928. pyfect_dev-0.1.0/src/pyfect/schema/_codec_links.py +221 -0
  929. pyfect_dev-0.1.0/src/pyfect/schema/_codecs.py +316 -0
  930. pyfect_dev-0.1.0/src/pyfect/schema/_collections.py +172 -0
  931. pyfect_dev-0.1.0/src/pyfect/schema/_constructor_default.py +89 -0
  932. pyfect_dev-0.1.0/src/pyfect/schema/_data.py +440 -0
  933. pyfect_dev-0.1.0/src/pyfect/schema/_data_codecs.py +145 -0
  934. pyfect_dev-0.1.0/src/pyfect/schema/_decimal_regexp.py +243 -0
  935. pyfect_dev-0.1.0/src/pyfect/schema/_declare.py +68 -0
  936. pyfect_dev-0.1.0/src/pyfect/schema/_derive.py +292 -0
  937. pyfect_dev-0.1.0/src/pyfect/schema/_duration_codecs.py +27 -0
  938. pyfect_dev-0.1.0/src/pyfect/schema/_ecma_pattern.py +416 -0
  939. pyfect_dev-0.1.0/src/pyfect/schema/_error.py +26 -0
  940. pyfect_dev-0.1.0/src/pyfect/schema/_error_instance.py +222 -0
  941. pyfect_dev-0.1.0/src/pyfect/schema/_graph.py +271 -0
  942. pyfect_dev-0.1.0/src/pyfect/schema/_instances.py +240 -0
  943. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/__init__.py +90 -0
  944. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_annotations.py +114 -0
  945. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_checks.py +253 -0
  946. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_compile.py +346 -0
  947. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_exact.py +19 -0
  948. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_merge.py +211 -0
  949. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_objects.py +231 -0
  950. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_references.py +221 -0
  951. pyfect_dev-0.1.0/src/pyfect/schema/_jsonschema/_template.py +69 -0
  952. pyfect_dev-0.1.0/src/pyfect/schema/_literals.py +147 -0
  953. pyfect_dev-0.1.0/src/pyfect/schema/_middleware.py +209 -0
  954. pyfect_dev-0.1.0/src/pyfect/schema/_net.py +522 -0
  955. pyfect_dev-0.1.0/src/pyfect/schema/_options.py +49 -0
  956. pyfect_dev-0.1.0/src/pyfect/schema/_parse.py +351 -0
  957. pyfect_dev-0.1.0/src/pyfect/schema/_parsed_text.py +37 -0
  958. pyfect_dev-0.1.0/src/pyfect/schema/_primitives.py +48 -0
  959. pyfect_dev-0.1.0/src/pyfect/schema/_record.py +41 -0
  960. pyfect_dev-0.1.0/src/pyfect/schema/_refine.py +81 -0
  961. pyfect_dev-0.1.0/src/pyfect/schema/_schema.py +158 -0
  962. pyfect_dev-0.1.0/src/pyfect/schema/_semver.py +144 -0
  963. pyfect_dev-0.1.0/src/pyfect/schema/_strategy/__init__.py +258 -0
  964. pyfect_dev-0.1.0/src/pyfect/schema/_strategy/_big_decimal.py +203 -0
  965. pyfect_dev-0.1.0/src/pyfect/schema/_strategy/_composites.py +119 -0
  966. pyfect_dev-0.1.0/src/pyfect/schema/_strategy/_leaves.py +94 -0
  967. pyfect_dev-0.1.0/src/pyfect/schema/_strategy/_net.py +133 -0
  968. pyfect_dev-0.1.0/src/pyfect/schema/_struct.py +87 -0
  969. pyfect_dev-0.1.0/src/pyfect/schema/_struct_keys.py +128 -0
  970. pyfect_dev-0.1.0/src/pyfect/schema/_tagged.py +254 -0
  971. pyfect_dev-0.1.0/src/pyfect/schema/_template_literal.py +172 -0
  972. pyfect_dev-0.1.0/src/pyfect/schema/_to_codec_array_from_single.py +115 -0
  973. pyfect_dev-0.1.0/src/pyfect/schema/_to_codec_go_json.py +174 -0
  974. pyfect_dev-0.1.0/src/pyfect/schema/_to_codec_json.py +73 -0
  975. pyfect_dev-0.1.0/src/pyfect/schema/_to_codec_string_tree.py +115 -0
  976. pyfect_dev-0.1.0/src/pyfect/schema/_to_differ_json_patch.py +44 -0
  977. pyfect_dev-0.1.0/src/pyfect/schema/_to_encoder_xml.py +119 -0
  978. pyfect_dev-0.1.0/src/pyfect/schema/_to_equivalence.py +186 -0
  979. pyfect_dev-0.1.0/src/pyfect/schema/_to_formatter.py +180 -0
  980. pyfect_dev-0.1.0/src/pyfect/schema/_to_iso.py +73 -0
  981. pyfect_dev-0.1.0/src/pyfect/schema/_to_strategy.py +31 -0
  982. pyfect_dev-0.1.0/src/pyfect/schema/_transform.py +210 -0
  983. pyfect_dev-0.1.0/src/pyfect/schema/_tree.py +27 -0
  984. pyfect_dev-0.1.0/src/pyfect/schema/_type_walk.py +53 -0
  985. pyfect_dev-0.1.0/src/pyfect/schema/_undefined.py +58 -0
  986. pyfect_dev-0.1.0/src/pyfect/schema/_value_codecs.py +84 -0
  987. pyfect_dev-0.1.0/src/pyfect/schema/_values.py +123 -0
  988. pyfect_dev-0.1.0/src/pyfect/schema/_void.py +86 -0
  989. pyfect_dev-0.1.0/src/pyfect/schema/ast/__init__.py +227 -0
  990. pyfect_dev-0.1.0/src/pyfect/schema/ast/_annotations.py +43 -0
  991. pyfect_dev-0.1.0/src/pyfect/schema/ast/_arrays.py +210 -0
  992. pyfect_dev-0.1.0/src/pyfect/schema/ast/_base.py +295 -0
  993. pyfect_dev-0.1.0/src/pyfect/schema/ast/_candidates.py +309 -0
  994. pyfect_dev-0.1.0/src/pyfect/schema/ast/_check.py +181 -0
  995. pyfect_dev-0.1.0/src/pyfect/schema/ast/_class.py +159 -0
  996. pyfect_dev-0.1.0/src/pyfect/schema/ast/_constructors.py +65 -0
  997. pyfect_dev-0.1.0/src/pyfect/schema/ast/_declaration.py +97 -0
  998. pyfect_dev-0.1.0/src/pyfect/schema/ast/_encoding.py +111 -0
  999. pyfect_dev-0.1.0/src/pyfect/schema/ast/_json.py +129 -0
  1000. pyfect_dev-0.1.0/src/pyfect/schema/ast/_keywords.py +125 -0
  1001. pyfect_dev-0.1.0/src/pyfect/schema/ast/_literal.py +157 -0
  1002. pyfect_dev-0.1.0/src/pyfect/schema/ast/_objects.py +356 -0
  1003. pyfect_dev-0.1.0/src/pyfect/schema/ast/_record.py +36 -0
  1004. pyfect_dev-0.1.0/src/pyfect/schema/ast/_result.py +116 -0
  1005. pyfect_dev-0.1.0/src/pyfect/schema/ast/_steps.py +209 -0
  1006. pyfect_dev-0.1.0/src/pyfect/schema/ast/_suspend.py +65 -0
  1007. pyfect_dev-0.1.0/src/pyfect/schema/ast/_template_literal.py +256 -0
  1008. pyfect_dev-0.1.0/src/pyfect/schema/ast/_union.py +172 -0
  1009. pyfect_dev-0.1.0/src/pyfect/schema/getter/__init__.py +136 -0
  1010. pyfect_dev-0.1.0/src/pyfect/schema/getter/_binary.py +104 -0
  1011. pyfect_dev-0.1.0/src/pyfect/schema/getter/_coerce.py +196 -0
  1012. pyfect_dev-0.1.0/src/pyfect/schema/getter/_getter.py +243 -0
  1013. pyfect_dev-0.1.0/src/pyfect/schema/getter/_make.py +151 -0
  1014. pyfect_dev-0.1.0/src/pyfect/schema/getter/_text.py +141 -0
  1015. pyfect_dev-0.1.0/src/pyfect/schema/getter/_tree_record.py +170 -0
  1016. pyfect_dev-0.1.0/src/pyfect/schema/issue.py +420 -0
  1017. pyfect_dev-0.1.0/src/pyfect/schema/model/__init__.py +120 -0
  1018. pyfect_dev-0.1.0/src/pyfect/schema/model/_class.py +245 -0
  1019. pyfect_dev-0.1.0/src/pyfect/schema/model/_dates.py +103 -0
  1020. pyfect_dev-0.1.0/src/pyfect/schema/model/_fields.py +77 -0
  1021. pyfect_dev-0.1.0/src/pyfect/schema/model/_toolkit.py +114 -0
  1022. pyfect_dev-0.1.0/src/pyfect/schema/model/_uuid.py +69 -0
  1023. pyfect_dev-0.1.0/src/pyfect/schema/representation/__init__.py +424 -0
  1024. pyfect_dev-0.1.0/src/pyfect/schema/representation/_builtin_revivers.py +331 -0
  1025. pyfect_dev-0.1.0/src/pyfect/schema/representation/_code.py +106 -0
  1026. pyfect_dev-0.1.0/src/pyfect/schema/representation/_code_builtins.py +281 -0
  1027. pyfect_dev-0.1.0/src/pyfect/schema/representation/_code_document.py +563 -0
  1028. pyfect_dev-0.1.0/src/pyfect/schema/representation/_code_sort.py +111 -0
  1029. pyfect_dev-0.1.0/src/pyfect/schema/representation/_from.py +278 -0
  1030. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/__init__.py +78 -0
  1031. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_finalize.py +121 -0
  1032. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_intersect.py +467 -0
  1033. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_js_order.py +66 -0
  1034. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_keywords.py +224 -0
  1035. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_nodes.py +199 -0
  1036. pyfect_dev-0.1.0/src/pyfect/schema/representation/_import/_translate.py +455 -0
  1037. pyfect_dev-0.1.0/src/pyfect/schema/representation/_json.py +520 -0
  1038. pyfect_dev-0.1.0/src/pyfect/schema/representation/_json_schema.py +178 -0
  1039. pyfect_dev-0.1.0/src/pyfect/schema/representation/_model.py +284 -0
  1040. pyfect_dev-0.1.0/src/pyfect/schema/representation/_revivers.py +89 -0
  1041. pyfect_dev-0.1.0/src/pyfect/schema/representation/_to.py +249 -0
  1042. pyfect_dev-0.1.0/src/pyfect/schema/transformation/__init__.py +99 -0
  1043. pyfect_dev-0.1.0/src/pyfect/schema/transformation/_builtins.py +314 -0
  1044. pyfect_dev-0.1.0/src/pyfect/schema/transformation/_durations.py +150 -0
  1045. pyfect_dev-0.1.0/src/pyfect/schema/transformation/_transformation.py +177 -0
  1046. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/__init__.py +69 -0
  1047. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/_class.py +188 -0
  1048. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/_defaults.py +30 -0
  1049. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/_field.py +32 -0
  1050. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/_struct.py +130 -0
  1051. pyfect_dev-0.1.0/src/pyfect/schema/variant_schema/_toolkit.py +160 -0
  1052. pyfect_dev-0.1.0/src/pyfect/scope.py +374 -0
  1053. pyfect_dev-0.1.0/src/pyfect/scoped_ref.py +124 -0
  1054. pyfect_dev-0.1.0/src/pyfect/semaphore.py +276 -0
  1055. pyfect_dev-0.1.0/src/pyfect/semver.py +403 -0
  1056. pyfect_dev-0.1.0/src/pyfect/semver_range.py +420 -0
  1057. pyfect_dev-0.1.0/src/pyfect/sink/__init__.py +131 -0
  1058. pyfect_dev-0.1.0/src/pyfect/sink/_combinators.py +151 -0
  1059. pyfect_dev-0.1.0/src/pyfect/sink/_constructors.py +187 -0
  1060. pyfect_dev-0.1.0/src/pyfect/sink/_context.py +87 -0
  1061. pyfect_dev-0.1.0/src/pyfect/sink/_folds.py +336 -0
  1062. pyfect_dev-0.1.0/src/pyfect/sink/_for_each.py +87 -0
  1063. pyfect_dev-0.1.0/src/pyfect/sink/_sink.py +265 -0
  1064. pyfect_dev-0.1.0/src/pyfect/sink/_steps.py +34 -0
  1065. pyfect_dev-0.1.0/src/pyfect/sink/_taking.py +183 -0
  1066. pyfect_dev-0.1.0/src/pyfect/socket/__init__.py +146 -0
  1067. pyfect_dev-0.1.0/src/pyfect/socket/_accepted.py +65 -0
  1068. pyfect_dev-0.1.0/src/pyfect/socket/_connection.py +384 -0
  1069. pyfect_dev-0.1.0/src/pyfect/socket/_errors.py +135 -0
  1070. pyfect_dev-0.1.0/src/pyfect/socket/_loop.py +66 -0
  1071. pyfect_dev-0.1.0/src/pyfect/socket/_net.py +281 -0
  1072. pyfect_dev-0.1.0/src/pyfect/socket/_socket.py +245 -0
  1073. pyfect_dev-0.1.0/src/pyfect/socket/_tls.py +88 -0
  1074. pyfect_dev-0.1.0/src/pyfect/socket/_tls_session.py +117 -0
  1075. pyfect_dev-0.1.0/src/pyfect/socket/_web_socket.py +555 -0
  1076. pyfect_dev-0.1.0/src/pyfect/socket/datagram/__init__.py +110 -0
  1077. pyfect_dev-0.1.0/src/pyfect/socket/datagram/_core.py +460 -0
  1078. pyfect_dev-0.1.0/src/pyfect/socket/datagram/_errors.py +102 -0
  1079. pyfect_dev-0.1.0/src/pyfect/socket/datagram/_live.py +675 -0
  1080. pyfect_dev-0.1.0/src/pyfect/socket/datagram/_model.py +217 -0
  1081. pyfect_dev-0.1.0/src/pyfect/socket/server.py +258 -0
  1082. pyfect_dev-0.1.0/src/pyfect/socket/ws.py +484 -0
  1083. pyfect_dev-0.1.0/src/pyfect/sql/__init__.py +60 -0
  1084. pyfect_dev-0.1.0/src/pyfect/sql/_loop.py +134 -0
  1085. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/__init__.py +74 -0
  1086. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/_connection.py +237 -0
  1087. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/_rows.py +87 -0
  1088. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/client.py +322 -0
  1089. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/config.py +241 -0
  1090. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/driver.py +434 -0
  1091. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/error.py +106 -0
  1092. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/migrator.py +47 -0
  1093. pyfect_dev-0.1.0/src/pyfect/sql/clickhouse/params.py +168 -0
  1094. pyfect_dev-0.1.0/src/pyfect/sql/client/__init__.py +35 -0
  1095. pyfect_dev-0.1.0/src/pyfect/sql/client/_client.py +309 -0
  1096. pyfect_dev-0.1.0/src/pyfect/sql/client/_sqlite_acquirers.py +130 -0
  1097. pyfect_dev-0.1.0/src/pyfect/sql/client/_transaction.py +410 -0
  1098. pyfect_dev-0.1.0/src/pyfect/sql/connection.py +87 -0
  1099. pyfect_dev-0.1.0/src/pyfect/sql/d1/__init__.py +48 -0
  1100. pyfect_dev-0.1.0/src/pyfect/sql/d1/api.py +270 -0
  1101. pyfect_dev-0.1.0/src/pyfect/sql/d1/client.py +344 -0
  1102. pyfect_dev-0.1.0/src/pyfect/sql/d1/config.py +55 -0
  1103. pyfect_dev-0.1.0/src/pyfect/sql/error.py +311 -0
  1104. pyfect_dev-0.1.0/src/pyfect/sql/libsql/__init__.py +58 -0
  1105. pyfect_dev-0.1.0/src/pyfect/sql/libsql/_connection.py +110 -0
  1106. pyfect_dev-0.1.0/src/pyfect/sql/libsql/_hrana.py +258 -0
  1107. pyfect_dev-0.1.0/src/pyfect/sql/libsql/_local.py +251 -0
  1108. pyfect_dev-0.1.0/src/pyfect/sql/libsql/_targets.py +28 -0
  1109. pyfect_dev-0.1.0/src/pyfect/sql/libsql/_values.py +46 -0
  1110. pyfect_dev-0.1.0/src/pyfect/sql/libsql/client.py +225 -0
  1111. pyfect_dev-0.1.0/src/pyfect/sql/libsql/config.py +170 -0
  1112. pyfect_dev-0.1.0/src/pyfect/sql/libsql/migrator.py +43 -0
  1113. pyfect_dev-0.1.0/src/pyfect/sql/libsql/sdk.py +123 -0
  1114. pyfect_dev-0.1.0/src/pyfect/sql/migrator.py +434 -0
  1115. pyfect_dev-0.1.0/src/pyfect/sql/model.py +324 -0
  1116. pyfect_dev-0.1.0/src/pyfect/sql/mssql/__init__.py +79 -0
  1117. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_connection.py +169 -0
  1118. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_driver.py +103 -0
  1119. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_names.py +9 -0
  1120. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_pool.py +125 -0
  1121. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_tds.py +447 -0
  1122. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_tds_params.py +155 -0
  1123. pyfect_dev-0.1.0/src/pyfect/sql/mssql/_worker.py +155 -0
  1124. pyfect_dev-0.1.0/src/pyfect/sql/mssql/client.py +344 -0
  1125. pyfect_dev-0.1.0/src/pyfect/sql/mssql/config.py +118 -0
  1126. pyfect_dev-0.1.0/src/pyfect/sql/mssql/error.py +111 -0
  1127. pyfect_dev-0.1.0/src/pyfect/sql/mssql/migrator.py +43 -0
  1128. pyfect_dev-0.1.0/src/pyfect/sql/mssql/parameter.py +44 -0
  1129. pyfect_dev-0.1.0/src/pyfect/sql/mssql/procedure.py +119 -0
  1130. pyfect_dev-0.1.0/src/pyfect/sql/mssql/types.py +137 -0
  1131. pyfect_dev-0.1.0/src/pyfect/sql/mysql/__init__.py +60 -0
  1132. pyfect_dev-0.1.0/src/pyfect/sql/mysql/_asyncmy.py +168 -0
  1133. pyfect_dev-0.1.0/src/pyfect/sql/mysql/_bind.py +76 -0
  1134. pyfect_dev-0.1.0/src/pyfect/sql/mysql/_connection.py +156 -0
  1135. pyfect_dev-0.1.0/src/pyfect/sql/mysql/_pool.py +63 -0
  1136. pyfect_dev-0.1.0/src/pyfect/sql/mysql/_session.py +262 -0
  1137. pyfect_dev-0.1.0/src/pyfect/sql/mysql/client.py +244 -0
  1138. pyfect_dev-0.1.0/src/pyfect/sql/mysql/config.py +108 -0
  1139. pyfect_dev-0.1.0/src/pyfect/sql/mysql/error.py +104 -0
  1140. pyfect_dev-0.1.0/src/pyfect/sql/mysql/migrator.py +44 -0
  1141. pyfect_dev-0.1.0/src/pyfect/sql/pg/__init__.py +82 -0
  1142. pyfect_dev-0.1.0/src/pyfect/sql/pg/_resolve.py +284 -0
  1143. pyfect_dev-0.1.0/src/pyfect/sql/pg/_session.py +380 -0
  1144. pyfect_dev-0.1.0/src/pyfect/sql/pg/client.py +398 -0
  1145. pyfect_dev-0.1.0/src/pyfect/sql/pg/config.py +142 -0
  1146. pyfect_dev-0.1.0/src/pyfect/sql/pg/connection.py +585 -0
  1147. pyfect_dev-0.1.0/src/pyfect/sql/pg/error.py +131 -0
  1148. pyfect_dev-0.1.0/src/pyfect/sql/pg/migrator.py +139 -0
  1149. pyfect_dev-0.1.0/src/pyfect/sql/pg/pool.py +265 -0
  1150. pyfect_dev-0.1.0/src/pyfect/sql/resolver.py +294 -0
  1151. pyfect_dev-0.1.0/src/pyfect/sql/result.py +24 -0
  1152. pyfect_dev-0.1.0/src/pyfect/sql/schema.py +116 -0
  1153. pyfect_dev-0.1.0/src/pyfect/sql/sqlite/__init__.py +26 -0
  1154. pyfect_dev-0.1.0/src/pyfect/sql/sqlite/_connection.py +230 -0
  1155. pyfect_dev-0.1.0/src/pyfect/sql/sqlite/_worker.py +71 -0
  1156. pyfect_dev-0.1.0/src/pyfect/sql/sqlite/client.py +248 -0
  1157. pyfect_dev-0.1.0/src/pyfect/sql/sqlite/migrator.py +43 -0
  1158. pyfect_dev-0.1.0/src/pyfect/sql/statement/__init__.py +144 -0
  1159. pyfect_dev-0.1.0/src/pyfect/sql/statement/_compiler.py +384 -0
  1160. pyfect_dev-0.1.0/src/pyfect/sql/statement/_segments.py +487 -0
  1161. pyfect_dev-0.1.0/src/pyfect/sql/statement/_statement.py +526 -0
  1162. pyfect_dev-0.1.0/src/pyfect/sql/statement/_transforms.py +93 -0
  1163. pyfect_dev-0.1.0/src/pyfect/sql/stream.py +88 -0
  1164. pyfect_dev-0.1.0/src/pyfect/stdio.py +206 -0
  1165. pyfect_dev-0.1.0/src/pyfect/stream/__init__.py +151 -0
  1166. pyfect_dev-0.1.0/src/pyfect/stream/_async_iterable.py +129 -0
  1167. pyfect_dev-0.1.0/src/pyfect/stream/_base.py +69 -0
  1168. pyfect_dev-0.1.0/src/pyfect/stream/_bridge_methods.py +139 -0
  1169. pyfect_dev-0.1.0/src/pyfect/stream/_catch.py +135 -0
  1170. pyfect_dev-0.1.0/src/pyfect/stream/_catch_reason.py +558 -0
  1171. pyfect_dev-0.1.0/src/pyfect/stream/_channel_methods.py +61 -0
  1172. pyfect_dev-0.1.0/src/pyfect/stream/_chunk_methods.py +169 -0
  1173. pyfect_dev-0.1.0/src/pyfect/stream/_chunking.py +310 -0
  1174. pyfect_dev-0.1.0/src/pyfect/stream/_concat.py +65 -0
  1175. pyfect_dev-0.1.0/src/pyfect/stream/_constructors.py +341 -0
  1176. pyfect_dev-0.1.0/src/pyfect/stream/_context.py +147 -0
  1177. pyfect_dev-0.1.0/src/pyfect/stream/_error_methods.py +254 -0
  1178. pyfect_dev-0.1.0/src/pyfect/stream/_execution_plan.py +199 -0
  1179. pyfect_dev-0.1.0/src/pyfect/stream/_fanout.py +154 -0
  1180. pyfect_dev-0.1.0/src/pyfect/stream/_fanout_methods.py +183 -0
  1181. pyfect_dev-0.1.0/src/pyfect/stream/_filter_methods.py +203 -0
  1182. pyfect_dev-0.1.0/src/pyfect/stream/_grouping.py +168 -0
  1183. pyfect_dev-0.1.0/src/pyfect/stream/_many.py +65 -0
  1184. pyfect_dev-0.1.0/src/pyfect/stream/_map_methods.py +233 -0
  1185. pyfect_dev-0.1.0/src/pyfect/stream/_mapping.py +126 -0
  1186. pyfect_dev-0.1.0/src/pyfect/stream/_run.py +114 -0
  1187. pyfect_dev-0.1.0/src/pyfect/stream/_run_methods.py +114 -0
  1188. pyfect_dev-0.1.0/src/pyfect/stream/_service_methods.py +36 -0
  1189. pyfect_dev-0.1.0/src/pyfect/stream/_sink_methods.py +151 -0
  1190. pyfect_dev-0.1.0/src/pyfect/stream/_sinking.py +277 -0
  1191. pyfect_dev-0.1.0/src/pyfect/stream/_sources.py +124 -0
  1192. pyfect_dev-0.1.0/src/pyfect/stream/_stream.py +162 -0
  1193. pyfect_dev-0.1.0/src/pyfect/stream/_taking.py +330 -0
  1194. pyfect_dev-0.1.0/src/pyfect/stream/_text.py +43 -0
  1195. pyfect_dev-0.1.0/src/pyfect/stream/_timing.py +294 -0
  1196. pyfect_dev-0.1.0/src/pyfect/stream/_timing_methods.py +252 -0
  1197. pyfect_dev-0.1.0/src/pyfect/stream/_zip_methods.py +279 -0
  1198. pyfect_dev-0.1.0/src/pyfect/stream/_zipping.py +213 -0
  1199. pyfect_dev-0.1.0/src/pyfect/subscription_ref.py +66 -0
  1200. pyfect_dev-0.1.0/src/pyfect/synchronized_ref.py +38 -0
  1201. pyfect_dev-0.1.0/src/pyfect/take.py +36 -0
  1202. pyfect_dev-0.1.0/src/pyfect/terminal/__init__.py +41 -0
  1203. pyfect_dev-0.1.0/src/pyfect/terminal/_keys.py +113 -0
  1204. pyfect_dev-0.1.0/src/pyfect/terminal/_live.py +223 -0
  1205. pyfect_dev-0.1.0/src/pyfect/terminal/_service.py +73 -0
  1206. pyfect_dev-0.1.0/src/pyfect/testing/__init__.py +122 -0
  1207. pyfect_dev-0.1.0/src/pyfect/testing/_assertions.py +92 -0
  1208. pyfect_dev-0.1.0/src/pyfect/testing/_clock.py +309 -0
  1209. pyfect_dev-0.1.0/src/pyfect/testing/_console.py +164 -0
  1210. pyfect_dev-0.1.0/src/pyfect/testing/_crypto.py +44 -0
  1211. pyfect_dev-0.1.0/src/pyfect/testing/_decorators.py +211 -0
  1212. pyfect_dev-0.1.0/src/pyfect/testing/_flaky.py +34 -0
  1213. pyfect_dev-0.1.0/src/pyfect/testing/_layers.py +153 -0
  1214. pyfect_dev-0.1.0/src/pyfect/testing/_prop.py +255 -0
  1215. pyfect_dev-0.1.0/src/pyfect/testing/_runners.py +84 -0
  1216. pyfect_dev-0.1.0/src/pyfect/testing/_runtime.py +174 -0
  1217. pyfect_dev-0.1.0/src/pyfect/testing/_schema.py +238 -0
  1218. pyfect_dev-0.1.0/src/pyfect/testing/plugin.py +59 -0
  1219. pyfect_dev-0.1.0/src/pyfect/tracer/__init__.py +107 -0
  1220. pyfect_dev-0.1.0/src/pyfect/tracer/_model.py +176 -0
  1221. pyfect_dev-0.1.0/src/pyfect/tracer/_native.py +172 -0
  1222. pyfect_dev-0.1.0/src/pyfect/tracer/_refs.py +87 -0
  1223. pyfect_dev-0.1.0/src/pyfect/tracer/_spans.py +269 -0
  1224. pyfect_dev-0.1.0/src/pyfect/transaction.py +340 -0
  1225. pyfect_dev-0.1.0/src/pyfect/trie.py +317 -0
  1226. pyfect_dev-0.1.0/src/pyfect/tx_chunk.py +127 -0
  1227. pyfect_dev-0.1.0/src/pyfect/tx_deferred.py +75 -0
  1228. pyfect_dev-0.1.0/src/pyfect/tx_hash_map.py +265 -0
  1229. pyfect_dev-0.1.0/src/pyfect/tx_hash_set.py +151 -0
  1230. pyfect_dev-0.1.0/src/pyfect/tx_priority_queue.py +224 -0
  1231. pyfect_dev-0.1.0/src/pyfect/tx_pubsub.py +194 -0
  1232. pyfect_dev-0.1.0/src/pyfect/tx_queue/__init__.py +27 -0
  1233. pyfect_dev-0.1.0/src/pyfect/tx_queue/_queue.py +359 -0
  1234. pyfect_dev-0.1.0/src/pyfect/tx_queue/_views.py +60 -0
  1235. pyfect_dev-0.1.0/src/pyfect/tx_reentrant_lock.py +201 -0
  1236. pyfect_dev-0.1.0/src/pyfect/tx_ref.py +79 -0
  1237. pyfect_dev-0.1.0/src/pyfect/tx_semaphore.py +136 -0
  1238. pyfect_dev-0.1.0/src/pyfect/tx_subscription_ref.py +118 -0
  1239. pyfect_dev-0.1.0/src/pyfect/workers/__init__.py +62 -0
  1240. pyfect_dev-0.1.0/src/pyfect/workers/_frames.py +82 -0
  1241. pyfect_dev-0.1.0/src/pyfect/workers/_mailbox.py +51 -0
  1242. pyfect_dev-0.1.0/src/pyfect/workers/_port.py +106 -0
  1243. pyfect_dev-0.1.0/src/pyfect/workers/_process.py +155 -0
  1244. pyfect_dev-0.1.0/src/pyfect/workers/_thread.py +100 -0
  1245. pyfect_dev-0.1.0/src/pyfect/workers/python_worker.py +133 -0
  1246. pyfect_dev-0.1.0/src/pyfect/workers/python_worker_runner.py +112 -0
  1247. pyfect_dev-0.1.0/src/pyfect/workers/transferable.py +103 -0
  1248. pyfect_dev-0.1.0/src/pyfect/workers/worker.py +273 -0
  1249. pyfect_dev-0.1.0/src/pyfect/workers/worker_error.py +86 -0
  1250. pyfect_dev-0.1.0/src/pyfect/workers/worker_runner.py +85 -0
  1251. pyfect_dev-0.1.0/src/pyfect/workflow/__init__.py +78 -0
  1252. pyfect_dev-0.1.0/src/pyfect/workflow/_crypto.py +23 -0
  1253. pyfect_dev-0.1.0/src/pyfect/workflow/_encoded.py +381 -0
  1254. pyfect_dev-0.1.0/src/pyfect/workflow/_memory.py +424 -0
  1255. pyfect_dev-0.1.0/src/pyfect/workflow/_result.py +43 -0
  1256. pyfect_dev-0.1.0/src/pyfect/workflow/_services.py +241 -0
  1257. pyfect_dev-0.1.0/src/pyfect/workflow/_suspension.py +153 -0
  1258. pyfect_dev-0.1.0/src/pyfect/workflow/activity.py +427 -0
  1259. pyfect_dev-0.1.0/src/pyfect/workflow/durable_clock.py +72 -0
  1260. pyfect_dev-0.1.0/src/pyfect/workflow/durable_deferred.py +403 -0
  1261. pyfect_dev-0.1.0/src/pyfect/workflow/durable_queue.py +259 -0
  1262. pyfect_dev-0.1.0/src/pyfect/workflow/workflow.py +509 -0
  1263. pyfect_dev-0.1.0/src/pyfect/workflow/workflow_engine.py +42 -0
  1264. pyfect_dev-0.1.0/src/pyfect/workflow/workflow_proxy.py +161 -0
  1265. pyfect_dev-0.1.0/src/pyfect/workflow/workflow_proxy_server.py +146 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Tyler Gibbs
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,296 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyfect-dev
3
+ Version: 0.1.0
4
+ Summary: Effect-TS for Python: typed effects, a real fiber runtime, structured concurrency, services and layers.
5
+ Author: Tyler Gibbs
6
+ Author-email: Tyler Gibbs <tylergibbs048@gmail.com>
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: Programming Language :: Python :: 3.13
11
+ Classifier: Programming Language :: Python :: 3.14
12
+ Classifier: Typing :: Typed
13
+ Requires-Dist: typing-extensions>=4.13
14
+ Requires-Dist: brotli>=1.1 ; extra == 'brotli'
15
+ Requires-Dist: cryptography>=46 ; extra == 'eventlog'
16
+ Requires-Dist: hypercorn>=0.18 ; extra == 'http2'
17
+ Requires-Dist: httpx>=0.28 ; extra == 'httpx'
18
+ Requires-Dist: hypothesis>=6.140 ; extra == 'hypothesis'
19
+ Requires-Dist: babel>=2.18 ; extra == 'intl'
20
+ Requires-Dist: msgspec>=0.19 ; extra == 'msgspec'
21
+ Requires-Dist: python-tds>=1.17 ; extra == 'mssql'
22
+ Requires-Dist: pyopenssl>=25 ; extra == 'mssql'
23
+ Requires-Dist: asyncmy>=0.2.17 ; extra == 'mysql'
24
+ Requires-Dist: opentelemetry-api>=1.45 ; extra == 'otel'
25
+ Requires-Dist: opentelemetry-sdk>=1.45 ; extra == 'otel'
26
+ Requires-Dist: psycopg>=3.3 ; extra == 'pg'
27
+ Requires-Dist: pydantic>=2.11 ; extra == 'pydantic'
28
+ Requires-Dist: redis>=8.1 ; extra == 'redis'
29
+ Requires-Dist: regex>=2024.11.6 ; extra == 'regex'
30
+ Requires-Dist: uvicorn>=0.38 ; extra == 'server'
31
+ Requires-Dist: websockets>=15 ; extra == 'server'
32
+ Requires-Dist: websockets>=15 ; extra == 'websockets'
33
+ Requires-Python: >=3.13
34
+ Project-URL: Homepage, https://pyfect.dev
35
+ Project-URL: Repository, https://github.com/tylergibbs1/pyfect
36
+ Project-URL: Documentation, https://pyfect.dev/docs
37
+ Provides-Extra: brotli
38
+ Provides-Extra: eventlog
39
+ Provides-Extra: http2
40
+ Provides-Extra: httpx
41
+ Provides-Extra: hypothesis
42
+ Provides-Extra: intl
43
+ Provides-Extra: msgspec
44
+ Provides-Extra: mssql
45
+ Provides-Extra: mysql
46
+ Provides-Extra: otel
47
+ Provides-Extra: pg
48
+ Provides-Extra: pydantic
49
+ Provides-Extra: redis
50
+ Provides-Extra: regex
51
+ Provides-Extra: server
52
+ Provides-Extra: websockets
53
+ Description-Content-Type: text/markdown
54
+
55
+ <p align="center">
56
+ <img src="assets/logo.svg" width="72" height="72" alt="pyfect logo">
57
+ </p>
58
+
59
+ <h1 align="center">pyfect</h1>
60
+
61
+ <p align="center">
62
+ <a href="https://effect.website">Effect</a> for Python. Errors, dependencies and concurrency checked by pyright.
63
+ </p>
64
+
65
+ <p align="center">
66
+ <a href="https://pyfect.dev/docs"><img alt="Docs" src="https://img.shields.io/badge/docs-pyfect.dev-0a0a0a"></a>
67
+ <img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-0a0a0a">
68
+ <img alt="pyright strict" src="https://img.shields.io/badge/pyright-strict-0a0a0a">
69
+ <a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-0a0a0a"></a>
70
+ </p>
71
+
72
+ <p align="center">
73
+ <a href="https://pyfect.dev/docs"><b>Read the docs</b></a> ·
74
+ <a href="https://pyfect.dev/docs/installation">Install</a> ·
75
+ <a href="examples/">Examples</a> ·
76
+ <a href="docs/PARITY.md">Parity with Effect</a> ·
77
+ <a href="CONTRIBUTING.md">Contribute</a>
78
+ </p>
79
+
80
+ ---
81
+
82
+ pyfect lets you write Python programs whose type says what they return, how they can fail
83
+ and which services they need, so pyright rejects a program that forgets to handle an error
84
+ or provide a dependency. It is for Python developers building services, pipelines and CLIs
85
+ who want Effect's model (typed errors, structured concurrency, layers, streams, schema)
86
+ without leaving Python.
87
+
88
+ ## A quick look
89
+
90
+ ```python
91
+ from dataclasses import dataclass
92
+ from typing import Protocol
93
+
94
+ import pyfect as fx
95
+ from pyfect import layer
96
+
97
+
98
+ class UserStore(Protocol):
99
+ def find(self, user_id: str) -> fx.Effect[str | None]: ...
100
+
101
+
102
+ class Users(fx.Tag[UserStore]): ...
103
+
104
+
105
+ class InMemoryUsers:
106
+ def find(self, user_id: str) -> fx.Effect[str | None]:
107
+ return fx.succeed({"1": "Ada"}.get(user_id))
108
+
109
+
110
+ @dataclass
111
+ class UserNotFound(fx.TaggedError):
112
+ user_id: str
113
+
114
+
115
+ @fx.fn
116
+ def greet(user_id: str):
117
+ users = yield from Users()
118
+ name = yield from users.find(user_id)
119
+ if name is None:
120
+ return (yield from UserNotFound(user_id))
121
+ return f"Hello, {name}!"
122
+
123
+
124
+ # greet("1") is inferred as Effect[str, UserNotFound, Users]
125
+
126
+ program = (
127
+ greet("1")
128
+ .pipe(fx.catch_tag(UserNotFound, lambda e: fx.succeed("Who?")))
129
+ .pipe(fx.provide(layer.succeed(Users, InMemoryUsers())))
130
+ )
131
+
132
+ fx.run_blocking(program)
133
+ ```
134
+
135
+ Remove the `catch_tag` line and pyright stops you before the program runs:
136
+
137
+ ```text
138
+ error: Argument of type "Effect[str, UserNotFound, Never]" cannot be assigned to
139
+ parameter "eff" of type "Effect[A@run_blocking, Never, Never]"
140
+ Type "UserNotFound" is not assignable to type "Never"
141
+ ```
142
+
143
+ [`examples/quickstart.py`](examples/quickstart.py) builds on this with a resource-managed
144
+ layer, concurrency, retries and timeouts.
145
+
146
+ ## How it works
147
+
148
+ <p align="center">
149
+ <picture>
150
+ <source media="(prefers-color-scheme: dark)" srcset="assets/how-it-works-dark.svg">
151
+ <img src="assets/how-it-works-light.svg" alt="An @fx.fn generator builds Effect[A, E, R]; catch_tag removes an error, provide(layer) removes a service, and run_blocking runs the Effect[A, Never, Never] to an Exit." width="225">
152
+ </picture>
153
+ </p>
154
+
155
+ 1. **Describe.** A generator decorated with `@fx.fn` builds an `Effect[A, E, R]`: a value
156
+ that describes the work. Nothing runs yet, and pyright infers all three types with no
157
+ annotations.
158
+ 2. **Narrow.** Each handler removes exactly the error it handles, and each layer removes
159
+ exactly the services it builds. The type shrinks as you go.
160
+ 3. **Run.** Only an effect with no errors and no services left can run. pyfect runs it on
161
+ its own fiber scheduler, synchronously or on asyncio, with structured concurrency and
162
+ interruption that always runs finalizers.
163
+
164
+ ## Features
165
+
166
+ - **Typed errors.** Expected failures live in the type; `catch_tag` handles one, and
167
+ defects stay separate. [Errors →](https://pyfect.dev/docs/errors)
168
+ - **Services and layers.** Dependency injection checked by the type checker, with memoized,
169
+ concurrently built layers that release their resources in order.
170
+ [Services →](https://pyfect.dev/docs/services)
171
+ - **A fiber runtime of its own.** The same program runs with `run_blocking` (no event loop) or on
172
+ asyncio. `blocking` moves blocking calls to a thread. [Effects →](https://pyfect.dev/docs/effects)
173
+ - **Structured concurrency.** Children end with their parent; `all` and `for_each` take a
174
+ concurrency limit; races wait for losers to clean up.
175
+ [Concurrency →](https://pyfect.dev/docs/concurrency)
176
+ - **Resources.** Scopes, `acquire_release`, pools, `RcRef` and `RcMap` release exactly once,
177
+ even on interruption. [Resources →](https://pyfect.dev/docs/resources)
178
+ - **Retries and schedules.** Exponential, jittered, cron and composed schedules for `retry`
179
+ and `repeat`. [Schedules →](https://pyfect.dev/docs/schedules)
180
+ - **Streams.** Pull-based streams, sinks and channels with backpressure, plus NDJSON, JSON
181
+ array and Server-Sent Events framers. [Streams →](https://pyfect.dev/docs/streams)
182
+ - **Schema.** Decode and encode data with Effect's error messages, generate JSON Schema and
183
+ Hypothesis strategies, store schemas themselves as JSON documents, and plug into pydantic
184
+ or msgspec.
185
+ [Schema →](https://pyfect.dev/docs/schema)
186
+ - **Transactions.** Software transactional memory: `TxRef`, transactional queues, maps,
187
+ locks and semaphores that commit atomically and retry without blocking a thread.
188
+ [Transactions →](https://pyfect.dev/docs/transactions)
189
+ - **Graphs.** Directed and undirected graphs with stable indexes: walks, shortest paths,
190
+ components, flows and matchings, GraphViz and Mermaid output, and a schema for storing
191
+ them as JSON. [Graphs →](https://pyfect.dev/docs/graph)
192
+ - **Config.** Typed settings from the environment, `.env` files or dicts, with secrets kept
193
+ out of logs. [Config →](https://pyfect.dev/docs/config)
194
+ - **Observability.** Logging, spans, metrics and an OpenTelemetry bridge.
195
+ [Observability →](https://pyfect.dev/docs/observability)
196
+ - **Platform.** Files, child processes, an HTTP client (httpx), an HTTP server (standard library,
197
+ uvicorn, hypercorn for HTTP/2, or any ASGI server), and TCP, TLS, WebSocket
198
+ and UDP sockets, all as services you can swap in tests. [Platform →](https://pyfect.dev/docs/platform)
199
+ - **SQL.** Statements built from literal templates, so values are always bound parameters;
200
+ transactions with savepoints, batching resolvers and migrations, on SQLite (standard
201
+ library), PostgreSQL (psycopg), MySQL (asyncmy), SQL Server (python-tds), libSQL and
202
+ Turso, ClickHouse and Cloudflare D1 (the last three over HTTP). [SQL →](https://pyfect.dev/docs/sql)
203
+ - **CLI.** Typed commands, flags and arguments with subcommands, generated help, shell
204
+ completions and interactive prompts. [CLI →](https://pyfect.dev/docs/cli)
205
+ - **HTTP server.** Routes and middleware added by layers, each handler an effect, served on
206
+ uvicorn or as an ASGI app. [HTTP server →](https://pyfect.dev/docs/http-server)
207
+ - **HttpApi.** Declare an API once with schemas, then serve it, call it with a derived client
208
+ and document it with OpenAPI and Swagger UI. [HttpApi →](https://pyfect.dev/docs/http-api)
209
+ - **RPC.** Typed procedures over HTTP, WebSockets or workers (threads and child processes),
210
+ with streamed results and an in-memory test client. [RPC →](https://pyfect.dev/docs/rpc)
211
+ - **Persistence.** Key-value stores, caches whose results outlive the process and durable
212
+ at-least-once queues, in memory, files, SQL or Redis.
213
+ [Persistence →](https://pyfect.dev/docs/persistence)
214
+ - **Rate limiting and circuit breakers.** Limits and breakers per key, in memory or shared
215
+ by every process through Redis, and HTTP clients that follow a server's rate limit
216
+ headers. [Rate limiting →](https://pyfect.dev/docs/rate-limiting)
217
+ - **Workers.** Run code on threads or in child processes and talk to it by messages or
218
+ typed RPC calls over a pool. [Workers →](https://pyfect.dev/docs/workers)
219
+ - **Workflows.** Durable workflows whose steps run once and are replayed, with durable
220
+ sleeps, waits completed from outside and compensation on failure.
221
+ [Workflows →](https://pyfect.dev/docs/workflows)
222
+ - **AI.** A provider-neutral `LanguageModel` for text, structured output, streaming and
223
+ typed tools, chats that keep their history, typed decisions (classify, rate,
224
+ probability), and Anthropic, OpenAI, OpenAI-compatible, OpenRouter, Cloudflare and
225
+ TypeSafe providers over the HTTP client. [AI →](https://pyfect.dev/docs/ai)
226
+ - **MCP.** Serve a toolkit over the Model Context Protocol on HTTP or stdio, and call any
227
+ MCP server's tools. [MCP →](https://pyfect.dev/docs/mcp)
228
+ - **Models.** One class for a table's row and its insert, update and JSON variants, with
229
+ typed repositories on any SQL client. [Models →](https://pyfect.dev/docs/models)
230
+ - **GraphQL.** Typed queries, mutations and subscriptions over HTTP, Server-Sent Events or
231
+ WebSockets, with middleware, pagination and batched lookups.
232
+ [GraphQL →](https://pyfect.dev/docs/graphql)
233
+ - **Event log.** Events written to a local journal, replayed through handlers and synced
234
+ with a server, encrypted end to end if you like. [Event log →](https://pyfect.dev/docs/eventlog)
235
+ - **Cluster.** Stateful entities sharded over runners that talk over TCP, HTTP or
236
+ WebSockets, with messages and shard locks in SQL, singletons and cron jobs that run once
237
+ across the cluster, and durable workflows that resume on another runner when one stops.
238
+ [Cluster →](https://pyfect.dev/docs/cluster)
239
+ - **Atoms.** Reactive values in a registry: derived atoms that update when what they read
240
+ changes, effect, stream and RPC or HTTP API atoms, and state handed from a server to a
241
+ client by hydration. [Atoms →](https://pyfect.dev/docs/atoms)
242
+ - **Deterministic tests.** A pytest plugin with a virtual clock, so a test of a 30-second
243
+ retry takes no real time. [Testing →](https://pyfect.dev/docs/testing)
244
+
245
+ pyfect follows Effect v4, does what Effect does wherever Python can express it, and runs
246
+ Effect's own test cases as its spec: over 21,000 tests, with a test that fails on any Effect
247
+ test title neither ported nor omitted with a reason, and about 94% of Effect's API so far. Every
248
+ export of the core modules is listed against Effect's in [`docs/coverage/`](docs/coverage), and
249
+ [`docs/PARITY.md`](docs/PARITY.md) tracks what is done, what is open and what still differs. One
250
+ difference to know: a bare number as a `Duration` is seconds here and milliseconds in Effect.
251
+
252
+ ## Installation
253
+
254
+ pyfect needs Python 3.13 or later; its one dependency is `typing-extensions`. Install the
255
+ `pyfect-dev` distribution from PyPI and `import pyfect` (PyPI's `pyfect` is an unrelated
256
+ project).
257
+
258
+ ```sh
259
+ uv add pyfect-dev
260
+ ```
261
+
262
+ Optional extras: `otel` (OpenTelemetry), `hypothesis`, `pydantic`, `msgspec`, `httpx` (the
263
+ HTTP client backend), `websockets` (WebSocket clients and servers), `server` (the uvicorn
264
+ HTTP server), `pg` (the PostgreSQL driver, on psycopg), `mysql` (the MySQL driver, on
265
+ asyncmy), `mssql` (the SQL Server driver, on python-tds), `redis` (the Redis client, on
266
+ redis-py), `eventlog` (the event log's encryption, on cryptography), `brotli` (`br` response
267
+ compression on a live server), `http2` (the HTTP/2 server, on hypercorn), `intl` (`Intl`-style
268
+ date formatting, on babel) and `regex` (more ECMAScript patterns in schemas), for example
269
+ `uv add "pyfect-dev[otel]"`.
270
+
271
+ pyright is the type checker pyfect is designed for. In strict mode, add
272
+ `reportUnknownParameterType = false`: pyright reads an unannotated generator's send type as
273
+ `Unknown` ([pyright#10279](https://github.com/microsoft/pyright/issues/10279)), and effect
274
+ generators never use it. See [Installation](https://pyfect.dev/docs/installation).
275
+
276
+ ## Learn more
277
+
278
+ - [Documentation](https://pyfect.dev/docs): guides for each part of the library.
279
+ - [API reference](https://pyfect.dev/docs/reference): every public function and class.
280
+ - [Examples](examples/): a quickstart, batching, a FastAPI-style service, a stream pipeline
281
+ and schema decoding, all checked by pyright.
282
+ - [Effect's docs](https://effect.website/docs): the concepts carry over; pyfect uses
283
+ snake_case and `yield from` in place of `yield*`.
284
+
285
+ ## Contributing
286
+
287
+ Contributions are welcome. [`CONTRIBUTING.md`](CONTRIBUTING.md) covers setup, the one
288
+ command that checks everything, and how a change is ported from Effect. Issues labelled
289
+ [good first issue](https://github.com/tylergibbs1/pyfect/labels/good%20first%20issue) are a
290
+ good place to start. Everyone taking part agrees to the
291
+ [Code of Conduct](CODE_OF_CONDUCT.md).
292
+
293
+ ## License
294
+
295
+ [MIT](LICENSE). pyfect is an independent port and is not affiliated with Effectful
296
+ Technologies; Effect is MIT-licensed by its authors.
@@ -0,0 +1,242 @@
1
+ <p align="center">
2
+ <img src="assets/logo.svg" width="72" height="72" alt="pyfect logo">
3
+ </p>
4
+
5
+ <h1 align="center">pyfect</h1>
6
+
7
+ <p align="center">
8
+ <a href="https://effect.website">Effect</a> for Python. Errors, dependencies and concurrency checked by pyright.
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://pyfect.dev/docs"><img alt="Docs" src="https://img.shields.io/badge/docs-pyfect.dev-0a0a0a"></a>
13
+ <img alt="Python 3.13+" src="https://img.shields.io/badge/python-3.13%2B-0a0a0a">
14
+ <img alt="pyright strict" src="https://img.shields.io/badge/pyright-strict-0a0a0a">
15
+ <a href="LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-0a0a0a"></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://pyfect.dev/docs"><b>Read the docs</b></a> ·
20
+ <a href="https://pyfect.dev/docs/installation">Install</a> ·
21
+ <a href="examples/">Examples</a> ·
22
+ <a href="docs/PARITY.md">Parity with Effect</a> ·
23
+ <a href="CONTRIBUTING.md">Contribute</a>
24
+ </p>
25
+
26
+ ---
27
+
28
+ pyfect lets you write Python programs whose type says what they return, how they can fail
29
+ and which services they need, so pyright rejects a program that forgets to handle an error
30
+ or provide a dependency. It is for Python developers building services, pipelines and CLIs
31
+ who want Effect's model (typed errors, structured concurrency, layers, streams, schema)
32
+ without leaving Python.
33
+
34
+ ## A quick look
35
+
36
+ ```python
37
+ from dataclasses import dataclass
38
+ from typing import Protocol
39
+
40
+ import pyfect as fx
41
+ from pyfect import layer
42
+
43
+
44
+ class UserStore(Protocol):
45
+ def find(self, user_id: str) -> fx.Effect[str | None]: ...
46
+
47
+
48
+ class Users(fx.Tag[UserStore]): ...
49
+
50
+
51
+ class InMemoryUsers:
52
+ def find(self, user_id: str) -> fx.Effect[str | None]:
53
+ return fx.succeed({"1": "Ada"}.get(user_id))
54
+
55
+
56
+ @dataclass
57
+ class UserNotFound(fx.TaggedError):
58
+ user_id: str
59
+
60
+
61
+ @fx.fn
62
+ def greet(user_id: str):
63
+ users = yield from Users()
64
+ name = yield from users.find(user_id)
65
+ if name is None:
66
+ return (yield from UserNotFound(user_id))
67
+ return f"Hello, {name}!"
68
+
69
+
70
+ # greet("1") is inferred as Effect[str, UserNotFound, Users]
71
+
72
+ program = (
73
+ greet("1")
74
+ .pipe(fx.catch_tag(UserNotFound, lambda e: fx.succeed("Who?")))
75
+ .pipe(fx.provide(layer.succeed(Users, InMemoryUsers())))
76
+ )
77
+
78
+ fx.run_blocking(program)
79
+ ```
80
+
81
+ Remove the `catch_tag` line and pyright stops you before the program runs:
82
+
83
+ ```text
84
+ error: Argument of type "Effect[str, UserNotFound, Never]" cannot be assigned to
85
+ parameter "eff" of type "Effect[A@run_blocking, Never, Never]"
86
+ Type "UserNotFound" is not assignable to type "Never"
87
+ ```
88
+
89
+ [`examples/quickstart.py`](examples/quickstart.py) builds on this with a resource-managed
90
+ layer, concurrency, retries and timeouts.
91
+
92
+ ## How it works
93
+
94
+ <p align="center">
95
+ <picture>
96
+ <source media="(prefers-color-scheme: dark)" srcset="assets/how-it-works-dark.svg">
97
+ <img src="assets/how-it-works-light.svg" alt="An @fx.fn generator builds Effect[A, E, R]; catch_tag removes an error, provide(layer) removes a service, and run_blocking runs the Effect[A, Never, Never] to an Exit." width="225">
98
+ </picture>
99
+ </p>
100
+
101
+ 1. **Describe.** A generator decorated with `@fx.fn` builds an `Effect[A, E, R]`: a value
102
+ that describes the work. Nothing runs yet, and pyright infers all three types with no
103
+ annotations.
104
+ 2. **Narrow.** Each handler removes exactly the error it handles, and each layer removes
105
+ exactly the services it builds. The type shrinks as you go.
106
+ 3. **Run.** Only an effect with no errors and no services left can run. pyfect runs it on
107
+ its own fiber scheduler, synchronously or on asyncio, with structured concurrency and
108
+ interruption that always runs finalizers.
109
+
110
+ ## Features
111
+
112
+ - **Typed errors.** Expected failures live in the type; `catch_tag` handles one, and
113
+ defects stay separate. [Errors →](https://pyfect.dev/docs/errors)
114
+ - **Services and layers.** Dependency injection checked by the type checker, with memoized,
115
+ concurrently built layers that release their resources in order.
116
+ [Services →](https://pyfect.dev/docs/services)
117
+ - **A fiber runtime of its own.** The same program runs with `run_blocking` (no event loop) or on
118
+ asyncio. `blocking` moves blocking calls to a thread. [Effects →](https://pyfect.dev/docs/effects)
119
+ - **Structured concurrency.** Children end with their parent; `all` and `for_each` take a
120
+ concurrency limit; races wait for losers to clean up.
121
+ [Concurrency →](https://pyfect.dev/docs/concurrency)
122
+ - **Resources.** Scopes, `acquire_release`, pools, `RcRef` and `RcMap` release exactly once,
123
+ even on interruption. [Resources →](https://pyfect.dev/docs/resources)
124
+ - **Retries and schedules.** Exponential, jittered, cron and composed schedules for `retry`
125
+ and `repeat`. [Schedules →](https://pyfect.dev/docs/schedules)
126
+ - **Streams.** Pull-based streams, sinks and channels with backpressure, plus NDJSON, JSON
127
+ array and Server-Sent Events framers. [Streams →](https://pyfect.dev/docs/streams)
128
+ - **Schema.** Decode and encode data with Effect's error messages, generate JSON Schema and
129
+ Hypothesis strategies, store schemas themselves as JSON documents, and plug into pydantic
130
+ or msgspec.
131
+ [Schema →](https://pyfect.dev/docs/schema)
132
+ - **Transactions.** Software transactional memory: `TxRef`, transactional queues, maps,
133
+ locks and semaphores that commit atomically and retry without blocking a thread.
134
+ [Transactions →](https://pyfect.dev/docs/transactions)
135
+ - **Graphs.** Directed and undirected graphs with stable indexes: walks, shortest paths,
136
+ components, flows and matchings, GraphViz and Mermaid output, and a schema for storing
137
+ them as JSON. [Graphs →](https://pyfect.dev/docs/graph)
138
+ - **Config.** Typed settings from the environment, `.env` files or dicts, with secrets kept
139
+ out of logs. [Config →](https://pyfect.dev/docs/config)
140
+ - **Observability.** Logging, spans, metrics and an OpenTelemetry bridge.
141
+ [Observability →](https://pyfect.dev/docs/observability)
142
+ - **Platform.** Files, child processes, an HTTP client (httpx), an HTTP server (standard library,
143
+ uvicorn, hypercorn for HTTP/2, or any ASGI server), and TCP, TLS, WebSocket
144
+ and UDP sockets, all as services you can swap in tests. [Platform →](https://pyfect.dev/docs/platform)
145
+ - **SQL.** Statements built from literal templates, so values are always bound parameters;
146
+ transactions with savepoints, batching resolvers and migrations, on SQLite (standard
147
+ library), PostgreSQL (psycopg), MySQL (asyncmy), SQL Server (python-tds), libSQL and
148
+ Turso, ClickHouse and Cloudflare D1 (the last three over HTTP). [SQL →](https://pyfect.dev/docs/sql)
149
+ - **CLI.** Typed commands, flags and arguments with subcommands, generated help, shell
150
+ completions and interactive prompts. [CLI →](https://pyfect.dev/docs/cli)
151
+ - **HTTP server.** Routes and middleware added by layers, each handler an effect, served on
152
+ uvicorn or as an ASGI app. [HTTP server →](https://pyfect.dev/docs/http-server)
153
+ - **HttpApi.** Declare an API once with schemas, then serve it, call it with a derived client
154
+ and document it with OpenAPI and Swagger UI. [HttpApi →](https://pyfect.dev/docs/http-api)
155
+ - **RPC.** Typed procedures over HTTP, WebSockets or workers (threads and child processes),
156
+ with streamed results and an in-memory test client. [RPC →](https://pyfect.dev/docs/rpc)
157
+ - **Persistence.** Key-value stores, caches whose results outlive the process and durable
158
+ at-least-once queues, in memory, files, SQL or Redis.
159
+ [Persistence →](https://pyfect.dev/docs/persistence)
160
+ - **Rate limiting and circuit breakers.** Limits and breakers per key, in memory or shared
161
+ by every process through Redis, and HTTP clients that follow a server's rate limit
162
+ headers. [Rate limiting →](https://pyfect.dev/docs/rate-limiting)
163
+ - **Workers.** Run code on threads or in child processes and talk to it by messages or
164
+ typed RPC calls over a pool. [Workers →](https://pyfect.dev/docs/workers)
165
+ - **Workflows.** Durable workflows whose steps run once and are replayed, with durable
166
+ sleeps, waits completed from outside and compensation on failure.
167
+ [Workflows →](https://pyfect.dev/docs/workflows)
168
+ - **AI.** A provider-neutral `LanguageModel` for text, structured output, streaming and
169
+ typed tools, chats that keep their history, typed decisions (classify, rate,
170
+ probability), and Anthropic, OpenAI, OpenAI-compatible, OpenRouter, Cloudflare and
171
+ TypeSafe providers over the HTTP client. [AI →](https://pyfect.dev/docs/ai)
172
+ - **MCP.** Serve a toolkit over the Model Context Protocol on HTTP or stdio, and call any
173
+ MCP server's tools. [MCP →](https://pyfect.dev/docs/mcp)
174
+ - **Models.** One class for a table's row and its insert, update and JSON variants, with
175
+ typed repositories on any SQL client. [Models →](https://pyfect.dev/docs/models)
176
+ - **GraphQL.** Typed queries, mutations and subscriptions over HTTP, Server-Sent Events or
177
+ WebSockets, with middleware, pagination and batched lookups.
178
+ [GraphQL →](https://pyfect.dev/docs/graphql)
179
+ - **Event log.** Events written to a local journal, replayed through handlers and synced
180
+ with a server, encrypted end to end if you like. [Event log →](https://pyfect.dev/docs/eventlog)
181
+ - **Cluster.** Stateful entities sharded over runners that talk over TCP, HTTP or
182
+ WebSockets, with messages and shard locks in SQL, singletons and cron jobs that run once
183
+ across the cluster, and durable workflows that resume on another runner when one stops.
184
+ [Cluster →](https://pyfect.dev/docs/cluster)
185
+ - **Atoms.** Reactive values in a registry: derived atoms that update when what they read
186
+ changes, effect, stream and RPC or HTTP API atoms, and state handed from a server to a
187
+ client by hydration. [Atoms →](https://pyfect.dev/docs/atoms)
188
+ - **Deterministic tests.** A pytest plugin with a virtual clock, so a test of a 30-second
189
+ retry takes no real time. [Testing →](https://pyfect.dev/docs/testing)
190
+
191
+ pyfect follows Effect v4, does what Effect does wherever Python can express it, and runs
192
+ Effect's own test cases as its spec: over 21,000 tests, with a test that fails on any Effect
193
+ test title neither ported nor omitted with a reason, and about 94% of Effect's API so far. Every
194
+ export of the core modules is listed against Effect's in [`docs/coverage/`](docs/coverage), and
195
+ [`docs/PARITY.md`](docs/PARITY.md) tracks what is done, what is open and what still differs. One
196
+ difference to know: a bare number as a `Duration` is seconds here and milliseconds in Effect.
197
+
198
+ ## Installation
199
+
200
+ pyfect needs Python 3.13 or later; its one dependency is `typing-extensions`. Install the
201
+ `pyfect-dev` distribution from PyPI and `import pyfect` (PyPI's `pyfect` is an unrelated
202
+ project).
203
+
204
+ ```sh
205
+ uv add pyfect-dev
206
+ ```
207
+
208
+ Optional extras: `otel` (OpenTelemetry), `hypothesis`, `pydantic`, `msgspec`, `httpx` (the
209
+ HTTP client backend), `websockets` (WebSocket clients and servers), `server` (the uvicorn
210
+ HTTP server), `pg` (the PostgreSQL driver, on psycopg), `mysql` (the MySQL driver, on
211
+ asyncmy), `mssql` (the SQL Server driver, on python-tds), `redis` (the Redis client, on
212
+ redis-py), `eventlog` (the event log's encryption, on cryptography), `brotli` (`br` response
213
+ compression on a live server), `http2` (the HTTP/2 server, on hypercorn), `intl` (`Intl`-style
214
+ date formatting, on babel) and `regex` (more ECMAScript patterns in schemas), for example
215
+ `uv add "pyfect-dev[otel]"`.
216
+
217
+ pyright is the type checker pyfect is designed for. In strict mode, add
218
+ `reportUnknownParameterType = false`: pyright reads an unannotated generator's send type as
219
+ `Unknown` ([pyright#10279](https://github.com/microsoft/pyright/issues/10279)), and effect
220
+ generators never use it. See [Installation](https://pyfect.dev/docs/installation).
221
+
222
+ ## Learn more
223
+
224
+ - [Documentation](https://pyfect.dev/docs): guides for each part of the library.
225
+ - [API reference](https://pyfect.dev/docs/reference): every public function and class.
226
+ - [Examples](examples/): a quickstart, batching, a FastAPI-style service, a stream pipeline
227
+ and schema decoding, all checked by pyright.
228
+ - [Effect's docs](https://effect.website/docs): the concepts carry over; pyfect uses
229
+ snake_case and `yield from` in place of `yield*`.
230
+
231
+ ## Contributing
232
+
233
+ Contributions are welcome. [`CONTRIBUTING.md`](CONTRIBUTING.md) covers setup, the one
234
+ command that checks everything, and how a change is ported from Effect. Issues labelled
235
+ [good first issue](https://github.com/tylergibbs1/pyfect/labels/good%20first%20issue) are a
236
+ good place to start. Everyone taking part agrees to the
237
+ [Code of Conduct](CODE_OF_CONDUCT.md).
238
+
239
+ ## License
240
+
241
+ [MIT](LICENSE). pyfect is an independent port and is not affiliated with Effectful
242
+ Technologies; Effect is MIT-licensed by its authors.