updated for version 7.3.1044
Problem:    Python: No {Buffer,TabPage,Window}.valid attributes.
Solution:   Python patch 5: add .valid (ZyX)
diff --git a/src/testdir/test86.in b/src/testdir/test86.in
index ae90b27..267657c 100644
--- a/src/testdir/test86.in
+++ b/src/testdir/test86.in
@@ -513,6 +513,7 @@
     if _b is not cb:
         vim.command('bwipeout! ' + str(_b.number))
 del _b
+cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid)))
 for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")', 'b.name = "!"'):
     try:
         exec(expr)
@@ -663,9 +664,13 @@
 cb.append('Current window: ' + repr(vim.current.window))
 cb.append('Current buffer: ' + repr(vim.current.buffer))
 cb.append('Current line: ' + repr(vim.current.line))
+ws = list(vim.windows)
+ts = list(vim.tabpages)
 for b in vim.buffers:
     if b is not cb:
         vim.command('bwipeout! ' + str(b.number))
+cb.append('w.valid: ' + repr([w.valid for w in ws]))
+cb.append('t.valid: ' + repr([t.valid for t in ts]))
 EOF
 :tabonly!
 :only!
diff --git a/src/testdir/test86.ok b/src/testdir/test86.ok
index 1d3e81a..efa8001 100644
--- a/src/testdir/test86.ok
+++ b/src/testdir/test86.ok
@@ -328,6 +328,7 @@
 1:BufFilePre:1
 7:BufFilePost:1
 testdir/test86.in
+valid: b:False, cb:True
 i:<buffer test86.in>
 i2:<buffer test86.in>
 i:<buffer a>
@@ -344,7 +345,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 (36, 0)
+    <window object (unknown)>(1): displays buffer <buffer test86.in>; cursor is at (37, 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)
@@ -370,6 +371,8 @@
 Current window: <window 0>
 Current buffer: <buffer test86.in>
 Current line: 'Type error at assigning None to vim.current.buffer'
+w.valid: [True, False]
+t.valid: [True, False, True, False]
 vim.vars:Dictionary:True
 vim.options:Options:True
 vim.bindeval("{}"):Dictionary:True
diff --git a/src/testdir/test87.in b/src/testdir/test87.in
index a23cadc..8f70fcf 100644
--- a/src/testdir/test87.in
+++ b/src/testdir/test87.in
@@ -500,6 +500,7 @@
     if _b is not cb:
         vim.command('bwipeout! ' + str(_b.number))
 del _b
+cb.append('valid: b:%s, cb:%s' % (repr(b.valid), repr(cb.valid)))
 for expr in ('b[1]','b[:] = ["A", "B"]','b[:]','b.append("abc")'):
     try:
         exec(expr)
@@ -641,9 +642,13 @@
 cb.append('Current window: ' + repr(vim.current.window))
 cb.append('Current buffer: ' + repr(vim.current.buffer))
 cb.append('Current line: ' + repr(vim.current.line))
+ws = list(vim.windows)
+ts = list(vim.tabpages)
 for b in vim.buffers:
     if b is not cb:
         vim.command('bwipeout! ' + str(b.number))
+cb.append('w.valid: ' + repr([w.valid for w in ws]))
+cb.append('t.valid: ' + repr([t.valid for t in ts]))
 EOF
 :tabonly!
 :only!
diff --git a/src/testdir/test87.ok b/src/testdir/test87.ok
index 697e6e3..c04d220 100644
--- a/src/testdir/test87.ok
+++ b/src/testdir/test87.ok
@@ -317,6 +317,7 @@
 1:BufFilePre:1
 7:BufFilePost:1
 testdir/test87.in
+valid: b:False, cb:True
 i:<buffer test87.in>
 i2:<buffer test87.in>
 i:<buffer a>
@@ -333,7 +334,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 (36, 0)
+    <window object (unknown)>(1): displays buffer <buffer test87.in>; cursor is at (37, 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)
@@ -359,6 +360,8 @@
 Current window: <window 0>
 Current buffer: <buffer test87.in>
 Current line: 'Type error at assigning None to vim.current.buffer'
+w.valid: [True, False]
+t.valid: [True, False, True, False]
 vim.vars:Dictionary:True
 vim.options:Options:True
 vim.bindeval("{}"):Dictionary:True