django-bolt 0.2.6__tar.gz → 0.2.7__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.
Potentially problematic release.
This version of django-bolt might be problematic. Click here for more details.
- {django_bolt-0.2.6 → django_bolt-0.2.7}/CLAUDE.md +1 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/Cargo.lock +1 -1
- {django_bolt-0.2.6 → django_bolt-0.2.7}/Cargo.toml +1 -1
- {django_bolt-0.2.6 → django_bolt-0.2.7}/PKG-INFO +2 -2
- {django_bolt-0.2.6 → django_bolt-0.2.7}/TODO.md +1 -1
- {django_bolt-0.2.6 → django_bolt-0.2.7}/pyproject.toml +2 -2
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/management/commands/runbolt.py +25 -16
- {django_bolt-0.2.6 → django_bolt-0.2.7}/.github/workflows/CI.yml +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/.gitignore +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/.python-version +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/BENCHMARK_BASELINE.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/BENCHMARK_DEV.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/Makefile +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/README.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/ANNOTATION_GUIDE.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/ASYNC_DJANGO.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/CLASS_BASED_VIEWS.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/COMPRESSION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/DEPENDENCY_INJECTION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/DJANGO_ADMIN.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/EXCEPTIONS.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/GETTING_STARTED.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/GIL_OPTIMIZATION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/LOGGING.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/MIDDLEWARE.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/OPENAPI.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/OPENAPI_ERROR_RESPONSES.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/OPENAPI_METADATA_IMPLEMENTATION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/PAGINATION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/PUBLISHING.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/README.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/RESPONSES.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/SECURITY.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/SERIALIZATION.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/TESTING_UTILITIES.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/favicon.png +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/icon.png +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/docs/logo.png +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/pytest.ini +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/_json.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/admin_detection.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/asgi_bridge.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/routes.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/static.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/admin/static_routes.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/apps.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/async_collector.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/backends.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/guards.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/jwt_utils.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/revocation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/auth/token.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/binding.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/bootstrap.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/cli.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/compression.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/decorators.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/dependencies.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/error_handlers.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/exceptions.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/health.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/logging/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/logging/config.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/logging/middleware.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/management/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/management/commands/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/middleware/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/middleware/compiler.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/middleware/middleware.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/config.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/plugins.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/routes.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/schema_generator.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/base.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/callback.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/components.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/contact.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/discriminator.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/encoding.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/enums.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/example.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/external_documentation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/header.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/info.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/license.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/link.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/media_type.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/oauth_flow.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/oauth_flows.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/open_api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/operation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/parameter.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/path_item.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/paths.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/reference.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/request_body.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/response.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/responses.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/schema.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/security_requirement.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/security_scheme.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/server.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/server_variable.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/tag.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/xml.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/pagination.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/param_functions.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/params.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/request_parsing.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/responses.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/router.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/serialization.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/status_codes.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/testing/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/testing/client.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/testing/helpers.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/types.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/typing.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/views.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/README.md +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/admin.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/apps.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/migrations/0001_initial.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/migrations/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/models.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/tests.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/bench/views.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/manage.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/100B +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/100B.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/100K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/100K.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/100K.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/10K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/10K.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/10K.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1K.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1K.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1M +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1M.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/1M.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/500K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/500K.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/500K.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/5M +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/5M.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/5M.txt +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FILE_UPLOAD_1K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FILE_UPLOAD_1K_HEADERS.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FORM_URLENCODED_1K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FORM_URLENCODED_1K_HEADERS.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/MULTIPART_1K +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/MULTIPART_1K_HEADERS.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/objects.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/persons_100.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/persons_50.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/persons_500.json +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/asgi.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/settings.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/test_api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/urls.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/views.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/testproject/wsgi.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/admin.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/api.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/apps.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/migrations/0001_initial.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/migrations/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/models.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/tests.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/users/views.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/admin_tests/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/admin_tests/conftest.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/admin_tests/test_admin_with_django.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/admin_tests/urls.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/cbv/__init__.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/cbv/test_class_views.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/cbv/test_class_views_django_orm.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/cbv/test_class_views_features.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/cbv/test_class_views_with_client.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/conftest.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_action_decorator.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_auth_secret_key.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_compression.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_cors_implementation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_decorator_syntax.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_error_handling.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_file_response.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_global_cors.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_guards_auth.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_guards_integration.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_health.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_integration_validation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_json_validation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_jwt_auth.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_jwt_token.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_logging.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_logging_merge.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_middleware.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_middleware_server.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_model_viewset.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_models.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_openapi_docs.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_openapi_metadata.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_pagination.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_parameter_validation.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_request_get.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_syntax.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_testing_utilities.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_testing_utilities_simple.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_types.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/python/tests/test_viewset_unified.py +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/scripts/benchmark.sh +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/scripts/install_hey.sh +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/scripts/release.sh +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/direct_stream.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/error.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/handler.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/json.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/lib.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/metadata.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/middleware/auth.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/middleware/compression.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/middleware/mod.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/middleware/rate_limit.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/permissions.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/request.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/router.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/server.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/state.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/streaming.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/test_state.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/testing.rs +0 -0
- {django_bolt-0.2.6 → django_bolt-0.2.7}/src/validation.rs +0 -0
|
@@ -533,3 +533,4 @@ uv run --with pytest pytest python/tests -s -vv
|
|
|
533
533
|
- **Middleware compilation**: Python middleware config is compiled to Rust metadata at server startup
|
|
534
534
|
- **Route autodiscovery**: Runs once at server startup, no hot-reload in production mode (use `--dev` for development)
|
|
535
535
|
- **Multi-process**: Each process has its own Python interpreter and imports Django independently
|
|
536
|
+
- never silently ignore the error or exception. At least we have print method there this happened. This create obscure errors .
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: django-bolt
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.7
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Intended Audience :: Developers
|
|
6
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -25,7 +25,7 @@ Requires-Dist: click>=8.1
|
|
|
25
25
|
Requires-Dist: msgspec>=0.18
|
|
26
26
|
Requires-Dist: multipart>=1.3
|
|
27
27
|
Requires-Dist: pyjwt>=2.10.1
|
|
28
|
-
Requires-Dist: uvloop>=0.22.1
|
|
28
|
+
Requires-Dist: uvloop>=0.22.1 ; sys_platform != 'win32'
|
|
29
29
|
Requires-Dist: pyyaml>=6.0 ; extra == 'yaml'
|
|
30
30
|
Provides-Extra: yaml
|
|
31
31
|
Summary: High-performance API framework for Django with Rust-powered endpoints delivering 60k+ RPS
|
|
@@ -45,7 +45,7 @@ Pagination helpers
|
|
|
45
45
|
⚠️ content negotiation
|
|
46
46
|
⚠️ log level setup from cli (easy to deploy)
|
|
47
47
|
⚠️ with broken settings it was not able to find api from root folder
|
|
48
|
-
|
|
48
|
+
✅ If api folder has error it does not discover the apis - FIXED (Now crashes with descriptive error instead of silently ignoring)
|
|
49
49
|
⚠️ Msgspec based serializer and stuff
|
|
50
50
|
✅ Larger json has some GIL contention issue have done alot of investigation. Serialization hold gil when moved serialization to rust it improved but not that much .. Under large concurrency i think it happens . Have to investigate more. (Fixeed using batching gil, reuse event loop, copy memory outside of the gil)
|
|
51
51
|
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "django-bolt"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.7"
|
|
8
8
|
description = "High-performance API framework for Django with Rust-powered endpoints delivering 60k+ RPS"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -40,7 +40,7 @@ dependencies = [
|
|
|
40
40
|
"msgspec>=0.18",
|
|
41
41
|
"multipart>=1.3",
|
|
42
42
|
"pyjwt>=2.10.1",
|
|
43
|
-
"uvloop>=0.22.1"
|
|
43
|
+
"uvloop>=0.22.1; sys_platform != 'win32'"
|
|
44
44
|
]
|
|
45
45
|
|
|
46
46
|
[project.optional-dependencies]
|
|
@@ -366,25 +366,34 @@ class Command(BaseCommand):
|
|
|
366
366
|
|
|
367
367
|
def import_api(self, dotted_path):
|
|
368
368
|
"""Import a BoltAPI instance from dotted path like 'myapp.api:api'"""
|
|
369
|
+
if ':' not in dotted_path:
|
|
370
|
+
return None
|
|
371
|
+
|
|
372
|
+
module_path, attr_name = dotted_path.split(':', 1)
|
|
373
|
+
|
|
369
374
|
try:
|
|
370
|
-
if ':' not in dotted_path:
|
|
371
|
-
return None
|
|
372
|
-
|
|
373
|
-
module_path, attr_name = dotted_path.split(':', 1)
|
|
374
375
|
module = importlib.import_module(module_path)
|
|
375
|
-
|
|
376
|
-
if
|
|
376
|
+
except ModuleNotFoundError as e:
|
|
377
|
+
# Check if the error is for the target module itself (optional)
|
|
378
|
+
# or for a dependency within the module (fatal error)
|
|
379
|
+
if e.name == module_path or e.name == module_path.split('.')[0]:
|
|
380
|
+
# Target module doesn't exist - this is fine, api.py is optional
|
|
377
381
|
return None
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
382
|
+
else:
|
|
383
|
+
# Module exists but has a missing dependency - let the original error bubble up
|
|
384
|
+
# This preserves the full traceback for debugging
|
|
385
|
+
raise
|
|
386
|
+
|
|
387
|
+
# If attribute doesn't exist, return None (not an error, just doesn't have that attr)
|
|
388
|
+
if not hasattr(module, attr_name):
|
|
389
|
+
return None
|
|
390
|
+
|
|
391
|
+
api = getattr(module, attr_name)
|
|
392
|
+
|
|
393
|
+
# Verify it's a BoltAPI instance
|
|
394
|
+
if isinstance(api, BoltAPI):
|
|
395
|
+
return api
|
|
396
|
+
|
|
388
397
|
return None
|
|
389
398
|
|
|
390
399
|
def merge_apis(self, apis):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/external_documentation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_bolt-0.2.6 → django_bolt-0.2.7}/python/django_bolt/openapi/spec/security_requirement.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FILE_UPLOAD_1K_HEADERS.json
RENAMED
|
File without changes
|
|
File without changes
|
{django_bolt-0.2.6 → django_bolt-0.2.7}/python/example/test_data/FORM_URLENCODED_1K_HEADERS.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|