Skip to content

Commit c12c57b

Browse files
authored
fix(managers/pep621): correctly parse extras with whitespace (#33378)
1 parent 73b842f commit c12c57b

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

lib/modules/manager/pep621/utils.spec.ts

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,18 @@ import { parsePEP508 } from './utils';
44
describe('modules/manager/pep621/utils', () => {
55
describe('parsePEP508()', () => {
66
it.each`
7-
value | success | packageName | currentValue | extras | marker
8-
${''} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
9-
${undefined} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
10-
${null} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
11-
${'blinker'} | ${true} | ${'blinker'} | ${undefined} | ${undefined} | ${undefined}
12-
${'packaging==20.0.0'} | ${true} | ${'packaging'} | ${'==20.0.0'} | ${undefined} | ${undefined}
13-
${'packaging>=20.9,!=22.0'} | ${true} | ${'packaging'} | ${'>=20.9,!=22.0'} | ${undefined} | ${undefined}
14-
${'cachecontrol[filecache]>=0.12.11'} | ${true} | ${'cachecontrol'} | ${'>=0.12.11'} | ${['filecache']} | ${undefined}
15-
${'tomli>=1.1.0; python_version < "3.11"'} | ${true} | ${'tomli'} | ${'>=1.1.0'} | ${undefined} | ${'python_version < "3.11"'}
16-
${'typing-extensions; python_version < "3.8"'} | ${true} | ${'typing-extensions'} | ${undefined} | ${undefined} | ${'python_version < "3.8"'}
17-
${'typing-extensions[test-feature]; python_version < "3.8"'} | ${true} | ${'typing-extensions'} | ${undefined} | ${['test-feature']} | ${'python_version < "3.8"'}
7+
value | success | packageName | currentValue | extras | marker
8+
${''} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
9+
${undefined} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
10+
${null} | ${false} | ${undefined} | ${undefined} | ${undefined} | ${undefined}
11+
${'blinker'} | ${true} | ${'blinker'} | ${undefined} | ${undefined} | ${undefined}
12+
${'packaging==20.0.0'} | ${true} | ${'packaging'} | ${'==20.0.0'} | ${undefined} | ${undefined}
13+
${'packaging>=20.9,!=22.0'} | ${true} | ${'packaging'} | ${'>=20.9,!=22.0'} | ${undefined} | ${undefined}
14+
${'cachecontrol[filecache]>=0.12.11'} | ${true} | ${'cachecontrol'} | ${'>=0.12.11'} | ${['filecache']} | ${undefined}
15+
${'private-depB[extra1, extra2]~=2.4'} | ${true} | ${'private-depB'} | ${'~=2.4'} | ${['extra1', 'extra2']} | ${undefined}
16+
${'tomli>=1.1.0; python_version < "3.11"'} | ${true} | ${'tomli'} | ${'>=1.1.0'} | ${undefined} | ${'python_version < "3.11"'}
17+
${'typing-extensions; python_version < "3.8"'} | ${true} | ${'typing-extensions'} | ${undefined} | ${undefined} | ${'python_version < "3.8"'}
18+
${'typing-extensions[test-feature]; python_version < "3.8"'} | ${true} | ${'typing-extensions'} | ${undefined} | ${['test-feature']} | ${'python_version < "3.8"'}
1819
`(
1920
'(parse $value"',
2021
({ value, success, packageName, currentValue, extras, marker }) => {

lib/modules/manager/pep621/utils.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { PyProjectSchema } from './schema';
1010
import type { Pep508ParseResult, Pep621ManagerData } from './types';
1111

1212
const pep508Regex = regEx(
13-
/^(?<packageName>[A-Z0-9._-]+)\s*(\[(?<extras>[A-Z0-9,._-]+)\])?\s*(?<currentValue>[^;]+)?(;\s*(?<marker>.*))?/i,
13+
/^(?<packageName>[A-Z0-9._-]+)\s*(\[(?<extras>[A-Z0-9\s,._-]+)\])?\s*(?<currentValue>[^;]+)?(;\s*(?<marker>.*))?/i,
1414
);
1515

1616
export const depTypes = {
@@ -49,7 +49,8 @@ export function parsePEP508(
4949
result.marker = regExpExec.groups.marker;
5050
}
5151
if (is.nonEmptyString(regExpExec.groups.extras)) {
52-
result.extras = regExpExec.groups.extras.split(',');
52+
// trim to remove allowed whitespace between brackets
53+
result.extras = regExpExec.groups.extras.split(',').map((e) => e.trim());
5354
}
5455

5556
return result;

0 commit comments

Comments
 (0)