Loading CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ - Added the `run` command to execute commands inside the created virtualenvs. - Added the `debug:resolve` command to debug dependency resolution. - Added `pyproject.toml` file validation. - Added support for Markdown readme files. ### Fixed Loading poetry/masonry/builders/builder.py +2 −0 Changes for poetry/masonry/builders/builder.py: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ from poetry.semver.constraints import MultiConstraint from poetry.semver.version_parser import VersionParser from poetry.vcs import get_vcs from ..metadata import Metadata from ..utils.module import Module Loading @@ -33,6 +34,7 @@ class Builder: self._module = Module( self._package.name, self._path.as_posix() ) self._meta = Metadata.from_package(self._package) def build(self): raise NotImplementedError() Loading poetry/masonry/builders/sdist.py +14 −17 Changes for poetry/masonry/builders/sdist.py: 14 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -89,14 +89,13 @@ class SdistBuilder(Builder): tar_info.size = len(setup) tar.addfile(tar_info, BytesIO(setup)) author = self.convert_author(self._package.authors[0]) pkg_info = PKG_INFO.format( name=self._package.name, version=self._package.version, summary=self._package.description, home_page=self._package.homepage or self._package.repository_url, author=author['name'], author_email=author['email'], name=self._meta.name, version=self._meta.version, summary=self._meta.summary, home_page=self._meta.home_page, author=self._meta.author, author_email=self._meta.author_email, ).encode('utf-8') tar_info = tarfile.TarInfo(pjoin(tar_dir, 'PKG-INFO')) Loading Loading @@ -146,21 +145,19 @@ class SdistBuilder(Builder): extra.append("'entry_points': entry_points,") if self._package.python_versions != '*': python_requires = format_python_constraint(self._package.python_constraint) python_requires = self._meta.requires_python extra.append("'python_requires': {!r},".format(python_requires)) author = self.convert_author(self._package.authors[0]) return SETUP.format( before='\n'.join(before), name=self._package.name, version=self._package.version, description=self._package.description, long_description=self._package.readme, author=author['name'], author_email=author['email'], url=self._package.homepage or self._package.repository_url, name=self._meta.name, version=self._meta.version, description=self._meta.summary, long_description=self._meta.description, author=self._meta.author, author_email=self._meta.author_email, url=self._meta.home_page, extra='\n '.join(extra), after='\n'.join(after) ).encode('utf-8') Loading poetry/masonry/builders/wheel.py +27 −23 Changes for poetry/masonry/builders/wheel.py: 27 added lines, 23 removed lines. Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ from poetry.semver.constraints import MultiConstraint from poetry.vcs import get_vcs from poetry.version.helpers import format_python_constraint from ..metadata import Metadata from ..utils.helpers import normalize_file_permissions from ..utils.tags import get_abbr_impl from ..utils.tags import get_abi_tag Loading Loading @@ -292,36 +293,39 @@ class WheelBuilder(Builder): def _write_metadata_file(self, fp): """ Write out metadata in the 1.x format (email like) Write out metadata in the 2.x format (email like) """ fp.write('Metadata-Version: 1.2\n') fp.write(f'Name: {self._package.name}\n') fp.write(f'Version: {self._package.version}\n') fp.write(f'Summary: {self._package.description}\n') fp.write(f'Home-page: {self._package.homepage or self._package.repository_url or "UNKNOWN"}\n') fp.write(f'License: {self._package.license or "UNKOWN"}\n') fp.write('Metadata-Version: 2.1\n') fp.write(f'Name: {self._meta.name}\n') fp.write(f'Version: {self._meta.version}\n') fp.write(f'Summary: {self._meta.summary}\n') fp.write(f'Home-page: {self._meta.home_page or "UNKNOWN"}\n') fp.write(f'License: {self._meta.license or "UNKOWN"}\n') # Optional fields if self._package.keywords: fp.write(f"Keywords: {','.join(self._package.keywords)}\n") if self._meta.keywords: fp.write(f"Keywords: {self._meta.keywords}\n") if self._package.authors: author = self.convert_author(self._package.authors[0]) if self._meta.author: fp.write(f'Author: {self._meta.author}\n') fp.write(f'Author: {author["name"]}\n') fp.write(f'Author-email: {author["email"]}\n') if self._meta.author_email: fp.write(f'Author-email: {self._meta.author_email}\n') if self._package.python_versions != '*': python_requires = format_python_constraint(self._package.python_constraint) if self._meta.requires_python: fp.write(f'Requires-Python: {self._meta.requires_python}\n') fp.write(f'Requires-Python: {python_requires}\n') classifiers = self.get_classifers() for classifier in classifiers: for classifier in self._meta.classifiers: fp.write(f'Classifier: {classifier}\n') for dep in self._package.requires: fp.write('Requires-Dist: {}\n'.format(dep.to_pep_508())) for dep in self._meta.requires_dist: fp.write(f'Requires-Dist: {dep}\n') if self._meta.description_content_type: fp.write(f'Description-Content-Type: ' f'{self._meta.description_content_type}\n') # TODO: Provides extra if self._package.readme is not None: fp.write('\n' + self._package.readme + '\n') if self._meta.description is not None: fp.write('\n' + self._meta.description + '\n') poetry/masonry/metadata.py +19 −3 Changes for poetry/masonry/metadata.py: 19 added lines, 3 removed lines. Original line number Diff line number Diff line from poetry.semver.constraints import MultiConstraint from poetry.utils.helpers import canonicalize_name from poetry.version.helpers import format_python_constraint class Metadata: metadata_version = '1.2' metadata_version = '2.1' # version 1.0 name = None version = None Loading Loading @@ -34,6 +33,10 @@ class Metadata: obsoletes_dist = () project_urls = () # Version 2.1 description_content_type = None provides_extra = [] @classmethod def from_package(cls, package) -> 'Metadata': meta = cls() Loading @@ -41,7 +44,10 @@ class Metadata: meta.name = canonicalize_name(package.name) meta.version = package.version meta.summary = package.description meta.description = package.readme if package.readme: with package.readme.open() as f: meta.description = f.read() meta.keywords = ','.join(package.keywords) meta.home_page = package.homepage or package.repository_url meta.author = package.author_name Loading @@ -58,4 +64,14 @@ class Metadata: # Requires python meta.requires_python = format_python_constraint(package.python_constraint) # Version 2.1 if package.readme: if package.readme.suffix == '.rst': meta.description_content_type = 'text/x-rst' elif package.readme.suffix in ['.md', '.markdown']: meta.description_content_type = 'text/markdown' else: meta.description_content_type = 'text/plain' # TODO: Provides extra return meta Loading
CHANGELOG.md +1 −0 Changes for CHANGELOG.md: 1 added line, 0 removed lines. Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ - Added the `run` command to execute commands inside the created virtualenvs. - Added the `debug:resolve` command to debug dependency resolution. - Added `pyproject.toml` file validation. - Added support for Markdown readme files. ### Fixed Loading
poetry/masonry/builders/builder.py +2 −0 Changes for poetry/masonry/builders/builder.py: 2 added lines, 0 removed lines. Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ from poetry.semver.constraints import MultiConstraint from poetry.semver.version_parser import VersionParser from poetry.vcs import get_vcs from ..metadata import Metadata from ..utils.module import Module Loading @@ -33,6 +34,7 @@ class Builder: self._module = Module( self._package.name, self._path.as_posix() ) self._meta = Metadata.from_package(self._package) def build(self): raise NotImplementedError() Loading
poetry/masonry/builders/sdist.py +14 −17 Changes for poetry/masonry/builders/sdist.py: 14 added lines, 17 removed lines. Original line number Diff line number Diff line Loading @@ -89,14 +89,13 @@ class SdistBuilder(Builder): tar_info.size = len(setup) tar.addfile(tar_info, BytesIO(setup)) author = self.convert_author(self._package.authors[0]) pkg_info = PKG_INFO.format( name=self._package.name, version=self._package.version, summary=self._package.description, home_page=self._package.homepage or self._package.repository_url, author=author['name'], author_email=author['email'], name=self._meta.name, version=self._meta.version, summary=self._meta.summary, home_page=self._meta.home_page, author=self._meta.author, author_email=self._meta.author_email, ).encode('utf-8') tar_info = tarfile.TarInfo(pjoin(tar_dir, 'PKG-INFO')) Loading Loading @@ -146,21 +145,19 @@ class SdistBuilder(Builder): extra.append("'entry_points': entry_points,") if self._package.python_versions != '*': python_requires = format_python_constraint(self._package.python_constraint) python_requires = self._meta.requires_python extra.append("'python_requires': {!r},".format(python_requires)) author = self.convert_author(self._package.authors[0]) return SETUP.format( before='\n'.join(before), name=self._package.name, version=self._package.version, description=self._package.description, long_description=self._package.readme, author=author['name'], author_email=author['email'], url=self._package.homepage or self._package.repository_url, name=self._meta.name, version=self._meta.version, description=self._meta.summary, long_description=self._meta.description, author=self._meta.author, author_email=self._meta.author_email, url=self._meta.home_page, extra='\n '.join(extra), after='\n'.join(after) ).encode('utf-8') Loading
poetry/masonry/builders/wheel.py +27 −23 Changes for poetry/masonry/builders/wheel.py: 27 added lines, 23 removed lines. Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ from poetry.semver.constraints import MultiConstraint from poetry.vcs import get_vcs from poetry.version.helpers import format_python_constraint from ..metadata import Metadata from ..utils.helpers import normalize_file_permissions from ..utils.tags import get_abbr_impl from ..utils.tags import get_abi_tag Loading Loading @@ -292,36 +293,39 @@ class WheelBuilder(Builder): def _write_metadata_file(self, fp): """ Write out metadata in the 1.x format (email like) Write out metadata in the 2.x format (email like) """ fp.write('Metadata-Version: 1.2\n') fp.write(f'Name: {self._package.name}\n') fp.write(f'Version: {self._package.version}\n') fp.write(f'Summary: {self._package.description}\n') fp.write(f'Home-page: {self._package.homepage or self._package.repository_url or "UNKNOWN"}\n') fp.write(f'License: {self._package.license or "UNKOWN"}\n') fp.write('Metadata-Version: 2.1\n') fp.write(f'Name: {self._meta.name}\n') fp.write(f'Version: {self._meta.version}\n') fp.write(f'Summary: {self._meta.summary}\n') fp.write(f'Home-page: {self._meta.home_page or "UNKNOWN"}\n') fp.write(f'License: {self._meta.license or "UNKOWN"}\n') # Optional fields if self._package.keywords: fp.write(f"Keywords: {','.join(self._package.keywords)}\n") if self._meta.keywords: fp.write(f"Keywords: {self._meta.keywords}\n") if self._package.authors: author = self.convert_author(self._package.authors[0]) if self._meta.author: fp.write(f'Author: {self._meta.author}\n') fp.write(f'Author: {author["name"]}\n') fp.write(f'Author-email: {author["email"]}\n') if self._meta.author_email: fp.write(f'Author-email: {self._meta.author_email}\n') if self._package.python_versions != '*': python_requires = format_python_constraint(self._package.python_constraint) if self._meta.requires_python: fp.write(f'Requires-Python: {self._meta.requires_python}\n') fp.write(f'Requires-Python: {python_requires}\n') classifiers = self.get_classifers() for classifier in classifiers: for classifier in self._meta.classifiers: fp.write(f'Classifier: {classifier}\n') for dep in self._package.requires: fp.write('Requires-Dist: {}\n'.format(dep.to_pep_508())) for dep in self._meta.requires_dist: fp.write(f'Requires-Dist: {dep}\n') if self._meta.description_content_type: fp.write(f'Description-Content-Type: ' f'{self._meta.description_content_type}\n') # TODO: Provides extra if self._package.readme is not None: fp.write('\n' + self._package.readme + '\n') if self._meta.description is not None: fp.write('\n' + self._meta.description + '\n')
poetry/masonry/metadata.py +19 −3 Changes for poetry/masonry/metadata.py: 19 added lines, 3 removed lines. Original line number Diff line number Diff line from poetry.semver.constraints import MultiConstraint from poetry.utils.helpers import canonicalize_name from poetry.version.helpers import format_python_constraint class Metadata: metadata_version = '1.2' metadata_version = '2.1' # version 1.0 name = None version = None Loading Loading @@ -34,6 +33,10 @@ class Metadata: obsoletes_dist = () project_urls = () # Version 2.1 description_content_type = None provides_extra = [] @classmethod def from_package(cls, package) -> 'Metadata': meta = cls() Loading @@ -41,7 +44,10 @@ class Metadata: meta.name = canonicalize_name(package.name) meta.version = package.version meta.summary = package.description meta.description = package.readme if package.readme: with package.readme.open() as f: meta.description = f.read() meta.keywords = ','.join(package.keywords) meta.home_page = package.homepage or package.repository_url meta.author = package.author_name Loading @@ -58,4 +64,14 @@ class Metadata: # Requires python meta.requires_python = format_python_constraint(package.python_constraint) # Version 2.1 if package.readme: if package.readme.suffix == '.rst': meta.description_content_type = 'text/x-rst' elif package.readme.suffix in ['.md', '.markdown']: meta.description_content_type = 'text/markdown' else: meta.description_content_type = 'text/plain' # TODO: Provides extra return meta