1
-
2
1
import os
3
2
import json
4
3
import copy
@@ -626,14 +625,15 @@ def mergedirs(listing):
626
625
elif e ["class" ] == "Directory" :
627
626
ents [e ["basename" ]]["listing" ].extend (e ["listing" ])
628
627
for e in ents .itervalues ():
629
- if e ["class" ] == "Directory" :
628
+ if e ["class" ] == "Directory" and "listing" in e :
630
629
e ["listing" ] = mergedirs (e ["listing" ])
631
630
r .extend (ents .itervalues ())
632
631
return r
633
632
634
633
def scandeps (base , doc , reffields , urlfields , loadref ):
635
634
# type: (Text, Any, Set[Text], Set[Text], Callable[[Text, Text], Any]) -> List[Dict[Text, Text]]
636
635
r = [] # type: List[Dict[Text, Text]]
636
+ deps = None # type: Dict[Text, Any]
637
637
if isinstance (doc , dict ):
638
638
if "id" in doc :
639
639
if doc ["id" ].startswith ("file://" ):
@@ -645,6 +645,16 @@ def scandeps(base, doc, reffields, urlfields, loadref):
645
645
})
646
646
base = df
647
647
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
+
648
658
for k , v in doc .iteritems ():
649
659
if k in reffields :
650
660
for u in aslist (v ):
@@ -656,7 +666,7 @@ def scandeps(base, doc, reffields, urlfields, loadref):
656
666
deps = {
657
667
"class" : "File" ,
658
668
"location" : subid
659
- } # type: Dict[Text, Any]
669
+ }
660
670
sf = scandeps (subid , sub , reffields , urlfields , loadref )
661
671
if sf :
662
672
deps ["secondaryFiles" ] = sf
0 commit comments