diff --git a/Lib/test/test_sqlite3/test_dbapi.py b/Lib/test/test_sqlite3/test_dbapi.py index 7a16f75655f..b6a1c05594e 100644 --- a/Lib/test/test_sqlite3/test_dbapi.py +++ b/Lib/test/test_sqlite3/test_dbapi.py @@ -346,8 +346,6 @@ def test_extended_error_code_on_exception(self): sqlite.SQLITE_CONSTRAINT_CHECK) self.assertEqual(exc.sqlite_errorname, "SQLITE_CONSTRAINT_CHECK") - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_disallow_instantiation(self): cx = sqlite.connect(":memory:") check_disallow_instantiation(self, type(cx("select 1"))) diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index 964da64bcfa..157a8e5aeb3 100644 --- a/stdlib/src/sqlite.rs +++ b/stdlib/src/sqlite.rs @@ -71,7 +71,7 @@ mod _sqlite { sliceable::{SaturatedSliceIter, SliceableSequenceOp}, types::{ AsMapping, AsSequence, Callable, Comparable, Constructor, Hashable, IterNext, Iterable, - PyComparisonOp, SelfIter, + PyComparisonOp, SelfIter, Unconstructible, }, utils::ToCString, }; @@ -2036,7 +2036,7 @@ mod _sqlite { } #[pyattr] - #[pyclass(name, traverse)] + #[pyclass(module = "sqlite3", name = "Blob", traverse)] #[derive(Debug, PyPayload)] struct Blob { connection: PyRef, @@ -2044,6 +2044,8 @@ mod _sqlite { inner: PyMutex>, } + impl Unconstructible for Blob {} + #[derive(Debug)] struct BlobInner { blob: SqliteBlob, @@ -2056,7 +2058,7 @@ mod _sqlite { } } - #[pyclass(with(AsMapping))] + #[pyclass(with(AsMapping, Unconstructible))] impl Blob { #[pymethod] fn close(&self) { @@ -2356,7 +2358,7 @@ mod _sqlite { impl PrepareProtocol {} #[pyattr] - #[pyclass(name)] + #[pyclass(module = "sqlite3", name = "Statement")] #[derive(PyPayload)] struct Statement { st: PyMutex, @@ -2373,7 +2375,9 @@ mod _sqlite { } } - #[pyclass()] + impl Unconstructible for Statement {} + + #[pyclass(with(Unconstructible))] impl Statement { fn new( connection: &Connection, diff --git a/vm/src/types/slot.rs b/vm/src/types/slot.rs index eec15d9631f..54ad667b8c7 100644 --- a/vm/src/types/slot.rs +++ b/vm/src/types/slot.rs @@ -802,7 +802,7 @@ pub trait DefaultConstructor: PyPayload + Default { pub trait Unconstructible: PyPayload { #[pyslot] fn slot_new(cls: PyTypeRef, _args: FuncArgs, vm: &VirtualMachine) -> PyResult { - Err(vm.new_type_error(format!("cannot create {} instances", cls.slot_name()))) + Err(vm.new_type_error(format!("cannot create '{}' instances", cls.slot_name()))) } }