def get_nearest_node_by_lat_long(self, lat, long):
     nodes = self.distance_service.get_all_nodes()
     nodes_distances = [
         {
             "node": node,
             "distance": l2distance([lat, long], [float(node.latitude), float(node.longitude)])
         } for node in nodes
     ]
     return reduce(self._min, nodes_distances)["node"]
def test_triangle_inequality(x, y, z):
    return l2distance(x, z) <= l2distance(x, y) + l2distance(y, z) or math.isclose(
        l2distance(x, z), l2distance(x, y) + l2distance(y, z)
    )
def test_l2distance_non_degenerate(x):
    return l2distance(x, x) == 0
def test_l2distance_symmetric(x, y):
    return l2distance(x, y) == l2distance(y, x)
def test_l2distance_non_negative(x, y):
    return l2distance(x, y) >= 0