@@ -97,18 +97,22 @@ def uris(self):
9797 # {<mountpoint>: <KnowledgeRepositoryInstance>}
9898 if isinstance (self .uri , str ):
9999 return {'' : self .uri }
100+
100101 elif isinstance (self .uri , dict ):
101102 uri_dict = {}
102103
103- def add_uris (uri_dict , uris , parent = '' ):
104- assert isinstance (uris , dict )
105- for mountpoint , uri in uris .items ():
106- if isinstance (uri , (str , KnowledgeRepository )):
107- uri_dict [posixpath .join (parent , mountpoint )] = uri if isinstance (uri , str ) else uri .uri
108- elif isinstance (uri , dict ):
109- add_uris (uri_dict , uri , parent = posixpath .join (parent , mountpoint ))
110- else :
111- raise ValueError ("Unrecognised uri: {}" .format (uri ))
104+ def add_uris (uri_dict , uri , parent = '' ):
105+ if isinstance (uri , str ):
106+ uri_dict [parent ] = uri
107+ elif isinstance (uri , dict ):
108+ for mountpoint , u in uri .items ():
109+ add_uris (uri_dict , u , parent = posixpath .join (parent , mountpoint ))
110+ elif isinstance (uri , KnowledgeRepository ):
111+ for mountpoint , u in uri .uris .items ():
112+ uri_dict [posixpath .join (parent , mountpoint )] = u
113+ else :
114+ raise ValueError ("Unrecognised uri: {}" .format (uri ))
115+
112116 add_uris (uri_dict , self .uri )
113117 return uri_dict
114118
@@ -125,18 +129,18 @@ def revisions(self):
125129 elif isinstance (self .uri , dict ):
126130 revision_dict = {}
127131
128- def add_revisions (revision_dict , uris ):
129- assert isinstance (uris , dict )
130- for mountpoint , uri in uris . items ():
131- if isinstance (uri , str ):
132- revision_dict [ uri ] = KnowledgeRepository . for_uri ( uri ). revision
133- elif isinstance ( uri , KnowledgeRepository ):
134- revision_dict [ uri ] = uri . revision
135- elif isinstance (uri , dict ):
136- add_revisions ( revision_dict , uri )
137- else :
138- raise ValueError ( "Unrecognised uri: {}" . format ( uri ))
139- add_revisions (revision_dict , self .uri )
132+ def add_revisions (revision_dict , uri ):
133+ if isinstance (uri , str ):
134+ revision_dict [ uri ] = KnowledgeRepository . for_uri ( uri ). revision
135+ elif isinstance (uri , dict ):
136+ for u in uri . values ():
137+ add_revisions ( revision_dict , u )
138+ elif isinstance ( uri , KnowledgeRepository ):
139+ revision_dict . update (uri . revisions )
140+ else :
141+ raise ValueError ( "Unrecognised uri: {}" . format ( uri ))
142+
143+ add_revisions (revision_dict , self .uris )
140144 return revision_dict
141145
142146 raise ValueError ("Unrecognised KnowledgeRepository.uri: {}" .format (self .uri ))
0 commit comments