コード例 #1
0
    def read_obd(self):
        self.parameters.rpm = self.connection.query(obd.commands.RPM)
        self.parameters.fuel_level = self.connection.query(obd.commands.FUEL_LEVEL)
        self.parameters.ethanol = self.connection.query(obd.commands.ETHANOL_PERCENT)

        self.parameters.fuel_rate = self.connection.query(obd.commands.FUEL_RATE)
        if self.parameters.fuel_rate.value is not None:
            self.parameters.fuel_rate.unit = 'L/h'

        self.parameters.speed = self.connection.query(obd.commands.SPEED)
        if self.parameters.speed.value is not None:
            self.parameters.speed.unit = 'Km/h'

        self.parameters.maf = self.connection.query(obd.commands.MAF)
        if self.parameters.maf.value is not None:
            self.parameters.maf.unit = 'g/s'

        if util.is_float(self.parameters.speed.value) and util.is_float(self.parameters.maf.value):
            self.parameters.autonomy.value = 3.103 * self.parameters.speed.value / self.parameters.maf.value
            self.parameters.autonomy.unit = 'Km/L'
        else:
            self.parameters.autonomy.value = None
            self.parameters.autonomy.unit = ''

        if util.is_float(self.parameters.maf.value):
            self.parameters.consumption.value = 0.322 * self.parameters.maf.value
            self.parameters.consumption.unit = 'L/h'
        else:
            self.parameters.consumption.value = None
            self.parameters.consumption.unit = ''
コード例 #2
0
    def draw_interface(self):
        data_list = [('Velocidade:', self.parameters.speed),
                     ('RPM:', self.parameters.rpm),
                     ('MAF:', self.parameters.maf),
                     ('Autonomia:', self.parameters.autonomy),
                     ('Consumo:', self.parameters.consumption),
                     ('Pressure:', self.parameters.pressure)]
        self.screen.fill(black)
        self.xpos = 0
        count = 0
        for data in data_list:
            if count % 2:
                self.ypos += (rec_height + space)
            else:
                self.ypos = space
                self.xpos += space

            self.add_rec(self.xpos, self.ypos)

            if util.is_float(data[1].value):
                data[1].value = round(data[1].value, 2)

            self.add_text(str(data[0]), self.xpos + 10, self.ypos + 10, self.LABEL)
            self.add_text(data[1].__str__(), self.xpos + 10, self.ypos + (rec_height / 2 - 10), self.PARAMETER)

            if count % 2:
                self.xpos += rec_width
            count += 1
コード例 #3
0
ファイル: test_util.py プロジェクト: joshleejosh/melodomatic
 def test_is_float(self):
     self.assertTrue(util.is_float(0))
     self.assertTrue(util.is_float(1))
     self.assertTrue(util.is_float(1.0))
     self.assertTrue(util.is_float('0'))
     self.assertTrue(util.is_float('1'))
     self.assertTrue(util.is_float('+3464.1145'))
     self.assertTrue(util.is_float('-97302.14122'))
     self.assertTrue(util.is_float('-1.634E-2'))
コード例 #4
0
def parse_duration(duration):
    if duration is None:
        return None

    if util.is_int(duration):
        return max(int(duration) * 60,
                   1)

    find_duration = re.search('PT(\d+)M([\w.,]+)S', duration)
    if find_duration is not None:
        if util.is_float(find_duration.group(2)):
            return max(int(find_duration.group(1)) * 60 +
                       float(find_duration.group(2)) * 1,
                       1)

    find_duration = re.search('PT(\d+)M', duration)
    if find_duration is not None:
        return max(int(find_duration.group(1)) * 60,
                   1)

    find_duration = re.search('PT(\d+)H(\d+)M', duration)
    if find_duration is not None:
        return max(int(find_duration.group(1)) * 3600 +
                   int(find_duration.group(2)) * 60,
                   1)

    find_duration = re.search('PT([\w.,]+)S', duration)
    if find_duration is not None:
        if util.is_float(find_duration.group(1)):
            return max(float(find_duration.group(1)) * 1,
                       1)

    find_duration = re.search('(\d+):(\d+):(\d+)', duration)
    if find_duration is not None:
        return max(int(find_duration.group(1)) * 86400 +
                   int(find_duration.group(2)) * 3600 +
                   int(find_duration.group(3)) * 60,
                   1)

    find_duration = re.search('(\d+):(\d+)', duration)
    if find_duration is not None:
        return max(int(find_duration.group(1)) * 3600 +
                   int(find_duration.group(2)) * 60,
                   1)

    return None
コード例 #5
0
ファイル: logs.py プロジェクト: LennonFlores/bridgy
    def get(self):
        """URL parameters:
      start_time: float, seconds since the epoch
      key: string that should appear in the first app log
    """
        start_time = util.get_required_param(self, 'start_time')
        if not util.is_float(start_time):
            self.abort(400,
                       "Couldn't convert start_time to float: %r" % start_time)
        start_time = float(start_time)

        key = util.get_required_param(self, 'key')
        if not util.is_base64(key):
            self.abort(400, 'key is not base64: %r' % key)
        key = urllib.unquote(key)

        # the propagate task logs the poll task's URL, which includes the source
        # entity key as a query param. exclude that with this heuristic.
        key_re = re.compile('[^=]' + key)

        self.response.headers['Content-Type'] = 'text/html; charset=utf-8'

        offset = None
        for log in logservice.fetch(start_time=start_time,
                                    end_time=start_time + 120,
                                    offset=offset,
                                    include_app_logs=True,
                                    version_ids=['2', '3', '4', '5', '6',
                                                 '7']):
            first_lines = '\n'.join([
                line.message.decode('utf-8')
                for line in log.app_logs[:min(10, len(log.app_logs))]
            ])
            if log.app_logs and key_re.search(first_lines):
                # found it! render and return
                self.response.out.write("""\
<html>
<body style="font-family: monospace; white-space: pre">
""")
                self.response.out.write(sanitize(log.combined))
                self.response.out.write('<br /><br />')
                for a in log.app_logs:
                    msg = a.message.decode('utf-8')
                    # don't sanitize poll task URLs since they have a key= query param
                    msg = linkify_datastore_keys(
                        util.linkify(
                            cgi.escape(msg if msg.startswith(
                                'Created by this poll:') else sanitize(msg))))
                    self.response.out.write(
                        '%s %s %s<br />' %
                        (datetime.datetime.utcfromtimestamp(a.time),
                         LEVELS[a.level], msg.replace('\n', '<br />')))
                self.response.out.write('</body>\n</html>')
                return

            offset = log.offset

        self.response.out.write('No log found!')
コード例 #6
0
ファイル: model.py プロジェクト: Mimer29or40/PyEngine
 def from_array(cls, name, array):
     texture = cls(name)
     
     if len(array.shape) == 2:
         arr = np.uint8((array * 255) if util.is_float(array) else array)
         color = np.zeros((*arr.shape, 3), dtype = np.uint8)
         color[:,:,0] = color[:,:,1] = color[:,:,2] = arr
     elif len(array.shape) == 3:
         arr = np.uint8((array * 255) if util.is_float(array) else array)
         color = arr
     else:
         raise Exception('Array is wrong shape', array.shape)
     
     filler = np.ones((*color.shape[:2], 1), dtype = np.uint8) * 255
     while color.shape[2] < 4:
         color = np.concatenate((color, filler), axis = -1)
     
     texture.data = color
     
     return texture
コード例 #7
0
 def read_pressure(self):
     x = self.ser.readline().strip()
     if util.is_float(x):
         x = float(x) * 10 / 1023
         x = round(x, 2)
         self.parameters.pressure.value = x
         self.parameters.pressure.unit = 'kPa'
     else:
         self.parameters.pressure.value = None
         self.parameters.pressure.unit = ''
     print self.parameters.pressure.__str__()
コード例 #8
0
  def get(self):
    """URL parameters:
      start_time: float, seconds since the epoch
      key: string that should appear in the first app log
    """
    start_time = util.get_required_param(self, 'start_time')
    if not util.is_float(start_time):
      self.abort(400, "Couldn't convert start_time to float: %r" % start_time)
    start_time = float(start_time)

    key = util.get_required_param(self, 'key')
    if not util.is_base64(key):
      self.abort(400, 'key is not base64: %r' % key)
    key = urllib.unquote(key)

    # the propagate task logs the poll task's URL, which includes the source
    # entity key as a query param. exclude that with this heuristic.
    key_re = re.compile('[^=]' + key)

    self.response.headers['Content-Type'] = 'text/html; charset=utf-8'

    offset = None
    for log in logservice.fetch(start_time=start_time, end_time=start_time + 120,
                                offset=offset, include_app_logs=True,
                                version_ids=['2', '3', '4', '5', '6', '7']):
      first_lines = '\n'.join([line.message.decode('utf-8') for line in
                               log.app_logs[:min(10, len(log.app_logs))]])
      if log.app_logs and key_re.search(first_lines):
        # found it! render and return
        self.response.out.write("""\
<html>
<body style="font-family: monospace; white-space: pre">
""")
        self.response.out.write(sanitize(log.combined))
        self.response.out.write('<br /><br />')
        for a in log.app_logs:
          msg = a.message.decode('utf-8')
          # don't sanitize poll task URLs since they have a key= query param
          msg = linkify_datastore_keys(util.linkify(cgi.escape(
              msg if msg.startswith('Created by this poll:') else sanitize(msg))))
          self.response.out.write('%s %s %s<br />' %
              (datetime.datetime.utcfromtimestamp(a.time), LEVELS[a.level],
               msg.replace('\n', '<br />')))
        self.response.out.write('</body>\n</html>')
        return

      offset = log.offset

    self.response.out.write('No log found!')
コード例 #9
0
def make_table(race_no, race_info, table_results, table_awards, table_racecard,
               bet_info):
    table = table_results
    # -----------------
    # combine race info
    # -----------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].insert(0, "賽道")
            table[i].insert(0, "場地")
            table[i].insert(0, "分數範圍")
            table[i].insert(0, "長度")
            table[i].insert(0, "班次")
            table[i].insert(0, "場次")
            table[i].insert(0, "日期")
        else:
            tags = race_info["tag"].split(" - ")
            y, m, d = util.convert_date(bet_info["date"])
            # 賽道
            combined = ""
            if bet_info["place"] == "ST":
                combined += "田"
            else:
                combined += "谷"
            track = race_info["track"][5:]
            if track[0] == "草":
                combined += "草"
                combined += track.split("\"")[1]
            else:
                combined += "泥"
            table[i].insert(0, combined)
            # 場地
            condition = race_info["cond"][7:]
            if condition == "好地":
                table[i].insert(0, "好")
            elif condition == "好地至快地":
                table[i].insert(0, "好至快")
            elif condition == "好地至黏地":
                table[i].insert(0, "好至黏")
            elif condition == "濕慢地":
                table[i].insert(0, "濕慢")
            else:
                table[i].insert(0, condition)
            # 分數範圍
            if len(tags) > 2:
                table[i].insert(0, tags[2])
            else:
                table[i].insert(0, '')
            # 長度
            table[i].insert(0, tags[1])
            # 班次
            if tags[0][0] == "第":
                if len(tags[0]) == 3:
                    table[i].insert(0, tags[0][1:2])
                else:
                    table[i].insert(0, tags[0][1:2] + "*")
            elif tags[0][0] == "國":
                table[i].insert(0, tags[0][2:])
            elif tags[0][0] == "條":
                table[i].insert(0, "*")
            else:
                table[i].insert(0, tags[0])
            # 場次
            table[i].insert(0, race_no)
            # 日期
            table[i].insert(0, "{}/{}/{}".format(y, m, d))
    # ----------------
    # combine hot info
    # ----------------
    sort_arr = []
    for row in table:
        if util.is_float(row[-1]):
            sort_arr.append(float(row[-1]))
    list.sort(sort_arr)
    hot_flag = False
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("熱門")
        else:
            if util.is_float(row[-1]):
                if math.isclose(float(row[-1]), sort_arr[0],
                                rel_tol=1e-9) and not hot_flag:  # 1st hot
                    table[i].append("1st Hot")
                    hot_flag = True
                elif math.isclose(float(row[-1]), sort_arr[1],
                                  rel_tol=1e-9):  # 2nd hot
                    table[i].append("2nd Hot")
                else:
                    table[i].append("-")
            else:
                table[i].append("-")
    # ----------------
    # combine bet info
    # ----------------
    have_bet = False
    thead = table[0]
    for i, bet in enumerate(bet_info["bet"]):
        if bet["id"] == race_no:
            have_bet = True
            for j, row in enumerate(table):
                # append bet for this row
                horse_number = row[thead.index("馬號")]
                if j == 0:
                    table[j].append("投注")
                elif not util.is_int(horse_number):
                    table[j].append("-")
                elif int(horse_number) == bet["WP"]:
                    table[j].append("W P")
                    # see which WP according to number of Bigs
                    if len(bet["Big"]) > 1:
                        for k in range(len(bet["Big"])):
                            table[j][-1] += " Big{}(PQ)".format(k + 1)
                    elif len(bet["Big"]) != 0:
                        table[j][-1] += " Big(PQ)"
                elif int(horse_number) in bet["Big"]:
                    # see which Big it is
                    if len(bet["Big"]) != 1:
                        for k in range(len(bet["Big"])):
                            if int(horse_number) == bet["Big"][k]:
                                table[j].append("Big{}(PQ)".format(k + 1))
                    else:
                        table[j].append("Big(PQ)")
                else:
                    table[j].append("-")
    if not have_bet:
        for j, row in enumerate(table):
            if j == 0:
                table[j].append("投注")
            else:
                table[j].append("-")
    # ---------------------
    # combine racecard info
    # ---------------------
    thead = table[0]
    col_horse_no = thead.index("馬號")
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("皇牌")
            table[i].append("配備")
            table[i].append("馬齡")
            table[i].append("評分")
            table[i].append("評分+/-")
        else:
            # print(table_racecard[horse_number])
            if row[1] != '' and util.is_int(row[col_horse_no]):
                horse_number = int(row[col_horse_no])
                table[i].append(table_racecard[horse_number][-6])  # 優先參賽次序
                table[i].append(table_racecard[horse_number][-5])  # 配備
            else:
                table[i].append('-')
                table[i].append('-')

            horse_id = table[i][9].split('(')[1][:-1]
            table[i].append(get_age(link_horseinfo, horse_id))  # 馬齡
            if row[1] != '' and util.is_int(row[col_horse_no]):
                horse_number = int(row[col_horse_no])
                table[i].append(table_racecard[horse_number][10])  # 優先參賽次序
                table[i].append(table_racecard[horse_number][11])  # 配備
            else:
                table[i].append('-')
                table[i].append('-')
    # -------------------
    # combine place & ddy
    # -------------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("地點")
            table[i].append("度地儀")
        else:
            if bet_info["place"] == "ST":
                table[i].append("沙田")
            else:
                table[i].append("跑馬地")
            table[i].append(bet_info["ddy"])
    # ------------
    # combine odds
    # ------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("P賠率")
            table[i].append("P賠率2")
            table[i].append("P賠率3")
            table[i].append("Queue賠率")
            table[i].append("PQ賠率")
            table[i].append("PQ賠率2")
            table[i].append("PQ賠率3")
        else:
            p_awards = table_awards[2][1]
            q_awards = table_awards[3][1]
            pq_awards = table_awards[4][1]
            # P1/2/3
            for j in range(len(p_awards)):
                if p_awards[j][0] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(p_awards[j][1]))
                else:
                    table[i].append('')
            # Queue
            for j in range(len(q_awards)):
                horse_number = q_awards[j][0].split(',')
                if horse_number[0] == table[i][col_horse_no] or horse_number[
                        1] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(q_awards[j][1]))
                else:
                    table[i].append('')
            # Pos-Queue
            for j in range(len(pq_awards)):
                horse_number = pq_awards[j][0].split(',')
                if horse_number[0] == table[i][col_horse_no] or horse_number[
                        1] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(pq_awards[j][1]))
                else:
                    table[i].append('')
    return table
コード例 #10
0
ファイル: test_util.py プロジェクト: berquist/fragit-main
 def test_is_float(self):
     self.assertTrue( util.is_float(self.fone))
コード例 #11
0
ファイル: test_util.py プロジェクト: snarfed/webutil
 def test_is_float(self):
   for arg in 0, 1, -1, '0', '11', 1.0, 12345, 0.1, 3.14, '3.0':
     self.assertTrue(util.is_float(arg), `arg`)
   for arg in '3xyz', None, self:
     self.assertFalse(util.is_float(arg), `arg`)
コード例 #12
0
def make_table(race_no, race_info, table_results, table_awards, table_racecard, bet_info):
    table = table_results
    # -----------------
    # combine race info
    # -----------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].insert(0, "賽道")
            table[i].insert(0, "場地")
            table[i].insert(0, "分數範圍")
            table[i].insert(0, "長度")
            table[i].insert(0, "班次")
            table[i].insert(0, "場次")
            table[i].insert(0, "日期")
        else:
            tags = race_info["tag"].split(" - ")
            y, m, d = util.convert_date(bet_info["date"])
            table[i].insert(0, race_info["track"][5:])
            table[i].insert(0, race_info["cond"][7:])
            # 分數範圍 sometimes does not exist
            if len(tags) > 2:
                table[i].insert(0, tags[2])
            else:
                table[i].insert(0, '')
            table[i].insert(0, tags[1])
            table[i].insert(0, tags[0])
            table[i].insert(0, race_no)
            table[i].insert(0, "{}/{}/{}".format(y, m, d))
    # ----------------
    # combine hot info
    # ----------------
    sort_arr = []
    for row in table:
        if util.is_float(row[-1]):
            sort_arr.append(float(row[-1]))
    list.sort(sort_arr)
    hot_flag = False
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("熱門")
        else:
            if util.is_float(row[-1]):
                if math.isclose(float(row[-1]), sort_arr[0], rel_tol=1e-9) and not hot_flag: # 1st hot
                    table[i].append("1st Hot")
                    hot_flag = True
                elif math.isclose(float(row[-1]), sort_arr[1], rel_tol=1e-9): # 2nd hot
                    table[i].append("2nd Hot")
                else:
                    table[i].append("-")
            else:
                table[i].append("-")
    # ----------------
    # combine bet info
    # ----------------
    have_bet = False
    thead = table[0]
    for i, bet in enumerate(bet_info["bet"]):
        if bet["id"] == race_no:
            have_bet = True
            for j, row in enumerate(table):
                # append bet for this row
                horse_number = row[thead.index("馬號")]
                if j == 0:
                    table[j].append("投注")
                elif not util.is_int(horse_number):
                    table[j].append("-")
                elif int(horse_number) == bet["WP"]:
                    table[j].append("W P")
                    # see which WP according to number of Bigs
                    if len(bet["Big"]) > 1:
                        for k in range(len(bet["Big"])):
                            table[j][-1] += " Big{}(PQ)".format(k+1)
                    elif len(bet["Big"]) != 0:
                        table[j][-1] += " Big(PQ)"
                elif int(horse_number) in bet["Big"]:
                    # see which Big it is
                    if len(bet["Big"]) != 1:
                        for k in range(len(bet["Big"])):
                            if int(horse_number) == bet["Big"][k]:
                                table[j].append("Big{}(PQ)".format(k+1))
                    else:
                        table[j].append("Big(PQ)")
                else:
                    table[j].append("-")
    if not have_bet:
        for j, row in enumerate(table):
            if j == 0:
                table[j].append("投注")
            else:
                table[j].append("-")
    # ---------------------
    # combine racecard info
    # ---------------------
    thead = table[0]
    col_horse_no = thead.index("馬號")
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("皇牌")
            table[i].append("配備")
            table[i].append("操練")
        else:
            if row[1] != '' and util.is_int(row[col_horse_no]):
                horse_number = int(row[col_horse_no])
                table[i].append(table_racecard[horse_number][-6]) # 優先參賽次序
                table[i].append(table_racecard[horse_number][-5]) # 配備
            else:
                table[i].append('-')
                table[i].append('-')
            # TODO TODO TODO
            table[i].append('') # 操練
    # -------------------
    # combine place & ddy
    # -------------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("地點")
            table[i].append("度地儀")
        else:
            if bet_info["place"] == "ST":
                table[i].append("沙田")
            else:
                table[i].append("跑馬地")
            table[i].append(bet_info["ddy"])
    # ------------
    # combine odds
    # ------------
    for i, row in enumerate(table):
        if i == 0:
            table[i].append("P賠率")
            table[i].append("P賠率2")
            table[i].append("P賠率3")
            table[i].append("Queue賠率")
            table[i].append("PQ賠率")
            table[i].append("PQ賠率2")
            table[i].append("PQ賠率3")
        else:
            p_awards = table_awards[2][1]
            q_awards = table_awards[3][1]
            pq_awards = table_awards[4][1]
            # P1/2/3
            for j in range(len(p_awards)):
                if p_awards[j][0] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(p_awards[j][1]))
                else: table[i].append('')
            # Queue
            for j in range(len(q_awards)):
                horse_number = q_awards[j][0].split(',')
                if horse_number[0] == table[i][col_horse_no] or horse_number[1] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(q_awards[j][1]))
                else: table[i].append('')
            # Pos-Queue
            for j in range(len(pq_awards)):
                horse_number = pq_awards[j][0].split(',')
                if horse_number[0] == table[i][col_horse_no] or horse_number[1] == table[i][col_horse_no]:
                    table[i].append(util.str_to_float(pq_awards[j][1]))
                else: table[i].append('')
    return table