# HG changeset patch
# User Matt Harbison <matt_harbison@yahoo.com>
# Date 2022-11-04 21:35:44
# Node ID c4f07a011714d015f4221f3dd3ff49e7757428ca
# Parent  8fa3f7c3a9adce67f0dedf0b26f3128bd9fbaaf8

util: implement `writelines()` on atomictempfile

With typehints on the vfs objects, pytype will flag this:

    FAILED: /mnt/c/Users/Matt/hg/.pytype/pyi/mercurial/patch.pyi
    /usr/bin/python3.8 -m pytype.single
        --imports_info /mnt/c/Users/Matt/hg/.pytype/imports/mercurial.patch.imports
        --module-name mercurial.patch -V 3.7
        -o /mnt/c/Users/Matt/hg/.pytype/pyi/mercurial/patch.pyi
        --analyze-annotated --nofail --quick
        /mnt/c/Users/Matt/hg/mercurial/patch.py
    File "/mnt/c/Users/Matt/hg/mercurial/patch.py", line 535, in writerej:
        No attribute 'writelines' on mercurial.util.atomictempfile [attribute-error]
      In Union[
          mercurial.util.atomictempfile,
          mercurial.vfs.checkambigatclosing,
          mercurial.vfs.delayclosedfile,
          mercurial.windows.fdproxy,
          mercurial.windows.mixedfilemodewrapper
      ]

It's not a real problem there (atomictempfile is only created by passing
different args), but it's reasonable for this to implement the function and
behave like a normal file.  There are other functions missing that can be added
if/when needed.

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -2542,6 +2542,7 @@ class atomictempfile:
         # delegated methods
         self.read = self._fp.read
         self.write = self._fp.write
+        self.writelines = self._fp.writelines
         self.seek = self._fp.seek
         self.tell = self._fp.tell
         self.fileno = self._fp.fileno