def test_convert_float_to_nice_number_it(self): for number, number_str in NUMBERS_FIXTURE_IT.items(): self.assertEqual(nice_number(number, lang="it-it"), number_str, 'should format {} as {} and not {}'.format( number, number_str, nice_number( number, lang="it-it")))
def handle_windy(self, message): report = self.__initialize_report(message) when = extract_datetime(message.data.get('utterance'))[0] if when == extract_datetime(" ")[0]: weather = self.owm.weather_at_place( report['full_location'], report['lat'], report['lon']).get_weather() else: # Get forecast for that day weather = self.__get_forecast( when, report['full_location'], report['lat'], report['lon']) if not weather or weather.get_wind() == 0: self.speak_dialog("do not know") return wind = weather.get_wind() speed = wind["speed"] # get speed if self.__get_speed_unit() == "mph": speed *= 2.23694 unit = self.__translate("miles per hour") else: unit = self.__translate("meters per second") speed = round(speed) # get direction, convert compass degrees to named direction if "deg" in wind: deg = wind["deg"] if deg < 22.5: dir = "N" elif deg < 67.5: dir = "NE" elif deg < 112.5: dir = "E" elif deg < 157.5: dir = "SE" elif deg < 202.5: dir = "S" elif deg < 247.5: dir = "SW" elif deg < 292.5: dir = "W" elif deg < 337.5: dir = "NW" else: dir = "N" dir = self.__translate(dir) value = self.__translate("wind.speed.dir", data={"dir": dir, "speed": nice_number(speed), "unit": unit}) else: value = self.__translate("wind.speed", data={"speed": nice_number(speed), "unit": unit}) self.__report_condition(self.__translate("winds"), value, when)
def test_unknown_language(self): """ An unknown / unhandled language should return the string representation of the input number. """ self.assertEqual( nice_number(5.5, lang='as-fd'), '5.5', 'should format 5.5 as 5.5 not {}'.format( nice_number(5.5, lang='as-df')))
def test_no_speech(self): self.assertEqual(nice_number(6.777, speech=False, lang="it"), '6 7/9', 'dovrebbe formattare 6.777 come 6 7/9 non {}'.format( nice_number(6.777, speech=False))) self.assertEqual(nice_number(6.0, speech=False, lang="it"), '6', 'dovrebbe formattare 6.0 come 6 non {}'.format( nice_number(6.0, speech=False)))
def test_no_speech(self): self.assertEqual( nice_number(6.777, speech=False, lang="it"), '6 7/9', 'dovrebbe formattare 6.777 come 6 7/9 non {}'.format( nice_number(6.777, speech=False))) self.assertEqual( nice_number(6.0, speech=False, lang="it"), '6', 'dovrebbe formattare 6.0 come 6 non {}'.format( nice_number(6.0, speech=False)))
def test_specify_denominator(self): self.assertEqual( nice_number(5.5, lang="hu-hu", denominators=[1, 2, 3]), '5 és fél', 'should format 5.5 as 5 és fél not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual( nice_number(2.333, lang="hu-hu", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="hu-hu", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual(nice_number(5.5, denominators=[1, 2, 3]), '5 and a half', 'should format 5.5 as 5 and a half not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, denominators=[1, 2]), '2.333', 'should format 2.333 as 2.333 not {}'.format( nice_number(2.333, denominators=[1, 2])))
def test_no_speech(self): self.assertEqual(nice_number(6.777, speech=False), '6 7/9', 'should format 6.777 as 6 7/9 not {}'.format( nice_number(6.777, speech=False))) self.assertEqual(nice_number(6.0, speech=False), '6', 'should format 6.0 as 6 not {}'.format( nice_number(6.0, speech=False)))
def test_specify_denominator_es(self): self.assertEqual( nice_number(5.5, lang="es-es", denominators=[1, 2, 3]), '5 y medio', 'should format 5.5 as 5 y medio not {}'.format( nice_number(5.5, lang="es-es", denominators=[1, 2, 3]))) self.assertEqual( nice_number(2.333, lang="es-es", denominators=[1, 2]), '2,333', 'should format 2.333 as 2,333 not {}'.format( nice_number(2.333, lang="es-es", denominators=[1, 2])))
def test_specify_danominator(self): self.assertEqual( nice_number(5.5, lang="da-dk", denominators=[1, 2, 3]), '5 og 1 halv', 'should format 5.5 as 5 und ein halb not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual( nice_number(2.333, lang="da-dk", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="da-dk", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual(nice_number(5.5, lang="nl-nl", denominators=[1, 2, 3]), '5 en één half', 'should format 5.5 as 5 en één half not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, lang="nl-nl", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="nl-nl", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual( nice_number(5.5, lang="nl-nl", denominators=[1, 2, 3]), '5 en één half', 'should format 5.5 as 5 en één half not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual( nice_number(2.333, lang="nl-nl", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="nl-nl", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual(nice_number(5.5, lang="de-de", denominators=[1, 2, 3]), '5 und ein halb', 'should format 5.5 as 5 und ein halb not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, lang="de-de", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="de-de", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual(nice_number(5.5, lang="hu-hu", denominators=[1, 2, 3]), '5 és fél', 'should format 5.5 as 5 és fél not {}'.format( nice_number(5.5, denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, lang="hu-hu", denominators=[1, 2]), '2,333', 'should format 2,333 as 2,333 not {}'.format( nice_number(2.333, lang="hu-hu", denominators=[1, 2])))
def test_specify_denominator(self): self.assertEqual( nice_number(5.5, denominators=[1, 2, 3], lang="it"), '5 e un mezzo', 'dovrebbe dare 5.5 come 5 e un mezzo non {}'.format( nice_number(5.5, denominators=[1, 2, 3], lang="it"))) self.assertEqual( nice_number(2.333, denominators=[1, 2], lang="it"), '2.333', 'dovrebbe dare 2.333 come 2.333 non {}'.format( nice_number(2.333, denominators=[1, 2], lang="it")))
def test_specify_denominator(self): self.assertEqual(nice_number(5.5, denominators=[1, 2, 3], lang="it"), '5 e un mezzo', 'dovrebbe dare 5.5 come 5 e un mezzo non {}'.format( nice_number(5.5, denominators=[1, 2, 3], lang="it"))) self.assertEqual(nice_number(2.333, denominators=[1, 2], lang="it"), '2.333', 'dovrebbe dare 2.333 come 2.333 non {}'.format( nice_number(2.333, denominators=[1, 2], lang="it")))
def test_specify_denominator_fr(self): self.assertEqual(nice_number(5.5, lang="fr-fr", denominators=[1, 2, 3]), '5 et demi', 'should format 5.5 as 5 et demi not {}'.format( nice_number(5.5, lang="fr-fr", denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, lang="fr-fr", denominators=[1, 2]), '2,333', 'should format 2.333 as 2,333 not {}'.format( nice_number(2.333, lang="fr-fr", denominators=[1, 2])))
def test_specify_denominator_es(self): self.assertEqual(nice_number(5.5, lang="es-es", denominators=[1, 2, 3]), '5 y medio', 'should format 5.5 as 5 y medio not {}'.format( nice_number(5.5, lang="es-es", denominators=[1, 2, 3]))) self.assertEqual(nice_number(2.333, lang="es-es", denominators=[1, 2]), '2,333', 'should format 2.333 as 2,333 not {}'.format( nice_number(2.333, lang="es-es", denominators=[1, 2])))
def handle_heating_wiser_boost(self, message): LOGGER.info(message.data) my_room = message.data["wiserroom"].lower() myparams = "" try: mytemp = message.data["wisertemp"] except KeyError: mytemp = 2 else: mytemp = round(float(mytemp)*2)/2 myparams += ",{} deg ".format(str(mytemp)) try: mytime = int(message.data['wisertime']) except KeyError: mytime = 30 myparams += ",{} mins ".format(str(mytime)) logresponse = "" try: self.wh.refreshData() except ValueError as e: LOGGER.error(e) self.speak_dialog('heating.wiser.lostcomms') self._setup() else: wiserrooms = self.wh.getRooms() my_room = self.match_room(my_room, wiserrooms) # get the nearest matching room for room in wiserrooms: name = room.get("Name").lower() roomId = room.get("id") if my_room == self.my_house or name == my_room: if mytemp == 2: dtemp = float(room.get("CalculatedTemperature")/10 +2) settemp = dtemp else: settemp = mytemp #LOGGER.info("boost: id:{} {} {}".format(roomId,settemp,mytime)) try: self.wh.setRoomMode(roomId,"boost",settemp,mytime) except ValueError as e: LOGGER.error("boost: {}".format(e)) except AttributeError: self.speak_dialog('heating.wiser.lostcomms') self._setup() else: nice_settemp = nice_number(settemp, lang=None, speech=True, denominators=None) self.speak_dialog('heating.wiser.boost', {"wiserroom": name, "wisertemp": nice_settemp, "wisertime": int(mytime)}) logresponse += "{} ".format(name) logresponse += myparams logresponse = logresponse.replace('2 deg','+2 deg') LOGGER.info("boost: {}".format(logresponse)) if logresponse == "": self.speak_dialog('heating.wiser.unknown.room', { "wiserroom": my_room})
def _handle_sensor(self, message): entity = message.data["Entity"] self.log.debug("Entity: %s" % entity) ha_entity = self._find_entity(entity, ['sensor', 'switch']) if not ha_entity or not self._check_availability(ha_entity): return entity = ha_entity['id'] # IDEA: set context for 'read it out again' or similar # self.set_context('Entity', ha_entity['dev_name']) unit_measurement = self.ha.find_entity_attr(entity) sensor_unit = unit_measurement.get('unit_measure') or '' sensor_name = unit_measurement['name'] sensor_state = unit_measurement['state'] # extract unit for correct pronounciation # this is fully optional try: from quantulum3 import parser quantulumImport = True except ImportError: quantulumImport = False if quantulumImport and unit_measurement != '': quantity = parser.parse( (u'{} is {} {}'.format(sensor_name, sensor_state, sensor_unit))) if len(quantity) > 0: quantity = quantity[0] if (quantity.unit.name != "dimensionless" and (quantity.uncertainty is None or quantity.uncertainty <= 0.5)): sensor_unit = quantity.unit.name sensor_state = quantity.value try: value = float(sensor_state) sensor_state = nice_number(value, lang=self.language) except ValueError: pass self.speak_dialog('homeassistant.sensor', data={ "dev_name": sensor_name, "value": sensor_state, "unit": sensor_unit })
def test_no_speech_es(self): self.assertEqual( nice_number(6.777, lang="es-es", speech=False), '6 7/9', 'should format 6.777 as 6 7/9 not {}'.format( nice_number(6.777, lang="es-es", speech=False))) self.assertEqual( nice_number(6.0, lang="es-es", speech=False), '6', 'should format 6.0 as 6 not {}'.format( nice_number(6.0, lang="es-es", speech=False))) self.assertEqual( nice_number(1234567890, lang="es-es", speech=False), '1 234 567 890', 'should format 1234567890 as' '1 234 567 890 not {}'.format( nice_number(1234567890, lang="es-es", speech=False))) self.assertEqual( nice_number(12345.6789, lang="es-es", speech=False), '12 345,679', 'should format 12345.6789 as' '12 345,679 not {}'.format( nice_number(12345.6789, lang="es-es", speech=False)))
def test_no_speech_es(self): self.assertEqual(nice_number(6.777, lang="es-es", speech=False), '6 7/9', 'should format 6.777 as 6 7/9 not {}'.format( nice_number(6.777, lang="es-es", speech=False))) self.assertEqual(nice_number(6.0, lang="es-es", speech=False), '6', 'should format 6.0 as 6 not {}'.format( nice_number(6.0, lang="es-es", speech=False))) self.assertEqual(nice_number(1234567890, lang="es-es", speech=False), '1 234 567 890', 'should format 1234567890 as' '1 234 567 890 not {}'.format( nice_number(1234567890, lang="es-es", speech=False))) self.assertEqual(nice_number(12345.6789, lang="es-es", speech=False), '12 345,679', 'should format 12345.6789 as' '12 345,679 not {}'.format( nice_number(12345.6789, lang="es-es", speech=False)))
def handle_movie_information(self, message): """ Gets the short version and adds the TagLine for good measure. """ movie = message.data.get("movie") try: movieDetails = MOVIE.details(MOVIE.search(movie)[:1][0].id) self.speak_dialog( "movie.info.response", { "movie": movieDetails.title, "year": nice_date( datetime.strptime( movieDetails.release_date.replace("-", " "), "%Y %m %d")), "budget": nice_number(movieDetails.budget) }) self.speak(movieDetails.tagline) # If the title can not be found, it creates an IndexError except IndexError: self.speak_dialog("no.info", {"movie": movie})
def test_convert_float_to_nice_number(self): for number, number_str in numbers_fixture.items(): self.assertEqual(nice_number(number), number_str, 'should format {} as {} and not {}'.format( number, number_str, nice_number(number)))
def test_different_language(self): self.assertEqual(nice_number(5.5, lang="es-us"), '5.5', 'should format 5.5 as 5.5 not {}'.format( nice_number(5.5, lang="es-us")))
def test_convert_float_to_nice_number_it(self): for number, number_str in NUMBERS_FIXTURE_IT.items(): self.assertEqual( nice_number(number, lang='it'), number_str, 'dovrebbe formattare {} come {} e none {}'.format( number, number_str, nice_number(number, lang="it")))
def test_convert_float_to_nice_number_it(self): for number, number_str in NUMBERS_FIXTURE_IT.items(): self.assertEqual(nice_number(number, lang='it'), number_str, 'dovrebbe formattare {} come {} e none {}'.format( number, number_str, nice_number( number, lang="it")))
def getMovieRuntime(self): return nice_number(self.movieDetails.runtime)
def test_convert_float_to_nice_number(self): for number, number_str in NUMBERS_FIXTURE_EN.items(): self.assertEqual(nice_number(number), number_str, 'should format {} as {} and not {}'.format( number, number_str, nice_number(number)))