From 126a74842fceac17672b93eabf2a97831d2d65ae Mon Sep 17 00:00:00 2001 From: David Hewitt <1939362+davidhewitt@users.noreply.github.com> Date: Tue, 10 Nov 2020 14:21:48 +0000 Subject: [PATCH] rustapi_module: move issue_219 regression test --- examples/rustapi_module/setup.py | 3 ++- examples/rustapi_module/src/datetime.rs | 8 -------- examples/rustapi_module/src/lib.rs | 1 + examples/rustapi_module/src/misc.rs | 16 ++++++++++++++++ examples/rustapi_module/tests/test_datetime.py | 4 ---- examples/rustapi_module/tests/test_misc.py | 6 ++++++ 6 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 examples/rustapi_module/src/misc.rs create mode 100644 examples/rustapi_module/tests/test_misc.py diff --git a/examples/rustapi_module/setup.py b/examples/rustapi_module/setup.py index 69de1de0093..50fb20175e1 100644 --- a/examples/rustapi_module/setup.py +++ b/examples/rustapi_module/setup.py @@ -41,11 +41,12 @@ def make_rust_extension(module_name): rust_extensions=[ make_rust_extension("rustapi_module.buf_and_str"), make_rust_extension("rustapi_module.datetime"), + make_rust_extension("rustapi_module.misc"), make_rust_extension("rustapi_module.objstore"), make_rust_extension("rustapi_module.othermod"), + make_rust_extension("rustapi_module.pyclass_iter"), make_rust_extension("rustapi_module.subclassing"), make_rust_extension("rustapi_module.test_dict"), - make_rust_extension("rustapi_module.pyclass_iter"), ], include_package_data=True, zip_safe=False, diff --git a/examples/rustapi_module/src/datetime.rs b/examples/rustapi_module/src/datetime.rs index 72fba0f01b3..8eaafe18aac 100644 --- a/examples/rustapi_module/src/datetime.rs +++ b/examples/rustapi_module/src/datetime.rs @@ -183,13 +183,6 @@ fn datetime_from_timestamp<'p>( PyDateTime::from_timestamp(py, ts, tz) } -#[pyfunction] -fn issue_219() -> PyResult<()> { - let gil = Python::acquire_gil(); - let _py = gil.python(); - Ok(()) -} - #[pyclass(extends=PyTzInfo)] pub struct TzClass {} @@ -234,7 +227,6 @@ fn datetime(_py: Python<'_>, m: &PyModule) -> PyResult<()> { m.add_function(wrap_pyfunction!(get_datetime_tuple_fold, m)?)?; } - m.add_function(wrap_pyfunction!(issue_219, m)?)?; m.add_class::()?; Ok(()) diff --git a/examples/rustapi_module/src/lib.rs b/examples/rustapi_module/src/lib.rs index ce63565a494..257d31aefe8 100644 --- a/examples/rustapi_module/src/lib.rs +++ b/examples/rustapi_module/src/lib.rs @@ -1,6 +1,7 @@ pub mod buf_and_str; pub mod datetime; pub mod dict_iter; +pub mod misc; pub mod objstore; pub mod othermod; pub mod pyclass_iter; diff --git a/examples/rustapi_module/src/misc.rs b/examples/rustapi_module/src/misc.rs new file mode 100644 index 00000000000..badab06e5b8 --- /dev/null +++ b/examples/rustapi_module/src/misc.rs @@ -0,0 +1,16 @@ +use pyo3::prelude::*; +use pyo3::wrap_pyfunction; + +#[pyfunction] +fn issue_219() -> PyResult<()> { + // issue 219: acquiring GIL inside #[pyfunction] deadlocks. + let gil = Python::acquire_gil(); + let _py = gil.python(); + Ok(()) +} + +#[pymodule] +fn misc(_py: Python<'_>, m: &PyModule) -> PyResult<()> { + m.add_function(wrap_pyfunction!(issue_219, m)?)?; + Ok(()) +} diff --git a/examples/rustapi_module/tests/test_datetime.py b/examples/rustapi_module/tests/test_datetime.py index cfce7ce08b1..1c8312a1a3e 100644 --- a/examples/rustapi_module/tests/test_datetime.py +++ b/examples/rustapi_module/tests/test_datetime.py @@ -293,10 +293,6 @@ def test_delta_err(args, err_type): rdt.make_delta(*args) -def test_issue_219(): - rdt.issue_219() - - def test_tz_class(): tzi = rdt.TzClass() diff --git a/examples/rustapi_module/tests/test_misc.py b/examples/rustapi_module/tests/test_misc.py new file mode 100644 index 00000000000..b4e05dd3534 --- /dev/null +++ b/examples/rustapi_module/tests/test_misc.py @@ -0,0 +1,6 @@ +import rustapi_module.misc + + +def test_issue_219(): + # Should not deadlock + rustapi_module.misc.issue_219()