Skip to content

Commit bc8dc5d

Browse files
morealclaude
andcommitted
Enable derive guards for AsMapping/AsSequence slot methods
Remove redundant #[pymethod(name = "__len__")] from PyStr (already provided via AsMapping/AsSequence trait impls). Enable compile-time guards for __len__, __contains__, __getitem__, __setitem__, __delitem__ to prevent future direct definitions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f4906cf commit bc8dc5d

2 files changed

Lines changed: 5 additions & 6 deletions

File tree

crates/derive-impl/src/pyclass.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -981,12 +981,12 @@ where
981981
("__index__", "AsNumber"),
982982
("__bool__", "AsNumber"),
983983
// AsSequence trait
984-
// ("__len__", "AsSequence (or AsMapping)"),
985-
// ("__contains__", "AsSequence"),
984+
("__len__", "AsSequence (or AsMapping)"),
985+
("__contains__", "AsSequence"),
986986
// AsMapping trait
987-
// ("__getitem__", "AsMapping (or AsSequence)"),
988-
// ("__setitem__", "AsMapping (or AsSequence)"),
989-
// ("__delitem__", "AsMapping (or AsSequence)"),
987+
("__getitem__", "AsMapping (or AsSequence)"),
988+
("__setitem__", "AsMapping (or AsSequence)"),
989+
("__delitem__", "AsMapping (or AsSequence)"),
990990
// Iterable/IterNext traits
991991
("__iter__", "Iterable"),
992992
("__next__", "IterNext"),

crates/vm/src/builtins/str.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,6 @@ impl PyStr {
663663
self.data.is_empty()
664664
}
665665

666-
#[pymethod(name = "__len__")]
667666
#[inline]
668667
pub fn char_len(&self) -> usize {
669668
self.data.char_len()

0 commit comments

Comments
 (0)