diff --git a/src/poetry_plugin_export/command.py b/src/poetry_plugin_export/command.py index 06ca162..bc5eccd 100644 --- a/src/poetry_plugin_export/command.py +++ b/src/poetry_plugin_export/command.py @@ -51,6 +51,11 @@ class ExportCommand(GroupCommand): ), option("all-extras", None, "Include all sets of extra dependencies."), option("with-credentials", None, "Include credentials for extra indices."), + option( + "resolve-path-dependencies", + "P", + "Resolve path dependencies to package versions.", + ), ] @property @@ -122,6 +127,7 @@ def handle(self) -> int: exporter.with_hashes(not self.option("without-hashes")) exporter.with_credentials(self.option("with-credentials")) exporter.with_urls(not self.option("without-urls")) + exporter.resolve_path_dependencies(self.option("resolve-path-dependencies")) exporter.export(fmt, Path.cwd(), output or self.io) return 0 diff --git a/src/poetry_plugin_export/exporter.py b/src/poetry_plugin_export/exporter.py index 7ff5f08..6693906 100644 --- a/src/poetry_plugin_export/exporter.py +++ b/src/poetry_plugin_export/exporter.py @@ -42,6 +42,7 @@ def __init__(self, poetry: Poetry, io: IO) -> None: self._with_hashes = True self._with_credentials = False self._with_urls = True + self._resolve_path_dependencies = False self._extras: Collection[NormalizedName] = () self._groups: Iterable[str] = [MAIN_GROUP] @@ -74,6 +75,13 @@ def with_credentials(self, with_credentials: bool = True) -> Exporter: return self + def resolve_path_dependencies( + self, resolve_path_dependencies: bool = False + ) -> Exporter: + self._resolve_path_dependencies = resolve_path_dependencies + + return self + def export(self, fmt: str, cwd: Path, output: IO | str) -> None: if not self.is_format_supported(fmt): raise ValueError(f"Invalid export format: {fmt}") @@ -81,7 +89,11 @@ def export(self, fmt: str, cwd: Path, output: IO | str) -> None: getattr(self, self.EXPORT_METHODS[fmt])(cwd, output) def _export_generic_txt( - self, cwd: Path, output: IO | str, with_extras: bool, allow_editable: bool + self, + cwd: Path, + output: IO | str, + with_extras: bool, + allow_editable: bool, ) -> None: from poetry.core.packages.utils.utils import path_to_url @@ -117,8 +129,8 @@ def _export_generic_txt( continue requirement = dependency.to_pep_508(with_extras=False, resolved=True) - is_direct_local_reference = ( - dependency.is_file() or dependency.is_directory() + is_direct_local_reference = dependency.is_file() or ( + dependency.is_directory() and not self._resolve_path_dependencies ) is_direct_remote_reference = dependency.is_vcs() or dependency.is_url()