EAScheduler 0.2.3__tar.gz → 0.2.4__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.
Files changed (64) hide show
  1. {eascheduler-0.2.3/src/EAScheduler.egg-info → eascheduler-0.2.4}/PKG-INFO +6 -2
  2. {eascheduler-0.2.3 → eascheduler-0.2.4}/requirements_setup.txt +1 -1
  3. {eascheduler-0.2.3 → eascheduler-0.2.4/src/EAScheduler.egg-info}/PKG-INFO +6 -2
  4. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/EAScheduler.egg-info/requires.txt +1 -1
  5. eascheduler-0.2.4/src/eascheduler/__version__.py +1 -0
  6. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/filters.py +8 -1
  7. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/helper.py +5 -3
  8. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/base.py +4 -1
  9. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_sun.py +1 -1
  10. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_time.py +3 -1
  11. eascheduler-0.2.3/src/eascheduler/__version__.py +0 -1
  12. {eascheduler-0.2.3 → eascheduler-0.2.4}/LICENSE +0 -0
  13. {eascheduler-0.2.3 → eascheduler-0.2.4}/MANIFEST.in +0 -0
  14. {eascheduler-0.2.3 → eascheduler-0.2.4}/setup.cfg +0 -0
  15. {eascheduler-0.2.3 → eascheduler-0.2.4}/setup.py +0 -0
  16. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/EAScheduler.egg-info/SOURCES.txt +0 -0
  17. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/EAScheduler.egg-info/dependency_links.txt +0 -0
  18. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/EAScheduler.egg-info/top_level.txt +0 -0
  19. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/__init__.py +0 -0
  20. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/__init__.py +0 -0
  21. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/jobs.py +0 -0
  22. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/triggers.py +0 -0
  23. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/builder/utils.py +0 -0
  24. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/const.py +0 -0
  25. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/default.py +0 -0
  26. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/errors/__init__.py +0 -0
  27. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/errors/errors.py +0 -0
  28. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/errors/handler.py +0 -0
  29. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/executor/__init__.py +0 -0
  30. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/executor/base.py +0 -0
  31. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/helpers/__init__.py +0 -0
  32. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/helpers/dst_param.py +0 -0
  33. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/helpers/helpers.py +0 -0
  34. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/helpers/time_replace.py +0 -0
  35. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_control/__init__.py +0 -0
  36. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_control/base.py +0 -0
  37. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_control/job_countdown.py +0 -0
  38. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_control/job_datetime.py +0 -0
  39. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_control/job_onetime.py +0 -0
  40. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_stores/__init__.py +0 -0
  41. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_stores/base.py +0 -0
  42. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/job_stores/memory.py +0 -0
  43. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/__init__.py +0 -0
  44. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/event_handler.py +0 -0
  45. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/job_countdown.py +0 -0
  46. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/job_datetime.py +0 -0
  47. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/jobs/job_onetime.py +0 -0
  48. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/__init__.py +0 -0
  49. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/base.py +0 -0
  50. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_filter.py +0 -0
  51. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_filter_holiday.py +0 -0
  52. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_group.py +0 -0
  53. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_interval.py +0 -0
  54. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/producers/prod_operation.py +0 -0
  55. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/py.typed +0 -0
  56. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/schedulers/__init__.py +0 -0
  57. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/schedulers/async_scheduler.py +0 -0
  58. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/schedulers/base.py +0 -0
  59. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/task_managers/__init__.py +0 -0
  60. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/task_managers/base.py +0 -0
  61. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/task_managers/parallel.py +0 -0
  62. {eascheduler-0.2.3 → eascheduler-0.2.4}/src/eascheduler/task_managers/sequential.py +0 -0
  63. {eascheduler-0.2.3 → eascheduler-0.2.4}/tests/test_const.py +0 -0
  64. {eascheduler-0.2.3 → eascheduler-0.2.4}/tests/test_default.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: EAScheduler
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Easy async scheduling with a nice interface
5
5
  Home-page: https://github.com/spacemanspiff2007/eascheduler
6
6
  Author: spaceman_spiff
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
22
  Requires-Dist: whenever==0.7.3
23
23
  Requires-Dist: astral==3.2
24
- Requires-Dist: holidays==0.69
24
+ Requires-Dist: holidays==0.70
25
25
  Requires-Dist: typing_extensions
26
26
  Dynamic: author
27
27
  Dynamic: classifier
@@ -137,6 +137,10 @@ scheduler.at(
137
137
  ````
138
138
 
139
139
  ## Changelog
140
+ #### 0.2.4 (2025-04-16)
141
+ - Instand for execution can be specified directly as `Instant`
142
+ - Updated dependencies
143
+
140
144
  #### 0.2.3 (2025-03-26)
141
145
  - Updated dependencies
142
146
 
@@ -1,6 +1,6 @@
1
1
  # Requirements to install and use this library
2
2
  whenever == 0.7.3
3
3
  astral == 3.2
4
- holidays == 0.69
4
+ holidays == 0.70
5
5
 
6
6
  typing_extensions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: EAScheduler
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Easy async scheduling with a nice interface
5
5
  Home-page: https://github.com/spacemanspiff2007/eascheduler
6
6
  Author: spaceman_spiff
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
  License-File: LICENSE
22
22
  Requires-Dist: whenever==0.7.3
23
23
  Requires-Dist: astral==3.2
24
- Requires-Dist: holidays==0.69
24
+ Requires-Dist: holidays==0.70
25
25
  Requires-Dist: typing_extensions
26
26
  Dynamic: author
27
27
  Dynamic: classifier
@@ -137,6 +137,10 @@ scheduler.at(
137
137
  ````
138
138
 
139
139
  ## Changelog
140
+ #### 0.2.4 (2025-04-16)
141
+ - Instand for execution can be specified directly as `Instant`
142
+ - Updated dependencies
143
+
140
144
  #### 0.2.3 (2025-03-26)
141
145
  - Updated dependencies
142
146
 
@@ -1,4 +1,4 @@
1
1
  whenever==0.7.3
2
2
  astral==3.2
3
- holidays==0.69
3
+ holidays==0.70
4
4
  typing_extensions
@@ -0,0 +1 @@
1
+ __version__ = '0.2.4'
@@ -58,8 +58,15 @@ class FilterBuilder:
58
58
  @staticmethod
59
59
  def time(lower: HINT_TIME | None = None, upper: HINT_TIME | None = None) -> FilterObject:
60
60
  """Restrict the trigger instant to a time range"""
61
+
62
+ if lower is None and upper is None:
63
+ msg = 'At least one of lower or upper must be provided'
64
+ raise ValueError(msg)
65
+
66
+ time_lower = get_time(lower) if lower is not None else None
67
+ time_upper = get_time(upper) if upper is not None else None
61
68
  return FilterObject(
62
- TimeProducerFilter(get_time(lower), get_time(upper))
69
+ TimeProducerFilter(time_lower, time_upper)
63
70
  )
64
71
 
65
72
  @staticmethod
@@ -16,7 +16,7 @@ from eascheduler.helpers import HINT_CLOCK_BACKWARD, HINT_CLOCK_FORWARD, TimeRep
16
16
  HINT_TIME: TypeAlias = dt_time | Time | str
17
17
  HINT_TIMEDELTA: TypeAlias = dt_timedelta | TimeDelta | int | float | str
18
18
  HINT_POS_TIMEDELTA: TypeAlias = HINT_TIMEDELTA
19
- HINT_INSTANT: TypeAlias = dt_datetime | None | str | HINT_TIME | HINT_TIMEDELTA | SystemDateTime
19
+ HINT_INSTANT: TypeAlias = dt_datetime | None | str | HINT_TIME | HINT_TIMEDELTA | SystemDateTime | Instant
20
20
  HINT_NAME_OR_NR: TypeAlias = int | str | Iterable[int | str]
21
21
  HINT_DATE: TypeAlias = dt_date | dt_datetime | str | None | Date | SystemDateTime | Instant
22
22
 
@@ -98,11 +98,13 @@ def get_instant(value: HINT_INSTANT) -> Instant:
98
98
  value.second, nanosecond=value.microsecond * 1_000).instant()
99
99
  case SystemDateTime():
100
100
  return value.instant()
101
+ case Instant():
102
+ return value
101
103
 
102
104
  # ------------------------------------------------------------------------------------------------------------------
103
105
  # timedelta
104
106
  try:
105
- timedelta = get_timedelta(value)
107
+ timedelta = get_timedelta(value) # type: ignore[arg-type]
106
108
  except (ValueError, TypeError):
107
109
  pass
108
110
  else:
@@ -111,7 +113,7 @@ def get_instant(value: HINT_INSTANT) -> Instant:
111
113
  # ------------------------------------------------------------------------------------------------------------------
112
114
  # time
113
115
  try:
114
- time = get_time(value)
116
+ time = get_time(value) # type: ignore[arg-type]
115
117
  except (ValueError, TypeError):
116
118
  pass
117
119
  else:
@@ -116,7 +116,10 @@ class JobBase(Generic[IdType]):
116
116
  self.update_next()
117
117
  return self.status
118
118
 
119
- def __lt__(self, other_job: object) -> bool:
119
+ def __lt__(self, other_job: JobBase) -> bool:
120
+ if not isinstance(other_job, JobBase):
121
+ return NotImplemented
122
+
120
123
  if (other := other_job.next_run) is None:
121
124
  return True
122
125
  if (this := self.next_run) is None:
@@ -55,7 +55,7 @@ def set_location(latitude: float | str, longitude: float | str, elevation: float
55
55
  OBSERVER = Observer(latitude, longitude, elevation)
56
56
 
57
57
 
58
- SUN_CACHE: Final = OrderedDict()
58
+ SUN_CACHE: Final[OrderedDict[tuple[Hashable, ...], Instant]] = OrderedDict()
59
59
 
60
60
 
61
61
  class SunProducer(DateTimeProducerBase):
@@ -9,7 +9,7 @@ from eascheduler.producers.base import DateTimeProducerBase, not_infinite_loop
9
9
 
10
10
 
11
11
  if TYPE_CHECKING:
12
- from whenever import Instant
12
+ from whenever import Instant, SystemDateTime
13
13
 
14
14
 
15
15
  class TimeProducer(DateTimeProducerBase):
@@ -27,6 +27,8 @@ class TimeProducer(DateTimeProducerBase):
27
27
  @override
28
28
  def get_next(self, dt: Instant) -> Instant: # type: ignore[return]
29
29
 
30
+ local_dts: tuple[SystemDateTime, ...]
31
+
30
32
  date = dt.to_system_tz().date()
31
33
  for _ in not_infinite_loop(): # noqa: RET503
32
34
  try:
@@ -1 +0,0 @@
1
- __version__ = '0.2.3'
File without changes
File without changes
File without changes
File without changes