tina4-python 3.13.0__tar.gz → 3.13.1__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.0 → tina4_python-3.13.1}/PKG-INFO +1 -1
- {tina4_python-3.13.0 → tina4_python-3.13.1}/pyproject.toml +1 -1
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/__init__.py +1 -1
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/service/__init__.py +103 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/.gitignore +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/README.md +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/CLAUDE.md +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/HtmlElement.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/Testing.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/ai/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/api/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/auth/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/cache/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/cli/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/container/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/cache.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/constants.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/events.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/middleware.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/rate_limiter.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/request.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/response.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/router.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/core/server.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/crud/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/adapter.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/connection.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/firebird.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/mongodb.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/mssql.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/mysql.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/odbc.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/postgres.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/database/sqlite.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/debug/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/debug/error_overlay.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/dev_admin/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/dev_admin/metrics.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/dev_admin/plan.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/dev_admin/project_index.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/docs.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/dotenv/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/frond/FROND.md +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/frond/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/frond/engine.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/auth/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/auth/src/routes/api/gallery_auth.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/database/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/database/src/routes/api/gallery_db.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/error-overlay/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/error-overlay/src/routes/api/gallery_crash.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/orm/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/orm/src/orm/Product.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/orm/src/routes/api/gallery_products.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/queue/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/queue/src/routes/api/gallery_queue.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/rest-api/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/rest-api/src/routes/api/gallery_hello.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/templates/meta.json +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/templates/src/routes/gallery_page.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/gallery/templates/src/templates/gallery_page.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/graphql/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/i18n/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/mcp/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/mcp/protocol.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/mcp/tools.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/messenger/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/migration/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/migration/runner.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/orm/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/orm/fields.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/orm/model.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/__feedback/widget.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/css/tina4.css +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/css/tina4.min.css +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/favicon.ico +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/images/logo.svg +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/images/tina4-logo-icon.webp +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/frond.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/frond.min.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/tina4-dev-admin.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/tina4-dev-admin.min.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/tina4.min.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/js/tina4js.min.js +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/swagger/index.html +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/public/swagger/oauth2-redirect.html +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/query_builder/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/job.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/kafka_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/lite_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/mongo_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue/rabbitmq_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue_backends/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue_backends/kafka_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue_backends/mongo_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/queue_backends/rabbitmq_backend.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_alerts.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_badges.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_buttons.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_cards.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_forms.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_grid.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_modals.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_nav.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_reset.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_tables.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_typography.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_utilities.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/_variables.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/base.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/colors.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/scss/tina4css/tina4.scss +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/seeder/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/session/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/session_handlers/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/session_handlers/mongodb_handler.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/session_handlers/redis_handler.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/session_handlers/valkey_handler.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/swagger/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/components/crud.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/docker/distroless/Dockerfile +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/docker/poetry/Dockerfile +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/docker/python/Dockerfile +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/docker/uv/Dockerfile +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/302.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/401.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/403.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/404.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/500.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/502.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/503.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/errors/base.twig +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/frontend/README.md +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/readme.md +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/test/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/test_client/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/af/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/af/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/en/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/en/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/es/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/es/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/fr/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/fr/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/ja/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/ja/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/zh/LC_MESSAGES/messages.mo +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/zh/LC_MESSAGES/messages.po +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/validator/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/websocket/__init__.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/websocket/backplane.py +0 -0
- {tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/wsdl/__init__.py +0 -0
|
@@ -177,6 +177,72 @@ class ServiceContext:
|
|
|
177
177
|
self.log = _get_log()
|
|
178
178
|
|
|
179
179
|
|
|
180
|
+
# ---------------------------------------------------------------------------
|
|
181
|
+
# Service base class (3.13.1) — class-based pattern with run/stop/should_stop
|
|
182
|
+
# ---------------------------------------------------------------------------
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
class Service:
|
|
186
|
+
"""Base class for class-based background services managed by ServiceRunner.
|
|
187
|
+
|
|
188
|
+
Cross-framework parity with PHP ``Tina4\\Service``, Ruby ``Tina4::Service``
|
|
189
|
+
and Node ``Tina4Service``. Subclasses implement ``run()`` (the work
|
|
190
|
+
loop); the base provides ``stop()`` and ``should_stop()`` helpers
|
|
191
|
+
backed by an internal flag.
|
|
192
|
+
|
|
193
|
+
class EmailQueueWorker(Service):
|
|
194
|
+
def run(self):
|
|
195
|
+
while not self.should_stop():
|
|
196
|
+
job = queue.pop()
|
|
197
|
+
if job is None:
|
|
198
|
+
time.sleep(1); continue
|
|
199
|
+
process(job)
|
|
200
|
+
job.complete()
|
|
201
|
+
|
|
202
|
+
runner = ServiceRunner()
|
|
203
|
+
runner.register_service("emails", EmailQueueWorker())
|
|
204
|
+
runner.start()
|
|
205
|
+
|
|
206
|
+
Function-style services without state can still register directly via
|
|
207
|
+
``runner.register('name', callable, interval=N)``. The two patterns
|
|
208
|
+
coexist.
|
|
209
|
+
"""
|
|
210
|
+
|
|
211
|
+
def __init__(self):
|
|
212
|
+
self._running = True
|
|
213
|
+
|
|
214
|
+
def run(self) -> None:
|
|
215
|
+
"""Main work loop — subclasses MUST override."""
|
|
216
|
+
raise NotImplementedError(
|
|
217
|
+
f"{self.__class__.__name__}.run() must be implemented by the subclass"
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
def stop(self) -> None:
|
|
221
|
+
"""Signal this service to stop. Override for custom shutdown behaviour
|
|
222
|
+
but always call ``super().stop()`` so the internal flag gets set —
|
|
223
|
+
``should_stop()`` reads from it.
|
|
224
|
+
"""
|
|
225
|
+
self._running = False
|
|
226
|
+
|
|
227
|
+
def should_stop(self) -> bool:
|
|
228
|
+
"""Returns True once ``stop()`` has been called. Use inside ``run()``
|
|
229
|
+
loops as the exit condition::
|
|
230
|
+
|
|
231
|
+
def run(self):
|
|
232
|
+
while not self.should_stop():
|
|
233
|
+
# do work
|
|
234
|
+
"""
|
|
235
|
+
return not self._running
|
|
236
|
+
|
|
237
|
+
def __call__(self, *args, **kwargs):
|
|
238
|
+
"""Make the Service instance callable so it can be passed directly
|
|
239
|
+
to ``ServiceRunner.register('name', service_instance, daemon=True)``.
|
|
240
|
+
Cleanly dispatches to ``run()`` while ignoring the runner's
|
|
241
|
+
ServiceContext argument (Service subclasses manage their own state).
|
|
242
|
+
"""
|
|
243
|
+
return self.run()
|
|
244
|
+
|
|
245
|
+
|
|
180
246
|
# ---------------------------------------------------------------------------
|
|
181
247
|
# ServiceRunner
|
|
182
248
|
# ---------------------------------------------------------------------------
|
|
@@ -221,6 +287,43 @@ class ServiceRunner:
|
|
|
221
287
|
"started_at": None,
|
|
222
288
|
})
|
|
223
289
|
|
|
290
|
+
def register_service(self, name: str, service: "Service", max_retries: int = 3):
|
|
291
|
+
"""Register a class-based service (:class:`Service` instance) by name.
|
|
292
|
+
|
|
293
|
+
Wraps the Service's ``run()`` method as the handler callable that
|
|
294
|
+
``start()`` invokes. Defaults to ``daemon=True`` because Service
|
|
295
|
+
subclasses manage their own loop inside ``run()``.
|
|
296
|
+
|
|
297
|
+
class EmailWorker(Service):
|
|
298
|
+
def run(self):
|
|
299
|
+
while not self.should_stop():
|
|
300
|
+
process_one()
|
|
301
|
+
|
|
302
|
+
runner.register_service("emails", EmailWorker())
|
|
303
|
+
runner.start()
|
|
304
|
+
|
|
305
|
+
Cross-framework parity with PHP ``ServiceRunner::registerService``,
|
|
306
|
+
Ruby ``ServiceRunner.register_service``, Node
|
|
307
|
+
``ServiceRunner.registerService``.
|
|
308
|
+
"""
|
|
309
|
+
if not isinstance(service, Service):
|
|
310
|
+
raise TypeError(
|
|
311
|
+
f"service must be a Service instance, got {type(service).__name__}"
|
|
312
|
+
)
|
|
313
|
+
self.services.append({
|
|
314
|
+
"name": name,
|
|
315
|
+
"handler": service, # Service instances are callable (see __call__)
|
|
316
|
+
"interval": 0,
|
|
317
|
+
"cron": None,
|
|
318
|
+
"daemon": True, # Service subclasses manage their own loop
|
|
319
|
+
"max_retries": max_retries,
|
|
320
|
+
"retries": 0,
|
|
321
|
+
"running": False,
|
|
322
|
+
"last_run": None,
|
|
323
|
+
"started_at": None,
|
|
324
|
+
"instance": service, # keep reference so stop() can route to service.stop()
|
|
325
|
+
})
|
|
326
|
+
|
|
224
327
|
# -- Lifecycle ----------------------------------------------------------
|
|
225
328
|
|
|
226
329
|
def start(self):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.0 → tina4_python-3.13.1}/tina4_python/gallery/auth/src/routes/api/gallery_auth.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
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.0 → tina4_python-3.13.1}/tina4_python/session_handlers/mongodb_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/templates/docker/distroless/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
|
|
File without changes
|
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/af/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/af/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/en/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/en/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/es/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/es/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/fr/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/fr/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/ja/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/ja/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/zh/LC_MESSAGES/messages.mo
RENAMED
|
File without changes
|
{tina4_python-3.13.0 → tina4_python-3.13.1}/tina4_python/translations/zh/LC_MESSAGES/messages.po
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|