in plugins/asfdata.py [0:0]
def process_eccn(fname, debug):
if debug:
print('-----\nECCN:', fname)
if fname.startswith("https://"):
j = yaml.safe_load(requests.get(fname, timeout=REQUESTS_TIMEOUT).text)
else:
j = yaml.safe_load(open(fname))
# versions have zero or more controlled sources
def make_sources(sources):
return [ Source(href=s['href'],
manufacturer=s['manufacturer'],
why=s['why'])
for s in sources]
# products have one or more versions
def make_versions(vsns):
return [ Version(version=v['version'],
eccn=v['eccn'],
source=make_sources(v.get('source', [ ])),
)
for v in sorted(vsns,
key=operator.itemgetter('version'))]
# projects have one or more products
def make_products(prods):
return [ Product(name=p['name'],
versions=make_versions(p['versions']),
)
for p in sorted(prods,
key=operator.itemgetter('name'))]
# eccn matrix has one or more projects
return [ Project(name=proj['name'],
href=proj['href'],
contact=proj['contact'],
product=make_products(proj['product']))
for proj in sorted(j['eccnmatrix'],
key=operator.itemgetter('name'))]