Skip to content

Commit b71cdfc

Browse files
committed
fix tuple extraction in dataframe.__getitem__()
1 parent 32c3f9f commit b71cdfc

File tree

1 file changed

+9
-9
lines changed

1 file changed

+9
-9
lines changed

src/dataframe.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use datafusion::prelude::*;
3636
use pyo3::exceptions::{PyTypeError, PyValueError};
3737
use pyo3::prelude::*;
3838
use pyo3::pybacked::PyBackedStr;
39-
use pyo3::types::{PyCapsule, PyTuple};
39+
use pyo3::types::{PyCapsule, PyTuple, PyTupleMethods};
4040
use tokio::task::JoinHandle;
4141

4242
use crate::errors::py_datafusion_err;
@@ -73,14 +73,14 @@ impl PyDataFrame {
7373
if let Ok(key) = key.extract::<PyBackedStr>() {
7474
// df[col]
7575
self.select_columns(vec![key])
76-
// } else if let Ok(tuple) = key.extract::<&PyTuple>() {
77-
// @todo: make this branch work
78-
// // df[col1, col2, col3]
79-
// let keys = tuple
80-
// .iter()
81-
// .map(|item| item.extract::<PyBackedStr>())
82-
// .collect::<PyResult<Vec<PyBackedStr>>>()?;
83-
// self.select_columns(keys)
76+
} else if let Ok(tuple) = key.extract::<Py<PyTuple>>() {
77+
// df[col1, col2, col3]
78+
let tuple = tuple.bind(key.py());
79+
let keys = tuple
80+
.iter()
81+
.map(|item| item.extract::<PyBackedStr>())
82+
.collect::<PyResult<Vec<PyBackedStr>>>()?;
83+
self.select_columns(keys)
8484
} else if let Ok(keys) = key.extract::<Vec<PyBackedStr>>() {
8585
// df[[col1, col2, col3]]
8686
self.select_columns(keys)

0 commit comments

Comments
 (0)