@@ -1099,23 +1099,33 @@ impl<T: Element> PyArray<T, Ix1> {
1099
1099
}
1100
1100
}
1101
1101
1102
+ /// Deprecated form of [`PyArray<T, Ix1>::from_vec_bound`]
1103
+ #[ deprecated(
1104
+ since = "0.21.0" ,
1105
+ note = "will be replaced by `PyArray::from_vec_bound` in the future"
1106
+ ) ]
1107
+ #[ inline( always) ]
1108
+ pub fn from_vec < ' py > ( py : Python < ' py > , vec : Vec < T > ) -> & ' py Self {
1109
+ Self :: from_vec_bound ( py, vec) . into_gil_ref ( )
1110
+ }
1111
+
1102
1112
/// Construct a one-dimensional array from a [`Vec<T>`][Vec].
1103
1113
///
1104
1114
/// # Example
1105
1115
///
1106
1116
/// ```
1107
- /// use numpy::PyArray;
1117
+ /// use numpy::{ PyArray, PyArrayMethods} ;
1108
1118
/// use pyo3::Python;
1109
1119
///
1110
1120
/// Python::with_gil(|py| {
1111
1121
/// let vec = vec![1, 2, 3, 4, 5];
1112
- /// let pyarray = PyArray::from_vec (py, vec);
1122
+ /// let pyarray = PyArray::from_vec_bound (py, vec);
1113
1123
/// assert_eq!(pyarray.readonly().as_slice().unwrap(), &[1, 2, 3, 4, 5]);
1114
1124
/// });
1115
1125
/// ```
1116
1126
#[ inline( always) ]
1117
- pub fn from_vec < ' py > ( py : Python < ' py > , vec : Vec < T > ) -> & ' py Self {
1118
- vec. into_pyarray_bound ( py) . into_gil_ref ( )
1127
+ pub fn from_vec_bound < ' py > ( py : Python < ' py > , vec : Vec < T > ) -> Bound < ' py , Self > {
1128
+ vec. into_pyarray_bound ( py)
1119
1129
}
1120
1130
1121
1131
/// Deprecated form of [`PyArray<T, Ix1>::from_iter_bound`]
@@ -1156,6 +1166,15 @@ impl<T: Element> PyArray<T, Ix1> {
1156
1166
}
1157
1167
1158
1168
impl < T : Element > PyArray < T , Ix2 > {
1169
+ /// Deprecated form of [`PyArray<T, Ix2>::from_vec2_bound`]
1170
+ #[ deprecated(
1171
+ since = "0.21.0" ,
1172
+ note = "will be replaced by `PyArray::from_vec2_bound` in the future"
1173
+ ) ]
1174
+ pub fn from_vec2 < ' py > ( py : Python < ' py > , v : & [ Vec < T > ] ) -> Result < & ' py Self , FromVecError > {
1175
+ Self :: from_vec2_bound ( py, v) . map ( Bound :: into_gil_ref)
1176
+ }
1177
+
1159
1178
/// Construct a two-dimension array from a [`Vec<Vec<T>>`][Vec].
1160
1179
///
1161
1180
/// This function checks all dimensions of the inner vectors and returns
@@ -1164,20 +1183,23 @@ impl<T: Element> PyArray<T, Ix2> {
1164
1183
/// # Example
1165
1184
///
1166
1185
/// ```
1167
- /// use numpy::PyArray;
1186
+ /// use numpy::{ PyArray, PyArrayMethods} ;
1168
1187
/// use pyo3::Python;
1169
1188
/// use ndarray::array;
1170
1189
///
1171
1190
/// Python::with_gil(|py| {
1172
1191
/// let vec2 = vec![vec![11, 12], vec![21, 22]];
1173
- /// let pyarray = PyArray::from_vec2 (py, &vec2).unwrap();
1192
+ /// let pyarray = PyArray::from_vec2_bound (py, &vec2).unwrap();
1174
1193
/// assert_eq!(pyarray.readonly().as_array(), array![[11, 12], [21, 22]]);
1175
1194
///
1176
1195
/// let ragged_vec2 = vec![vec![11, 12], vec![21]];
1177
- /// assert!(PyArray::from_vec2 (py, &ragged_vec2).is_err());
1196
+ /// assert!(PyArray::from_vec2_bound (py, &ragged_vec2).is_err());
1178
1197
/// });
1179
1198
/// ```
1180
- pub fn from_vec2 < ' py > ( py : Python < ' py > , v : & [ Vec < T > ] ) -> Result < & ' py Self , FromVecError > {
1199
+ pub fn from_vec2_bound < ' py > (
1200
+ py : Python < ' py > ,
1201
+ v : & [ Vec < T > ] ,
1202
+ ) -> Result < Bound < ' py , Self > , FromVecError > {
1181
1203
let len2 = v. first ( ) . map_or ( 0 , |v| v. len ( ) ) ;
1182
1204
let dims = [ v. len ( ) , len2] ;
1183
1205
// SAFETY: The result of `Self::new` is always safe to drop.
@@ -1191,12 +1213,21 @@ impl<T: Element> PyArray<T, Ix2> {
1191
1213
}
1192
1214
clone_elements ( v, & mut data_ptr) ;
1193
1215
}
1194
- Ok ( array. into_gil_ref ( ) )
1216
+ Ok ( array)
1195
1217
}
1196
1218
}
1197
1219
}
1198
1220
1199
1221
impl < T : Element > PyArray < T , Ix3 > {
1222
+ /// Deprecated form of [`PyArray<T, Ix3>::from_vec3_bound`]
1223
+ #[ deprecated(
1224
+ since = "0.21.0" ,
1225
+ note = "will be replaced by `PyArray::from_vec3_bound` in the future"
1226
+ ) ]
1227
+ pub fn from_vec3 < ' py > ( py : Python < ' py > , v : & [ Vec < Vec < T > > ] ) -> Result < & ' py Self , FromVecError > {
1228
+ Self :: from_vec3_bound ( py, v) . map ( Bound :: into_gil_ref)
1229
+ }
1230
+
1200
1231
/// Construct a three-dimensional array from a [`Vec<Vec<Vec<T>>>`][Vec].
1201
1232
///
1202
1233
/// This function checks all dimensions of the inner vectors and returns
@@ -1205,7 +1236,7 @@ impl<T: Element> PyArray<T, Ix3> {
1205
1236
/// # Example
1206
1237
///
1207
1238
/// ```
1208
- /// use numpy::PyArray;
1239
+ /// use numpy::{ PyArray, PyArrayMethods} ;
1209
1240
/// use pyo3::Python;
1210
1241
/// use ndarray::array;
1211
1242
///
@@ -1214,7 +1245,7 @@ impl<T: Element> PyArray<T, Ix3> {
1214
1245
/// vec![vec![111, 112], vec![121, 122]],
1215
1246
/// vec![vec![211, 212], vec![221, 222]],
1216
1247
/// ];
1217
- /// let pyarray = PyArray::from_vec3 (py, &vec3).unwrap();
1248
+ /// let pyarray = PyArray::from_vec3_bound (py, &vec3).unwrap();
1218
1249
/// assert_eq!(
1219
1250
/// pyarray.readonly().as_array(),
1220
1251
/// array![[[111, 112], [121, 122]], [[211, 212], [221, 222]]]
@@ -1224,10 +1255,13 @@ impl<T: Element> PyArray<T, Ix3> {
1224
1255
/// vec![vec![111, 112], vec![121, 122]],
1225
1256
/// vec![vec![211], vec![221, 222]],
1226
1257
/// ];
1227
- /// assert!(PyArray::from_vec3 (py, &ragged_vec3).is_err());
1258
+ /// assert!(PyArray::from_vec3_bound (py, &ragged_vec3).is_err());
1228
1259
/// });
1229
1260
/// ```
1230
- pub fn from_vec3 < ' py > ( py : Python < ' py > , v : & [ Vec < Vec < T > > ] ) -> Result < & ' py Self , FromVecError > {
1261
+ pub fn from_vec3_bound < ' py > (
1262
+ py : Python < ' py > ,
1263
+ v : & [ Vec < Vec < T > > ] ,
1264
+ ) -> Result < Bound < ' py , Self > , FromVecError > {
1231
1265
let len2 = v. first ( ) . map_or ( 0 , |v| v. len ( ) ) ;
1232
1266
let len3 = v. first ( ) . map_or ( 0 , |v| v. first ( ) . map_or ( 0 , |v| v. len ( ) ) ) ;
1233
1267
let dims = [ v. len ( ) , len2, len3] ;
@@ -1248,7 +1282,7 @@ impl<T: Element> PyArray<T, Ix3> {
1248
1282
clone_elements ( v, & mut data_ptr) ;
1249
1283
}
1250
1284
}
1251
- Ok ( array. into_gil_ref ( ) )
1285
+ Ok ( array)
1252
1286
}
1253
1287
}
1254
1288
}
@@ -2319,7 +2353,7 @@ mod tests {
2319
2353
#[ test]
2320
2354
fn test_dyn_to_owned_array ( ) {
2321
2355
Python :: with_gil ( |py| {
2322
- let array = PyArray :: from_vec2 ( py, & [ vec ! [ 1 , 2 ] , vec ! [ 3 , 4 ] ] )
2356
+ let array = PyArray :: from_vec2_bound ( py, & [ vec ! [ 1 , 2 ] , vec ! [ 3 , 4 ] ] )
2323
2357
. unwrap ( )
2324
2358
. to_dyn ( )
2325
2359
. to_owned_array ( ) ;
0 commit comments