fastapi-startkit 0.28.0__tar.gz → 0.29.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.28.0 → fastapi_startkit-0.29.0}/PKG-INFO +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/pyproject.toml +26 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/publish_command.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/__init__.py +0 -2
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/loader/Loader.py +1 -2
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/DailyChannel.py +4 -3
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/SingleChannel.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/SyslogChannel.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/LogTerminalDriver.py +13 -3
- fastapi_startkit-0.29.0/src/fastapi_startkit/logging/file.py +13 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/collection/Collection.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MakeMigrationCommand.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/model.py +104 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/providers/Provider.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/drivers/local.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/drivers/s3.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/file.py +1 -1
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/filestream.py +1 -1
- fastapi_startkit-0.29.0/src/fastapi_startkit/storage/helper.py +33 -0
- fastapi_startkit-0.29.0/src/fastapi_startkit/support/__init__.py +4 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/collection → fastapi_startkit-0.29.0/src/fastapi_startkit/support}/collection.py +10 -1
- fastapi_startkit-0.28.0/src/fastapi_startkit/collection/__init__.py +0 -1
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/DD.py +0 -38
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/ExceptionHandler.py +0 -70
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/__init__.py +0 -38
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/exceptionite/blocks.py +0 -101
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/exceptionite/controllers.py +0 -13
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/exceptionite/solutions.py +0 -66
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/exceptionite/tabs.py +0 -19
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/handlers/DumpExceptionHandler.py +0 -102
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/handlers/HttpExceptionHandler.py +0 -26
- fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/handlers/ModelNotFoundHandler.py +0 -11
- fastapi_startkit-0.28.0/src/fastapi_startkit/facades/Auth.py +0 -5
- fastapi_startkit-0.28.0/src/fastapi_startkit/facades/Auth.pyi +0 -32
- fastapi_startkit-0.28.0/src/fastapi_startkit/facades/Inertia.py +0 -5
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm/helpers/__init__.py +0 -0
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm/query/__init__.py +0 -0
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/factories/test_factories.py +0 -66
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/integrations/config/database.py +0 -119
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/integrations/databases/migrations/2026_01_01_000000_create_users_table.py +0 -29
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/integrations/model.py +0 -57
- fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/integrations/test_model.py +0 -70
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/__init__.py +0 -0
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/collections.py +0 -543
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/console.py +0 -39
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/filesystem.py +0 -100
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/http.py +0 -100
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/location.py +0 -91
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/str.py +0 -116
- fastapi_startkit-0.28.0/src/fastapi_startkit/utils/time.py +0 -59
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/.DS_Store +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/application.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/carbon/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/carbon/carbon.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/config/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/config/app.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/Configuration.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/config.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/helpers.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/providers/ConfigurationProvider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/configuration/providers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/application.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/can_override_config.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/can_override_default_options.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/command.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/container/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/container/container.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/environment/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/environment/environment.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/exceptions/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/exceptions/exceptions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/exceptions/handler.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Broadcast.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Cache.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Config.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Config.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Dump.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Dump.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Facade.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Gate.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Gate.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Hash.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Hash.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Loader.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Loader.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Mail.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Mail.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Notification.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Notification.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Queue.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Queue.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/RateLimiter.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/RateLimiter.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Request.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Request.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Response.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Response.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Session.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Session.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Url.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Url.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/View.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/View.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Vite.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/Vite.pyi +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/commands/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/commands/serve_command.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/config/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/config/fastapi.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/exceptions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/providers/fastapi_provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/requests/model.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/routers/router.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/testing/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/fastapi/testing/test_case.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/helpers/app.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/helpers/dataclass.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/constant.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/context.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/inertia.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/middleware.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/props/props.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/inertia/provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/loader/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/ChannelFactory.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/BaseChannel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/MultiBaseChannel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/SlackChannel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/StackChannel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/TerminalChannel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/channels/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/config/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/config/channels.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/config/logging.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/BaseDriver.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/LogSingleDriver.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/LogSlackDriver.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/LogSyslogDriver.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/drivers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/factory.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/handler.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/listeners.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/logger.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/managers/LoggingManager.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/managers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/providers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/logging/providers/log_provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/collection/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/DBMigrateCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/DBSeedCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MakeModelDocstringCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MakeObserverCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MakeSeedCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MigrateFreshCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRefreshCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MigrateResetCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MigrateRollbackCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/MigrateStatusCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/ShellCommand.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_migration.stub +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/stubs/create_seed.stub +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/stubs/model.stub +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/stubs/observer.stub +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/commands/stubs/table_migration.stub +0 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/exceptions.backup/exceptionite → fastapi_startkit-0.29.0/src/fastapi_startkit/masoniteorm/config}/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/config/config.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/config/database.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/connection.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/factory.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/manager.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/mysql_connection.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/postgres_connection.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/connections/sqlite_connection.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/exceptions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/expressions/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/expressions/expressions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/facades/DB.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/facades/Schema.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/facades/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/factory/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/factory/factory.py +0 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm.backup/tests/integrations/config → fastapi_startkit-0.29.0/src/fastapi_startkit/masoniteorm/helpers}/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/helpers/misc.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/migrations/Migration.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/migrations/Migrator.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/migrations/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/MigrationModel.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/attribute.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/caster.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/fields.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/observer.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/pivot.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/registry.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/relationship.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/observers/ObservesEvents.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/observers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/pagination/BasePaginator.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/pagination/LengthAwarePaginator.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/pagination/SimplePaginator.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/pagination/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/providers/DatabaseProvider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/providers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/EagerLoadMixin.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/EagerRelation.py +0 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/masoniteorm/config → fastapi_startkit-0.29.0/src/fastapi_startkit/masoniteorm/query}/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/BaseGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/MSSQLGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/MySQLGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/PostgresGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/SQLiteGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/grammars/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/processors/MSSQLPostProcessor.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/processors/MySQLPostProcessor.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/processors/PostgresPostProcessor.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/processors/SQLitePostProcessor.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/processors/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/query/support.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/BaseRelationship.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsTo.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/BelongsToMany.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/HasMany.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/HasManyThrough.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/HasOne.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/HasOneThrough.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/MorphMany.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/MorphOne.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/MorphTo.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/MorphToMany.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/relationships/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/Blueprint.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/Column.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/ColumnDiff.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/Constraint.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/ForeignKeyConstraint.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/Index.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/Table.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/TableDiff.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MSSQLPlatform.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/MySQLPlatform.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/Platform.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/PostgresPlatform.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/SQLitePlatform.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/platforms/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/schema/schema.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/seeds/Seeder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/seeds/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/stubs/create-migration.html +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/stubs/table-migration.html +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/testing/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/testing/transaction.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/.gitignore +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/CACHEDIR.TAG +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/README.md +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/lastfailed +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/.pytest_cache/v/cache/nodeids +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/config/database.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/config.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/exceptions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/factories/Factory.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/factories/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/schema/Schema.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/BaseScope.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeleteScope.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/SoftDeletesMixin.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyMixin.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/UUIDPrimaryKeyScope.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/scopes/scope.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/testing/BaseTestCaseSelectGrammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/testing/Database.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/testing/TestCase.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/testing/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/User.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/connections/test_base_connections.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/eagers/test_eager.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/models/test_models.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/builder/test_mssql_query_builder_relationships.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_delete_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_insert_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_qmark.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_select_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/grammar/test_mssql_update_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mssql/schema/test_mssql_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_mysql_builder_transaction.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_query_builder_scopes.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/builder/test_transactions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/connections/test_mysql_connection_selects.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_delete_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_insert_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_qmark.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_select_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/grammar/test_mysql_update_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_accessors_and_mutators.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/model/test_model.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_belongs_to_many.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_many_through.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_has_one_through.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/relationships/test_relationships.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/schema/test_mysql_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_global_scopes.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_can_use_scopes.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/mysql/scopes/test_soft_delete.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_query_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/builder/test_postgres_transaction.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_delete_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_insert_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_select_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/grammar/test_update_grammar.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/relationships/test_postgres_relationships.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/postgres/schema/test_postgres_schema_builder_alter.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/scopes/test_default_global_scopes.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/seeds/test_seeds.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm.backup/tests/utils.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/providers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/providers/app_provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/config/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/config/storage.py +0 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/utils → fastapi_startkit-0.29.0/src/fastapi_startkit/storage}/data/mime.types +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/drivers/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/drivers/fake.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/providers/provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/storage/storage.py +0 -0
- {fastapi_startkit-0.28.0/src/fastapi_startkit/helpers → fastapi_startkit-0.29.0/src/fastapi_startkit/support}/string.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/testing/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/testing/test_case.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/utils/structures.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/__init__.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/config/vite.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/exceptions.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/providers/provider.py +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/package.json +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/resources/css/app.css +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/resources/js/app.ts +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/templates/index.html +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/tsconfig.json +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/stubs/vite.config.ts +0 -0
- {fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/vite/vite.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "fastapi-startkit"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.29.0"
|
|
4
4
|
description = "Fastapi Starter kit components"
|
|
5
5
|
authors = [
|
|
6
6
|
{name = "Bedram Tamang", email = "tmgbedu@gmail.com"}
|
|
@@ -52,6 +52,7 @@ dev = [
|
|
|
52
52
|
"dumpdie>=1.5.0",
|
|
53
53
|
"pytest>=9.0.3",
|
|
54
54
|
"pytest-asyncio>=1.3.0",
|
|
55
|
+
"pytest-cov>=6.0.0",
|
|
55
56
|
"ruff>=0.9.0",
|
|
56
57
|
"twine>=6.2.0",
|
|
57
58
|
"itsdangerous>=2.2.0",
|
|
@@ -75,6 +76,30 @@ fixable = ["F401"]
|
|
|
75
76
|
|
|
76
77
|
[tool.pytest.ini_options]
|
|
77
78
|
asyncio_mode = "auto"
|
|
79
|
+
norecursedirs = ["masoniteorm.backup", ".venv", "dist", "build", "__pycache__"]
|
|
80
|
+
|
|
81
|
+
[tool.coverage.run]
|
|
82
|
+
source = ["src/fastapi_startkit"]
|
|
83
|
+
omit = [
|
|
84
|
+
"*/tests/*",
|
|
85
|
+
"*/migrations/*",
|
|
86
|
+
"*/__init__.py",
|
|
87
|
+
"*.pyi",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.coverage.report]
|
|
91
|
+
show_missing = true
|
|
92
|
+
skip_covered = false
|
|
93
|
+
fail_under = 50
|
|
94
|
+
exclude_lines = [
|
|
95
|
+
"pragma: no cover",
|
|
96
|
+
"if TYPE_CHECKING:",
|
|
97
|
+
"raise NotImplementedError",
|
|
98
|
+
"@abstractmethod",
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
[tool.coverage.html]
|
|
102
|
+
directory = "htmlcov"
|
|
78
103
|
|
|
79
104
|
[build-system]
|
|
80
105
|
requires = ["uv_build >= 0.10.10, <0.11.0"]
|
{fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/console/publish_command.py
RENAMED
|
@@ -4,7 +4,7 @@ from typing import TYPE_CHECKING
|
|
|
4
4
|
|
|
5
5
|
from fastapi_startkit.console import Command
|
|
6
6
|
from cleo.helpers import option
|
|
7
|
-
from fastapi_startkit.
|
|
7
|
+
from fastapi_startkit.support import Str
|
|
8
8
|
|
|
9
9
|
if TYPE_CHECKING:
|
|
10
10
|
from fastapi_startkit.application import Application
|
{fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/facades/__init__.py
RENAMED
|
@@ -7,7 +7,6 @@ from .Url import Url
|
|
|
7
7
|
from .Session import Session
|
|
8
8
|
from .View import View
|
|
9
9
|
from .Gate import Gate
|
|
10
|
-
from .Auth import Auth
|
|
11
10
|
from .Config import Config
|
|
12
11
|
from .Loader import Loader
|
|
13
12
|
from .Notification import Notification
|
|
@@ -16,4 +15,3 @@ from .Queue import Queue
|
|
|
16
15
|
from .Cache import Cache
|
|
17
16
|
from .RateLimiter import RateLimiter
|
|
18
17
|
from .Broadcast import Broadcast
|
|
19
|
-
from .Inertia import Inertia
|
|
@@ -4,7 +4,6 @@ import inspect
|
|
|
4
4
|
import pkgutil
|
|
5
5
|
|
|
6
6
|
from ..exceptions import LoaderNotFound
|
|
7
|
-
from ..utils.str import as_filepath
|
|
8
7
|
from ..utils.structures import load
|
|
9
8
|
|
|
10
9
|
|
|
@@ -18,7 +17,7 @@ class Loader:
|
|
|
18
17
|
files_or_directories = [files_or_directories]
|
|
19
18
|
|
|
20
19
|
_modules = {}
|
|
21
|
-
module_paths = list(map(
|
|
20
|
+
module_paths = list(map(lambda p: p.replace(".", "/"), files_or_directories))
|
|
22
21
|
for module_loader, name, _ in pkgutil.iter_modules(module_paths):
|
|
23
22
|
module = load(
|
|
24
23
|
f"{module_loader.path}/{name}.py",
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from ..factory import DriverFactory
|
|
2
|
-
from fastapi_startkit.facades import Config
|
|
3
|
-
from fastapi_startkit.utils.filesystem import make_directory
|
|
4
1
|
import os
|
|
2
|
+
|
|
3
|
+
from fastapi_startkit.facades import Config
|
|
5
4
|
from .BaseChannel import BaseChannel
|
|
5
|
+
from ..factory import DriverFactory
|
|
6
|
+
from ..file import make_directory
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class DailyChannel(BaseChannel):
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
|
|
1
|
+
from .BaseDriver import BaseDriver
|
|
2
2
|
|
|
3
|
-
from fastapi_startkit.utils.console import HasColoredOutput
|
|
4
3
|
|
|
5
|
-
|
|
4
|
+
class HasColoredOutput:
|
|
5
|
+
def success(self, message):
|
|
6
|
+
print("\033[92m {0} \033[0m".format(message))
|
|
7
|
+
|
|
8
|
+
def warning(self, message):
|
|
9
|
+
print("\033[93m {0} \033[0m".format(message))
|
|
10
|
+
|
|
11
|
+
def danger(self, message):
|
|
12
|
+
print("\033[91m {0} \033[0m".format(message))
|
|
13
|
+
|
|
14
|
+
def info(self, message):
|
|
15
|
+
return self.success(message)
|
|
6
16
|
|
|
7
17
|
|
|
8
18
|
class LogTerminalDriver(BaseDriver, HasColoredOutput):
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import os
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def make_directory(directory):
|
|
5
|
+
"""Create a directory at the given path for a file if it does not exist"""
|
|
6
|
+
if not os.path.isfile(directory):
|
|
7
|
+
if not os.path.exists(os.path.dirname(directory)):
|
|
8
|
+
# Create the path to the model if it does not exist
|
|
9
|
+
os.makedirs(os.path.dirname(directory))
|
|
10
|
+
|
|
11
|
+
return True
|
|
12
|
+
|
|
13
|
+
return False
|
{fastapi_startkit-0.28.0 → fastapi_startkit-0.29.0}/src/fastapi_startkit/masoniteorm/models/model.py
RENAMED
|
@@ -91,6 +91,110 @@ class Model(Attribute, Relationship, ObservesEvents):
|
|
|
91
91
|
def with_(cls, *eagers) -> "QueryBuilder":
|
|
92
92
|
return cls.query().with_(*eagers)
|
|
93
93
|
|
|
94
|
+
@classmethod
|
|
95
|
+
def where(cls, column, *args) -> "QueryBuilder":
|
|
96
|
+
return cls.query().where(column, *args)
|
|
97
|
+
|
|
98
|
+
@classmethod
|
|
99
|
+
def or_where(cls, column, *args) -> "QueryBuilder":
|
|
100
|
+
return cls.query().or_where(column, *args)
|
|
101
|
+
|
|
102
|
+
@classmethod
|
|
103
|
+
def where_null(cls, column: str) -> "QueryBuilder":
|
|
104
|
+
return cls.query().where_null(column)
|
|
105
|
+
|
|
106
|
+
@classmethod
|
|
107
|
+
def where_not_null(cls, column: str) -> "QueryBuilder":
|
|
108
|
+
return cls.query().where_not_null(column)
|
|
109
|
+
|
|
110
|
+
@classmethod
|
|
111
|
+
def where_in(cls, column: str, values) -> "QueryBuilder":
|
|
112
|
+
return cls.query().where_in(column, values)
|
|
113
|
+
|
|
114
|
+
@classmethod
|
|
115
|
+
def where_not_in(cls, column: str, values) -> "QueryBuilder":
|
|
116
|
+
return cls.query().where_not_in(column, values)
|
|
117
|
+
|
|
118
|
+
@classmethod
|
|
119
|
+
def select(cls, *args) -> "QueryBuilder":
|
|
120
|
+
return cls.query().select(*args)
|
|
121
|
+
|
|
122
|
+
@classmethod
|
|
123
|
+
def limit(cls, limit: int) -> "QueryBuilder":
|
|
124
|
+
return cls.query().limit(limit)
|
|
125
|
+
|
|
126
|
+
@classmethod
|
|
127
|
+
def offset(cls, offset: int) -> "QueryBuilder":
|
|
128
|
+
return cls.query().offset(offset)
|
|
129
|
+
|
|
130
|
+
@classmethod
|
|
131
|
+
def order_by(cls, column: str, direction: str = "asc") -> "QueryBuilder":
|
|
132
|
+
return cls.query().order_by(column, direction)
|
|
133
|
+
|
|
134
|
+
@classmethod
|
|
135
|
+
def order_by_raw(cls, expression: str) -> "QueryBuilder":
|
|
136
|
+
return cls.query().order_by_raw(expression)
|
|
137
|
+
|
|
138
|
+
@classmethod
|
|
139
|
+
def latest(cls, column: str = "created_at") -> "QueryBuilder":
|
|
140
|
+
return cls.query().latest(column)
|
|
141
|
+
|
|
142
|
+
@classmethod
|
|
143
|
+
def oldest(cls, column: str = "created_at") -> "QueryBuilder":
|
|
144
|
+
return cls.query().oldest(column)
|
|
145
|
+
|
|
146
|
+
@classmethod
|
|
147
|
+
def group_by(cls, column: str) -> "QueryBuilder":
|
|
148
|
+
return cls.query().group_by(column)
|
|
149
|
+
|
|
150
|
+
@classmethod
|
|
151
|
+
def group_by_raw(cls, expression: str) -> "QueryBuilder":
|
|
152
|
+
return cls.query().group_by_raw(expression)
|
|
153
|
+
|
|
154
|
+
@classmethod
|
|
155
|
+
def having(cls, column: str, equality: str, value) -> "QueryBuilder":
|
|
156
|
+
return cls.query().having(column, equality, value)
|
|
157
|
+
|
|
158
|
+
@classmethod
|
|
159
|
+
def between(cls, column: str, low, high) -> "QueryBuilder":
|
|
160
|
+
return cls.query().between(column, low, high)
|
|
161
|
+
|
|
162
|
+
@classmethod
|
|
163
|
+
def not_between(cls, column: str, low, high) -> "QueryBuilder":
|
|
164
|
+
return cls.query().not_between(column, low, high)
|
|
165
|
+
|
|
166
|
+
@classmethod
|
|
167
|
+
def distinct(cls) -> "QueryBuilder":
|
|
168
|
+
return cls.query().distinct()
|
|
169
|
+
|
|
170
|
+
@classmethod
|
|
171
|
+
def join(cls, table: str, column1: str, equality: str, column2: str, clause: str = "join") -> "QueryBuilder":
|
|
172
|
+
return cls.query().join(table, column1, equality, column2, clause)
|
|
173
|
+
|
|
174
|
+
@classmethod
|
|
175
|
+
def left_join(cls, table: str, column1: str, equality: str, column2: str) -> "QueryBuilder":
|
|
176
|
+
return cls.query().left_join(table, column1, equality, column2)
|
|
177
|
+
|
|
178
|
+
@classmethod
|
|
179
|
+
def right_join(cls, table: str, column1: str, equality: str, column2: str) -> "QueryBuilder":
|
|
180
|
+
return cls.query().right_join(table, column1, equality, column2)
|
|
181
|
+
|
|
182
|
+
@classmethod
|
|
183
|
+
def where_column(cls, column1: str, column2: str) -> "QueryBuilder":
|
|
184
|
+
return cls.query().where_column(column1, column2)
|
|
185
|
+
|
|
186
|
+
@classmethod
|
|
187
|
+
def when(cls, condition, callback) -> "QueryBuilder":
|
|
188
|
+
return cls.query().when(condition, callback)
|
|
189
|
+
|
|
190
|
+
@classmethod
|
|
191
|
+
def where_exists(cls, builder: "QueryBuilder") -> "QueryBuilder":
|
|
192
|
+
return cls.query().where_exists(builder)
|
|
193
|
+
|
|
194
|
+
@classmethod
|
|
195
|
+
def or_where_exists(cls, builder: "QueryBuilder") -> "QueryBuilder":
|
|
196
|
+
return cls.query().or_where_exists(builder)
|
|
197
|
+
|
|
94
198
|
@classmethod
|
|
95
199
|
def where_has(cls, relation: str, callback=None) -> "QueryBuilder":
|
|
96
200
|
return cls.query().where_has(relation, callback)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import mimetypes
|
|
2
|
+
import os
|
|
3
|
+
import pathlib
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def get_module_dir(module_file):
|
|
7
|
+
return os.path.dirname(os.path.realpath(module_file))
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
mimetypes.init([os.path.join(get_module_dir(__file__), "data/mime.types")])
|
|
11
|
+
|
|
12
|
+
KNOWN_MIME_TYPES = mimetypes.types_map.keys()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_extension(filepath: str, without_dot=False) -> str:
|
|
16
|
+
"""Get a file extension from a filepath. If without_dot= True, the prefix will be removed from
|
|
17
|
+
the extension."""
|
|
18
|
+
extension_parts = pathlib.Path(filepath).suffixes
|
|
19
|
+
extension = ""
|
|
20
|
+
if extension_parts:
|
|
21
|
+
# try to join all the parts until only one part to check if it's a known extension
|
|
22
|
+
for i in range(len(extension_parts)):
|
|
23
|
+
try_extension = "".join(extension_parts[i:])
|
|
24
|
+
if try_extension in KNOWN_MIME_TYPES:
|
|
25
|
+
extension = try_extension
|
|
26
|
+
break
|
|
27
|
+
# if no known extension found, return the last part as the extension
|
|
28
|
+
if not extension:
|
|
29
|
+
extension = extension_parts[-1]
|
|
30
|
+
|
|
31
|
+
if without_dot:
|
|
32
|
+
extension = extension[1:]
|
|
33
|
+
return extension
|
|
@@ -555,7 +555,11 @@ class Collection:
|
|
|
555
555
|
">": operator.gt,
|
|
556
556
|
">=": operator.ge,
|
|
557
557
|
}
|
|
558
|
-
|
|
558
|
+
# Use numeric comparison when both values are numeric
|
|
559
|
+
try:
|
|
560
|
+
return operators[op](float(a), float(b))
|
|
561
|
+
except (TypeError, ValueError):
|
|
562
|
+
return operators[op](str(a), str(b))
|
|
559
563
|
|
|
560
564
|
def __iter__(self):
|
|
561
565
|
for item in self._items:
|
|
@@ -611,3 +615,8 @@ class Collection:
|
|
|
611
615
|
items = items.all()
|
|
612
616
|
|
|
613
617
|
return items
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
def collect(items=None) -> Collection:
|
|
621
|
+
"""Shortcut to wrap items in a Collection."""
|
|
622
|
+
return Collection(items or [])
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from .collection import Collection
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import inspect
|
|
2
|
-
import warnings
|
|
3
|
-
|
|
4
|
-
from .exceptions import DumpException
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
warnings.warn(
|
|
8
|
-
"DD class will be removed in Masonite 5. Please use Dump facade instead.",
|
|
9
|
-
DeprecationWarning,
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class DD:
|
|
14
|
-
def __init__(self, container):
|
|
15
|
-
self.app = container
|
|
16
|
-
|
|
17
|
-
def die_and_dump(self, *args):
|
|
18
|
-
"""Dump all provided args and die, ie raise a DumpException."""
|
|
19
|
-
self.dump(*args)
|
|
20
|
-
raise DumpException
|
|
21
|
-
|
|
22
|
-
def dump(self, *args):
|
|
23
|
-
"""Dump all provided args and let flow continue. This does not raise a DumpException."""
|
|
24
|
-
print(
|
|
25
|
-
inspect.stack()[1].function,
|
|
26
|
-
inspect.stack()[1].filename,
|
|
27
|
-
inspect.stack()[1].lineno,
|
|
28
|
-
)
|
|
29
|
-
if self.app.has("ObjDumpList"):
|
|
30
|
-
dump_list = self.app.make("ObjDumpList")
|
|
31
|
-
else:
|
|
32
|
-
dump_list = []
|
|
33
|
-
start = len(dump_list)
|
|
34
|
-
for i, obj in enumerate(args):
|
|
35
|
-
dump_name = f"ObjDump{start + i}"
|
|
36
|
-
self.app.bind(dump_name, obj)
|
|
37
|
-
dump_list.append(dump_name)
|
|
38
|
-
self.app.bind("ObjDumpList", dump_list)
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
class ExceptionHandler:
|
|
2
|
-
def __init__(self, application, driver_config=None):
|
|
3
|
-
self.application = application
|
|
4
|
-
self.drivers = {}
|
|
5
|
-
self.driver_config = driver_config or {}
|
|
6
|
-
self.options = {}
|
|
7
|
-
|
|
8
|
-
def set_options(self, options):
|
|
9
|
-
self.options = options
|
|
10
|
-
return self
|
|
11
|
-
|
|
12
|
-
def add_driver(self, name, driver):
|
|
13
|
-
self.drivers.update({name: driver})
|
|
14
|
-
|
|
15
|
-
def set_configuration(self, config):
|
|
16
|
-
self.driver_config = config
|
|
17
|
-
return self
|
|
18
|
-
|
|
19
|
-
def get_driver(self, name=None):
|
|
20
|
-
if name is None:
|
|
21
|
-
return self.drivers[self.driver_config.get("default")]
|
|
22
|
-
return self.drivers[name]
|
|
23
|
-
|
|
24
|
-
def get_config_options(self, driver=None):
|
|
25
|
-
if driver is None:
|
|
26
|
-
return self.driver_config[self.driver_config.get("default")]
|
|
27
|
-
|
|
28
|
-
return self.driver_config.get(driver, {})
|
|
29
|
-
|
|
30
|
-
def handle(self, exception):
|
|
31
|
-
response = self.application.make("response")
|
|
32
|
-
request = self.application.make("request")
|
|
33
|
-
|
|
34
|
-
self.application.make("event").fire(f"masonite.exception.{exception.__class__.__name__}", exception)
|
|
35
|
-
|
|
36
|
-
# add headers to response if any
|
|
37
|
-
if hasattr(exception, "get_headers"):
|
|
38
|
-
headers = exception.get_headers()
|
|
39
|
-
response.with_headers(headers)
|
|
40
|
-
|
|
41
|
-
# if an exception handler is registered for this exception, use it instead
|
|
42
|
-
# add headers to response if any
|
|
43
|
-
if hasattr(exception, "get_headers"):
|
|
44
|
-
headers = exception.get_headers()
|
|
45
|
-
response.with_headers(headers)
|
|
46
|
-
|
|
47
|
-
if self.application.has(f"{exception.__class__.__name__}Handler"):
|
|
48
|
-
return self.application.make(f"{exception.__class__.__name__}Handler").handle(exception)
|
|
49
|
-
|
|
50
|
-
# handle exception in production
|
|
51
|
-
if not self.application.is_debug():
|
|
52
|
-
# for HTTP error codes (500, 404, 403...) a specific page should be displayed
|
|
53
|
-
# if a renderable exception is raised let it be displayed
|
|
54
|
-
if hasattr(exception, "is_http_exception") or hasattr(exception, "get_response"):
|
|
55
|
-
return self.application.make("HttpExceptionHandler").handle(exception)
|
|
56
|
-
|
|
57
|
-
# else fallback to an unknown exception that should be displayed as a 500 error
|
|
58
|
-
exception.get_status = lambda: 500
|
|
59
|
-
exception.get_response = lambda: str(exception) or "Unknown error"
|
|
60
|
-
return self.application.make("HttpExceptionHandler").handle(exception)
|
|
61
|
-
|
|
62
|
-
# handle exception in development mode with Exceptionite
|
|
63
|
-
exceptionite = self.get_driver("exceptionite")
|
|
64
|
-
exceptionite.start(exception)
|
|
65
|
-
exceptionite.render("terminal")
|
|
66
|
-
|
|
67
|
-
if request.accepts_json():
|
|
68
|
-
return response.view(exceptionite.render("json"), status=500)
|
|
69
|
-
else:
|
|
70
|
-
return response.view(exceptionite.render("web"), status=500)
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
from .ExceptionHandler import ExceptionHandler
|
|
2
|
-
from .handlers.DumpExceptionHandler import DumpExceptionHandler
|
|
3
|
-
from .handlers.HttpExceptionHandler import HttpExceptionHandler
|
|
4
|
-
from .handlers.ModelNotFoundHandler import ModelNotFoundHandler
|
|
5
|
-
from .DD import DD
|
|
6
|
-
from .exceptions import (
|
|
7
|
-
AuthorizationException,
|
|
8
|
-
InvalidRouteCompileException,
|
|
9
|
-
RouteMiddlewareNotFound,
|
|
10
|
-
ContainerError,
|
|
11
|
-
MissingContainerBindingNotFound,
|
|
12
|
-
StrictContainerException,
|
|
13
|
-
ResponseError,
|
|
14
|
-
InvalidHTTPStatusCode,
|
|
15
|
-
RequiredContainerBindingNotFound,
|
|
16
|
-
ViewException,
|
|
17
|
-
RouteNotFoundException,
|
|
18
|
-
DumpException,
|
|
19
|
-
InvalidSecretKey,
|
|
20
|
-
InvalidCSRFToken,
|
|
21
|
-
NotificationException,
|
|
22
|
-
InvalidToken,
|
|
23
|
-
ProjectLimitReached,
|
|
24
|
-
ProjectProviderTimeout,
|
|
25
|
-
ProjectProviderHttpError,
|
|
26
|
-
ProjectTargetNotEmpty,
|
|
27
|
-
MixFileNotFound,
|
|
28
|
-
MixManifestNotFound,
|
|
29
|
-
InvalidConfigurationLocation,
|
|
30
|
-
InvalidConfigurationSetup,
|
|
31
|
-
InvalidPackageName,
|
|
32
|
-
LoaderNotFound,
|
|
33
|
-
QueueException,
|
|
34
|
-
AmbiguousError,
|
|
35
|
-
MethodNotAllowedException,
|
|
36
|
-
ModelNotFoundException,
|
|
37
|
-
ThrottleRequestsException,
|
|
38
|
-
)
|
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
from exceptionite import Block
|
|
2
|
-
|
|
3
|
-
from ... import __version__
|
|
4
|
-
from ...helpers import optional
|
|
5
|
-
from ...utils.str import get_controller_name
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def recursive_serializer(data):
|
|
9
|
-
if isinstance(data, (int, bool, str, bytes)):
|
|
10
|
-
return data
|
|
11
|
-
elif isinstance(data, (list, tuple)):
|
|
12
|
-
return [recursive_serializer(item) for item in data]
|
|
13
|
-
elif isinstance(data, dict):
|
|
14
|
-
return {key: recursive_serializer(val) for key, val in data.items()}
|
|
15
|
-
elif callable(data):
|
|
16
|
-
return str(data)
|
|
17
|
-
elif hasattr(data, "serialize"):
|
|
18
|
-
return data.serialize()
|
|
19
|
-
else:
|
|
20
|
-
return str(data)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class AppBlock(Block):
|
|
24
|
-
id = "application"
|
|
25
|
-
name = "Application"
|
|
26
|
-
icon = "DesktopComputerIcon"
|
|
27
|
-
has_sections = True
|
|
28
|
-
|
|
29
|
-
def build(self):
|
|
30
|
-
request = self.handler.app.make("request")
|
|
31
|
-
route = request.get_route()
|
|
32
|
-
|
|
33
|
-
data = {
|
|
34
|
-
"Info": {
|
|
35
|
-
"Masonite Version": __version__,
|
|
36
|
-
"Environment": self.handler.app.environment(),
|
|
37
|
-
"Debug": self.handler.app.is_debug(),
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
# add app route data
|
|
42
|
-
if route:
|
|
43
|
-
data.update(
|
|
44
|
-
{
|
|
45
|
-
"Route": {
|
|
46
|
-
"Controller": get_controller_name(route.controller),
|
|
47
|
-
"Name": route.get_name(),
|
|
48
|
-
"Middlewares": route.get_middlewares(),
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
# add user route data
|
|
54
|
-
user = request.user()
|
|
55
|
-
if user:
|
|
56
|
-
data.update(
|
|
57
|
-
{
|
|
58
|
-
"User": {
|
|
59
|
-
"E-mail": optional(user).email,
|
|
60
|
-
"ID": optional(user).id,
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
return data
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
class RequestBlock(Block):
|
|
69
|
-
id = "request"
|
|
70
|
-
name = "Request"
|
|
71
|
-
icon = "SwitchHorizontalIcon"
|
|
72
|
-
has_sections = True
|
|
73
|
-
|
|
74
|
-
def build(self):
|
|
75
|
-
request = self.handler.app.make("request")
|
|
76
|
-
# serialize inputs (e.g. in case of file)
|
|
77
|
-
inputs = {}
|
|
78
|
-
for name, value in request.all().items():
|
|
79
|
-
inputs[name] = recursive_serializer(value)
|
|
80
|
-
return {
|
|
81
|
-
"Parameters": {
|
|
82
|
-
"Path": request.get_path(),
|
|
83
|
-
"Input": inputs or None,
|
|
84
|
-
"Request Method": request.get_request_method(),
|
|
85
|
-
},
|
|
86
|
-
"Headers": request.header_bag.to_dict(),
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
class ConfigBlock(Block):
|
|
91
|
-
id = "config"
|
|
92
|
-
name = "Configuration"
|
|
93
|
-
icon = "CogIcon"
|
|
94
|
-
has_sections = True
|
|
95
|
-
|
|
96
|
-
def build(self):
|
|
97
|
-
data = {}
|
|
98
|
-
for section, config_data in self.handler.app.make("config").all().items():
|
|
99
|
-
section_name = section.title()
|
|
100
|
-
data[section_name] = recursive_serializer(config_data)
|
|
101
|
-
return data
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from ...request import Request
|
|
2
|
-
from ...controllers import Controller
|
|
3
|
-
from ...response import Response
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class ExceptioniteController(Controller):
|
|
7
|
-
def run_action(self, request: Request, response: Response):
|
|
8
|
-
handler = request.app.make("exception_handler").get_driver("exceptionite")
|
|
9
|
-
data = handler.run_action(request.input("action_id"), request.input("options"))
|
|
10
|
-
try:
|
|
11
|
-
return response.json({"message": "ok", "data": data}, 200)
|
|
12
|
-
except: # noqa: E722
|
|
13
|
-
return response.json({"message": "An error happened", "data": data}, 400)
|