@@ -5,9 +5,7 @@ use crate::instance::PyNativeType;
5
5
use crate :: types:: { PyList , PyObject } ;
6
6
#[ cfg( not( PyPy ) ) ]
7
7
use crate :: IntoPyPointer ;
8
- use crate :: {
9
- ffi, AsPyPointer , FromPyObject , IntoPy , Py , PyTryFrom , Python , ToBorrowedObject , ToPyObject ,
10
- } ;
8
+ use crate :: { ffi, AsPyPointer , FromPyObject , IntoPy , Py , Python , ToBorrowedObject , ToPyObject } ;
11
9
use std:: collections:: { BTreeMap , HashMap } ;
12
10
use std:: ptr:: NonNull ;
13
11
use std:: { cmp, collections, hash} ;
@@ -330,7 +328,7 @@ where
330
328
S : hash:: BuildHasher + Default ,
331
329
{
332
330
fn extract ( ob : & ' source PyObject ) -> Result < Self , PyErr > {
333
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) ?;
331
+ let dict: & PyDict = ob . downcast ( ) ?;
334
332
let mut ret = HashMap :: default ( ) ;
335
333
for ( k, v) in dict. iter ( ) {
336
334
ret. insert ( K :: extract ( k) ?, V :: extract ( v) ?) ;
@@ -345,7 +343,7 @@ where
345
343
V : FromPyObject < ' source > ,
346
344
{
347
345
fn extract ( ob : & ' source PyObject ) -> Result < Self , PyErr > {
348
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) ?;
346
+ let dict: & PyDict = ob . downcast ( ) ?;
349
347
let mut ret = BTreeMap :: new ( ) ;
350
348
for ( k, v) in dict. iter ( ) {
351
349
ret. insert ( K :: extract ( k) ?, V :: extract ( v) ?) ;
@@ -359,7 +357,7 @@ mod test {
359
357
use crate :: types:: dict:: IntoPyDict ;
360
358
use crate :: types:: { PyDict , PyList , PyTuple } ;
361
359
use crate :: Python ;
362
- use crate :: { PyTryFrom , ToPyObject } ;
360
+ use crate :: ToPyObject ;
363
361
use std:: collections:: { BTreeMap , HashMap } ;
364
362
365
363
#[ test]
@@ -414,11 +412,11 @@ mod test {
414
412
let py = gil. python ( ) ;
415
413
let mut v = HashMap :: new ( ) ;
416
414
let ob = v. to_object ( py) ;
417
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
415
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
418
416
assert_eq ! ( 0 , dict. len( ) ) ;
419
417
v. insert ( 7 , 32 ) ;
420
418
let ob = v. to_object ( py) ;
421
- let dict2 = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
419
+ let dict2: & PyDict = ob . downcast ( ) . unwrap ( ) ;
422
420
assert_eq ! ( 1 , dict2. len( ) ) ;
423
421
}
424
422
@@ -429,7 +427,7 @@ mod test {
429
427
let mut v = HashMap :: new ( ) ;
430
428
v. insert ( 7 , 32 ) ;
431
429
let ob = v. to_object ( py) ;
432
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
430
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
433
431
assert_eq ! ( true , dict. contains( 7i32 ) . unwrap( ) ) ;
434
432
assert_eq ! ( false , dict. contains( 8i32 ) . unwrap( ) ) ;
435
433
}
@@ -441,7 +439,7 @@ mod test {
441
439
let mut v = HashMap :: new ( ) ;
442
440
v. insert ( 7 , 32 ) ;
443
441
let ob = v. to_object ( py) ;
444
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
442
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
445
443
assert_eq ! ( 32 , dict. get_item( 7i32 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) ) ;
446
444
assert_eq ! ( None , dict. get_item( 8i32 ) ) ;
447
445
}
@@ -453,7 +451,7 @@ mod test {
453
451
let mut v = HashMap :: new ( ) ;
454
452
v. insert ( 7 , 32 ) ;
455
453
let ob = v. to_object ( py) ;
456
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
454
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
457
455
assert ! ( dict. set_item( 7i32 , 42i32 ) . is_ok( ) ) ; // change
458
456
assert ! ( dict. set_item( 8i32 , 123i32 ) . is_ok( ) ) ; // insert
459
457
assert_eq ! (
@@ -490,7 +488,7 @@ mod test {
490
488
let mut v = HashMap :: new ( ) ;
491
489
v. insert ( 7 , 32 ) ;
492
490
let ob = v. to_object ( py) ;
493
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
491
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
494
492
assert ! ( dict. set_item( 7i32 , 42i32 ) . is_ok( ) ) ; // change
495
493
assert ! ( dict. set_item( 8i32 , 123i32 ) . is_ok( ) ) ; // insert
496
494
assert_eq ! ( 32i32 , v[ & 7i32 ] ) ; // not updated!
@@ -504,7 +502,7 @@ mod test {
504
502
let mut v = HashMap :: new ( ) ;
505
503
v. insert ( 7 , 32 ) ;
506
504
let ob = v. to_object ( py) ;
507
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
505
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
508
506
assert ! ( dict. del_item( 7i32 ) . is_ok( ) ) ;
509
507
assert_eq ! ( 0 , dict. len( ) ) ;
510
508
assert_eq ! ( None , dict. get_item( 7i32 ) ) ;
@@ -517,7 +515,7 @@ mod test {
517
515
let mut v = HashMap :: new ( ) ;
518
516
v. insert ( 7 , 32 ) ;
519
517
let ob = v. to_object ( py) ;
520
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
518
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
521
519
assert ! ( dict. del_item( 7i32 ) . is_ok( ) ) ; // change
522
520
assert_eq ! ( 32i32 , * v. get( & 7i32 ) . unwrap( ) ) ; // not updated!
523
521
}
@@ -531,7 +529,7 @@ mod test {
531
529
v. insert ( 8 , 42 ) ;
532
530
v. insert ( 9 , 123 ) ;
533
531
let ob = v. to_object ( py) ;
534
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
532
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
535
533
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
536
534
let mut key_sum = 0 ;
537
535
let mut value_sum = 0 ;
@@ -553,7 +551,7 @@ mod test {
553
551
v. insert ( 8 , 42 ) ;
554
552
v. insert ( 9 , 123 ) ;
555
553
let ob = v. to_object ( py) ;
556
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
554
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
557
555
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
558
556
let mut key_sum = 0 ;
559
557
for el in dict. keys ( ) . iter ( ) {
@@ -571,7 +569,7 @@ mod test {
571
569
v. insert ( 8 , 42 ) ;
572
570
v. insert ( 9 , 123 ) ;
573
571
let ob = v. to_object ( py) ;
574
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
572
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
575
573
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
576
574
let mut values_sum = 0 ;
577
575
for el in dict. values ( ) . iter ( ) {
@@ -589,7 +587,7 @@ mod test {
589
587
v. insert ( 8 , 42 ) ;
590
588
v. insert ( 9 , 123 ) ;
591
589
let ob = v. to_object ( py) ;
592
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
590
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
593
591
let mut key_sum = 0 ;
594
592
let mut value_sum = 0 ;
595
593
for ( key, value) in dict. iter ( ) {
@@ -609,7 +607,7 @@ mod test {
609
607
v. insert ( 8 , 42 ) ;
610
608
v. insert ( 9 , 123 ) ;
611
609
let ob = v. to_object ( py) ;
612
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
610
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
613
611
let mut key_sum = 0 ;
614
612
let mut value_sum = 0 ;
615
613
for ( key, value) in dict {
@@ -629,7 +627,7 @@ mod test {
629
627
map. insert ( 1 , 1 ) ;
630
628
631
629
let m = map. to_object ( py) ;
632
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
630
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
633
631
634
632
assert ! ( py_map. len( ) == 1 ) ;
635
633
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -645,7 +643,7 @@ mod test {
645
643
map. insert ( 1 , 1 ) ;
646
644
647
645
let m = map. to_object ( py) ;
648
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
646
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
649
647
650
648
assert ! ( py_map. len( ) == 1 ) ;
651
649
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -661,7 +659,7 @@ mod test {
661
659
map. insert ( 1 , 1 ) ;
662
660
663
661
let m = map. to_object ( py) ;
664
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
662
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
665
663
666
664
assert ! ( py_map. len( ) == 1 ) ;
667
665
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -690,7 +688,7 @@ mod test {
690
688
map. insert ( 1 , 1 ) ;
691
689
692
690
let m = map. to_object ( py) ;
693
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
691
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
694
692
695
693
assert ! ( py_map. len( ) == 1 ) ;
696
694
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
0 commit comments