summaryrefslogtreecommitdiff
path: root/Cython/Compiler/CythonScope.py
diff options
context:
space:
mode:
Diffstat (limited to 'Cython/Compiler/CythonScope.py')
-rw-r--r--Cython/Compiler/CythonScope.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/Cython/Compiler/CythonScope.py b/Cython/Compiler/CythonScope.py
index 1c25d1a6b..f73be0070 100644
--- a/Cython/Compiler/CythonScope.py
+++ b/Cython/Compiler/CythonScope.py
@@ -6,6 +6,7 @@ from .UtilityCode import CythonUtilityCode
from .Errors import error
from .Scanning import StringSourceDescriptor
from . import MemoryView
+from .StringEncoding import EncodedString
class CythonScope(ModuleScope):
@@ -50,7 +51,7 @@ class CythonScope(ModuleScope):
def find_module(self, module_name, pos):
error("cython.%s is not available" % module_name, pos)
- def find_submodule(self, module_name):
+ def find_submodule(self, module_name, as_package=False):
entry = self.entries.get(module_name, None)
if not entry:
self.load_cythonscope()
@@ -125,10 +126,26 @@ class CythonScope(ModuleScope):
view_utility_scope = MemoryView.view_utility_code.declare_in_scope(
self.viewscope, cython_scope=self,
- whitelist=MemoryView.view_utility_whitelist)
+ allowlist=MemoryView.view_utility_allowlist)
+
+ # Marks the types as being cython_builtin_type so that they can be
+ # extended from without Cython attempting to import cython.view
+ ext_types = [ entry.type
+ for entry in view_utility_scope.entries.values()
+ if entry.type.is_extension_type ]
+ for ext_type in ext_types:
+ ext_type.is_cython_builtin_type = 1
# self.entries["array"] = view_utility_scope.entries.pop("array")
+ # dataclasses scope
+ dc_str = EncodedString(u'dataclasses')
+ dataclassesscope = ModuleScope(dc_str, self, context=None)
+ self.declare_module(dc_str, dataclassesscope, pos=None).as_module = dataclassesscope
+ dataclassesscope.is_cython_builtin = True
+ dataclassesscope.pxd_file_loaded = True
+ # doesn't actually have any contents
+
def create_cython_scope(context):
# One could in fact probably make it a singleton,