Extensions: use str.casefold for case insensitive search

`str.casefold` is intended for case insensitive string matching and
finds more matches with some unicode characters.
This commit is contained in:
Campbell Barton
2024-06-23 12:57:08 +10:00
parent 6019aa304b
commit c78adfc698
3 changed files with 23 additions and 23 deletions

View File

@@ -253,15 +253,15 @@ def lock_result_any_failed_with_report(op, lock_result, report_type='ERROR'):
return any_errors
def pkg_info_check_exclude_filter_ex(name, tagline, search_lower):
def pkg_info_check_exclude_filter_ex(name, tagline, search_casefold):
return (
(search_lower in name.lower() or search_lower in iface_(name).lower()) or
(search_lower in tagline.lower() or search_lower in iface_(tagline).lower())
(search_casefold in name.casefold() or search_casefold in iface_(name).casefold()) or
(search_casefold in tagline.casefold() or search_casefold in iface_(tagline).casefold())
)
def pkg_info_check_exclude_filter(item, search_lower):
return pkg_info_check_exclude_filter_ex(item.name, item.tagline, search_lower)
def pkg_info_check_exclude_filter(item, search_casefold):
return pkg_info_check_exclude_filter_ex(item.name, item.tagline, search_casefold)
def extension_theme_enable_filepath(filepath):
@@ -667,7 +667,7 @@ def _extensions_repo_from_directory_and_report(directory, report_fn):
def _pkg_marked_by_repo(pkg_manifest_all):
# NOTE: pkg_manifest_all can be from local or remote source.
wm = bpy.context.window_manager
search_lower = wm.extension_search.lower()
search_casefold = wm.extension_search.casefold()
filter_by_type = blender_filter_by_type_map[wm.extension_type]
repo_pkg_map = {}
@@ -683,7 +683,7 @@ def _pkg_marked_by_repo(pkg_manifest_all):
continue
if filter_by_type and (filter_by_type != item.type):
continue
if search_lower and not pkg_info_check_exclude_filter(item, search_lower):
if search_casefold and not pkg_info_check_exclude_filter(item, search_casefold):
continue
pkg_list = repo_pkg_map.get(repo_index)

View File

@@ -363,7 +363,7 @@ def addons_panel_draw_items(
*,
addon_modules, # `Dict[str, ModuleType]`
used_addon_module_name_map, # `Dict[str, bpy.types.Addon]`
search_lower, # `str`
search_casefold, # `str`
addon_tags_exclude, # `Set[str]`
enabled_only, # `bool`
addon_extension_manifest_map, # `Dict[str, PkgManifest_Normalized]`
@@ -415,11 +415,11 @@ def addons_panel_draw_items(
item_tracker_url = bl_info.get("tracker_url")
del bl_info
if search_lower and (
if search_casefold and (
not pkg_info_check_exclude_filter_ex(
item_name,
item_description,
search_lower,
search_casefold,
)
):
continue
@@ -490,7 +490,7 @@ def addons_panel_draw_items(
def addons_panel_draw_impl(
self,
context, # `bpy.types.Context`
search_lower, # `str`
search_casefold, # `str`
addon_tags_exclude, # `Set[str]`
enabled_only, # `bool`
):
@@ -553,7 +553,7 @@ def addons_panel_draw_impl(
context,
addon_modules=addon_modules,
used_addon_module_name_map=used_addon_module_name_map,
search_lower=search_lower,
search_casefold=search_casefold,
addon_tags_exclude=addon_tags_exclude,
enabled_only=enabled_only,
addon_extension_manifest_map=addon_extension_manifest_map,
@@ -630,7 +630,7 @@ def addons_panel_draw(panel, context):
addons_panel_draw_impl(
panel,
context,
wm.addon_search.lower(),
wm.addon_search.casefold(),
addon_tags_exclude,
view.show_addons_enabled_only,
)
@@ -787,7 +787,7 @@ def extensions_map_from_legacy_addons_reverse_lookup(pkg_id):
def extensions_panel_draw_impl(
self,
context, # `bpy.types.Context`
search_lower, # `str`
search_casefold, # `str`
filter_by_type, # `str`
extension_tags_exclude, # `Set[str]`
enabled_only, # `bool`
@@ -916,7 +916,7 @@ def extensions_panel_draw_impl(
item = item_local or item_remote
if filter_by_type and (filter_by_type != item.type):
continue
if search_lower and (not pkg_info_check_exclude_filter(item, search_lower)):
if search_casefold and (not pkg_info_check_exclude_filter(item, search_casefold)):
continue
is_installed = item_local is not None
@@ -1492,7 +1492,7 @@ def extensions_panel_draw(panel, context):
extensions_panel_draw_impl(
panel,
context,
wm.extension_search.lower(),
wm.extension_search.casefold(),
blender_filter_by_type_map[wm.extension_type],
extension_tags_exclude,
wm.extension_enabled_only,

View File

@@ -1710,7 +1710,7 @@ class USERPREF_UL_extension_repos(UIList):
range(len(items)),
key=lambda i: (
items[i].use_remote_url is False,
items[i].name.lower(),
items[i].name.casefold(),
)
)):
indices[orig_index] = index
@@ -2441,7 +2441,7 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
show_enabled_only = prefs.view.show_addons_enabled_only
filter = wm.addon_filter
search = wm.addon_search.lower()
search = wm.addon_search.casefold()
support = wm.addon_support
# initialized on demand
@@ -2469,11 +2469,11 @@ class USERPREF_PT_addons(AddOnPanel, Panel):
continue
if search and not (
(search in bl_info["name"].lower() or
search in iface_(bl_info["name"]).lower()) or
(bl_info["author"] and (search in bl_info["author"].lower())) or
((filter == "All") and (search in bl_info["category"].lower() or
search in iface_(bl_info["category"]).lower()))
(search in bl_info["name"].casefold() or
search in iface_(bl_info["name"]).casefold()) or
(bl_info["author"] and (search in bl_info["author"].casefold())) or
((filter == "All") and (search in bl_info["category"].casefold() or
search in iface_(bl_info["category"]).casefold()))
):
continue