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