File tree Expand file tree Collapse file tree
src/usethis/_integrations/uv
tests/usethis/_integrations/uv Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -17,12 +17,16 @@ class Dependency(BaseModel):
1717 extras : frozenset [str ] = frozenset ()
1818
1919 def __str__ (self ) -> str :
20- extras = sorted (self .extras or set ())
21- return self .name + "" .join (f"[{ extra } ]" for extra in extras )
20+ return self .to_requirements_string ()
2221
2322 def __hash__ (self ) -> int :
2423 return hash ((self .__class__ .__name__ , self .name , self .extras ))
2524
25+ def to_requirements_string (self ) -> str :
26+ """Convert the dependency to a requirements string."""
27+ extras_str = f"[{ ',' .join (sorted (self .extras ))} ]" if self .extras else ""
28+ return f"{ self .name } { extras_str } "
29+
2630
2731def get_project_deps () -> list [Dependency ]:
2832 """Get all project dependencies.
Original file line number Diff line number Diff line change 2828from usethis ._test import change_cwd
2929
3030
31+ class TestDependency :
32+ class TestToRequirementsString :
33+ def test_no_extras (self ):
34+ dep = Dependency (name = "requests" )
35+ assert dep .to_requirements_string () == "requests"
36+
37+ def test_single_extra (self ):
38+ dep = Dependency (name = "requests" , extras = frozenset ({"security" }))
39+ assert dep .to_requirements_string () == "requests[security]"
40+
41+ def test_multiple_extras (self ):
42+ dep = Dependency (name = "requests" , extras = frozenset ({"security" , "socks" }))
43+ assert dep .to_requirements_string () == "requests[security,socks]"
44+
45+
3146class TestGetProjectDeps :
3247 def test_no_pyproject (self , tmp_path : Path ):
3348 # Arrange - No pyproject.toml file exists
You can’t perform that action at this time.
0 commit comments