Patch by Piers Lauder, who writes:

This patch is re: Lucas.Dejonge@awtpl.com.au: [Python-bugs-list] imaplib -
not complying with RFC (PR#218)

Lucas de Jonge reported that the code in imaplib that detects a read-write
to read-only change doesn't comply with RFC 2060.
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index 9389b22..7b5526e 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -15,7 +15,7 @@
 # 
 # Authentication code contributed by Donn Cave <donn@u.washington.edu> June 1998.
 
-__version__ = "2.32"
+__version__ = "2.33"
 
 import binascii, re, socket, string, time, random, sys
 
@@ -128,6 +128,7 @@
 		self.tagged_commands = {}	# Tagged commands awaiting response
 		self.untagged_responses = {}	# {typ: [data, ...], ...}
 		self.continuation_response = ''	# Last continuation response
+		self.is_readonly = None		# READ-ONLY desired state
 		self.tagnum = 0
 
 		# Open socket to server.
@@ -470,6 +471,7 @@
 		"""
 		# Mandated responses are ('FLAGS', 'EXISTS', 'RECENT', 'UIDVALIDITY')
 		self.untagged_responses = {}	# Flush old responses.
+		self.is_readonly = readonly
 		if readonly:
 			name = 'EXAMINE'
 		else:
@@ -479,7 +481,7 @@
 			self.state = 'AUTH'	# Might have been 'SELECTED'
 			return typ, dat
 		self.state = 'SELECTED'
-		if not self.untagged_responses.has_key('READ-WRITE') \
+		if self.untagged_responses.has_key('READ-ONLY') \
 			and not readonly:
 			if __debug__:
 				if self.debug >= 1:
@@ -594,9 +596,8 @@
 			if self.untagged_responses.has_key(typ):
 				del self.untagged_responses[typ]
 
-		if self.untagged_responses.has_key('READ-WRITE') \
-		and self.untagged_responses.has_key('READ-ONLY'):
-			del self.untagged_responses['READ-WRITE']
+		if self.untagged_responses.has_key('READ-ONLY') \
+		and not self.is_readonly:
 			raise self.readonly('mailbox status changed to READ-ONLY')
 
 		tag = self._new_tag()