python-poetry / poetry

Python packaging and dependency management made easy
https://python-poetry.org
MIT License
31.1k stars 2.25k forks source link

Stabilize 'build.py' #2740

Open padix-key opened 4 years ago

padix-key commented 4 years ago

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.

abn commented 4 years ago

@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"
albireox commented 4 years ago

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 commented 4 years ago

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.

abn commented 4 years ago

@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.

albireox commented 4 years ago

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.

abn commented 4 years ago

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.

ahobsonsayers commented 3 years ago

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?

abn commented 3 years ago

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

ahobsonsayers commented 3 years ago

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?

abn commented 3 years ago

@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.

Gobot1234 commented 3 years ago

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

pyproject.toml

```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

```py 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

```sh 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 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 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 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 commented 3 years ago

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

pyproject.toml

```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

```py 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

```sh 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 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 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 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.

LECbg commented 3 years ago

@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?

medley56 commented 2 years ago

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.

albireox commented 2 years ago

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.

medley56 commented 2 years ago

@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.

rdbisme commented 2 years ago

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.

medley56 commented 2 years ago

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.

davidcortesortuno commented 2 years ago

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

bbatliner commented 2 years ago

@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

jhrmnn commented 2 years ago

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

schiebel commented 2 years ago

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

FirefoxMetzger commented 2 years ago

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?

jhrmnn commented 2 years ago

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

FirefoxMetzger commented 2 years ago

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?

jhrmnn commented 2 years ago

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.

brandon-leapyear commented 1 year ago

: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.

neersighted commented 1 year ago

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.

brandon-leapyear commented 1 year ago

: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` ```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` ```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 ```
neersighted commented 1 year ago

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.

mwaddoups commented 1 year ago

I just wanted to check in on this issue as the lack of documentation around [tool.poetry.build] still suggests that this feature is not intended for stable use - and as pointed out by others, this can be a blocker for adoption of poetry in organisations that use Cython or otherwise need extension builds. It seems other people raise this in issues/discussions and just get pointed to this issue - which feels like documentation by proxy.

It seems to me that adding a section on custom build scripts to the existing documentation would make this easier. I think coming up with a good example set for the documentation is not straightforward as the use cases are quite varied - but we could perhaps list different uses and give an overview of how to write the file.

We could add "this feature is experimental and may break without warning" as well. But I would be curious to hear more about the reluctance to stabilise this feature?

Happy to do some initial work on writing docs in a PR if this would be welcome, I'm by no means an expert on all uses of this feature but I have time to help if needed :)

FirefoxMetzger commented 1 year ago

think coming up with a good example set for the documentation is not straightforward as the use cases are quite varied - but we could perhaps list different uses and give an overview of how to write the file.

@mwaddoups You might like this set of examples I put together a while back: https://github.com/FirefoxMetzger/mini-extension. It probably doesn't cover all the use cases, but we could easily extend it until it becomes big enough to cover all the major ones.

adam2392 commented 1 year ago

Hi, thanks for this great package!

I am loosely following this thread, but from what I understand the [tool.poetry.build] currently only supports a custom Python script script = build.py. Furthermore it is undocumented, so subject to change(?) However, I'm actually using meson to build my Cython / C/C++ files, which doesn't use a build.py script. My understanding is setuptools/distutils is going to be discontinued, so tryna get ahead of the curve here.

Is there anyway of using mesonpy with the following pyproject.toml and their running poetry build? If not, is there any plans on supporting a custom build backend, so running poetry build does the build?

[build-system]
build-backend = "mesonpy"
requires = [
    "meson-python>=0.12.0",
    'ninja',
]
xmnlab commented 1 year ago

Hey everyone It would be great to have a doc for that. It could flag it as experimental, so no worries to change it in the future. Also, pyopensci is creating a very nice and detailed guideline about the python package for scientific python projects, including build system. So if there is any documentation about that it would be helpful for the users understand how to use poetry for more complex building

lwasser commented 1 year ago

hi colleagues!! 👋 We are indeed working on a packaging guide for pyOpenSci, which has an open peer review process for python packages, that will support the scientific community in packaging needs.

Right now i'm working on a general diagram of the tool ecosystem to help users select a tool. I'm also creating a page that directs them to tools that support python packages that have extensions in other languages and thus need additional build steps:

Screen Shot 2023-02-16 at 9 38 56 AM

Because this feature is undocumented (unsupported?) then i want to be careful about including poetry as a tool that supports . Is the plan for this to be supported / documented etc in the future? Many thanks!!

Poetry is a great tool and it's clear it's one of the most popular packaging tools right now.

Screen Shot 2023-02-16 at 9 41 27 AM

so i do want to include it in our guide! many thanks for any feedback on this.

radoering commented 1 year ago

It would be great to have a doc for that. It could flag it as experimental, so no worries to change it in the future.

For me, that would be fine if other maintainers don't mind.

@lwasser Maybe a bit off-topic but what do you understand by "dependency management" if you think that poetry does not support it? Btw, poetry's build back-end is called "poetry-core".

lwasser commented 1 year ago

hi @radoering off topic for this issue but i've been meaning to reach out to the maintainer team as i want to represent poetry properly in our guide. That check / x on dependency management is a mistake on my end and I see you've updated it via a comment in our PR!! 🙌

I wondered - i'm going to push just that file overviewing tools to a new fresh PR built on a branch with all of those commits (that open pr has a lot of comments).

Would you (or someone on the maintainer team here) be open to reviewing again and also answering a few questions that i have about poetry? I've played with all of these tools but it's hard to really understand all of the features and future plans without talking to maintainers. i'm happy to post questions wherever you'd prefer them to go as well - in an issue in our repo or here. many thanks!

Secrus commented 1 year ago

@lwasser feel free to join our discord, it will be easier to talk without delays. you can find a link in the project readme or just click here.

twoertwein commented 1 year ago

With poetry 1.4, having the undocumented

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

no longer seems to work.

Is there now an official replacement for the above?

Samreay commented 1 year ago

+1 to the above, was wondering why all our cython building with poetry was failing today, and traced it back to this. Very keen for proper support for a build script, especially for all the projects out there that utilise compiled code in some way.

radoering commented 1 year ago

The syntax is as follows:

https://github.com/python-poetry/poetry/blob/0e72a55c43a993ec0258facec23416c9212964ba/tests/fixtures/extended_project/pyproject.toml#L23-L25

If I interpret it correctly, this syntax has been introduced in 2020. So I suppose, most of us were not even aware of the old syntax.

Samreay commented 1 year ago

The explicit generate-setup-file saves the day, great catch @radoering. To the devs, if this could go in the documentation somewhere, that would be amazing!

albireox commented 1 year ago

With distutils being fully deprecated in 3.12 in a few months, as part of PEP 632, it would be useful to include specific documentation about how to use setuptools with Poetry or what's the recommended alternative.

Right now if you have a virtual environment managed by Poetry, with setuptools installed, and a build.py script that uses setuptools to build a C module, poetry install fails because it cannot import setuptools. I'm not sure if this happens because Poetry runs the installation in a different virtual environment.

Adding setuptools to build-system.requires seems to work, but it's unclear whether that's recommended, and issues like #6154 seems to indicate that the requires are not always honoured. In fact, if I have a version of setuptools in my environment and I add setuptools to requires, Poetry will insist in downgrading it for reasons that are not clear to me.

Regardless, it would be useful to have clear documentation about how to deal with PEP 632 before 3.12 arrives.

r-barnes commented 1 year ago

I, also, am having a bear of a time working with build.py to use PyBind11 in my scripts (my package contains both pure Python and PyBind11 code).

alexchandel commented 1 year ago

Regardless of stability, could you please provide an example of the current recommended use of build.py?

Documentation on the internet is scattered and contradictory, reflecting multiple patterns in various stages of deprecation.

samhooke commented 1 year ago

@alexchandel I can't say whether this is recommended, but as a full example, what worked for me was taking radoering's configuration and combining it with albireox's workaround for setuptools:

  1. Create a build.py with your code in:
def build(setup_kwargs):
    print("Put your build code here!")
  1. Delete your setup.py if you have one (else poetry will not be able to generate one for you).
  2. Update your pyproject.toml to configure poetry to generate a setup.py and call your build.py:
[tool.poetry.build]
script = "build.py"
generate-setup-file = true
  1. Update your pyproject.toml to add setuptools as a build-system dependency:
[build-system]
requires = ["poetry-core", "setuptools"]
  1. Then when you run poetry build it should print "Put your build code here!".

One caveat is that this will cause Poetry to generate a platform-specific wheel, e.g. my_package-1.2.3-cp310-cp310-manylinux_2_35_x86_64.whl rather than my_package-1.2.3-py3-none-any.whl. There are workarounds for this, but none are ideal. For more details I've put further notes here.

smith120bh commented 11 months ago

I just wanted to throw my hat in here on my use cases: I maintain a couple of very engineering maths-heavy Python packages, and Cython is essential for those packages to have reasonable performance. I see poetry as being the best packaging system out there, and I'd like to switch to it - except that there currently does not seem to exist any stable way of compiling Cython in a poetry-managed package. That's a blocker to me. I've read all about the build.py mechanism that works right now, but as much as I'd like to, I'm not willing to depend upon undocumented, unstable features for core functionality on my packages. I'll keep this thread monitored though, and I hope this or some other solution will be stabilised at some point so that Cython can work reliably with Poetry!

rdbisme commented 11 months ago

I just wanted to throw my hat in here on my use cases: I maintain a couple of very engineering maths-heavy Python packages, and Cython is essential for those packages to have reasonable performance. I see poetry as being the best packaging system out there, and I'd like to switch to it - except that there currently does not seem to exist any stable way of compiling Cython in a poetry-managed package. That's a blocker to me. I've read all about the build.py mechanism that works right now, but as much as I'd like to, I'm not willing to depend upon undocumented, unstable features for core functionality on my packages. I'll keep this thread monitored though, and I hope this or some other solution will be stabilised at some point so that Cython can work reliably with Poetry!

FWIW we've been using a build.py based Cython build on our package at work without problems for years now.

adam2392 commented 10 months ago

Out of curiosity, does anyone have any experience using a meson/meson-python build backend and running it via the custom "build.py" route?

carmenbianca commented 5 months ago

Using the name build.py may break Arch Linux packaging: https://github.com/fsfe/reuse-tool/issues/640