fastapi-startkit 0.26.0__tar.gz → 0.28.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.
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/PKG-INFO +1 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/pyproject.toml +6 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/application.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/collection/collection.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/config/app.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/Configuration.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/__init__.py +1 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/publish_command.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/container/container.py +15 -42
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions/__init__.py +0 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions/exceptions.py +0 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions/handler.py +1 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/ExceptionHandler.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/handlers/DumpExceptionHandler.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/handlers/HttpExceptionHandler.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/handlers/ModelNotFoundHandler.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Hash.pyi +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Loader.pyi +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/RateLimiter.pyi +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/commands/serve_command.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/exceptions.py +2 -8
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/providers/fastapi_provider.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/routers/router.py +8 -24
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/testing/__init__.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/testing/test_case.py +1 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/helpers/app.py +3 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/helpers/dataclass.py +1 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/context.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/inertia.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/middleware.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/provider.py +0 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/loader/Loader.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/DailyChannel.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/SingleChannel.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/SlackChannel.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/SyslogChannel.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/TerminalChannel.py +3 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/config/logging.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/LogSingleDriver.py +9 -43
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/LogSlackDriver.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/LogSyslogDriver.py +1 -5
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/listeners.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/providers/log_provider.py +1 -7
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/__init__.py +2 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/DBMigrateCommand.py +4 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/DBSeedCommand.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MakeMigrationCommand.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelCommand.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelDocstringCommand.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MakeObserverCommand.py +2 -8
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MigrateFreshCommand.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRefreshCommand.py +3 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MigrateResetCommand.py +4 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRollbackCommand.py +4 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MigrateStatusCommand.py +4 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/ShellCommand.py +3 -10
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm/exceptions.py +12 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/expressions/expressions.py +3 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/migrations/Migrator.py +23 -57
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/attribute.py +3 -14
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/builder.py +26 -20
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/caster.py +4 -17
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/model.py +10 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/observer.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/registry.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/providers/DatabaseProvider.py +1 -7
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/EagerLoadMixin.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/BaseGrammar.py +23 -73
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/MySQLGrammar.py +5 -7
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/PostgresGrammar.py +7 -11
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/SQLiteGrammar.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/support.py +1 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/BaseRelationship.py +12 -36
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsTo.py +2 -7
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsToMany.py +11 -40
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/HasMany.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/HasManyThrough.py +8 -12
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/HasOne.py +3 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/HasOneThrough.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/MorphMany.py +4 -12
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/MorphOne.py +4 -12
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/MorphTo.py +3 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/MorphToMany.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/Blueprint.py +27 -85
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/Table.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MSSQLPlatform.py +23 -51
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MySQLPlatform.py +31 -75
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/Platform.py +4 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/PostgresPlatform.py +31 -71
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/SQLitePlatform.py +19 -49
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/schema.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/seeds/Seeder.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/testing/__init__.py +2 -2
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/config.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/factories/Factory.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/schema/Schema.py +7 -21
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeleteScope.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyScope.py +2 -8
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/testing/BaseTestCaseSelectGrammar.py +75 -243
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/eagers/test_eager.py +5 -15
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/integrations/test_model.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/models/test_models.py +13 -45
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder.py +11 -36
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_delete_grammar.py +2 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_insert_grammar.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_select_grammar.py +14 -29
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_update_grammar.py +2 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder_alter.py +3 -9
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_mysql_builder_transaction.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder.py +57 -174
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder_scopes.py +2 -8
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_delete_grammar.py +5 -19
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_insert_grammar.py +6 -18
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_qmark.py +12 -38
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_select_grammar.py +11 -20
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_update_grammar.py +8 -25
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_accessors_and_mutators.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_model.py +13 -39
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_belongs_to_many.py +5 -15
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_many_through.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_one_through.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_relationships.py +6 -22
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder.py +8 -26
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder_alter.py +5 -15
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_global_scopes.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_soft_delete.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_query_builder.py +49 -150
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_delete_grammar.py +4 -16
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_insert_grammar.py +5 -15
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_select_grammar.py +11 -22
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_update_grammar.py +9 -28
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder.py +6 -18
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder_alter.py +4 -12
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/providers/Provider.py +1 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/config/__init__.py +1 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/drivers/__init__.py +1 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/drivers/fake.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/drivers/local.py +2 -4
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/drivers/s3.py +15 -42
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/providers/provider.py +2 -10
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/storage.py +1 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/testing/__init__.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/testing/test_case.py +4 -5
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/collections.py +1 -3
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/str.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/structures.py +1 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/providers/provider.py +2 -6
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/vite.py +10 -26
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/.DS_Store +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/carbon/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/carbon/carbon.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/collection/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/config/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/config.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/helpers.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/providers/ConfigurationProvider.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/configuration/providers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/application.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/can_override_config.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/can_override_default_options.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/command.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/container/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/environment/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/environment/environment.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/DD.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/exceptionite/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/exceptionite/blocks.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/exceptionite/controllers.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/exceptionite/solutions.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions.backup/exceptionite/tabs.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Auth.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Auth.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Broadcast.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Cache.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Config.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Config.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Dump.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Dump.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Facade.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Gate.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Gate.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Hash.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Inertia.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Loader.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Mail.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Mail.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Notification.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Notification.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Queue.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Queue.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/RateLimiter.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Request.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Request.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Response.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Response.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Session.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Session.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Url.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Url.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/View.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/View.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Vite.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/Vite.pyi +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/commands/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/config/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/config/fastapi.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/requests/model.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/helpers/string.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/constant.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/props/props.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/loader/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/ChannelFactory.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/BaseChannel.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/MultiBaseChannel.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/StackChannel.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/channels/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/config/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/config/channels.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/BaseDriver.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/LogTerminalDriver.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/drivers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/factory.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/handler.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/logger.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/managers/LoggingManager.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/managers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/logging/providers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/collection/Collection.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/collection/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/MakeSeedCommand.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_migration.stub +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_seed.stub +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/stubs/model.stub +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/stubs/observer.stub +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/commands/stubs/table_migration.stub +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/config/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/config/config.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/config/database.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/connection.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/factory.py +1 -1
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/manager.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/mysql_connection.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/postgres_connection.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/connections/sqlite_connection.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/expressions/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/facades/DB.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/facades/Schema.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/facades/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/factory/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/factory/factory.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/helpers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/helpers/misc.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/migrations/Migration.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/migrations/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/MigrationModel.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/fields.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/pivot.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/models/relationship.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/observers/ObservesEvents.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/observers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/pagination/BasePaginator.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/pagination/SimplePaginator.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/pagination/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/providers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/EagerRelation.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/grammars/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/query/processors/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/relationships/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/Column.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/ColumnDiff.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/Constraint.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/Index.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/TableDiff.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/schema/platforms/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/seeds/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/stubs/create-migration.html +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/stubs/table-migration.html +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm/testing/transaction.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/.gitignore +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/CACHEDIR.TAG +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/README.md +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/lastfailed +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/nodeids +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/config/database.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/exceptions.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/factories/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/BaseScope.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeletesMixin.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyMixin.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/scopes/scope.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/testing/Database.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/testing/TestCase.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/testing/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/User.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/connections/test_base_connections.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/factories/test_factories.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/integrations/config/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/integrations/config/database.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/integrations/databases/migrations/2026_01_01_000000_create_users_table.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/integrations/model.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder_relationships.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_qmark.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_transactions.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/connections/test_mysql_connection_selects.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_scopes.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_transaction.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/relationships/test_postgres_relationships.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/scopes/test_default_global_scopes.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/seeds/test_seeds.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/masoniteorm.backup/tests/utils.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/providers/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/providers/app_provider.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/config/storage.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/file.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/storage/filestream.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/console.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/data/mime.types +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/filesystem.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/http.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/location.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/utils/time.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/__init__.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/config/vite.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/exceptions.py +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/package.json +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/resources/css/app.css +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/resources/js/app.ts +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/templates/index.html +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/tsconfig.json +0 -0
- {fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/vite/stubs/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fastapi-startkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.28.0"
|
|
4
4
|
description = "Fastapi Starter kit components"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Bedram Tamang", email = "tmgbedu@gmail.com"}
|
|
@@ -55,6 +55,11 @@ dev = [
|
|
|
55
55
|
"ruff>=0.9.0",
|
|
56
56
|
"twine>=6.2.0",
|
|
57
57
|
"itsdangerous>=2.2.0",
|
|
58
|
+
"asyncpg>=0.29.0",
|
|
59
|
+
"aiosqlite>=0.22.1",
|
|
60
|
+
"aiomysql>=0.2.0",
|
|
61
|
+
"sqlalchemy[asyncio]>=2.0.38",
|
|
62
|
+
"fastapi[standard]>=0.124.4",
|
|
58
63
|
]
|
|
59
64
|
|
|
60
65
|
|
|
@@ -74,9 +74,7 @@ class Application(Container, Generic[TConfig]):
|
|
|
74
74
|
return self
|
|
75
75
|
|
|
76
76
|
def configure_exception_handler(self):
|
|
77
|
-
self.exception_manager: ExceptionHandler = self._exception_handler_class(
|
|
78
|
-
application=self
|
|
79
|
-
)
|
|
77
|
+
self.exception_manager: ExceptionHandler = self._exception_handler_class(application=self)
|
|
80
78
|
self.exception_manager.register()
|
|
81
79
|
self.exception_manager.install()
|
|
82
80
|
self.bind("exception_manager", self.exception_manager)
|
|
@@ -163,9 +161,7 @@ class Application(Container, Generic[TConfig]):
|
|
|
163
161
|
return self
|
|
164
162
|
|
|
165
163
|
# Add custom exception handlers
|
|
166
|
-
def add_exception_handler(
|
|
167
|
-
self, exc_class_or_status_code: Any, handler: Callable[..., Any]
|
|
168
|
-
):
|
|
164
|
+
def add_exception_handler(self, exc_class_or_status_code: Any, handler: Callable[..., Any]):
|
|
169
165
|
self._fastapi.add_exception_handler(exc_class_or_status_code, handler)
|
|
170
166
|
return self
|
|
171
167
|
|
|
@@ -175,9 +171,7 @@ class Application(Container, Generic[TConfig]):
|
|
|
175
171
|
try:
|
|
176
172
|
from fastapi import FastAPI
|
|
177
173
|
except ImportError:
|
|
178
|
-
raise RuntimeError(
|
|
179
|
-
"FastAPI is not installed. Install it with: pip install fastapi"
|
|
180
|
-
)
|
|
174
|
+
raise RuntimeError("FastAPI is not installed. Install it with: pip install fastapi")
|
|
181
175
|
self._fastapi = FastAPI()
|
|
182
176
|
# Making the type hint work
|
|
183
177
|
assert self._fastapi is not None
|
|
@@ -5,9 +5,7 @@ from fastapi_startkit.environment.environment import env
|
|
|
5
5
|
|
|
6
6
|
@dataclass
|
|
7
7
|
class AppConfig:
|
|
8
|
-
name: str = field(
|
|
9
|
-
default_factory=lambda: os.getenv("APP_NAME", "FastAPI starter kit")
|
|
10
|
-
)
|
|
8
|
+
name: str = field(default_factory=lambda: os.getenv("APP_NAME", "FastAPI starter kit"))
|
|
11
9
|
env: str = field(default_factory=lambda: os.getenv("APP_ENV", "development"))
|
|
12
10
|
debug: bool = field(default_factory=lambda: env("APP_DEBUG", "true"))
|
|
13
11
|
timezone: str = field(default_factory=lambda: os.getenv("APP_TIMEZONE", "UTC"))
|
|
@@ -26,9 +26,7 @@ class Configuration:
|
|
|
26
26
|
def load(self):
|
|
27
27
|
"""At boot load configuration from all files and store them in here."""
|
|
28
28
|
config_root = self.application.make("config.location")
|
|
29
|
-
for module_name, module in (
|
|
30
|
-
Loader().get_modules(config_root, raise_exception=True).items()
|
|
31
|
-
):
|
|
29
|
+
for module_name, module in Loader().get_modules(config_root, raise_exception=True).items():
|
|
32
30
|
params = Loader().get_parameters(module)
|
|
33
31
|
for name, value in params.items():
|
|
34
32
|
self._config[f"{module_name}.{name.lower()}"] = value
|
|
@@ -42,9 +40,7 @@ class Configuration:
|
|
|
42
40
|
(such as 'application').
|
|
43
41
|
"""
|
|
44
42
|
if path in self.reserved_keys:
|
|
45
|
-
raise InvalidConfigurationSetup(
|
|
46
|
-
f"{path} is a reserved configuration key name. Please use an other key."
|
|
47
|
-
)
|
|
43
|
+
raise InvalidConfigurationSetup(f"{path} is a reserved configuration key name. Please use an other key.")
|
|
48
44
|
if isinstance(external_config, str):
|
|
49
45
|
# config is a path and should be loaded
|
|
50
46
|
params = Loader().get_parameters(external_config)
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/console/publish_command.py
RENAMED
|
@@ -37,9 +37,7 @@ class PublishCommand(Command):
|
|
|
37
37
|
if provider_arg:
|
|
38
38
|
target = Str.slugify(provider_arg)
|
|
39
39
|
resources = {
|
|
40
|
-
name: files
|
|
41
|
-
for name, files in application.published_resources.items()
|
|
42
|
-
if Str.slugify(name) == target
|
|
40
|
+
name: files for name, files in application.published_resources.items() if Str.slugify(name) == target
|
|
43
41
|
}
|
|
44
42
|
if not resources:
|
|
45
43
|
self.line(f"<error>No provider found matching '{provider_arg}'.</error>")
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/container/container.py
RENAMED
|
@@ -54,14 +54,10 @@ class Container:
|
|
|
54
54
|
"""
|
|
55
55
|
if inspect.ismodule(class_obj):
|
|
56
56
|
raise StrictContainerException(
|
|
57
|
-
"Cannot bind module '{}' with key '{}' into the container".format(
|
|
58
|
-
class_obj, name
|
|
59
|
-
)
|
|
57
|
+
"Cannot bind module '{}' with key '{}' into the container".format(class_obj, name)
|
|
60
58
|
)
|
|
61
59
|
if self.strict and name in self.objects:
|
|
62
|
-
raise StrictContainerException(
|
|
63
|
-
"You cannot override a key inside a strict container"
|
|
64
|
-
)
|
|
60
|
+
raise StrictContainerException("You cannot override a key inside a strict container")
|
|
65
61
|
|
|
66
62
|
if self.override or name not in self.objects:
|
|
67
63
|
self.fire_hook("bind", name, class_obj)
|
|
@@ -145,9 +141,7 @@ class Container:
|
|
|
145
141
|
obj = self.resolve(name, *arguments)
|
|
146
142
|
return obj
|
|
147
143
|
|
|
148
|
-
raise MissingContainerBindingNotFound(
|
|
149
|
-
"{0} key was not found in the container".format(name)
|
|
150
|
-
)
|
|
144
|
+
raise MissingContainerBindingNotFound("{0} key was not found in the container".format(name))
|
|
151
145
|
|
|
152
146
|
def has(self, name):
|
|
153
147
|
"""Check if a key exists in the container.
|
|
@@ -200,14 +194,9 @@ class Container:
|
|
|
200
194
|
self.remember
|
|
201
195
|
and not passing_arguments
|
|
202
196
|
and inspect.ismethod(obj)
|
|
203
|
-
and "{}.{}.{}".format(
|
|
204
|
-
obj.__module__, obj.__self__.__class__.__name__, obj.__name__
|
|
205
|
-
)
|
|
206
|
-
in self._remembered
|
|
197
|
+
and "{}.{}.{}".format(obj.__module__, obj.__self__.__class__.__name__, obj.__name__) in self._remembered
|
|
207
198
|
):
|
|
208
|
-
location = "{}.{}.{}".format(
|
|
209
|
-
obj.__module__, obj.__self__.__class__.__name__, obj.__name__
|
|
210
|
-
)
|
|
199
|
+
location = "{}.{}.{}".format(obj.__module__, obj.__self__.__class__.__name__, obj.__name__)
|
|
211
200
|
objects = self._remembered[location]
|
|
212
201
|
try:
|
|
213
202
|
return obj(*objects)
|
|
@@ -271,9 +260,7 @@ class Container:
|
|
|
271
260
|
if not inspect.ismethod(obj):
|
|
272
261
|
self._remembered[obj] = objects
|
|
273
262
|
else:
|
|
274
|
-
signature = "{}.{}.{}".format(
|
|
275
|
-
obj.__module__, obj.__self__.__class__.__name__, obj.__name__
|
|
276
|
-
)
|
|
263
|
+
signature = "{}.{}.{}".format(obj.__module__, obj.__self__.__class__.__name__, obj.__name__)
|
|
277
264
|
self._remembered[signature] = objects
|
|
278
265
|
return obj(*objects)
|
|
279
266
|
|
|
@@ -305,20 +292,15 @@ class Container:
|
|
|
305
292
|
providers.update({key: value})
|
|
306
293
|
elif "*" in search:
|
|
307
294
|
split_search = search.split("*")
|
|
308
|
-
if key.startswith(split_search[0]) and key.endswith(
|
|
309
|
-
split_search[1]
|
|
310
|
-
):
|
|
295
|
+
if key.startswith(split_search[0]) and key.endswith(split_search[1]):
|
|
311
296
|
providers.update({key: value})
|
|
312
297
|
else:
|
|
313
|
-
raise AttributeError(
|
|
314
|
-
"There is no '*' in your collection search"
|
|
315
|
-
)
|
|
298
|
+
raise AttributeError("There is no '*' in your collection search")
|
|
316
299
|
else:
|
|
317
300
|
for provider_key, provider_class in self.objects.items():
|
|
318
|
-
if (
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
) or isinstance(provider_class, search):
|
|
301
|
+
if (inspect.isclass(provider_class) and issubclass(provider_class, search)) or isinstance(
|
|
302
|
+
provider_class, search
|
|
303
|
+
):
|
|
322
304
|
providers.update({provider_key: provider_class})
|
|
323
305
|
|
|
324
306
|
return providers
|
|
@@ -344,10 +326,7 @@ class Container:
|
|
|
344
326
|
return obj
|
|
345
327
|
|
|
346
328
|
for _, provider_class in self.objects.items():
|
|
347
|
-
if
|
|
348
|
-
parameter.annotation == provider_class
|
|
349
|
-
or parameter.annotation == provider_class.__class__
|
|
350
|
-
):
|
|
329
|
+
if parameter.annotation == provider_class or parameter.annotation == provider_class.__class__:
|
|
351
330
|
obj = provider_class
|
|
352
331
|
self.fire_hook("resolve", parameter, obj)
|
|
353
332
|
|
|
@@ -362,9 +341,7 @@ class Container:
|
|
|
362
341
|
return obj
|
|
363
342
|
|
|
364
343
|
raise ContainerError(
|
|
365
|
-
"The dependency with the {0} annotation could not be resolved by the container".format(
|
|
366
|
-
parameter
|
|
367
|
-
)
|
|
344
|
+
"The dependency with the {0} annotation could not be resolved by the container".format(parameter)
|
|
368
345
|
)
|
|
369
346
|
|
|
370
347
|
def get_parameters(self, obj):
|
|
@@ -392,9 +369,7 @@ class Container:
|
|
|
392
369
|
return keyword.default
|
|
393
370
|
|
|
394
371
|
raise ContainerError(
|
|
395
|
-
"The parameter dependency with the key of {0} could not be found in the container".format(
|
|
396
|
-
parameter
|
|
397
|
-
)
|
|
372
|
+
"The parameter dependency with the key of {0} could not be found in the container".format(parameter)
|
|
398
373
|
)
|
|
399
374
|
|
|
400
375
|
def on_bind(self, key, obj):
|
|
@@ -503,9 +478,7 @@ class Container:
|
|
|
503
478
|
return return_obj
|
|
504
479
|
|
|
505
480
|
raise MissingContainerBindingNotFound(
|
|
506
|
-
"The dependency with the {0} annotation could not be resolved by the container".format(
|
|
507
|
-
obj
|
|
508
|
-
)
|
|
481
|
+
"The dependency with the {0} annotation could not be resolved by the container".format(obj)
|
|
509
482
|
)
|
|
510
483
|
|
|
511
484
|
def __contains__(self, obj):
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions/exceptions.py
RENAMED
|
@@ -144,16 +144,6 @@ class NotificationException(Exception):
|
|
|
144
144
|
pass
|
|
145
145
|
|
|
146
146
|
|
|
147
|
-
class ModelNotFoundException(Exception):
|
|
148
|
-
is_http_exception = True
|
|
149
|
-
|
|
150
|
-
def get_response(self):
|
|
151
|
-
return "Model Not Found"
|
|
152
|
-
|
|
153
|
-
def get_status(self):
|
|
154
|
-
return 404
|
|
155
|
-
|
|
156
|
-
|
|
157
147
|
class AuthorizationException(Exception):
|
|
158
148
|
is_http_exception = True
|
|
159
149
|
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/exceptions/handler.py
RENAMED
|
@@ -3,7 +3,6 @@ import atexit
|
|
|
3
3
|
from typing import Any, Callable, Dict, List, Optional, Type
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
class ExceptionHandler:
|
|
8
7
|
def __init__(self, application=None):
|
|
9
8
|
self.app = application
|
|
@@ -74,11 +73,7 @@ class ExceptionHandler:
|
|
|
74
73
|
|
|
75
74
|
context = f"{type(exception).__name__}: {exception}"
|
|
76
75
|
if self.app and self.app.is_debug():
|
|
77
|
-
context += "\n" + "".join(
|
|
78
|
-
traceback.format_exception(
|
|
79
|
-
type(exception), exception, exception.__traceback__
|
|
80
|
-
)
|
|
81
|
-
)
|
|
76
|
+
context += "\n" + "".join(traceback.format_exception(type(exception), exception, exception.__traceback__))
|
|
82
77
|
return context
|
|
83
78
|
|
|
84
79
|
async def handle(self, exception: Exception, context: Optional[Dict] = None) -> Any:
|
|
@@ -31,9 +31,7 @@ class ExceptionHandler:
|
|
|
31
31
|
response = self.application.make("response")
|
|
32
32
|
request = self.application.make("request")
|
|
33
33
|
|
|
34
|
-
self.application.make("event").fire(
|
|
35
|
-
f"masonite.exception.{exception.__class__.__name__}", exception
|
|
36
|
-
)
|
|
34
|
+
self.application.make("event").fire(f"masonite.exception.{exception.__class__.__name__}", exception)
|
|
37
35
|
|
|
38
36
|
# add headers to response if any
|
|
39
37
|
if hasattr(exception, "get_headers"):
|
|
@@ -47,17 +45,13 @@ class ExceptionHandler:
|
|
|
47
45
|
response.with_headers(headers)
|
|
48
46
|
|
|
49
47
|
if self.application.has(f"{exception.__class__.__name__}Handler"):
|
|
50
|
-
return self.application.make(
|
|
51
|
-
f"{exception.__class__.__name__}Handler"
|
|
52
|
-
).handle(exception)
|
|
48
|
+
return self.application.make(f"{exception.__class__.__name__}Handler").handle(exception)
|
|
53
49
|
|
|
54
50
|
# handle exception in production
|
|
55
51
|
if not self.application.is_debug():
|
|
56
52
|
# for HTTP error codes (500, 404, 403...) a specific page should be displayed
|
|
57
53
|
# if a renderable exception is raised let it be displayed
|
|
58
|
-
if hasattr(exception, "is_http_exception") or hasattr(
|
|
59
|
-
exception, "get_response"
|
|
60
|
-
):
|
|
54
|
+
if hasattr(exception, "is_http_exception") or hasattr(exception, "get_response"):
|
|
61
55
|
return self.application.make("HttpExceptionHandler").handle(exception)
|
|
62
56
|
|
|
63
57
|
# else fallback to an unknown exception that should be displayed as a 500 error
|
|
@@ -37,9 +37,7 @@ class DumpExceptionHandler:
|
|
|
37
37
|
def __init__(self, application):
|
|
38
38
|
self.application = application
|
|
39
39
|
|
|
40
|
-
self.assets_path = os.path.join(
|
|
41
|
-
get_module_dir(__file__), "../../templates/assets"
|
|
42
|
-
)
|
|
40
|
+
self.assets_path = os.path.join(get_module_dir(__file__), "../../templates/assets")
|
|
43
41
|
self.styles = []
|
|
44
42
|
self.scripts = []
|
|
45
43
|
|
|
@@ -18,9 +18,7 @@ class HttpExceptionHandler:
|
|
|
18
18
|
# Renders HTTP exception as HTML with predefined error page if exists
|
|
19
19
|
if self.application.make("view").exists(view_name):
|
|
20
20
|
return response.view(
|
|
21
|
-
self.application.make("view").render(
|
|
22
|
-
f"errors/{status_code}", {"message": exception.get_response()}
|
|
23
|
-
),
|
|
21
|
+
self.application.make("view").render(f"errors/{status_code}", {"message": exception.get_response()}),
|
|
24
22
|
status_code,
|
|
25
23
|
)
|
|
26
24
|
else:
|
|
@@ -6,8 +6,6 @@ class ModelNotFoundHandler:
|
|
|
6
6
|
self.application = application
|
|
7
7
|
|
|
8
8
|
def handle(self, exception):
|
|
9
|
-
masonite_exception = ModelNotFoundException(
|
|
10
|
-
"No record found with the given primary key"
|
|
11
|
-
)
|
|
9
|
+
masonite_exception = ModelNotFoundException("No record found with the given primary key")
|
|
12
10
|
self.application.make("response").status(404)
|
|
13
11
|
self.application.make("exception_handler").handle(masonite_exception)
|
|
@@ -20,9 +20,7 @@ class Hash:
|
|
|
20
20
|
) -> bool:
|
|
21
21
|
"""Verify that a given string matches its hashed version (based on configured hashing protocol)."""
|
|
22
22
|
...
|
|
23
|
-
def needs_rehash(
|
|
24
|
-
hashed_string: str, options: dict = {}, driver: str = None
|
|
25
|
-
) -> bool:
|
|
23
|
+
def needs_rehash(hashed_string: str, options: dict = {}, driver: str = None) -> bool:
|
|
26
24
|
"""Verify that a given hash needs to be hashed again because parameters for generating
|
|
27
25
|
the hash have changed."""
|
|
28
26
|
...
|
|
@@ -10,12 +10,8 @@ class Loader:
|
|
|
10
10
|
class_name: str,
|
|
11
11
|
raise_exception: bool = False,
|
|
12
12
|
) -> "None|Any": ...
|
|
13
|
-
def find_all(
|
|
14
|
-
|
|
15
|
-
) -> dict: ...
|
|
16
|
-
def get_object(
|
|
17
|
-
path_or_module: "str|Any", object_name: str, raise_exception: bool = False
|
|
18
|
-
) -> Any:
|
|
13
|
+
def find_all(class_instance: Any, paths: list, raise_exception: bool = False) -> dict: ...
|
|
14
|
+
def get_object(path_or_module: "str|Any", object_name: str, raise_exception: bool = False) -> Any:
|
|
19
15
|
"""Load the given object from a Python module located at path and returns a default value if
|
|
20
16
|
not found. If no object name is provided, returns the loaded module."""
|
|
21
17
|
...
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/facades/RateLimiter.pyi
RENAMED
|
@@ -15,9 +15,7 @@ class RateLimiter:
|
|
|
15
15
|
def get_limiter(self, name: str) -> "Limiter":
|
|
16
16
|
"""Get rate limiter registered with the given name."""
|
|
17
17
|
...
|
|
18
|
-
def attempt(
|
|
19
|
-
key: str, callback: Callable, max_attempts: int, delay: int = 60
|
|
20
|
-
) -> Any:
|
|
18
|
+
def attempt(key: str, callback: Callable, max_attempts: int, delay: int = 60) -> Any:
|
|
21
19
|
"""Try to execute the given callback if not limited by the 'key' rate limiter."""
|
|
22
20
|
...
|
|
23
21
|
def too_many_attempts(self, key: str, max_attempts: int) -> bool:
|
|
@@ -75,9 +75,7 @@ class ServeCommand(Command):
|
|
|
75
75
|
if cfg_reload_excludes is not None:
|
|
76
76
|
kwargs["reload_excludes"] = cfg_reload_excludes
|
|
77
77
|
|
|
78
|
-
self.line(
|
|
79
|
-
f"<info>Starting Uvicorn server on {host}:{port} [{app}]...</info>"
|
|
80
|
-
)
|
|
78
|
+
self.line(f"<info>Starting Uvicorn server on {host}:{port} [{app}]...</info>")
|
|
81
79
|
|
|
82
80
|
else:
|
|
83
81
|
self.line(f"<info>Starting Uvicorn server on {host}:{port}...</info>")
|
|
@@ -101,8 +99,6 @@ class ServeCommand(Command):
|
|
|
101
99
|
except (ImportError, ValueError):
|
|
102
100
|
pass
|
|
103
101
|
|
|
104
|
-
self.line(
|
|
105
|
-
"<fg=yellow>Unable to detect the application, run the command with --app={app}</>"
|
|
106
|
-
)
|
|
102
|
+
self.line("<fg=yellow>Unable to detect the application, run the command with --app={app}</>")
|
|
107
103
|
|
|
108
104
|
return False
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/exceptions.py
RENAMED
|
@@ -17,10 +17,7 @@ class HTTPExceptionHandler:
|
|
|
17
17
|
"exception": f"{type(exc).__module__}.{type(exc).__qualname__}",
|
|
18
18
|
"file": frames[-1].filename if frames else None,
|
|
19
19
|
"line": frames[-1].lineno if frames else None,
|
|
20
|
-
"trace": [
|
|
21
|
-
{"file": f.filename, "line": f.lineno, "function": f.name}
|
|
22
|
-
for f in frames
|
|
23
|
-
],
|
|
20
|
+
"trace": [{"file": f.filename, "line": f.lineno, "function": f.name} for f in frames],
|
|
24
21
|
}
|
|
25
22
|
else:
|
|
26
23
|
content = {"message": "Server Error"}
|
|
@@ -44,10 +41,7 @@ class ValidationExceptionHandler:
|
|
|
44
41
|
accept = request.headers.get("accept", "")
|
|
45
42
|
content_type = request.headers.get("content-type", "")
|
|
46
43
|
|
|
47
|
-
wants_json = (
|
|
48
|
-
"application/json" in accept
|
|
49
|
-
or content_type.startswith("application/json")
|
|
50
|
-
)
|
|
44
|
+
wants_json = "application/json" in accept or content_type.startswith("application/json")
|
|
51
45
|
|
|
52
46
|
errors = {}
|
|
53
47
|
for err in exc.errors():
|
|
@@ -27,9 +27,7 @@ class FastAPIProvider(Provider):
|
|
|
27
27
|
self.commands([ServeCommand])
|
|
28
28
|
self._register_exception_handlers()
|
|
29
29
|
|
|
30
|
-
source = os.path.abspath(
|
|
31
|
-
os.path.join(os.path.dirname(__file__), "../config/fastapi.py")
|
|
32
|
-
)
|
|
30
|
+
source = os.path.abspath(os.path.join(os.path.dirname(__file__), "../config/fastapi.py"))
|
|
33
31
|
self.publishes({source: "config/fastapi.py"})
|
|
34
32
|
|
|
35
33
|
def _register_exception_handlers(self):
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/fastapi/routers/router.py
RENAMED
|
@@ -78,39 +78,25 @@ class Router:
|
|
|
78
78
|
**kwargs,
|
|
79
79
|
)
|
|
80
80
|
|
|
81
|
-
def get(
|
|
82
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
83
|
-
) -> None:
|
|
81
|
+
def get(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
84
82
|
self._add_route(path, endpoint, ["GET"], **kwargs)
|
|
85
83
|
|
|
86
|
-
def post(
|
|
87
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
88
|
-
) -> None:
|
|
84
|
+
def post(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
89
85
|
self._add_route(path, endpoint, ["POST"], **kwargs)
|
|
90
86
|
|
|
91
|
-
def put(
|
|
92
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
93
|
-
) -> None:
|
|
87
|
+
def put(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
94
88
|
self._add_route(path, endpoint, ["PUT"], **kwargs)
|
|
95
89
|
|
|
96
|
-
def patch(
|
|
97
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
98
|
-
) -> None:
|
|
90
|
+
def patch(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
99
91
|
self._add_route(path, endpoint, ["PATCH"], **kwargs)
|
|
100
92
|
|
|
101
|
-
def delete(
|
|
102
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
103
|
-
) -> None:
|
|
93
|
+
def delete(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
104
94
|
self._add_route(path, endpoint, ["DELETE"], **kwargs)
|
|
105
95
|
|
|
106
|
-
def head(
|
|
107
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
108
|
-
) -> None:
|
|
96
|
+
def head(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
109
97
|
self._add_route(path, endpoint, ["HEAD"], **kwargs)
|
|
110
98
|
|
|
111
|
-
def options(
|
|
112
|
-
self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]
|
|
113
|
-
) -> None:
|
|
99
|
+
def options(self, path: str, endpoint: Callable[..., Any], **kwargs: Unpack[RouteOptions]) -> None:
|
|
114
100
|
self._add_route(path, endpoint, ["OPTIONS"], **kwargs)
|
|
115
101
|
|
|
116
102
|
def resource(
|
|
@@ -154,9 +140,7 @@ class Router:
|
|
|
154
140
|
)
|
|
155
141
|
|
|
156
142
|
if include("store") and hasattr(controller, "store"):
|
|
157
|
-
self.post(
|
|
158
|
-
f"/{name}", fn("store"), name=route_name("store", f"{name}.store")
|
|
159
|
-
)
|
|
143
|
+
self.post(f"/{name}", fn("store"), name=route_name("store", f"{name}.store"))
|
|
160
144
|
|
|
161
145
|
if include("show") and hasattr(controller, "show"):
|
|
162
146
|
self.get(
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
def storage_path(path: str = "") -> str:
|
|
2
2
|
"""Get the path to the storage directory."""
|
|
3
3
|
from fastapi_startkit.application import app
|
|
4
|
+
|
|
4
5
|
return app().storage_path(path)
|
|
5
6
|
|
|
7
|
+
|
|
6
8
|
def public_path(path: str = "") -> str:
|
|
7
9
|
"""Get the path to the public directory."""
|
|
8
10
|
from fastapi_startkit.application import app
|
|
11
|
+
|
|
9
12
|
return app().public_path(path)
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/helpers/dataclass.py
RENAMED
|
@@ -9,10 +9,7 @@ class Dataclass:
|
|
|
9
9
|
if hasattr(obj, "model_dump") and callable(obj.model_dump):
|
|
10
10
|
return obj.model_dump()
|
|
11
11
|
if dataclasses.is_dataclass(obj):
|
|
12
|
-
return {
|
|
13
|
-
f.name: Dataclass.to_dict(getattr(obj, f.name))
|
|
14
|
-
for f in dataclasses.fields(obj)
|
|
15
|
-
}
|
|
12
|
+
return {f.name: Dataclass.to_dict(getattr(obj, f.name)) for f in dataclasses.fields(obj)}
|
|
16
13
|
if isinstance(obj, dict):
|
|
17
14
|
return {k: Dataclass.to_dict(v) for k, v in obj.items()}
|
|
18
15
|
if isinstance(obj, (list, tuple)):
|
|
@@ -5,6 +5,4 @@ from fastapi import Request
|
|
|
5
5
|
|
|
6
6
|
# Set by InertiaMiddleware before calling the next handler so InertiaResponse
|
|
7
7
|
# can access the current request without it being passed explicitly.
|
|
8
|
-
current_request: ContextVar[Optional[Request]] = ContextVar(
|
|
9
|
-
"inertia_request", default=None
|
|
10
|
-
)
|
|
8
|
+
current_request: ContextVar[Optional[Request]] = ContextVar("inertia_request", default=None)
|
|
@@ -63,9 +63,7 @@ class InertiaResponse(Response):
|
|
|
63
63
|
self.root_view = root_view
|
|
64
64
|
self.version = version
|
|
65
65
|
|
|
66
|
-
def with_(
|
|
67
|
-
self, key: Union[str, Dict[str, Any]], value: Any = None
|
|
68
|
-
) -> "InertiaResponse":
|
|
66
|
+
def with_(self, key: Union[str, Dict[str, Any]], value: Any = None) -> "InertiaResponse":
|
|
69
67
|
if isinstance(key, dict):
|
|
70
68
|
self.props = {**self.props, **key}
|
|
71
69
|
else:
|
|
@@ -125,9 +123,7 @@ class InertiaResponse(Response):
|
|
|
125
123
|
from fastapi_startkit.application import app as container
|
|
126
124
|
|
|
127
125
|
if not container().has("templates"):
|
|
128
|
-
raise RuntimeError(
|
|
129
|
-
"Inertia requires 'templates' to be bound in the container for initial rendering."
|
|
130
|
-
)
|
|
126
|
+
raise RuntimeError("Inertia requires 'templates' to be bound in the container for initial rendering.")
|
|
131
127
|
|
|
132
128
|
return (
|
|
133
129
|
container()
|
|
@@ -187,7 +183,5 @@ class Inertia:
|
|
|
187
183
|
return OptionalProp(callback)
|
|
188
184
|
|
|
189
185
|
@staticmethod
|
|
190
|
-
def render(
|
|
191
|
-
component: str, props: Optional[Dict[str, Any]] = None
|
|
192
|
-
) -> InertiaResponse:
|
|
186
|
+
def render(component: str, props: Optional[Dict[str, Any]] = None) -> InertiaResponse:
|
|
193
187
|
return Inertia.instance().render(component, props or {})
|
{fastapi_startkit-0.26.0 → fastapi_startkit-0.28.0}/src/fastapi_startkit/inertia/middleware.py
RENAMED
|
@@ -33,9 +33,7 @@ class InertiaMiddleware(BaseHTTPMiddleware):
|
|
|
33
33
|
"""Return the root template name for the first page visit."""
|
|
34
34
|
return cls._root_view
|
|
35
35
|
|
|
36
|
-
async def dispatch(
|
|
37
|
-
self, request: Request, call_next: RequestResponseEndpoint
|
|
38
|
-
) -> Response:
|
|
36
|
+
async def dispatch(self, request: Request, call_next: RequestResponseEndpoint) -> Response:
|
|
39
37
|
Inertia.version(lambda: self.version(request))
|
|
40
38
|
Inertia.share(self.share(request))
|
|
41
39
|
Inertia.set_root_view(self.root_view(request))
|
|
@@ -56,9 +54,7 @@ class InertiaMiddleware(BaseHTTPMiddleware):
|
|
|
56
54
|
return response
|
|
57
55
|
|
|
58
56
|
# Version conflict — ask client to do a full page reload
|
|
59
|
-
if request.method == "GET" and request.headers.get(
|
|
60
|
-
Header.INERTIA_VERSION, ""
|
|
61
|
-
) != (Inertia.get_version() or ""):
|
|
57
|
+
if request.method == "GET" and request.headers.get(Header.INERTIA_VERSION, "") != (Inertia.get_version() or ""):
|
|
62
58
|
return self.on_version_change(request, response)
|
|
63
59
|
|
|
64
60
|
# 302 → 303 for PUT/PATCH/DELETE so browser issues a GET
|