fastapi-startkit 0.46.0__tar.gz → 0.49.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 (400) hide show
  1. fastapi_startkit-0.49.0/PKG-INFO +48 -0
  2. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/pyproject.toml +55 -5
  3. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/providers/ai_provider.py +1 -1
  4. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/application.py +19 -1
  5. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/provider.py +1 -1
  6. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/Configuration.py +1 -1
  7. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/providers/ConfigurationProvider.py +1 -1
  8. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/providers/fastapi_provider.py +1 -1
  9. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/routers/router.py +16 -16
  10. {fastapi_startkit-0.46.0/src/fastapi_startkit/providers → fastapi_startkit-0.49.0/src/fastapi_startkit/foundation}/app_provider.py +1 -1
  11. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/provider.py +1 -1
  12. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/providers/log_provider.py +1 -1
  13. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/DBSeedCommand.py +2 -2
  14. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelCommand.py +1 -1
  15. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MakeSeedCommand.py +1 -1
  16. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MigrateFreshCommand.py +1 -1
  17. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRefreshCommand.py +1 -1
  18. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_seed.stub +1 -1
  19. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/builder.py +74 -0
  20. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/model.py +12 -0
  21. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/providers/DatabaseProvider.py +1 -1
  22. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/SQLitePlatform.py +1 -3
  23. {fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm/seeds → fastapi_startkit-0.49.0/src/fastapi_startkit/masoniteorm/seeders}/Seeder.py +1 -1
  24. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/providers/mcp_provider.py +1 -1
  25. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/provider.py +1 -1
  26. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/database/SKILL.md +1 -1
  27. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/providers/provider.py +1 -1
  28. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/support/__init__.py +2 -1
  29. fastapi_startkit-0.49.0/src/fastapi_startkit/support/providers/__init__.py +3 -0
  30. fastapi_startkit-0.46.0/src/fastapi_startkit/providers/Provider.py → fastapi_startkit-0.49.0/src/fastapi_startkit/support/providers/provider.py +2 -3
  31. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/providers/provider.py +1 -1
  32. fastapi_startkit-0.46.0/PKG-INFO +0 -34
  33. fastapi_startkit-0.46.0/src/fastapi_startkit/helpers/app.py +0 -12
  34. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/__init__.py +0 -2
  35. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/config/database.py +0 -37
  36. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/config.py +0 -114
  37. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/exceptions.py +0 -38
  38. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/factories/Factory.py +0 -110
  39. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/factories/__init__.py +0 -1
  40. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/schema/Schema.py +0 -335
  41. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/BaseScope.py +0 -6
  42. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeleteScope.py +0 -48
  43. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeletesMixin.py +0 -13
  44. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyMixin.py +0 -8
  45. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyScope.py +0 -45
  46. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/__init__.py +0 -6
  47. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/scopes/scope.py +0 -15
  48. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/testing/BaseTestCaseSelectGrammar.py +0 -377
  49. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/testing/Database.py +0 -59
  50. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/testing/TestCase.py +0 -11
  51. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/testing/__init__.py +0 -2
  52. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/User.py +0 -17
  53. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/connections/test_base_connections.py +0 -27
  54. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/eagers/test_eager.py +0 -59
  55. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/models/test_models.py +0 -296
  56. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder.py +0 -425
  57. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder_relationships.py +0 -130
  58. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_delete_grammar.py +0 -21
  59. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_insert_grammar.py +0 -35
  60. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_qmark.py +0 -42
  61. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_select_grammar.py +0 -487
  62. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_update_grammar.py +0 -28
  63. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder.py +0 -322
  64. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder_alter.py +0 -276
  65. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_mysql_builder_transaction.py +0 -39
  66. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder.py +0 -861
  67. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder_scopes.py +0 -62
  68. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_transactions.py +0 -31
  69. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/connections/test_mysql_connection_selects.py +0 -46
  70. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_delete_grammar.py +0 -65
  71. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_insert_grammar.py +0 -91
  72. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_qmark.py +0 -177
  73. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_select_grammar.py +0 -482
  74. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_update_grammar.py +0 -98
  75. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_accessors_and_mutators.py +0 -35
  76. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_model.py +0 -330
  77. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_belongs_to_many.py +0 -162
  78. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_many_through.py +0 -83
  79. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_one_through.py +0 -91
  80. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_relationships.py +0 -169
  81. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder.py +0 -380
  82. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder_alter.py +0 -309
  83. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_global_scopes.py +0 -38
  84. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_scopes.py +0 -39
  85. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_soft_delete.py +0 -84
  86. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_query_builder.py +0 -701
  87. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_transaction.py +0 -37
  88. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_delete_grammar.py +0 -65
  89. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_insert_grammar.py +0 -72
  90. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_select_grammar.py +0 -496
  91. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_update_grammar.py +0 -107
  92. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/relationships/test_postgres_relationships.py +0 -131
  93. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder.py +0 -371
  94. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder_alter.py +0 -319
  95. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/scopes/test_default_global_scopes.py +0 -145
  96. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/seeds/test_seeds.py +0 -12
  97. fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm.backup/tests/utils.py +0 -57
  98. fastapi_startkit-0.46.0/src/fastapi_startkit/providers/__init__.py +0 -3
  99. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/.DS_Store +0 -0
  100. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/__init__.py +0 -0
  101. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/__init__.py +0 -0
  102. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/agent.py +0 -0
  103. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/audio.py +0 -0
  104. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/audio_factory.py +0 -0
  105. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/config/ai.py +0 -0
  106. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/config/config.py +0 -0
  107. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/decorators.py +0 -0
  108. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/document.py +0 -0
  109. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/fakes.py +0 -0
  110. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/image.py +0 -0
  111. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/image_factory.py +0 -0
  112. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/lab.py +0 -0
  113. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/model_builder.py +0 -0
  114. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/pipeline.py +0 -0
  115. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/providers/__init__.py +0 -0
  116. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/response.py +0 -0
  117. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/runner.py +0 -0
  118. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/ai/testing.py +0 -0
  119. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/__init__.py +0 -0
  120. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/auth.py +0 -0
  121. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/channels.py +0 -0
  122. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/config.py +0 -0
  123. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/drivers/__init__.py +0 -0
  124. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/drivers/log_driver.py +0 -0
  125. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/drivers/reverb_driver.py +0 -0
  126. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/event.py +0 -0
  127. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/helpers.py +0 -0
  128. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/manager.py +0 -0
  129. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/reverb/__init__.py +0 -0
  130. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/reverb/channel_manager.py +0 -0
  131. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/reverb/connection.py +0 -0
  132. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/reverb/server.py +0 -0
  133. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/stubs/__init__.py +0 -0
  134. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/broadcasting/stubs/channels.py +0 -0
  135. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/carbon/__init__.py +0 -0
  136. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/carbon/carbon.py +0 -0
  137. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/config/__init__.py +0 -0
  138. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/config/app.py +0 -0
  139. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/__init__.py +0 -0
  140. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/config.py +0 -0
  141. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/helpers.py +0 -0
  142. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/configuration/providers/__init__.py +0 -0
  143. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/__init__.py +0 -0
  144. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/application.py +0 -0
  145. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/can_override_config.py +0 -0
  146. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/can_override_default_options.py +0 -0
  147. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/command.py +0 -0
  148. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/console/publish_command.py +0 -0
  149. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/container/__init__.py +0 -0
  150. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/container/container.py +0 -0
  151. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/environment/__init__.py +0 -0
  152. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/environment/environment.py +0 -0
  153. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/exceptions/__init__.py +0 -0
  154. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/exceptions/exceptions.py +0 -0
  155. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/exceptions/handler.py +0 -0
  156. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/AI.py +0 -0
  157. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/AI.pyi +0 -0
  158. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Cache.py +0 -0
  159. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Config.py +0 -0
  160. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Config.pyi +0 -0
  161. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Dump.py +0 -0
  162. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Dump.pyi +0 -0
  163. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Facade.py +0 -0
  164. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Gate.py +0 -0
  165. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Gate.pyi +0 -0
  166. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Hash.py +0 -0
  167. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Hash.pyi +0 -0
  168. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Loader.py +0 -0
  169. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Loader.pyi +0 -0
  170. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Mail.py +0 -0
  171. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Mail.pyi +0 -0
  172. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Notification.py +0 -0
  173. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Notification.pyi +0 -0
  174. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Queue.py +0 -0
  175. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Queue.pyi +0 -0
  176. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/RateLimiter.py +0 -0
  177. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/RateLimiter.pyi +0 -0
  178. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Request.py +0 -0
  179. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Request.pyi +0 -0
  180. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Response.py +0 -0
  181. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Response.pyi +0 -0
  182. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Session.py +0 -0
  183. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Session.pyi +0 -0
  184. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Url.py +0 -0
  185. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Url.pyi +0 -0
  186. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/View.py +0 -0
  187. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/View.pyi +0 -0
  188. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Vite.py +0 -0
  189. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/Vite.pyi +0 -0
  190. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/facades/__init__.py +0 -0
  191. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/__init__.py +0 -0
  192. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/commands/__init__.py +0 -0
  193. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/commands/serve_command.py +0 -0
  194. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/config/__init__.py +0 -0
  195. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/config/fastapi.py +0 -0
  196. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/exceptions.py +0 -0
  197. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/requests/model.py +0 -0
  198. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/testing/__init__.py +0 -0
  199. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/testing/assertable_json.py +0 -0
  200. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/testing/test_case.py +0 -0
  201. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/fastapi/testing/test_response.py +0 -0
  202. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/__init__.py +0 -0
  203. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/constant.py +0 -0
  204. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/context.py +0 -0
  205. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/inertia.py +0 -0
  206. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/middleware.py +0 -0
  207. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/inertia/props/props.py +0 -0
  208. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/jsonapi/__init__.py +0 -0
  209. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/jsonapi/response.py +0 -0
  210. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/loader/Loader.py +0 -0
  211. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/loader/__init__.py +0 -0
  212. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/ChannelFactory.py +0 -0
  213. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/__init__.py +0 -0
  214. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/BaseChannel.py +0 -0
  215. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/DailyChannel.py +0 -0
  216. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/MultiBaseChannel.py +0 -0
  217. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/SingleChannel.py +0 -0
  218. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/SlackChannel.py +0 -0
  219. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/StackChannel.py +0 -0
  220. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/SyslogChannel.py +0 -0
  221. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/TerminalChannel.py +0 -0
  222. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/channels/__init__.py +0 -0
  223. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/config/__init__.py +0 -0
  224. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/config/channels.py +0 -0
  225. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/config/logging.py +0 -0
  226. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/BaseDriver.py +0 -0
  227. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/LogSingleDriver.py +0 -0
  228. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/LogSlackDriver.py +0 -0
  229. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/LogSyslogDriver.py +0 -0
  230. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/LogTerminalDriver.py +0 -0
  231. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/drivers/__init__.py +0 -0
  232. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/factory.py +0 -0
  233. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/file.py +0 -0
  234. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/handler.py +0 -0
  235. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/listeners.py +0 -0
  236. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/logger.py +0 -0
  237. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/managers/LoggingManager.py +0 -0
  238. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/managers/__init__.py +0 -0
  239. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/logging/providers/__init__.py +0 -0
  240. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/__init__.py +0 -0
  241. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/collection/Collection.py +0 -0
  242. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/collection/__init__.py +0 -0
  243. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/DBMigrateCommand.py +0 -0
  244. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MakeMigrationCommand.py +0 -0
  245. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelDocstringCommand.py +0 -0
  246. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MakeObserverCommand.py +0 -0
  247. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MigrateResetCommand.py +0 -0
  248. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRollbackCommand.py +0 -0
  249. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/MigrateStatusCommand.py +0 -0
  250. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/ShellCommand.py +0 -0
  251. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/__init__.py +0 -0
  252. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_migration.stub +0 -0
  253. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/stubs/model.stub +0 -0
  254. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/stubs/observer.stub +0 -0
  255. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/commands/stubs/table_migration.stub +0 -0
  256. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/config/__init__.py +0 -0
  257. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/config/config.py +0 -0
  258. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/config/database.py +0 -0
  259. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/connection.py +0 -0
  260. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/factory.py +0 -0
  261. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/manager.py +0 -0
  262. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/mysql_connection.py +0 -0
  263. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/postgres_connection.py +0 -0
  264. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/connections/sqlite_connection.py +0 -0
  265. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/exceptions.py +0 -0
  266. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/expressions/__init__.py +0 -0
  267. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/expressions/expressions.py +0 -0
  268. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/facades/DB.py +0 -0
  269. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/facades/Schema.py +0 -0
  270. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/facades/__init__.py +0 -0
  271. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/factory/__init__.py +0 -0
  272. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/factory/factory.py +0 -0
  273. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/helpers/__init__.py +0 -0
  274. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/helpers/misc.py +0 -0
  275. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/migrations/Migration.py +0 -0
  276. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/migrations/Migrator.py +0 -0
  277. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/migrations/__init__.py +0 -0
  278. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/MigrationModel.py +0 -0
  279. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/__init__.py +0 -0
  280. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/attribute.py +0 -0
  281. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/caster.py +0 -0
  282. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/fields.py +0 -0
  283. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/observer.py +0 -0
  284. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/pivot.py +0 -0
  285. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/registry.py +0 -0
  286. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/models/relationship.py +0 -0
  287. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/observers/ObservesEvents.py +0 -0
  288. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/observers/__init__.py +0 -0
  289. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/pagination/BasePaginator.py +0 -0
  290. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
  291. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/pagination/SimplePaginator.py +0 -0
  292. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/pagination/__init__.py +0 -0
  293. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/providers/__init__.py +0 -0
  294. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/EagerLoadMixin.py +0 -0
  295. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/EagerRelation.py +0 -0
  296. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/__init__.py +0 -0
  297. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/BaseGrammar.py +0 -0
  298. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
  299. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/MySQLGrammar.py +0 -0
  300. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/PostgresGrammar.py +0 -0
  301. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/SQLiteGrammar.py +0 -0
  302. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/grammars/__init__.py +0 -0
  303. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
  304. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
  305. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
  306. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
  307. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/processors/__init__.py +0 -0
  308. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/query/support.py +0 -0
  309. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/BaseRelationship.py +0 -0
  310. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsTo.py +0 -0
  311. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsToMany.py +0 -0
  312. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/HasMany.py +0 -0
  313. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/HasManyThrough.py +0 -0
  314. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/HasOne.py +0 -0
  315. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/HasOneThrough.py +0 -0
  316. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/MorphMany.py +0 -0
  317. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/MorphOne.py +0 -0
  318. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/MorphTo.py +0 -0
  319. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/MorphToMany.py +0 -0
  320. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/relationships/__init__.py +0 -0
  321. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/Blueprint.py +0 -0
  322. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/Column.py +0 -0
  323. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/ColumnDiff.py +0 -0
  324. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/Constraint.py +0 -0
  325. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
  326. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/Index.py +0 -0
  327. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/Table.py +0 -0
  328. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/TableDiff.py +0 -0
  329. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/__init__.py +0 -0
  330. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MSSQLPlatform.py +0 -0
  331. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MySQLPlatform.py +0 -0
  332. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/Platform.py +0 -0
  333. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/PostgresPlatform.py +0 -0
  334. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/platforms/__init__.py +0 -0
  335. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/schema/schema.py +0 -0
  336. {fastapi_startkit-0.46.0/src/fastapi_startkit/masoniteorm/seeds → fastapi_startkit-0.49.0/src/fastapi_startkit/masoniteorm/seeders}/__init__.py +0 -0
  337. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/stubs/create-migration.html +0 -0
  338. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/stubs/table-migration.html +0 -0
  339. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/testing/__init__.py +0 -0
  340. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm/testing/transaction.py +0 -0
  341. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/.gitignore +0 -0
  342. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/CACHEDIR.TAG +0 -0
  343. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/README.md +0 -0
  344. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/lastfailed +0 -0
  345. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/nodeids +0 -0
  346. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/__init__.py +0 -0
  347. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/argument.py +0 -0
  348. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/prompt.py +0 -0
  349. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/protocol.py +0 -0
  350. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/providers/__init__.py +0 -0
  351. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/request.py +0 -0
  352. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/resource.py +0 -0
  353. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/response.py +0 -0
  354. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/server.py +0 -0
  355. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/mcp/tool.py +0 -0
  356. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/process/__init__.py +0 -0
  357. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/process/exception.py +0 -0
  358. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/process/fake.py +0 -0
  359. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/process/process.py +0 -0
  360. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/process/result.py +0 -0
  361. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/__init__.py +0 -0
  362. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/adapters/__init__.py +0 -0
  363. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/adapters/base.py +0 -0
  364. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/adapters/claude.py +0 -0
  365. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/adapters/gemini.py +0 -0
  366. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/commands/__init__.py +0 -0
  367. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/commands/skills.py +0 -0
  368. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/parser.py +0 -0
  369. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/registry.py +0 -0
  370. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/fastapi/SKILL.md +0 -0
  371. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/skills/stubs/.ai/fastapi-startkit/inertia/SKILL.md +0 -0
  372. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/__init__.py +0 -0
  373. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/config/__init__.py +0 -0
  374. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/config/storage.py +0 -0
  375. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/data/mime.types +0 -0
  376. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/drivers/__init__.py +0 -0
  377. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/drivers/fake.py +0 -0
  378. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/drivers/local.py +0 -0
  379. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/drivers/s3.py +0 -0
  380. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/file.py +0 -0
  381. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/filestream.py +0 -0
  382. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/helper.py +0 -0
  383. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/storage/storage.py +0 -0
  384. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/support/collection.py +0 -0
  385. {fastapi_startkit-0.46.0/src/fastapi_startkit/helpers → fastapi_startkit-0.49.0/src/fastapi_startkit/support}/dataclass.py +0 -0
  386. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/support/string.py +0 -0
  387. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/support/uri.py +0 -0
  388. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/testing/__init__.py +0 -0
  389. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/testing/test_case.py +0 -0
  390. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/utils/structures.py +0 -0
  391. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/__init__.py +0 -0
  392. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/config/vite.py +0 -0
  393. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/exceptions.py +0 -0
  394. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/package.json +0 -0
  395. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/resources/css/app.css +0 -0
  396. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/resources/js/app.ts +0 -0
  397. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/resources/templates/index.html +0 -0
  398. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/tsconfig.json +0 -0
  399. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/stubs/vite.config.ts +0 -0
  400. {fastapi_startkit-0.46.0 → fastapi_startkit-0.49.0}/src/fastapi_startkit/vite/vite.py +0 -0
@@ -0,0 +1,48 @@
1
+ Metadata-Version: 2.3
2
+ Name: fastapi-startkit
3
+ Version: 0.49.0
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
+ Keywords: fastapi,framework,async,web,asgi,orm,sqlalchemy,pydantic,ioc-container,dependency-injection,service-provider,cli,console,configuration,microservices,starter-kit,boilerplate
6
+ Author: Bedram Tamang
7
+ Author-email: Bedram Tamang <tmgbedu@gmail.com>
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Framework :: FastAPI
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
16
+ Requires-Dist: dotty-dict>=1.3.1
17
+ Requires-Dist: pendulum>=3.1.0,<4.0.0
18
+ Requires-Dist: inflection>=0.5.1
19
+ Requires-Dist: requests>=2.32.5,<3.0.0
20
+ Requires-Dist: cleo>=2.1.0,<3.0.0
21
+ Requires-Dist: dotenv>=0.9.9
22
+ Requires-Dist: pydantic>=2.12.5
23
+ Requires-Dist: langchain>=1.0.0 ; extra == 'ai'
24
+ Requires-Dist: langchain-core>=1.0.0 ; extra == 'ai'
25
+ Requires-Dist: faker>=40.13.0 ; extra == 'database'
26
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.38 ; extra == 'database'
27
+ Requires-Dist: fastapi[standard]>=0.124.4 ; extra == 'fastapi'
28
+ Requires-Dist: itsdangerous>=2.2.0 ; extra == 'fastapi'
29
+ Requires-Dist: jinja2>=3.1 ; extra == 'inertia'
30
+ Requires-Dist: markupsafe>=2.0 ; extra == 'inertia'
31
+ Requires-Dist: aiomysql>=0.2.0 ; extra == 'mysql'
32
+ Requires-Dist: asyncpg>=0.29.0 ; extra == 'postgres'
33
+ Requires-Dist: aiosqlite>=0.22.1 ; extra == 'sqlite'
34
+ Requires-Dist: jinja2>=3.1 ; extra == 'vite'
35
+ Requires-Python: >=3.12, <4.0
36
+ Project-URL: Homepage, https://fastapi-startkit.github.io
37
+ Project-URL: Documentation, https://fastapi-startkit.github.io
38
+ Project-URL: Repository, https://github.com/fastapi-startkit/fastapi-startkit-framework
39
+ Project-URL: Issues, https://github.com/fastapi-startkit/fastapi-startkit-framework/issues
40
+ Project-URL: Changelog, https://github.com/fastapi-startkit/fastapi-startkit-framework/releases
41
+ Provides-Extra: ai
42
+ Provides-Extra: database
43
+ Provides-Extra: fastapi
44
+ Provides-Extra: inertia
45
+ Provides-Extra: mysql
46
+ Provides-Extra: postgres
47
+ Provides-Extra: sqlite
48
+ Provides-Extra: vite
@@ -1,11 +1,40 @@
1
1
  [project]
2
2
  name = "fastapi-startkit"
3
- version = "0.46.0"
4
- description = "Fastapi Starter kit components"
3
+ version = "0.49.0"
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
+ keywords = [
6
+ "fastapi",
7
+ "framework",
8
+ "async",
9
+ "web",
10
+ "asgi",
11
+ "orm",
12
+ "sqlalchemy",
13
+ "pydantic",
14
+ "ioc-container",
15
+ "dependency-injection",
16
+ "service-provider",
17
+ "cli",
18
+ "console",
19
+ "configuration",
20
+ "microservices",
21
+ "starter-kit",
22
+ "boilerplate",
23
+ ]
5
24
  authors = [
6
25
  {name = "Bedram Tamang", email = "tmgbedu@gmail.com"}
7
26
  ]
8
27
  requires-python = ">=3.12,<4.0"
28
+ classifiers = [
29
+ "Development Status :: 4 - Beta",
30
+ "Framework :: FastAPI",
31
+ "Intended Audience :: Developers",
32
+ "Operating System :: OS Independent",
33
+ "Programming Language :: Python :: 3",
34
+ "Programming Language :: Python :: 3.12",
35
+ "Programming Language :: Python :: 3.13",
36
+ "Topic :: Software Development :: Libraries :: Application Frameworks",
37
+ ]
9
38
  dependencies = [
10
39
  "dotty-dict>=1.3.1",
11
40
  "pendulum (>=3.1.0,<4.0.0)",
@@ -16,9 +45,16 @@ dependencies = [
16
45
  "pydantic>=2.12.5",
17
46
  ]
18
47
 
48
+ [project.urls]
49
+ Homepage = "https://fastapi-startkit.github.io"
50
+ Documentation = "https://fastapi-startkit.github.io"
51
+ Repository = "https://github.com/fastapi-startkit/fastapi-startkit-framework"
52
+ Issues = "https://github.com/fastapi-startkit/fastapi-startkit-framework/issues"
53
+ Changelog = "https://github.com/fastapi-startkit/fastapi-startkit-framework/releases"
54
+
19
55
  [project.optional-dependencies]
20
56
  fastapi = [
21
- "fastapi[standard] (>=0.124.4,<0.125.0)",
57
+ "fastapi[standard]>=0.124.4",
22
58
  "itsdangerous>=2.2.0",
23
59
  ]
24
60
  database = [
@@ -69,6 +105,7 @@ dev = [
69
105
  "faker>=40.13.0",
70
106
  "langchain>=1.0.0",
71
107
  "langchain-core>=1.0.0",
108
+ "pyright>=1.1.411",
72
109
  ]
73
110
 
74
111
 
@@ -82,9 +119,22 @@ fixable = ["F401"]
82
119
  [tool.ruff.lint.per-file-ignores]
83
120
  "__init__.py" = ["F401"]
84
121
 
122
+ [tool.pyright]
123
+ include = ["src/fastapi_startkit"]
124
+ exclude = [
125
+ "**/tests",
126
+ "**/migrations",
127
+ "**/*.backup",
128
+ "**/*_backup",
129
+ "**/__pycache__",
130
+ "**/.venv",
131
+ ]
132
+ typeCheckingMode = "basic"
133
+ pythonVersion = "3.12"
134
+
85
135
  [tool.pytest.ini_options]
86
136
  asyncio_mode = "auto"
87
- norecursedirs = ["masoniteorm.backup", ".venv", "dist", "build", "__pycache__"]
137
+ norecursedirs = [".venv", "dist", "build", "__pycache__"]
88
138
 
89
139
  [tool.coverage.run]
90
140
  source = ["src/fastapi_startkit"]
@@ -98,7 +148,7 @@ omit = [
98
148
  [tool.coverage.report]
99
149
  show_missing = true
100
150
  skip_covered = false
101
- fail_under = 50
151
+ fail_under = 68
102
152
  exclude_lines = [
103
153
  "pragma: no cover",
104
154
  "if TYPE_CHECKING:",
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from fastapi_startkit.providers import Provider
5
+ from fastapi_startkit.support import Provider
6
6
 
7
7
 
8
8
  class AIProvider(Provider):
@@ -1,5 +1,6 @@
1
1
  import os
2
- from fastapi_startkit.providers.app_provider import AppProvider
2
+ import shlex
3
+ from fastapi_startkit.foundation.app_provider import AppProvider
3
4
  from pathlib import Path
4
5
  from typing import TYPE_CHECKING, Optional
5
6
  from typing import Type, Callable, Any, List, TypeVar, Generic
@@ -225,3 +226,20 @@ class Application(Container, Generic[TConfig]):
225
226
  from fastapi_startkit.console import ConsoleApplication
226
227
 
227
228
  ConsoleApplication(self).handle()
229
+
230
+ def run(self, command: str, args: "str | list[str] | None" = None) -> int:
231
+ from cleo.io.inputs.string_input import StringInput
232
+
233
+ from fastapi_startkit.console import ConsoleApplication
234
+
235
+ if isinstance(args, (list, tuple)):
236
+ args = shlex.join(str(arg) for arg in args)
237
+
238
+ command_line = f"{command} {args}".strip() if args else command
239
+
240
+ console = ConsoleApplication(self)
241
+ console.auto_exits(False)
242
+
243
+ console.find(command)
244
+
245
+ return console.run(StringInput(command_line))
@@ -5,7 +5,7 @@ import importlib.util
5
5
  import sys
6
6
  from pathlib import Path
7
7
 
8
- from ..providers import Provider
8
+ from fastapi_startkit.support import Provider
9
9
  from .config import BroadcastingConfig
10
10
  from .manager import BroadcastManager
11
11
  from .reverb.server import ReverbServer
@@ -51,7 +51,7 @@ class Configuration:
51
51
  self.set(path, merged_config)
52
52
 
53
53
  def set(self, path, value):
54
- from fastapi_startkit.helpers.dataclass import Dataclass
54
+ from fastapi_startkit.support.dataclass import Dataclass
55
55
 
56
56
  self._config[path] = Dataclass.to_dict(value)
57
57
 
@@ -1,4 +1,4 @@
1
- from ...providers import Provider
1
+ from fastapi_startkit.support import Provider
2
2
 
3
3
  from ..Configuration import Configuration
4
4
 
@@ -3,7 +3,7 @@ from fastapi import FastAPI
3
3
 
4
4
  from fastapi_startkit.fastapi.commands import ServeCommand
5
5
  from fastapi_startkit.fastapi.config import FastAPIConfig
6
- from fastapi_startkit.providers import Provider
6
+ from fastapi_startkit.support import Provider
7
7
 
8
8
 
9
9
  class FastAPIProvider(Provider):
@@ -66,38 +66,38 @@ class Router:
66
66
  def _add_route(
67
67
  self,
68
68
  path: str,
69
- endpoint: Callable[..., Any],
69
+ action: Callable[..., Any],
70
70
  methods: List[str],
71
71
  **kwargs: Unpack[RouteOptions],
72
72
  ) -> None:
73
73
  self.router.add_api_route(
74
74
  path,
75
- endpoint,
75
+ action,
76
76
  methods=methods,
77
77
  responses=kwargs.pop("responses", None) or {}, # type: ignore[misc]
78
78
  **kwargs,
79
79
  )
80
80
 
81
- def get(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
82
- self._add_route(path, endpoint, ["GET"], **kwargs)
81
+ def get(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
82
+ self._add_route(path, action, ["GET"], **kwargs)
83
83
 
84
- def post(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
85
- self._add_route(path, endpoint, ["POST"], **kwargs)
84
+ def post(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
85
+ self._add_route(path, action, ["POST"], **kwargs)
86
86
 
87
- def put(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
88
- self._add_route(path, endpoint, ["PUT"], **kwargs)
87
+ def put(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
88
+ self._add_route(path, action, ["PUT"], **kwargs)
89
89
 
90
- def patch(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
91
- self._add_route(path, endpoint, ["PATCH"], **kwargs)
90
+ def patch(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
91
+ self._add_route(path, action, ["PATCH"], **kwargs)
92
92
 
93
- def delete(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
94
- self._add_route(path, endpoint, ["DELETE"], **kwargs)
93
+ def delete(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
94
+ self._add_route(path, action, ["DELETE"], **kwargs)
95
95
 
96
- def head(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
97
- self._add_route(path, endpoint, ["HEAD"], **kwargs)
96
+ def head(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
97
+ self._add_route(path, action, ["HEAD"], **kwargs)
98
98
 
99
- def options(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
100
- self._add_route(path, endpoint, ["OPTIONS"], **kwargs)
99
+ def options(self, path: str, action: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
100
+ self._add_route(path, action, ["OPTIONS"], **kwargs)
101
101
 
102
102
  def resource(
103
103
  self,
@@ -1,5 +1,5 @@
1
1
  from fastapi_startkit.console.publish_command import PublishCommand
2
- from fastapi_startkit.providers import Provider
2
+ from fastapi_startkit.support import Provider
3
3
 
4
4
 
5
5
  class AppProvider(Provider):
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  from markupsafe import Markup
3
- from fastapi_startkit.providers import Provider
3
+ from fastapi_startkit.support import Provider
4
4
  from .inertia import Inertia
5
5
  from .middleware import InertiaMiddleware
6
6
 
@@ -1,6 +1,6 @@
1
1
  from pathlib import Path
2
2
 
3
- from fastapi_startkit.providers import Provider
3
+ from fastapi_startkit.support import Provider
4
4
  from ..ChannelFactory import ChannelFactory
5
5
  from ..config.logging import LoggingConfig
6
6
  from ..factory import DriverFactory
@@ -29,7 +29,7 @@ class DBSeedCommand(Command):
29
29
  "directory",
30
30
  "d",
31
31
  flag=False,
32
- default="databases/seeds",
32
+ default="databases/seeders",
33
33
  description="The location of the seed directory",
34
34
  ),
35
35
  option(
@@ -46,7 +46,7 @@ class DBSeedCommand(Command):
46
46
  return asyncio.run(self.handle_async())
47
47
 
48
48
  async def handle_async(self):
49
- from ..seeds import Seeder
49
+ from ..seeders import Seeder
50
50
 
51
51
  seeder = Seeder(
52
52
  seed_path=self.option("directory"),
@@ -50,7 +50,7 @@ class MakeModelCommand(Command):
50
50
  "seeders-directory",
51
51
  "S",
52
52
  flag=False,
53
- default="databases/seeds",
53
+ default="databases/seeders",
54
54
  description="The location of the seeders directory",
55
55
  ),
56
56
  ]
@@ -16,7 +16,7 @@ class MakeSeedCommand(Command):
16
16
  "directory",
17
17
  "d",
18
18
  flag=False,
19
- default="databases/seeds",
19
+ default="databases/seeders",
20
20
  description="The location of the seed directory",
21
21
  ),
22
22
  ]
@@ -39,7 +39,7 @@ class MigrateFreshCommand(Command):
39
39
  "seed-directory",
40
40
  None,
41
41
  flag=False,
42
- default="databases/seeds",
42
+ default="databases/seeders",
43
43
  description="The location of the seed directory",
44
44
  ),
45
45
  ]
@@ -40,7 +40,7 @@ class MigrateRefreshCommand(Command):
40
40
  "seed-directory",
41
41
  None,
42
42
  flag=False,
43
- default="databases/seeds",
43
+ default="databases/seeders",
44
44
  description="The location of the seed directory",
45
45
  ),
46
46
  ]
@@ -1,6 +1,6 @@
1
1
  """__SEEDER_NAME__ Seeder."""
2
2
 
3
- from masoniteorm.seeds import Seeder
3
+ from fastapi_startkit.masoniteorm.seeders import Seeder
4
4
 
5
5
 
6
6
  class __SEEDER_NAME__(Seeder):
@@ -347,6 +347,80 @@ class QueryBuilder(EagerLoadMixin, SupportMixin):
347
347
  results = await self.limit(per_page + 1).offset(offset).get()
348
348
  return SimplePaginator(results, per_page, page)
349
349
 
350
+ async def chunk(self, count: int):
351
+ """Yield results in batches of ``count`` using offset/limit paging.
352
+
353
+ Mirrors Laravel's ``chunk()``: iteration stops as soon as a batch
354
+ comes back empty or shorter than ``count``, so it never loops forever.
355
+ """
356
+ if count <= 0:
357
+ raise ValueError("chunk() size must be a positive integer.")
358
+
359
+ page = 0
360
+ while True:
361
+ results = await self.limit(count).offset(page * count).get()
362
+ if len(results) == 0:
363
+ break
364
+
365
+ yield results
366
+
367
+ if len(results) < count:
368
+ break
369
+ page += 1
370
+
371
+ async def chunk_by_id(self, count: int, column: str = None, alias: str = None, descending: bool = False):
372
+ if count <= 0:
373
+ raise ValueError("chunk_by_id() size must be a positive integer.")
374
+
375
+ column = column or self._model.__primary_key__
376
+ alias = alias or column
377
+ operator = "<" if descending else ">"
378
+ direction = "desc" if descending else "asc"
379
+
380
+ base_wheres = list(self._wheres)
381
+ offset = self._offset or 0
382
+ remaining = self._limit if self._limit is not False else None
383
+
384
+ last_id = None
385
+ page = 1
386
+ while True:
387
+ limit = count if remaining is None else min(count, remaining)
388
+ if limit == 0:
389
+ break
390
+
391
+ self._wheres = list(base_wheres)
392
+ self._order_by = ()
393
+ # The starting offset only applies to the first page; keyset
394
+ # filtering drives every page after that.
395
+ self._offset = offset if page == 1 else False
396
+ if last_id is not None:
397
+ self.where(column, operator, last_id)
398
+
399
+ results = await self.order_by(column, direction).limit(limit).get()
400
+ count_results = len(results)
401
+ if count_results == 0:
402
+ break
403
+
404
+ if remaining is not None:
405
+ remaining = max(remaining - count_results, 0)
406
+
407
+ yield results
408
+
409
+ last_id = results.last().get_attributes().get(alias)
410
+ if last_id is None:
411
+ raise RuntimeError(
412
+ f"The chunk_by_id operation was aborted because the [{alias}] "
413
+ "column is not present in the query result."
414
+ )
415
+
416
+ if count_results != count:
417
+ break
418
+ page += 1
419
+
420
+ async def chunk_by_id_desc(self, count: int, column: str = None, alias: str = None):
421
+ async for results in self.chunk_by_id(count, column, alias, descending=True):
422
+ yield results
423
+
350
424
  def new(self):
351
425
  return self.connection.query()
352
426
 
@@ -251,6 +251,18 @@ class Model(Attribute, Relationship, ObservesEvents):
251
251
  async def count(cls, column: str = "*"):
252
252
  return await cls.query().count(column)
253
253
 
254
+ @classmethod
255
+ def chunk(cls, count: int):
256
+ return cls.query().chunk(count)
257
+
258
+ @classmethod
259
+ def chunk_by_id(cls, count: int, column: str = None, alias: str = None, descending: bool = False):
260
+ return cls.query().chunk_by_id(count, column, alias, descending)
261
+
262
+ @classmethod
263
+ def chunk_by_id_desc(cls, count: int, column: str = None, alias: str = None):
264
+ return cls.query().chunk_by_id_desc(count, column, alias)
265
+
254
266
  def set_connection(self, connection: str):
255
267
  self.connection = connection
256
268
 
@@ -14,7 +14,7 @@ from fastapi_startkit.masoniteorm.connections.factory import ConnectionFactory
14
14
  from fastapi_startkit.masoniteorm.connections.manager import DatabaseManager
15
15
  from fastapi_startkit.masoniteorm import Migrator
16
16
  from fastapi_startkit.masoniteorm import Model
17
- from fastapi_startkit.providers.Provider import Provider
17
+ from fastapi_startkit.support import Provider
18
18
 
19
19
 
20
20
  class DatabaseProvider(Provider):
@@ -418,9 +418,7 @@ class SQLitePlatform(Platform):
418
418
  return f"SELECT name FROM sqlite_master WHERE type='table' AND name='{table}'"
419
419
 
420
420
  def compile_column_exists(self, table, column):
421
- return (
422
- f"SELECT column_name FROM information_schema.columns WHERE table_name='{table}' and column_name='{column}'"
423
- )
421
+ return f"SELECT name FROM pragma_table_info('{table}') WHERE name='{column}'"
424
422
 
425
423
  def compile_get_all_tables(self, database, schema=None):
426
424
  return "SELECT name FROM sqlite_master WHERE type='table'"
@@ -2,7 +2,7 @@ import pydoc
2
2
 
3
3
 
4
4
  class Seeder:
5
- def __init__(self, seed_path="databases/seeds", connection=None):
5
+ def __init__(self, seed_path="databases/seeders", connection=None):
6
6
  self.ran_seeds = []
7
7
  self.seed_path = seed_path
8
8
  self.connection = connection
@@ -1,4 +1,4 @@
1
- from fastapi_startkit.providers import Provider
1
+ from fastapi_startkit.support import Provider
2
2
 
3
3
 
4
4
  class McpProvider(Provider):
@@ -1,6 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
- from fastapi_startkit.providers import Provider
3
+ from fastapi_startkit.support import Provider
4
4
 
5
5
 
6
6
  class AISkillProvider(Provider):
@@ -85,7 +85,7 @@ class CreateLessonsTable(Migration):
85
85
 
86
86
  ```python
87
87
  # databases/seeders/course_seeder.py
88
- from fastapi_startkit.masoniteorm.seeds import Seeder
88
+ from fastapi_startkit.masoniteorm.seeders import Seeder
89
89
  from app.models.course import Course
90
90
 
91
91
 
@@ -1,5 +1,5 @@
1
1
  from pathlib import Path
2
- from ...providers import Provider
2
+ from fastapi_startkit.support import Provider
3
3
  from ..storage import StorageManager
4
4
  from ...configuration import config
5
5
  from ..drivers import LocalDriver, S3Driver
@@ -1,5 +1,6 @@
1
1
  from .collection import Collection, collect
2
2
  from .string import Str, Stringable
3
3
  from .uri import Uri, Uriable
4
+ from fastapi_startkit.support.providers import Provider
4
5
 
5
- __all__ = ["Collection", "collect", "Str", "Stringable", "Uri", "Uriable"]
6
+ __all__ = ["Collection", "collect", "Str", "Stringable", "Uri", "Uriable", "Provider"]
@@ -0,0 +1,3 @@
1
+ from fastapi_startkit.support.providers.provider import Provider
2
+
3
+ __all__ = ["Provider"]
@@ -1,11 +1,10 @@
1
1
  from typing import TYPE_CHECKING
2
2
 
3
3
  from fastapi_startkit.support import Str
4
-
5
- from fastapi_startkit.helpers.dataclass import Dataclass
4
+ from fastapi_startkit.support.dataclass import Dataclass
6
5
 
7
6
  if TYPE_CHECKING:
8
- from ..application import Application
7
+ from fastapi_startkit.application import Application
9
8
 
10
9
 
11
10
  class Provider:
@@ -1,7 +1,7 @@
1
1
  import os
2
2
 
3
3
 
4
- from fastapi_startkit.providers import Provider
4
+ from fastapi_startkit.support import Provider
5
5
  from ..config.vite import ViteConfig
6
6
 
7
7
  from ..vite import Vite
@@ -1,34 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: fastapi-startkit
3
- Version: 0.46.0
4
- Summary: Fastapi Starter kit components
5
- Author: Bedram Tamang
6
- Author-email: Bedram Tamang <tmgbedu@gmail.com>
7
- Requires-Dist: dotty-dict>=1.3.1
8
- Requires-Dist: pendulum>=3.1.0,<4.0.0
9
- Requires-Dist: inflection>=0.5.1
10
- Requires-Dist: requests>=2.32.5,<3.0.0
11
- Requires-Dist: cleo>=2.1.0,<3.0.0
12
- Requires-Dist: dotenv>=0.9.9
13
- Requires-Dist: pydantic>=2.12.5
14
- Requires-Dist: langchain>=1.0.0 ; extra == 'ai'
15
- Requires-Dist: langchain-core>=1.0.0 ; extra == 'ai'
16
- Requires-Dist: faker>=40.13.0 ; extra == 'database'
17
- Requires-Dist: sqlalchemy[asyncio]>=2.0.38 ; extra == 'database'
18
- Requires-Dist: fastapi[standard]>=0.124.4,<0.125.0 ; extra == 'fastapi'
19
- Requires-Dist: itsdangerous>=2.2.0 ; extra == 'fastapi'
20
- Requires-Dist: jinja2>=3.1 ; extra == 'inertia'
21
- Requires-Dist: markupsafe>=2.0 ; extra == 'inertia'
22
- Requires-Dist: aiomysql>=0.2.0 ; extra == 'mysql'
23
- Requires-Dist: asyncpg>=0.29.0 ; extra == 'postgres'
24
- Requires-Dist: aiosqlite>=0.22.1 ; extra == 'sqlite'
25
- Requires-Dist: jinja2>=3.1 ; extra == 'vite'
26
- Requires-Python: >=3.12, <4.0
27
- Provides-Extra: ai
28
- Provides-Extra: database
29
- Provides-Extra: fastapi
30
- Provides-Extra: inertia
31
- Provides-Extra: mysql
32
- Provides-Extra: postgres
33
- Provides-Extra: sqlite
34
- Provides-Extra: vite
@@ -1,12 +0,0 @@
1
- def storage_path(path: str = "") -> str:
2
- """Get the path to the storage directory."""
3
- from fastapi_startkit.application import app
4
-
5
- return app().storage_path(path)
6
-
7
-
8
- def public_path(path: str = "") -> str:
9
- """Get the path to the public directory."""
10
- from fastapi_startkit.application import app
11
-
12
- return app().public_path(path)
@@ -1,2 +0,0 @@
1
- from .models.model import Model
2
- from .models.fields import Field