Files
pip-package-list/pippackagelist/entry.py
T
2020-02-29 16:13:18 +02:00

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}"