swiftpy-framework 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. swiftpy/.gitignore +0 -0
  2. swiftpy/__init__.py +572 -0
  3. swiftpy/admin/__init__.py +50 -0
  4. swiftpy/admin/auth.py +522 -0
  5. swiftpy/admin/registry.py +567 -0
  6. swiftpy/admin/views.py +1583 -0
  7. swiftpy/ai/__init__.py +199 -0
  8. swiftpy/ai/_deterministic.py +40 -0
  9. swiftpy/ai/_fake.py +604 -0
  10. swiftpy/ai/agents/__init__.py +30 -0
  11. swiftpy/ai/agents/base_agent.py +506 -0
  12. swiftpy/ai/agents/memory.py +864 -0
  13. swiftpy/ai/client.py +1011 -0
  14. swiftpy/ai/conversation.py +171 -0
  15. swiftpy/ai/embeddings.py +321 -0
  16. swiftpy/ai/exceptions.py +75 -0
  17. swiftpy/ai/history_strategies.py +157 -0
  18. swiftpy/ai/middleware.py +918 -0
  19. swiftpy/ai/observability/__init__.py +28 -0
  20. swiftpy/ai/observability/drivers.py +763 -0
  21. swiftpy/ai/observability/observer.py +364 -0
  22. swiftpy/ai/pool.py +102 -0
  23. swiftpy/ai/pricing.py +101 -0
  24. swiftpy/ai/prompts/__init__.py +6 -0
  25. swiftpy/ai/prompts/loader.py +343 -0
  26. swiftpy/ai/providers/__init__.py +22 -0
  27. swiftpy/ai/providers/anthropic_provider.py +353 -0
  28. swiftpy/ai/providers/base.py +273 -0
  29. swiftpy/ai/providers/openai_provider.py +275 -0
  30. swiftpy/ai/rag/__init__.py +53 -0
  31. swiftpy/ai/rag/context_formatter.py +263 -0
  32. swiftpy/ai/rag/pipeline_builder.py +544 -0
  33. swiftpy/ai/rag/reranker.py +484 -0
  34. swiftpy/ai/rag/result.py +78 -0
  35. swiftpy/ai/rag/retriever.py +315 -0
  36. swiftpy/ai/redis_store.py +227 -0
  37. swiftpy/ai/streaming.py +115 -0
  38. swiftpy/ai/tools/__init__.py +22 -0
  39. swiftpy/ai/tools/base_tool.py +489 -0
  40. swiftpy/ai/tools/first_party.py +384 -0
  41. swiftpy/ai/tools/tool_loop.py +417 -0
  42. swiftpy/ai/vectorstore/__init__.py +46 -0
  43. swiftpy/ai/vectorstore/base.py +542 -0
  44. swiftpy/ai/vectorstore/chroma_adapter.py +435 -0
  45. swiftpy/ai/vectorstore/in_memory_adapter.py +321 -0
  46. swiftpy/ai/vectorstore/lancedb_adapter.py +370 -0
  47. swiftpy/ai/vectorstore/pgvector_adapter.py +496 -0
  48. swiftpy/ai/vectorstore/pinecone_adapter.py +445 -0
  49. swiftpy/ai/vectorstore/qdrant_adapter.py +418 -0
  50. swiftpy/auth/__init__.py +50 -0
  51. swiftpy/auth/api_key_guard.py +544 -0
  52. swiftpy/auth/auth_manager.py +259 -0
  53. swiftpy/auth/exceptions.py +71 -0
  54. swiftpy/auth/jwt_guard.py +230 -0
  55. swiftpy/auth/jwt_issuer.py +658 -0
  56. swiftpy/auth/token_blacklist.py +300 -0
  57. swiftpy/cache/__init__.py +14 -0
  58. swiftpy/cache/cache.py +251 -0
  59. swiftpy/cache/driver.py +216 -0
  60. swiftpy/cache/drivers/memory.py +199 -0
  61. swiftpy/cache/drivers/redis.py +421 -0
  62. swiftpy/console/__init__.py +0 -0
  63. swiftpy/console/cli.py +68 -0
  64. swiftpy/console/commands/__init__.py +0 -0
  65. swiftpy/console/commands/cache.py +164 -0
  66. swiftpy/console/commands/make.py +935 -0
  67. swiftpy/console/commands/migrate.py +280 -0
  68. swiftpy/console/commands/new.py +1806 -0
  69. swiftpy/console/commands/queue.py +306 -0
  70. swiftpy/console/commands/seed.py +252 -0
  71. swiftpy/console/commands/start.py +171 -0
  72. swiftpy/console/commands/storage.py +104 -0
  73. swiftpy/console/loader.py +21 -0
  74. swiftpy/console/stubs/__init__.py +26 -0
  75. swiftpy/console/stubs/controller.stub +14 -0
  76. swiftpy/console/stubs/event.stub +14 -0
  77. swiftpy/console/stubs/job.stub +22 -0
  78. swiftpy/console/stubs/listener.stub +14 -0
  79. swiftpy/console/stubs/mail.stub +20 -0
  80. swiftpy/console/stubs/middleware.stub +16 -0
  81. swiftpy/console/stubs/migration.alter.stub +17 -0
  82. swiftpy/console/stubs/migration.api_keys.stub +22 -0
  83. swiftpy/console/stubs/migration.blank.stub +11 -0
  84. swiftpy/console/stubs/migration.create.stub +15 -0
  85. swiftpy/console/stubs/migration.stub +11 -0
  86. swiftpy/console/stubs/migration.update.stub +17 -0
  87. swiftpy/console/stubs/model.stub +17 -0
  88. swiftpy/console/stubs/provider.stub +18 -0
  89. swiftpy/console/stubs/repository.stub +10 -0
  90. swiftpy/console/stubs/request.stub +16 -0
  91. swiftpy/console/stubs/resource.stub +21 -0
  92. swiftpy/console/stubs/schema.stub +12 -0
  93. swiftpy/console/stubs/seeder.stub +14 -0
  94. swiftpy/console/stubs/service.stub +10 -0
  95. swiftpy/core/__init__.py +0 -0
  96. swiftpy/core/application.py +1306 -0
  97. swiftpy/core/bootstrap.py +30 -0
  98. swiftpy/core/config.py +432 -0
  99. swiftpy/core/container.py +596 -0
  100. swiftpy/core/container_exceptions.py +18 -0
  101. swiftpy/core/context.py +148 -0
  102. swiftpy/core/exceptions.py +352 -0
  103. swiftpy/core/providers/base.py +35 -0
  104. swiftpy/database/__init__.py +41 -0
  105. swiftpy/database/exceptions.py +42 -0
  106. swiftpy/database/identifiers.py +105 -0
  107. swiftpy/database/migrations/__init__.py +36 -0
  108. swiftpy/database/migrations/blueprint.py +431 -0
  109. swiftpy/database/migrations/lock.py +104 -0
  110. swiftpy/database/migrations/migration.py +22 -0
  111. swiftpy/database/migrations/migrator.py +507 -0
  112. swiftpy/database/migrations/schema.py +435 -0
  113. swiftpy/database/orm/__init__.py +33 -0
  114. swiftpy/database/orm/fields.py +92 -0
  115. swiftpy/database/orm/model.py +2034 -0
  116. swiftpy/database/orm/registry.py +33 -0
  117. swiftpy/database/orm/relationships.py +836 -0
  118. swiftpy/database/pagination/__init__.py +16 -0
  119. swiftpy/database/pagination/contracts.py +60 -0
  120. swiftpy/database/pagination/paginator.py +112 -0
  121. swiftpy/database/pagination/simple_paginator.py +97 -0
  122. swiftpy/database/pool.py +218 -0
  123. swiftpy/database/query_builder.py +1803 -0
  124. swiftpy/database/seeder.py +39 -0
  125. swiftpy/database/transaction.py +276 -0
  126. swiftpy/events/__init__.py +10 -0
  127. swiftpy/events/dispatcher.py +308 -0
  128. swiftpy/events/redis_bus.py +552 -0
  129. swiftpy/filesystem/__init__.py +227 -0
  130. swiftpy/filesystem/disk.py +378 -0
  131. swiftpy/filesystem/drivers/__init__.py +11 -0
  132. swiftpy/filesystem/drivers/base.py +156 -0
  133. swiftpy/filesystem/drivers/local.py +559 -0
  134. swiftpy/filesystem/drivers/s3.py +655 -0
  135. swiftpy/filesystem/events.py +37 -0
  136. swiftpy/filesystem/exceptions.py +127 -0
  137. swiftpy/filesystem/manager.py +138 -0
  138. swiftpy/filesystem/metadata.py +22 -0
  139. swiftpy/filesystem/paths.py +99 -0
  140. swiftpy/filesystem/service_provider.py +17 -0
  141. swiftpy/filesystem/uploads/__init__.py +13 -0
  142. swiftpy/filesystem/uploads/handlers.py +362 -0
  143. swiftpy/filesystem/uploads/uploaded_file.py +222 -0
  144. swiftpy/filesystem/uploads/validators.py +186 -0
  145. swiftpy/filesystem/visibility.py +22 -0
  146. swiftpy/helpers/__init__.py +42 -0
  147. swiftpy/helpers/helper.py +180 -0
  148. swiftpy/http/exceptions.py +41 -0
  149. swiftpy/http/middleware.py +307 -0
  150. swiftpy/http/request.py +375 -0
  151. swiftpy/http/response.py +442 -0
  152. swiftpy/http/router.py +1050 -0
  153. swiftpy/mail/__init__.py +58 -0
  154. swiftpy/mail/attachments.py +255 -0
  155. swiftpy/mail/config.py +71 -0
  156. swiftpy/mail/envelope.py +183 -0
  157. swiftpy/mail/exceptions.py +90 -0
  158. swiftpy/mail/facade.py +312 -0
  159. swiftpy/mail/mailable.py +53 -0
  160. swiftpy/mail/manager.py +240 -0
  161. swiftpy/mail/message.py +186 -0
  162. swiftpy/mail/models.py +19 -0
  163. swiftpy/mail/queue/__init__.py +5 -0
  164. swiftpy/mail/queue/job.py +279 -0
  165. swiftpy/mail/service_provider.py +19 -0
  166. swiftpy/mail/templates/__init__.py +5 -0
  167. swiftpy/mail/templates/renderer.py +173 -0
  168. swiftpy/mail/transports/__init__.py +21 -0
  169. swiftpy/mail/transports/api/__init__.py +13 -0
  170. swiftpy/mail/transports/api/base.py +194 -0
  171. swiftpy/mail/transports/api/mailgun.py +158 -0
  172. swiftpy/mail/transports/api/resend.py +156 -0
  173. swiftpy/mail/transports/api/sendgrid.py +172 -0
  174. swiftpy/mail/transports/base.py +24 -0
  175. swiftpy/mail/transports/console.py +91 -0
  176. swiftpy/mail/transports/sendmail.py +128 -0
  177. swiftpy/mail/transports/smtp.py +466 -0
  178. swiftpy/queue/__init__.py +13 -0
  179. swiftpy/queue/dispatcher.py +813 -0
  180. swiftpy/queue/job.py +541 -0
  181. swiftpy/queue/worker.py +556 -0
  182. swiftpy/support/__init__.py +12 -0
  183. swiftpy/support/keys.py +108 -0
  184. swiftpy/support/redis_config.py +223 -0
  185. swiftpy/support/strings.py +114 -0
  186. swiftpy/testing/__init__.py +20 -0
  187. swiftpy/testing/fakes/__init__.py +11 -0
  188. swiftpy/testing/fakes/ai_fake.py +21 -0
  189. swiftpy/testing/fakes/vectorstore_fake.py +194 -0
  190. swiftpy/testing/fixtures.py +124 -0
  191. swiftpy/testing/http_client.py +730 -0
  192. swiftpy/testing/test_case.py +126 -0
  193. swiftpy/validation/__init__.py +97 -0
  194. swiftpy/validation/exceptions.py +26 -0
  195. swiftpy/validation/form_request.py +302 -0
  196. swiftpy/validation/protocols.py +33 -0
  197. swiftpy/validation/rules/__init__.py +89 -0
  198. swiftpy/validation/rules/builtin.py +391 -0
  199. swiftpy/validation/rules/exists.py +86 -0
  200. swiftpy/validation/rules/registry.py +290 -0
  201. swiftpy/validation/rules/required.py +55 -0
  202. swiftpy/validation/rules/unique.py +138 -0
  203. swiftpy/validation/validator.py +612 -0
  204. swiftpy/websockets/__init__.py +19 -0
  205. swiftpy/websockets/connection.py +317 -0
  206. swiftpy/websockets/manager.py +271 -0
  207. swiftpy_framework-0.1.0.dist-info/METADATA +603 -0
  208. swiftpy_framework-0.1.0.dist-info/RECORD +211 -0
  209. swiftpy_framework-0.1.0.dist-info/WHEEL +4 -0
  210. swiftpy_framework-0.1.0.dist-info/entry_points.txt +2 -0
  211. swiftpy_framework-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,211 @@
1
+ swiftpy/.gitignore,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ swiftpy/__init__.py,sha256=tt3kD8G2s5RNeO9MJGXTxSYN8umTFwyPuLm0D2jo7MY,17736
3
+ swiftpy/admin/__init__.py,sha256=VzzUtLbi9wch6zYnzRL13vsZcCQQbbPpvZU6cs2irpo,1042
4
+ swiftpy/admin/auth.py,sha256=PiUtGm_XSQBY22guXp-KmJFCrHQET6soB_Q9sAO4vnc,18641
5
+ swiftpy/admin/registry.py,sha256=hcbx1tVF3BoqfsEXWMcX_ZUi0Ng5ku_O38CLD_Yaots,21411
6
+ swiftpy/admin/views.py,sha256=1PgazxwPOdx9WjZ187Rb6iployexjXr6z316k90buJs,66192
7
+ swiftpy/ai/__init__.py,sha256=vu1i05xqAiaoA2BWK6x9DQ8MyIVLBut4UWcLA2o9f6o,4443
8
+ swiftpy/ai/_deterministic.py,sha256=02XsjbqP8uiI-NDzwahfZJsFH0SlmtNnFwYlGur5GR8,1336
9
+ swiftpy/ai/_fake.py,sha256=DvDMWJNjz8ZQWz2Dwcj5HpGHczK745SVmUyturRr3sQ,22120
10
+ swiftpy/ai/client.py,sha256=1q1Gbs4IRMx_iwUnRWiDYvW1kUOMc2dk-a5UbFxGVnM,39074
11
+ swiftpy/ai/conversation.py,sha256=8dNSFbUxbVO6hAfzQW-O7e99-TGVcT40CZEmbro7-o8,6227
12
+ swiftpy/ai/embeddings.py,sha256=nPBTRDCeZrVF4seSBewURQZFNMnFLkmeHJclYnZw6WA,12301
13
+ swiftpy/ai/exceptions.py,sha256=CWeVGK7xUehD4fncs6bhyzRCvTq5f9Qa0IqLEhr91lI,2179
14
+ swiftpy/ai/history_strategies.py,sha256=snYiSh6SdBdzrias10P5_s_oLieZf_fxc-pGcmOGtng,6049
15
+ swiftpy/ai/middleware.py,sha256=S5V_2-JSjQ_Wwnnymt37R0BEbSIYcadzF34T8rJTrcg,35224
16
+ swiftpy/ai/pool.py,sha256=jeM9nXkP1ablzVodXfI2klR8k50Hf4Fvz3Ik9j1s6VI,3146
17
+ swiftpy/ai/pricing.py,sha256=QSHBaX5ulwgtvPBASgYGE2g42cO0dTl9SoFk_sEVL60,3257
18
+ swiftpy/ai/redis_store.py,sha256=xpyiRVuf_f1OKogiQF9EhUUlpuBklH5-MQosGD8fv2I,7932
19
+ swiftpy/ai/streaming.py,sha256=uaL36ilRpRiqMssb1u_4cyF2BiQ9qCagmJVC0ZZzyR8,3874
20
+ swiftpy/ai/agents/__init__.py,sha256=CIJtWo-QJ8_-YzzjXoH9jX9Ky3FeJL4IzBxFUHhc8oo,550
21
+ swiftpy/ai/agents/base_agent.py,sha256=y9edn6Nq4t1aiam-K3i7pjw0wP57RkAgDy5UxbB9u7c,18556
22
+ swiftpy/ai/agents/memory.py,sha256=bRUd26kgjMTV9jpgORqiLpWmBBIPVit4-O0hy0f9GY4,31874
23
+ swiftpy/ai/observability/__init__.py,sha256=LOghkxKbzSVfrp2uHMTvP0RvzEIPasVKJbZRqTBPjbw,655
24
+ swiftpy/ai/observability/drivers.py,sha256=INtt_I8gRAO6HRtVB5xM0XnV4bI0mBAXesufgFs4nug,27202
25
+ swiftpy/ai/observability/observer.py,sha256=Pa9Jrt0JZCWz7oEUhC4SDIWLW8ZSUIUyw98deoyqjBg,12809
26
+ swiftpy/ai/prompts/__init__.py,sha256=noEYpKflPverOJfyW9htYM4PB4qDuo-FX1z1MX8myUk,174
27
+ swiftpy/ai/prompts/loader.py,sha256=OBFzMKHhsuubaOuQeIvfJqOnoqVux_sqr3HHx-w6MQU,12765
28
+ swiftpy/ai/providers/__init__.py,sha256=dAhpLwTqc8muCY29K8qp1Vjx6f4TkAU_AMCqtVUtAc8,455
29
+ swiftpy/ai/providers/anthropic_provider.py,sha256=4XVKD9S0SHULqWHBStP06N5zgYyRT3wBbtfjZztz5UQ,13706
30
+ swiftpy/ai/providers/base.py,sha256=kUU2wVhYnHDLuzUojN6VAG-_P_oOOttgrVJaAlPvLM0,8934
31
+ swiftpy/ai/providers/openai_provider.py,sha256=yH2b3DVSbc_qbTuk1GTmci_WZ1v-x0ZyB7TwKezKQvc,10749
32
+ swiftpy/ai/rag/__init__.py,sha256=xqaThaOTHYYCMAwS22DAYZRnys7xPI7XfjuM8PaEUWA,1247
33
+ swiftpy/ai/rag/context_formatter.py,sha256=qBmtp0SASOSyh-jcccr_sMGtWBXq78qsR1SOylifofk,8832
34
+ swiftpy/ai/rag/pipeline_builder.py,sha256=FXLYU5_Gm35JtSiS6pqXhJp8iit8uVPbZ0pvqmukN_0,20594
35
+ swiftpy/ai/rag/reranker.py,sha256=avLqarWYOhqe2humKZ9dQEGmZ8iuZVZKWCAkaygA7dY,16808
36
+ swiftpy/ai/rag/result.py,sha256=7uFu0U5S_1jZknMlaxEt4uD54e56TV_IDtuecwABkr4,2392
37
+ swiftpy/ai/rag/retriever.py,sha256=ys97INmAP3iNJxGYu-W8kcow3Q0eGnqGyK7ng-Rii4Q,11262
38
+ swiftpy/ai/tools/__init__.py,sha256=ay60-rDoVKGLaFt-65RtnkpHn3n0TZ0p5bnyCtmAPak,468
39
+ swiftpy/ai/tools/base_tool.py,sha256=XPKYO_8lNBGAF5WGUYdQ2fFBRIlF6TruUg3OQN8ZCf0,18433
40
+ swiftpy/ai/tools/first_party.py,sha256=fZRylxFLKjYkCvV8zP2dYFsOogVmywFeKXdBQDJv1Fs,14865
41
+ swiftpy/ai/tools/tool_loop.py,sha256=FCM-7rnK4W0FTd0cy2KZw3xA44IpTvO-bmD_cPhifK4,17736
42
+ swiftpy/ai/vectorstore/__init__.py,sha256=_Tq4hAhbPfwEuvvfQI51MHCqWkam7KsLk0N5oiAfFx0,1539
43
+ swiftpy/ai/vectorstore/base.py,sha256=gkGV9gp1GiwUVSRL-dhzV9R_fr6m1r3lvUsjlaJoyLU,20475
44
+ swiftpy/ai/vectorstore/chroma_adapter.py,sha256=I98bjHuZ9Hr-OaKs1KK0ulRixe9qa6bD6oRaCPqHpSo,16473
45
+ swiftpy/ai/vectorstore/in_memory_adapter.py,sha256=WOqll8laOHS0oDfX-9F01fYwxrBbQvxBsA0R-Ey6N34,12804
46
+ swiftpy/ai/vectorstore/lancedb_adapter.py,sha256=hmvxRgm5cebD6SQxBjvmLa7TetvOSxQ4L-Aq-4postg,12499
47
+ swiftpy/ai/vectorstore/pgvector_adapter.py,sha256=kBqFUNL8R6lbLlvPNQPUuGfF3HKaCDcAXRkVyrZKRE8,18010
48
+ swiftpy/ai/vectorstore/pinecone_adapter.py,sha256=MMjIW7KahnjOITpkuacEx9aAEZBpRV-2ghgfpwswxWQ,15779
49
+ swiftpy/ai/vectorstore/qdrant_adapter.py,sha256=30Whvti8YFiK2gsfmLznEh-PxSakvw5vzL9IXBxNnME,15183
50
+ swiftpy/auth/__init__.py,sha256=94qOjTri5JOOC2t8BgeETIMfBmp3NfJgncp47vvXkG4,1163
51
+ swiftpy/auth/api_key_guard.py,sha256=k_KKmuDlzOoKs3wKRW19eM1eZaworBwF8H8Irb_T77A,20052
52
+ swiftpy/auth/auth_manager.py,sha256=j0h2x5ZFNiiiujVelN5zXtLSVBr_i1SI1xqxGFeHJjY,8380
53
+ swiftpy/auth/exceptions.py,sha256=gAaggQsmeHLnuAC1bxhmI6A8pSGpH5vFFBQNXXz2kjw,2021
54
+ swiftpy/auth/jwt_guard.py,sha256=avMrw22JdVOgG_U4ysGBO6Cacb6o--Ea_wcD5aVX2_A,8803
55
+ swiftpy/auth/jwt_issuer.py,sha256=-CPvXywSulwitS681vVFXoSBUEnghUaY12lx647FrWU,24826
56
+ swiftpy/auth/token_blacklist.py,sha256=dBTOhtJgl3fDKXsXEuG8e56osUuK9oieeiH2IHraz6U,10417
57
+ swiftpy/cache/__init__.py,sha256=kUh4wgJF0s4TdMrepZ7IkoSZk8Wcz3opkkMlLjF1JEo,345
58
+ swiftpy/cache/cache.py,sha256=nX9mO9LrJscVE5wyEhBT_LQ8cx95A8BaGws6ZcnCoi0,8987
59
+ swiftpy/cache/driver.py,sha256=L-TVFsVnPk0Ar78gp6-nDQPeRMNr0lw4ILNXJprjAsQ,6506
60
+ swiftpy/cache/drivers/memory.py,sha256=jaDuJV6KXa6gddgKK1aGscEWceXuEdQHRjXEiazeUrU,7080
61
+ swiftpy/cache/drivers/redis.py,sha256=ix6mUTp1H52opVZXpchqV4sz0Qm9BI3AkaSvsT-Dcy0,15137
62
+ swiftpy/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ swiftpy/console/cli.py,sha256=EmE7ROhvkOAuUqUd5oxEf_26w9_fpeRnF3z6CtgpilA,1883
64
+ swiftpy/console/loader.py,sha256=kwnU9TT-eQlnA-q7VrKj5xltIDQEcOpeCxDTgR-jTg8,681
65
+ swiftpy/console/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ swiftpy/console/commands/cache.py,sha256=PveYphxZes17Z3Mkx9klSQA9To0-LguWhHa3b1BTmW8,5422
67
+ swiftpy/console/commands/make.py,sha256=te6eBcL6DgKUcKb_eHH1VW0sZyXxmRJb8Xx3xGwnDOw,32221
68
+ swiftpy/console/commands/migrate.py,sha256=DTlJM9UoDNvysXVPbRHA8LrJuK7XVqzeU8ZzSrZcfF0,9593
69
+ swiftpy/console/commands/new.py,sha256=6-qbuw-eeCgZTyWYiwm_x22P3PrCICauOlq_rHAlqok,52653
70
+ swiftpy/console/commands/queue.py,sha256=YWJS8S3Tv1SBS37iTXty6qiQ1tTqqtTUdnUlY5cnYEo,10187
71
+ swiftpy/console/commands/seed.py,sha256=y9DDdWER8qb5ORu3VO9amYg3ytDh4r5eEwNq9nZ2x_0,9150
72
+ swiftpy/console/commands/start.py,sha256=AzCYeGTbS3U_fr5hOeRroW1QAmKB0VQbklg6Z0MQYGs,4817
73
+ swiftpy/console/commands/storage.py,sha256=Zi43MwFd-ubmBteeXZ3Io_0C-xSdndzerOpcu-Ik_zQ,3416
74
+ swiftpy/console/stubs/__init__.py,sha256=3v8jiJhiv4qEOyOQ2DIymls5jZENRidMvFipoPE_n40,773
75
+ swiftpy/console/stubs/controller.stub,sha256=eoN04-K7ZT6TK22QJplSmIyZ2w06K6H709eiZH7gA3c,353
76
+ swiftpy/console/stubs/event.stub,sha256=iP8Yk7i1Q6GGv5Xk8zJjQzQJAFhk4Xp-ZCbg3H0s59U,240
77
+ swiftpy/console/stubs/job.stub,sha256=f85Rn_pf3t2Uh7ZXfJi5oIrMSUSbBQ0P7TmZPNVbmAA,399
78
+ swiftpy/console/stubs/listener.stub,sha256=koAngg4MtGy5PiaJoukq4I2JJetD1HwxTL77MY3Z2ZI,236
79
+ swiftpy/console/stubs/mail.stub,sha256=N4gBDCarCxiXkaa2vcrzxnkpTfWKeRE9jgHqZNMUwJ8,410
80
+ swiftpy/console/stubs/middleware.stub,sha256=qoedQwG1jGwtmQE_HKac013tYHbpB6C-TpnEYmki_bE,449
81
+ swiftpy/console/stubs/migration.alter.stub,sha256=a9U_9UlHE_LKfw8_AOwvRcALZ0FRAe9xMRrLzzJpIjc,513
82
+ swiftpy/console/stubs/migration.api_keys.stub,sha256=3RxXvAxgW3G16ce4LT4oRZNfcXlONw7TuP7yPw3z_BY,718
83
+ swiftpy/console/stubs/migration.blank.stub,sha256=DI1JfOdf4j5U5dpvMZ9NZCtJSR0wiADOPSMyqzcTjmQ,212
84
+ swiftpy/console/stubs/migration.create.stub,sha256=zkCd07GgSp5aZq8dB8gvtG2sLReWLwFkl-c4Mo1iCeo,410
85
+ swiftpy/console/stubs/migration.stub,sha256=DI1JfOdf4j5U5dpvMZ9NZCtJSR0wiADOPSMyqzcTjmQ,212
86
+ swiftpy/console/stubs/migration.update.stub,sha256=a9U_9UlHE_LKfw8_AOwvRcALZ0FRAe9xMRrLzzJpIjc,513
87
+ swiftpy/console/stubs/model.stub,sha256=yLgx0Mkl5H_AaryxS58_3vL7VH_JrESthEh4LNO1upI,331
88
+ swiftpy/console/stubs/provider.stub,sha256=wuX6ULZMUrLLuWRRMuBjIhaDumdIa36MpcVJGoovLJw,420
89
+ swiftpy/console/stubs/repository.stub,sha256=n6New9dxesKbvAsDSybUo5BZe7DOLLWYxGG4wfQFmRA,174
90
+ swiftpy/console/stubs/request.stub,sha256=nOc8j7JDLVPL9LR80amr9EYK1CxfQ1ShYjv8j-0HiKI,410
91
+ swiftpy/console/stubs/resource.stub,sha256=30tYOpVfMUHPX2mhpACz9zSccWDuwiCFTQnhw3hjj8k,582
92
+ swiftpy/console/stubs/schema.stub,sha256=-qY622_3Ph34vcXtrIwOQY8d6MEf_ySzX9kOVB-oKfI,199
93
+ swiftpy/console/stubs/seeder.stub,sha256=5wVr24ETC2Pha4Wob8Rd-3oFxSTs153qO6y08DQ9bD8,281
94
+ swiftpy/console/stubs/service.stub,sha256=p2IJZiUMcCc-9Zx4rSxA55U2E0TIeGdIIVMjuulxw_c,159
95
+ swiftpy/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ swiftpy/core/application.py,sha256=fO8E3c-G9CZtEyiTF2ZJxbBofB7W65bxmHaVFDgIi4Q,53273
97
+ swiftpy/core/bootstrap.py,sha256=RY2XKch_MPepwGkaYsuEhaZfIqDa_IQUgN5JPgHChp8,784
98
+ swiftpy/core/config.py,sha256=nlfW6iGDkxdlZ-GqReL3LTsNU3J0JzX_3YOX-b8QPgo,15946
99
+ swiftpy/core/container.py,sha256=_dR589Zh4ZvZFbrIy6rLIRKkVXPtdrGcK5SH5B3SZf4,18784
100
+ swiftpy/core/container_exceptions.py,sha256=w6iLN-Cc5FqE4vyDonT19zXyRwgwFUnROkZVLPCq5ag,606
101
+ swiftpy/core/context.py,sha256=tAkbVN9068KlWpxK7sZmW9Nak0ziFjLJq-RWORwXhJk,4533
102
+ swiftpy/core/exceptions.py,sha256=85uoXctLRZFMrXjdLa5HgQaSRZGiDSrzoLsnJezyTAg,11773
103
+ swiftpy/core/providers/base.py,sha256=zPNvztG41Z4WgcZlivUyFilROtSTlzW90N1kSuSMP4w,786
104
+ swiftpy/database/__init__.py,sha256=7y-ZZduDAUEB2LtxGFI3-BfUnydGidVDb3JjSNepcUo,1010
105
+ swiftpy/database/exceptions.py,sha256=Rn86I-tTyyIOUezvKJ222Vysmu8-5G3fiiquN4pRcZc,1198
106
+ swiftpy/database/identifiers.py,sha256=TPD6ZYkueqbNBxQoz-Dkvii5RE5bafyHQZPSnuL9RXs,3012
107
+ swiftpy/database/pool.py,sha256=EGFGV1QsFxiCLjO3IbpRNxbK8SSu2NNJd9SrzZfFX3U,8395
108
+ swiftpy/database/query_builder.py,sha256=HRzqzPompDnAYbzgA5nsZIB2t-oDAVGkL0MprlDL_vA,64300
109
+ swiftpy/database/seeder.py,sha256=nvDhRIabsb19q0C_GfIVMlKpypMEwM72g_xd75LTFlk,1200
110
+ swiftpy/database/transaction.py,sha256=zxf8bjbW2xRsha9KavEoCoMF35B7KwR4D8yNqBFfiOQ,9492
111
+ swiftpy/database/migrations/__init__.py,sha256=Zs_zfybzD_j0iKgDZEfqX7B0XKEuafnlG7tbHG6sMgE,853
112
+ swiftpy/database/migrations/blueprint.py,sha256=A6wPU6KJZkM0S2-jR4oeYvNPCblj92YWb2yMa2uqluA,15085
113
+ swiftpy/database/migrations/lock.py,sha256=kZrkPFZU49qXLMyHcTrtJGoWiIr0KljwLwJJ5fEamSE,3215
114
+ swiftpy/database/migrations/migration.py,sha256=PrQLSzUN-uPuzAKHG3hvIApPN52FaCbhw5Eg94hAXPY,536
115
+ swiftpy/database/migrations/migrator.py,sha256=qnhdKL4xbjUrMmhEgz0pBrxrtVn2f7_50VTK31-Hi5o,18206
116
+ swiftpy/database/migrations/schema.py,sha256=6uiykQfVVPJY9I1TyEJel_6xLN63dtWH4mSM5qw77Ok,16659
117
+ swiftpy/database/orm/__init__.py,sha256=tSqx5Dn_4-VIJ7fNhualX7pF5id0kkExQOKChJhZMNY,741
118
+ swiftpy/database/orm/fields.py,sha256=W9fbZPhQWkmXWlxisinrsALIEArSfOlxWr7FZu4jBQk,2691
119
+ swiftpy/database/orm/model.py,sha256=vx_8VVUHdo0X2zNv_xdyRezeKN-ScdGa_65NBv3v6ks,70730
120
+ swiftpy/database/orm/registry.py,sha256=bWhI3lFVGXYnV8-jCnZn_ivYzufbdBkNr-I0uw3KcPA,1136
121
+ swiftpy/database/orm/relationships.py,sha256=G6Z8fapwa6nJVIaCgWymP9cx6ZCdiqEkMFp28U5Ektw,30100
122
+ swiftpy/database/pagination/__init__.py,sha256=rSYpoA9zkz3ZcZ0Hvc2ME0iFgC890dVZ62UUqAgdEtk,387
123
+ swiftpy/database/pagination/contracts.py,sha256=UGy0Z9fhCaItWL024A1Vn13g91aUA9_WzJga-Wk2Oh0,1233
124
+ swiftpy/database/pagination/paginator.py,sha256=YW-ctjqLh8Io6hzN4FwH8RM7TxoGTLNXkgJ7Di1oZzM,3856
125
+ swiftpy/database/pagination/simple_paginator.py,sha256=m3jU2PbPds3gUsNPuzx74itIa5Xd_THzVY6C2XZe6iM,3242
126
+ swiftpy/events/__init__.py,sha256=g4ZNxHfPn-08xUCjT68rTzCYuhhJ7xplJPUyT7N7PF8,234
127
+ swiftpy/events/dispatcher.py,sha256=FmM0SQYpz5NpEaA67rLs3hPjTss3orLQp23nEIS6RLs,11150
128
+ swiftpy/events/redis_bus.py,sha256=e7EbHSXqh5tOxBkAQUyRkanurTaKZU_5j_TtYHaXwZQ,20901
129
+ swiftpy/filesystem/__init__.py,sha256=h6pDK5uwTC9IjbY2xs1rrR1_IjCQODG3eUjZV9KDMLY,6923
130
+ swiftpy/filesystem/disk.py,sha256=ZW4_msyG3ihDmQIGsuNnFLxFdrxHt-6Ei1oKf_9WsUQ,13494
131
+ swiftpy/filesystem/events.py,sha256=p6dk7VUNbkbV1UGhyLFCh5Wz3SU58EMPud-3iRGYbo4,753
132
+ swiftpy/filesystem/exceptions.py,sha256=SEcZWkTqcrtca5y9ZgEv2ZcZZ99F2_oL7cjdibQBKpQ,4281
133
+ swiftpy/filesystem/manager.py,sha256=ZDkb5DGOVkqYTN2Jzl9ori6kb1Uyuz6ulggjlyh9AhQ,5417
134
+ swiftpy/filesystem/metadata.py,sha256=gUXfTmimg0puKVKbQQjSmSWgtpMsSAH_0atyta-9bkA,550
135
+ swiftpy/filesystem/paths.py,sha256=3IUDrJSvm71YiVg4UzvMV5MqDyHg7trBhGzZ3uBHJuM,3648
136
+ swiftpy/filesystem/service_provider.py,sha256=1CRvBMGHcV13T5G5uRHkds4-wuqBOP4wyiTZyVccvAs,426
137
+ swiftpy/filesystem/visibility.py,sha256=dQDLdgwxOu1WWTZ_8cozumQ8FRMocBbBP7VcHQA1Sxs,390
138
+ swiftpy/filesystem/drivers/__init__.py,sha256=MI3gTn5k8sY2dWlwFilVspAvHh_uo5AG0dLU7XLu-Lc,301
139
+ swiftpy/filesystem/drivers/base.py,sha256=qsyyL8jIxn1nR4aeRAMm23m5RTps25ePXq5A-aVZIo8,4717
140
+ swiftpy/filesystem/drivers/local.py,sha256=WonJjSh7-wBuoQa_L-yVbnRcYfKXoALwDHvTxzwaa3E,19721
141
+ swiftpy/filesystem/drivers/s3.py,sha256=TSQFSZQv1VHfsyEuiCQq53vlBEkwUeDZlTkdwr7ijNc,26259
142
+ swiftpy/filesystem/uploads/__init__.py,sha256=MVkSgtW0WRsqOr8FsaguOpnmkmFIONjqrVGiZXWkSwc,336
143
+ swiftpy/filesystem/uploads/handlers.py,sha256=Z35XQuzFXbNv5OrBtFw9N6x9Ex7RaD9LDfzh01allTc,15643
144
+ swiftpy/filesystem/uploads/uploaded_file.py,sha256=d20sEsEMzuaq63L_N5PqHDf2i2mfwqq_zwzuXDf397E,7944
145
+ swiftpy/filesystem/uploads/validators.py,sha256=zqCJkoCzsJ6Gk0SfNARIcq59BWp5Vi12o5mouZA0J7I,6982
146
+ swiftpy/helpers/__init__.py,sha256=knPHDO89GX0eHqGBshErNbXfJuEAxN7pEYUMVZhHi2Y,581
147
+ swiftpy/helpers/helper.py,sha256=DzBrtwRkB3oF2CdOMIRUt7bh-WySZQpO4uuHHiiGJgw,5197
148
+ swiftpy/http/exceptions.py,sha256=kvhrUXljXk17r295f_FGCLojA6kion7lJ5449XcC4ac,1044
149
+ swiftpy/http/middleware.py,sha256=_cahJ4gemjGF45P91JsoruSseaLoAPuNxTuB8GrXizM,10670
150
+ swiftpy/http/request.py,sha256=geEkxbzWW-ewvt6kE35PYf1E5jVU1OQpwoYTNUUWo7c,14396
151
+ swiftpy/http/response.py,sha256=PX3GrmbDrV4l9mUZTYu5UxHpKBQN-zy-tr4puuf3kps,13272
152
+ swiftpy/http/router.py,sha256=Jb40cb-OSQRRItVx322zgadhOfMrE0eiunBiPmI9PWg,36202
153
+ swiftpy/mail/__init__.py,sha256=0ivU8XeNlcLc4xALgZIyHz91Uhsps_NmF0xmiKc5lSc,1562
154
+ swiftpy/mail/attachments.py,sha256=DK4wt2Fnmh8khEzvUsK6baLwBE7GvuKNaPrXvhGO0B0,9312
155
+ swiftpy/mail/config.py,sha256=HMWluH5ItG5FCOHL-kvtd1X3OsOubYEvL26rmBVZFV8,2559
156
+ swiftpy/mail/envelope.py,sha256=ISfeYshKjbfOrCIq2Eml3s1FIq9biHxI_olbfVlPstI,6003
157
+ swiftpy/mail/exceptions.py,sha256=KHQVlGfmQ06DGwm9BWY2F8x8wpCYjuiaw1TsPvejA1U,2499
158
+ swiftpy/mail/facade.py,sha256=EapFM2-IQDZc6NC7jy8Ox8edvJv0URdPC9QAvVuuJDU,10048
159
+ swiftpy/mail/mailable.py,sha256=JDnHLf2UNO-9kEAaeCXjiZgdDVnXQzdJT_q8-JXhJUw,1615
160
+ swiftpy/mail/manager.py,sha256=Yk6hPdtwrKv-swrdOdnl1Ka4NqC7pgLPC5FE2rt6ibM,8702
161
+ swiftpy/mail/message.py,sha256=C9rd_xxz3SqjfdELHiTgxxEt5tOd_PZ4oo3xRGMh6U4,6493
162
+ swiftpy/mail/models.py,sha256=_7NfTT4X664aWdlyOF4khtVZcdwTsvJMQ9z7s5osLlQ,484
163
+ swiftpy/mail/service_provider.py,sha256=qFJRhJcAjw3VY2u_g8UZpISwdb0FCrXB60uWOwRhkY8,431
164
+ swiftpy/mail/queue/__init__.py,sha256=Vm1TO53ZGgkjME_We_KgiYIotdd-omYktQ90nYX1QVA,130
165
+ swiftpy/mail/queue/job.py,sha256=7ZbnWCRDjkDPZne61-ZMs3GQEr9G2cuNFkl-lJTOm8k,10575
166
+ swiftpy/mail/templates/__init__.py,sha256=xJCSSaMMLhi65BryPWR-sLkpOyTrIKj1ScsSUyWzzZ0,169
167
+ swiftpy/mail/templates/renderer.py,sha256=kW9eDnpLIk4wilNnuLYkpRmh3WDpfYUfPq6gRIaWzMY,6078
168
+ swiftpy/mail/transports/__init__.py,sha256=baSvGyIAI__eVeGzPTiBmPGqNfsTb8MdItJla-t8YMQ,729
169
+ swiftpy/mail/transports/base.py,sha256=I4dU6qKouuK7VzbsdX3WjjT5cGUauM273AAqPyPgUBw,630
170
+ swiftpy/mail/transports/console.py,sha256=Kk7qLtDONSKIQLWLCKy_XgRpFD5kzx9BRUnw_XdbfCc,3132
171
+ swiftpy/mail/transports/sendmail.py,sha256=s19x-oLUtQh0slME4x0kghrUfijXPaQaH9C-Z4khlp4,4472
172
+ swiftpy/mail/transports/smtp.py,sha256=3i512vx5qGQNmJbJybB2r4oINxgQ87LsnqYa343wzr0,17976
173
+ swiftpy/mail/transports/api/__init__.py,sha256=uINrBpcR9itHNMF7ZvcikhPJkzdx5i6URxRlSqA9S-I,404
174
+ swiftpy/mail/transports/api/base.py,sha256=76Z26ITeU0E7S7QQphye4bm61_ikpsk_76qmQbS-aw8,7127
175
+ swiftpy/mail/transports/api/mailgun.py,sha256=wOv5ZRFwEQ0Kys8i_Psh3szq6m16ikVEr-4qL7Yi-VY,5865
176
+ swiftpy/mail/transports/api/resend.py,sha256=9S0d9fT4HV8D4b9CeXYOQceSaIp0i1eS8EFzgz20xgc,5568
177
+ swiftpy/mail/transports/api/sendgrid.py,sha256=O_YTeOIt3_k945d1t-mlpI8NamkXWDhS6qpgXAgcAaA,6274
178
+ swiftpy/queue/__init__.py,sha256=M4sV-gVkOIv5vcx7Kb2gKQiwR9BqfMadzJyJnKi5SKI,306
179
+ swiftpy/queue/dispatcher.py,sha256=WEoTEhdG6E4HeNkaxVW-d9QeyqFgEs9O-hrhAM-xQ8c,28436
180
+ swiftpy/queue/job.py,sha256=25Y1UwateS-8If5WLOU3-7Af5HvaVg8ETNVT5ZmECxw,20117
181
+ swiftpy/queue/worker.py,sha256=6DHBEUWeOxZTfMUAksV052TTRBmgJ12rl8tPx1bbYaQ,20266
182
+ swiftpy/support/__init__.py,sha256=7GS3-mJzpedIwjS2kT_mIB6lDipUJVSUajUzIE32nKs,352
183
+ swiftpy/support/keys.py,sha256=-zjD0CB4BdLToUOXk7BkY8pWqcopk4knf_5Vq0TEfbE,3588
184
+ swiftpy/support/redis_config.py,sha256=7lxGS-aTlaKrM38xnsX_ExuQh2eJu86pMMaBLW2aK-A,7572
185
+ swiftpy/support/strings.py,sha256=V_nrga_f7KAW2c905MeSD1aBElZblr29SpSoEG5mhvo,3402
186
+ swiftpy/testing/__init__.py,sha256=oUk0VJmhIY4GPo3A4pFPydR-_D151_bAIvrWSK2Bfyg,606
187
+ swiftpy/testing/fixtures.py,sha256=x28Ha9vrnwvG3DAIIjWIgQ_vo1tGLYOx75uwp6ddqyg,4105
188
+ swiftpy/testing/http_client.py,sha256=sd-8q-73tMkZsHL4IUuDCYL37j6tponqp8webZHarrQ,25629
189
+ swiftpy/testing/test_case.py,sha256=feuSCHh08glB9xugPwivF0J5ZHqjqPIRI4Rz5oBZGjI,3688
190
+ swiftpy/testing/fakes/__init__.py,sha256=Hd7pZ7zdvwxRJ9g87H42OVfZcT3dHq2x6QI1TAC5YBQ,270
191
+ swiftpy/testing/fakes/ai_fake.py,sha256=4ZcgLYohrFSW8MB5Np1bnTnWGXItHeK700-BBcxAstM,414
192
+ swiftpy/testing/fakes/vectorstore_fake.py,sha256=6Rf_unHKaqi-SNYYtXzc5273C4hnpspTKvo2KZ2G9o0,6470
193
+ swiftpy/validation/__init__.py,sha256=DlxusvMFhV499tdtMeMnyPuk99I9zbVwPp08P35zSME,1622
194
+ swiftpy/validation/exceptions.py,sha256=UoHCCRiSgjdEoumHrFlh4gBvRfES_tWmZa_M8P0KXsE,642
195
+ swiftpy/validation/form_request.py,sha256=bmRL0wMVTMnswsf1BXNOa51rbCs0KsM_WTbdAbNhrO8,10915
196
+ swiftpy/validation/protocols.py,sha256=ah-4w40sePVNU2RUox2KXnrdHeg6SlTUg1qZpqev-e4,791
197
+ swiftpy/validation/validator.py,sha256=-TFV7Tiv6NHtSeHm6F0Gbm4jpB13dK5qDZH0dp-bizA,21343
198
+ swiftpy/validation/rules/__init__.py,sha256=KkZ2xHWAten09G1u6ttSyBKEnflUdnoDScRmX0Y8P2M,1424
199
+ swiftpy/validation/rules/builtin.py,sha256=wmKaJbvJ54K3HAXEDt9gUY6dKvZPy_0FGWm_LDGm1RA,11352
200
+ swiftpy/validation/rules/exists.py,sha256=HKM0bhKygPsyimxG5dHDLdSeH_0jrAFffOWIuyaH2q4,2657
201
+ swiftpy/validation/rules/registry.py,sha256=XJBTAWws9gMCwj4_B4_5n9n_YNUL-4ZJVcQBiBHChWg,9787
202
+ swiftpy/validation/rules/required.py,sha256=7qDh2lWvdw7Z6Upe5RVUNTox9JShpjzuZcoIxN0DPts,1387
203
+ swiftpy/validation/rules/unique.py,sha256=zqsrl9aZPgRpPZeGDCHMgyCmrjjcGWCs9UHwpt8G0xs,4407
204
+ swiftpy/websockets/__init__.py,sha256=wqeTbOohmA6JdZj7eEgvBV7NgMBfgs_FOR-GfcQrJSU,405
205
+ swiftpy/websockets/connection.py,sha256=WuKHZlBu8-37Ey8LPYy5Mk8NvRoBl5E1vwshymmyDT4,12342
206
+ swiftpy/websockets/manager.py,sha256=xg1rJMHVicNVmCOBPkVZlNp_bYCgSQ9uUD9owwqhfXk,10856
207
+ swiftpy_framework-0.1.0.dist-info/METADATA,sha256=iwK5ggZ9dmC7gQb4KcDhsT8bIDA1sp7XRYEEwDJtmwE,31841
208
+ swiftpy_framework-0.1.0.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
209
+ swiftpy_framework-0.1.0.dist-info/entry_points.txt,sha256=mL7YiOXtJNZWDVWw4x3AF8cZdC5FfA1jImeut4fQXig,53
210
+ swiftpy_framework-0.1.0.dist-info/licenses/LICENSE,sha256=eNvjYSQ3GoXrVgAhncNLq5Y2YHBBf-f0xBhTWEVXD_M,1071
211
+ swiftpy_framework-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.33.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ swiftpy = swiftpy.console.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Akeem O. Salau
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.