Skip to content

Commit 96141a1

Browse files
committed
Sort summarized directories
Signed-off-by: Jono Yang <jyang@nexb.com>
1 parent e9075cb commit 96141a1

1 file changed

Lines changed: 11 additions & 4 deletions

File tree

src/scancode/plugin_summary.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,7 @@ class OriginSummary(PostScanPlugin):
6969
or license expression is detected in 75% or more of total files in a directory
7070
"""
7171
codebase_attributes = dict(
72-
# TODO: we cannot maintain sort order with defaultdict
73-
summarized_directories=attr.ib(default=attr.Factory(lambda: defaultdict(lambda: defaultdict(list))))
72+
summarized_directories=attr.ib(default=attr.Factory(OrderedDict))
7473
)
7574

7675
resource_attributes = dict(
@@ -157,10 +156,18 @@ def process_codebase(self, codebase, **kwargs):
157156
child.summarized_to = resource.path
158157
child.save(codebase)
159158

160-
# TODO: Deal with maintaining sort order
159+
repacked_summarized_dirs = defaultdict(lambda: defaultdict(list))
161160
for (holders, license_expression), summarized_dirs in summarized_dirs_by_license_and_holder.items():
162161
holder = '\n'.join(holders)
163-
codebase.attributes.summarized_directories[license_expression][holder].extend(sorted(summarized_dirs))
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()):
165+
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)})
169+
else:
170+
codebase.attributes.summarized_directories[license_expression] = OrderedDict({holder: sorted(summarized_dirs)})
164171

165172

166173
def is_majority(count, files_count):

0 commit comments

Comments
 (0)