def _add_dist_info(self, added_files: List[Path]) -> None: from poetry.core.masonry.builders.wheel import WheelBuilder added_files = added_files[:] builder = WheelBuilder(self._poetry) dist_info_path = Path(builder.dist_info) for dist_info in self._env.site_packages.find( dist_info_path, writable_only=True ): if dist_info.exists(): self._debug( " - Removing existing <c2>{}</c2> directory from <b>{}</b>".format( dist_info.name, dist_info.parent ) ) shutil.rmtree(str(dist_info)) dist_info = self._env.site_packages.mkdir(dist_info_path) self._debug( " - Adding the <c2>{}</c2> directory to <b>{}</b>".format( dist_info.name, dist_info.parent ) ) with dist_info.joinpath("METADATA").open("w", encoding="utf-8") as f: builder._write_metadata_file(f) added_files.append(dist_info.joinpath("METADATA")) with dist_info.joinpath("INSTALLER").open("w", encoding="utf-8") as f: f.write("poetry") added_files.append(dist_info.joinpath("INSTALLER")) if self.convert_entry_points(): with dist_info.joinpath("entry_points.txt").open( "w", encoding="utf-8" ) as f: builder._write_entry_points(f) added_files.append(dist_info.joinpath("entry_points.txt")) with dist_info.joinpath("RECORD").open("w", encoding="utf-8") as f: for path in added_files: hash = self._get_file_hash(path) size = path.stat().st_size f.write("{},sha256={},{}\n".format(str(path), hash, size)) # RECORD itself is recorded with no hash or size f.write("{},,\n".format(dist_info.joinpath("RECORD")))
def _add_dist_info(self, added_files: list[Path]) -> None: from poetry.core.masonry.builders.wheel import WheelBuilder added_files = added_files[:] builder = WheelBuilder(self._poetry) dist_info = self._env.site_packages.mkdir(Path(builder.dist_info)) self._debug(f" - Adding the <c2>{dist_info.name}</c2> directory to" f" <b>{dist_info.parent}</b>") with dist_info.joinpath("METADATA").open("w", encoding="utf-8") as f: builder._write_metadata_file(f) added_files.append(dist_info.joinpath("METADATA")) with dist_info.joinpath("INSTALLER").open("w", encoding="utf-8") as f: f.write("poetry") added_files.append(dist_info.joinpath("INSTALLER")) if self.convert_entry_points(): with dist_info.joinpath("entry_points.txt").open( "w", encoding="utf-8") as f: builder._write_entry_points(f) added_files.append(dist_info.joinpath("entry_points.txt")) # write PEP 610 metadata direct_url_json = dist_info.joinpath("direct_url.json") direct_url_json.write_text( json.dumps({ "dir_info": { "editable": True }, "url": self._poetry.file.path.parent.as_uri(), })) added_files.append(direct_url_json) record = dist_info.joinpath("RECORD") with record.open("w", encoding="utf-8", newline="") as f: csv_writer = csv.writer(f) for path in added_files: hash = self._get_file_hash(path) size = path.stat().st_size csv_writer.writerow((path, f"sha256={hash}", size)) # RECORD itself is recorded with no hash or size csv_writer.writerow((record, "", ""))
def prepare_metadata_for_build_wheel( metadata_directory: str, config_settings: dict[str, Any] | None = None ) -> str: poetry = Factory().create_poetry(Path(".").resolve(), with_groups=False) builder = WheelBuilder(poetry) dist_info = Path(metadata_directory, builder.dist_info) dist_info.mkdir(parents=True, exist_ok=True) if "scripts" in poetry.local_config or "plugins" in poetry.local_config: with (dist_info / "entry_points.txt").open("w", encoding="utf-8") as f: builder._write_entry_points(f) with (dist_info / "WHEEL").open("w", encoding="utf-8") as f: builder._write_wheel_file(f) with (dist_info / "METADATA").open("w", encoding="utf-8") as f: builder._write_metadata_file(f) return dist_info.name
def _add_dist_info(self, added_files: List[Path]) -> None: from poetry.core.masonry.builders.wheel import WheelBuilder added_files = added_files[:] builder = WheelBuilder(self._poetry) dist_info = self._env.site_packages.mkdir(Path(builder.dist_info)) self._debug( f" - Adding the <c2>{dist_info.name}</c2> directory to" f" <b>{dist_info.parent}</b>" ) with dist_info.joinpath("METADATA").open("w", encoding="utf-8") as f: builder._write_metadata_file(f) added_files.append(dist_info.joinpath("METADATA")) with dist_info.joinpath("INSTALLER").open("w", encoding="utf-8") as f: f.write("poetry") added_files.append(dist_info.joinpath("INSTALLER")) if self.convert_entry_points(): with dist_info.joinpath("entry_points.txt").open( "w", encoding="utf-8" ) as f: builder._write_entry_points(f) added_files.append(dist_info.joinpath("entry_points.txt")) record = dist_info.joinpath("RECORD") with record.open("w", encoding="utf-8") as f: for path in added_files: hash = self._get_file_hash(path) size = path.stat().st_size f.write(f"{path!s},sha256={hash},{size}\n") # RECORD itself is recorded with no hash or size f.write(f"{record},,\n")