diff --git a/Demo/rpc/nfsclient.py b/Demo/rpc/nfsclient.py
index c4387b4..8e5a199 100644
--- a/Demo/rpc/nfsclient.py
+++ b/Demo/rpc/nfsclient.py
@@ -163,7 +163,7 @@
         ra = (dir, 0, 2000)
         while 1:
             (status, rest) = self.Readdir(ra)
-            if status <> NFS_OK:
+            if status != NFS_OK:
                 break
             entries, eof = rest
             last_cookie = None
diff --git a/Demo/rpc/xdr.py b/Demo/rpc/xdr.py
index df5cbaf..e03b352 100644
--- a/Demo/rpc/xdr.py
+++ b/Demo/rpc/xdr.py
@@ -78,7 +78,7 @@
         self.pack_uint(0)
 
     def pack_farray(self, n, list, pack_item):
-        if len(list) <> n:
+        if len(list) != n:
             raise ValueError, 'wrong array size'
         for item in list:
             pack_item(item)
@@ -183,7 +183,7 @@
         while 1:
             x = self.unpack_uint()
             if x == 0: break
-            if x <> 1:
+            if x != 1:
                 raise RuntimeError, '0 or 1 expected, got %r' % (x, )
             item = unpack_item()
             list.append(item)
diff --git a/Demo/scripts/lpwatch.py b/Demo/scripts/lpwatch.py
index 8887dee..c3dcb34 100755
--- a/Demo/scripts/lpwatch.py
+++ b/Demo/scripts/lpwatch.py
@@ -74,7 +74,7 @@
             ubytes = ubytes + bytes
             users[user] = ujobs, ubytes
         else:
-            if fields and fields[0] <> 'Rank':
+            if fields and fields[0] != 'Rank':
                 line = string.strip(line)
                 if line == 'no entries':
                     line = name + ': idle'
@@ -84,7 +84,7 @@
     #
     if totaljobs:
         line = '%d K' % ((totalbytes+1023)/1024)
-        if totaljobs <> len(users):
+        if totaljobs != len(users):
             line = line + ' (%d jobs)' % totaljobs
         if len(users) == 1:
             line = line + ' for %s' % (users.keys()[0],)
diff --git a/Demo/scripts/primes.py b/Demo/scripts/primes.py
index 5935a3c..8762fe2 100755
--- a/Demo/scripts/primes.py
+++ b/Demo/scripts/primes.py
@@ -18,7 +18,7 @@
     while i <= max:
         for p in primes:
             if i%p == 0 or p*p > i: break
-        if i%p <> 0:
+        if i%p != 0:
             primes.append(i)
             if i >= min: print i
         i = i+2
diff --git a/Demo/scripts/update.py b/Demo/scripts/update.py
index c936026..eac1a22 100755
--- a/Demo/scripts/update.py
+++ b/Demo/scripts/update.py
@@ -83,7 +83,7 @@
             print 'Funny line:', line,
             continue
         filename, lineno = prog.group(1, 2)
-        if not curfile or filename <> curfile.filename:
+        if not curfile or filename != curfile.filename:
             if curfile: curfile.finish()
             curfile = FileObj(filename)
         curfile.process(lineno, line[n:])
diff --git a/Demo/sockets/gopher.py b/Demo/sockets/gopher.py
index 2488c81..2c46da6 100755
--- a/Demo/sockets/gopher.py
+++ b/Demo/sockets/gopher.py
@@ -246,7 +246,7 @@
 def browse_telnet(selector, host, port):
     if selector:
         print 'Log in as', repr(selector)
-    if type(port) <> type(''):
+    if type(port) != type(''):
         port = repr(port)
     sts = os.system('set -x; exec telnet ' + host + ' ' + port)
     if sts:
diff --git a/Demo/tkinter/guido/ShellWindow.py b/Demo/tkinter/guido/ShellWindow.py
index 6cdce0b..104e06d 100755
--- a/Demo/tkinter/guido/ShellWindow.py
+++ b/Demo/tkinter/guido/ShellWindow.py
@@ -115,11 +115,11 @@
                 os.close(i)
             except os.error:
                 pass
-        if os.dup(p2cread) <> 0:
+        if os.dup(p2cread) != 0:
             sys.stderr.write('popen2: bad read dup\n')
-        if os.dup(c2pwrite) <> 1:
+        if os.dup(c2pwrite) != 1:
             sys.stderr.write('popen2: bad write dup\n')
-        if os.dup(c2pwrite) <> 2:
+        if os.dup(c2pwrite) != 2:
             sys.stderr.write('popen2: bad write dup\n')
         for i in range(3, MAXFD):
             try:
diff --git a/Doc/lib/email-unpack.py b/Doc/lib/email-unpack.py
index fc05d99..fb03e58 100644
--- a/Doc/lib/email-unpack.py
+++ b/Doc/lib/email-unpack.py
@@ -37,7 +37,7 @@
         os.mkdir(opts.directory)
     except OSError, e:
         # Ignore directory exists error
-        if e.errno <> errno.EEXIST:
+        if e.errno != errno.EEXIST:
             raise
 
     fp = open(msgfile)
diff --git a/Doc/lib/libstdtypes.tex b/Doc/lib/libstdtypes.tex
index 95b06f8..e1993aa 100644
--- a/Doc/lib/libstdtypes.tex
+++ b/Doc/lib/libstdtypes.tex
@@ -126,8 +126,7 @@
   \lineiii{>}{strictly greater than}{}
   \lineiii{>=}{greater than or equal}{}
   \lineiii{==}{equal}{}
-  \lineiii{!=}{not equal}{(1)}
-  \lineiii{<>}{not equal}{(1)}
+  \lineiii{!=}{not equal}
   \lineiii{is}{object identity}{}
   \lineiii{is not}{negated object identity}{}
 \end{tableiii}
@@ -136,17 +135,6 @@
 \opindex{is}
 \opindex{is not}
 
-\noindent
-Notes:
-
-\begin{description}
-
-\item[(1)]
-\code{<>} and \code{!=} are alternate spellings for the same operator.
-\code{!=} is the preferred spelling; \code{<>} is obsolescent.
-
-\end{description}
-
 Objects of different types, except different numeric types and different string types, never
 compare equal; such objects are ordered consistently but arbitrarily
 (so that sorting a heterogeneous array yields a consistent result).
diff --git a/Doc/lib/libstdwin.tex b/Doc/lib/libstdwin.tex
index 84aad2f..f2278e5 100644
--- a/Doc/lib/libstdwin.tex
+++ b/Doc/lib/libstdwin.tex
@@ -123,8 +123,8 @@
 Hint: the following code tests whether you are on a machine that
 supports more than two colors:
 \begin{verbatim}
-if stdwin.fetchcolor('black') <> \
-          stdwin.fetchcolor('red') <> \
+if stdwin.fetchcolor('black') != \
+          stdwin.fetchcolor('red') != \
           stdwin.fetchcolor('white'):
     print 'color machine'
 else:
diff --git a/Doc/ref/ref2.tex b/Doc/ref/ref2.tex
index bad4609..f82d9ce 100644
--- a/Doc/ref/ref2.tex
+++ b/Doc/ref/ref2.tex
@@ -689,13 +689,9 @@
 \begin{verbatim}
 +       -       *       **      /       //      %
 <<      >>      &       |       ^       ~
-<       >       <=      >=      ==      !=      <>
+<       >       <=      >=      ==      !=
 \end{verbatim}
 
-The comparison operators \code{<>} and \code{!=} are alternate
-spellings of the same operator.  \code{!=} is the preferred spelling;
-\code{<>} is obsolescent.
-
 
 \section{Delimiters\label{delimiters}}
 
diff --git a/Doc/ref/ref3.tex b/Doc/ref/ref3.tex
index f53dbe3..362d769 100644
--- a/Doc/ref/ref3.tex
+++ b/Doc/ref/ref3.tex
@@ -1243,8 +1243,7 @@
 \code{\var{x}<\var{y}} calls \code{\var{x}.__lt__(\var{y})},
 \code{\var{x}<=\var{y}} calls \code{\var{x}.__le__(\var{y})},
 \code{\var{x}==\var{y}} calls \code{\var{x}.__eq__(\var{y})},
-\code{\var{x}!=\var{y}} and \code{\var{x}<>\var{y}} call
-\code{\var{x}.__ne__(\var{y})},
+\code{\var{x}!=\var{y}} calls \code{\var{x}.__ne__(\var{y})},
 \code{\var{x}>\var{y}} calls \code{\var{x}.__gt__(\var{y})}, and
 \code{\var{x}>=\var{y}} calls \code{\var{x}.__ge__(\var{y})}.
 These methods can return any value, but if the comparison operator is
diff --git a/Doc/ref/ref5.tex b/Doc/ref/ref5.tex
index 52bb57f..34a827c 100644
--- a/Doc/ref/ref5.tex
+++ b/Doc/ref/ref5.tex
@@ -832,7 +832,7 @@
   \production{comparison}
              {\token{or_expr} ( \token{comp_operator} \token{or_expr} )*}
   \production{comp_operator}
-             {"<" | ">" | "==" | ">=" | "<=" | "<>" | "!="}
+             {"<" | ">" | "==" | ">=" | "<=" | "!="}
   \productioncont{| "is" ["not"] | ["not"] "in"}
 \end{productionlist}
 
@@ -854,11 +854,6 @@
 between \var{a} and \var{c}, so that, e.g., \code{x < y > z} is
 perfectly legal (though perhaps not pretty).
 
-The forms \code{<>} and \code{!=} are equivalent; for consistency with
-C, \code{!=} is preferred; where \code{!=} is mentioned below
-\code{<>} is also accepted.  The \code{<>} spelling is considered
-obsolescent.
-
 The operators \code{<}, \code{>}, \code{==}, \code{>=}, \code{<=}, and
 \code{!=} compare
 the values of two objects.  The objects need not have the same type.
@@ -1111,7 +1106,7 @@
     \lineii{\keyword{in}, \keyword{not} \keyword{in}}{Membership tests}
     \lineii{\keyword{is}, \keyword{is not}}{Identity tests}
     \lineii{\code{<}, \code{<=}, \code{>}, \code{>=},
-            \code{<>}, \code{!=}, \code{==}}
+            \code{!=}, \code{==}}
 	   {Comparisons}
   \hline
     \lineii{\code{|}}				{Bitwise OR}
diff --git a/Misc/cheatsheet b/Misc/cheatsheet
index bab109a..de55869 100644
--- a/Misc/cheatsheet
+++ b/Misc/cheatsheet
@@ -215,7 +215,6 @@
         x^y                               Bitwise exclusive or
         x|y                               Bitwise or
         x<y  x<=y  x>y  x>=y  x==y x!=y   Comparison,
-        x<>y                              identity,
         x is y   x is not y               membership
         x in s   x not in s
         not x                             boolean negation
@@ -241,7 +240,7 @@
 >          strictly greater than
 >=         greater than or equal to
 ==         equal to
-!= or <>   not equal to
+!=         not equal to
 is         object identity           (2)
 is not     negated object identity   (2)
 
@@ -1009,9 +1008,8 @@
                     an error in initialization, mustimport it one more time
                     before calling reload().
                     Returns a string containing a printable and if possible
-repr(object)        evaluable representation of an object. <=> `object`
-                    (usingbackquotes). Class redefinissable (__repr__). See
-                    also str()
+repr(object)        evaluable representation of an object. 
+                    Class redefinable (__repr__). See also str().
 round(x, n=0)       Returns the floating point value x rounded to n digitsafter
                     the decimal point.
 setattr(object,     This is the counterpart of getattr().setattr(o, 'foobar',
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 5f50da8..e70a613 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -690,8 +690,6 @@
   ;; Both single quote and double quote are string delimiters
   (modify-syntax-entry ?\' "\"" py-mode-syntax-table)
   (modify-syntax-entry ?\" "\"" py-mode-syntax-table)
-  ;; backquote is open and close paren
-  (modify-syntax-entry ?\` "$"  py-mode-syntax-table)
   ;; comment delimiters
   (modify-syntax-entry ?\# "<"  py-mode-syntax-table)
   (modify-syntax-entry ?\n ">"  py-mode-syntax-table)
diff --git a/Objects/object.c b/Objects/object.c
index 9bcf08b..4fee2f0 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -591,7 +591,7 @@
 
 	/* Give up */
 	PyErr_Format(PyExc_TypeError,
-		     "unorderable types: '%.100s' <> '%.100s'",
+		     "unorderable types: '%.100s' != '%.100s'",
 		     v->ob_type->tp_name,
 		     w->ob_type->tp_name);
 	return -1;
