@@ -450,8 +450,9 @@ def testZipImporterMethods(self):
450
450
451
451
zi = zipimport .zipimporter (TEMP_ZIP )
452
452
self .assertEqual (zi .archive , TEMP_ZIP )
453
- self .assertEqual (zi .is_package (TESTPACK ), True )
453
+ self .assertTrue (zi .is_package (TESTPACK ))
454
454
455
+ # PEP 302
455
456
find_mod = zi .find_module ('spam' )
456
457
self .assertIsNotNone (find_mod )
457
458
self .assertIsInstance (find_mod , zipimport .zipimporter )
@@ -462,25 +463,39 @@ def testZipImporterMethods(self):
462
463
mod = zi .load_module (TESTPACK )
463
464
self .assertEqual (zi .get_filename (TESTPACK ), mod .__file__ )
464
465
466
+ # PEP 451
467
+ spec = zi .find_spec ('spam' )
468
+ self .assertIsNotNone (spec )
469
+ self .assertIsInstance (spec .loader , zipimport .zipimporter )
470
+ self .assertFalse (spec .loader .is_package ('spam' ))
471
+ exec_mod = importlib .util .module_from_spec (spec )
472
+ spec .loader .exec_module (exec_mod )
473
+ self .assertEqual (spec .loader .get_filename ('spam' ), exec_mod .__file__ )
474
+
475
+ spec = zi .find_spec (TESTPACK )
476
+ mod = importlib .util .module_from_spec (spec )
477
+ spec .loader .exec_module (mod )
478
+ self .assertEqual (zi .get_filename (TESTPACK ), mod .__file__ )
479
+
465
480
existing_pack_path = importlib .import_module (TESTPACK ).__path__ [0 ]
466
481
expected_path_path = os .path .join (TEMP_ZIP , TESTPACK )
467
482
self .assertEqual (existing_pack_path , expected_path_path )
468
483
469
- self .assertEqual (zi .is_package (packdir + '__init__' ), False )
470
- self .assertEqual (zi .is_package (packdir + TESTPACK2 ), True )
471
- self .assertEqual (zi .is_package (packdir2 + TESTMOD ), False )
484
+ self .assertFalse (zi .is_package (packdir + '__init__' ))
485
+ self .assertTrue (zi .is_package (packdir + TESTPACK2 ))
486
+ self .assertFalse (zi .is_package (packdir2 + TESTMOD ))
472
487
473
488
mod_path = packdir2 + TESTMOD
474
489
mod_name = module_path_to_dotted_name (mod_path )
475
490
mod = importlib .import_module (mod_name )
476
491
self .assertTrue (mod_name in sys .modules )
477
- self .assertEqual (zi .get_source (TESTPACK ), None )
478
- self .assertEqual (zi .get_source (mod_path ), None )
492
+ self .assertIsNone (zi .get_source (TESTPACK ))
493
+ self .assertIsNone (zi .get_source (mod_path ))
479
494
self .assertEqual (zi .get_filename (mod_path ), mod .__file__ )
480
495
# To pass in the module name instead of the path, we must use the
481
496
# right importer
482
- loader = mod .__loader__
483
- self .assertEqual (loader .get_source (mod_name ), None )
497
+ loader = mod .__spec__ . loader
498
+ self .assertIsNone (loader .get_source (mod_name ))
484
499
self .assertEqual (loader .get_filename (mod_name ), mod .__file__ )
485
500
486
501
# test prefix and archivepath members
@@ -505,17 +520,22 @@ def testZipImporterMethodsInSubDirectory(self):
505
520
zi = zipimport .zipimporter (TEMP_ZIP + os .sep + packdir )
506
521
self .assertEqual (zi .archive , TEMP_ZIP )
507
522
self .assertEqual (zi .prefix , packdir )
508
- self .assertEqual (zi .is_package (TESTPACK2 ), True )
523
+ self .assertTrue (zi .is_package (TESTPACK2 ))
524
+ # PEP 302
509
525
mod = zi .load_module (TESTPACK2 )
510
526
self .assertEqual (zi .get_filename (TESTPACK2 ), mod .__file__ )
527
+ # PEP 451
528
+ spec = zi .find_spec (TESTPACK2 )
529
+ mod = importlib .util .module_from_spec (spec )
530
+ spec .loader .exec_module (mod )
531
+ self .assertEqual (spec .loader .get_filename (TESTPACK2 ), mod .__file__ )
511
532
512
- self .assertEqual (
513
- zi .is_package (TESTPACK2 + os .sep + '__init__' ), False )
514
- self .assertEqual (
515
- zi .is_package (TESTPACK2 + os .sep + TESTMOD ), False )
533
+ self .assertFalse (zi .is_package (TESTPACK2 + os .sep + '__init__' ))
534
+ self .assertFalse (zi .is_package (TESTPACK2 + os .sep + TESTMOD ))
516
535
517
536
pkg_path = TEMP_ZIP + os .sep + packdir + TESTPACK2
518
537
zi2 = zipimport .zipimporter (pkg_path )
538
+ # PEP 302
519
539
find_mod_dotted = zi2 .find_module (TESTMOD )
520
540
self .assertIsNotNone (find_mod_dotted )
521
541
self .assertIsInstance (find_mod_dotted , zipimport .zipimporter )
@@ -524,17 +544,27 @@ def testZipImporterMethodsInSubDirectory(self):
524
544
self .assertEqual (
525
545
find_mod_dotted .get_filename (TESTMOD ), load_mod .__file__ )
526
546
547
+ # PEP 451
548
+ spec = zi2 .find_spec (TESTMOD )
549
+ self .assertIsNotNone (spec )
550
+ self .assertIsInstance (spec .loader , zipimport .zipimporter )
551
+ self .assertFalse (spec .loader .is_package (TESTMOD ))
552
+ load_mod = importlib .util .module_from_spec (spec )
553
+ spec .loader .exec_module (load_mod )
554
+ self .assertEqual (
555
+ spec .loader .get_filename (TESTMOD ), load_mod .__file__ )
556
+
527
557
mod_path = TESTPACK2 + os .sep + TESTMOD
528
558
mod_name = module_path_to_dotted_name (mod_path )
529
559
mod = importlib .import_module (mod_name )
530
560
self .assertTrue (mod_name in sys .modules )
531
- self .assertEqual (zi .get_source (TESTPACK2 ), None )
532
- self .assertEqual (zi .get_source (mod_path ), None )
561
+ self .assertIsNone (zi .get_source (TESTPACK2 ))
562
+ self .assertIsNone (zi .get_source (mod_path ))
533
563
self .assertEqual (zi .get_filename (mod_path ), mod .__file__ )
534
564
# To pass in the module name instead of the path, we must use the
535
565
# right importer.
536
566
loader = mod .__loader__
537
- self .assertEqual (loader .get_source (mod_name ), None )
567
+ self .assertIsNone (loader .get_source (mod_name ))
538
568
self .assertEqual (loader .get_filename (mod_name ), mod .__file__ )
539
569
540
570
def testGetData (self ):
@@ -655,7 +685,9 @@ def testUnencodable(self):
655
685
zinfo = ZipInfo (TESTMOD + ".py" , time .localtime (NOW ))
656
686
zinfo .compress_type = self .compression
657
687
z .writestr (zinfo , test_src )
658
- zipimport .zipimporter (filename ).load_module (TESTMOD )
688
+ spec = zipimport .zipimporter (filename ).find_spec (TESTMOD )
689
+ mod = importlib .util .module_from_spec (spec )
690
+ spec .loader .exec_module (mod )
659
691
660
692
def testBytesPath (self ):
661
693
filename = os_helper .TESTFN + ".zip"
@@ -747,14 +779,17 @@ def _testBogusZipFile(self):
747
779
748
780
try :
749
781
self .assertRaises (TypeError , z .find_module , None )
782
+ self .assertRaises (TypeError , z .find_spec , None )
783
+ self .assertRaises (TypeError , z .exec_module , None )
750
784
self .assertRaises (TypeError , z .load_module , None )
751
785
self .assertRaises (TypeError , z .is_package , None )
752
786
self .assertRaises (TypeError , z .get_code , None )
753
787
self .assertRaises (TypeError , z .get_data , None )
754
788
self .assertRaises (TypeError , z .get_source , None )
755
789
756
790
error = zipimport .ZipImportError
757
- self .assertEqual (z .find_module ('abc' ), None )
791
+ self .assertIsNone (z .find_module ('abc' ))
792
+ self .assertIsNone (z .find_spec ('abc' ))
758
793
759
794
self .assertRaises (error , z .load_module , 'abc' )
760
795
self .assertRaises (error , z .get_code , 'abc' )
0 commit comments