File tree Expand file tree Collapse file tree 3 files changed +12
-1
lines changed
Expand file tree Collapse file tree 3 files changed +12
-1
lines changed Original file line number Diff line number Diff line change 1+ Frozen classes can set ` on_setattr=attrs.setters.NO_OP ` in addition to ` None ` .
Original file line number Diff line number Diff line change @@ -2022,7 +2022,7 @@ def _make_init_script(
20222022 attr_dict [a .name ] = a
20232023
20242024 if a .on_setattr is not None :
2025- if frozen is True :
2025+ if frozen is True and a . on_setattr is not setters . NO_OP :
20262026 msg = "Frozen classes can't use on_setattr."
20272027 raise ValueError (msg )
20282028
Original file line number Diff line number Diff line change @@ -221,6 +221,16 @@ class C:
221221
222222 assert "Frozen classes can't use on_setattr." == ei .value .args [0 ]
223223
224+ @pytest .mark .parametrize ("nop" , [None , setters .NO_OP ])
225+ def test_frozen_on_setattr_nops (self , nop ):
226+ """
227+ on_setattr on frozen classes can be used for None and NO_OP.
228+ """
229+
230+ @attr .s (frozen = True )
231+ class C :
232+ x = attr .ib (on_setattr = nop )
233+
224234 def test_setattr_reset_if_no_custom_setattr (self , slots ):
225235 """
226236 If a class with an active setattr is subclassed and no new setattr
You can’t perform that action at this time.
0 commit comments