asyncz 0.14.2__tar.gz → 0.14.3__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.
- {asyncz-0.14.2 → asyncz-0.14.3}/PKG-INFO +2 -2
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/__init__.py +1 -1
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/conf/global_settings.py +32 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/pyproject.toml +1 -1
- {asyncz-0.14.2 → asyncz-0.14.3}/.gitignore +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/LICENSE +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/README.md +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/_parsers.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/app.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/bootstrap_loader.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/add.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/list.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/pause.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/remove.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/resume.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/run.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/commands/start.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/loader.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/cli/utils.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/conf/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/backends.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/core.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/middleware/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/middleware/auth_gate.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/middleware/forward_root_path.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/protocols.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/application.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/config.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/controllers/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/controllers/_helpers.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/controllers/home.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/controllers/logs.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/controllers/tasks.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/engine.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/logs/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/logs/handler.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/logs/storage.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/messages.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/mixins.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/statics/css/asyncz.css +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/statics/css/toastify.min.css +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/statics/js/asyncz.js +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/statics/js/toastify.min.js +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/404.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/index.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/layout.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/login.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/logs/index.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/logs/partials/table.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/shared/loading.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/shared/messages.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/tasks/_table.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/templates/tasks/tasks.html +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/datastructures.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/enums.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/events/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/events/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/events/constants.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/exceptions.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/asyncio.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/debug.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/pool.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/process_pool.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/executors/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/file_locking.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/locks.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/monkay.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/protocols.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/py.typed +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/asyncio.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/datastructures.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/defaults.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/schedulers/utils.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/state.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/file.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/memory.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/mongo.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/redis.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/sqlalchemy.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/stores/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/tasks/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/tasks/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/tasks/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/base.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/combination.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/__init__.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/constants.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/expressions.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/fields.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/trigger.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/cron/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/date.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/interval.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/shutdown.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/triggers/types.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/typing.py +0 -0
- {asyncz-0.14.2 → asyncz-0.14.3}/asyncz/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: asyncz
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.3
|
|
4
4
|
Summary: The scheduler that nobody wants but every application needs.
|
|
5
5
|
Project-URL: Homepage, https://github.com/dymmond/asyncz
|
|
6
6
|
Project-URL: Documentation, https://asyncz.dymmond.com/
|
|
@@ -68,7 +68,7 @@ Requires-Dist: pymongo<5.0.0,>=4.3.3; extra == 'testing'
|
|
|
68
68
|
Requires-Dist: pytest-asyncio<2.0.0,>=1.0; extra == 'testing'
|
|
69
69
|
Requires-Dist: pytest-cov<8.0.0,>=2.12.0; extra == 'testing'
|
|
70
70
|
Requires-Dist: pytest-loguru<1,>=0.2.0; extra == 'testing'
|
|
71
|
-
Requires-Dist: pytest<
|
|
71
|
+
Requires-Dist: pytest<10.0.0,>=7.1.3; extra == 'testing'
|
|
72
72
|
Requires-Dist: pytz>=2022.6; extra == 'testing'
|
|
73
73
|
Requires-Dist: ravyn>=0.1.0; extra == 'testing'
|
|
74
74
|
Requires-Dist: redis<8.0.0,>=4.4.0; extra == 'testing'
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import builtins
|
|
3
4
|
import inspect
|
|
4
5
|
import os
|
|
6
|
+
import sys
|
|
5
7
|
from functools import cached_property
|
|
6
8
|
from types import UnionType
|
|
7
9
|
from typing import (
|
|
@@ -82,11 +84,41 @@ class BaseSettings:
|
|
|
82
84
|
...
|
|
83
85
|
|
|
84
86
|
def _extract_base_type(self, typ: Any) -> Any:
|
|
87
|
+
# 1. Handle standard typing (when get_type_hints works)
|
|
85
88
|
origin = get_origin(typ)
|
|
86
89
|
if origin is Annotated:
|
|
87
90
|
return get_args(typ)[0]
|
|
91
|
+
|
|
92
|
+
# 2. Handle String Annotations (when get_type_hints fails)
|
|
93
|
+
if isinstance(typ, str):
|
|
94
|
+
# Attempt to resolve the string to an actual class
|
|
95
|
+
resolved = self._resolve_string_type(typ)
|
|
96
|
+
if resolved:
|
|
97
|
+
return resolved
|
|
98
|
+
|
|
88
99
|
return typ
|
|
89
100
|
|
|
101
|
+
def _resolve_string_type(self, type_name: str) -> Any:
|
|
102
|
+
"""
|
|
103
|
+
Attempts to resolve a string type hint (e.g., 'CacheBackend', 'list[str]')
|
|
104
|
+
into an actual Python class.
|
|
105
|
+
"""
|
|
106
|
+
# Clean up generics: "list[str]" -> "list"
|
|
107
|
+
# We only need the base type for casting/init purposes
|
|
108
|
+
base_name = type_name.split("[", 1)[0]
|
|
109
|
+
|
|
110
|
+
# Look in the Class's Module (for custom classes like CacheBackend)
|
|
111
|
+
module = sys.modules.get(self.__class__.__module__)
|
|
112
|
+
if module and hasattr(module, base_name):
|
|
113
|
+
return getattr(module, base_name)
|
|
114
|
+
|
|
115
|
+
# Look in Builtins (for str, int, bool, list, dict)
|
|
116
|
+
if hasattr(builtins, base_name):
|
|
117
|
+
return getattr(builtins, base_name)
|
|
118
|
+
|
|
119
|
+
# Return None if we can't find it (will trigger the original error downstream)
|
|
120
|
+
return None
|
|
121
|
+
|
|
90
122
|
def _cast(self, value: str, typ: type[Any]) -> Any:
|
|
91
123
|
"""
|
|
92
124
|
Casts the value to the specified type.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{asyncz-0.14.2 → asyncz-0.14.3}/asyncz/contrib/dashboard/admin/middleware/forward_root_path.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|