Skip to content

Commit 728f523

Browse files
authored
Register imported CLI sub-namespaces in sys.modules (IronLanguages#1991)
* Register imported CLI sub-namespaces in sys.modules * Add tests
1 parent 5c92781 commit 728f523

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

src/core/IronPython/Runtime/Importer.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,11 @@ private static object ImportModuleFrom(CodeContext/*!*/ context, object from, Ar
127127
string name = parts.Array[parts.Offset + parts.Count - 1];
128128
if (from is NamespaceTracker ns) {
129129
if (ns.TryGetValue(name, out object val)) {
130-
return MemberTrackerToPython(context, val);
130+
object ret = MemberTrackerToPython(context, val);
131+
if (ret != null && val is NamespaceTracker retns && !context.LanguageContext.SystemStateModules.ContainsKey(retns.Name)) {
132+
context.LanguageContext.SystemStateModules[retns.Name] = ret;
133+
}
134+
return ret;
131135
}
132136
}
133137

tests/suite/test_cliclass.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1199,11 +1199,14 @@ def test_serialization(self):
11991199
System.StringSplitOptions.RemoveEmptyEntries,
12001200
]
12011201

1202-
if False:
1203-
# TODO: Enum types are not picklable if defined in nested namespaces
1204-
# https://github.com/IronLanguages/ironpython3/issues/1989
1205-
clr.AddReference("System.Text.Json")
1206-
data.append(System.Text.Json.JsonValueKind.Object) # byte-based enum
1202+
if is_cli:
1203+
# enum types
1204+
clr.AddReference("Microsoft.Scripting")
1205+
import Microsoft.Scripting
1206+
data.append(Microsoft.Scripting.Severity.Warning) # different namespace than System
1207+
if is_netcoreapp:
1208+
clr.AddReference("System.Text.Json")
1209+
data.append(System.Text.Json.JsonValueKind.Object) # byte-based enum
12071210

12081211
data.append(list(data)) # list of all the data..
12091212
data.append(tuple(data)) # tuple of all the data...

0 commit comments

Comments
 (0)