amarao (amarao_san) wrote,
amarao
amarao_san

мне больно

def check_path(path, control_point):
    '''
        check if path changes AS at the time of control_point
        AS path starts from '1'
        Returns:
            True if path validated (AS changed before or at control_point)
            False if path wasn't validated due to 'no AS information'
        raises NoASChange if AS wasn't changed at control_point
    '''
    start_AS = None
    next_AS = None
    for num, AS in enumerate(path, 1):
        if AS:
            if not start_AS:
                start_AS = AS
            else:
                if not next_AS or next_AS == start_AS:
                    next_AS = AS
        if num >= control_point:
            break

    if start_AS and next_AS:
        if start_AS == next_AS:
            raise NoASChange(
                "AS path wasn't changed in %s hops!" % control_point)
        else:
            return True
    return False


Я не могу придумать как написать аккуратнее. Тестами все кейсы прикрыл, пяток багов поймал, но всё равно не нравится.
Subscribe

Recent Posts from This Journal

  • мы их теряем!

    Make: 1976 Прямо сейчас выходят на пенсию люди, для которых make был новомодной технологией, которую притащили хипстеры.

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 14 comments

Recent Posts from This Journal

  • мы их теряем!

    Make: 1976 Прямо сейчас выходят на пенсию люди, для которых make был новомодной технологией, которую притащили хипстеры.

  • Админская мудрость

    Когда вывод strace на башовый скрипт становится понятнее самого скрипта, граница разумности давно пройдена.

  • Rules of internet

    Rule 34. There is porn of it. Rule 35. It's used to mine cryptocurrencies.