fastapi-startkit 0.58.0__tar.gz → 0.59.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 (342) hide show
  1. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/PKG-INFO +1 -1
  2. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/pyproject.toml +1 -1
  3. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/builder.py +58 -56
  4. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/model.py +62 -60
  5. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/README.md +0 -0
  6. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/.DS_Store +0 -0
  7. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/__init__.py +0 -0
  8. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/__init__.py +0 -0
  9. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/agent.py +0 -0
  10. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/ai.py +0 -0
  11. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/audio.py +0 -0
  12. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/audio_factory.py +0 -0
  13. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/config/ai.py +0 -0
  14. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/config/config.py +0 -0
  15. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/decorators.py +0 -0
  16. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/document.py +0 -0
  17. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/image.py +0 -0
  18. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/image_factory.py +0 -0
  19. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/judge.py +0 -0
  20. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/lab.py +0 -0
  21. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/pipeline.py +0 -0
  22. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/providers/__init__.py +0 -0
  23. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/providers/ai_provider.py +0 -0
  24. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/recording.py +0 -0
  25. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/runner.py +0 -0
  26. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/state.py +0 -0
  27. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/testing.py +0 -0
  28. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/tinker.py +0 -0
  29. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/ai/types.py +0 -0
  30. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/application.py +0 -0
  31. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/__init__.py +0 -0
  32. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/auth.py +0 -0
  33. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/channels.py +0 -0
  34. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/config.py +0 -0
  35. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/drivers/__init__.py +0 -0
  36. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/drivers/log_driver.py +0 -0
  37. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/drivers/reverb_driver.py +0 -0
  38. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/event.py +0 -0
  39. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/helpers.py +0 -0
  40. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/manager.py +0 -0
  41. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/provider.py +0 -0
  42. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/reverb/__init__.py +0 -0
  43. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/reverb/channel_manager.py +0 -0
  44. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/reverb/connection.py +0 -0
  45. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/reverb/server.py +0 -0
  46. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/stubs/__init__.py +0 -0
  47. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/broadcasting/stubs/channels.py +0 -0
  48. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/carbon/__init__.py +0 -0
  49. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/carbon/carbon.py +0 -0
  50. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/config/__init__.py +0 -0
  51. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/config/app.py +0 -0
  52. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/Configuration.py +0 -0
  53. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/__init__.py +0 -0
  54. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/config.py +0 -0
  55. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/helpers.py +0 -0
  56. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/providers/ConfigurationProvider.py +0 -0
  57. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/configuration/providers/__init__.py +0 -0
  58. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/__init__.py +0 -0
  59. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/application.py +0 -0
  60. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/can_override_config.py +0 -0
  61. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/can_override_default_options.py +0 -0
  62. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/command.py +0 -0
  63. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/console/publish_command.py +0 -0
  64. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/container/__init__.py +0 -0
  65. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/container/container.py +0 -0
  66. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/environment/__init__.py +0 -0
  67. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/environment/environment.py +0 -0
  68. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/__init__.py +0 -0
  69. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/dispatcher.py +0 -0
  70. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/fake.py +0 -0
  71. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/helpers.py +0 -0
  72. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/listener.py +0 -0
  73. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/events/provider.py +0 -0
  74. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/exceptions/__init__.py +0 -0
  75. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/exceptions/exceptions.py +0 -0
  76. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/exceptions/handler.py +0 -0
  77. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/AI.py +0 -0
  78. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/AI.pyi +0 -0
  79. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Cache.py +0 -0
  80. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Config.py +0 -0
  81. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Config.pyi +0 -0
  82. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Dump.py +0 -0
  83. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Dump.pyi +0 -0
  84. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Event.py +0 -0
  85. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Event.pyi +0 -0
  86. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Facade.py +0 -0
  87. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Gate.py +0 -0
  88. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Gate.pyi +0 -0
  89. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Hash.py +0 -0
  90. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Hash.pyi +0 -0
  91. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Loader.py +0 -0
  92. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Loader.pyi +0 -0
  93. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Mail.py +0 -0
  94. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Mail.pyi +0 -0
  95. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Notification.py +0 -0
  96. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Notification.pyi +0 -0
  97. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Queue.py +0 -0
  98. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Queue.pyi +0 -0
  99. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/RateLimiter.py +0 -0
  100. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/RateLimiter.pyi +0 -0
  101. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Request.py +0 -0
  102. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Request.pyi +0 -0
  103. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Response.py +0 -0
  104. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Response.pyi +0 -0
  105. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Session.py +0 -0
  106. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Session.pyi +0 -0
  107. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Url.py +0 -0
  108. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Url.pyi +0 -0
  109. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/View.py +0 -0
  110. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/View.pyi +0 -0
  111. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Vite.py +0 -0
  112. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/Vite.pyi +0 -0
  113. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/facades/__init__.py +0 -0
  114. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/__init__.py +0 -0
  115. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/commands/__init__.py +0 -0
  116. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/commands/serve_command.py +0 -0
  117. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/config/__init__.py +0 -0
  118. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/config/fastapi.py +0 -0
  119. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/events.py +0 -0
  120. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/exceptions.py +0 -0
  121. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/middleware.py +0 -0
  122. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/providers/fastapi_provider.py +0 -0
  123. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/requests/model.py +0 -0
  124. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/routers/router.py +0 -0
  125. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/testing/__init__.py +0 -0
  126. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/testing/assertable_json.py +0 -0
  127. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/testing/test_case.py +0 -0
  128. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/fastapi/testing/test_response.py +0 -0
  129. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/foundation/app_provider.py +0 -0
  130. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/__init__.py +0 -0
  131. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/constant.py +0 -0
  132. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/context.py +0 -0
  133. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/inertia.py +0 -0
  134. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/middleware.py +0 -0
  135. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/props/props.py +0 -0
  136. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/inertia/provider.py +0 -0
  137. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/jsonapi/__init__.py +0 -0
  138. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/jsonapi/response.py +0 -0
  139. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/loader/Loader.py +0 -0
  140. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/loader/__init__.py +0 -0
  141. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/ChannelFactory.py +0 -0
  142. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/__init__.py +0 -0
  143. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/BaseChannel.py +0 -0
  144. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/DailyChannel.py +0 -0
  145. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/MultiBaseChannel.py +0 -0
  146. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/SingleChannel.py +0 -0
  147. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/SlackChannel.py +0 -0
  148. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/StackChannel.py +0 -0
  149. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/SyslogChannel.py +0 -0
  150. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/TerminalChannel.py +0 -0
  151. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/channels/__init__.py +0 -0
  152. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/config/__init__.py +0 -0
  153. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/config/channels.py +0 -0
  154. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/config/logging.py +0 -0
  155. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/BaseDriver.py +0 -0
  156. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/LogSingleDriver.py +0 -0
  157. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/LogSlackDriver.py +0 -0
  158. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/LogSyslogDriver.py +0 -0
  159. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/LogTerminalDriver.py +0 -0
  160. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/drivers/__init__.py +0 -0
  161. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/factory.py +0 -0
  162. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/file.py +0 -0
  163. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/handler.py +0 -0
  164. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/listeners.py +0 -0
  165. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/logger.py +0 -0
  166. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/managers/LoggingManager.py +0 -0
  167. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/managers/__init__.py +0 -0
  168. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/providers/__init__.py +0 -0
  169. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/logging/providers/log_provider.py +0 -0
  170. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/__init__.py +0 -0
  171. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/collection/Collection.py +0 -0
  172. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/collection/__init__.py +0 -0
  173. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/DBMigrateCommand.py +0 -0
  174. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/DBSeedCommand.py +0 -0
  175. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MakeMigrationCommand.py +0 -0
  176. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelCommand.py +0 -0
  177. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MakeObserverCommand.py +0 -0
  178. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MakeSeedCommand.py +0 -0
  179. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MigrateFreshCommand.py +0 -0
  180. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRefreshCommand.py +0 -0
  181. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MigrateResetCommand.py +0 -0
  182. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRollbackCommand.py +0 -0
  183. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/MigrateStatusCommand.py +0 -0
  184. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/ShellCommand.py +0 -0
  185. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/__init__.py +0 -0
  186. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_migration.stub +0 -0
  187. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_seed.stub +0 -0
  188. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/stubs/model.stub +0 -0
  189. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/stubs/observer.stub +0 -0
  190. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/commands/stubs/table_migration.stub +0 -0
  191. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/config/__init__.py +0 -0
  192. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/config/config.py +0 -0
  193. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/config/database.py +0 -0
  194. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/connection.py +0 -0
  195. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/factory.py +0 -0
  196. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/manager.py +0 -0
  197. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/mysql_connection.py +0 -0
  198. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/postgres_connection.py +0 -0
  199. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/connections/sqlite_connection.py +0 -0
  200. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/exceptions.py +0 -0
  201. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/expressions/__init__.py +0 -0
  202. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/expressions/expressions.py +0 -0
  203. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/facades/DB.py +0 -0
  204. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/facades/Schema.py +0 -0
  205. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/facades/__init__.py +0 -0
  206. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/factory/__init__.py +0 -0
  207. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/factory/factory.py +0 -0
  208. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/helpers/__init__.py +0 -0
  209. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/helpers/misc.py +0 -0
  210. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/migrations/Migration.py +0 -0
  211. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/migrations/Migrator.py +0 -0
  212. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/migrations/__init__.py +0 -0
  213. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/MigrationModel.py +0 -0
  214. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/__init__.py +0 -0
  215. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/attribute.py +0 -0
  216. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/caster.py +0 -0
  217. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/fields.py +0 -0
  218. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/observer.py +0 -0
  219. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/pivot.py +0 -0
  220. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/registry.py +0 -0
  221. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/models/relationship.py +0 -0
  222. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/observers/ObservesEvents.py +0 -0
  223. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/observers/__init__.py +0 -0
  224. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/pagination/BasePaginator.py +0 -0
  225. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
  226. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/pagination/SimplePaginator.py +0 -0
  227. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/pagination/__init__.py +0 -0
  228. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/providers/DatabaseProvider.py +0 -0
  229. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/providers/__init__.py +0 -0
  230. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/EagerLoadMixin.py +0 -0
  231. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/EagerRelation.py +0 -0
  232. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/__init__.py +0 -0
  233. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/BaseGrammar.py +0 -0
  234. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
  235. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/MySQLGrammar.py +0 -0
  236. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/PostgresGrammar.py +0 -0
  237. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/SQLiteGrammar.py +0 -0
  238. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/grammars/__init__.py +0 -0
  239. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
  240. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
  241. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
  242. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
  243. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/processors/__init__.py +0 -0
  244. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/query/support.py +0 -0
  245. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/BaseRelationship.py +0 -0
  246. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsTo.py +0 -0
  247. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsToMany.py +0 -0
  248. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/HasMany.py +0 -0
  249. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/HasManyThrough.py +0 -0
  250. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/HasOne.py +0 -0
  251. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/HasOneThrough.py +0 -0
  252. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/MorphMany.py +0 -0
  253. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/MorphOne.py +0 -0
  254. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/MorphTo.py +0 -0
  255. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/MorphToMany.py +0 -0
  256. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/relationships/__init__.py +0 -0
  257. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/Blueprint.py +0 -0
  258. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/Column.py +0 -0
  259. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/ColumnDiff.py +0 -0
  260. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/Constraint.py +0 -0
  261. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
  262. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/Index.py +0 -0
  263. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/Table.py +0 -0
  264. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/TableDiff.py +0 -0
  265. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/__init__.py +0 -0
  266. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MSSQLPlatform.py +0 -0
  267. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MySQLPlatform.py +0 -0
  268. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/Platform.py +0 -0
  269. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/PostgresPlatform.py +0 -0
  270. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/SQLitePlatform.py +0 -0
  271. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/platforms/__init__.py +0 -0
  272. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/schema/schema.py +0 -0
  273. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/seeders/Seeder.py +0 -0
  274. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/seeders/__init__.py +0 -0
  275. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/stubs/create-migration.html +0 -0
  276. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/stubs/table-migration.html +0 -0
  277. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/testing/__init__.py +0 -0
  278. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/masoniteorm/testing/transaction.py +0 -0
  279. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/__init__.py +0 -0
  280. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/argument.py +0 -0
  281. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/prompt.py +0 -0
  282. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/protocol.py +0 -0
  283. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/providers/__init__.py +0 -0
  284. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/providers/mcp_provider.py +0 -0
  285. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/request.py +0 -0
  286. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/resource.py +0 -0
  287. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/response.py +0 -0
  288. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/server.py +0 -0
  289. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/mcp/tool.py +0 -0
  290. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/process/__init__.py +0 -0
  291. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/process/exception.py +0 -0
  292. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/process/fake.py +0 -0
  293. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/process/process.py +0 -0
  294. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/process/result.py +0 -0
  295. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/py.typed +0 -0
  296. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/__init__.py +0 -0
  297. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/adapters/__init__.py +0 -0
  298. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/adapters/base.py +0 -0
  299. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/adapters/claude.py +0 -0
  300. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/adapters/gemini.py +0 -0
  301. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/commands/__init__.py +0 -0
  302. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/commands/skills.py +0 -0
  303. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/parser.py +0 -0
  304. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/provider.py +0 -0
  305. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/registry.py +0 -0
  306. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/database/SKILL.md +0 -0
  307. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/fastapi/SKILL.md +0 -0
  308. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/inertia/SKILL.md +0 -0
  309. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/__init__.py +0 -0
  310. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/config/__init__.py +0 -0
  311. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/config/storage.py +0 -0
  312. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/data/mime.types +0 -0
  313. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/drivers/__init__.py +0 -0
  314. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/drivers/fake.py +0 -0
  315. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/drivers/local.py +0 -0
  316. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/drivers/s3.py +0 -0
  317. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/file.py +0 -0
  318. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/filestream.py +0 -0
  319. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/helper.py +0 -0
  320. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/providers/provider.py +0 -0
  321. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/storage/storage.py +0 -0
  322. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/__init__.py +0 -0
  323. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/collection.py +0 -0
  324. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/dataclass.py +0 -0
  325. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/providers/__init__.py +0 -0
  326. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/providers/provider.py +0 -0
  327. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/string.py +0 -0
  328. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/structures.py +0 -0
  329. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/support/uri.py +0 -0
  330. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/testing/__init__.py +0 -0
  331. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/testing/test_case.py +0 -0
  332. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/__init__.py +0 -0
  333. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/config/vite.py +0 -0
  334. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/exceptions.py +0 -0
  335. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/providers/provider.py +0 -0
  336. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/package.json +0 -0
  337. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/resources/css/app.css +0 -0
  338. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/resources/js/app.ts +0 -0
  339. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/resources/templates/index.html +0 -0
  340. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/tsconfig.json +0 -0
  341. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/stubs/vite.config.ts +0 -0
  342. {fastapi_startkit-0.58.0 → fastapi_startkit-0.59.0}/src/fastapi_startkit/vite/vite.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: fastapi-startkit
3
- Version: 0.58.0
3
+ Version: 0.59.0
4
4
  Summary: A modular, provider-driven framework for building async Python web applications with FastAPI — bundling a service container, configuration system, an async-first ORM, facades, and a Cleo-powered console.
5
5
  Keywords: fastapi,framework,async,web,asgi,orm,sqlalchemy,pydantic,ioc-container,dependency-injection,service-provider,cli,console,configuration,microservices,starter-kit,boilerplate
6
6
  Author: Bedram Tamang
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-startkit"
3
- version = "0.58.0"
3
+ version = "0.59.0"
4
4
  description = "A modular, provider-driven framework for building async Python web applications with FastAPI — bundling a service container, configuration system, an async-first ORM, facades, and a Cleo-powered console."
5
5
  readme = "README.md"
6
6
  keywords = [
@@ -1,5 +1,5 @@
1
1
  import inspect
2
- from collections.abc import Callable
2
+ from collections.abc import Callable, Iterable
3
3
  from typing import TYPE_CHECKING, Any, Generic, Self, TypeVar, overload
4
4
 
5
5
  from fastapi_startkit.masoniteorm.expressions.expressions import (
@@ -67,13 +67,13 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
67
67
  "!~~*",
68
68
  ]
69
69
 
70
- def __init__(self, connection: "Connection", grammar, processor):
70
+ def __init__(self, connection: "Connection", grammar: Any, processor: Any):
71
71
  super().__init__()
72
72
  self.connection = connection
73
73
  self.grammar = grammar
74
74
  self.processor = processor
75
75
 
76
- self._columns = []
76
+ self._columns: list[Any] = []
77
77
  self._table = ""
78
78
  self._limit = False
79
79
  self._offset = False
@@ -91,35 +91,35 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
91
91
  self._global_scopes = {}
92
92
  self._action = "select"
93
93
 
94
- def set_action(self, action: str) -> "QueryBuilder":
94
+ def set_action(self, action: str) -> "Self":
95
95
  self._action = action
96
96
  return self
97
97
 
98
- def set_model(self, model) -> "QueryBuilder":
98
+ def set_model(self, model: "TModel") -> "Self":
99
99
  self._model = model
100
100
  self._table = model.get_table_name()
101
101
  self._global_scopes = model._global_scopes
102
102
  return self
103
103
 
104
- def with_(self, *eagers) -> "QueryBuilder":
104
+ def with_(self, *eagers) -> "Self":
105
105
  self._eager_relation.register(eagers)
106
106
  return self
107
107
 
108
108
  def get_table_name(self) -> str:
109
109
  return self._table
110
110
 
111
- def table(self, table: str) -> "QueryBuilder":
111
+ def table(self, table: str) -> "Self":
112
112
  self._table = table
113
113
  return self
114
114
 
115
- def where_in(self, column: str, values) -> "QueryBuilder":
115
+ def where_in(self, column: str, values: Iterable[Any]) -> "Self":
116
116
  if hasattr(values, "_items"):
117
- values = values._items
117
+ values = getattr(values, "_items")
118
118
  values = list(values) if not isinstance(values, list) else values
119
119
  self._wheres.append(QueryExpression(column, "IN", values))
120
120
  return self
121
121
 
122
- def select(self, *args) -> "QueryBuilder":
122
+ def select(self, *args: "str | list[str]") -> "Self":
123
123
  for arg in args:
124
124
  if isinstance(arg, list):
125
125
  for column in arg:
@@ -129,14 +129,14 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
129
129
  self._columns += (SelectExpression(column),)
130
130
  return self
131
131
 
132
- def limit(self, limit: int) -> "QueryBuilder":
132
+ def limit(self, limit: int) -> "Self":
133
133
  self._limit = limit
134
134
  return self
135
135
 
136
- async def find(self, primary_key: str | int, columns=None) -> "TModel | None":
136
+ async def find(self, primary_key: str | int, columns: "list[str] | str | None" = None) -> "TModel | None":
137
137
  return await self.where(self._model.__primary_key__, primary_key).first(columns)
138
138
 
139
- async def find_or_fail(self, primary_key: str | int, columns=None) -> "TModel":
139
+ async def find_or_fail(self, primary_key: str | int, columns: "list[str] | str | None" = None) -> "TModel":
140
140
  """Return the record matching ``primary_key``.
141
141
 
142
142
  Raises:
@@ -149,7 +149,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
149
149
  raise ModelNotFoundException(f"{type(self._model).__name__} with primary key {primary_key!r} not found.")
150
150
  return result
151
151
 
152
- async def first_or_fail(self, columns=None) -> "TModel":
152
+ async def first_or_fail(self, columns: "list[str] | str | None" = None) -> "TModel":
153
153
  from fastapi_startkit.masoniteorm.exceptions import ModelNotFoundException
154
154
 
155
155
  result = await self.first(columns)
@@ -157,7 +157,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
157
157
  raise ModelNotFoundException(f"{type(self._model).__name__} not found.")
158
158
  return result
159
159
 
160
- async def first(self, columns=None) -> "TModel | None":
160
+ async def first(self, columns: "list[str] | str | None" = None) -> "TModel | None":
161
161
  if not columns:
162
162
  columns = []
163
163
 
@@ -170,7 +170,9 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
170
170
  columns = []
171
171
  return await self.get_models(columns)
172
172
 
173
- async def get_models(self, columns=None):
173
+ async def get_models(self, columns: "list[str] | str | None" = None) -> "Collection[TModel]":
174
+ if not columns:
175
+ columns = []
174
176
  self.select(columns)
175
177
  models = await self.connection.select(self.to_qmark(), list(self.get_bindings()))
176
178
  collection = self._model.hydrate(models)
@@ -180,15 +182,15 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
180
182
 
181
183
  return collection
182
184
 
183
- def get_bindings(self) -> tuple:
185
+ def get_bindings(self) -> tuple[Any, ...]:
184
186
  return self._bindings
185
187
 
186
- def run_scopes(self) -> "QueryBuilder":
188
+ def run_scopes(self) -> "Self":
187
189
  for name, scope in self._global_scopes.get(self._action, {}).items():
188
190
  scope(self)
189
191
  return self
190
192
 
191
- def without_global_scopes(self) -> "QueryBuilder":
193
+ def without_global_scopes(self) -> "Self":
192
194
  self._global_scopes = {}
193
195
  return self
194
196
 
@@ -218,11 +220,11 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
218
220
  self.run_scopes()
219
221
  return self.get_grammar().compile(self._action).to_sql()
220
222
 
221
- def offset(self, offset: int) -> "QueryBuilder":
223
+ def offset(self, offset: int) -> "Self":
222
224
  self._offset = offset
223
225
  return self
224
226
 
225
- def order_by(self, column, direction: str = "asc") -> "QueryBuilder":
227
+ def order_by(self, column: "str | QueryBuilder[Any]", direction: str = "asc") -> "Self":
226
228
  direction = direction.upper()
227
229
  if isinstance(column, QueryBuilder):
228
230
  self._order_by += (OrderByExpression(None, direction, builder=column),)
@@ -232,67 +234,67 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
232
234
  self._order_by += (OrderByExpression(col, direction),)
233
235
  return self
234
236
 
235
- def order_by_raw(self, expression: str) -> "QueryBuilder":
237
+ def order_by_raw(self, expression: str) -> "Self":
236
238
  self._order_by += (OrderByExpression(expression, raw=True),)
237
239
  return self
238
240
 
239
- def latest(self, column: str = "created_at") -> "QueryBuilder":
241
+ def latest(self, column: str = "created_at") -> "Self":
240
242
  return self.order_by(column, "desc")
241
243
 
242
- def oldest(self, column: str = "created_at") -> "QueryBuilder":
244
+ def oldest(self, column: str = "created_at") -> "Self":
243
245
  return self.order_by(column, "asc")
244
246
 
245
- def group_by(self, column: str) -> "QueryBuilder":
247
+ def group_by(self, column: str) -> "Self":
246
248
  for col in column.split(","):
247
249
  col = col.strip()
248
250
  self._group_by += (GroupByExpression(col),)
249
251
  return self
250
252
 
251
- def group_by_raw(self, expression: str) -> "QueryBuilder":
253
+ def group_by_raw(self, expression: str) -> "Self":
252
254
  self._group_by += (GroupByExpression(expression, raw=True),)
253
255
  return self
254
256
 
255
- def having(self, column: str, equality: str, value) -> "QueryBuilder":
257
+ def having(self, column: str, equality: str, value: Any) -> "Self":
256
258
  self._having += (HavingExpression(column, equality, value),)
257
259
  return self
258
260
 
259
- def where_null(self, column: str) -> "QueryBuilder":
261
+ def where_null(self, column: str) -> "Self":
260
262
  self._wheres += (QueryExpression(column, "=", None, "NULL"),)
261
263
  return self
262
264
 
263
- def where_not_null(self, column: str) -> "QueryBuilder":
265
+ def where_not_null(self, column: str) -> "Self":
264
266
  self._wheres += (QueryExpression(column, "=", None, "NOT NULL"),)
265
267
  return self
266
268
 
267
- def or_where_null(self, column: str) -> "QueryBuilder":
269
+ def or_where_null(self, column: str) -> "Self":
268
270
  self._wheres += (QueryExpression(column, "=", None, "NULL", keyword="or"),)
269
271
  return self
270
272
 
271
- def or_where_not_null(self, column: str) -> "QueryBuilder":
273
+ def or_where_not_null(self, column: str) -> "Self":
272
274
  self._wheres += (QueryExpression(column, "=", None, "NOT NULL", keyword="or"),)
273
275
  return self
274
276
 
275
- def where_not_in(self, column: str, values) -> "QueryBuilder":
277
+ def where_not_in(self, column: str, values: Iterable[Any]) -> "Self":
276
278
  values = list(values) if not isinstance(values, list) else values
277
279
  self._wheres.append(QueryExpression(column, "NOT IN", values))
278
280
  return self
279
281
 
280
- def between(self, column: str, low, high) -> "QueryBuilder":
282
+ def between(self, column: str, low: Any, high: Any) -> "Self":
281
283
  self._wheres += (BetweenExpression(column, low, high, "BETWEEN"),)
282
284
  return self
283
285
 
284
- def not_between(self, column: str, low, high) -> "QueryBuilder":
286
+ def not_between(self, column: str, low: Any, high: Any) -> "Self":
285
287
  self._wheres += (BetweenExpression(column, low, high, "NOT BETWEEN"),)
286
288
  return self
287
289
 
288
- def left_join(self, table: str, column1: str, equality: str, column2: str) -> "QueryBuilder":
290
+ def left_join(self, table: str, column1: str, equality: str, column2: str) -> "Self":
289
291
  return self.join(table, column1, equality, column2, clause="left")
290
292
 
291
- def right_join(self, table: str, column1: str, equality: str, column2: str) -> "QueryBuilder":
293
+ def right_join(self, table: str, column1: str, equality: str, column2: str) -> "Self":
292
294
  # SQLite doesn't support RIGHT JOIN — use left join as fallback
293
295
  return self.join(table, column1, equality, column2, clause="right")
294
296
 
295
- def distinct(self) -> "QueryBuilder":
297
+ def distinct(self) -> "Self":
296
298
  self._distinct = True
297
299
  return self
298
300
 
@@ -322,27 +324,27 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
322
324
  async def avg(self, column: str):
323
325
  return await self.aggregate("AVG", column)
324
326
 
325
- async def delete(self, column=None, value=None):
327
+ async def delete(self, column: str | None = None, value: Any = None):
326
328
  if column is not None:
327
329
  self.where(column, value)
328
330
  self.set_action("delete")
329
331
  sql = self.to_qmark()
330
332
  return await self.connection.delete(sql, list(self.get_bindings()))
331
333
 
332
- async def create(self, attributes: dict):
334
+ async def create(self, attributes: dict[str, Any]) -> "TModel":
333
335
  model = self._model.new_model_instance(attributes)
334
336
  await model.save()
335
337
 
336
338
  return model
337
339
 
338
- async def first_or_create(self, search: dict, attributes: dict | None = None):
340
+ async def first_or_create(self, search: dict[str, Any], attributes: dict[str, Any] | None = None) -> "TModel":
339
341
  instance = await self.where(search).first()
340
342
  if instance is not None:
341
343
  return instance
342
344
 
343
345
  return await self.create({**(attributes or {}), **search})
344
346
 
345
- async def update_or_create(self, search: dict, attributes: dict | None = None):
347
+ async def update_or_create(self, search: dict[str, Any], attributes: dict[str, Any] | None = None) -> "TModel":
346
348
  instance = await self.where(search).first()
347
349
  if instance is not None:
348
350
  if attributes:
@@ -351,7 +353,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
351
353
 
352
354
  return await self.create({**(attributes or {}), **search})
353
355
 
354
- async def insert(self, values: dict | list) -> int | None:
356
+ async def insert(self, values: dict[str, Any] | list[dict[str, Any]]) -> int | None:
355
357
  self.set_action("bulk_create")
356
358
 
357
359
  if not values:
@@ -379,7 +381,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
379
381
 
380
382
  return await self.connection.insert_get_id(sql, bindings)
381
383
 
382
- async def update(self, values: dict) -> int:
384
+ async def update(self, values: dict[str, Any]) -> int:
383
385
  updates = [UpdateQueryExpression(col, val) for col, val in values.items()]
384
386
  grammar = self.grammar()
385
387
  sql = grammar._compile_update(query=self, values=updates, qmark=True).to_sql()
@@ -492,7 +494,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
492
494
  # with .table(...) as usual.
493
495
  return self.connection.query().table(self._table)
494
496
 
495
- def invalid_operator(self, operator):
497
+ def invalid_operator(self, operator: Any) -> bool:
496
498
  """Determine whether an operator is not supported by the builder."""
497
499
  return not isinstance(operator, str) or operator.lower() not in self.operators
498
500
 
@@ -538,20 +540,20 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
538
540
  self._wheres += ((QueryExpression(column, operator, value, "value")),)
539
541
  return self
540
542
 
541
- def or_where(self, column, *args) -> "QueryBuilder":
543
+ def or_where(self, column: str, *args: Any) -> "Self":
542
544
  operator, value = self._extract_operator_value(*args)
543
545
  self._wheres += ((QueryExpression(column, operator, value, "value", keyword="or")),)
544
546
  return self
545
547
 
546
- def where_raw(self, expression: str, bindings=()) -> "QueryBuilder":
548
+ def where_raw(self, expression: str, bindings: tuple[Any, ...] = ()) -> "Self":
547
549
  self._wheres += (QueryExpression(expression, "=", None, raw=True, bindings=bindings),)
548
550
  return self
549
551
 
550
- def or_where_raw(self, expression: str, bindings=()) -> "QueryBuilder":
552
+ def or_where_raw(self, expression: str, bindings: tuple[Any, ...] = ()) -> "Self":
551
553
  self._wheres += (QueryExpression(expression, "=", None, raw=True, keyword="or", bindings=bindings),)
552
554
  return self
553
555
 
554
- def join(self, table: str, column1: str, equality: str, column2: str, clause: str = "join") -> "QueryBuilder":
556
+ def join(self, table: str, column1: str, equality: str, column2: str, clause: str = "join") -> "Self":
555
557
  join_clause = JoinClause(table, clause=clause)
556
558
  join_clause.on(column1, equality, column2)
557
559
  self._joins += (join_clause,)
@@ -574,32 +576,32 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
574
576
  )
575
577
  return operator, column2
576
578
 
577
- def where_column(self, column1: str, operator: str, column2: str | None = None) -> "QueryBuilder":
579
+ def where_column(self, column1: str, operator: str, column2: str | None = None) -> "Self":
578
580
  """Compare two columns (identifiers, never bound values), joined with AND."""
579
581
  operator, column2 = self._normalize_where_column(operator, column2)
580
582
  self._wheres += (QueryExpression(column1, operator, column2, "value_equals"),)
581
583
  return self
582
584
 
583
- def or_where_column(self, column1: str, operator: str, column2: str | None = None) -> "QueryBuilder":
585
+ def or_where_column(self, column1: str, operator: str, column2: str | None = None) -> "Self":
584
586
  """Compare two columns (identifiers, never bound values), joined with OR."""
585
587
  operator, column2 = self._normalize_where_column(operator, column2)
586
588
  self._wheres += (QueryExpression(column1, operator, column2, "value_equals", keyword="or"),)
587
589
  return self
588
590
 
589
- def when(self, condition, callback) -> "QueryBuilder":
591
+ def when(self, condition: Any, callback: Callable[["Self"], Any]) -> "Self":
590
592
  if condition:
591
593
  callback(self)
592
594
  return self
593
595
 
594
- def where_exists(self, builder: "QueryBuilder") -> "QueryBuilder":
596
+ def where_exists(self, builder: "QueryBuilder[Any]") -> "Self":
595
597
  self._wheres += (QueryExpression(None, "EXISTS", SubSelectExpression(builder)),)
596
598
  return self
597
599
 
598
- def or_where_exists(self, builder: "QueryBuilder") -> "QueryBuilder":
600
+ def or_where_exists(self, builder: "QueryBuilder[Any]") -> "Self":
599
601
  self._wheres += (QueryExpression(None, "EXISTS", SubSelectExpression(builder), keyword="or"),)
600
602
  return self
601
603
 
602
- def where_has(self, relation: str, callback=None) -> "QueryBuilder":
604
+ def where_has(self, relation: str, callback: Callable[..., Any] | None = None) -> "Self":
603
605
  related = getattr(self._model.__class__, relation)
604
606
  if callback:
605
607
  related.query_where_exists(self, callback, method="where_exists")
@@ -607,7 +609,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
607
609
  related.query_has(self, method="where_exists")
608
610
  return self
609
611
 
610
- def or_where_has(self, relation: str, callback=None) -> "QueryBuilder":
612
+ def or_where_has(self, relation: str, callback: Callable[..., Any] | None = None) -> "Self":
611
613
  related = getattr(self._model.__class__, relation)
612
614
  if callback:
613
615
  related.query_where_exists(self, callback, method="or_where_exists")
@@ -616,7 +618,7 @@ class QueryBuilder(EagerLoadMixin, SupportMixin, Generic[TModel]):
616
618
  return self
617
619
 
618
620
  @classmethod
619
- def clean_bindings(cls, values):
621
+ def clean_bindings(cls, values: dict[str, Any] | list[dict[str, Any]]) -> list[Any]:
620
622
  if isinstance(values, dict):
621
623
  values = [values]
622
624
  return [val for row in values for val in row.values()]