This commit is contained in:
deathbybandaid 2022-02-10 12:02:47 -05:00
parent a3ee9cd038
commit 1af2da8523
2 changed files with 0 additions and 129 deletions

View File

@ -1,6 +1,5 @@
from .interface.config import Config
from .interface.scheduler import Scheduler
from .interface.versions import Versions
from .interface.logger import Logger
from .interface.database import Database
@ -19,10 +18,6 @@ class SpiceBotCore_OBJ():
self.logger = Logger()
self.logger.info("SpiceBot Logging Interface Setup Complete.")
# Allow SpiceBot to interact with Sopel Scheduler
self.scheduler = Scheduler(self.logger)
self.logger.info("SpiceBot Scheduler Interface Setup Complete.")
# Allow Spicebot to mimic Sopel Config
self.config = Config(script_dir)
self.logger.info("SpiceBot Config Interface Setup Complete.")

View File

@ -1,124 +0,0 @@
import functools
import threading
import schedule
import time
def humanized_time(countdownseconds):
time = float(countdownseconds)
if time == 0:
return "just now"
year = time // (365 * 24 * 3600)
time = time % (365 * 24 * 3600)
day = time // (24 * 3600)
time = time % (24 * 3600)
time = time % (24 * 3600)
hour = time // 3600
time %= 3600
minute = time // 60
time %= 60
second = time
displaymsg = None
timearray = ['year', 'day', 'hour', 'minute', 'second']
for x in timearray:
currenttimevar = eval(x)
if currenttimevar >= 1:
timetype = x
if currenttimevar > 1:
timetype = str(x+"s")
if displaymsg:
displaymsg = "%s %s %s" % (displaymsg, int(currenttimevar), timetype)
else:
displaymsg = "%s %s" % (int(currenttimevar), timetype)
if not displaymsg:
return "just now"
return displaymsg
# just for ignoring a pep error
year, day, hour, minute, second
class Scheduler():
"""
SpiceBot Scheduling events system.
"""
def __init__(self, logger):
self.logger = logger
self.schedule = schedule
# This decorator can be applied to any job function
def job_wrapper(self, func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
job_name = func.__name__
start_timestamp = time.time()
self.logger.debug('Running job: %s' % job_name)
result = func(*args, **kwargs)
total_time = humanized_time(time.time() - start_timestamp)
self.logger.debug('Job %s completed in %s' % (job_name, total_time))
return result
return wrapper
def remove(self, remtag):
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
if remtag in list(job_item.tags):
self.schedule.cancel_job(job_item)
def list_tags(self):
tagslist = []
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
tagslist.extend(list(job_item.tags))
return tagslist
def list_jobs(self):
jobsdicts = []
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
jobsdicts.append({
"name": list(job_item.tags)[0],
"last_run": job_item.last_run,
"next_run": job_item.next_run
})
return jobsdicts
def run_from_tag(self, runtag):
joblist = self.jobs
for job_item in joblist:
if len(list(job_item.tags)):
if runtag in list(job_item.tags):
self.logger.debug("Job %s was triggered to run." % list(job_item.tags)[0])
job_item.run()
def run(self):
"""
Run all scheduled tasks.
"""
# Start a thread to run the events
t = threading.Thread(target=self.thread_worker, args=())
t.start()
def thread_worker(self):
while True:
self.schedule.run_pending()
time.sleep(1)
def __getattr__(self, name):
"""
Quick and dirty shortcuts. Will only get called for undefined attributes.
"""
if hasattr(self.schedule, name):
return eval("self.schedule.%s" % name)