Example #1
0
def process_requires(setup_py_path):
    # This method process package requirement to verify if all required packages are available on PyPI
    # If any azure sdk package is not available on PyPI then requirement will be updated to refer dev version
    requires = [
        Requirement.parse(r) for r in get_install_requires(setup_py_path)
        if r.startswith("azure") and "-nspkg" not in r
    ]
    # Find package requirements that are not available on PyPI
    requirement_to_update = {}
    for req in requires:
        pkg_name = req.key
        spec = SpecifierSet(str(req).replace(pkg_name, ""))

        if not is_required_version_on_pypi(pkg_name, spec):
            old_req = str(req)
            version = get_version(pkg_name)
            logging.info(
                "Updating version {0} in requirement {1} to dev build version".
                format(version, old_req))
            new_req = old_req.replace(
                version, "{}{}".format(version, DEV_BUILD_IDENTIFIER))
            logging.info("New requirement for package {0}: {1}".format(
                pkg_name, new_req))
            requirement_to_update[old_req] = new_req

    if not requirement_to_update:
        logging.info("All required packages are available on PyPI")
    else:
        logging.info(
            "Packages not available on PyPI:{}".format(requirement_to_update))
        update_requires(setup_py_path, requirement_to_update)
        logging.info("Package requirement is updated in setup.py")
def find_released_packages(setup_py_path, dependency_type):
    # this method returns list of required available package on PyPI in format <package-name>==<version>

    # parse setup.py and find install requires
    requires = [r for r in get_install_requires(setup_py_path) if r.startswith('azure') and '-nspkg' not in r]

    # Get available version on PyPI for each required package
    avlble_packages = [x for x in map(lambda x: process_requirement(x, dependency_type), requires) if x]
    return avlble_packages
Example #3
0
                        w=built_package))
                # it does't exist, so we need to error out
                else:
                    logging.error(
                        "{w} not present in the prebuilt package directory. Exiting."
                        .format(w=built_package))
                    exit(1)
            else:
                built_pkg_path = os.path.abspath(
                    os.path.join(args.distribution_directory, built_package))
                logging.info("Installing {w} from fresh built package.".format(
                    w=built_package))

            if not args.pre_download_disabled:
                requirements = get_install_requires(
                    os.path.join(os.path.abspath(args.target_setup),
                                 "setup.py"))
                azure_requirements = [
                    req.split(";")[0] for req in requirements
                    if req.startswith("azure")
                ]

                if azure_requirements:
                    logging.info("Found {} azure requirement(s): {}".format(
                        len(azure_requirements), azure_requirements))

                    download_command = [
                        sys.executable,
                        "-m",
                        "pip",
                        "download",