Module name sanity checking
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Jun 2008 02:21:56 +0000 (19:21 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 11 Jun 2008 02:21:56 +0000 (19:21 -0700)
Cython/Compiler/Main.py

index 8d8832ba1af69401c023a5941524fdf0834bdec8..aa47543cb666ec2ef44c4d27b2ba4658a1235f92 100644 (file)
@@ -23,6 +23,8 @@ from Errors import PyrexError, CompileError, error
 from Symtab import BuiltinScope, ModuleScope
 from Cython import Utils
 
+module_name_pattern = re.compile(r"[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*$")
+
 # Note: PHASES and TransformSet should be removed soon; but that's for
 # another day and another commit.
 PHASES = [
@@ -74,6 +76,9 @@ class Context:
                     module_name, relative_to, pos, need_pxd))
         scope = None
         pxd_pathname = None
+        if not module_name_pattern.match(module_name):
+            raise CompileError((path, 0, 0),
+                "'%s' is not a valid module name" % module_name)
         if "." not in module_name and relative_to:
             if debug_find_module:
                 print("...trying relative import")