mercurial/util.py
changeset 52643 5cc8deb96b48
parent 52640 24ee91ba9aa8
child 52644 e627cc25b6f3
equal deleted inserted replaced
52642:73ab542565e0 52643:5cc8deb96b48
   368         # If we receive a fileobjectproxy, we need to use a variation of this
   368         # If we receive a fileobjectproxy, we need to use a variation of this
   369         # class that notifies observers about activity.
   369         # class that notifies observers about activity.
   370         if isinstance(fh, fileobjectproxy):
   370         if isinstance(fh, fileobjectproxy):
   371             cls = observedbufferedinputpipe
   371             cls = observedbufferedinputpipe
   372 
   372 
   373         return super(bufferedinputpipe, cls).__new__(cls)
   373         return super().__new__(cls)
   374 
   374 
   375     def __init__(self, input):
   375     def __init__(self, input):
   376         self._input = input
   376         self._input = input
   377         self._buffer = []
   377         self._buffer = []
   378         self._eof = False
   378         self._eof = False
   710     ``os.read()`` events. It also re-publishes other events, such as
   710     ``os.read()`` events. It also re-publishes other events, such as
   711     ``read()`` and ``readline()``.
   711     ``read()`` and ``readline()``.
   712     """
   712     """
   713 
   713 
   714     def _fillbuffer(self, size=_chunksize):
   714     def _fillbuffer(self, size=_chunksize):
   715         res = super(observedbufferedinputpipe, self)._fillbuffer(size=size)
   715         res = super()._fillbuffer(size=size)
   716 
   716 
   717         fn = getattr(self._input._observer, 'osread', None)
   717         fn = getattr(self._input._observer, 'osread', None)
   718         if fn:
   718         if fn:
   719             fn(res, size)
   719             fn(res, size)
   720 
   720 
   721         return res
   721         return res
   722 
   722 
   723     # We use different observer methods because the operation isn't
   723     # We use different observer methods because the operation isn't
   724     # performed on the actual file object but on us.
   724     # performed on the actual file object but on us.
   725     def read(self, size):
   725     def read(self, size):
   726         res = super(observedbufferedinputpipe, self).read(size)
   726         res = super().read(size)
   727 
   727 
   728         fn = getattr(self._input._observer, 'bufferedread', None)
   728         fn = getattr(self._input._observer, 'bufferedread', None)
   729         if fn:
   729         if fn:
   730             fn(res, size)
   730             fn(res, size)
   731 
   731 
   732         return res
   732         return res
   733 
   733 
   734     def readline(self, *args, **kwargs):
   734     def readline(self, *args, **kwargs):
   735         res = super(observedbufferedinputpipe, self).readline(*args, **kwargs)
   735         res = super().readline(*args, **kwargs)
   736 
   736 
   737         fn = getattr(self._input._observer, 'bufferedreadline', None)
   737         fn = getattr(self._input._observer, 'bufferedreadline', None)
   738         if fn:
   738         if fn:
   739             fn(res)
   739             fn(res)
   740 
   740 
   921     """Logs file object activity."""
   921     """Logs file object activity."""
   922 
   922 
   923     def __init__(
   923     def __init__(
   924         self, fh, name, reads=True, writes=True, logdata=False, logdataapis=True
   924         self, fh, name, reads=True, writes=True, logdata=False, logdataapis=True
   925     ):
   925     ):
   926         super(fileobjectobserver, self).__init__(fh, name, logdata, logdataapis)
   926         super().__init__(fh, name, logdata, logdataapis)
   927         self.reads = reads
   927         self.reads = reads
   928         self.writes = writes
   928         self.writes = writes
   929 
   929 
   930     def read(self, res, size=-1):
   930     def read(self, res, size=-1):
   931         if not self.reads:
   931         if not self.reads:
  1044         writes=True,
  1044         writes=True,
  1045         states=True,
  1045         states=True,
  1046         logdata=False,
  1046         logdata=False,
  1047         logdataapis=True,
  1047         logdataapis=True,
  1048     ):
  1048     ):
  1049         super(socketobserver, self).__init__(fh, name, logdata, logdataapis)
  1049         super().__init__(fh, name, logdata, logdataapis)
  1050         self.reads = reads
  1050         self.reads = reads
  1051         self.writes = writes
  1051         self.writes = writes
  1052         self.states = states
  1052         self.states = states
  1053 
  1053 
  1054     def makefile(self, res, mode=None, bufsize=None):
  1054     def makefile(self, res, mode=None, bufsize=None):
  1356     """
  1356     """
  1357 
  1357 
  1358     def __setitem__(self, key, value):
  1358     def __setitem__(self, key, value):
  1359         if key in self:
  1359         if key in self:
  1360             del self[key]
  1360             del self[key]
  1361         super(sortdict, self).__setitem__(key, value)
  1361         super().__setitem__(key, value)
  1362 
  1362 
  1363     if pycompat.ispypy:
  1363     if pycompat.ispypy:
  1364         # __setitem__() isn't called as of PyPy 5.8.0
  1364         # __setitem__() isn't called as of PyPy 5.8.0
  1365         def update(self, src, **f):
  1365         def update(self, src, **f):
  1366             if isinstance(src, dict):
  1366             if isinstance(src, dict):