orionis 0.512.0__py3-none-any.whl → 0.513.0__py3-none-any.whl

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.
@@ -2,7 +2,7 @@ from typing import Any, Dict, List
2
2
  from orionis.console.args.argument import CLIArgument
3
3
  from orionis.console.dynamic.progress_bar import ProgressBar
4
4
  from orionis.console.output.console import Console
5
- from orionis.console.base.contracts.command import IBaseCommand
5
+ from orionis.console.contracts.command import IBaseCommand
6
6
 
7
7
  class BaseCommand(Console, ProgressBar, IBaseCommand):
8
8
  """
@@ -1,5 +1,5 @@
1
1
  from datetime import datetime
2
- from orionis.console.base.contracts.scheduler import IBaseScheduler
2
+ from orionis.console.contracts.scheduler import IBaseScheduler
3
3
  from orionis.console.contracts.schedule import ISchedule
4
4
 
5
5
  class BaseScheduler(IBaseScheduler):
@@ -1,5 +1,4 @@
1
1
  from abc import ABC, abstractmethod
2
- from typing import TYPE_CHECKING
3
2
  from orionis.console.entities.job_error import JobError
4
3
  from orionis.console.entities.job_executed import JobExecuted
5
4
  from orionis.console.entities.job_max_instances import JobMaxInstances
@@ -9,9 +8,6 @@ from orionis.console.entities.job_removed import JobRemoved
9
8
  from orionis.console.entities.job_resume import JobResume
10
9
  from orionis.console.entities.job_submitted import JobSubmitted
11
10
 
12
- if TYPE_CHECKING:
13
- from orionis.console.contracts.schedule import ISchedule
14
-
15
11
  class IScheduleEventListener(ABC):
16
12
  """
17
13
  Interface for event listeners that handle various stages of event processing.
@@ -0,0 +1,140 @@
1
+ from abc import ABC, abstractmethod
2
+ from datetime import datetime
3
+ from orionis.console.contracts.schedule import ISchedule
4
+
5
+ class IBaseScheduler(ABC):
6
+
7
+ # Pause Global Scheduler at a specific time
8
+ PAUSE_AT: datetime = None
9
+
10
+ # Resume Global Scheduler at a specific time
11
+ RESUME_AT: datetime = None
12
+
13
+ # Finalize Global Scheduler at a specific time
14
+ FINALIZE_AT: datetime = None
15
+
16
+ @abstractmethod
17
+ def tasks(self, schedule: ISchedule):
18
+ """
19
+ Defines and registers scheduled tasks for the application.
20
+
21
+ Parameters
22
+ ----------
23
+ schedule : ISchedule
24
+ The schedule object used to define and register scheduled commands.
25
+ This object provides methods to add tasks to the scheduler.
26
+
27
+ Returns
28
+ -------
29
+ None
30
+ This method does not return any value. It is intended to be overridden
31
+ by subclasses to specify scheduled tasks.
32
+
33
+ Notes
34
+ -----
35
+ This method serves as a contract for subclasses to implement task registration
36
+ logic. Subclasses should use the provided `schedule` object to define and
37
+ register tasks that the scheduler will execute.
38
+ """
39
+ # Abstract method to be implemented by subclasses for task registration
40
+ pass
41
+
42
+ @abstractmethod
43
+ def onStarted(self):
44
+ """
45
+ Called when the scheduler is started.
46
+
47
+ Returns
48
+ -------
49
+ None
50
+ This method does not return any value.
51
+
52
+ Notes
53
+ -----
54
+ Subclasses should override this method to implement custom behavior that
55
+ should occur when the scheduler starts running. This can include initializing
56
+ resources or logging the start event.
57
+ """
58
+ # Abstract method to define behavior when the scheduler starts
59
+ pass
60
+
61
+ @abstractmethod
62
+ def onPaused(self):
63
+ """
64
+ Called when the scheduler is paused.
65
+
66
+ Returns
67
+ -------
68
+ None
69
+ This method does not return any value.
70
+
71
+ Notes
72
+ -----
73
+ Subclasses should override this method to define custom behavior that occurs
74
+ when the scheduler enters a paused state. This can include saving the current
75
+ state or logging the pause event.
76
+ """
77
+ # Abstract method to define behavior when the scheduler is paused
78
+ pass
79
+
80
+ @abstractmethod
81
+ def onResumed(self):
82
+ """
83
+ Called when the scheduler is resumed from a paused state.
84
+
85
+ Returns
86
+ -------
87
+ None
88
+ This method does not return any value.
89
+
90
+ Notes
91
+ -----
92
+ Subclasses should override this method to implement any actions that need to
93
+ occur when the scheduler resumes operation. This can include restoring the
94
+ state or logging the resume event.
95
+ """
96
+ # Abstract method to define behavior when the scheduler is resumed
97
+ pass
98
+
99
+ @abstractmethod
100
+ def onFinalized(self):
101
+ """
102
+ Called when the scheduler has completed its execution and is being finalized.
103
+
104
+ Returns
105
+ -------
106
+ None
107
+ This method does not return any value.
108
+
109
+ Notes
110
+ -----
111
+ Subclasses can override this method to perform any necessary cleanup or
112
+ finalization tasks, such as releasing resources or logging the finalization
113
+ event.
114
+ """
115
+ # Abstract method to define behavior when the scheduler is finalized
116
+ pass
117
+
118
+ @abstractmethod
119
+ def onError(self, error: Exception):
120
+ """
121
+ Handles errors that occur within the scheduler.
122
+
123
+ Parameters
124
+ ----------
125
+ error : Exception
126
+ The exception instance representing the error that occurred.
127
+
128
+ Returns
129
+ -------
130
+ None
131
+ This method does not return any value.
132
+
133
+ Notes
134
+ -----
135
+ Subclasses can override this method to implement custom error handling logic
136
+ for the scheduler. This can include logging the error, notifying stakeholders,
137
+ or attempting to recover from the error.
138
+ """
139
+ # Abstract method to define behavior for handling errors in the scheduler
140
+ pass
@@ -4,7 +4,7 @@ import re
4
4
  from typing import Any, List, Optional
5
5
  from orionis.console.args.argument import CLIArgument
6
6
  from orionis.console.base.command import BaseCommand
7
- from orionis.console.base.contracts.command import IBaseCommand
7
+ from orionis.console.contracts.command import IBaseCommand
8
8
  from orionis.console.contracts.reactor import IReactor
9
9
  from orionis.console.enums.command import Command
10
10
  from orionis.console.exceptions import CLIOrionisValueError
@@ -121,13 +121,9 @@ class Scheduler(ISchedule):
121
121
  formatted as "YYYY-MM-DD HH:MM:SS".
122
122
  """
123
123
 
124
- # Get the current time in the configured timezone
125
- now = pytz.timezone(self.__app.config('app.timezone', 'UTC')).localize(
126
- pytz.datetime.datetime.now()
127
- )
128
-
129
- # Return the formatted date and time string
130
- return now.strftime('%Y-%m-%d %H:%M:%S')
124
+ tz = pytz.timezone(self.__app.config("app.timezone", "UTC"))
125
+ now = datetime.now(tz)
126
+ return now.strftime("%Y-%m-%d %H:%M:%S")
131
127
 
132
128
  def __suscribeListeners(
133
129
  self
@@ -210,25 +206,24 @@ class Scheduler(ISchedule):
210
206
 
211
207
  # Display a start message for the scheduler worker on the rich console
212
208
  # Add a blank line for better formatting
213
- if self.__app.config('app.debug', False):
214
- self.__rich_console.line()
215
- panel_content = Text.assemble(
216
- (" Orionis Scheduler Worker ", "bold white on green"), # Header text with styling
217
- ("\n\n", ""), # Add spacing
218
- ("The scheduled tasks worker has started successfully.\n", "white"), # Main message
219
- (f"Started at: {now}\n", "dim"), # Display the start time in dim text
220
- ("To stop the worker, press ", "white"), # Instruction text
221
- ("Ctrl+C", "bold yellow"), # Highlight the key combination
222
- (".", "white") # End the instruction
223
- )
224
-
225
- # Display the message in a styled panel
226
- self.__rich_console.print(
227
- Panel(panel_content, border_style="green", padding=(1, 2))
228
- )
229
-
230
- # Add another blank line for better formatting
231
- self.__rich_console.line()
209
+ self.__rich_console.line()
210
+ panel_content = Text.assemble(
211
+ (" Orionis Scheduler Worker ", "bold white on green"), # Header text with styling
212
+ ("\n\n", ""), # Add spacing
213
+ ("The scheduled tasks worker has started successfully.\n", "white"), # Main message
214
+ (f"Started at: {now}\n", "dim"), # Display the start time in dim text
215
+ ("To stop the worker, press ", "white"), # Instruction text
216
+ ("Ctrl+C", "bold yellow"), # Highlight the key combination
217
+ (".", "white") # End the instruction
218
+ )
219
+
220
+ # Display the message in a styled panel
221
+ self.__rich_console.print(
222
+ Panel(panel_content, border_style="green", padding=(1, 2))
223
+ )
224
+
225
+ # Add another blank line for better formatting
226
+ self.__rich_console.line()
232
227
 
233
228
  # Retrieve the global identifier for the scheduler started event
234
229
  scheduler_started = ListeningEvent.SCHEDULER_STARTED.value
@@ -2,7 +2,7 @@ import asyncio
2
2
  import time
3
3
  from pathlib import Path
4
4
  from typing import Any, List, Type
5
- from orionis.console.base.contracts.scheduler import IBaseScheduler
5
+ from orionis.console.contracts.scheduler import IBaseScheduler
6
6
  from orionis.console.base.scheduler import BaseScheduler
7
7
  from orionis.container.container import Container
8
8
  from orionis.container.contracts.service_provider import IServiceProvider
@@ -5,7 +5,7 @@
5
5
  NAME = "orionis"
6
6
 
7
7
  # Current version of the framework
8
- VERSION = "0.512.0"
8
+ VERSION = "0.513.0"
9
9
 
10
10
  # Full name of the author or maintainer of the project
11
11
  AUTHOR = "Raul Mauricio Uñate Castro"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: orionis
3
- Version: 0.512.0
3
+ Version: 0.513.0
4
4
  Summary: Orionis Framework – Elegant, Fast, and Powerful.
5
5
  Home-page: https://github.com/orionis-framework/framework
6
6
  Author: Raul Mauricio Uñate Castro
@@ -7,12 +7,9 @@ orionis/console/args/argument.py,sha256=Is8Z8_kW4DvcK1nK1UU-sa6Pk0BeOdcRczCayW0Z
7
7
  orionis/console/args/enums/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  orionis/console/args/enums/actions.py,sha256=S3T-vWS6DJSGtANrq3od3-90iYAjPvJwaOZ2V02y34c,1222
9
9
  orionis/console/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- orionis/console/base/command.py,sha256=nasVPyKEvuv8sDFEWXhHyBCWAmSLfPPm2XlKaYYt_pM,6642
11
- orionis/console/base/scheduler.py,sha256=lUHd83YhpsojxcCDme2e9Gcw6ebnsdRFgny4MKH5-rc,3380
10
+ orionis/console/base/command.py,sha256=OM4xqVgpv_1RZVyVG8BzOHl1sP9FT5mPUwZjMil8IRg,6637
11
+ orionis/console/base/scheduler.py,sha256=5B1msuEwvEdaUIFzaLU8-QtfrbqduIkXfM7pubWhoZg,3375
12
12
  orionis/console/base/scheduler_event_listener.py,sha256=m3p55Zz7HrMxGU3S3oMaMG58YPSRXPJUVCh4Ky7GFR8,4062
13
- orionis/console/base/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- orionis/console/base/contracts/command.py,sha256=vmAJD0yMQ5-AD_s9_xCFEAl64sKk65z7U2E196dALQM,5760
15
- orionis/console/base/contracts/scheduler.py,sha256=y8q4qv6oxjnWSt9G0HP2IjogtWIASfJaMO5vkG22U1Q,1184
16
13
  orionis/console/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
14
  orionis/console/commands/cache.py,sha256=8DsYoRzSBLn0P9qkGVItRbo0R6snWBDBg0_Xa7tmVhs,2322
18
15
  orionis/console/commands/help.py,sha256=zfSw0pYaOnFN-_Ozdn4veBQDYMgSSDY10nPDCi-7tTY,3199
@@ -23,13 +20,15 @@ orionis/console/commands/test.py,sha256=-EmQwFwMBuby3OI9HwqMIwuJzd2CGbWbOqmwrR25
23
20
  orionis/console/commands/version.py,sha256=SUuNDJ40f2uq69OQUmPQXJKaa9Bm_iVRDPmBd7zc1Yc,3658
24
21
  orionis/console/commands/workflow.py,sha256=NYOmjTSvm2o6AE4h9LSTZMFSYPQreNmEJtronyOxaYk,2451
25
22
  orionis/console/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
23
+ orionis/console/contracts/command.py,sha256=vmAJD0yMQ5-AD_s9_xCFEAl64sKk65z7U2E196dALQM,5760
26
24
  orionis/console/contracts/event.py,sha256=zaOkbRNKpU6U_cIEFic84C3WIcD8kCIyX9hc50jN8N0,119797
27
25
  orionis/console/contracts/kernel.py,sha256=mh4LlhEYHh3FuGZZQ0GBhD6ZLa5YQvaNj2r01IIHI5Y,826
28
26
  orionis/console/contracts/reactor.py,sha256=Xeq7Zrw6WE5MV_XOQfiQEchAFbb6-0TjLpjWOxYW--g,4554
29
27
  orionis/console/contracts/schedule.py,sha256=gMd_CS-W8d_pOX6dBjcqtYRL_rXzTWdzeg-WyrI2g7g,6260
30
- orionis/console/contracts/schedule_event_listener.py,sha256=dD88szDWcTSrIkMrZOlhGXB-m0jXQtKYEUZk5rxvGXY,13004
28
+ orionis/console/contracts/schedule_event_listener.py,sha256=0HSQ49O-Wzyn0P3rrfP2xsfSioIAaCv3n_pgEkhyY1o,12887
29
+ orionis/console/contracts/scheduler.py,sha256=90QoeoUGOLgLhzCKbWHpuAdWzmHiV1FQXrhzJajLMBA,4354
31
30
  orionis/console/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
- orionis/console/core/reactor.py,sha256=3i7-jn_HBwYfsNR8xpExt5Owi3nk9BfHnW7J7lUmb-4,30414
31
+ orionis/console/core/reactor.py,sha256=JlxNiqmyzAqiS21hxOMD5ELiDNPzmGHYDNrdlaMvYuI,30409
33
32
  orionis/console/dumper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
33
  orionis/console/dumper/dump.py,sha256=CATERiQ6XuIrKQsDaWcVxzTtlAJI9qLJX44fQxEX8ws,22443
35
34
  orionis/console/dumper/contracts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -82,7 +81,7 @@ orionis/console/request/cli_request.py,sha256=7-sgYmNUCipuHLVAwWLJiHv0cJCDmsM1Lu
82
81
  orionis/console/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
82
  orionis/console/tasks/event.py,sha256=UhAIbSHueyykzny8SorxKbo8S-_TxP6jLhT-FuFyLL0,163405
84
83
  orionis/console/tasks/listener.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
- orionis/console/tasks/schedule.py,sha256=1VOLwLxmnlFx7CehWPOgSBAxnoBkmCwkRYsGo9NgGvM,47138
84
+ orionis/console/tasks/schedule.py,sha256=l9hgDMPIbkJi1O1K2GupZD-HD1ygYRPLPdcEbdVFQWM,46877
86
85
  orionis/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
86
  orionis/container/container.py,sha256=aF_b6lTUpG4YCo9yFJEzsntTdIzgMMXFW5LyWqAJVBQ,87987
88
87
  orionis/container/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -124,7 +123,7 @@ orionis/failure/contracts/handler.py,sha256=4N9yMkMgdhtHbRGAyCtuTx3GmkPP74vhqdRL
124
123
  orionis/failure/entities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
124
  orionis/failure/entities/throwable.py,sha256=ogys062uhim5QMYU62ezlnumRAnYQlUf_vZvQY47S3U,1227
126
125
  orionis/foundation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
- orionis/foundation/application.py,sha256=4fkbnb2r7rfyn0_0JIX-wG-hRZzRVLQySWO7v4a_4e0,83797
126
+ orionis/foundation/application.py,sha256=GmfLnpWuhX_6d1gzUk1v7jy_R72XpLJdA-hEOrXQn_Q,83792
128
127
  orionis/foundation/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
128
  orionis/foundation/config/startup.py,sha256=vbzduprRCNyYeR2nnMaqc1uKXw6PTzAY2jVfXNQKN8I,9691
130
129
  orionis/foundation/config/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -240,7 +239,7 @@ orionis/foundation/providers/scheduler_provider.py,sha256=72SoixFog9IOE9Ve9Xcfw6
240
239
  orionis/foundation/providers/testing_provider.py,sha256=SrJRpdvcblx9WvX7x9Y3zc7OQfiTf7la0HAJrm2ESlE,3725
241
240
  orionis/foundation/providers/workers_provider.py,sha256=oa_2NIDH6UxZrtuGkkoo_zEoNIMGgJ46vg5CCgAm7wI,3926
242
241
  orionis/metadata/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
243
- orionis/metadata/framework.py,sha256=odvj4VtrkvwqfB9sDAmuu7FEiT6n79mgB5NQb05ME2A,4109
242
+ orionis/metadata/framework.py,sha256=6NoNocgXwGzH22ftuxlsTj_szulwLBhp3y1YnjY2DoA,4109
244
243
  orionis/metadata/package.py,sha256=k7Yriyp5aUcR-iR8SK2ec_lf0_Cyc-C7JczgXa-I67w,16039
245
244
  orionis/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
246
245
  orionis/services/asynchrony/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -416,7 +415,7 @@ orionis/test/validators/web_report.py,sha256=n9BfzOZz6aEiNTypXcwuWbFRG0OdHNSmCNu
416
415
  orionis/test/validators/workers.py,sha256=rWcdRexINNEmGaO7mnc1MKUxkHKxrTsVuHgbnIfJYgc,1206
417
416
  orionis/test/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
418
417
  orionis/test/view/render.py,sha256=f-zNhtKSg9R5Njqujbg2l2amAs2-mRVESneLIkWOZjU,4082
419
- orionis-0.512.0.dist-info/licenses/LICENCE,sha256=JhC-z_9mbpUrCfPjcl3DhDA8trNDMzb57cvRSam1avc,1463
418
+ orionis-0.513.0.dist-info/licenses/LICENCE,sha256=JhC-z_9mbpUrCfPjcl3DhDA8trNDMzb57cvRSam1avc,1463
420
419
  tests/container/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
421
420
  tests/container/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
422
421
  tests/container/context/test_manager.py,sha256=wOwXpl9rHNfTTexa9GBKYMwK0_-KSQPbI-AEyGNkmAE,1356
@@ -562,8 +561,8 @@ tests/testing/validators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
562
561
  tests/testing/validators/test_testing_validators.py,sha256=WPo5GxTP6xE-Dw3X1vZoqOMpb6HhokjNSbgDsDRDvy4,16588
563
562
  tests/testing/view/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
564
563
  tests/testing/view/test_render.py,sha256=tnnMBwS0iKUIbogLvu-7Rii50G6Koddp3XT4wgdFEYM,1050
565
- orionis-0.512.0.dist-info/METADATA,sha256=dkTy4zSWuTdWAIJ0UYihCTdOnHJyS7B9rf5sarLqOnA,4801
566
- orionis-0.512.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
567
- orionis-0.512.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
568
- orionis-0.512.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
569
- orionis-0.512.0.dist-info/RECORD,,
564
+ orionis-0.513.0.dist-info/METADATA,sha256=LGeTVazZK9z_4kIpNC0uuJfJJdbdbBzguVb-YRJ1x5c,4801
565
+ orionis-0.513.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
566
+ orionis-0.513.0.dist-info/top_level.txt,sha256=2bdoHgyGZhOtLAXS6Om8OCTmL24dUMC_L1quMe_ETbk,14
567
+ orionis-0.513.0.dist-info/zip-safe,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
568
+ orionis-0.513.0.dist-info/RECORD,,
File without changes
@@ -1,38 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from datetime import datetime
3
- from orionis.console.contracts.schedule import ISchedule
4
-
5
- class IBaseScheduler(ABC):
6
-
7
- # Pause Global Scheduler at a specific time
8
- PAUSE_AT: datetime = None
9
-
10
- # Resume Global Scheduler at a specific time
11
- RESUME_AT: datetime = None
12
-
13
- # Finalize Global Scheduler at a specific time
14
- FINALIZE_AT: datetime = None
15
-
16
- @abstractmethod
17
- def tasks(self, schedule: ISchedule):
18
- """
19
- Defines and registers scheduled tasks for the application.
20
-
21
- Parameters
22
- ----------
23
- schedule : ISchedule
24
- The schedule object used to define and register scheduled commands.
25
-
26
- Returns
27
- -------
28
- None
29
- This method does not return any value. It is intended to be overridden
30
- by subclasses to specify scheduled tasks.
31
-
32
- Notes
33
- -----
34
- This method should be implemented in subclasses to add specific tasks
35
- to the scheduler using the provided `schedule` object.
36
- """
37
- # This method should be overridden in subclasses to define scheduled tasks.
38
- pass