Moving some files around for clarity

This commit is contained in:
Swen Kooij
2020-02-29 16:13:18 +02:00
parent ea619a1f62
commit beede0f112
10 changed files with 140 additions and 100 deletions
+30
View File
@@ -0,0 +1,30 @@
from .entry import (
RequirementsEditableEntry,
RequirementsEntry,
RequirementsEntrySource,
RequirementsPackageEntry,
RequirementsRecursiveEntry,
RequirementsVCSPackageEntry,
)
from .list_packages_from_files import list_packages_from_files
from .parse_requirements_list import (
RequirementsEntryParseError,
parse_requirements_list,
)
from .parse_requirements_txt import parse_requirements_txt
from .parse_setup_py import parse_setup_py
__all__ = [
"parse_setup_py",
"parse_requirements_txt",
"parse_requirements_list",
"list_packages_from_files",
"RequirementsEntryParseError",
"RequirementsEditableEntry",
"RequirementsEntry",
"RequirementsRecursiveEntry",
"RequirementsVCSPackageEntry",
"RequirementsEntrySource",
"RequirementsPackageEntry",
"parse_requirements",
]
+63
View File
@@ -0,0 +1,63 @@
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}"
@@ -1,19 +1,19 @@
from typing import Generator, List
from .identify_package_list_file_type import (
PackageListFileType,
identify_package_list_file_type,
)
from .requirements import (
from .entry import (
RequirementsEditableEntry,
RequirementsEntry,
RequirementsRecursiveEntry,
)
from .requirements_txt_parser import parse_requirements_txt
from .setup_py_parser import parse_setup_py
from .identify_package_list_file_type import (
PackageListFileType,
identify_package_list_file_type,
)
from .parse_requirements_txt import parse_requirements_txt
from .parse_setup_py import parse_setup_py
def list(
def list_packages_from_files(
file_paths: List[str],
recurse_recursive: bool = False,
recurse_editable: bool = False,
@@ -1,74 +1,23 @@
import os
import re
from dataclasses import dataclass
from typing import Generator, List, Optional
from .entry import (
RequirementsEditableEntry,
RequirementsEntry,
RequirementsEntrySource,
RequirementsPackageEntry,
RequirementsRecursiveEntry,
RequirementsVCSPackageEntry,
)
class RequirementsEntryParseError(RuntimeError):
pass
@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}"
def parse_requirements(
def parse_requirements_list(
source: Optional[RequirementsEntrySource], lines: List[str]
) -> Generator[RequirementsEntry, None, None]:
@@ -2,11 +2,8 @@ import os
from typing import Generator
from .requirements import (
RequirementsEntry,
RequirementsEntrySource,
parse_requirements,
)
from .entry import RequirementsEntry, RequirementsEntrySource
from .parse_requirements_list import parse_requirements_list
def parse_requirements_txt(
@@ -17,5 +14,5 @@ def parse_requirements_txt(
)
with open(file_path, "r") as fp:
for requirement in parse_requirements(source, fp.readlines()):
for requirement in parse_requirements_list(source, fp.readlines()):
yield requirement
@@ -4,11 +4,8 @@ from typing import Generator
import setuptools
from .requirements import (
RequirementsEntry,
RequirementsEntrySource,
parse_requirements,
)
from .entry import RequirementsEntry, RequirementsEntrySource
from .parse_requirements_list import parse_requirements_list
def parse_setup_py(file_path: str) -> Generator[RequirementsEntry, None, None]:
@@ -32,5 +29,5 @@ def parse_setup_py(file_path: str) -> Generator[RequirementsEntry, None, None]:
for _, extra_requirements in extras_require.items():
requirements.extend(extra_requirements)
for requirement in parse_requirements(source, requirements):
for requirement in parse_requirements_list(source, requirements):
yield requirement
@@ -1,17 +1,17 @@
import os
from pippackagelist.list import list as list_packages
from pippackagelist.list_packages_from_files import list_packages_from_files
test_case_1_path = os.path.join(
os.path.dirname(__file__), "./test-cases/list-1"
)
def test_list_from_requirements():
def test_list_packages_from_files_from_requirements():
path = os.path.join(test_case_1_path, "requirements.txt")
raw_requirements = [
str(requirement) for requirement in list_packages([path])
str(requirement) for requirement in list_packages_from_files([path])
]
assert raw_requirements == [
"-e tests/test-cases/list-1/package-1",
@@ -21,12 +21,14 @@ def test_list_from_requirements():
]
def test_list_from_requirements_recurse_recursive():
def test_list_packages_from_files_from_requirements_recurse_recursive():
path = os.path.join(test_case_1_path, "requirements.txt")
raw_requirements = [
str(requirement)
for requirement in list_packages([path], recurse_recursive=True)
for requirement in list_packages_from_files(
[path], recurse_recursive=True
)
]
assert raw_requirements == [
@@ -38,12 +40,14 @@ def test_list_from_requirements_recurse_recursive():
]
def test_list_from_requirements_recurse_editable():
def test_list_packages_from_files_from_requirements_recurse_editable():
path = os.path.join(test_case_1_path, "requirements.txt")
raw_requirements = [
str(requirement)
for requirement in list_packages([path], recurse_editable=True)
for requirement in list_packages_from_files(
[path], recurse_editable=True
)
]
assert raw_requirements == [
+8 -8
View File
@@ -2,14 +2,14 @@ import os
import pytest
from pippackagelist.requirements import (
from pippackagelist.entry import (
RequirementsEditableEntry,
RequirementsEntrySource,
RequirementsPackageEntry,
RequirementsRecursiveEntry,
RequirementsVCSPackageEntry,
parse_requirements,
)
from pippackagelist.parse_requirements_list import parse_requirements_list
source = RequirementsEntrySource(
path="requirements.txt", line=None, line_number=None,
@@ -20,7 +20,7 @@ source = RequirementsEntrySource(
def test_parse_requirements_recursive_entry(path):
line = "-r %s" % path
requirements = list(parse_requirements(source, [line]))
requirements = list(parse_requirements_list(source, [line]))
assert len(requirements) == 1
assert isinstance(requirements[0], RequirementsRecursiveEntry)
@@ -36,7 +36,7 @@ def test_parse_requirements_recursive_entry(path):
def test_parse_requirements_editable_entry(path):
line = "-e %s" % path
requirements = list(parse_requirements(source, [line]))
requirements = list(parse_requirements_list(source, [line]))
assert len(requirements) == 1
assert isinstance(requirements[0], RequirementsEditableEntry)
@@ -58,7 +58,7 @@ def test_parse_requirements_vcs_package_entry(vcs, uri, tag):
if tag:
line += f"#{tag}"
requirements = list(parse_requirements(source, [line]))
requirements = list(parse_requirements_list(source, [line]))
assert len(requirements) == 1
assert isinstance(requirements[0], RequirementsVCSPackageEntry)
@@ -74,7 +74,7 @@ def test_parse_requirements_vcs_package_entry(vcs, uri, tag):
def test_parse_requirements_package_entry(operator):
line = "django%s1.0" % operator
requirements = list(parse_requirements(source, [line]))
requirements = list(parse_requirements_list(source, [line]))
assert len(requirements) == 1
assert isinstance(requirements[0], RequirementsPackageEntry)
@@ -95,7 +95,7 @@ def test_parse_requirements_skips_comments_and_blank_lines():
" # another comment",
]
requirements = list(parse_requirements(source, lines))
requirements = list(parse_requirements_list(source, lines))
assert len(requirements) == 1
assert isinstance(requirements[0], RequirementsPackageEntry)
@@ -108,7 +108,7 @@ def test_parse_requirements_ignores_leading_and_trailing_whitespace():
" git+https://github.com/test/test#tag",
]
requirements = list(parse_requirements(source, lines))
requirements = list(parse_requirements_list(source, lines))
assert len(requirements) == 4
assert isinstance(requirements[2], RequirementsEditableEntry)
+2 -2
View File
@@ -1,11 +1,11 @@
import os
from pippackagelist.requirements import (
from pippackagelist.entry import (
RequirementsEditableEntry,
RequirementsPackageEntry,
RequirementsRecursiveEntry,
)
from pippackagelist.requirements_txt_parser import parse_requirements_txt
from pippackagelist.parse_requirements_txt import parse_requirements_txt
requirements_txt_path = os.path.join(
os.path.dirname(__file__), "./test-cases/requirements.txt"
+2 -2
View File
@@ -1,11 +1,11 @@
import os
from pippackagelist.requirements import (
from pippackagelist.entry import (
RequirementsEditableEntry,
RequirementsPackageEntry,
RequirementsRecursiveEntry,
)
from pippackagelist.setup_py_parser import parse_setup_py
from pippackagelist.parse_setup_py import parse_setup_py
setup_py_path = os.path.join(os.path.dirname(__file__), "./test-cases/setup.py")
setup_py_with_extras_path = os.path.join(