updated for version 7.3.1042
Problem:    Python: can't assign to vim.Buffer.name.
Solution:   Python patch 3. (ZyX)
diff --git a/src/testdir/test86.in b/src/testdir/test86.in
index d138a8d..ae90b27 100644
--- a/src/testdir/test86.in
+++ b/src/testdir/test86.in
@@ -476,6 +476,10 @@
 :py b=vim.current.buffer
 :wincmd w
 :mark a
+:augroup BUFS
+:   autocmd BufFilePost * python cb.append(vim.eval('expand("<abuf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))
+:   autocmd BufFilePre * python cb.append(vim.eval('expand("<abuf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))
+:augroup END
 py << EOF
 cb = vim.current.buffer
 # Tests BufferAppend and BufferItem
@@ -496,9 +500,20 @@
 b[0]='bar'
 b[0:0]=['baz']
 vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number)
+# Test assigning to name property
+old_name = cb.name
+cb.name = 'foo'
+cb.append(cb.name[-11:])
+b.name = 'bar'
+cb.append(b.name[-11:])
+cb.name = old_name
+cb.append(cb.name[-17:])
 # Test CheckBuffer
-vim.command('bwipeout! ' + str(b.number))
-for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'):
+for _b in vim.buffers:
+    if _b is not cb:
+        vim.command('bwipeout! ' + str(_b.number))
+del _b
+for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")', 'b.name = "!"'):
     try:
         exec(expr)
     except vim.error:
@@ -507,7 +522,12 @@
         # Usually a SEGV here
         # Should not happen in any case
         cb.append('No exception for ' + expr)
+vim.command('cd .')
 EOF
+:augroup BUFS
+:   autocmd!
+:augroup END
+:augroup! BUFS
 :"
 :" Test vim.buffers object
 :set hidden
@@ -586,7 +606,9 @@
     else:
         return repr(w)
 
-def Cursor(w, start=len(cb)):
+start = len(cb)
+
+def Cursor(w):
     if w.buffer is cb:
         return repr((start - w.cursor[0], w.cursor[1]))
     else:
diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok
index bc01816..1d3e81a 100644
--- a/src/testdir/test86.ok
+++ b/src/testdir/test86.ok
@@ -319,14 +319,23 @@
 Second line
 Third line
 foo
+1:BufFilePre:1
+6:BufFilePost:1
+testdir/foo
+5:BufFilePre:5
+5:BufFilePost:5
+testdir/bar
+1:BufFilePre:1
+7:BufFilePost:1
+testdir/test86.in
 i:<buffer test86.in>
 i2:<buffer test86.in>
 i:<buffer a>
 i3:<buffer test86.in>
 1:<buffer test86.in>=<buffer test86.in>
-6:<buffer a>=<buffer a>
-7:<buffer b>=<buffer b>
-8:<buffer c>=<buffer c>
+8:<buffer a>=<buffer a>
+9:<buffer b>=<buffer b>
+10:<buffer c>=<buffer c>
 4
 i4:<buffer test86.in>
 i4:<buffer test86.in>
@@ -335,7 +344,7 @@
 Current tab pages:
   <tabpage 0>(1): 1 windows, current is <window object (unknown)>
   Windows:
-    <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (27, 0)
+    <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (36, 0)
   <tabpage 1>(2): 1 windows, current is <window object (unknown)>
   Windows:
     <window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)
diff --git a/src/testdir/test87.in b/src/testdir/test87.in
index 95ae027..a23cadc 100644
--- a/src/testdir/test87.in
+++ b/src/testdir/test87.in
@@ -463,6 +463,10 @@
 :py3 b=vim.current.buffer
 :wincmd w
 :mark a
+:augroup BUFS
+:   autocmd BufFilePost * python3 cb.append(vim.eval('expand("<abuf>")') + ':BufFilePost:' + vim.eval('bufnr("%")'))
+:   autocmd BufFilePre * python3 cb.append(vim.eval('expand("<abuf>")') + ':BufFilePre:' + vim.eval('bufnr("%")'))
+:augroup END
 py3 << EOF
 cb = vim.current.buffer
 # Tests BufferAppend and BufferItem
@@ -483,8 +487,19 @@
 b[0]='bar'
 b[0:0]=['baz']
 vim.command('call append("$", getbufline(%i, 1, "$"))' % b.number)
+# Test assigning to name property
+old_name = cb.name
+cb.name = 'foo'
+cb.append(cb.name[-11:])
+b.name = 'bar'
+cb.append(b.name[-11:])
+cb.name = old_name
+cb.append(cb.name[-17:])
 # Test CheckBuffer
-vim.command('bwipeout! ' + str(b.number))
+for _b in vim.buffers:
+    if _b is not cb:
+        vim.command('bwipeout! ' + str(_b.number))
+del _b
 for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'):
     try:
         exec(expr)
@@ -494,6 +509,7 @@
         # Usually a SEGV here
         # Should not happen in any case
         cb.append('No exception for ' + expr)
+vim.command('cd .')
 EOF
 :"
 :" Test vim.buffers object
diff --git a/src/testdir/test87.ok b/src/testdir/test87.ok
index fa663fb..697e6e3 100644
--- a/src/testdir/test87.ok
+++ b/src/testdir/test87.ok
@@ -308,14 +308,23 @@
 Second line
 Third line
 foo
+1:BufFilePre:1
+6:BufFilePost:1
+testdir/foo
+5:BufFilePre:5
+5:BufFilePost:5
+testdir/bar
+1:BufFilePre:1
+7:BufFilePost:1
+testdir/test87.in
 i:<buffer test87.in>
 i2:<buffer test87.in>
 i:<buffer a>
 i3:<buffer test87.in>
 1:<buffer test87.in>=<buffer test87.in>
-6:<buffer a>=<buffer a>
-7:<buffer b>=<buffer b>
-8:<buffer c>=<buffer c>
+8:<buffer a>=<buffer a>
+9:<buffer b>=<buffer b>
+10:<buffer c>=<buffer c>
 4
 i4:<buffer test87.in>
 i4:<buffer test87.in>
@@ -324,7 +333,7 @@
 Current tab pages:
   <tabpage 0>(1): 1 windows, current is <window object (unknown)>
   Windows:
-    <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (27, 0)
+    <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (36, 0)
   <tabpage 1>(2): 1 windows, current is <window object (unknown)>
   Windows:
     <window object (unknown)>(1): displays buffer <buffer 0>; cursor is at (1, 0)