Skip to content

Commit

Permalink
fix: change uv provider to not use lock files on release-version gene…
Browse files Browse the repository at this point in the history
…rator
  • Loading branch information
lucasvieirasilva committed Jan 22, 2025
1 parent 0af3544 commit cf17bda
Showing 1 changed file with 51 additions and 17 deletions.
68 changes: 51 additions & 17 deletions packages/nx-python/src/provider/uv/provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,24 +94,58 @@ export class UVProvider implements IProvider {
? readPyprojectToml<UVPyprojectToml>(this.tree, pyprojectTomlPath)
: getPyprojectData<UVPyprojectToml>(pyprojectTomlPath);

const lockData = this.isWorkspace
? this.rootLockfile
: getUvLockfile(joinPathFragments(projectRoot, 'uv.lock'), this.tree);

const data = lockData.package[projectData.project.name];
const group = data?.dependencies?.find(
(item) => item.name === dependencyName,
)
? 'main'
: Object.entries(data?.['dev-dependencies'] ?? {}).find(
([, value]) => !!value.find((item) => item.name === dependencyName),
)?.[0];
if (this.isWorkspace) {
const data = this.rootLockfile.package[projectData.project.name];
const group = data?.dependencies?.find(
(item) => item.name === dependencyName,
)
? 'main'
: Object.entries(data?.['dev-dependencies'] ?? {}).find(
([, value]) => !!value.find((item) => item.name === dependencyName),
)?.[0];

return {
name: this.rootLockfile.package[dependencyName].name,
version: this.rootLockfile.package[dependencyName].version,
group,
};
} else {
const dependencyRelativePath =
projectData.tool?.uv?.sources?.[dependencyName]?.path;
if (!dependencyRelativePath) {
throw new Error(
`Dependency ${dependencyName} not found in pyproject.toml`,
);
}

return {
name: lockData.package[dependencyName].name,
version: lockData.package[dependencyName].version,
group,
};
const dependencyPyprojectPath = join(
projectRoot,
dependencyRelativePath,
'pyproject.toml',
);

const dependencyProjectData = this.tree
? readPyprojectToml<UVPyprojectToml>(this.tree, dependencyPyprojectPath)
: getPyprojectData<UVPyprojectToml>(dependencyPyprojectPath);

if (!dependencyProjectData) {
throw new Error(`${dependencyPyprojectPath} not found`);
}

const group = projectData.project?.dependencies?.find(
(item) => item === dependencyName,
)
? 'main'
: Object.entries(projectData['dependency-groups'] ?? {}).find(
([, value]) => !!value.find((item) => item === dependencyName),
)?.[0];

return {
name: dependencyProjectData.project.name,
version: dependencyProjectData.project.version,
group,
};
}
}

public updateVersion(projectRoot: string, newVersion: string): void {
Expand Down

0 comments on commit cf17bda

Please sign in to comment.