tina4-python 3.13.96__tar.gz → 3.13.97__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.
- {tina4_python-3.13.96 → tina4_python-3.13.97}/PKG-INFO +1 -1
- {tina4_python-3.13.96 → tina4_python-3.13.97}/pyproject.toml +1 -1
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/__init__.py +1 -1
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/kafka_backend.py +31 -2
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/rabbitmq_backend.py +30 -4
- {tina4_python-3.13.96 → tina4_python-3.13.97}/.gitignore +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/README.md +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/CLAUDE.md +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/HtmlElement.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/Testing.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/ai/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/api/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/auth/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/cache/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/cli/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/container/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/context/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/context/chunker.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/cache.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/constants.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/events.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/middleware.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/rate_limiter.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/request.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/response.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/router.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/core/server.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/crud/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/adapter.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/connection.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/database_url.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/firebird.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/mongodb.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/mssql.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/mysql.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/odbc.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/postgres.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/sql_translator.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/database/sqlite.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/debug/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/debug/error_overlay.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/dev_admin/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/dev_admin/metrics.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/dev_admin/plan.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/dev_admin/project_index.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/docs.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/docstore/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/dotenv/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/env.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/frond/FROND.md +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/frond/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/frond/compiler.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/frond/engine.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/frond/parser.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/auth/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/database/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/error-overlay/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/orm/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/queue/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/rest-api/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/templates/meta.json +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/graphql/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/i18n/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/mcp/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/mcp/protocol.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/mcp/tools.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/messenger/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/migration/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/migration/runner.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/mqtt/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/mqtt/message.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/orm/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/orm/fields.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/orm/model.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/__feedback/widget.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/css/tina4.css +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/css/tina4.min.css +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/favicon.ico +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/images/logo.svg +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/js/frond.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/js/frond.min.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/js/tina4.min.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/js/tina4js.min.js +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/swagger/index.html +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/query_builder/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/amqp_url.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/job.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/lite_backend.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue/mongo_backend.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue_backends/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue_backends/kafka_backend.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue_backends/mongo_backend.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/Attachment.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/Channel.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/ChannelMember.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/Message.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/Workspace.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/models/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/realtime/storage.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_alerts.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_badges.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_buttons.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_cards.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_forms.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_grid.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_modals.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_nav.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_pagination.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_reset.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_tables.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_typography.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_utilities.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/_variables.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/base.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/colors.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/scss/tina4css/tina4.scss +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/seeder/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/service/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/memcached_handler.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/mongodb_handler.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/redis_handler.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/valkey_handler.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/swagger/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/components/crud.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/python/Dockerfile +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/uv/Dockerfile +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/302.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/401.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/403.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/404.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/500.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/502.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/503.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/errors/base.twig +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/frontend/README.md +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/readme.md +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/test/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/test_client/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/validator/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/websocket/__init__.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/websocket/backplane.py +0 -0
- {tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/wsdl/__init__.py +0 -0
|
@@ -67,7 +67,22 @@ class KafkaBackend:
|
|
|
67
67
|
return self._backend.size(self._topic)
|
|
68
68
|
|
|
69
69
|
def purge(self, status: str = "completed"):
|
|
70
|
-
|
|
70
|
+
"""Not performable on Kafka — raises naming the backend and the operation.
|
|
71
|
+
|
|
72
|
+
purge(status) removes jobs SELECTED BY STATUS. A Kafka log has no notion
|
|
73
|
+
of job status and cannot delete records on demand: a partition is read
|
|
74
|
+
in offset order and records leave only by retention. This used to be a
|
|
75
|
+
bare ``pass``, so a caller who ran purge() believed jobs were removed
|
|
76
|
+
when nothing happened (ADR-0022 invariant 6: a backend that cannot
|
|
77
|
+
perform an operation refuses by name, it never silently no-ops).
|
|
78
|
+
"""
|
|
79
|
+
raise NotImplementedError(
|
|
80
|
+
"The kafka queue backend cannot perform purge(): Kafka has no notion "
|
|
81
|
+
"of job status to purge by — a log is read in offset order and "
|
|
82
|
+
"records leave only by retention. Returning without doing anything "
|
|
83
|
+
"would claim jobs were purged when none were. Configure topic "
|
|
84
|
+
"retention, or use the file or mongodb backend."
|
|
85
|
+
)
|
|
71
86
|
|
|
72
87
|
def retry_failed(self, max_retries: int = None) -> int:
|
|
73
88
|
"""Not performable on Kafka — raises naming the backend and the operation.
|
|
@@ -159,7 +174,21 @@ class KafkaBackend:
|
|
|
159
174
|
return True
|
|
160
175
|
|
|
161
176
|
def clear(self) -> int:
|
|
162
|
-
|
|
177
|
+
"""Not performable on Kafka — raises naming the backend and the operation.
|
|
178
|
+
|
|
179
|
+
clear() empties the queue. A Kafka log cannot delete records on demand:
|
|
180
|
+
a partition is read in offset order and records leave only by retention.
|
|
181
|
+
This used to ``return 0``, which claimed the queue was emptied when it
|
|
182
|
+
was untouched — the silent no-op ADR-0022 invariant 6 forbids. Refusing
|
|
183
|
+
by name is the honest answer.
|
|
184
|
+
"""
|
|
185
|
+
raise NotImplementedError(
|
|
186
|
+
"The kafka queue backend cannot perform clear(): Kafka has no notion "
|
|
187
|
+
"of job status and cannot delete records on demand — a log is read "
|
|
188
|
+
"in offset order and records leave only by retention. Returning 0 "
|
|
189
|
+
"would claim the queue was emptied when it was not. Configure topic "
|
|
190
|
+
"retention, or use the file or mongodb backend."
|
|
191
|
+
)
|
|
163
192
|
|
|
164
193
|
def complete(self, job: Job):
|
|
165
194
|
self._backend.acknowledge(self._topic, str(job.id))
|
|
@@ -75,8 +75,22 @@ class RabbitMQBackend:
|
|
|
75
75
|
return self._backend.size(self._topic)
|
|
76
76
|
|
|
77
77
|
def purge(self, status: str = "completed"):
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
"""Not performable on RabbitMQ — raises naming the backend and the operation.
|
|
79
|
+
|
|
80
|
+
purge(status) removes jobs SELECTED BY STATUS. RabbitMQ cannot address
|
|
81
|
+
messages by status: ``basic.get`` pops the head of the queue and the
|
|
82
|
+
only bulk operation is ``queue.purge``, which empties the WHOLE live
|
|
83
|
+
queue regardless of status. This used to drain that queue on
|
|
84
|
+
``purge("pending")``, destroying every pending job — the destructive
|
|
85
|
+
no-op ADR-0022 invariant 6 forbids. Refusing by name is the honest
|
|
86
|
+
answer.
|
|
87
|
+
"""
|
|
88
|
+
raise NotImplementedError(
|
|
89
|
+
"The rabbitmq queue backend cannot perform purge(): RabbitMQ cannot "
|
|
90
|
+
"address messages by status (basic.get pops the head of the queue), "
|
|
91
|
+
"so a status-addressed purge would have to drain the entire live "
|
|
92
|
+
"queue and destroy pending work. Use the file or mongodb backend."
|
|
93
|
+
)
|
|
80
94
|
|
|
81
95
|
def retry_failed(self, max_retries: int = None) -> int:
|
|
82
96
|
"""Not performable on RabbitMQ — raises naming the backend and the operation.
|
|
@@ -169,8 +183,20 @@ class RabbitMQBackend:
|
|
|
169
183
|
return True
|
|
170
184
|
|
|
171
185
|
def clear(self) -> int:
|
|
172
|
-
|
|
173
|
-
|
|
186
|
+
"""Not performable on RabbitMQ — raises naming the backend and the operation.
|
|
187
|
+
|
|
188
|
+
clear() empties the queue. RabbitMQ cannot address messages by status,
|
|
189
|
+
so the only thing it could do is ``queue.purge`` the WHOLE live queue.
|
|
190
|
+
This used to do exactly that and ``return 0``, silently destroying every
|
|
191
|
+
pending job. Draining a live broker on a status-addressed clear is data
|
|
192
|
+
loss (ADR-0022 invariant 6), so it refuses by name instead.
|
|
193
|
+
"""
|
|
194
|
+
raise NotImplementedError(
|
|
195
|
+
"The rabbitmq queue backend cannot perform clear(): RabbitMQ cannot "
|
|
196
|
+
"address messages by status (basic.get pops the head of the queue), "
|
|
197
|
+
"so a status-addressed clear would have to drain the entire live "
|
|
198
|
+
"queue and destroy pending work. Use the file or mongodb backend."
|
|
199
|
+
)
|
|
174
200
|
|
|
175
201
|
def complete(self, job: Job):
|
|
176
202
|
self._backend.acknowledge(self._topic, str(job.id))
|
|
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
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/images/tina4-logo-icon.webp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/public/swagger/oauth2-redirect.html
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
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/queue_backends/rabbitmq_backend.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
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/memcached_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/mongodb_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/redis_handler.py
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/session_handlers/valkey_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/distroless/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/poetry/Dockerfile
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/templates/docker/python/Dockerfile
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
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/af/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/af/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/en/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/es/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/es/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/fr/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/fr/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/ja/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/ja/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/zh/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.96 → tina4_python-3.13.97}/tina4_python/translations/zh/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|