diff --git a/src/lookup_key.rs b/src/lookup_key.rs index 21b584690..e145c1f41 100644 --- a/src/lookup_key.rs +++ b/src/lookup_key.rs @@ -51,12 +51,6 @@ impl fmt::Display for LookupKey { } } -macro_rules! py_string { - ($py:ident, $str:expr) => { - PyString::intern($py, $str).into() - }; -} - impl LookupKey { pub fn from_py(py: Python, value: &PyAny, alt_alias: Option<&str>) -> PyResult { if let Ok(alias_py) = value.downcast::() { @@ -67,7 +61,7 @@ impl LookupKey { py_key1: alias_py.into_py(py), path1: LookupPath::from_str(py, alias, Some(alias_py)), key2: alt_alias.to_string(), - py_key2: py_string!(py, alt_alias), + py_key2: PyString::new(py, alt_alias).into(), path2: LookupPath::from_str(py, alt_alias, None), }), None => Ok(Self::simple(py, alias, Some(alias_py))), @@ -98,12 +92,12 @@ impl LookupKey { fn simple(py: Python, key: &str, opt_py_key: Option<&PyString>) -> Self { let py_key = match opt_py_key { - Some(py_key) => py_key.into_py(py), - None => py_string!(py, key), + Some(py_key) => py_key, + None => PyString::new(py, key), }; Self::Simple { key: key.to_string(), - py_key, + py_key: py_key.into(), path: LookupPath::from_str(py, key, opt_py_key), } } @@ -348,10 +342,10 @@ impl fmt::Display for LookupPath { impl LookupPath { fn from_str(py: Python, key: &str, py_key: Option<&PyString>) -> Self { let py_key = match py_key { - Some(py_key) => py_key.into_py(py), - None => py_string!(py, key), + Some(py_key) => py_key, + None => PyString::new(py, key), }; - Self(vec![PathItem::S(key.to_string(), py_key)]) + Self(vec![PathItem::S(key.to_string(), py_key.into())]) } fn from_list(obj: &PyAny) -> PyResult { diff --git a/src/serializers/type_serializers/dataclass.rs b/src/serializers/type_serializers/dataclass.rs index 787e267dd..a82643186 100644 --- a/src/serializers/type_serializers/dataclass.rs +++ b/src/serializers/type_serializers/dataclass.rs @@ -39,7 +39,7 @@ impl BuildSerializer for DataclassArgsBuilder { let field_info: &PyDict = item.downcast()?; let name: String = field_info.get_as_req(intern!(py, "name"))?; - let key_py: Py = PyString::intern(py, &name).into_py(py); + let key_py: Py = PyString::new(py, &name).into_py(py); if field_info.get_as(intern!(py, "serialization_exclude"))? == Some(true) { fields.insert(name, SerField::new(py, key_py, None, None, true)); diff --git a/src/validators/arguments.rs b/src/validators/arguments.rs index 0405d54e5..aaf5afb6b 100644 --- a/src/validators/arguments.rs +++ b/src/validators/arguments.rs @@ -73,7 +73,7 @@ impl BuildValidator for ArgumentsValidator { } None => Some(LookupKey::from_string(py, &name)), }; - kwarg_key = Some(PyString::intern(py, &name).into()); + kwarg_key = Some(PyString::new(py, &name).into()); } let schema: &PyAny = arg.get_as_req(intern!(py, "schema"))?; diff --git a/src/validators/dataclass.rs b/src/validators/dataclass.rs index dbbfc5ee2..986556b66 100644 --- a/src/validators/dataclass.rs +++ b/src/validators/dataclass.rs @@ -477,7 +477,7 @@ impl BuildValidator for DataclassValidator { let validator = build_validator(sub_schema, config, definitions)?; let post_init = if schema.get_as::(intern!(py, "post_init"))?.unwrap_or(false) { - Some(PyString::intern(py, "__post_init__").into_py(py)) + Some(PyString::new(py, "__post_init__").into_py(py)) } else { None }; diff --git a/src/validators/model.rs b/src/validators/model.rs index 6f810d10e..1831d2fde 100644 --- a/src/validators/model.rs +++ b/src/validators/model.rs @@ -89,7 +89,7 @@ impl BuildValidator for ModelValidator { class: class.into(), post_init: schema .get_as::<&str>(intern!(py, "post_init"))? - .map(|s| PyString::intern(py, s).into_py(py)), + .map(|s| PyString::new(py, s).into_py(py)), frozen: schema.get_as(intern!(py, "frozen"))?.unwrap_or(false), custom_init: schema.get_as(intern!(py, "custom_init"))?.unwrap_or(false), root_model: schema.get_as(intern!(py, "root_model"))?.unwrap_or(false), diff --git a/src/validators/model_fields.rs b/src/validators/model_fields.rs index f603c7b22..c73a2821d 100644 --- a/src/validators/model_fields.rs +++ b/src/validators/model_fields.rs @@ -93,7 +93,7 @@ impl BuildValidator for ModelFieldsValidator { fields.push(Field { name: field_name.to_string(), lookup_key, - name_py: PyString::intern(py, field_name).into(), + name_py: PyString::new(py, field_name).into(), validator, frozen: field_info.get_as::(intern!(py, "frozen"))?.unwrap_or(false), }); diff --git a/src/validators/typed_dict.rs b/src/validators/typed_dict.rs index 95cd19133..d2fc00ec7 100644 --- a/src/validators/typed_dict.rs +++ b/src/validators/typed_dict.rs @@ -120,7 +120,7 @@ impl BuildValidator for TypedDictValidator { fields.push(TypedDictField { name: field_name.to_string(), lookup_key, - name_py: PyString::intern(py, field_name).into(), + name_py: PyString::new(py, field_name).into(), validator, required, });