@@ -98,9 +98,9 @@ def process_codebase(self, codebase, **kwargs):
9898 # TODO: Raise warning(?) if these fields are not there
9999 return
100100
101- summarized_dirs_by_license_and_holder = defaultdict (list )
101+ summarized_dirs_by_license_and_holder = defaultdict (lambda : defaultdict ( list ) )
102102
103- # Pass 1: summarize origin clues to directory level and tag summarized Resources
103+ # Summarize origin clues to directory level and tag summarized Resources
104104 for resource in codebase .walk (topdown = False ):
105105 # TODO: Consider facets for later
106106
@@ -142,7 +142,8 @@ def process_codebase(self, codebase, **kwargs):
142142 codebase .save_resource (resource )
143143
144144 if resource .is_dir :
145- summarized_dirs_by_license_and_holder [origin ].append (resource .path )
145+ holder = '\n ' .join (holders )
146+ summarized_dirs_by_license_and_holder [license_expression ][holder ].append (resource .path )
146147
147148 for child_rid in child_rids :
148149 child = codebase .get_resource (child_rid )
@@ -156,18 +157,19 @@ def process_codebase(self, codebase, **kwargs):
156157 child .summarized_to = resource .path
157158 child .save (codebase )
158159
159- repacked_summarized_dirs = defaultdict (lambda : defaultdict (list ))
160- for (holders , license_expression ), summarized_dirs in summarized_dirs_by_license_and_holder .items ():
161- holder = '\n ' .join (holders )
162- repacked_summarized_dirs [license_expression ][holder ].extend (summarized_dirs )
163-
164- for license_expression , summarized_dirs_by_holders in sorted (repacked_summarized_dirs .items ()):
160+ # Add summarized directory info to the `summarized_directories` codebase attribute in sorted order
161+ for license_expression , summarized_dirs_by_holders in sorted (summarized_dirs_by_license_and_holder .items ()):
165162 for holder , summarized_dirs in sorted (summarized_dirs_by_holders .items ()):
166- codebase_summarized_directories = codebase .attributes .summarized_directories
167- if license_expression in codebase_summarized_directories :
168- codebase .attributes .summarized_directories [license_expression ].update ({holder : sorted (summarized_dirs )})
163+ codebase_summarized_dirs = codebase .attributes .summarized_directories
164+ sorted_summarized_dirs = sorted (summarized_dirs )
165+ # TODO: These checks could be avoided if there was an ordered defaultdict
166+ if license_expression in codebase_summarized_dirs :
167+ if holder in codebase_summarized_dirs [license_expression ]:
168+ codebase_summarized_dirs [license_expression ][holder ].extend (sorted_summarized_dirs )
169+ else :
170+ codebase_summarized_dirs [license_expression ][holder ] = sorted_summarized_dirs
169171 else :
170- codebase . attributes . summarized_directories [license_expression ] = OrderedDict ({holder : sorted ( summarized_dirs ) })
172+ codebase_summarized_dirs [license_expression ] = OrderedDict ({holder : sorted_summarized_dirs })
171173
172174
173175def is_majority (count , files_count ):
0 commit comments