diff mercurial/chgserver.py @ 43077:687b865b95ad

formatting: byteify all mercurial/ and hgext/ string literals Done with python3.7 contrib/byteify-strings.py -i $(hg files 'set:mercurial/**.py - mercurial/thirdparty/** + hgext/**.py - hgext/fsmonitor/pywatchman/** - mercurial/__init__.py') black -l 80 -t py33 -S $(hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**') # skip-blame mass-reformatting only Differential Revision: https://phab.mercurial-scm.org/D6972
author Augie Fackler <augie@google.com>
date Sun, 06 Oct 2019 09:48:39 -0400
parents 2372284d9457
children 66f2cc210a29
line wrap: on
line diff
--- a/mercurial/chgserver.py	Sun Oct 06 09:45:02 2019 -0400
+++ b/mercurial/chgserver.py	Sun Oct 06 09:48:39 2019 -0400
@@ -75,14 +75,14 @@
 
 # sensitive config sections affecting confighash
 _configsections = [
-    'alias',  # affects global state commands.table
-    'eol',  # uses setconfig('eol', ...)
-    'extdiff',  # uisetup will register new commands
-    'extensions',
+    b'alias',  # affects global state commands.table
+    b'eol',  # uses setconfig('eol', ...)
+    b'extdiff',  # uisetup will register new commands
+    b'extensions',
 ]
 
 _configsectionitems = [
-    ('commands', 'show.aliasprefix'),  # show.py reads it in extsetup
+    (b'commands', b'show.aliasprefix'),  # show.py reads it in extsetup
 ]
 
 # sensitive environment variables affecting confighash
@@ -121,8 +121,8 @@
         sectionitems.append(ui.config(section, item))
     sectionhash = _hashlist(sectionitems)
     # If $CHGHG is set, the change to $HG should not trigger a new chg server
-    if 'CHGHG' in encoding.environ:
-        ignored = {'HG'}
+    if b'CHGHG' in encoding.environ:
+        ignored = {b'HG'}
     else:
         ignored = set()
     envitems = [
@@ -204,8 +204,8 @@
         confighash = _confighash(ui)
         mtimehash = _mtimehash(mtimepaths)
         ui.log(
-            'cmdserver',
-            'confighash = %s mtimehash = %s\n',
+            b'cmdserver',
+            b'confighash = %s mtimehash = %s\n',
             confighash,
             mtimehash,
         )
@@ -229,7 +229,7 @@
             # will behave differently (i.e. write to stdout).
             if (
                 out is not self.fout
-                or not util.safehasattr(self.fout, 'fileno')
+                or not util.safehasattr(self.fout, b'fileno')
                 or self.fout.fileno() != procutil.stdout.fileno()
                 or self._finoutredirected
             ):
@@ -241,8 +241,8 @@
             self._csystem(
                 cmd,
                 procutil.shellenviron(env),
-                type='pager',
-                cmdtable={'attachio': attachio},
+                type=b'pager',
+                cmdtable={b'attachio': attachio},
             )
             return True
 
@@ -253,27 +253,27 @@
     from . import dispatch  # avoid cycle
 
     newui = srcui.__class__.load()
-    for a in ['fin', 'fout', 'ferr', 'environ']:
+    for a in [b'fin', b'fout', b'ferr', b'environ']:
         setattr(newui, a, getattr(srcui, a))
-    if util.safehasattr(srcui, '_csystem'):
+    if util.safehasattr(srcui, b'_csystem'):
         newui._csystem = srcui._csystem
 
     # command line args
     options = dispatch._earlyparseopts(newui, args)
-    dispatch._parseconfig(newui, options['config'])
+    dispatch._parseconfig(newui, options[b'config'])
 
     # stolen from tortoisehg.util.copydynamicconfig()
     for section, name, value in srcui.walkconfig():
         source = srcui.configsource(section, name)
-        if ':' in source or source == '--config' or source.startswith('$'):
+        if b':' in source or source == b'--config' or source.startswith(b'$'):
             # path:line or command line, or environ
             continue
         newui.setconfig(section, name, value, source)
 
     # load wd and repo config, copied from dispatch.py
-    cwd = options['cwd']
+    cwd = options[b'cwd']
     cwd = cwd and os.path.realpath(cwd) or None
-    rpath = options['repository']
+    rpath = options[b'repository']
     path, newlui = dispatch._getlocal(newui, rpath, wd=cwd)
 
     extensions.populateui(newui)
@@ -311,22 +311,22 @@
         self.out = out
         self.channel = channel
 
-    def __call__(self, cmd, environ, cwd=None, type='system', cmdtable=None):
-        args = [type, procutil.quotecommand(cmd), os.path.abspath(cwd or '.')]
-        args.extend('%s=%s' % (k, v) for k, v in environ.iteritems())
-        data = '\0'.join(args)
-        self.out.write(struct.pack('>cI', self.channel, len(data)))
+    def __call__(self, cmd, environ, cwd=None, type=b'system', cmdtable=None):
+        args = [type, procutil.quotecommand(cmd), os.path.abspath(cwd or b'.')]
+        args.extend(b'%s=%s' % (k, v) for k, v in environ.iteritems())
+        data = b'\0'.join(args)
+        self.out.write(struct.pack(b'>cI', self.channel, len(data)))
         self.out.write(data)
         self.out.flush()
 
-        if type == 'system':
+        if type == b'system':
             length = self.in_.read(4)
-            (length,) = struct.unpack('>I', length)
+            (length,) = struct.unpack(b'>I', length)
             if length != 4:
-                raise error.Abort(_('invalid response'))
-            (rc,) = struct.unpack('>i', self.in_.read(4))
+                raise error.Abort(_(b'invalid response'))
+            (rc,) = struct.unpack(b'>i', self.in_.read(4))
             return rc
-        elif type == 'pager':
+        elif type == b'pager':
             while True:
                 cmd = self.in_.readline()[:-1]
                 if not cmd:
@@ -334,16 +334,16 @@
                 if cmdtable and cmd in cmdtable:
                     cmdtable[cmd]()
                 else:
-                    raise error.Abort(_('unexpected command: %s') % cmd)
+                    raise error.Abort(_(b'unexpected command: %s') % cmd)
         else:
-            raise error.ProgrammingError('invalid S channel type: %s' % type)
+            raise error.ProgrammingError(b'invalid S channel type: %s' % type)
 
 
 _iochannels = [
     # server.ch, ui.fp, mode
-    ('cin', 'fin', r'rb'),
-    ('cout', 'fout', r'wb'),
-    ('cerr', 'ferr', r'wb'),
+    (b'cin', b'fin', r'rb'),
+    (b'cout', b'fout', r'wb'),
+    (b'cerr', b'ferr', r'wb'),
 ]
 
 
@@ -352,7 +352,7 @@
         self, ui, repo, fin, fout, sock, prereposetups, hashstate, baseaddress
     ):
         super(chgcmdserver, self).__init__(
-            _newchgui(ui, channeledsystem(fin, fout, 'S'), self.attachio),
+            _newchgui(ui, channeledsystem(fin, fout, b'S'), self.attachio),
             repo,
             fin,
             fout,
@@ -365,7 +365,7 @@
         self.baseaddress = baseaddress
         if hashstate is not None:
             self.capabilities = self.capabilities.copy()
-            self.capabilities['validate'] = chgcmdserver.validate
+            self.capabilities[b'validate'] = chgcmdserver.validate
 
     def cleanup(self):
         super(chgcmdserver, self).cleanup()
@@ -381,9 +381,9 @@
         """
         # tell client to sendmsg() with 1-byte payload, which makes it
         # distinctive from "attachio\n" command consumed by client.read()
-        self.clientsock.sendall(struct.pack('>cI', 'I', 1))
+        self.clientsock.sendall(struct.pack(b'>cI', b'I', 1))
         clientfds = util.recvfds(self.clientsock.fileno())
-        self.ui.log('chgserver', 'received fds: %r\n', clientfds)
+        self.ui.log(b'chgserver', b'received fds: %r\n', clientfds)
 
         ui = self.ui
         ui.flush()
@@ -399,7 +399,7 @@
             # to see output immediately on pager, the mode stays unchanged
             # when client re-attached. ferr is unchanged because it should
             # be unbuffered no matter if it is a tty or not.
-            if fn == 'ferr':
+            if fn == b'ferr':
                 newfp = fp
             else:
                 # make it line buffered explicitly because the default is
@@ -413,7 +413,7 @@
             setattr(self, cn, newfp)
 
         self._ioattached = True
-        self.cresult.write(struct.pack('>i', len(clientfds)))
+        self.cresult.write(struct.pack(b'>i', len(clientfds)))
 
     def _saveio(self):
         if self._oldios:
@@ -468,29 +468,29 @@
         except error.ParseError as inst:
             dispatch._formatparse(self.ui.warn, inst)
             self.ui.flush()
-            self.cresult.write('exit 255')
+            self.cresult.write(b'exit 255')
             return
         except error.Abort as inst:
-            self.ui.error(_("abort: %s\n") % inst)
+            self.ui.error(_(b"abort: %s\n") % inst)
             if inst.hint:
-                self.ui.error(_("(%s)\n") % inst.hint)
+                self.ui.error(_(b"(%s)\n") % inst.hint)
             self.ui.flush()
-            self.cresult.write('exit 255')
+            self.cresult.write(b'exit 255')
             return
         newhash = hashstate.fromui(lui, self.hashstate.mtimepaths)
         insts = []
         if newhash.mtimehash != self.hashstate.mtimehash:
             addr = _hashaddress(self.baseaddress, self.hashstate.confighash)
-            insts.append('unlink %s' % addr)
+            insts.append(b'unlink %s' % addr)
             # mtimehash is empty if one or more extensions fail to load.
             # to be compatible with hg, still serve the client this time.
             if self.hashstate.mtimehash:
-                insts.append('reconnect')
+                insts.append(b'reconnect')
         if newhash.confighash != self.hashstate.confighash:
             addr = _hashaddress(self.baseaddress, newhash.confighash)
-            insts.append('redirect %s' % addr)
-        self.ui.log('chgserver', 'validate: %s\n', stringutil.pprint(insts))
-        self.cresult.write('\0'.join(insts) or '\0')
+            insts.append(b'redirect %s' % addr)
+        self.ui.log(b'chgserver', b'validate: %s\n', stringutil.pprint(insts))
+        self.cresult.write(b'\0'.join(insts) or b'\0')
 
     def chdir(self):
         """Change current directory
@@ -501,7 +501,7 @@
         path = self._readstr()
         if not path:
             return
-        self.ui.log('chgserver', 'chdir to %r\n', path)
+        self.ui.log(b'chgserver', b'chdir to %r\n', path)
         os.chdir(path)
 
     def setumask(self):
@@ -514,12 +514,12 @@
         """Change umask"""
         data = self._readstr()
         if len(data) != 4:
-            raise ValueError('invalid mask length in setumask2 request')
+            raise ValueError(b'invalid mask length in setumask2 request')
         self._setumask(data)
 
     def _setumask(self, data):
-        mask = struct.unpack('>I', data)[0]
-        self.ui.log('chgserver', 'setumask %r\n', mask)
+        mask = struct.unpack(b'>I', data)[0]
+        self.ui.log(b'chgserver', b'setumask %r\n', mask)
         os.umask(mask)
 
     def runcommand(self):
@@ -541,38 +541,38 @@
         """
         l = self._readlist()
         try:
-            newenv = dict(s.split('=', 1) for s in l)
+            newenv = dict(s.split(b'=', 1) for s in l)
         except ValueError:
-            raise ValueError('unexpected value in setenv request')
-        self.ui.log('chgserver', 'setenv: %r\n', sorted(newenv.keys()))
+            raise ValueError(b'unexpected value in setenv request')
+        self.ui.log(b'chgserver', b'setenv: %r\n', sorted(newenv.keys()))
         encoding.environ.clear()
         encoding.environ.update(newenv)
 
     capabilities = commandserver.server.capabilities.copy()
     capabilities.update(
         {
-            'attachio': attachio,
-            'chdir': chdir,
-            'runcommand': runcommand,
-            'setenv': setenv,
-            'setumask': setumask,
-            'setumask2': setumask2,
+            b'attachio': attachio,
+            b'chdir': chdir,
+            b'runcommand': runcommand,
+            b'setenv': setenv,
+            b'setumask': setumask,
+            b'setumask2': setumask2,
         }
     )
 
-    if util.safehasattr(procutil, 'setprocname'):
+    if util.safehasattr(procutil, b'setprocname'):
 
         def setprocname(self):
             """Change process title"""
             name = self._readstr()
-            self.ui.log('chgserver', 'setprocname: %r\n', name)
+            self.ui.log(b'chgserver', b'setprocname: %r\n', name)
             procutil.setprocname(name)
 
-        capabilities['setprocname'] = setprocname
+        capabilities[b'setprocname'] = setprocname
 
 
 def _tempaddress(address):
-    return '%s.%d.tmp' % (address, os.getpid())
+    return b'%s.%d.tmp' % (address, os.getpid())
 
 
 def _hashaddress(address, hashstr):
@@ -580,8 +580,8 @@
     # makes it possible for the client to pass 'server.tmp$PID' and follow by
     # an atomic rename to avoid locking when spawning new servers.
     dirname, basename = os.path.split(address)
-    basename = basename.split('.', 1)[0]
-    return '%s-%s' % (os.path.join(dirname, basename), hashstr)
+    basename = basename.split(b'.', 1)[0]
+    return b'%s-%s' % (os.path.join(dirname, basename), hashstr)
 
 
 class chgunixservicehandler(object):
@@ -591,7 +591,7 @@
 
     def __init__(self, ui):
         self.ui = ui
-        self._idletimeout = ui.configint('chgserver', 'idletimeout')
+        self._idletimeout = ui.configint(b'chgserver', b'idletimeout')
         self._lastactive = time.time()
 
     def bindsocket(self, sock, address):
@@ -603,7 +603,7 @@
 
     def _inithashstate(self, address):
         self._baseaddress = address
-        if self.ui.configbool('chgserver', 'skiphash'):
+        if self.ui.configbool(b'chgserver', b'skiphash'):
             self._hashstate = None
             self._realaddress = address
             return
@@ -617,7 +617,7 @@
             # one or more extensions failed to load. mtimehash becomes
             # meaningless because we do not know the paths of those extensions.
             # set mtimehash to an illegal hash value to invalidate the server.
-            self._hashstate.mtimehash = ''
+            self._hashstate.mtimehash = b''
 
     def _bind(self, sock):
         # use a unique temp address so we can stat the file and do ownership
@@ -689,11 +689,11 @@
     # demandimport or detecting chg client started by chg client. When executed
     # here, CHGINTERNALMARK is no longer useful and hence dropped to make
     # environ cleaner.
-    if 'CHGINTERNALMARK' in encoding.environ:
-        del encoding.environ['CHGINTERNALMARK']
+    if b'CHGINTERNALMARK' in encoding.environ:
+        del encoding.environ[b'CHGINTERNALMARK']
 
     if repo:
         # one chgserver can serve multiple repos. drop repo information
-        ui.setconfig('bundle', 'mainreporoot', '', 'repo')
+        ui.setconfig(b'bundle', b'mainreporoot', b'', b'repo')
     h = chgunixservicehandler(ui)
     return commandserver.unixforkingservice(ui, repo=None, opts=opts, handler=h)