Классификация отрезков

В рамках этого испытания вы реализуете небольшой набор функций, работающих с отрезками прямых на двухмерной плоскости. Отрезок в нашем случае будет кодироваться в виде пары пар и выглядеть как-то так: ((x1, y1), (x2, y2)) (вложенные пары — это концы отрезка).

Вам нужно реализовать четыре функции:
is_degenerated должна возвращать истину, если отрезок вырожден в точку (начало и конец совпадают);
is_vertical должна возвращать "истину", если отрезок — вертикальный;
is_horizontal должна возвращать "истину", если отрезок — горизонтальный;
is_inclined должна возвращать "истину", если отрезок — наклонный (не вертикальный и не горизонтальный).

Использование этих функций может выглядеть так:
>>> line1 = (0, 10), (100, 130)
>>> is_vertical(line1)
False
>>> is_horizontal(line1)
False
>>> is_degenerated(line1)
False
>>> is_inclined(line1)
True
>>> line2 = (42, 1), (42, 2)
>>> is_vertical(line2)
True
>>> line3 = (100, 50), (200, 50)
>>> is_horizontal(line3)
True
def is_degenerated(coordinates:tuple) -> bool:
    point_1 = coordinates[0]
    point_2 = coordinates[1]
    return True if point_1[0]== point_2[0] and point_1[1] == point_2[1] else False

def is_vertical (coordinates:tuple) -> bool:
    point_1 = coordinates[0]
    point_2 = coordinates[1]
    return True if point_1[0] != point_2[0] and point_1[1] == point_2[1] else False

def is_horizontal(coordinates:tuple) -> bool:
    point_1 = coordinates[0]
    point_2 = coordinates[1]
    return True if point_1[0] == point_2[0] and point_1[1] != point_2[1] else False

def is_inclined(coordinates:tuple) -> bool:
    point_1 = coordinates[0]
    point_2 = coordinates[1]
    return True if point_1[0] != point_2[0] and point_1[1] != point_2[1] else False

print( is_degenerated( ((1,1),(1,1)) ) )