Skip to content
Closed
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,28 @@ public Set<String> parseRootPackages(File pyprojectToml, PoetryOptions options)
throw new RuntimeException("Unable to read pyproject.toml file");
}

for (String key : parseResult.dottedKeySet(true)) {
processKeyForRootPackages(parseResult, options, result, key);
// main group (always included)
if (parseResult.isTable(MAIN_DEPENDENCY_GROUP_KEY)) {
addAllPackageNamesToSet(result, parseResult.getTable(MAIN_DEPENDENCY_GROUP_KEY));
}

// legacy dev group (Poetry 1.0–1.2)
if (parseResult.isTable(LEGACY_DEV_DEPENDENCY_GROUP_KEY)) {
if (!options.getExcludedGroups().contains(DEFAULT_DEV_GROUP_NAME)) {
addAllPackageNamesToSet(result, parseResult.getTable(LEGACY_DEV_DEPENDENCY_GROUP_KEY));
}
}

TomlTable groupsTable = parseResult.getTable("tool.poetry.group");
if (groupsTable != null) {
for (String groupName : groupsTable.keySet()) {
if (!options.getExcludedGroups().contains(groupName)) {
String depKey = DEPENDENCY_GROUP_KEY_PREFIX + groupName + DEPENDENCY_GROUP_KEY_SUFFIX;
if (parseResult.isTable(depKey)) {
addAllPackageNamesToSet(result, parseResult.getTable(depKey));
}
}
}
}

// Poetry 2.x support: Parse dependencies from [project] section (PEP 621 compliant)
Expand All @@ -95,28 +115,6 @@ private TomlParseResult memoizedTomlParseResult(File tomlFile) throws IOExceptio
return fileParseResults.get(tomlFile);
}

private void processKeyForRootPackages(TomlParseResult parseResult, PoetryOptions options, Set<String> result, String key) {
if (!parseResult.isTable(key)) {
return;
}

TomlTable table = parseResult.getTable(key);

if (key.equals(MAIN_DEPENDENCY_GROUP_KEY)) {
addAllPackageNamesToSet(result, table);
} else if (key.equals(LEGACY_DEV_DEPENDENCY_GROUP_KEY)) { // in Poetry 1.0 to 1.2 this was the way of specifying dev dependencies
if (!options.getExcludedGroups().contains(DEFAULT_DEV_GROUP_NAME)) {
addAllPackageNamesToSet(result, table);
}
} else if (key.startsWith(DEPENDENCY_GROUP_KEY_PREFIX) && key.endsWith(DEPENDENCY_GROUP_KEY_SUFFIX)) {
String group = key.substring(DEPENDENCY_GROUP_KEY_PREFIX.length(), key.length() - DEPENDENCY_GROUP_KEY_SUFFIX.length());

if (!options.getExcludedGroups().contains(group)) {
addAllPackageNamesToSet(result, table);
}
}
}

private void addAllPackageNamesToSet(Set<String> set, TomlTable table) {
for (List<String> key : table.keyPathSet()) {
String packageName = key.get(0);
Expand Down