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