(cls, fields, func_builder)
| 726 | |
| 727 | |
| 728 | def _frozen_get_del_attr(cls, fields, func_builder): |
| 729 | locals = {'cls': cls, |
| 730 | 'FrozenInstanceError': FrozenInstanceError} |
| 731 | condition = 'type(self) is cls' |
| 732 | if fields: |
| 733 | condition += ' or name in {' + ', '.join(repr(f.name) for f in fields) + '}' |
| 734 | |
| 735 | func_builder.add_fn('__setattr__', |
| 736 | ('self', 'name', 'value'), |
| 737 | (f' if {condition}:', |
| 738 | ' raise FrozenInstanceError(f"cannot assign to field {name!r}")', |
| 739 | f' super(cls, self).__setattr__(name, value)'), |
| 740 | locals=locals, |
| 741 | overwrite_error=True) |
| 742 | func_builder.add_fn('__delattr__', |
| 743 | ('self', 'name'), |
| 744 | (f' if {condition}:', |
| 745 | ' raise FrozenInstanceError(f"cannot delete field {name!r}")', |
| 746 | f' super(cls, self).__delattr__(name)'), |
| 747 | locals=locals, |
| 748 | overwrite_error=True) |
| 749 | |
| 750 | |
| 751 | def _is_classvar(a_type, typing): |
no test coverage detected
searching dependent graphs…