迁移一些

This commit is contained in:
shenjack 2024-11-19 22:57:31 +08:00
parent c5de63f02e
commit 75832bfa2e
Signed by: shenjack
GPG Key ID: 7B1134A979775551
2 changed files with 7 additions and 6 deletions

View File

@ -127,7 +127,7 @@ macro_rules! call_py_func {
e, e,
// 获取 traceback // 获取 traceback
match &e { match &e {
PyPluginError::FuncCallError(py_err, _, _) => match py_err.traceback_bound(py) { PyPluginError::FuncCallError(py_err, _, _) => match py_err.traceback(py) {
Some(traceback) => match traceback.format() { Some(traceback) => match traceback.format() {
Ok(trace) => trace, Ok(trace) => trace,
Err(trace_e) => format!("failed to format traceback: {:?}", trace_e), Err(trace_e) => format!("failed to format traceback: {:?}", trace_e),

View File

@ -2,6 +2,7 @@ pub mod call;
pub mod class; pub mod class;
pub mod config; pub mod config;
use std::ffi::CString;
use std::path::Path; use std::path::Path;
use std::time::SystemTime; use std::time::SystemTime;
use std::{collections::HashMap, path::PathBuf}; use std::{collections::HashMap, path::PathBuf};
@ -133,7 +134,7 @@ impl PyStatus {
} }
pub fn get_py_err_traceback(py_err: &PyErr) -> String { pub fn get_py_err_traceback(py_err: &PyErr) -> String {
Python::with_gil(|py| match py_err.traceback_bound(py) { Python::with_gil(|py| match py_err.traceback(py) {
Some(traceback) => match traceback.format() { Some(traceback) => match traceback.format() {
Ok(trace) => trace, Ok(trace) => trace,
Err(e) => format!("{:?}", e), Err(e) => format!("{:?}", e),
@ -398,11 +399,11 @@ pub fn get_change_time(path: &Path) -> Option<SystemTime> { path.metadata().ok()
pub fn py_module_from_code(content: &str, path: &Path) -> PyResult<Py<PyAny>> { pub fn py_module_from_code(content: &str, path: &Path) -> PyResult<Py<PyAny>> {
Python::with_gil(|py| -> PyResult<Py<PyAny>> { Python::with_gil(|py| -> PyResult<Py<PyAny>> {
let module: PyResult<Py<PyAny>> = PyModule::from_code_bound( let module: PyResult<Py<PyAny>> = PyModule::from_code(
py, py,
content, CString::new(content).unwrap().as_c_str(),
&path.to_string_lossy(), CString::new(path.to_string_lossy().as_bytes()).unwrap().as_c_str(),
&path.file_name().unwrap().to_string_lossy(), CString::new(path.file_name().unwrap().to_string_lossy().as_bytes()).unwrap().as_c_str(),
// !!!! 请注意, 一定要给他一个名字, cpython 会自动把后面的重名模块覆盖掉前面的 // !!!! 请注意, 一定要给他一个名字, cpython 会自动把后面的重名模块覆盖掉前面的
) )
.map(|module| module.into()); .map(|module| module.into());