Initial upload: Auto README Generator CLI v0.1.0
Some checks failed
CI / test (push) Has been cancelled
CI / build (push) Has been cancelled
CI / release (push) Has been cancelled

This commit is contained in:
2026-02-05 08:40:03 +00:00
parent 3ce214496f
commit a3fc5dbeb9

View File

@@ -0,0 +1,56 @@
"""Dependency parsers for the Auto README Generator."""
from abc import ABC, abstractmethod
from pathlib import Path
from typing import Optional, Protocol
from ..models import Dependency
class DependencyParser(Protocol):
"""Protocol for dependency parsers."""
def can_parse(self, path: Path) -> bool: ...
def parse(self, path: Path) -> list[Dependency]: ...
class BaseParser(ABC):
"""Abstract base class for dependency parsers."""
@abstractmethod
def can_parse(self, path: Path) -> bool:
"""Check if this parser can handle the given file."""
pass
@abstractmethod
def parse(self, path: Path) -> list[Dependency]:
"""Parse dependencies from the file."""
pass
def _normalize_version(self, version: Optional[str]) -> Optional[str]:
"""Normalize version string."""
if version is None:
return None
version = version.strip()
if version.startswith("^") or version.startswith("~"):
version = version[1:]
if version.startswith(">="):
version = version[2:]
return version if version else None
from .python_parser import PythonDependencyParser
from .javascript_parser import JavaScriptDependencyParser
from .go_parser import GoDependencyParser
from .rust_parser import RustDependencyParser
from .parser_factory import DependencyParserFactory
__all__ = [
"DependencyParser",
"BaseParser",
"PythonDependencyParser",
"JavaScriptDependencyParser",
"GoDependencyParser",
"RustDependencyParser",
"DependencyParserFactory",
]