| 131 | # Read-only dictionary, used for Document.terms and Document.vector |
| 132 | # (updating these directly invalidates the Document and Model cache). |
| 133 | class readonlydict(dict): |
| 134 | def __init__(self, *args, **kwargs): |
| 135 | dict.__init__(self, *args, **kwargs) |
| 136 | @classmethod |
| 137 | def fromkeys(cls, k, default=None): |
| 138 | return readonlydict((k, default) for k in k) |
| 139 | def copy(self): |
| 140 | return readonlydict(self) |
| 141 | def __setitem__(self, k, v): |
| 142 | raise ReadOnlyError |
| 143 | def __delitem__(self, k): |
| 144 | raise ReadOnlyError |
| 145 | def pop(self, k, default=None): |
| 146 | raise ReadOnlyError |
| 147 | def popitem(self, kv): |
| 148 | raise ReadOnlyError |
| 149 | def clear(self): |
| 150 | raise ReadOnlyError |
| 151 | def update(self, kv): |
| 152 | raise ReadOnlyError |
| 153 | def setdefault(self, k, default=None): |
| 154 | if k in self: |
| 155 | return self[k] |
| 156 | raise ReadOnlyError |
| 157 | |
| 158 | # Read-only list, used for Model.documents. |
| 159 | class readonlylist(list): |