Skip to content

Commit

Permalink
fix: handle optional poetry dependencies and improve dependency resol…
Browse files Browse the repository at this point in the history
…ution logic
  • Loading branch information
lucasvieirasilva committed Jan 30, 2025
1 parent 87d4e6c commit 50eba58
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,9 @@ export class ProjectDependencyResolver {
const deps: PackageDependency[] = [];

const dependencies = Object.entries(
pyproject.tool.poetry.dependencies,
pyproject.tool?.poetry?.dependencies ??
pyproject.tool?.poetry?.group?.main?.dependencies ??
{},
).filter(([name]) => name != 'python');

for (const [name, data] of dependencies) {
Expand Down
24 changes: 21 additions & 3 deletions packages/nx-python/src/provider/poetry/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -542,7 +542,10 @@ export class PoetryProvider implements IProvider {
buildTomlData,
);

const pythonDependency = buildTomlData.tool.poetry.dependencies.python;
const [format, pythonDependency] = buildTomlData.tool?.poetry?.dependencies
?.python
? ['implicit', buildTomlData.tool?.poetry?.dependencies?.python]
: ['main', buildTomlData.tool?.poetry?.group?.main?.dependencies?.python];

buildTomlData.tool.poetry.dependencies = {};
buildTomlData.tool.poetry.group = {
Expand All @@ -552,7 +555,14 @@ export class PoetryProvider implements IProvider {
};

if (pythonDependency) {
buildTomlData.tool.poetry.dependencies['python'] = pythonDependency;
if (format === 'implicit') {
buildTomlData.tool.poetry.dependencies['python'] = pythonDependency;
} else {
buildTomlData.tool.poetry.group ??= {};
buildTomlData.tool.poetry.group.main ??= { dependencies: {} };
buildTomlData.tool.poetry.group.main.dependencies['python'] =
pythonDependency;
}
}

for (const dep of deps) {
Expand All @@ -568,7 +578,15 @@ export class PoetryProvider implements IProvider {
source: dep.source,
}
: dep.version;
buildTomlData.tool.poetry.dependencies[dep.name] = pyprojectDep;

if (format === 'implicit') {
buildTomlData.tool.poetry.dependencies[dep.name] = pyprojectDep;
} else {
buildTomlData.tool.poetry.group ??= {};
buildTomlData.tool.poetry.group.main ??= { dependencies: {} };
buildTomlData.tool.poetry.group.main.dependencies[dep.name] =
pyprojectDep;
}
}

writeFileSync(buildPyProjectToml, stringify(buildTomlData));
Expand Down

0 comments on commit 50eba58

Please sign in to comment.