@@ -4,11 +4,11 @@ use crate::err::{self, PyErr, PyResult};
4
4
use crate :: instance:: PyNativeType ;
5
5
use crate :: types:: { PyList , PyObject } ;
6
6
use crate :: AsPyPointer ;
7
+ use crate :: FromPyObject ;
7
8
#[ cfg( not( PyPy ) ) ]
8
9
use crate :: IntoPyPointer ;
9
10
use crate :: Python ;
10
11
use crate :: { ffi, IntoPy , Py } ;
11
- use crate :: { FromPyObject , PyTryFrom } ;
12
12
use crate :: { ToBorrowedObject , ToPyObject } ;
13
13
use std:: collections:: { BTreeMap , HashMap } ;
14
14
use std:: { cmp, collections, hash} ;
@@ -324,7 +324,7 @@ where
324
324
S : hash:: BuildHasher + Default ,
325
325
{
326
326
fn extract ( ob : & ' source PyObject ) -> Result < Self , PyErr > {
327
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) ?;
327
+ let dict: & PyDict = ob . downcast ( ) ?;
328
328
let mut ret = HashMap :: default ( ) ;
329
329
for ( k, v) in dict. iter ( ) {
330
330
ret. insert ( K :: extract ( k) ?, V :: extract ( v) ?) ;
@@ -339,7 +339,7 @@ where
339
339
V : FromPyObject < ' source > ,
340
340
{
341
341
fn extract ( ob : & ' source PyObject ) -> Result < Self , PyErr > {
342
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) ?;
342
+ let dict: & PyDict = ob . downcast ( ) ?;
343
343
let mut ret = BTreeMap :: new ( ) ;
344
344
for ( k, v) in dict. iter ( ) {
345
345
ret. insert ( K :: extract ( k) ?, V :: extract ( v) ?) ;
@@ -354,7 +354,7 @@ mod test {
354
354
use crate :: types:: { PyDict , PyList , PyTuple } ;
355
355
use crate :: ObjectProtocol ;
356
356
use crate :: Python ;
357
- use crate :: { PyTryFrom , ToPyObject } ;
357
+ use crate :: ToPyObject ;
358
358
use std:: collections:: { BTreeMap , HashMap } ;
359
359
360
360
#[ test]
@@ -409,11 +409,11 @@ mod test {
409
409
let py = gil. python ( ) ;
410
410
let mut v = HashMap :: new ( ) ;
411
411
let ob = v. to_object ( py) ;
412
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
412
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
413
413
assert_eq ! ( 0 , dict. len( ) ) ;
414
414
v. insert ( 7 , 32 ) ;
415
415
let ob = v. to_object ( py) ;
416
- let dict2 = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
416
+ let dict2: & PyDict = ob . downcast ( ) . unwrap ( ) ;
417
417
assert_eq ! ( 1 , dict2. len( ) ) ;
418
418
}
419
419
@@ -424,7 +424,7 @@ mod test {
424
424
let mut v = HashMap :: new ( ) ;
425
425
v. insert ( 7 , 32 ) ;
426
426
let ob = v. to_object ( py) ;
427
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
427
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
428
428
assert_eq ! ( true , dict. contains( 7i32 ) . unwrap( ) ) ;
429
429
assert_eq ! ( false , dict. contains( 8i32 ) . unwrap( ) ) ;
430
430
}
@@ -436,7 +436,7 @@ mod test {
436
436
let mut v = HashMap :: new ( ) ;
437
437
v. insert ( 7 , 32 ) ;
438
438
let ob = v. to_object ( py) ;
439
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
439
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
440
440
assert_eq ! ( 32 , dict. get_item( 7i32 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) ) ;
441
441
assert_eq ! ( None , dict. get_item( 8i32 ) ) ;
442
442
}
@@ -448,7 +448,7 @@ mod test {
448
448
let mut v = HashMap :: new ( ) ;
449
449
v. insert ( 7 , 32 ) ;
450
450
let ob = v. to_object ( py) ;
451
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
451
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
452
452
assert ! ( dict. set_item( 7i32 , 42i32 ) . is_ok( ) ) ; // change
453
453
assert ! ( dict. set_item( 8i32 , 123i32 ) . is_ok( ) ) ; // insert
454
454
assert_eq ! (
@@ -485,7 +485,7 @@ mod test {
485
485
let mut v = HashMap :: new ( ) ;
486
486
v. insert ( 7 , 32 ) ;
487
487
let ob = v. to_object ( py) ;
488
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
488
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
489
489
assert ! ( dict. set_item( 7i32 , 42i32 ) . is_ok( ) ) ; // change
490
490
assert ! ( dict. set_item( 8i32 , 123i32 ) . is_ok( ) ) ; // insert
491
491
assert_eq ! ( 32i32 , v[ & 7i32 ] ) ; // not updated!
@@ -499,7 +499,7 @@ mod test {
499
499
let mut v = HashMap :: new ( ) ;
500
500
v. insert ( 7 , 32 ) ;
501
501
let ob = v. to_object ( py) ;
502
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
502
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
503
503
assert ! ( dict. del_item( 7i32 ) . is_ok( ) ) ;
504
504
assert_eq ! ( 0 , dict. len( ) ) ;
505
505
assert_eq ! ( None , dict. get_item( 7i32 ) ) ;
@@ -512,7 +512,7 @@ mod test {
512
512
let mut v = HashMap :: new ( ) ;
513
513
v. insert ( 7 , 32 ) ;
514
514
let ob = v. to_object ( py) ;
515
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
515
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
516
516
assert ! ( dict. del_item( 7i32 ) . is_ok( ) ) ; // change
517
517
assert_eq ! ( 32i32 , * v. get( & 7i32 ) . unwrap( ) ) ; // not updated!
518
518
}
@@ -526,7 +526,7 @@ mod test {
526
526
v. insert ( 8 , 42 ) ;
527
527
v. insert ( 9 , 123 ) ;
528
528
let ob = v. to_object ( py) ;
529
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
529
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
530
530
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
531
531
let mut key_sum = 0 ;
532
532
let mut value_sum = 0 ;
@@ -548,7 +548,7 @@ mod test {
548
548
v. insert ( 8 , 42 ) ;
549
549
v. insert ( 9 , 123 ) ;
550
550
let ob = v. to_object ( py) ;
551
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
551
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
552
552
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
553
553
let mut key_sum = 0 ;
554
554
for el in dict. keys ( ) . iter ( ) {
@@ -566,7 +566,7 @@ mod test {
566
566
v. insert ( 8 , 42 ) ;
567
567
v. insert ( 9 , 123 ) ;
568
568
let ob = v. to_object ( py) ;
569
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
569
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
570
570
// Can't just compare against a vector of tuples since we don't have a guaranteed ordering.
571
571
let mut values_sum = 0 ;
572
572
for el in dict. values ( ) . iter ( ) {
@@ -584,7 +584,7 @@ mod test {
584
584
v. insert ( 8 , 42 ) ;
585
585
v. insert ( 9 , 123 ) ;
586
586
let ob = v. to_object ( py) ;
587
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
587
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
588
588
let mut key_sum = 0 ;
589
589
let mut value_sum = 0 ;
590
590
for ( key, value) in dict. iter ( ) {
@@ -604,7 +604,7 @@ mod test {
604
604
v. insert ( 8 , 42 ) ;
605
605
v. insert ( 9 , 123 ) ;
606
606
let ob = v. to_object ( py) ;
607
- let dict = < PyDict as PyTryFrom > :: try_from ( ob ) . unwrap ( ) ;
607
+ let dict: & PyDict = ob . downcast ( ) . unwrap ( ) ;
608
608
let mut key_sum = 0 ;
609
609
let mut value_sum = 0 ;
610
610
for ( key, value) in dict {
@@ -624,7 +624,7 @@ mod test {
624
624
map. insert ( 1 , 1 ) ;
625
625
626
626
let m = map. to_object ( py) ;
627
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
627
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
628
628
629
629
assert ! ( py_map. len( ) == 1 ) ;
630
630
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -640,7 +640,7 @@ mod test {
640
640
map. insert ( 1 , 1 ) ;
641
641
642
642
let m = map. to_object ( py) ;
643
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
643
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
644
644
645
645
assert ! ( py_map. len( ) == 1 ) ;
646
646
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -656,7 +656,7 @@ mod test {
656
656
map. insert ( 1 , 1 ) ;
657
657
658
658
let m = map. to_object ( py) ;
659
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
659
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
660
660
661
661
assert ! ( py_map. len( ) == 1 ) ;
662
662
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
@@ -685,7 +685,7 @@ mod test {
685
685
map. insert ( 1 , 1 ) ;
686
686
687
687
let m = map. to_object ( py) ;
688
- let py_map = < PyDict as PyTryFrom > :: try_from ( m ) . unwrap ( ) ;
688
+ let py_map: & PyDict = m . downcast ( ) . unwrap ( ) ;
689
689
690
690
assert ! ( py_map. len( ) == 1 ) ;
691
691
assert ! ( py_map. get_item( 1 ) . unwrap( ) . extract:: <i32 >( ) . unwrap( ) == 1 ) ;
0 commit comments