import sys from _abcoll import MutableSequence class _Argv(MutableSequence): def __init__(self, data, encode, decode): self._data = data self._encode = encode self._decode = decode def __len__(self): return len(self._data) def __getitem__(self, index): value = self._data[index] return self._encode(value) def __setitem__(self, index, value): self._data[index] = self._decode(value) def __delitem__(self, index): del self._data[index] def insert(self, index, value): self._data.insert(index, self._decode(value)) def __repr__(self): items = (repr(item) for item in self) return '[{}]'.format(', '.join(items)) def _get(): encoding = sys.getfilesystemencoding() if encoding == 'mbcs': errors = 'strict' else: errors = 'surrogateescape' def encode(value): return value.encode(encoding, errors) def decode(value): return value.decode(encoding, errors) return _Argv(sys.argv, encode, decode) sys.argvb = _get() del _get del _Argv