changeset 476:eddc0f7c6271

Optimize ._split_filters() for the most common case of no-filters: use s.partition() first
author Franz Glasner <f.glasner@feldmann-mg.com>
date Fri, 17 Dec 2021 11:09:14 +0100
parents fa5b800055e4
children 1de6cc49776e
files configmix/config.py
diffstat 1 files changed, 18 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/configmix/config.py	Fri Dec 17 10:57:59 2021 +0100
+++ b/configmix/config.py	Fri Dec 17 11:09:14 2021 +0100
@@ -544,11 +544,24 @@
                 return (self.unquote(nameparts[0]), nameparts[1], )
 
     def _split_filters(self, s):
-        nameparts = s.split(self._FILTER_SEPARATOR)
-        if len(nameparts) == 1:
-            return (s, [], )
-        else:
-            return (nameparts[0].rstrip(), nameparts[1:], )
+        try:
+            name, sep, filters = s.partition(self._FILTER_SEPARATOR)
+            if sep:
+                filters = filters.strip()
+                if filters:
+                    return (name.rstrip(),
+                            filters.split(self._FILTER_SEPARATOR))
+                else:
+                    return (name.rstrip(), [])
+            else:
+                return (name, [])
+        except AttributeError:
+            # pre PY 2.5
+            nameparts = s.split(self._FILTER_SEPARATOR)
+            if len(nameparts) == 1:
+                return (s, [], )
+            else:
+                return (nameparts[0].rstrip(), nameparts[1:], )
 
     def _lookupvar(self, *path, **kwds):
         """Lookup a variable within a hierarchy.