Dependency-Funding-Tool/src/trace.py

42 wiersze
1.0 KiB
Python

from .io import load_cfg, load_index
from .parallel import parallel
import requests
def trace(args):
cfg = load_cfg(args.config)
index = load_index(args.index)
start_projects = load_start_projects(args.start_projects)
projects = parallel(fetch_project, start_projects, processes=args.processes)
for project in start_projects:
dependencies = dependencies_between(project, projects, processes=args.processes)
def dependencies_between(start_project, projects, processes=6):
dependencies = {}
for project in projects:
paths = paths_between(start_project, project, projects, processes=processes)
dependencies[project] = sum([product(path) for path in paths])/len(paths)
def paths_between(start, end, projects, processes = 6):
paths = []
if start == end:
return paths
else:
return start,
def product(xs):
value = 1
for x in xs:
value *= x
return value
def fetch_project(url):
project = requests.get(url).json()
return project, project["dependencies"].keys()