|
66 | 66 | import java.util.HashMap;
|
67 | 67 | import java.util.HashSet;
|
68 | 68 | import java.util.List;
|
| 69 | +import java.util.Map; |
| 70 | +import java.util.Map.Entry; |
69 | 71 | import java.util.Random;
|
70 | 72 | import java.util.Set;
|
71 | 73 | import java.util.concurrent.TimeUnit;
|
|
89 | 91 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
|
90 | 92 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemNode;
|
91 | 93 | import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.ToByteArrayNode;
|
| 94 | +import com.oracle.graal.python.builtins.objects.dict.PDict; |
92 | 95 | import com.oracle.graal.python.builtins.objects.exception.OSErrorEnum;
|
93 | 96 | import com.oracle.graal.python.builtins.objects.floats.PFloat;
|
94 | 97 | import com.oracle.graal.python.builtins.objects.function.PKeyword;
|
95 | 98 | import com.oracle.graal.python.builtins.objects.ints.PInt;
|
| 99 | +import com.oracle.graal.python.builtins.objects.module.PythonModule; |
96 | 100 | import com.oracle.graal.python.builtins.objects.str.PString;
|
97 | 101 | import com.oracle.graal.python.builtins.objects.tuple.PTuple;
|
98 | 102 | import com.oracle.graal.python.builtins.objects.type.PythonClass;
|
@@ -244,6 +248,22 @@ public void initialize(PythonCore core) {
|
244 | 248 | builtinConstants.put("environ", core.factory().createDict());
|
245 | 249 | }
|
246 | 250 |
|
| 251 | + @Override |
| 252 | + public void postInitialize(PythonCore core) { |
| 253 | + super.postInitialize(core); |
| 254 | + |
| 255 | + // fill the environ dictionary with the current environment |
| 256 | + Map<String, String> getenv = System.getenv(); |
| 257 | + PDict environ = core.factory().createDict(); |
| 258 | + for (Entry<String, String> entry : getenv.entrySet()) { |
| 259 | + environ.setItem(core.factory().createBytes(entry.getKey().getBytes()), core.factory().createBytes(entry.getValue().getBytes())); |
| 260 | + } |
| 261 | + |
| 262 | + PythonModule posix = core.lookupBuiltinModule("posix"); |
| 263 | + Object environAttr = posix.getAttribute("environ"); |
| 264 | + ((PDict) environAttr).setDictStorage(environ.getDictStorage()); |
| 265 | + } |
| 266 | + |
247 | 267 | @Builtin(name = "getcwd", fixedNumOfPositionalArgs = 0)
|
248 | 268 | @GenerateNodeFactory
|
249 | 269 | public abstract static class CwdNode extends PythonBuiltinNode {
|
|
0 commit comments