@@ -253,12 +253,15 @@ def cythonize(extensions, **kwargs):
253253 missing_c_sources = []
254254
255255 for extension in extensions :
256+ c_sources = []
256257 for source in extension .sources :
257- if source .endswith (".pyx" ):
258- c_file = source .replace (".pyx" , ".c" )
258+ if source .endswith (".pyx" ) or source .endswith (".py" ):
259+ c_file = source .replace (".pyx" , ".c" ).replace (".py" , ".c" )
260+ c_sources .append (c_file )
259261
260262 if not os .path .exists (c_file ):
261263 missing_c_sources .append ((extension , c_file ))
264+ extension .sources = c_sources
262265
263266 if missing_c_sources :
264267 for extension , source in missing_c_sources :
@@ -273,29 +276,29 @@ def cythonize(extensions, **kwargs):
273276def register_cython_module (module_name , dependencies = None ):
274277 def files_from_module (modname ):
275278 basename = "src/{}" .format (modname .replace ("." , "/" ))
279+ if os .path .exists ("{}.py" .format (basename )):
280+ return ("{}.py" .format (basename ),)
276281 return "{}.pyx" .format (basename ), "{}.pxd" .format (basename )
277282
278283 if dependencies is None :
279284 dependencies = []
280285
281- implementation_file , definition_file = files_from_module (module_name )
286+ cython_files = files_from_module (module_name )
282287
283- assert os .path .exists (implementation_file )
288+ assert os .path .exists (cython_files [ 0 ] )
284289
285290 depends = []
286- if os .path .exists (definition_file ):
287- depends .append (definition_file )
291+ if len ( cython_files ) == 2 and os .path .exists (cython_files [ 1 ] ):
292+ depends .append (cython_files [ 1 ] )
288293
289294 for module in dependencies :
290- imp_file , def_file = files_from_module (module )
291- assert os .path .exists (imp_file ), "Dependency file not found: {}" .format (imp_file )
292- assert os .path .exists (def_file ), "Dependency declaration file not found: {}" .format (def_file )
295+ files = files_from_module (module )
296+ assert all (os .path .exists (f ) for f in files ), "Missing file for module: {}" .format (module )
293297
294- depends .append (imp_file )
295- depends .append (def_file )
298+ depends .extend (files )
296299
297300 BUILD_EXTENSIONS .append (
298- Extension (name = module_name , sources = [implementation_file ], depends = depends , define_macros = extension_macros ,)
301+ Extension (name = module_name , sources = [cython_files [ 0 ] ], depends = depends , define_macros = extension_macros ,)
299302 )
300303
301304
0 commit comments