示例#1
0
    def _register(self, session,
                  url):  # type: (requests.Session, str) -> requests.Response
        """
        Register a package to a repository.
        """
        dist = self._poetry.file.parent / "dist"
        file = dist / "{}-{}.tar.gz".format(
            self._package.name, normalize_version(self._package.version.text))

        if not file.exists():
            raise RuntimeError('"{0}" does not exist.'.format(file.name))

        data = self.post_data(file)
        data.update({":action": "submit", "protocol_version": "1"})

        data_to_send = self._prepare_data(data)
        encoder = MultipartEncoder(data_to_send)
        resp = session.post(
            url,
            data=encoder,
            allow_redirects=False,
            headers={"Content-Type": encoder.content_type},
        )

        resp.raise_for_status()

        return resp
示例#2
0
    def files(self):  # type: () -> List[Path]
        dist = self._poetry.file.parent / "dist"
        version = normalize_version(self._package.version.text)

        wheels = list(
            dist.glob("{}-{}-*.whl".format(
                escape_name(self._package.pretty_name),
                escape_version(version))))
        tars = list(
            dist.glob("{}-{}.tar.gz".format(self._package.pretty_name,
                                            version)))

        return sorted(wheels + tars)
示例#3
0
    def from_package(cls, package):  # type: (...) -> Metadata
        meta = cls()

        meta.name = canonicalize_name(package.name)
        meta.version = normalize_version(package.version.text)
        meta.summary = package.description
        if package.readme:
            with package.readme.open(encoding="utf-8") 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
        meta.author_email = package.author_email

        if package.license:
            meta.license = package.license.id

        meta.classifiers = package.all_classifiers

        # Version 1.2
        meta.maintainer = meta.author
        meta.maintainer_email = meta.author_email

        # Requires python
        if package.python_versions != "*":
            meta.requires_python = format_python_constraint(
                package.python_constraint)

        meta.requires_dist = [d.to_pep_508() for d in package.requires]

        # 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"

        meta.provides_extra = [e for e in package.extras]

        if package.urls:
            for name, url in package.urls.items():
                if name == "Homepage" and meta.home_page == url:
                    continue

                meta.project_urls += ("{}, {}".format(name, url), )

        return meta
示例#4
0
文件: build.py 项目: ojii/blackfast
def main(json_output: bool) -> None:
    if json_output:
        call = partial(check_call, stdout=DEVNULL)
    else:
        call = check_call
    call(["poetry", "build", "-f", "wheel"])
    with open("pyproject.toml") as fobj:
        config = load(fobj)
        version = normalize_version(config["tool"]["poetry"]["version"])
    call(["cargo", "build", "--release"])
    path = patch_wheel(version)
    if json_output:
        print(json.dumps({"version": version, "path": str(path)}))
    else:
        print("Done ✨")
示例#5
0
文件: uploader.py 项目: jondot/poetry
    def files(self):  # type: () -> List[str]
        dist = self._poetry.file.parent / "dist"
        version = normalize_version(self._package.version.text)

        wheels = list(
            dist.glob("{}-{}-*.whl".format(
                re.sub("[^\w\d.]+",
                       "_",
                       self._package.pretty_name,
                       flags=re.UNICODE),
                re.sub("[^\w\d.]+", "_", version, flags=re.UNICODE),
            )))
        tars = list(
            dist.glob("{}-{}.tar.gz".format(self._package.pretty_name,
                                            version)))

        return sorted(wheels + tars)
示例#6
0
    def files(self):  # type: () -> List[str]
        dist = self._poetry.file.parent / "dist"
        version = normalize_version(self._package.version.text)

        wheels = list(
            dist.glob(
                "{}-{}-*.whl".format(
                    re.sub(
                        "[^\w\d.]+", "_", self._package.pretty_name, flags=re.UNICODE
                    ),
                    re.sub("[^\w\d.]+", "_", version, flags=re.UNICODE),
                )
            )
        )
        tars = list(
            dist.glob("{}-{}.tar.gz".format(self._package.pretty_name, version))
        )

        return sorted(wheels + tars)
示例#7
0
    def from_package(cls, package):  # type: (...) -> Metadata
        meta = cls()

        meta.name = canonicalize_name(package.name)
        meta.version = normalize_version(package.version.text)
        meta.summary = package.description
        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
        meta.author_email = package.author_email

        if package.license:
            meta.license = package.license.id

        meta.classifiers = package.all_classifiers

        # Version 1.2
        meta.maintainer = meta.author
        meta.maintainer_email = meta.author_email

        # Requires python
        if not package.python_constraint.is_any():
            meta.requires_python = format_python_constraint(package.python_constraint)

        meta.requires_dist = [d.to_pep_508() for d in package.requires]

        # 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"

        meta.provides_extra = [e for e in package.extras]

        return meta
示例#8
0
文件: metadata.py 项目: ofek/poetry
    def from_package(cls, package):  # type: (...) -> Metadata
        meta = cls()

        meta.name = canonicalize_name(package.name)
        meta.version = normalize_version(package.version.text)
        meta.summary = package.description
        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
        meta.author_email = package.author_email

        if package.license:
            meta.license = package.license.id

        meta.classifiers = package.all_classifiers

        # Version 1.2
        meta.maintainer = meta.author
        meta.maintainer_email = meta.author_email
        meta.requires_python = package.python_constraint

        meta.requires_dist = [d.to_pep_508() for d in package.requires]

        # 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'

        meta.provides_extra = [e for e in package.extras]

        return meta