def cmd3(wait): logger = logging.getLogger('cmd3') self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f')) time.sleep(wait) self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f'))
def __call__(self, parser, namespace, values, option_string=None): try: if type(values) == str: daytime = Daytime.fromtime(timeparser.parsetime(values)) else: daytime = [Daytime.fromtime(timeparser.parsetime(d)) for d in values] except ValueError: raise ArgumentError(self, self.ERR % (values, 'daytime')) else: setattr(namespace, self.dest, daytime)
def __call__(self, parser, namespace, values, option_string=None): value = ' '.join(values) if isinstance(values, list) else values try: daytime = Daytime.fromtime(timeparser.parsetime(values)) except ValueError: raise ArgumentError(self, self.ERR % (values, 'daytime')) else: self.append(namespace, daytime)
def inittimer(self): self.interval = 6 self.count = 4 data = list() times = list() daytime = Daytime.daytime() for x in range(4): times.append(daytime + 10*x) for i, t in enumerate(times): data.append((t, self.interval+i)) self.timer = DaytimeTimer(data=data)
def actualize(self): """Actualizes the :attr:`Timer.interval` based on the actual daytime. """ now = Daytime.daytime() if now < self._data[0][0]: self._interval = self._data[-1][1] else: for time, interval in self._data: if time < now: self._interval = interval
def test_greeting(): with open('tests/part-of-day.json', 'r') as f: part_of_day_results = json.load(f) for hour in range(24): result_time_of_day = Daytime.part_of_day( ephem.Date((2018, 11, 22, hour, 1))) assert result_time_of_day == part_of_day_results[str( hour)], "expected {} for {} o'clock', got {}.".format( part_of_day_results[str(hour)], hour, result_time_of_day)
def initcmds(self): self.output0 = list() self.output1 = list() self.output2 = list() self.output3 = list() # this is for catching the start-times of every round def cmd0(): logger = logging.getLogger('cmd0') self.output0.append(Daytime.daytime()) logger.info(self.output0[-1].strftime('%T.%f')) def cmd1(wait): logger = logging.getLogger('cmd1') self.output1.append(Daytime.daytime()) logger.info(self.output1[-1].strftime('%T.%f')) time.sleep(wait) self.output1.append(Daytime.daytime()) logger.info(self.output1[-1].strftime('%T.%f')) def cmd2(wait): logger = logging.getLogger('cmd2') self.output2.append(Daytime.daytime()) logger.info(self.output2[-1].strftime('%T.%f')) time.sleep(wait) self.output2.append(Daytime.daytime()) logger.info(self.output2[-1].strftime('%T.%f')) def cmd3(wait): logger = logging.getLogger('cmd3') self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f')) time.sleep(wait) self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f')) self.wait1 = 2 self.wait2 = 4 self.wait3 = 1 times = list() daytime = Daytime.daytime() for x in [1, 3]: times.append((daytime + self.interval * x)) self.cmd0 = Cmd(cmd0) self.cmd1 = Cmd(cmd1, args=[self.wait1], join=True, stall=0.5, wait=0.2) self.cmd2 = Cmd(cmd2, args=[self.wait2], wait=1) self.cmd3 = Cmd(cmd3, args=[self.wait3], times=times, delay=self.cmd1._wait + self.wait1 + self.cmd1._stall + 1)
def setUp(self): self.daytime1 = Daytime.fromtime(time(0, 0, 0, 8000)) self.daytime2 = Daytime.strptime('2,20,22,007000', '%H,%M,%S,%f') self.daytime3 = Daytime.utcfromtimestamp( Daytime(2, 20, 23, 90000).as_seconds) self.daytime4 = Daytime.fromtimestamp( Daytime(12, 25, 0, 8400).as_seconds, UTC()) self.daytime5 = Daytime(18, 43, 20, 6000) self.daytime6 = Daytime.daytime
def inittimer(self): self.interval = 6 self.count = 4 data = list() times = list() daytime = Daytime.daytime() for x in range(4): times.append(daytime + 10 * x) for i, t in enumerate(times): data.append((t, self.interval + i)) self.timer = DaytimeTimer(data=data)
def check_timetable(database): current_msk = Daytime.fromtime(datetime.datetime.now(MSK_TIMEZONE)) current_weekday = constants.weekdays[datetime.datetime.now( MSK_TIMEZONE).weekday()] interval_start = current_msk + 540 interval_stop = current_msk + 600 for_notifying = {} for user in database.get_all(): user_delta = user.get('settings', {}).get('timezone', 0) timetable = user.get('timetable', {}).get(current_weekday, {}) if timetable: for time, note in timetable.items(): if interval_start < Daytime.strptime( time, '%H:%M') - datetime.timedelta( hours=user_delta) < interval_stop: if for_notifying.get(user['id']): for_notifying[user['id']].append({time: note}) else: for_notifying[user['id']] = [{time: note}] return for_notifying
def _check_times(self): """ Checks for execution with regard to *times*. :arg int interval: :attr:`Sequence.timer.interval` :returns: bool """ if not self._times: return True d = Daytime.daytime() i = self.sequence.timer.interval if any([d >= t and d - t < i for t in self._times]): return True else: return False
def initcmds(self): self.output0 = list() self.output1 = list() self.output2 = list() self.output3 = list() # this is for catching the start-times of every round def cmd0(): logger = logging.getLogger('cmd0') self.output0.append(Daytime.daytime()) logger.info(self.output0[-1].strftime('%T.%f')) def cmd1(wait): logger = logging.getLogger('cmd1') self.output1.append(Daytime.daytime()) logger.info(self.output1[-1].strftime('%T.%f')) time.sleep(wait) self.output1.append(Daytime.daytime()) logger.info(self.output1[-1].strftime('%T.%f')) def cmd2(wait): logger = logging.getLogger('cmd2') self.output2.append(Daytime.daytime()) logger.info(self.output2[-1].strftime('%T.%f')) time.sleep(wait) self.output2.append(Daytime.daytime()) logger.info(self.output2[-1].strftime('%T.%f')) def cmd3(wait): logger = logging.getLogger('cmd3') self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f')) time.sleep(wait) self.output3.append(Daytime.daytime()) logger.info(self.output3[-1].strftime('%T.%f')) self.wait1 = 2 self.wait2 = 4 self.wait3 = 1 times = list() daytime = Daytime.daytime() for x in [1,3]: times.append((daytime + self.interval*x)) self.cmd0 = Cmd(cmd0) self.cmd1 = Cmd(cmd1, args=[self.wait1], join=True, stall=0.5, wait=0.2) self.cmd2 = Cmd(cmd2, args=[self.wait2], wait=1) self.cmd3 = Cmd(cmd3, args=[self.wait3], times=times, delay=self.cmd1._wait + self.wait1 + self.cmd1._stall + 1)
class Lifxservice(): def __init__(self, location, debug=False): self._debug = debug self._lifxlan = LifxLAN() self._daytime = Daytime(location) def start(self): self._lifxlan.set_power_all_lights("off", rapid=False) def stop(self): # When coming home, turn on the lights if the sun has set if self._daytime.dark_outside(): self._lifxlan.set_power_all_lights("on", rapid=False) def generate_summary(self): # Not very interesting to show a summary for the sonos service return None
def _stop_tracker(self): logging.info("Tracker stopped.") self._board.led.state = Led.OFF self._tracker_active = False summaries = [] self._lock.acquire() for service in self._services: try: service.stop() summaries.append(service.generate_summary()) except Exception as e: logging.error("Could not stop service of class {}. Error: {}".format(service.__class__.__name__, e)) self._services = None self._lock.release() if not self._debug: googlevoice.say( "Good {}. Welcome back. Here's your summary: ".format(Daytime.part_of_day())) for summary in filter(None, summaries): logging.info(summary) googlevoice.say(summary)
def test_day_night(): with open('tests/day-night.json', 'r') as f: day_night_results = json.load(f) year = 2018 months = range(3, 13, 3) hours = range(24) minute = 0 day = 21 locations = { "north_pole": (90, 0), "south_pole": (-90, 0), "greenwich": (51.48, 0) } for location, coords in locations.items(): for month in months: for hour in hours: time = ephem.Date((year, month, day, hour, minute)) dark = Daytime(coords).dark_outside(time) assert dark == day_night_results[location + " " + str( time )], "expected it to be {} on {} at {} (coords:{}), got opposite.".format( "dark" if dark else "not dark", time, location, coords)
def __init__(self, location, debug=False): self._debug = debug self._lifxlan = LifxLAN() self._daytime = Daytime(location)
def cmd0(): logger = logging.getLogger('cmd0') self.output0.append(Daytime.daytime()) logger.info(self.output0[-1].strftime('%T.%f'))