@@ -1900,6 +1900,33 @@ def test_pickle(self):
19001900
19011901 self .assertEqual (ns , ns_roundtrip , pname )
19021902
1903+ def test_replace (self ):
1904+ ns = types .SimpleNamespace (x = 11 , y = 22 )
1905+
1906+ ns2 = copy .replace (ns )
1907+ self .assertEqual (ns2 , ns )
1908+ self .assertIsNot (ns2 , ns )
1909+ self .assertIs (type (ns2 ), types .SimpleNamespace )
1910+ self .assertEqual (vars (ns2 ), {'x' : 11 , 'y' : 22 })
1911+ ns2 .x = 3
1912+ self .assertEqual (ns .x , 11 )
1913+ ns .x = 4
1914+ self .assertEqual (ns2 .x , 3 )
1915+
1916+ self .assertEqual (vars (copy .replace (ns , x = 1 )), {'x' : 1 , 'y' : 22 })
1917+ self .assertEqual (vars (copy .replace (ns , y = 2 )), {'x' : 4 , 'y' : 2 })
1918+ self .assertEqual (vars (copy .replace (ns , x = 1 , y = 2 )), {'x' : 1 , 'y' : 2 })
1919+
1920+ def test_replace_subclass (self ):
1921+ class Spam (types .SimpleNamespace ):
1922+ pass
1923+
1924+ spam = Spam (ham = 8 , eggs = 9 )
1925+ spam2 = copy .replace (spam , ham = 5 )
1926+
1927+ self .assertIs (type (spam2 ), Spam )
1928+ self .assertEqual (vars (spam2 ), {'ham' : 5 , 'eggs' : 9 })
1929+
19031930 def test_fake_namespace_compare (self ):
19041931 # Issue #24257: Incorrect use of PyObject_IsInstance() caused
19051932 # SystemError.
0 commit comments