Fix documents following the review comment

This commit is contained in:
kngwyu 2019-09-15 22:17:36 +09:00
parent 44f26f4bb9
commit 35851b7ff9
4 changed files with 17 additions and 25 deletions

View File

@ -121,7 +121,7 @@ fn main_(py: Python) -> PyResult<()> {
} }
``` ```
If you want to excute a code with multiple lines, you can use If you want to excute one or more statements, you can use
[`Python::run`](https://pyo3.rs/master/doc/pyo3/struct.Python.html#method.run) [`Python::run`](https://pyo3.rs/master/doc/pyo3/struct.Python.html#method.run)
or [`py_run!](https://pyo3.rs/master/doc/pyo3/macro.py_run.htm) macro. or [`py_run!](https://pyo3.rs/master/doc/pyo3/macro.py_run.htm) macro.

View File

@ -94,9 +94,17 @@ Example program displaying the value of `sys.version` and the current user name:
use pyo3::prelude::*; use pyo3::prelude::*;
use pyo3::types::IntoPyDict; use pyo3::types::IntoPyDict;
fn main() -> PyResult<()> { fn main() -> Result<(), ()> {
let gil = Python::acquire_gil(); let gil = Python::acquire_gil();
let py = gil.python(); let py = gil.python();
main_(py).map_err(|e| {
// We can't display python error type via ::std::fmt::Display,
// so print error here manually.
e.print_and_set_sys_last_vars(py);
})
}
fn main_(py: Python) -> PyResult<()> {
let sys = py.import("sys")?; let sys = py.import("sys")?;
let version: String = sys.get("version")?.extract()?; let version: String = sys.get("version")?.extract()?;
let locals = [("os", py.import("os")?)].into_py_dict(py); let locals = [("os", py.import("os")?)].into_py_dict(py);
@ -107,6 +115,10 @@ fn main() -> PyResult<()> {
} }
``` ```
If you want to excute one or more statements, you can use
[`Python::run`](https://pyo3.rs/master/doc/pyo3/struct.Python.html#method.run)
or [`py_run!](https://pyo3.rs/master/doc/pyo3/macro.py_run.htm) macro.
## Examples and tooling ## Examples and tooling
* [examples/word-count](examples/word-count) _Counting the occurrences of a word in a text file_ * [examples/word-count](examples/word-count) _Counting the occurrences of a word in a text file_

View File

@ -106,10 +106,10 @@ impl<'p> Python<'p> {
/// ///
/// # Example: /// # Example:
/// ``` /// ```
/// use pyo3::{types::{IntoPyDict, PyBytes, PyDict}, prelude::*}; /// use pyo3::{types::{PyBytes, PyDict}, prelude::*};
/// let gil = pyo3::Python::acquire_gil(); /// let gil = pyo3::Python::acquire_gil();
/// let py = gil.python(); /// let py = gil.python();
/// let locals = [("ret", py.None())].into_py_dict(py); /// let locals = PyDict::new(py);
/// py.run( /// py.run(
/// r#" /// r#"
/// import base64 /// import base64
@ -118,7 +118,7 @@ impl<'p> Python<'p> {
/// "#, /// "#,
/// None, /// None,
/// Some(locals), /// Some(locals),
/// ); /// ).unwrap();
/// let ret = locals.get_item("ret").unwrap(); /// let ret = locals.get_item("ret").unwrap();
/// let b64: &PyBytes = ret.downcast_ref().unwrap(); /// let b64: &PyBytes = ret.downcast_ref().unwrap();
/// assert_eq!(b64.as_bytes(), b"SGVsbG8gUnVzdCE="); /// assert_eq!(b64.as_bytes(), b"SGVsbG8gUnVzdCE=");

View File

@ -77,23 +77,3 @@ fn new_with_two_args() {
assert_eq!(obj._data1, 10); assert_eq!(obj._data1, 10);
assert_eq!(obj._data2, 20); assert_eq!(obj._data2, 20);
} }
#[test]
fn py_run_example() {
use pyo3::types::{IntoPyDict, PyDict, PyList};
let gil = Python::acquire_gil();
let py = gil.python();
let ret_dict = [("ret", py.None())].into_py_dict(py);
py.run(
r#"
l = [8, 7, 3, 4, 5]
l.sort()
ret = l
"#,
None,
Some(ret_dict),
);
let list: &PyList = ret_dict.get_item("ret").unwrap().downcast_ref().unwrap();
let ret: Vec<i32> = list.extract().unwrap();
assert_eq!(&ret, &[3, 4, 5, 7, 8]);
}