# -*- coding: utf-8 -*-
# ~ Jesse K. Rubin ~ Pretty Useful Python

from typing import Any
from typing import Optional

def partitions_gen(numero: Any, min_p: int = ..., max_p: Optional[Any] = ...) -> None: ...
def rfactorial(n: Any): ...
def radians_2_degrees(rads: Any): ...
def degrees_2_radians(degs: Any): ...
def power_mod(number: Any, exponent: Any, mod: Any): ...
def divisors_gen(n: Any) -> None: ...
def gcd_it(a: Any, b: Any): ...
def gcd_r(a: Any, b: Any): ...
def reverse(n: Any): ...
def fib_r(n: Any): ...
def expo(d: Any, n: Any): ...
def pytriple_gen(max_c: Any) -> None: ...
def n_permutations_with_replacements(it: Any): ...
def disjoint(a: Any, b: Any): ...
def set_cmp(a: Any, b: Any): ...
def n_choose_r(n: Any, r: Any): ...

class Trigon:
    pt1: Any = ...
    pt2: Any = ...
    pt3: Any = ...
    def __init__(self, pt1: Any, pt2: Any, pt3: Any) -> None: ...
    @classmethod
    def from_points(cls, pts: Any): ...
    def __contains__(self, point: Any): ...
    def inner_triangles(self, point: Any): ...
    def is_perimeter_point(self, point: Any): ...
    def points(self): ...
    def contains_origin(self): ...
    def area(self): ...
    @staticmethod
    def area_from_points(pt1: Any, pt2: Any, pt3: Any): ...

class Vuple(tuple):
    def __new__(cls, *args: Any): ...
    def __gt__(self, other: Any): ...
    def __eq__(self, other: Any): ...
    def __add__(self, k: Any): ...
    def __iadd__(self, k: Any): ...
    def __sub__(self, k: Any): ...
    def __isub__(self, k: Any): ...
    def __mul__(self, k: Any): ...
    def __imul__(self, k: Any): ...
    def __truediv__(self, k: Any): ...
    def __itruediv__(self, k: Any): ...
    def __floordiv__(self, k: Any): ...
    def __ifloordiv__(self, k: Any): ...
    def normalize(self): ...
    @staticmethod
    def unit_vuple(voop: Any): ...
    def get_mag_sqrd(self): ...
    @staticmethod
    def mag_sqrd(voop: Any): ...
    def get_mag(self): ...
    @staticmethod
    def mag(voop: Any): ...
    @staticmethod
    def dot(a: Any, b: Any): ...
    @staticmethod
    def cross(v1: Any, v2: Any): ...
    @staticmethod
    def angle(v1: Any, v2: Any, radians: bool = ...): ...
    def is_disjoint(self, them: Any): ...
    def product(self): ...
