EAScheduler 0.2.0__tar.gz → 0.2.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.
- {eascheduler-0.2.0/src/EAScheduler.egg-info → eascheduler-0.2.1}/PKG-INFO +5 -3
- {eascheduler-0.2.0 → eascheduler-0.2.1}/requirements_setup.txt +2 -2
- {eascheduler-0.2.0 → eascheduler-0.2.1/src/EAScheduler.egg-info}/PKG-INFO +5 -3
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/EAScheduler.egg-info/requires.txt +2 -2
- eascheduler-0.2.1/src/eascheduler/__version__.py +1 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/helper.py +2 -1
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/jobs.py +7 -2
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/triggers.py +4 -3
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_operation.py +1 -1
- eascheduler-0.2.0/src/eascheduler/__version__.py +0 -1
- {eascheduler-0.2.0 → eascheduler-0.2.1}/LICENSE +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/MANIFEST.in +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/setup.cfg +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/setup.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/EAScheduler.egg-info/SOURCES.txt +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/EAScheduler.egg-info/dependency_links.txt +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/EAScheduler.egg-info/top_level.txt +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/filters.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/builder/utils.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/const.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/default.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/errors/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/errors/errors.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/errors/handler.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/executor/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/executor/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/helpers/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/helpers/dst_param.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/helpers/helpers.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/helpers/time_replace.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_control/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_control/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_control/job_countdown.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_control/job_datetime.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_control/job_onetime.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_stores/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_stores/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/job_stores/memory.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/event_handler.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/job_countdown.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/job_datetime.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/jobs/job_onetime.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_filter.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_filter_holiday.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_group.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_interval.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_sun.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/producers/prod_time.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/py.typed +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/schedulers/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/schedulers/async_scheduler.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/schedulers/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/task_managers/__init__.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/task_managers/base.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/task_managers/parallel.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/src/eascheduler/task_managers/sequential.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/tests/test_const.py +0 -0
- {eascheduler-0.2.0 → eascheduler-0.2.1}/tests/test_default.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: EAScheduler
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Easy async scheduling with a nice interface
|
|
5
5
|
Home-page: https://github.com/spacemanspiff2007/eascheduler
|
|
6
6
|
Author: spaceman_spiff
|
|
@@ -19,9 +19,9 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: whenever==0.6.
|
|
22
|
+
Requires-Dist: whenever==0.6.13
|
|
23
23
|
Requires-Dist: astral==3.2
|
|
24
|
-
Requires-Dist: holidays==0.
|
|
24
|
+
Requires-Dist: holidays==0.61
|
|
25
25
|
Requires-Dist: typing_extensions==4.12.2
|
|
26
26
|
|
|
27
27
|
# EAScheduler
|
|
@@ -126,6 +126,8 @@ scheduler.at(
|
|
|
126
126
|
````
|
|
127
127
|
|
|
128
128
|
## Changelog
|
|
129
|
+
#### 0.2.1 (2024-11-20)
|
|
130
|
+
- Updated dependencies and some type hints
|
|
129
131
|
|
|
130
132
|
#### 0.2.0 (2024-11-13)
|
|
131
133
|
- Complete rewrite
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: EAScheduler
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Easy async scheduling with a nice interface
|
|
5
5
|
Home-page: https://github.com/spacemanspiff2007/eascheduler
|
|
6
6
|
Author: spaceman_spiff
|
|
@@ -19,9 +19,9 @@ Classifier: Programming Language :: Python :: 3 :: Only
|
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
|
-
Requires-Dist: whenever==0.6.
|
|
22
|
+
Requires-Dist: whenever==0.6.13
|
|
23
23
|
Requires-Dist: astral==3.2
|
|
24
|
-
Requires-Dist: holidays==0.
|
|
24
|
+
Requires-Dist: holidays==0.61
|
|
25
25
|
Requires-Dist: typing_extensions==4.12.2
|
|
26
26
|
|
|
27
27
|
# EAScheduler
|
|
@@ -126,6 +126,8 @@ scheduler.at(
|
|
|
126
126
|
````
|
|
127
127
|
|
|
128
128
|
## Changelog
|
|
129
|
+
#### 0.2.1 (2024-11-20)
|
|
130
|
+
- Updated dependencies and some type hints
|
|
129
131
|
|
|
130
132
|
#### 0.2.0 (2024-11-13)
|
|
131
133
|
- Complete rewrite
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.2.1'
|
|
@@ -15,6 +15,7 @@ from eascheduler.helpers import HINT_CLOCK_BACKWARD, HINT_CLOCK_FORWARD, TimeRep
|
|
|
15
15
|
|
|
16
16
|
HINT_TIME: TypeAlias = dt_time | Time | str
|
|
17
17
|
HINT_TIMEDELTA: TypeAlias = dt_timedelta | TimeDelta | int | float | str
|
|
18
|
+
HINT_POS_TIMEDELTA: TypeAlias = HINT_TIMEDELTA
|
|
18
19
|
HINT_INSTANT: TypeAlias = dt_datetime | None | str | HINT_TIME | HINT_TIMEDELTA | SystemDateTime
|
|
19
20
|
HINT_NAME_OR_NR: TypeAlias = int | str | Iterable[int | str]
|
|
20
21
|
HINT_DATE: TypeAlias = dt_date | dt_datetime | str | None | Date | SystemDateTime | Instant
|
|
@@ -34,7 +35,7 @@ def get_timedelta(value: HINT_TIMEDELTA) -> TimeDelta:
|
|
|
34
35
|
raise TypeError()
|
|
35
36
|
|
|
36
37
|
|
|
37
|
-
def get_pos_timedelta_secs(value:
|
|
38
|
+
def get_pos_timedelta_secs(value: HINT_POS_TIMEDELTA) -> float:
|
|
38
39
|
if (value := get_timedelta(value).in_seconds()) <= 0:
|
|
39
40
|
msg = 'Value must be positive.'
|
|
40
41
|
raise ValueError(msg)
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
from collections.abc import Awaitable, Callable
|
|
2
2
|
from typing import Any, Final
|
|
3
3
|
|
|
4
|
-
from eascheduler.builder.helper import
|
|
4
|
+
from eascheduler.builder.helper import (
|
|
5
|
+
HINT_INSTANT,
|
|
6
|
+
HINT_POS_TIMEDELTA,
|
|
7
|
+
get_instant,
|
|
8
|
+
get_pos_timedelta_secs,
|
|
9
|
+
)
|
|
5
10
|
from eascheduler.builder.triggers import TriggerObject, _get_producer
|
|
6
11
|
from eascheduler.executor import ExecutorBase
|
|
7
12
|
from eascheduler.job_control import CountdownJobControl, DateTimeJobControl, OneTimeJobControl
|
|
@@ -20,7 +25,7 @@ class JobBuilder:
|
|
|
20
25
|
self._executor: Final = executor
|
|
21
26
|
self._job_store: Final = job_store
|
|
22
27
|
|
|
23
|
-
def countdown(self, secs:
|
|
28
|
+
def countdown(self, secs: HINT_POS_TIMEDELTA, coro_func: Callable[..., Awaitable[Any]],
|
|
24
29
|
*args: Any, job_id: IdType | None = None, **kwargs: Any) -> CountdownJobControl:
|
|
25
30
|
"""Create a job that count town a certain time and then execute.
|
|
26
31
|
|
|
@@ -8,6 +8,7 @@ from eascheduler.builder.helper import (
|
|
|
8
8
|
HINT_CLOCK_BACKWARD,
|
|
9
9
|
HINT_CLOCK_FORWARD,
|
|
10
10
|
HINT_INSTANT,
|
|
11
|
+
HINT_POS_TIMEDELTA,
|
|
11
12
|
HINT_TIME,
|
|
12
13
|
HINT_TIMEDELTA,
|
|
13
14
|
BuilderTypeValidator,
|
|
@@ -85,7 +86,7 @@ class TriggerObject:
|
|
|
85
86
|
)
|
|
86
87
|
)
|
|
87
88
|
|
|
88
|
-
def jitter(self, low:
|
|
89
|
+
def jitter(self, low: HINT_POS_TIMEDELTA, high: HINT_POS_TIMEDELTA | None = None) -> Self:
|
|
89
90
|
"""Add jitter to the time returned by the trigger.
|
|
90
91
|
|
|
91
92
|
:param low: The lower bound of the jitter
|
|
@@ -94,7 +95,7 @@ class TriggerObject:
|
|
|
94
95
|
return self.__class__(
|
|
95
96
|
JitterProducerOperation(
|
|
96
97
|
self._producer,
|
|
97
|
-
|
|
98
|
+
get_timedelta(low).in_seconds(), get_timedelta(high).in_seconds() if high is not None else None
|
|
98
99
|
)
|
|
99
100
|
)
|
|
100
101
|
|
|
@@ -165,7 +166,7 @@ class TriggerBuilder:
|
|
|
165
166
|
return TriggerObject(GroupProducer([_get_producer(b) for b in builders]))
|
|
166
167
|
|
|
167
168
|
@staticmethod
|
|
168
|
-
def interval(start: HINT_INSTANT, interval:
|
|
169
|
+
def interval(start: HINT_INSTANT, interval: HINT_POS_TIMEDELTA) -> TriggerObject:
|
|
169
170
|
"""Triggers at a fixed interval from a given start time.
|
|
170
171
|
|
|
171
172
|
:param start: When this trigger will run for the first time.
|
|
@@ -105,7 +105,7 @@ class JitterProducerOperation(DateTimeProducerOperationBase):
|
|
|
105
105
|
if (low := self.low) >= 0:
|
|
106
106
|
return next_dt.add(seconds=uniform(low, self.high))
|
|
107
107
|
|
|
108
|
-
#
|
|
108
|
+
# Check if we can use the whole interval
|
|
109
109
|
lowest = (dt - next_dt).in_seconds()
|
|
110
110
|
if lowest < low:
|
|
111
111
|
return next_dt.add(seconds=uniform(low, self.high))
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.2.0'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|