import os from src.models import CacheEntry EXTENSION_MAP: dict[str, str] = { ".py": "Python", ".pyx": "Python", ".pyi": "Python", ".js": "JavaScript", ".mjs": "JavaScript", ".cjs": "JavaScript", ".ts": "TypeScript", ".tsx": "TypeScript", ".jsx": "JavaScript", ".java": "Java", ".c": "C", ".h": "C", ".cpp": "C++", ".cc": "C++", ".cxx": "C++", ".hpp": "C++", ".hh": "C++", ".cs": "C#", ".go": "Go", ".rs": "Rust", ".rb": "Ruby", ".erb": "Ruby", ".php": "PHP", ".swift": "Swift", ".kt": "Kotlin", ".kts": "Kotlin", ".scala": "Scala", ".r": "R", ".R": "R", ".m": "Objective-C", ".mm": "Objective-C", ".pl": "Perl", ".pm": "Perl", ".lua": "Lua", ".sh": "Shell", ".bash": "Shell", ".zsh": "Shell", ".fish": "Shell", ".ps1": "PowerShell", ".html": "HTML", ".htm": "HTML", ".css": "CSS", ".scss": "SCSS", ".sass": "Sass", ".less": "Less", ".sql": "SQL", ".dart": "Dart", ".ex": "Elixir", ".exs": "Elixir", ".erl": "Erlang", ".hrl": "Erlang", ".hs": "Haskell", ".ml": "OCaml", ".mli": "OCaml", ".clj": "Clojure", ".cljs": "Clojure", ".cljc": "Clojure", ".vim": "Vim Script", ".el": "Emacs Lisp", ".yaml": "YAML", ".yml": "YAML", ".toml": "TOML", ".json": "JSON", ".xml": "XML", ".md": "Markdown", ".markdown": "Markdown", ".rst": "reStructuredText", ".tex": "TeX", ".sty": "TeX", ".ipynb": "Jupyter Notebook", ".vue": "Vue", ".svelte": "Svelte", ".zig": "Zig", ".nim": "Nim", ".jl": "Julia", ".tf": "HCL", ".hcl": "HCL", ".proto": "Protocol Buffers", ".graphql": "GraphQL", ".gql": "GraphQL", ".sol": "Solidity", ".v": "V", ".cr": "Crystal", ".f90": "Fortran", ".f95": "Fortran", ".f03": "Fortran", ".groovy": "Groovy", ".cmake": "CMake", ".makefile": "Makefile", ".dockerfile": "Dockerfile", ".nix": "Nix", } BINARY_EXTENSIONS: set[str] = { ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".ico", ".svg", ".webp", ".avif", ".mp3", ".mp4", ".wav", ".avi", ".mov", ".webm", ".flac", ".ogg", ".zip", ".tar", ".gz", ".bz2", ".xz", ".7z", ".rar", ".pdf", ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".exe", ".dll", ".so", ".dylib", ".o", ".a", ".lib", ".woff", ".woff2", ".ttf", ".otf", ".eot", ".pyc", ".pyo", ".class", ".jar", ".lock", ".min.js", ".min.css", ".map", ".DS_Store", ".gitkeep", ".db", ".sqlite", ".sqlite3", ".bin", ".dat", ".pak", ".wasm", } SKIP_DIRS: set[str] = { "node_modules", "vendor", ".git", "__pycache__", ".venv", "venv", "dist", "build", ".next", ".nuxt", "target", ".gradle", "Pods", ".terraform", } APP_TITLE: str = "# github-repo-stats" APP_SUBTITLE: str = "## show lines of code by language in a repo" GITHUB_URL: str = "https://github.com/sukiboo/github-repo-stats" GITHUB_TOKEN: str = os.environ.get("GITHUB_TOKEN", "") CACHE: dict[str, CacheEntry] = {} CACHE_TTL: int = 300 MAX_WORKERS: int = 20 PROGRESS_RENDER_INTERVAL: float = 0.1 STATS_RETRY_ATTEMPTS: int = 3 STATS_RETRY_DELAY: float = 1.5 FONT_FAMILY: str = "monospace" FONT_SIZE: str = "14px" # my terminal colors _ = { 0: "#333333", 1: "#ff4488", 2: "#44ff88", 3: "#ff8844", 4: "#44ffff", 5: "#8844ff", 6: "#00dddd", 7: "#cccccc", 8: "#555555", 9: "#ee66aa", 10: "#00aa88", 11: "#eeaa66", 12: "#66aaee", 13: "#aa66ee", 14: "#44ffff", 15: "#eeeeee", } BG_COLOR: str = "#300a24" C_MUTED: str = "#555555" C_TEXT: str = "#cccccc" C_LABEL: str = "#eeeeee" C_BAR: str = "#555555" C_LINK: str = "#00aa88" C_ACCENT: str = "#eeaa66" C_ERROR: str = "#ff4488" PROGRESS_WIDTH: int = 50 LANGUAGE_BAR_WIDTH: int = 50 MIN_LANGUAGE_SHARE: float = 0.005 HISTOGRAM_HEIGHT: int = 5