mirror of
https://github.com/wassname/pip-package-list.git
synced 2026-06-27 16:10:20 +08:00
64 lines
1.2 KiB
Python
64 lines
1.2 KiB
Python
import os
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
|
|
@dataclass
|
|
class RequirementsEntrySource:
|
|
path: str
|
|
line: Optional[str]
|
|
line_number: Optional[str]
|
|
|
|
|
|
@dataclass
|
|
class RequirementsEntry:
|
|
source: Optional[RequirementsEntrySource]
|
|
|
|
|
|
@dataclass
|
|
class RequirementsRecursiveEntry(RequirementsEntry):
|
|
original_path: str
|
|
absolute_path: str
|
|
|
|
def __str__(self) -> str:
|
|
path = os.path.relpath(self.absolute_path, os.getcwd())
|
|
return f"-r {path}"
|
|
|
|
|
|
@dataclass
|
|
class RequirementsEditableEntry(RequirementsEntry):
|
|
original_path: str
|
|
absolute_path: str
|
|
|
|
resolved_path: str
|
|
resolved_absolute_path: str
|
|
|
|
def __str__(self) -> str:
|
|
path = os.path.relpath(self.absolute_path, os.getcwd())
|
|
return f"-e {path}"
|
|
|
|
|
|
@dataclass
|
|
class RequirementsVCSPackageEntry(RequirementsEntry):
|
|
vcs: str
|
|
uri: str
|
|
tag: Optional[str]
|
|
|
|
def __str__(self) -> str:
|
|
result = f"{self.vcs}+{self.uri}"
|
|
if self.tag:
|
|
result += f"#{self.tag}"
|
|
|
|
return result
|
|
|
|
|
|
@dataclass
|
|
class RequirementsPackageEntry(RequirementsEntry):
|
|
name: str
|
|
operator: str
|
|
version: str
|
|
|
|
def __str__(self) -> str:
|
|
return f"{self.name}{self.operator}{self.version}"
|