MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / build_index

Function build_index

src/licensedcode/cache.py:209–273  ·  view source on GitHub ↗

Return an index built from rules and licenses directories If ``index_all_languages`` is True, include texts and rules in all languages. Otherwise, only include the English license texts and rules (the default) If ``additional_directories`` is not None, we will include licenses and

(
    licenses_db=None,
    licenses_data_dir=None,
    rules_data_dir=None,
    index_all_languages=False,
    additional_directories=None,
)

Source from the content-addressed store, hash-verified

207
208
209def build_index(
210 licenses_db=None,
211 licenses_data_dir=None,
212 rules_data_dir=None,
213 index_all_languages=False,
214 additional_directories=None,
215):
216 """
217 Return an index built from rules and licenses directories
218
219 If ``index_all_languages`` is True, include texts and rules in all languages.
220 Otherwise, only include the English license texts and rules (the default)
221 If ``additional_directories`` is not None, we will include licenses and rules
222 from these additional directories in the returned index.
223 """
224 from licensedcode.index import LicenseIndex
225 from licensedcode.models import get_license_dirs
226 from licensedcode.models import get_rule_dirs
227 from licensedcode.models import get_rules_from_multiple_dirs
228 from licensedcode.models import get_all_spdx_key_tokens
229 from licensedcode.models import get_license_tokens
230 from licensedcode.models import licenses_data_dir as ldd
231 from licensedcode.models import rules_data_dir as rdd
232 from licensedcode.models import load_licenses_from_multiple_dirs
233 from licensedcode.models import validate_ignorable_clues
234 from licensedcode.legalese import common_license_words
235
236 licenses_data_dir = licenses_data_dir or ldd
237 rules_data_dir = rules_data_dir or rdd
238
239 if not licenses_db:
240 # combine the licenses in these additional directories with the licenses in the original DB
241 additional_license_dirs = get_license_dirs(additional_dirs=additional_directories)
242 # generate a single combined license db with all licenses
243 licenses_db = load_licenses_from_multiple_dirs(
244 builtin_license_data_dir=licenses_data_dir,
245 additional_license_data_dirs=additional_license_dirs,
246 with_deprecated=False,
247 )
248
249 # if we have additional directories, extract the rules from them
250 additional_rule_dirs = get_rule_dirs(additional_dirs=additional_directories)
251 validate_ignorable_clues(rule_directories=additional_rule_dirs, is_builtin=False)
252 # then combine the rules in these additional directories with the rules in the original rules directory
253 rules = get_rules_from_multiple_dirs(
254 licenses_db=licenses_db,
255 additional_rules_data_dirs=additional_rule_dirs,
256 builtin_rule_data_dir=rules_data_dir,
257 )
258
259 legalese = common_license_words
260 spdx_tokens = set(get_all_spdx_key_tokens(licenses_db))
261 license_tokens = set(get_license_tokens())
262
263 # only skip licenses to be indexed
264 if not index_all_languages:
265 rules = (r for r in rules if r.language == 'en')
266

Callers 2

validate_and_reindexFunction · 0.90
load_or_buildMethod · 0.85

Calls 8

get_license_dirsFunction · 0.90
get_rule_dirsFunction · 0.90
validate_ignorable_cluesFunction · 0.90
get_all_spdx_key_tokensFunction · 0.90
get_license_tokensFunction · 0.90
LicenseIndexClass · 0.90

Tested by

no test coverage detected