33import sys
44
55import os
6- import pkg_resources
76import shutil
87import tempfile
98import unittest
2120except ImportError :
2221 import mock
2322
23+ if sys .version_info >= (3 , 8 ):
24+ import importlib .metadata
25+ else :
26+ import pkg_resources
27+
2428
2529class TestParse (unittest .TestCase ):
2630 def test_registry_repr (self ):
@@ -111,14 +115,25 @@ def test_protocols(self):
111115
112116 def test_registry_protocols (self ):
113117 # Check registry.protocols list the names of all available extension
114- extensions = [
115- pkg_resources .EntryPoint ("proto1" , "mod1" ),
116- pkg_resources .EntryPoint ("proto2" , "mod2" ),
117- ]
118- m = mock .MagicMock (return_value = extensions )
119- with mock .patch .object (
120- sys .modules ["pkg_resources" ], "iter_entry_points" , new = m
121- ):
118+ if sys .version_info >= (3 , 8 ):
119+ extensions = (
120+ importlib .metadata .EntryPoint ("proto1" , "mod1" , "fs.opener" ),
121+ importlib .metadata .EntryPoint ("proto2" , "mod2" , "fs.opener" ),
122+ )
123+ if sys .version_info >= (3 , 10 ):
124+ m = mock .MagicMock (return_value = extensions )
125+ else :
126+ m = mock .MagicMock (return_value = {"fs.opener" : extensions })
127+ patch = mock .patch ("importlib.metadata.entry_points" , m )
128+ else :
129+ extensions = [
130+ pkg_resources .EntryPoint ("proto1" , "mod1" ),
131+ pkg_resources .EntryPoint ("proto2" , "mod2" ),
132+ ]
133+ m = mock .MagicMock (return_value = extensions )
134+ patch = mock .patch ("pkg_resources.iter_entry_points" , m )
135+
136+ with patch :
122137 self .assertIn ("proto1" , opener .registry .protocols )
123138 self .assertIn ("proto2" , opener .registry .protocols )
124139
@@ -129,11 +144,19 @@ def test_unknown_protocol(self):
129144 def test_entry_point_load_error (self ):
130145
131146 entry_point = mock .MagicMock ()
147+ entry_point .name = "test"
132148 entry_point .load .side_effect = ValueError ("some error" )
133149
134- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
135-
136- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
150+ if sys .version_info >= (3 , 8 ):
151+ if sys .version_info >= (3 , 10 ):
152+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
153+ else :
154+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
155+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
156+ else :
157+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
158+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
159+ with patch :
137160 with self .assertRaises (errors .EntryPointError ) as ctx :
138161 opener .open_fs ("test://" )
139162 self .assertEqual (
@@ -145,10 +168,19 @@ class NotAnOpener(object):
145168 pass
146169
147170 entry_point = mock .MagicMock ()
171+ entry_point .name = "test"
148172 entry_point .load = mock .MagicMock (return_value = NotAnOpener )
149- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
150173
151- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
174+ if sys .version_info >= (3 , 8 ):
175+ if sys .version_info >= (3 , 10 ):
176+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
177+ else :
178+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
179+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
180+ else :
181+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
182+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
183+ with patch :
152184 with self .assertRaises (errors .EntryPointError ) as ctx :
153185 opener .open_fs ("test://" )
154186 self .assertEqual ("entry point did not return an opener" , str (ctx .exception ))
@@ -162,10 +194,20 @@ def open_fs(self, *args, **kwargs):
162194 pass
163195
164196 entry_point = mock .MagicMock ()
197+ entry_point .name = "test"
165198 entry_point .load = mock .MagicMock (return_value = BadOpener )
166- iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
167199
168- with mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points ):
200+ if sys .version_info >= (3 , 8 ):
201+ if sys .version_info >= (3 , 10 ):
202+ entry_points = mock .MagicMock (return_value = tuple ([entry_point ]))
203+ else :
204+ entry_points = mock .MagicMock (return_value = {"fs.opener" : [entry_point ]})
205+ patch = mock .patch ("importlib.metadata.entry_points" , entry_points )
206+ else :
207+ iter_entry_points = mock .MagicMock (return_value = iter ([entry_point ]))
208+ patch = mock .patch ("pkg_resources.iter_entry_points" , iter_entry_points )
209+
210+ with patch :
169211 with self .assertRaises (errors .EntryPointError ) as ctx :
170212 opener .open_fs ("test://" )
171213 self .assertEqual (
0 commit comments