Source code for irc.dict

from jaraco.collections import KeyTransformingDict

from . import strings


[docs]class IRCDict(KeyTransformingDict): """ A dictionary of names whose keys are case-insensitive according to the IRC RFC rules. >>> d = IRCDict({'[This]': 'that'}, A='foo') The dict maintains the original case: >>> '[This]' in ''.join(d.keys()) True But the keys can be referenced with a different case >>> d['a'] == 'foo' True >>> d['{this}'] == 'that' True >>> d['{THIS}'] == 'that' True >>> '{thiS]' in d True This should work for operations like delete and pop as well. >>> d.pop('A') == 'foo' True >>> del d['{This}'] >>> len(d) 0 """
[docs] @staticmethod def transform_key(key): if isinstance(key, str): key = strings.IRCFoldedCase(key) return key