7
7
import tempfile
8
8
import glob
9
9
import urlparse
10
- import pprint
11
10
from collections import Iterable
12
11
import errno
13
12
import shutil
@@ -640,8 +639,8 @@ def mergedirs(listing):
640
639
r .extend (ents .itervalues ())
641
640
return r
642
641
643
- def scandeps (base , doc , reffields , urlfields , loadref ):
644
- # type: (Text, Any, Set[Text], Set[Text], Callable[[Text, Text], Any]) -> List[Dict[Text, Text]]
642
+ def scandeps (base , doc , reffields , urlfields , loadref , urljoin = urlparse . urljoin ):
643
+ # type: (Text, Any, Set[Text], Set[Text], Callable[[Text, Text], Any], Callable[[Text, Text], Text] ) -> List[Dict[Text, Text]]
645
644
r = [] # type: List[Dict[Text, Text]]
646
645
deps = None # type: Dict[Text, Any]
647
646
if isinstance (doc , dict ):
@@ -660,7 +659,7 @@ def scandeps(base, doc, reffields, urlfields, loadref):
660
659
if u and not u .startswith ("_:" ):
661
660
deps = {
662
661
"class" : doc ["class" ],
663
- "location" : urlparse . urljoin (base , u )
662
+ "location" : urljoin (base , u )
664
663
}
665
664
if doc ["class" ] == "Directory" and "listing" in doc :
666
665
deps ["listing" ] = doc ["listing" ]
@@ -670,23 +669,23 @@ def scandeps(base, doc, reffields, urlfields, loadref):
670
669
r .append (deps )
671
670
else :
672
671
if doc ["class" ] == "Directory" and "listing" in doc :
673
- r .extend (scandeps (base , doc ["listing" ], reffields , urlfields , loadref ))
672
+ r .extend (scandeps (base , doc ["listing" ], reffields , urlfields , loadref , urljoin = urljoin ))
674
673
elif doc ["class" ] == "File" and "secondaryFiles" in doc :
675
- r .extend (scandeps (base , doc ["secondaryFiles" ], reffields , urlfields , loadref ))
674
+ r .extend (scandeps (base , doc ["secondaryFiles" ], reffields , urlfields , loadref , urljoin = urljoin ))
676
675
677
676
for k , v in doc .iteritems ():
678
677
if k in reffields :
679
678
for u in aslist (v ):
680
679
if isinstance (u , dict ):
681
- r .extend (scandeps (base , u , reffields , urlfields , loadref ))
680
+ r .extend (scandeps (base , u , reffields , urlfields , loadref , urljoin = urljoin ))
682
681
else :
683
682
sub = loadref (base , u )
684
- subid = urlparse . urljoin (base , u )
683
+ subid = urljoin (base , u )
685
684
deps = {
686
685
"class" : "File" ,
687
686
"location" : subid
688
687
}
689
- sf = scandeps (subid , sub , reffields , urlfields , loadref )
688
+ sf = scandeps (subid , sub , reffields , urlfields , loadref , urljoin = urljoin )
690
689
if sf :
691
690
deps ["secondaryFiles" ] = sf
692
691
deps = nestdir (base , deps )
@@ -695,19 +694,20 @@ def scandeps(base, doc, reffields, urlfields, loadref):
695
694
for u in aslist (v ):
696
695
deps = {
697
696
"class" : "File" ,
698
- "location" : urlparse . urljoin (base , u )
697
+ "location" : urljoin (base , u )
699
698
}
700
699
deps = nestdir (base , deps )
701
700
r .append (deps )
702
701
elif k not in ("listing" , "secondaryFiles" ):
703
- r .extend (scandeps (base , v , reffields , urlfields , loadref ))
702
+ r .extend (scandeps (base , v , reffields , urlfields , loadref , urljoin = urljoin ))
704
703
elif isinstance (doc , list ):
705
704
for d in doc :
706
- r .extend (scandeps (base , d , reffields , urlfields , loadref ))
705
+ r .extend (scandeps (base , d , reffields , urlfields , loadref , urljoin = urljoin ))
707
706
708
707
if r :
709
708
normalizeFilesDirs (r )
710
709
r = mergedirs (r )
710
+
711
711
return r
712
712
713
713
def compute_checksums (fs_access , fileobj ):
0 commit comments