# -*- coding: utf-8 -*-
# Pretty ~ Useful ~ Python

from typing import Any
from typing import Callable
from typing import Iterable
from typing import List
from typing import Sized
from typing import Tuple
from typing import Union

from pupy._typing import Flint
from pupy._typing import Paths

def files_gen(dirpath: str = ..., abspath: bool = ...) -> Paths: ...
def dirs_gen(dirpath: str = ..., abspath: bool = ...) -> Paths: ...
def files_dirs_gen(dirpath: str = ..., abspath: bool = ...) -> Tuple[Paths, Paths]: ...
def walk_gen(dirpath: str = ..., abspath: bool = ...) -> Paths: ...
def exhaust(it: Iterable[Any]) -> None: ...
def chunks(it: Union[List[int], str], chunk_size: int) -> Iterable[Any]: ...
def is_permutation(
    a: Union[int, List[int], str], b: Union[int, List[int], str]
) -> bool: ...
def rotate(rlist: List[int], rn: int = ..., left_rotate: bool = ...) -> List[int]: ...
def rotations_gen(rlist: Sized) -> Iterable[Any]: ...
def digits_list(number: int) -> List[int]: ...
def int_from_digits(digits: Iterable[int]) -> int: ...
def iter_product(l: Iterable[int]) -> Flint: ...
def spliterable(
    iterable: Iterable[Any], funk: Callable[[Any], bool]
) -> Tuple[Iterable[Any], Iterable[Any]]: ...
