Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Use shortform
  • Loading branch information
ShaharNaveh committed Apr 1, 2026
commit b0583ab24c299da647a7953a5c6e055b72471576
11 changes: 4 additions & 7 deletions crates/vm/src/builtins/str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,8 @@ use rustpython_common::{
wtf8::{CodePoint, Wtf8, Wtf8Buf, Wtf8Chunk, Wtf8Concat},
};

use icu_properties::{
CodePointSetData,
props::{BidiClass, EnumeratedProperty, GeneralCategory, XidContinue, XidStart},
use icu_properties::props::{
BidiClass, BinaryProperty, EnumeratedProperty, GeneralCategory, XidContinue, XidStart,
};
use unicode_casing::CharExt;

Expand Down Expand Up @@ -1366,14 +1365,12 @@ impl PyStr {
let Some(s) = self.to_str() else { return false };
let mut chars = s.chars();

let xid_start = CodePointSetData::new::<XidStart>();
let is_identifier_start = chars
.next()
.is_some_and(|c| c == '_' || xid_start.contains(c));
.is_some_and(|c| c == '_' || XidStart::for_char(c));

// a string is not an identifier if it has whitespace or starts with a number
let xid_continue = CodePointSetData::new::<XidContinue>();
is_identifier_start && chars.all(|c| xid_continue.contains(c))
is_identifier_start && chars.all(|c| XidContinue::for_char(c))
}

// https://docs.python.org/3/library/stdtypes.html#str.translate
Expand Down