Skip to content

Commit

Permalink
Find_Req_Files now returns at most one requirements file per dir (#186
Browse files Browse the repository at this point in the history
)

* `Find_Req_Files` now returns at most one requirements file per dir

- prioritizes based on the order of names in `DependencyCompiler.reqNames`

* added unittest that covers `Find_Req_Files` and related code in `DependencyCompiler.__init__`
  • Loading branch information
telamonian authored Sep 19, 2024
1 parent 3d9b73e commit 44cdcf1
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 12 deletions.
23 changes: 15 additions & 8 deletions comfy_cli/uv.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,21 +79,28 @@ class DependencyCompiler:
"""
).strip()

reqNames = {
reqNames = (
"requirements.txt",
"pyproject.toml",
"setup.cfg",
"setup.py",
}
)

@staticmethod
def Find_Req_Files(*ders: PathLike) -> list[Path]:
return [
file # fmt: skip
for der in ders
for file in Path(der).absolute().iterdir()
if file.name in DependencyCompiler.reqNames
]
reqFiles = []
for der in ders:
reqFound = False
for reqName in DependencyCompiler.reqNames:
for file in Path(der).absolute().iterdir():
if file.name == reqName:
reqFiles.append(file)
reqFound = True
break
if reqFound:
break

return reqFiles

@staticmethod
def Install_Build_Deps(executable: PathLike = sys.executable):
Expand Down
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file added tests/uv/mock_comfy/setup.cfg
Empty file.
Empty file added tests/uv/mock_comfy/setup.py
Empty file.
30 changes: 26 additions & 4 deletions tests/uv/test_uv.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
from comfy_cli.uv import DependencyCompiler

hereDir = Path(__file__).parent.resolve()
reqsDir = hereDir / "mock_requirements"
mockComfyDir = hereDir / "mock_comfy"
mockReqsDir = hereDir / "mock_requirements"

# set up a temp dir to write files to
testsDir = hereDir.parent.resolve()
Expand All @@ -27,19 +28,40 @@ def _mock_prompt_select(*args, **kwargs):
monkeypatch.setattr(ui, "prompt_select", _mock_prompt_select)


def test_find_req_files():
mockNodesDir = mockComfyDir / "custom_nodes"

knownReqFilesCore = [mockComfyDir / "pyproject.toml"]
knownReqFilesExt = sorted(
[
mockNodesDir / "x" / "requirements.txt",
mockNodesDir / "y" / "setup.cfg",
mockNodesDir / "z" / "setup.py",
]
)

depComp = DependencyCompiler(cwd=mockComfyDir)

testReqFilesCore = depComp.reqFilesCore
testReqFilesExt = sorted(depComp.reqFilesExt)

assert knownReqFilesCore == testReqFilesCore
assert knownReqFilesExt == testReqFilesExt


def test_compile(mock_prompt_select):
depComp = DependencyCompiler(
cwd=temp,
gpu=GPU_OPTION.AMD,
outDir=temp,
reqFilesCore=[reqsDir / "core_reqs.txt"],
reqFilesExt=[reqsDir / "x_reqs.txt", reqsDir / "y_reqs.txt"],
reqFilesCore=[mockReqsDir / "core_reqs.txt"],
reqFilesExt=[mockReqsDir / "x_reqs.txt", mockReqsDir / "y_reqs.txt"],
)

depComp.make_override()
depComp.compile_core_plus_ext()

with open(reqsDir / "requirements.compiled", "r") as known, open(temp / "requirements.compiled", "r") as test:
with open(mockReqsDir / "requirements.compiled", "r") as known, open(temp / "requirements.compiled", "r") as test:
# compare all non-commented lines in generated file vs reference file
knownLines, testLines = [
[line for line in known.readlines() if not line.strip().startswith("#")],
Expand Down

0 comments on commit 44cdcf1

Please sign in to comment.