# HG changeset patch # User Franz Glasner # Date 1639738376 -3600 # Node ID 490f0c4665bb068b2bd1e21c3068d476f9673cd3 # Parent ff8a9a7c6a93b17130d40f52dacdaf3dcff09fba Optimize .unquote(): instead of doing string comparisone do this with characters diff -r ff8a9a7c6a93 -r 490f0c4665bb configmix/config.py --- a/configmix/config.py Fri Dec 17 11:46:36 2021 +0100 +++ b/configmix/config.py Fri Dec 17 11:52:56 2021 +0100 @@ -743,17 +743,21 @@ res = [parts[0]] res_append = res.append for p in parts[1:]: - if p.startswith(klass._QUOTE_x): + try: + qc = p[0] + except IndexError: + raise ValueError("unknown quote syntax string: {}".format(s)) + if qc == klass._QUOTE_x: if len(p) < 3: raise ValueError("quote syntax: length too small") res_append(uchr(int(p[1:3], 16))) res_append(p[3:]) - elif p.startswith(klass._QUOTE_u): + elif qc == klass._QUOTE_u: if len(p) < 5: raise ValueError("quote syntax: length too small") res_append(uchr(int(p[1:5], 16))) res_append(p[5:]) - elif p.startswith(klass._QUOTE_U): + elif qc == klass._QUOTE_U: if len(p) < 9: raise ValueError("quote syntax: length too small") res_append(uchr(int(p[1:9], 16)))