From ec0a2325e4e246f27caba06aea0a1f8d5bb3d5bc Mon Sep 17 00:00:00 2001 From: Jiseok CHOI Date: Fri, 1 Aug 2025 18:04:15 +0900 Subject: [PATCH] Use `Unconstructible` trait for internal types --- stdlib/src/sqlite.rs | 22 +++++----------------- vm/src/types/slot.rs | 2 +- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index abcacae03..157a8e5ae 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, }; @@ -2044,13 +2044,7 @@ mod _sqlite { inner: PyMutex>, } - impl Constructor for Blob { - type Args = FuncArgs; - - fn py_new(_cls: PyTypeRef, _args: Self::Args, vm: &VirtualMachine) -> PyResult { - Err(vm.new_type_error("cannot create 'sqlite3.Blob' instances")) - } - } + impl Unconstructible for Blob {} #[derive(Debug)] struct BlobInner { @@ -2064,7 +2058,7 @@ mod _sqlite { } } - #[pyclass(with(AsMapping, Constructor))] + #[pyclass(with(AsMapping, Unconstructible))] impl Blob { #[pymethod] fn close(&self) { @@ -2381,15 +2375,9 @@ mod _sqlite { } } - impl Constructor for Statement { - type Args = FuncArgs; + impl Unconstructible for Statement {} - fn py_new(_cls: PyTypeRef, _args: Self::Args, vm: &VirtualMachine) -> PyResult { - Err(vm.new_type_error("cannot create 'sqlite3.Statement' instances")) - } - } - - #[pyclass(with(Constructor))] + #[pyclass(with(Unconstructible))] impl Statement { fn new( connection: &Connection, diff --git a/vm/src/types/slot.rs b/vm/src/types/slot.rs index eec15d963..54ad667b8 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()))) } }