poetry icon indicating copy to clipboard operation
poetry copied to clipboard

Stabilize 'build.py'

Open padix-key opened this issue 4 years ago • 56 comments

  • [x] I have searched the issues of this repo and believe that this is not a duplicate.
  • [x] I have searched the documentation and believe that my question is not covered.

Feature Request

In order to compile C-extensions, it is currently required to add a build script to the project directory and to pyproject.toml:

[tool.poetry]
build = "build.py"

This feature is described in #11, but not in the official Poetry documentation. So my question is whether this feature is stable. If this is the case, I would like to propose to include it in the official documentation.

padix-key avatar Jul 28 '20 13:07 padix-key

@padix-key this feature is, today, an undocumented and really unsupported features. However, we do plan on making support for build scripts more standard. This will be added to documentation once it is fully supported and flushed out. Changes like python-poetry/poetry-core#45 are stepping stones to this.

As an additional note we are also improve support for "build" configuration section along with this. So, this will become something like the following in newer versions.

[tool.poetry.build]
script = "build.py"

abn avatar Jul 28 '20 14:07 abn

I'm confused about the new build system. I've modified my pyproject.py to use

[tool.poetry.build]
script = "build.py"
generate-setup-file = false

and

[build-system]
requires = ["poetry-core>=1.0.0a9"]
build-backend = "poetry.core.masonry.api"

and my build.py to

def build():

    distribution = Distribution({'name': 'extended', 'ext_modules': ext_modules})
    distribution.package_dir = 'extended'

    cmd = build_ext(distribution)
    cmd.ensure_finalized()
    cmd.run()

    # Copy built extensions back to the project
    for output in cmd.get_outputs():
        relative_extension = os.path.relpath(output, cmd.build_lib)
        shutil.copyfile(output, relative_extension)
        mode = os.stat(relative_extension).st_mode
        mode |= (mode & 0o444) >> 2
        os.chmod(relative_extension, mode)


if __name__ == '__main__':
    build()

where ext_modules is a list of distutils.core.Extension.

This works fine with poetry install (in the sense that the extension is compiled and I get the shared library) but when I run pip install . no compilation happens.

Am I missing something?

albireox avatar Jul 30 '20 17:07 albireox

Looking at the pendulum example, it seems one also needs to add

include = [
    {path = "flicamera/*.so", format = "wheel"}
]

for the compiled extension to be installed. This should be documented when the feature becomes stable.

This include is not in the test at tests/masonry/builders/fixtures/extended_with_no_setup/pyproject.toml so I'm not sure how that test would pass.

albireox avatar Jul 30 '20 18:07 albireox

@albireox moving forward we will make it the responsibility if the build script to move the compiled files around such that they are in the right places as expected. If the built files are within an included package it will automatically be picked up. This is probably why it works in the test (did not look into it). If it is in another location, the include configuration is the way to go. We might try and include this wil some "not final" warning in the documentation for 1.1.0 so it is useful for maintainers till it stabilises.

abn avatar Jul 30 '20 19:07 abn

Thanks for the explanation.

I would really encourage that if this change become part of 1.1.0 it gets documented, even if it's considered an experimental feature. The old build system, although undocumented worked as expected and a stable release should not break that.

albireox avatar Jul 30 '20 19:07 albireox

The old mechanism should still work out of the box; since the default is to generate the setup file for this release. But yes, I agree, some documentation explaining all this would be good.

abn avatar Jul 30 '20 23:07 abn

With the new poetry 1.1.0 release i have found in my projects that my line: script = "build.py" no longer works and an error is thrown if i try to install the tarball that build.

Seeing this issue, i modified my pyproject.toml to use the poetry-core build-system and added the following lines. Now everything seems to be working again.

[tool.poetry.build]
generate-setup-file = false

Is this the intended behaviour? Is now the new method of building extensions?

ahobsonsayers avatar Oct 05 '20 16:10 ahobsonsayers

@ahobsonsayers you will still probably also need https://github.com/python-poetry/poetry/issues/2740#issuecomment-665073135.

abn avatar Oct 05 '20 16:10 abn

Sorry, yes, it seems I missed that line in my copy and paste of the lines. So is it intended for the script = "build.py" under [tool.poetry] to be deprecated and no longer work?

ahobsonsayers avatar Oct 05 '20 16:10 ahobsonsayers

@ahobsonsayers I would have expected the old configuration to have worked even if it was depreciated. However if you have both [tool.poetry.build] and tool.poetry.build = "build.py" it would fail.

abn avatar Oct 05 '20 17:10 abn

@abn The details from the non-poetry based build.py not being ran

pyproject.toml

[tool.poetry]
name = "steamio"
version = "0.7.0a"
description = "A Python wrapper for the Steam API"
authors = ["Gobot1234"]
license = "MIT"
keywords = ["steam.py", "steam", "steamio", "steam-api"]
classifiers=[
    "Development Status :: 5 - Production/Stable",
    "Framework :: AsyncIO",
    "Intended Audience :: Developers",
    "Natural Language :: English",
    "Operating System :: OS Independent",
    "Topic :: Software Development :: Libraries",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Typing :: Typed",
]
include = [
    "LICENSE",
    "steam/__metadata__.py",
    "steam/py.typed",
    "steam/ext/__init__.pyi",
]
packages = [
    { include = "steam" },
]

[tool.poetry.build]
script = "build.py"
generate-setup-file = false

[tool.poetry.urls]
"Documentation" = "https://steampy.readthedocs.io/en/latest"
"Code" = "https://github.com/Gobot1234/steam.py"
"Bug Tracker" = "https://github.com/Gobot1234/steam.py/issues"

[tool.poetry.dependencies]
python = "^3.7"
aiohttp = ">=3.7.0,<3.8.0"
beautifulsoup4 = ">=4.9.1"
rsa = ">=4.6"
betterproto = "2.0.0b3"
typing-extensions = "3.7.4.3"
importlib-metadata = { version = ">=1.7.0", python = "<3.8" }

# docs option
sphinx = { version = "3.5.4", optional = true }
sphinxcontrib_trio = { version = "1.1.2", optional = true }
csscompressor = { version = "*", optional = true }
htmlmin = { version = "*", optional = true }
rjsmin = { version = "*", optional = true }


[tool.poetry.extras]
docs = ["sphinx", "sphinxcontrib_trio", "csscompressor", "htmlmin", "rjsmin"]

[tool.poetry.dev-dependencies]
black = "^21.4b0"
isort = "*"
flake8 = "*"
pytest = "*"
pytest-asyncio = "*"
mypy = "*"

[build-system]
requires = ["poetry-core>=1.0.0", "toml"]
build-backend = "poetry.core.masonry.api"
build.py file


from __future__ import annotations

import pathlib
import re
import subprocess
from typing import Any

import toml

ROOT = pathlib.Path(".").resolve()
PYPROJECT = toml.load(ROOT / "pyproject.toml")
try:
    VERSION: str = PYPROJECT["tool"]["poetry"]["version"]
except KeyError:
    raise RuntimeError("Version is not set") from None


RELEASE_LEVELS = {
    "a": "alpha",
    "b": "beta",
    "rc": "candidate",
}

try:
    end_char = re.findall(r"\d+.\d+.\d+([^\d]*).*", VERSION)[0]
except IndexError:
    end_char = ""
    release_level = "final"
else:
    release_level = RELEASE_LEVELS[end_char]

if release_level != "final":
    # try to find out the commit hash if checked out from git, and append it to __version__ (since we use this value
    # from setup.py, it gets automatically propagated to an installed copy as well)
    try:
        out = subprocess.check_output("git rev-list --count HEAD")
        if out:
            VERSION = f"{VERSION}{out.strip()}"
        out = subprocess.check_output("git rev-parse --short HEAD")
        if out:
            VERSION = f"{VERSION}+g{out.strip()}"
    except Exception:
        pass


major, minor, micro = VERSION.split(".")
micro = micro.split(end_char, maxsplit=1)[0]
file = f"""from typing import NamedTuple
from typing_extensions import Literal
__all__ = (
    "__title__",
    "__author__",
    "__license__",
    "__version__",
    "version_info",
)
class VersionInfo(NamedTuple):
    major: int
    minor: int
    micro: int
    releaselevel: Literal["alpha", "beta", "candidate", "final"]
__title__ = "steam"
__author__ = "Gobot1234"
__license__ = "MIT"
__version__ = "{VERSION}"
version_info = VersionInfo(major={major}, minor={minor}, micro={micro}, releaselevel="{release_level}")
"""


def build(setup_kwargs: dict[str, Any]) -> None:
    metadata = ROOT / "steam" / "__metadata__.py"
    metadata.write_text(file)
Verbose pip install log

James@Jamess-MacBook-Air ~ % python3 -m pip install -U git+https://github.com/Gobot1234/steam.py.git --verbose
Using pip 21.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/UNKNOWN
sysconfig: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Non-user install because site-packages writeable
Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-ephem-wheel-cache-1kup9cm4
Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
Initialized build tracking at /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
Created build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
Entered build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-install-qf_oz4vk
Collecting git+https://github.com/Gobot1234/steam.py.git
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3
  Cloning https://github.com/Gobot1234/steam.py.git to /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3
  Running command git clone -q https://github.com/Gobot1234/steam.py.git /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3
  Added git+https://github.com/Gobot1234/steam.py.git to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w
  Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w/__env_pip__.zip/pip install --ignore-installed --no-user --prefix /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay --no-warn-script-location -v --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'poetry-core>=1.0.0' toml
  Using pip 21.1 from /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w/__env_pip__.zip/pip (python 3.9)
  Non-user install by explicit request
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-ephem-wheel-cache-ziz11f7j
  Created build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
  Entered build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-install-si3kzawp
  1 location(s) to search for versions of poetry-core:
  * https://pypi.org/simple/poetry-core/
  Fetching project page and analyzing links: https://pypi.org/simple/poetry-core/
  Getting page https://pypi.org/simple/poetry-core/
  Found index url https://pypi.org/simple
  Looking up "https://pypi.org/simple/poetry-core/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/poetry-core/ HTTP/1.1" 304 0
    Found link https://files.pythonhosted.org/packages/a5/6a/ae017843c144c627b37c125134ab32fd1287fcb2bc95793cd00af2c584af/poetry-core-1.0.0a0.tar.gz#sha256=361a8cdcb833c14c0e754fe12ccf0f23a1c8b6261095279d9272a759e8935396 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a0
    Found link https://files.pythonhosted.org/packages/65/9d/2c3285421474412a0b16048b6405cf45615bb8c2437bba2e99f20801a2cc/poetry_core-1.0.0a0-py2.py3-none-any.whl#sha256=8161315a5ae9984af7ffe1004644a462ffbbc9736d2890f40345ddb857e732a1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a0
    Found link https://files.pythonhosted.org/packages/b9/9d/ee3b9c3ca4e15562bf3bc383d64ab1a11c6434c187ca6c951c3327f72c51/poetry-core-1.0.0a1.tar.gz#sha256=8baeb2d9980091bf8e4375c0f6a87e19a8d56083bdfb5a3875a7bd57befc257e (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a1
    Found link https://files.pythonhosted.org/packages/50/a6/ede2185e777bbce89530c3f1c7f5ef155eb8510fa8655af77a1763de72b2/poetry_core-1.0.0a1-py2.py3-none-any.whl#sha256=ed6c10cd45b91281e535f6ae5d223d9347278ef847805307615b32269693eb73 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a1
    Found link https://files.pythonhosted.org/packages/17/c6/05e0e09b564178dd7b81821dd5448d9d366f6dccccd28c2dfe5cda7c8183/poetry-core-1.0.0a2.tar.gz#sha256=7ca384da50b14cf163f6cf04d3b0900bdb32aefa04b13652a49551090722f188 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a2
    Found link https://files.pythonhosted.org/packages/b2/f8/aa9dbbd5cab341ac91aa13dea969732f15f02b0e5f963c339f0629147215/poetry_core-1.0.0a2-py2.py3-none-any.whl#sha256=e742467689173a282d9f83d35a72f7e42ac5543cb6ad55130aebbc4e314c8302 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a2
    Found link https://files.pythonhosted.org/packages/7d/38/bbc4ecee9c0cf121d7354733e2778d708fc30da48395e20069f2487333bc/poetry-core-1.0.0a3.tar.gz#sha256=02d1bfed4a53dbe8570c6bc94164d7a5e1b01630f74174f03bc932e8b334be5a (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a3
    Found link https://files.pythonhosted.org/packages/1c/bc/905daad562b9b6114044f156188f965e1f3ffa8e8486bef7633482657457/poetry_core-1.0.0a3-py2.py3-none-any.whl#sha256=2351a1e3a8e18414236f1c7db31c0c7d19bd240c27b5540abf9d81156a10da4c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a3
    Found link https://files.pythonhosted.org/packages/cc/7a/8103474ff3820db01120cfc4a7ee3e4c69620703b6c92939783f8d99a0ef/poetry-core-1.0.0a4.tar.gz#sha256=a95aa0454b539ca6f98056aac5743de273762161aaf2db68152b8510de6849f1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a4
    Found link https://files.pythonhosted.org/packages/3e/b4/57fa9a5a7723814045dd6869b4c2865001b62b0ecaa80c5fe721d8e94416/poetry_core-1.0.0a4-py2.py3-none-any.whl#sha256=2c6b7be852f9eb772823fcff8a0a912b49cbe57c6dfe26f17799df65eccee8b8 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a4
    Found link https://files.pythonhosted.org/packages/b7/70/5c287bd1e7c8c86a318755514e02c6d431335de541c43eef65d0fb5af955/poetry-core-1.0.0a5.tar.gz#sha256=afac65874baf2030328f43df840cec2b5a17bcdad0a04c55b0f830e444ef1120 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a5
    Found link https://files.pythonhosted.org/packages/a3/15/e4992c1fd66765a47b267f3d390e67066ff16764d419101dc9af7cb0d6a6/poetry_core-1.0.0a5-py2.py3-none-any.whl#sha256=ffbd0512d80affce937ce53db2d35bf28ea52d287bae61da5b5d63058618d6b9 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a5
    Found link https://files.pythonhosted.org/packages/7b/c9/f6acb3b355be9cebb7c9e40c5db24f1da6592fe16754de0472c8659cef77/poetry-core-1.0.0a6.tar.gz#sha256=965869ce488869e473f5afb96e6155724fce9ce8ed2ef71c7e47a900c6159ea8 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a6
    Found link https://files.pythonhosted.org/packages/37/07/1c188d7ea2c91a5e792dde29aa6d931e84a44f4f5cf06342ab85d5cead94/poetry_core-1.0.0a6-py2.py3-none-any.whl#sha256=440d3b43b64db47c2c348f784f770a1cbc83ae0aacb4f66d9f2f82b35366303f (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a6
    Found link https://files.pythonhosted.org/packages/45/1d/34f0f441d48bece9c92488977ce4aa72f464e79bb8e9c8f454976864bcaf/poetry-core-1.0.0a7.tar.gz#sha256=f627d32e0c78e7219e0f3b040f3a2a6a6eb9074e0cc04f8d0fec13f258013929 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a7
    Found link https://files.pythonhosted.org/packages/a9/f4/b65a655c632e11ffdd156beb2965cd0876d01317c0a589fdbd519d015932/poetry_core-1.0.0a7-py2.py3-none-any.whl#sha256=ccaf834e5e015452fa637781c0125c24458dc66eb7af2db88a6d3cba1c42f6e0 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a7
    Found link https://files.pythonhosted.org/packages/1b/47/3f770be8226e0e34d40dbe42e19076c793194ea936163c9fb1c79e9510f5/poetry-core-1.0.0a8.tar.gz#sha256=02237e5abaa4fda4ef865cc49111a3f8a7999cfb149b30d5e93f85c3acdc4d95 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a8
    Found link https://files.pythonhosted.org/packages/43/68/084aa9085f903b19ea85f1993035998cb78ebdb244648a097b39b6c37755/poetry_core-1.0.0a8-py2.py3-none-any.whl#sha256=d7d9e702fbae06c05abb1ada63678e940d746b2696f4601b951b27ac7c2c5337 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a8
    Found link https://files.pythonhosted.org/packages/90/cd/b65ab6b3a3a44a474f43a7906f31a1b159ffa63bebd7125ed1f91c06c5e4/poetry-core-1.0.0a9.tar.gz#sha256=f08e9829fd06609ca5615faa91739b589eb71e025a6aaf7ddffb698676eb7c8c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a9
    Found link https://files.pythonhosted.org/packages/6f/d3/dd3d7c608d495b3f2a5f0dd40c2901e6c1d6aceba6e3f3131147f9259b3e/poetry_core-1.0.0a9-py2.py3-none-any.whl#sha256=79a63629ae44533ba9aa828e0eff0002c61b3af5fc9bec212e006cc643f4eb19 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a9
    Found link https://files.pythonhosted.org/packages/dc/c9/d0a648ca07e20810d889f33d0ea3ddc7ef610f42510305dc484a00425ed0/poetry-core-1.0.0b1.tar.gz#sha256=c7a64770780f6a4998eee1e260fc3b7e22fa1c9b94b05c0faa13aa512f95eaa1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0b1
    Found link https://files.pythonhosted.org/packages/db/81/6447beb70ca2ab3274046b1276b6301782392cd39e0e946dc4d08f7f8c3b/poetry_core-1.0.0b1-py2.py3-none-any.whl#sha256=92d2a33c27c733e746425c6506fdf583909e3ce5de4591deb23a4efb13f1a72c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0b1
    Found link https://files.pythonhosted.org/packages/90/2c/b440db634995f35cf7430b6a6c030ac629858e7620edb28992e89a08ec53/poetry-core-1.0.0rc1.tar.gz#sha256=aad65fe96586f741afe582590912ad8e82823671c46c2550a8f9dc74cd4f769d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc1
    Found link https://files.pythonhosted.org/packages/5a/98/47251b64c62f949ece8f5e6b6086a4cc591df364ca2fdbc80d96e7b7b271/poetry_core-1.0.0rc1-py2.py3-none-any.whl#sha256=f63476c92d4d6205ea4fd28a9a9496a465ad15f573ce974dd3ef3a7807c4a919 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc1
    Found link https://files.pythonhosted.org/packages/10/dd/21b1c5e89504bfa746b58cdecaeae3cf423f438f690706b3ea3a68f562bf/poetry-core-1.0.0rc2.tar.gz#sha256=abbe4059433e6d51aff024986b19919319e084592203f17e5354e7c0a7dee6f4 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc2
    Found link https://files.pythonhosted.org/packages/32/67/9906f8cd22b09d17aa1d5998e7284ecb4099a7886734d65febf4561538df/poetry_core-1.0.0rc2-py2.py3-none-any.whl#sha256=f536d59ee0be81f7c689a1a30e9894cb24abeb23f4ff4e2130583fca9863272d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc2
    Found link https://files.pythonhosted.org/packages/a0/90/93840d54683cd7f407fc83cb5a998e4d758cf53b879e59689db292785a7c/poetry-core-1.0.0rc3.tar.gz#sha256=0e3d23a4c5acc14c5f1703b12645692bf24461c8c8e3fff32ca80a5462beccdf (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc3
    Found link https://files.pythonhosted.org/packages/89/ef/5170513520199fef278f3dfe110f1ddb6607103453c7f1db2543dbc4f9d8/poetry_core-1.0.0rc3-py2.py3-none-any.whl#sha256=2c9ee2b3f7b40047bafdc2239fbb9de73637edc07a9697a3a66ac15fe6b040f5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc3
    Found link https://files.pythonhosted.org/packages/42/21/5335c7eceff3dccb3b415018bb17db0c442b599f610fd5712021d5f9403f/poetry-core-1.0.0.tar.gz#sha256=6a664ff389b9f45382536f8fa1611a0cb4d2de7c5a5c885db1f0c600cd11fbd5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0
    Found link https://files.pythonhosted.org/packages/4f/c1/2222bcb8040b32c2119bb70ac59711fd916f6f029d598439a2fecaab9b55/poetry_core-1.0.0-py2.py3-none-any.whl#sha256=769288e0e1b88dfcceb3185728f0b7388b26d5f93d6c22d2dcae372da51d200d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0
    Found link https://files.pythonhosted.org/packages/26/b8/8156fb0992cc8cbde9d3ad74c467aa8ab454a7fc6a34f701255b57c7b5da/poetry-core-1.0.1.tar.gz#sha256=a54bbb12c445b266eee0faf5d38f09dae9860cffa32ad7d99c7b345c94fb6f7b (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.1
    Found link https://files.pythonhosted.org/packages/ba/21/4b0a3fa8f42518c885955c924dcca6eeb7b8ebbc30b71c5ff00b0abe090b/poetry_core-1.0.1-py2.py3-none-any.whl#sha256=94db888849966730a12111a2530548b01b0c22720b69d5561648af8de6a3ea5f (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.1
    Found link https://files.pythonhosted.org/packages/d7/5a/58944c8905bb2519ae58cfab0a663fdfd88c692a6bdc51cc99416cd2f9e8/poetry-core-1.0.2.tar.gz#sha256=ff505d656a6cf40ffbf84393d8b5bf37b78523a15def3ac473b6fad74261ee71 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.2
    Found link https://files.pythonhosted.org/packages/a0/56/d7923fb39395c662bab9e6044e290458a77204ea3cafc3b1ea88e27b8f4c/poetry_core-1.0.2-py2.py3-none-any.whl#sha256=ee0ed4164440eeab27d1b01bc7b9b3afdc3124f68d4ea28d0821a402a9c7c044 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.2
    Found link https://files.pythonhosted.org/packages/d0/b3/1017f2f6d801f1e3e4ffee3f058a10d20df1a9560aba9c5b49e92cdd9912/poetry-core-1.0.3.tar.gz#sha256=2315c928249fc3207801a81868b64c66273077b26c8d8da465dccf8f488c90c5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.3
    Found link https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.3
    Found link https://files.pythonhosted.org/packages/5a/32/90805a7927d4d3c64a03e37e71e4086b35528ab0941ca0dd772149f54308/poetry-core-1.1.0a1.tar.gz#sha256=e73d8728904a05318a972315b0c68f53e5cf5314f540f57c232cc92acc699934 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a1
    Found link https://files.pythonhosted.org/packages/c0/1d/84f368958a065ed0825daf05ee68bab2e8c33c27a5d837aaf0af7863908c/poetry_core-1.1.0a1-py3-none-any.whl#sha256=eb1630413dece7c7b385c61a3d1bffaae9fc9f80075479ef5adb5afb49a1877f (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a1
    Found link https://files.pythonhosted.org/packages/3a/8a/45f9bdaabcebb3a92320457d67d123ca8c81812da3c473e0c52280ad7db1/poetry-core-1.1.0a2.tar.gz#sha256=f9c95c06aee80c3f9251cc7d1005f9bcc2adc8a81296474b373432973e1e6fef (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a2
    Found link https://files.pythonhosted.org/packages/c5/00/826928996815d97ff75aef4ad3ac45b86b9c7d0f2079e5281b909fab00f4/poetry_core-1.1.0a2-py3-none-any.whl#sha256=60e11977e8d767e575683ffb17c42eac8fdc45e262480e80010e8d37d879f286 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a2
    Found link https://files.pythonhosted.org/packages/53/bf/e464e2a6b8e7688a964a76bdaa800ba32d8f2c9226de036720e1fbd67532/poetry-core-1.1.0a3.tar.gz#sha256=579f35c98b0cdbc4e0fd2f7172de7deca74849a2ccfef05bf1df71d3855aa421 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a3
    Found link https://files.pythonhosted.org/packages/5c/c7/4fca8817212797f1b6426e0d2c68eef4a616787ea8e92964a233ad180aee/poetry_core-1.1.0a3-py3-none-any.whl#sha256=406da64d43dc0b954a1f446f8ec1b7f21e02cb8307542e8c366fa184a86f5c2e (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a3
  Skipping link: not a file: https://pypi.org/simple/poetry-core/
  Given no hashes to check 8 links for project 'poetry-core': discarding no candidates
  Collecting poetry-core>=1.0.0
    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-fn2i8j09
    Looking up "https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl" in the cache
    Current age based on date: 775155
    Ignoring unknown cache-control directive: immutable
    Freshness lifetime from max-age: 365000000
    The response is "fresh", returning cached response
    365000000 > 775155
    Using cached poetry_core-1.0.3-py2.py3-none-any.whl (424 kB)
    Added poetry-core>=1.0.0 from https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
    Removed poetry-core>=1.0.0 from https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
  1 location(s) to search for versions of toml:
  * https://pypi.org/simple/toml/
  Fetching project page and analyzing links: https://pypi.org/simple/toml/
  Getting page https://pypi.org/simple/toml/
  Found index url https://pypi.org/simple
  Looking up "https://pypi.org/simple/toml/" in the cache
  Request header has "max_age" as 0, cache bypassed
  https://pypi.org:443 "GET /simple/toml/ HTTP/1.1" 304 0
    Found link https://files.pythonhosted.org/packages/11/79/d88a538950184342693ed829db6a59999513eade0706a26f4bf6f76122fa/toml-0.6.0.tar.gz#sha256=0103cd3598cac83f5c4eb281c1e3381aec214776b8c719a373c7d07f52c18d9b (from https://pypi.org/simple/toml/), version: 0.6.0
    Found link https://files.pythonhosted.org/packages/69/a4/f7d29d4cb673a6c18486802f84d287d48cdd2af810d6df4211194967aa20/toml-0.6.5.tar.gz#sha256=e4d9f53755b2bdeab220b455b6654ba1080f2eee3dc3ab9adf245762c3de9f2b (from https://pypi.org/simple/toml/), version: 0.6.5
    Found link https://files.pythonhosted.org/packages/9d/79/457a4f0212935884ac2b5632d88f69a0123825fae5a1da42119f6bc5649a/toml-0.7.0.tar.gz#sha256=58bf09e991d5474191420d206b72fa6f50ac5503269c5bd936123e4b545342f2 (from https://pypi.org/simple/toml/), version: 0.7.0
    Found link https://files.pythonhosted.org/packages/a2/98/a1b3df99dfe03b7a9cf9ccfd8fb53957cb882c5d25110f9852cb119a92d9/toml-0.7.1.tar.gz#sha256=53dd619be5a027e9c8510dd492113f643df1cccc13188a8698914e51720a1a89 (from https://pypi.org/simple/toml/), version: 0.7.1
    Found link https://files.pythonhosted.org/packages/72/e4/c69b62ee516758aff09aee08bbbef965b6b94bc10a1cf11f05f8d36a3b4c/toml-0.8.0.tar.gz#sha256=24250090512f1295d75f3db558ba26130b56b7dec7d30abbfc3bbde89a67825d (from https://pypi.org/simple/toml/), version: 0.8.0
    Found link https://files.pythonhosted.org/packages/ea/b9/caf57d47c401a37a538b5d27660391b763425d888261af2441c2432fb6be/toml-0.8.1.tar.gz#sha256=b9fa91d6fa70958c47905be17750283692c95ef06fac52671229c461b49d503d (from https://pypi.org/simple/toml/), version: 0.8.1
    Found link https://files.pythonhosted.org/packages/92/f4/559c5dfe5755c5730ba18cb8c8f06c49789d9e1880219f9565b6f1352acf/toml-0.8.2.tar.gz#sha256=1260e1b94ca934ab48229720a88ce71910c886e136e209b8d76a83528c56e499 (from https://pypi.org/simple/toml/), version: 0.8.2
    Found link https://files.pythonhosted.org/packages/0c/d4/48756e8b47c7638695646de87529ea7d6feba132b741a8970a17eeeebeed/toml-0.9.0.tar.gz#sha256=d803e90b790ca561ae08f77c7b728ca11185d646c769d09d965879c129ef0dee (from https://pypi.org/simple/toml/), version: 0.9.0
    Found link https://files.pythonhosted.org/packages/5c/44/23bda89772ea8da0c4561637b6694abd1d21805e107bc324e66f4b54cdb3/toml-0.9.1.tar.gz#sha256=e835834f1de5c60657e588a4cc48544945e03569a3d9f8b489436abb987840cf (from https://pypi.org/simple/toml/), version: 0.9.1
    Found link https://files.pythonhosted.org/packages/5c/b2/8a18ced00a43f2cc5261f9ac9f1c94621251400a80db1567177719355177/toml-0.9.2.tar.gz#sha256=b3953bffe848ad9a6d554114d82f2dcb3e23945e90b4d9addc9956f37f336594 (from https://pypi.org/simple/toml/), version: 0.9.2
    Found link https://files.pythonhosted.org/packages/af/06/edd820aa8a04ba82354a841af00aa28dcde391a7759a1e34579bb33d63bf/toml-0.9.3.1.tar.gz#sha256=e1e8c220046889234df5ec688d6f97b734fc4a08a6d8edfc176f4e6abf90cfb5 (from https://pypi.org/simple/toml/), version: 0.9.3.1
    Found link https://files.pythonhosted.org/packages/f5/f9/044110c267e6408013b85166a7cfcd352cf85275aa8ce700aa5c0eb407ba/toml-0.9.4.tar.gz#sha256=8e86bd6ce8cc11b9620cb637466453d94f5d57ad86f17e98a98d1f73e3baab2d (from https://pypi.org/simple/toml/), version: 0.9.4
    Found link https://files.pythonhosted.org/packages/c7/19/76c3cb84949a0593767b32b9be83a604d8a68c3580ff5d0ee64856b39ade/toml-0.9.6-py2.py3-none-any.whl#sha256=a7901919d3e4f92ffba7ff40a9d697e35bbbc8a8049fe8da742f34c83606d957 (from https://pypi.org/simple/toml/), version: 0.9.6
    Found link https://files.pythonhosted.org/packages/0e/e8/1aa958599e5326b690a31334112da68a9b75e7563879e2c5103ca219d30a/toml-0.9.6.tar.gz#sha256=380178cde50a6a79f9d2cf6f42a62a5174febe5eea4126fe4038785f1d888d42 (from https://pypi.org/simple/toml/), version: 0.9.6
    Skipping link: unsupported archive format: .egg: https://files.pythonhosted.org/packages/07/33/ccf5b4258d599e66fb6a4a4d0d10d4ee24cefd201f1a269c0321ce9a9ca9/toml-0.10.0-py2.7.egg#sha256=f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3 (from https://pypi.org/simple/toml/)
    Found link https://files.pythonhosted.org/packages/a2/12/ced7105d2de62fa7c8fb5fce92cc4ce66b57c95fb875e9318dba7f8c5db0/toml-0.10.0-py2.py3-none-any.whl#sha256=235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e (from https://pypi.org/simple/toml/), version: 0.10.0
    Found link https://files.pythonhosted.org/packages/b9/19/5cbd78eac8b1783671c40e34bb0fa83133a06d340a38b55c645076d40094/toml-0.10.0.tar.gz#sha256=229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c (from https://pypi.org/simple/toml/), version: 0.10.0
    Found link https://files.pythonhosted.org/packages/9f/e1/1b40b80f2e1663a6b9f497123c11d7d988c0919abbf3c3f2688e448c5363/toml-0.10.1-py2.py3-none-any.whl#sha256=bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88 (from https://pypi.org/simple/toml/), version: 0.10.1
    Found link https://files.pythonhosted.org/packages/da/24/84d5c108e818ca294efe7c1ce237b42118643ce58a14d2462b3b2e3800d5/toml-0.10.1.tar.gz#sha256=926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f (from https://pypi.org/simple/toml/), version: 0.10.1
    Found link https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b (from https://pypi.org/simple/toml/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*), version: 0.10.2
    Found link https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz#sha256=b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f (from https://pypi.org/simple/toml/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*), version: 0.10.2
  Skipping link: not a file: https://pypi.org/simple/toml/
  Given no hashes to check 20 links for project 'toml': discarding no candidates
  Collecting toml
    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-ltixwryu
    Looking up "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl" in the cache
    Current age based on date: 10284827
    Ignoring unknown cache-control directive: immutable
    Freshness lifetime from max-age: 365000000
    The response is "fresh", returning cached response
    365000000 > 10284827
    Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)
    Added toml from https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
    Removed toml from https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-fd4oj5kp
  Installing collected packages: toml, poetry-core


  WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
  distutils: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay/include/python3.9/UNKNOWN
  sysconfig: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay/include/python3.9
  WARNING: Additional context:
  user = False
  home = None
  root = None
  prefix = '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay'
  Successfully installed poetry-core-1.0.3 toml-0.10.2
  Removed build tracker: '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
  Installing build dependencies ... done
  Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/tmp0xlywr_8
  Getting requirements to build wheel ... done
    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-modern-metadata-t6u0ndc0
    Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py prepare_metadata_for_build_wheel /var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/tmp34_4sd9w
    Preparing wheel metadata ... done
  Source in /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3 has version 0.7.0a0, which satisfies requirement steamio==0.7.0a0 from git+https://github.com/Gobot1234/steam.py.git
  Removed steamio==0.7.0a0 from git+https://github.com/Gobot1234/steam.py.git from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'
Requirement already satisfied: betterproto==2.0.0b3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (2.0.0b3)
Requirement already satisfied: aiohttp<3.8.0,>=3.7.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (3.7.3)
Requirement already satisfied: rsa>=4.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (4.6)
Requirement already satisfied: beautifulsoup4>=4.9.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (4.9.3)
Requirement already satisfied: typing-extensions==3.7.4.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (3.7.4.3)
Requirement already satisfied: grpclib<0.5.0,>=0.4.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from betterproto==2.0.0b3->steamio==0.7.0a0) (0.4.1)
Requirement already satisfied: python-dateutil<3.0,>=2.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from betterproto==2.0.0b3->steamio==0.7.0a0) (2.8.1)
Requirement already satisfied: yarl<2.0,>=1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (1.6.3)
Requirement already satisfied: attrs>=17.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (20.3.0)
Requirement already satisfied: async-timeout<4.0,>=3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (3.0.1)
Requirement already satisfied: chardet<4.0,>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (3.0.4)
Requirement already satisfied: multidict<7.0,>=4.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (5.1.0)
Requirement already satisfied: soupsieve>1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from beautifulsoup4>=4.9.1->steamio==0.7.0a0) (2.1)
Requirement already satisfied: h2<5,>=3.1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (4.0.0)
Requirement already satisfied: hyperframe<7,>=6.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from h2<5,>=3.1.0->grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (6.0.0)
Requirement already satisfied: hpack<5,>=4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from h2<5,>=3.1.0->grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (4.0.0)
Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from python-dateutil<3.0,>=2.8->betterproto==2.0.0b3->steamio==0.7.0a0) (1.15.0)
Requirement already satisfied: pyasn1>=0.1.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from rsa>=4.6->steamio==0.7.0a0) (0.4.8)
Requirement already satisfied: idna>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from yarl<2.0,>=1.0->aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (2.10)
Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-y0qh6n9t
WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>
distutils: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/UNKNOWN
sysconfig: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9
WARNING: Additional context:
user = False
home = None
root = None
prefix = None
Removed build tracker: '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

>>> import steam
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
"/steam.py/steam/__init__.py", line 11, in <module>
    from .__metadata__ import *
ModuleNotFoundError: No module named 'steam.__metadata__'

Gobot1234 avatar Apr 27 '21 07:04 Gobot1234

@abn The details from the non-poetry based build.py not being ran

pyproject.toml


[tool.poetry]

name = "steamio"

version = "0.7.0a"

description = "A Python wrapper for the Steam API"

authors = ["Gobot1234"]

license = "MIT"

keywords = ["steam.py", "steam", "steamio", "steam-api"]

classifiers=[

    "Development Status :: 5 - Production/Stable",

    "Framework :: AsyncIO",

    "Intended Audience :: Developers",

    "Natural Language :: English",

    "Operating System :: OS Independent",

    "Topic :: Software Development :: Libraries",

    "Topic :: Software Development :: Libraries :: Python Modules",

    "Typing :: Typed",

]

include = [

    "LICENSE",

    "steam/__metadata__.py",

    "steam/py.typed",

    "steam/ext/__init__.pyi",

]

packages = [

    { include = "steam" },

]



[tool.poetry.build]

script = "build.py"

generate-setup-file = false



[tool.poetry.urls]

"Documentation" = "https://steampy.readthedocs.io/en/latest"

"Code" = "https://github.com/Gobot1234/steam.py"

"Bug Tracker" = "https://github.com/Gobot1234/steam.py/issues"



[tool.poetry.dependencies]

python = "^3.7"

aiohttp = ">=3.7.0,<3.8.0"

beautifulsoup4 = ">=4.9.1"

rsa = ">=4.6"

betterproto = "2.0.0b3"

typing-extensions = "3.7.4.3"

importlib-metadata = { version = ">=1.7.0", python = "<3.8" }



# docs option

sphinx = { version = "3.5.4", optional = true }

sphinxcontrib_trio = { version = "1.1.2", optional = true }

csscompressor = { version = "*", optional = true }

htmlmin = { version = "*", optional = true }

rjsmin = { version = "*", optional = true }





[tool.poetry.extras]

docs = ["sphinx", "sphinxcontrib_trio", "csscompressor", "htmlmin", "rjsmin"]



[tool.poetry.dev-dependencies]

black = "^21.4b0"

isort = "*"

flake8 = "*"

pytest = "*"

pytest-asyncio = "*"

mypy = "*"



[build-system]

requires = ["poetry-core>=1.0.0", "toml"]

build-backend = "poetry.core.masonry.api"

build.py file




from __future__ import annotations



import pathlib

import re

import subprocess

from typing import Any



import toml



ROOT = pathlib.Path(".").resolve()

PYPROJECT = toml.load(ROOT / "pyproject.toml")

try:

    VERSION: str = PYPROJECT["tool"]["poetry"]["version"]

except KeyError:

    raise RuntimeError("Version is not set") from None





RELEASE_LEVELS = {

    "a": "alpha",

    "b": "beta",

    "rc": "candidate",

}



try:

    end_char = re.findall(r"\d+.\d+.\d+([^\d]*).*", VERSION)[0]

except IndexError:

    end_char = ""

    release_level = "final"

else:

    release_level = RELEASE_LEVELS[end_char]



if release_level != "final":

    # try to find out the commit hash if checked out from git, and append it to __version__ (since we use this value

    # from setup.py, it gets automatically propagated to an installed copy as well)

    try:

        out = subprocess.check_output("git rev-list --count HEAD")

        if out:

            VERSION = f"{VERSION}{out.strip()}"

        out = subprocess.check_output("git rev-parse --short HEAD")

        if out:

            VERSION = f"{VERSION}+g{out.strip()}"

    except Exception:

        pass





major, minor, micro = VERSION.split(".")

micro = micro.split(end_char, maxsplit=1)[0]

file = f"""from typing import NamedTuple

from typing_extensions import Literal

__all__ = (

    "__title__",

    "__author__",

    "__license__",

    "__version__",

    "version_info",

)

class VersionInfo(NamedTuple):

    major: int

    minor: int

    micro: int

    releaselevel: Literal["alpha", "beta", "candidate", "final"]

__title__ = "steam"

__author__ = "Gobot1234"

__license__ = "MIT"

__version__ = "{VERSION}"

version_info = VersionInfo(major={major}, minor={minor}, micro={micro}, releaselevel="{release_level}")

"""





def build(setup_kwargs: dict[str, Any]) -> None:

    metadata = ROOT / "steam" / "__metadata__.py"

    metadata.write_text(file)

Verbose pip install log


James@Jamess-MacBook-Air ~ % python3 -m pip install -U git+https://github.com/Gobot1234/steam.py.git --verbose

Using pip 21.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>

distutils: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/UNKNOWN

sysconfig: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9

WARNING: Additional context:

user = False

home = None

root = None

prefix = None

Non-user install because site-packages writeable

Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-ephem-wheel-cache-1kup9cm4

Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

Initialized build tracking at /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

Created build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

Entered build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-install-qf_oz4vk

Collecting git+https://github.com/Gobot1234/steam.py.git

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3

  Cloning https://github.com/Gobot1234/steam.py.git to /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3

  Running command git clone -q https://github.com/Gobot1234/steam.py.git /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3

  Added git+https://github.com/Gobot1234/steam.py.git to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w

  Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w/__env_pip__.zip/pip install --ignore-installed --no-user --prefix /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay --no-warn-script-location -v --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'poetry-core>=1.0.0' toml

  Using pip 21.1 from /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-standalone-pip-61b82u3w/__env_pip__.zip/pip (python 3.9)

  Non-user install by explicit request

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-ephem-wheel-cache-ziz11f7j

  Created build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

  Entered build tracker: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-install-si3kzawp

  1 location(s) to search for versions of poetry-core:

  * https://pypi.org/simple/poetry-core/

  Fetching project page and analyzing links: https://pypi.org/simple/poetry-core/

  Getting page https://pypi.org/simple/poetry-core/

  Found index url https://pypi.org/simple

  Looking up "https://pypi.org/simple/poetry-core/" in the cache

  Request header has "max_age" as 0, cache bypassed

  Starting new HTTPS connection (1): pypi.org:443

  https://pypi.org:443 "GET /simple/poetry-core/ HTTP/1.1" 304 0

    Found link https://files.pythonhosted.org/packages/a5/6a/ae017843c144c627b37c125134ab32fd1287fcb2bc95793cd00af2c584af/poetry-core-1.0.0a0.tar.gz#sha256=361a8cdcb833c14c0e754fe12ccf0f23a1c8b6261095279d9272a759e8935396 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a0

    Found link https://files.pythonhosted.org/packages/65/9d/2c3285421474412a0b16048b6405cf45615bb8c2437bba2e99f20801a2cc/poetry_core-1.0.0a0-py2.py3-none-any.whl#sha256=8161315a5ae9984af7ffe1004644a462ffbbc9736d2890f40345ddb857e732a1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a0

    Found link https://files.pythonhosted.org/packages/b9/9d/ee3b9c3ca4e15562bf3bc383d64ab1a11c6434c187ca6c951c3327f72c51/poetry-core-1.0.0a1.tar.gz#sha256=8baeb2d9980091bf8e4375c0f6a87e19a8d56083bdfb5a3875a7bd57befc257e (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a1

    Found link https://files.pythonhosted.org/packages/50/a6/ede2185e777bbce89530c3f1c7f5ef155eb8510fa8655af77a1763de72b2/poetry_core-1.0.0a1-py2.py3-none-any.whl#sha256=ed6c10cd45b91281e535f6ae5d223d9347278ef847805307615b32269693eb73 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a1

    Found link https://files.pythonhosted.org/packages/17/c6/05e0e09b564178dd7b81821dd5448d9d366f6dccccd28c2dfe5cda7c8183/poetry-core-1.0.0a2.tar.gz#sha256=7ca384da50b14cf163f6cf04d3b0900bdb32aefa04b13652a49551090722f188 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a2

    Found link https://files.pythonhosted.org/packages/b2/f8/aa9dbbd5cab341ac91aa13dea969732f15f02b0e5f963c339f0629147215/poetry_core-1.0.0a2-py2.py3-none-any.whl#sha256=e742467689173a282d9f83d35a72f7e42ac5543cb6ad55130aebbc4e314c8302 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a2

    Found link https://files.pythonhosted.org/packages/7d/38/bbc4ecee9c0cf121d7354733e2778d708fc30da48395e20069f2487333bc/poetry-core-1.0.0a3.tar.gz#sha256=02d1bfed4a53dbe8570c6bc94164d7a5e1b01630f74174f03bc932e8b334be5a (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a3

    Found link https://files.pythonhosted.org/packages/1c/bc/905daad562b9b6114044f156188f965e1f3ffa8e8486bef7633482657457/poetry_core-1.0.0a3-py2.py3-none-any.whl#sha256=2351a1e3a8e18414236f1c7db31c0c7d19bd240c27b5540abf9d81156a10da4c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a3

    Found link https://files.pythonhosted.org/packages/cc/7a/8103474ff3820db01120cfc4a7ee3e4c69620703b6c92939783f8d99a0ef/poetry-core-1.0.0a4.tar.gz#sha256=a95aa0454b539ca6f98056aac5743de273762161aaf2db68152b8510de6849f1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a4

    Found link https://files.pythonhosted.org/packages/3e/b4/57fa9a5a7723814045dd6869b4c2865001b62b0ecaa80c5fe721d8e94416/poetry_core-1.0.0a4-py2.py3-none-any.whl#sha256=2c6b7be852f9eb772823fcff8a0a912b49cbe57c6dfe26f17799df65eccee8b8 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a4

    Found link https://files.pythonhosted.org/packages/b7/70/5c287bd1e7c8c86a318755514e02c6d431335de541c43eef65d0fb5af955/poetry-core-1.0.0a5.tar.gz#sha256=afac65874baf2030328f43df840cec2b5a17bcdad0a04c55b0f830e444ef1120 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a5

    Found link https://files.pythonhosted.org/packages/a3/15/e4992c1fd66765a47b267f3d390e67066ff16764d419101dc9af7cb0d6a6/poetry_core-1.0.0a5-py2.py3-none-any.whl#sha256=ffbd0512d80affce937ce53db2d35bf28ea52d287bae61da5b5d63058618d6b9 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a5

    Found link https://files.pythonhosted.org/packages/7b/c9/f6acb3b355be9cebb7c9e40c5db24f1da6592fe16754de0472c8659cef77/poetry-core-1.0.0a6.tar.gz#sha256=965869ce488869e473f5afb96e6155724fce9ce8ed2ef71c7e47a900c6159ea8 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a6

    Found link https://files.pythonhosted.org/packages/37/07/1c188d7ea2c91a5e792dde29aa6d931e84a44f4f5cf06342ab85d5cead94/poetry_core-1.0.0a6-py2.py3-none-any.whl#sha256=440d3b43b64db47c2c348f784f770a1cbc83ae0aacb4f66d9f2f82b35366303f (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a6

    Found link https://files.pythonhosted.org/packages/45/1d/34f0f441d48bece9c92488977ce4aa72f464e79bb8e9c8f454976864bcaf/poetry-core-1.0.0a7.tar.gz#sha256=f627d32e0c78e7219e0f3b040f3a2a6a6eb9074e0cc04f8d0fec13f258013929 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a7

    Found link https://files.pythonhosted.org/packages/a9/f4/b65a655c632e11ffdd156beb2965cd0876d01317c0a589fdbd519d015932/poetry_core-1.0.0a7-py2.py3-none-any.whl#sha256=ccaf834e5e015452fa637781c0125c24458dc66eb7af2db88a6d3cba1c42f6e0 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a7

    Found link https://files.pythonhosted.org/packages/1b/47/3f770be8226e0e34d40dbe42e19076c793194ea936163c9fb1c79e9510f5/poetry-core-1.0.0a8.tar.gz#sha256=02237e5abaa4fda4ef865cc49111a3f8a7999cfb149b30d5e93f85c3acdc4d95 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a8

    Found link https://files.pythonhosted.org/packages/43/68/084aa9085f903b19ea85f1993035998cb78ebdb244648a097b39b6c37755/poetry_core-1.0.0a8-py2.py3-none-any.whl#sha256=d7d9e702fbae06c05abb1ada63678e940d746b2696f4601b951b27ac7c2c5337 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a8

    Found link https://files.pythonhosted.org/packages/90/cd/b65ab6b3a3a44a474f43a7906f31a1b159ffa63bebd7125ed1f91c06c5e4/poetry-core-1.0.0a9.tar.gz#sha256=f08e9829fd06609ca5615faa91739b589eb71e025a6aaf7ddffb698676eb7c8c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a9

    Found link https://files.pythonhosted.org/packages/6f/d3/dd3d7c608d495b3f2a5f0dd40c2901e6c1d6aceba6e3f3131147f9259b3e/poetry_core-1.0.0a9-py2.py3-none-any.whl#sha256=79a63629ae44533ba9aa828e0eff0002c61b3af5fc9bec212e006cc643f4eb19 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0a9

    Found link https://files.pythonhosted.org/packages/dc/c9/d0a648ca07e20810d889f33d0ea3ddc7ef610f42510305dc484a00425ed0/poetry-core-1.0.0b1.tar.gz#sha256=c7a64770780f6a4998eee1e260fc3b7e22fa1c9b94b05c0faa13aa512f95eaa1 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0b1

    Found link https://files.pythonhosted.org/packages/db/81/6447beb70ca2ab3274046b1276b6301782392cd39e0e946dc4d08f7f8c3b/poetry_core-1.0.0b1-py2.py3-none-any.whl#sha256=92d2a33c27c733e746425c6506fdf583909e3ce5de4591deb23a4efb13f1a72c (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0b1

    Found link https://files.pythonhosted.org/packages/90/2c/b440db634995f35cf7430b6a6c030ac629858e7620edb28992e89a08ec53/poetry-core-1.0.0rc1.tar.gz#sha256=aad65fe96586f741afe582590912ad8e82823671c46c2550a8f9dc74cd4f769d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc1

    Found link https://files.pythonhosted.org/packages/5a/98/47251b64c62f949ece8f5e6b6086a4cc591df364ca2fdbc80d96e7b7b271/poetry_core-1.0.0rc1-py2.py3-none-any.whl#sha256=f63476c92d4d6205ea4fd28a9a9496a465ad15f573ce974dd3ef3a7807c4a919 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc1

    Found link https://files.pythonhosted.org/packages/10/dd/21b1c5e89504bfa746b58cdecaeae3cf423f438f690706b3ea3a68f562bf/poetry-core-1.0.0rc2.tar.gz#sha256=abbe4059433e6d51aff024986b19919319e084592203f17e5354e7c0a7dee6f4 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc2

    Found link https://files.pythonhosted.org/packages/32/67/9906f8cd22b09d17aa1d5998e7284ecb4099a7886734d65febf4561538df/poetry_core-1.0.0rc2-py2.py3-none-any.whl#sha256=f536d59ee0be81f7c689a1a30e9894cb24abeb23f4ff4e2130583fca9863272d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc2

    Found link https://files.pythonhosted.org/packages/a0/90/93840d54683cd7f407fc83cb5a998e4d758cf53b879e59689db292785a7c/poetry-core-1.0.0rc3.tar.gz#sha256=0e3d23a4c5acc14c5f1703b12645692bf24461c8c8e3fff32ca80a5462beccdf (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc3

    Found link https://files.pythonhosted.org/packages/89/ef/5170513520199fef278f3dfe110f1ddb6607103453c7f1db2543dbc4f9d8/poetry_core-1.0.0rc3-py2.py3-none-any.whl#sha256=2c9ee2b3f7b40047bafdc2239fbb9de73637edc07a9697a3a66ac15fe6b040f5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0rc3

    Found link https://files.pythonhosted.org/packages/42/21/5335c7eceff3dccb3b415018bb17db0c442b599f610fd5712021d5f9403f/poetry-core-1.0.0.tar.gz#sha256=6a664ff389b9f45382536f8fa1611a0cb4d2de7c5a5c885db1f0c600cd11fbd5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0

    Found link https://files.pythonhosted.org/packages/4f/c1/2222bcb8040b32c2119bb70ac59711fd916f6f029d598439a2fecaab9b55/poetry_core-1.0.0-py2.py3-none-any.whl#sha256=769288e0e1b88dfcceb3185728f0b7388b26d5f93d6c22d2dcae372da51d200d (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.0

    Found link https://files.pythonhosted.org/packages/26/b8/8156fb0992cc8cbde9d3ad74c467aa8ab454a7fc6a34f701255b57c7b5da/poetry-core-1.0.1.tar.gz#sha256=a54bbb12c445b266eee0faf5d38f09dae9860cffa32ad7d99c7b345c94fb6f7b (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.1

    Found link https://files.pythonhosted.org/packages/ba/21/4b0a3fa8f42518c885955c924dcca6eeb7b8ebbc30b71c5ff00b0abe090b/poetry_core-1.0.1-py2.py3-none-any.whl#sha256=94db888849966730a12111a2530548b01b0c22720b69d5561648af8de6a3ea5f (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.1

    Found link https://files.pythonhosted.org/packages/d7/5a/58944c8905bb2519ae58cfab0a663fdfd88c692a6bdc51cc99416cd2f9e8/poetry-core-1.0.2.tar.gz#sha256=ff505d656a6cf40ffbf84393d8b5bf37b78523a15def3ac473b6fad74261ee71 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.2

    Found link https://files.pythonhosted.org/packages/a0/56/d7923fb39395c662bab9e6044e290458a77204ea3cafc3b1ea88e27b8f4c/poetry_core-1.0.2-py2.py3-none-any.whl#sha256=ee0ed4164440eeab27d1b01bc7b9b3afdc3124f68d4ea28d0821a402a9c7c044 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.2

    Found link https://files.pythonhosted.org/packages/d0/b3/1017f2f6d801f1e3e4ffee3f058a10d20df1a9560aba9c5b49e92cdd9912/poetry-core-1.0.3.tar.gz#sha256=2315c928249fc3207801a81868b64c66273077b26c8d8da465dccf8f488c90c5 (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.3

    Found link https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a (from https://pypi.org/simple/poetry-core/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 1.0.3

    Found link https://files.pythonhosted.org/packages/5a/32/90805a7927d4d3c64a03e37e71e4086b35528ab0941ca0dd772149f54308/poetry-core-1.1.0a1.tar.gz#sha256=e73d8728904a05318a972315b0c68f53e5cf5314f540f57c232cc92acc699934 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a1

    Found link https://files.pythonhosted.org/packages/c0/1d/84f368958a065ed0825daf05ee68bab2e8c33c27a5d837aaf0af7863908c/poetry_core-1.1.0a1-py3-none-any.whl#sha256=eb1630413dece7c7b385c61a3d1bffaae9fc9f80075479ef5adb5afb49a1877f (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a1

    Found link https://files.pythonhosted.org/packages/3a/8a/45f9bdaabcebb3a92320457d67d123ca8c81812da3c473e0c52280ad7db1/poetry-core-1.1.0a2.tar.gz#sha256=f9c95c06aee80c3f9251cc7d1005f9bcc2adc8a81296474b373432973e1e6fef (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a2

    Found link https://files.pythonhosted.org/packages/c5/00/826928996815d97ff75aef4ad3ac45b86b9c7d0f2079e5281b909fab00f4/poetry_core-1.1.0a2-py3-none-any.whl#sha256=60e11977e8d767e575683ffb17c42eac8fdc45e262480e80010e8d37d879f286 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a2

    Found link https://files.pythonhosted.org/packages/53/bf/e464e2a6b8e7688a964a76bdaa800ba32d8f2c9226de036720e1fbd67532/poetry-core-1.1.0a3.tar.gz#sha256=579f35c98b0cdbc4e0fd2f7172de7deca74849a2ccfef05bf1df71d3855aa421 (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a3

    Found link https://files.pythonhosted.org/packages/5c/c7/4fca8817212797f1b6426e0d2c68eef4a616787ea8e92964a233ad180aee/poetry_core-1.1.0a3-py3-none-any.whl#sha256=406da64d43dc0b954a1f446f8ec1b7f21e02cb8307542e8c366fa184a86f5c2e (from https://pypi.org/simple/poetry-core/) (requires-python:>=3.6,<4.0), version: 1.1.0a3

  Skipping link: not a file: https://pypi.org/simple/poetry-core/

  Given no hashes to check 8 links for project 'poetry-core': discarding no candidates

  Collecting poetry-core>=1.0.0

    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-fn2i8j09

    Looking up "https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl" in the cache

    Current age based on date: 775155

    Ignoring unknown cache-control directive: immutable

    Freshness lifetime from max-age: 365000000

    The response is "fresh", returning cached response

    365000000 > 775155

    Using cached poetry_core-1.0.3-py2.py3-none-any.whl (424 kB)

    Added poetry-core>=1.0.0 from https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

    Removed poetry-core>=1.0.0 from https://files.pythonhosted.org/packages/bf/e1/08c7478df1e93dea47b06c9d9a80dbb54af7421462e1b22c280d063df807/poetry_core-1.0.3-py2.py3-none-any.whl#sha256=c6bde46251112de8384013e1ab8d66e7323d2c75172f80220aba2bc07e208e9a from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

  1 location(s) to search for versions of toml:

  * https://pypi.org/simple/toml/

  Fetching project page and analyzing links: https://pypi.org/simple/toml/

  Getting page https://pypi.org/simple/toml/

  Found index url https://pypi.org/simple

  Looking up "https://pypi.org/simple/toml/" in the cache

  Request header has "max_age" as 0, cache bypassed

  https://pypi.org:443 "GET /simple/toml/ HTTP/1.1" 304 0

    Found link https://files.pythonhosted.org/packages/11/79/d88a538950184342693ed829db6a59999513eade0706a26f4bf6f76122fa/toml-0.6.0.tar.gz#sha256=0103cd3598cac83f5c4eb281c1e3381aec214776b8c719a373c7d07f52c18d9b (from https://pypi.org/simple/toml/), version: 0.6.0

    Found link https://files.pythonhosted.org/packages/69/a4/f7d29d4cb673a6c18486802f84d287d48cdd2af810d6df4211194967aa20/toml-0.6.5.tar.gz#sha256=e4d9f53755b2bdeab220b455b6654ba1080f2eee3dc3ab9adf245762c3de9f2b (from https://pypi.org/simple/toml/), version: 0.6.5

    Found link https://files.pythonhosted.org/packages/9d/79/457a4f0212935884ac2b5632d88f69a0123825fae5a1da42119f6bc5649a/toml-0.7.0.tar.gz#sha256=58bf09e991d5474191420d206b72fa6f50ac5503269c5bd936123e4b545342f2 (from https://pypi.org/simple/toml/), version: 0.7.0

    Found link https://files.pythonhosted.org/packages/a2/98/a1b3df99dfe03b7a9cf9ccfd8fb53957cb882c5d25110f9852cb119a92d9/toml-0.7.1.tar.gz#sha256=53dd619be5a027e9c8510dd492113f643df1cccc13188a8698914e51720a1a89 (from https://pypi.org/simple/toml/), version: 0.7.1

    Found link https://files.pythonhosted.org/packages/72/e4/c69b62ee516758aff09aee08bbbef965b6b94bc10a1cf11f05f8d36a3b4c/toml-0.8.0.tar.gz#sha256=24250090512f1295d75f3db558ba26130b56b7dec7d30abbfc3bbde89a67825d (from https://pypi.org/simple/toml/), version: 0.8.0

    Found link https://files.pythonhosted.org/packages/ea/b9/caf57d47c401a37a538b5d27660391b763425d888261af2441c2432fb6be/toml-0.8.1.tar.gz#sha256=b9fa91d6fa70958c47905be17750283692c95ef06fac52671229c461b49d503d (from https://pypi.org/simple/toml/), version: 0.8.1

    Found link https://files.pythonhosted.org/packages/92/f4/559c5dfe5755c5730ba18cb8c8f06c49789d9e1880219f9565b6f1352acf/toml-0.8.2.tar.gz#sha256=1260e1b94ca934ab48229720a88ce71910c886e136e209b8d76a83528c56e499 (from https://pypi.org/simple/toml/), version: 0.8.2

    Found link https://files.pythonhosted.org/packages/0c/d4/48756e8b47c7638695646de87529ea7d6feba132b741a8970a17eeeebeed/toml-0.9.0.tar.gz#sha256=d803e90b790ca561ae08f77c7b728ca11185d646c769d09d965879c129ef0dee (from https://pypi.org/simple/toml/), version: 0.9.0

    Found link https://files.pythonhosted.org/packages/5c/44/23bda89772ea8da0c4561637b6694abd1d21805e107bc324e66f4b54cdb3/toml-0.9.1.tar.gz#sha256=e835834f1de5c60657e588a4cc48544945e03569a3d9f8b489436abb987840cf (from https://pypi.org/simple/toml/), version: 0.9.1

    Found link https://files.pythonhosted.org/packages/5c/b2/8a18ced00a43f2cc5261f9ac9f1c94621251400a80db1567177719355177/toml-0.9.2.tar.gz#sha256=b3953bffe848ad9a6d554114d82f2dcb3e23945e90b4d9addc9956f37f336594 (from https://pypi.org/simple/toml/), version: 0.9.2

    Found link https://files.pythonhosted.org/packages/af/06/edd820aa8a04ba82354a841af00aa28dcde391a7759a1e34579bb33d63bf/toml-0.9.3.1.tar.gz#sha256=e1e8c220046889234df5ec688d6f97b734fc4a08a6d8edfc176f4e6abf90cfb5 (from https://pypi.org/simple/toml/), version: 0.9.3.1

    Found link https://files.pythonhosted.org/packages/f5/f9/044110c267e6408013b85166a7cfcd352cf85275aa8ce700aa5c0eb407ba/toml-0.9.4.tar.gz#sha256=8e86bd6ce8cc11b9620cb637466453d94f5d57ad86f17e98a98d1f73e3baab2d (from https://pypi.org/simple/toml/), version: 0.9.4

    Found link https://files.pythonhosted.org/packages/c7/19/76c3cb84949a0593767b32b9be83a604d8a68c3580ff5d0ee64856b39ade/toml-0.9.6-py2.py3-none-any.whl#sha256=a7901919d3e4f92ffba7ff40a9d697e35bbbc8a8049fe8da742f34c83606d957 (from https://pypi.org/simple/toml/), version: 0.9.6

    Found link https://files.pythonhosted.org/packages/0e/e8/1aa958599e5326b690a31334112da68a9b75e7563879e2c5103ca219d30a/toml-0.9.6.tar.gz#sha256=380178cde50a6a79f9d2cf6f42a62a5174febe5eea4126fe4038785f1d888d42 (from https://pypi.org/simple/toml/), version: 0.9.6

    Skipping link: unsupported archive format: .egg: https://files.pythonhosted.org/packages/07/33/ccf5b4258d599e66fb6a4a4d0d10d4ee24cefd201f1a269c0321ce9a9ca9/toml-0.10.0-py2.7.egg#sha256=f1db651f9657708513243e61e6cc67d101a39bad662eaa9b5546f789338e07a3 (from https://pypi.org/simple/toml/)

    Found link https://files.pythonhosted.org/packages/a2/12/ced7105d2de62fa7c8fb5fce92cc4ce66b57c95fb875e9318dba7f8c5db0/toml-0.10.0-py2.py3-none-any.whl#sha256=235682dd292d5899d361a811df37e04a8828a5b1da3115886b73cf81ebc9100e (from https://pypi.org/simple/toml/), version: 0.10.0

    Found link https://files.pythonhosted.org/packages/b9/19/5cbd78eac8b1783671c40e34bb0fa83133a06d340a38b55c645076d40094/toml-0.10.0.tar.gz#sha256=229f81c57791a41d65e399fc06bf0848bab550a9dfd5ed66df18ce5f05e73d5c (from https://pypi.org/simple/toml/), version: 0.10.0

    Found link https://files.pythonhosted.org/packages/9f/e1/1b40b80f2e1663a6b9f497123c11d7d988c0919abbf3c3f2688e448c5363/toml-0.10.1-py2.py3-none-any.whl#sha256=bda89d5935c2eac546d648028b9901107a595863cb36bae0c73ac804a9b4ce88 (from https://pypi.org/simple/toml/), version: 0.10.1

    Found link https://files.pythonhosted.org/packages/da/24/84d5c108e818ca294efe7c1ce237b42118643ce58a14d2462b3b2e3800d5/toml-0.10.1.tar.gz#sha256=926b612be1e5ce0634a2ca03470f95169cf16f939018233a670519cb4ac58b0f (from https://pypi.org/simple/toml/), version: 0.10.1

    Found link https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b (from https://pypi.org/simple/toml/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*), version: 0.10.2

    Found link https://files.pythonhosted.org/packages/be/ba/1f744cdc819428fc6b5084ec34d9b30660f6f9daaf70eead706e3203ec3c/toml-0.10.2.tar.gz#sha256=b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f (from https://pypi.org/simple/toml/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*), version: 0.10.2

  Skipping link: not a file: https://pypi.org/simple/toml/

  Given no hashes to check 20 links for project 'toml': discarding no candidates

  Collecting toml

    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-ltixwryu

    Looking up "https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl" in the cache

    Current age based on date: 10284827

    Ignoring unknown cache-control directive: immutable

    Freshness lifetime from max-age: 365000000

    The response is "fresh", returning cached response

    365000000 > 10284827

    Using cached toml-0.10.2-py2.py3-none-any.whl (16 kB)

    Added toml from https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b to build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

    Removed toml from https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#sha256=806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

  Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-fd4oj5kp

  Installing collected packages: toml, poetry-core





  WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>

  distutils: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay/include/python3.9/UNKNOWN

  sysconfig: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay/include/python3.9

  WARNING: Additional context:

  user = False

  home = None

  root = None

  prefix = '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-build-env-p4ufcs_0/overlay'

  Successfully installed poetry-core-1.0.3 toml-0.10.2

  Removed build tracker: '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

  Installing build dependencies ... done

  Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py get_requires_for_build_wheel /var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/tmp0xlywr_8

  Getting requirements to build wheel ... done

    Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-modern-metadata-t6u0ndc0

    Running command /Library/Frameworks/Python.framework/Versions/3.9/bin/python3 /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py prepare_metadata_for_build_wheel /var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/tmp34_4sd9w

    Preparing wheel metadata ... done

  Source in /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-build-1l34pck3 has version 0.7.0a0, which satisfies requirement steamio==0.7.0a0 from git+https://github.com/Gobot1234/steam.py.git

  Removed steamio==0.7.0a0 from git+https://github.com/Gobot1234/steam.py.git from build tracker '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'

Requirement already satisfied: betterproto==2.0.0b3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (2.0.0b3)

Requirement already satisfied: aiohttp<3.8.0,>=3.7.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (3.7.3)

Requirement already satisfied: rsa>=4.6 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (4.6)

Requirement already satisfied: beautifulsoup4>=4.9.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (4.9.3)

Requirement already satisfied: typing-extensions==3.7.4.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from steamio==0.7.0a0) (3.7.4.3)

Requirement already satisfied: grpclib<0.5.0,>=0.4.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from betterproto==2.0.0b3->steamio==0.7.0a0) (0.4.1)

Requirement already satisfied: python-dateutil<3.0,>=2.8 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from betterproto==2.0.0b3->steamio==0.7.0a0) (2.8.1)

Requirement already satisfied: yarl<2.0,>=1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (1.6.3)

Requirement already satisfied: attrs>=17.3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (20.3.0)

Requirement already satisfied: async-timeout<4.0,>=3.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (3.0.1)

Requirement already satisfied: chardet<4.0,>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (3.0.4)

Requirement already satisfied: multidict<7.0,>=4.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (5.1.0)

Requirement already satisfied: soupsieve>1.2 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from beautifulsoup4>=4.9.1->steamio==0.7.0a0) (2.1)

Requirement already satisfied: h2<5,>=3.1.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (4.0.0)

Requirement already satisfied: hyperframe<7,>=6.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from h2<5,>=3.1.0->grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (6.0.0)

Requirement already satisfied: hpack<5,>=4.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from h2<5,>=3.1.0->grpclib<0.5.0,>=0.4.1->betterproto==2.0.0b3->steamio==0.7.0a0) (4.0.0)

Requirement already satisfied: six>=1.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from python-dateutil<3.0,>=2.8->betterproto==2.0.0b3->steamio==0.7.0a0) (1.15.0)

Requirement already satisfied: pyasn1>=0.1.3 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from rsa>=4.6->steamio==0.7.0a0) (0.4.8)

Requirement already satisfied: idna>=2.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from yarl<2.0,>=1.0->aiohttp<3.8.0,>=3.7.0->steamio==0.7.0a0) (2.10)

Created temporary directory: /private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-unpack-y0qh6n9t

WARNING: Value for scheme.headers does not match. Please report this to <https://github.com/pypa/pip/issues/9617>

distutils: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9/UNKNOWN

sysconfig: /Library/Frameworks/Python.framework/Versions/3.9/include/python3.9

WARNING: Additional context:

user = False

home = None

root = None

prefix = None

Removed build tracker: '/private/var/folders/bd/p72x03b96rgczw4hyt2hhsyw0000gn/T/pip-req-tracker-5seuazu4'




>>> import steam

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

"/steam.py/steam/__init__.py", line 11, in <module>

    from .__metadata__ import *

ModuleNotFoundError: No module named 'steam.__metadata__'

The issue has been resolved I don't think the build function was being ran, just the module.

Gobot1234 avatar Apr 29 '21 19:04 Gobot1234

@Gobot1234, it seems it behaves differently for each distribution format: for sdist the build method gets called and for wheel the module gets called. Also, for sdist, the file is only taken into account if generate-setup-file is True (here is the call), and on the other hand, while building wheel, the module is run when generate-setup-file is False but the build method gets called when generate-setup-file is True (as SdistBuilder is used).

I'm not sure I'm right though, maybe @abn or any other member could confirm this?

LECbg avatar Jun 14 '21 14:06 LECbg

It sounds like there are some design decisions to be made around this (e.g. how much to automate vs how much responsibility to put on the build.py script) but it seems like a really crucial feature to support building extensions both during poetry install and poetry build in a consistent and documented way. I vote to prioritize this. I'm currently evangelizing poetry within my organization but it will be a hard sell without a supported way to build extensions.

medley56 avatar Jan 25 '22 22:01 medley56

I can say that from my point of view the current the build system works well and it covers all my needs. I've been using it extensively on my projects without issues. I'm sure that there are things that could be improved but the main issue seems to be that this feature is not documented at all, which I don't understand since it seems to work quite robustly. To me that would be the main priority.

Once 1.2 is out and supports editable installs, another thing that seems important is to make sure that editable installs of poetry projects also support the build system.

albireox avatar Jan 25 '22 23:01 albireox

@albireox I agree. As far as I can tell, the current system using build.py seems to work just fine. However, I am not an expert python package distributor and there might be details that I'm not aware of, like supporting various build types consistently (mentioned above by @LECbg). And yes, we need documentation. Also, just the phrasing of @abn 's comment from 2020 indicates that this is explicitly not supported. Before people will use it widely, that needs to change.

medley56 avatar Jan 26 '22 20:01 medley56

Just a note. If using script named build.py and building the wheel using build package, i.e. python -m build, if a build.py script is present, you get collision with the local build.py.

rdbisme avatar Feb 18 '22 16:02 rdbisme

Does anyone have an example of a build.py script that doesn't rely on the (deprecated, soon to be removed) distutils package? e.g. a replacement for the example given by @albireox? I'd like to suggest adding such an example build script to the documentation.

medley56 avatar Mar 02 '22 17:03 medley56

I'm using setuptools and cython, does this help? https://github.com/davidcortesortuno/poetry_cython_proj/blob/main/build.py

davidcortesortuno avatar Mar 02 '22 17:03 davidcortesortuno

@medley56 setuptools re-exports build_ext. This is what I use:

from setuptools.command.build_ext import build_ext

You can see in their source that this attempts to use the Cython build_ext that @davidcortesortuno is using, before falling back to the (deprecated) distutils version: https://github.com/pypa/setuptools/blob/e30999503add90052a1bbf4526c3025baed947f7/setuptools/command/build_ext.py#L14-L21

bbatliner avatar Mar 02 '22 18:03 bbatliner

This build.py script uses just setuptools.Distribution (there's a distutils import, but that only resolves an issue on macOS) and also shows how to use cffi to build the extension:

https://github.com/libmbd/libmbd/blob/master/build.py#L25-L46

jhrmnn avatar Mar 04 '22 08:03 jhrmnn

It seems like the expectation is that build scripts will only be used for building C-API extensions. However, there are other tools that may generate Python package components. In my case, I want to use Kaitai to create a binary reader from a Kaitai binary layout file (*.ksy). It seems like this could work, but adding a [tool.poetry.build] script seems to automatically change the type of the wheel that is created from a universal wheel (e.g. buildtest-0.2.0-py3-none-any.whl) to a platform wheel (e.g. buildtest-0.2.0-cp38-cp38-macosx_10_15_x86_64.whl). Kaitai generates pure python source code.

How are tools like Kaitai integrated into a Poetry build?

I have attached my test build files (for what it's worth... apparently python files cannot be attached so I added the "txt" extension).

pyproject.toml.txt kaitai.py.txt

schiebel avatar Jul 04 '22 01:07 schiebel

I've decided to play around with poetry + build.py + C extensions today and I put together a "hello world" package that builds a minimal extension and one that depends on an external C library.

The project lives here and my goal is to have a minimal example for myself (and others) for future reference. If somebody would like to take a look and see if I have any unnecessary parts in there that could be removed that would be appreciated :)


One thing that I've noticed is that all examples I found online rely on distutils to build the extensions. The build.py hook seems to do the same thing by generating a setup.py internally. However, distutils will get deprecated in python 3.10 and as far as I can tell, there is no good replacement for this in flight. The best I've seen is to rely on setuptools to build the extension, but it seems a bit counterintuitive to have poetry call on setuptools. Is there any discussion on what to do once distutils disappears?

FirefoxMetzger avatar Jul 22 '22 16:07 FirefoxMetzger

I think relying on setuptools is the only way forward. One, replicating all that functionality would be waste of time. Two, a lot of tooling around C extensions directly builds on top of setuptools.

Here's my setuptools-based build.py: https://github.com/libmbd/libmbd/blob/a3ce4b1bc3e27457299443a7fafafec8845c0333/build.py#L33-L46

jhrmnn avatar Jul 22 '22 17:07 jhrmnn

Here's my setuptools-based build.py:

Thanks :) I'm surface-level familiar with setuptools at best, but it looks like a copy/fork of distutils for all the places we care about when building C code, so I guess it is fairly easy to use from a build.py.

I guess this means that one also has to declare it as a build dependency in pyproject.toml?

FirefoxMetzger avatar Jul 23 '22 06:07 FirefoxMetzger

Thanks :) I'm surface-level familiar with setuptools at best, but it looks like a copy/fork of distutils for all the places we care about when building C code, so I guess it is fairly easy to use from a build.py.

That's my view as well.

I guess this means that one also has to declare it as a build dependency in pyproject.toml?

Correct.

jhrmnn avatar Jul 23 '22 07:07 jhrmnn

:sparkles: This is an old work account. Please reference @brandonchinn178 for all future communication :sparkles:


Note: this issue has similarities with https://github.com/python-poetry/poetry/issues/5701, as both has to do with customizing the build. Overall, it would be great to provide a simpler hooks system that supports both modifying existing logic (e.g. get version dynamically instead of from pyproject.toml) and building/processing files (e.g. C extension files, as discussed already in this issue).

Another use-case not mentioned in this discussion yet is preprocessing files. For example, my company strips out TODO comments and adds a copyright header to all the files in the build step (currently done by hooking into install_lib in setup.py). The distinction here from the C extension files is that C extensions can be built into a git-ignored directory and everything's fine, but when preprocessing files, you can't just write the new file back to be discovered by poetry, because you'd be leaving the file in a modified state afterwards.

brandon-leapyear avatar Sep 26 '22 22:09 brandon-leapyear

simpler hooks system that supports both modifying existing logic (e.g. get version dynamically instead of from pyproject.toml)

Just wanted to mention that this has been explicitly ruled out for inclusion in Poetry itself -- we don't intend to reinvent setuptools_scm, and as the plugin API and install mechanism matures/stabilizes it is intended to be the long term solution to this ask.

neersighted avatar Sep 26 '22 22:09 neersighted

:sparkles: This is an old work account. Please reference @brandonchinn178 for all future communication :sparkles:


Sorry, let me clarify:

A simpler hooks system that enables users/plugins to modify existing logic (e.g. get version dynamically).

I agree, Poetry shouldn't try to do dynamic version stuff. But I think a better fleshed out hooks system would make it easier to write plugins and custom build logic (when I say "hooks system", I think I mean the same thing you're saying by "plugin API"). The current system isn't great; #5701 goes into detail about how the current system doesn't really have hooks; it just allows plugins to monkeypatch things in Poetry. I think it would be better if Poetry could provide more first-class entrypoints into specific phases of Poetry's system, like what Pytest's plugin system provides.

(In fact, my current workaround monkeypatches poetry by subclassing WheelBuilder and defining my own logic in there. This is super fragile, as it depends on Poetry internals that could very well change between versions.)

The workaround I'm currently using to preprocess files

pyproject.toml

[build-system]
# hardpin because we're monkeypatching
requires = ["poetry-core==1.2.0"]
build-backend = "backend"
backend-path = ["./build_system/"]

myproject/build_system/backend.py

import tempfile
from pathlib import Path

import poetry.core.masonry.api as poetry
import poetry.core.masonry.builders.wheel as poetry_wheel

def prepare_metadata_for_build_wheel(metadata_directory, config_settings=None):
    return poetry.prepare_metadata_for_build_wheel(metadata_directory, config_settings)


def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
    monkeypatch_poetry()
    return poetry.build_wheel(wheel_directory, config_settings, metadata_directory)


def build_sdist(sdist_directory, config_settings=None):
    # we only build wheels, so we don't need this hook
    raise NotImplementedError("Create a wheel file instead.")

def monkeypatch_poetry():
    class MyWheelBuilder(poetry.WheelBuilder):
        def _add_file(self, wheel, full_path, rel_path):
            full_path = Path(full_path)
            rel_path = Path(rel_path)

            old_contents = full_path.read_text()
            new_contents = preprocess_file(rel_path, old_contents)

            with tempfile.TemporaryDirectory() as tmpdir:
                tmpfile = Path(tmpdir) / rel_path.name
                tmpfile.write_text(new_contents)
                super()._add_file(wheel, tmpfile, rel_path)

    def preprocess_file(path: Path, contents: str) -> str:
        # modify contents as desired
        return contents

    poetry_wheel.WheelBuilder = MyWheelBuilder

brandon-leapyear avatar Sep 26 '22 22:09 brandon-leapyear

That is the long term intention -- currently we need to figure out a stable API that can be consumed by plugins so they are not dependent on Poetry internals, and as part of that work we can decide what is unstable and needs entrypoints/hooks instead.

neersighted avatar Sep 26 '22 22:09 neersighted