Exemple #1
0
    def whl_library(wheel):
        attrs = []
        attrs += [("name", quote(lib_repo(wheel)))]
        attrs += [("version", quote(wheel.version()))]
        attrs += [("wheel_name", quote(wheel.basename()))]
        if args.digests:
            attrs += [("sha256", quote(wheel_digests[wheel.name()]))]
        url = downloaded_wheel_urls.get(wheel.basename(), None)
        if url:
            attrs += [("urls", '[{}]'.format(quote(url)))]
        if args.output_format != 'download':
            attrs += [("wheel", '"@{}//:{}"'.format(args.name,
                                                    wheel.basename()))]
        extras = ', '.join(
            [quote(extra) for extra in sorted(possible_extras.get(wheel, []))])
        if extras != '':
            attrs += [("extras", '[{}]'.format(extras))]
        build_deps = {
            w.name()
            for w in transitive_build_deps(wheel, build_info)
        }
        build_deps = ', '.join([quote(dep) for dep in sorted(build_deps)])
        if build_deps != '':
            attrs += [("build_deps", '[{}]'.format(build_deps))]

        return """"{}": {{
        {},
    }},""".format(
            wheel.name(),
            ",\n        ".join(['"{}": {}'.format(k, v) for k, v in attrs]))
Exemple #2
0
    def whl_library(wheel):
        attrs = []
        attrs += [("name", quote(lib_repo(wheel)))]
        attrs += [("version", quote(wheel.version()))]
        attrs += [("wheel_name", quote(wheel.basename()))]
        url = requirement_download_url(wheel.basename())
        if url:
            attrs += [("urls", '[{}]'.format(quote(url)))]
        if args.output_format != 'download':
            attrs += [("whl", '"@{}//:{}"'.format(args.name,
                                                  wheel.basename()))]
        extras = ', '.join(
            [quote(extra) for extra in sorted(possible_extras.get(wheel, []))])
        if extras != '':
            attrs += [("extras", '[{}]'.format(extras))]
        runtime_deps = ', '.join([quote(dep) for dep in wheel.dependencies()])
        #if runtime_deps != '':
        #  attrs["runtime_deps"] = '[{}]'.format(runtime_deps)
        transitive_runtime_deps = set(
            [split_extra(dep)[0] for dep in transitive_deps(wheel)])
        transitive_runtime_deps = ', '.join(
            [quote(dep) for dep in sorted(transitive_runtime_deps)])
        if transitive_runtime_deps != '':
            attrs += [("transitive_runtime_deps",
                       '[{}]'.format(transitive_runtime_deps))]

        # Indentation here matters.  whl_library must be within the scope
        # of the function below.  We also avoid reimporting an existing WHL.
        return """"{}": {{
      {},
    }},""".format(
            wheel.name(),
            ",\n      ".join(['"{}": {}'.format(k, v) for k, v in attrs]))
Exemple #3
0
 def transitive_build_deps(wheel, build_info):
     deps = set()
     for build_dep in build_info.get(wheel.name(), {}).get("additional_buildtime_deps", []):
       # Add any packages mentioned explicitly in "additional_buildtime_deps".
       deps |= {whl_map[build_dep]}
       # Add any runtime deps of such packages.
       for runtime_dep_of_build_dep in transitive_deps(whl_map[build_dep], build_info=build_info):
         deps |= {whl_map[runtime_dep_of_build_dep]}
     return deps
Exemple #4
0
 def transitive_deps(wheel, extra=None, collected=None, build_info=None):
   deps = wheel.dependencies(extra)
   if build_info:
     deps |= set(build_info.get(wheel.name(), {}).get("additional_runtime_deps", []))
   if collected is None:
     collected = set()
   for dep in deps.copy():
     if dep not in collected:
       collected.add(dep)
       d, extra = split_extra(dep)
       deps |= transitive_deps(whl_map[d], extra, collected, build_info)
   return deps