from pathlib import Path
from typing import Tuple
from typing import List


def listdir_grouped(root: Path, ignore_folders=[], include_hidden=False) -> Tuple[List, List]:
    """Dizindeki dosya ve dizinleri sıralı olarak listeler

    Arguments:
        root {Path} -- Listenelecek dizin

    Keyword Arguments:
        ignore_folders {list} -- Atlanılacak yollar (default: {[]})
        include_hidden {bool} -- Gizli dosyaları dahil etme (default: {False})

    Returns:
        tuple -- dizin, dosya listesi

    Examples:
        >>> dirs, files = listdir_grouped(".")
    """
    if isinstance(root, str):
        root = Path(root)

    paths = [x for x in root.iterdir()]

    dirs, files = [], []
    for path in paths:
        condition = not include_hidden and path.name.startswith('.')
        condition = condition and path.name not in ignore_folders
        condition = not condition
        if condition:
            dirs.append(path) if path.is_dir() else files.append(path)

    dirs.sort()
    files.sort()

    return dirs, files