Skip to content

Commit a77e9b6

Browse files
authored
Merge pull request RustPython#3908 from jopemachine/edit-get-method
Add MappingProxy's get method implementation handling missing key
2 parents 9fd31b8 + c1dda36 commit a77e9b6

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

Lib/test/test_types.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,8 +1029,6 @@ def test_get(self):
10291029
self.assertIsNone(view.get('xxx'))
10301030
self.assertEqual(view.get('xxx', 42), 42)
10311031

1032-
# TODO: RUSTPYTHON
1033-
@unittest.expectedFailure
10341032
def test_missing(self):
10351033
class dictmissing(dict):
10361034
def __missing__(self, key):

vm/src/builtins/mappingproxy.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,12 @@ impl PyMappingProxy {
8383
default: OptionalArg,
8484
vm: &VirtualMachine,
8585
) -> PyResult<Option<PyObjectRef>> {
86-
let default = default.into_option();
87-
let value = self.get_inner(key, vm)?.or(default);
88-
Ok(value)
86+
let obj = self.to_object(vm)?;
87+
Ok(Some(vm.call_method(
88+
&obj,
89+
"get",
90+
(key, default.unwrap_or_none(vm)),
91+
)?))
8992
}
9093

9194
#[pymethod(magic)]

0 commit comments

Comments
 (0)