Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions pkg/dependency/parser/python/pip/parse.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,12 @@ func (p *Parser) splitLine(line string) []string {
}
for _, sep := range separators {
if result := strings.Split(line, sep); len(result) == 2 {
// Trim the end-of-range suffix. For example, ">=2.31.0,<3" becomes ">=2.31.0".
// In version ranges, only `,` can be used as a separator:
// "The comma (“,”) is equivalent to a logical AND operator" (see PEP 440).
result[1], _, _ = strings.Cut(result[1], ",")
return result
return []string{result[0], version}
}
}
return nil
Expand Down
5 changes: 5 additions & 0 deletions pkg/dependency/parser/python/pip/parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,11 @@ func TestParse(t *testing.T) {
useMinVersion: true,
want: requirementsCompatibleVersions,
},
{
name: "comma-separated version ranges",
filePath: "testdata/requirements_comma_ranges.txt",
want: requirementsCommaRanges,
},
}

for _, tt := range tests {
Expand Down
13 changes: 13 additions & 0 deletions pkg/dependency/parser/python/pip/parse_testcase.go
Original file line number Diff line number Diff line change
Expand Up @@ -301,4 +301,17 @@ var (
},
},
}

requirementsCommaRanges = []ftypes.Package{
{
Name: "requests",
Version: "2.31.0",
Locations: []ftypes.Location{
{
StartLine: 1,
EndLine: 1,
},
},
},
}
)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
requests>=2.31.0,<3
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ Mopidy-Dirble ~= 1.1 # Compatible release. Same as >= 1.1, == 1.*
Django == 2.3.4
SomeProject ==5.4 ; python_version < '3.8'
numpyNew; sys_platform == 'win32'
numpy >= 3.4.1; sys_platform == 'win32'
numpy >= 3.4.1; sys_platform == 'win32'
requests>=2.31.0,<3 # Minimum version 2.31.0. Trim the end-of-range suffix.