1-
21import os
32import json
43import copy
@@ -626,14 +625,15 @@ def mergedirs(listing):
626625 elif e ["class" ] == "Directory" :
627626 ents [e ["basename" ]]["listing" ].extend (e ["listing" ])
628627 for e in ents .itervalues ():
629- if e ["class" ] == "Directory" :
628+ if e ["class" ] == "Directory" and "listing" in e :
630629 e ["listing" ] = mergedirs (e ["listing" ])
631630 r .extend (ents .itervalues ())
632631 return r
633632
634633def scandeps (base , doc , reffields , urlfields , loadref ):
635634 # type: (Text, Any, Set[Text], Set[Text], Callable[[Text, Text], Any]) -> List[Dict[Text, Text]]
636635 r = [] # type: List[Dict[Text, Text]]
636+ deps = None # type: Dict[Text, Any]
637637 if isinstance (doc , dict ):
638638 if "id" in doc :
639639 if doc ["id" ].startswith ("file://" ):
@@ -645,6 +645,16 @@ def scandeps(base, doc, reffields, urlfields, loadref):
645645 })
646646 base = df
647647
648+ if doc .get ("class" ) in ("File" , "Directory" ):
649+ u = doc .get ("location" , doc .get ("path" ))
650+ if u :
651+ deps = {
652+ "class" : doc ["class" ],
653+ "location" : urlparse .urljoin (base , u )
654+ }
655+ deps = nestdir (base , deps )
656+ r .append (deps )
657+
648658 for k , v in doc .iteritems ():
649659 if k in reffields :
650660 for u in aslist (v ):
@@ -656,7 +666,7 @@ def scandeps(base, doc, reffields, urlfields, loadref):
656666 deps = {
657667 "class" : "File" ,
658668 "location" : subid
659- } # type: Dict[Text, Any]
669+ }
660670 sf = scandeps (subid , sub , reffields , urlfields , loadref )
661671 if sf :
662672 deps ["secondaryFiles" ] = sf
0 commit comments