|
15 | 15 | """System-specific parameters and functions."""
|
16 | 16 |
|
17 | 17 | from __go__.os import Args
|
18 |
| -from __go__.grumpy import SysModules, MaxInt, Stdin as stdin, Stdout as stdout, Stderr as stderr # pylint: disable=g-multiple-import |
| 18 | +from __go__.grumpy import SysmoduleDict, SysModules, MaxInt, Stdin, Stdout, Stderr # pylint: disable=g-multiple-import |
19 | 19 | from __go__.runtime import Version
|
20 | 20 | from __go__.unicode import MaxRune
|
21 | 21 |
|
| 22 | + |
| 23 | +__all__ = ('stdin', 'stdout', 'stderr', 'argv', '_goversion', |
| 24 | + 'maxint', 'maxsize', 'maxunicode', 'modules', 'py3kwarning', |
| 25 | + 'warnoptions', 'byteorder', 'flags', 'exc_info', 'exit') |
| 26 | + |
| 27 | + |
22 | 28 | argv = []
|
23 | 29 | for arg in Args:
|
24 | 30 | argv.append(arg)
|
25 | 31 |
|
26 | 32 | goversion = Version()
|
| 33 | + |
| 34 | +stdin = SysmoduleDict['stdin'] |
| 35 | +stdout = SysmoduleDict['stdout'] |
| 36 | +stderr = SysmoduleDict['stderr'] |
| 37 | + |
27 | 38 | maxint = MaxInt
|
28 | 39 | maxsize = maxint
|
29 | 40 | maxunicode = MaxRune
|
30 | 41 | modules = SysModules
|
| 42 | + |
31 | 43 | py3kwarning = False
|
32 | 44 | warnoptions = []
|
33 | 45 | # TODO: Support actual byteorder
|
34 | 46 | byteorder = 'little'
|
35 | 47 |
|
| 48 | + |
36 | 49 | class _Flags(object):
|
37 | 50 | """Container class for sys.flags."""
|
38 | 51 | debug = 0
|
@@ -67,3 +80,19 @@ def exc_info():
|
67 | 80 | def exit(code=None): # pylint: disable=redefined-builtin
|
68 | 81 | raise SystemExit(code)
|
69 | 82 |
|
| 83 | + |
| 84 | +# TODO: Clear this HACK: Should be the last lines of the python part of hybrid stuff |
| 85 | +class _SysModule(object): |
| 86 | + def __init__(self): |
| 87 | + for k in ('__name__', '__file__') + __all__: |
| 88 | + SysmoduleDict[k] = globals()[k] |
| 89 | + def __setattr__(self, name, value): |
| 90 | + SysmoduleDict[name] = value |
| 91 | + def __getattr__(self, name): |
| 92 | + resp = SysmoduleDict.get(name) |
| 93 | + if res is None and name not in SysmoduleDict: |
| 94 | + return super(_SysModule, self).__getattr__(name) |
| 95 | + return resp |
| 96 | + |
| 97 | +modules = SysModules |
| 98 | +modules['sys'] = _SysModule() |
0 commit comments