[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.119.106.49: ~ $
"""Build a project using PEP 517 hooks.
"""
import argparse
import logging
import os
from pip._vendor import toml
import shutil

from .envbuild import BuildEnvironment
from .wrappers import Pep517HookCaller
from .dirtools import tempdir, mkdir_p
from .compat import FileNotFoundError

log = logging.getLogger(__name__)


def validate_system(system):
    """
    Ensure build system has the requisite fields.
    """
    required = {'requires', 'build-backend'}
    if not (required <= set(system)):
        message = "Missing required fields: {missing}".format(
            missing=required-set(system),
        )
        raise ValueError(message)


def load_system(source_dir):
    """
    Load the build system from a source dir (pyproject.toml).
    """
    pyproject = os.path.join(source_dir, 'pyproject.toml')
    with open(pyproject) as f:
        pyproject_data = toml.load(f)
    return pyproject_data['build-system']


def compat_system(source_dir):
    """
    Given a source dir, attempt to get a build system backend
    and requirements from pyproject.toml. Fallback to
    setuptools but only if the file was not found or a build
    system was not indicated.
    """
    try:
        system = load_system(source_dir)
    except (FileNotFoundError, KeyError):
        system = {}
    system.setdefault(
        'build-backend',
        'setuptools.build_meta:__legacy__',
    )
    system.setdefault('requires', ['setuptools', 'wheel'])
    return system


def _do_build(hooks, env, dist, dest):
    get_requires_name = 'get_requires_for_build_{dist}'.format(**locals())
    get_requires = getattr(hooks, get_requires_name)
    reqs = get_requires({})
    log.info('Got build requires: %s', reqs)

    env.pip_install(reqs)
    log.info('Installed dynamic build dependencies')

    with tempdir() as td:
        log.info('Trying to build %s in %s', dist, td)
        build_name = 'build_{dist}'.format(**locals())
        build = getattr(hooks, build_name)
        filename = build(td, {})
        source = os.path.join(td, filename)
        shutil.move(source, os.path.join(dest, os.path.basename(filename)))


def build(source_dir, dist, dest=None, system=None):
    system = system or load_system(source_dir)
    dest = os.path.join(source_dir, dest or 'dist')
    mkdir_p(dest)

    validate_system(system)
    hooks = Pep517HookCaller(
        source_dir, system['build-backend'], system.get('backend-path')
    )

    with BuildEnvironment() as env:
        env.pip_install(system['requires'])
        _do_build(hooks, env, dist, dest)


parser = argparse.ArgumentParser()
parser.add_argument(
    'source_dir',
    help="A directory containing pyproject.toml",
)
parser.add_argument(
    '--binary', '-b',
    action='store_true',
    default=False,
)
parser.add_argument(
    '--source', '-s',
    action='store_true',
    default=False,
)
parser.add_argument(
    '--out-dir', '-o',
    help="Destination in which to save the builds relative to source dir",
)


def main(args):
    # determine which dists to build
    dists = list(filter(None, (
        'sdist' if args.source or not args.binary else None,
        'wheel' if args.binary or not args.source else None,
    )))

    for dist in dists:
        build(args.source_dir, dist, args.out_dir)


if __name__ == '__main__':
    main(parser.parse_args())

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
.__init__.pyo.40009 File 274 B 0644
._in_process.pyo.40009 File 10.68 KB 0644
.build.pyo.40009 File 4.31 KB 0644
.check.pyo.40009 File 5.9 KB 0644
.colorlog.pyo.40009 File 3.62 KB 0644
.compat.pyo.40009 File 1.44 KB 0644
.dirtools.pyo.40009 File 1.72 KB 0644
.envbuild.pyo.40009 File 5.4 KB 0644
.meta.pyo.40009 File 3.54 KB 0644
.wrappers.pyo.40009 File 12.72 KB 0644
__init__.py File 84 B 0644
__init__.pyc File 274 B 0644
__init__.pyo File 274 B 0644
_in_process.py File 8.24 KB 0644
_in_process.pyc File 10.68 KB 0644
_in_process.pyo File 10.68 KB 0644
build.py File 3.26 KB 0644
build.pyc File 4.31 KB 0644
build.pyo File 4.31 KB 0644
check.py File 5.82 KB 0644
check.pyc File 5.9 KB 0644
check.pyo File 5.9 KB 0644
colorlog.py File 4 KB 0644
colorlog.pyc File 3.62 KB 0644
colorlog.pyo File 3.62 KB 0644
compat.py File 780 B 0644
compat.pyc File 1.44 KB 0644
compat.pyo File 1.44 KB 0644
dirtools.py File 1.1 KB 0644
dirtools.pyc File 1.72 KB 0644
dirtools.pyo File 1.72 KB 0644
envbuild.py File 5.9 KB 0644
envbuild.pyc File 5.4 KB 0644
envbuild.pyo File 5.4 KB 0644
meta.py File 2.41 KB 0644
meta.pyc File 3.54 KB 0644
meta.pyo File 3.54 KB 0644
wrappers.py File 10.53 KB 0644
wrappers.pyc File 12.72 KB 0644
wrappers.pyo File 12.72 KB 0644