| 2261 | return python_getattr(jsobj, jskey); |
| 2262 | }, |
| 2263 | set(jsobj: PyProxy, jskey: string | symbol, jsval: any): boolean { |
| 2264 | let descr = Object.getOwnPropertyDescriptor(jsobj, jskey); |
| 2265 | if (descr && !descr.writable && !descr.set) { |
| 2266 | return false; |
| 2267 | } |
| 2268 | // python_setattr will crash if given a Symbol. |
| 2269 | if (typeof jskey === "symbol" || filteredHasKey(jsobj, jskey, true)) { |
| 2270 | return Reflect.set(jsobj, jskey, jsval); |
| 2271 | } |
| 2272 | if (jskey.startsWith("$")) { |
| 2273 | jskey = jskey.slice(1); |
| 2274 | } |
| 2275 | python_setattr(jsobj, jskey, jsval); |
| 2276 | return true; |
| 2277 | }, |
| 2278 | deleteProperty(jsobj: PyProxy, jskey: string | symbol): boolean { |
| 2279 | let descr = Object.getOwnPropertyDescriptor(jsobj, jskey); |
| 2280 | if (descr && !descr.configurable) { |