Issue #27355: Removed support for Windows CE.  It was never finished,
and Windows CE is no longer a relevant platform for Python.
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index 4b046d6..705e406 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -333,7 +333,7 @@
         self.connecting = True
         err = self.socket.connect_ex(address)
         if err in (EINPROGRESS, EALREADY, EWOULDBLOCK) \
-        or err == EINVAL and os.name in ('nt', 'ce'):
+        or err == EINVAL and os.name == 'nt':
             self.addr = address
             return
         if err in (0, EISCONN):
diff --git a/Lib/ctypes/__init__.py b/Lib/ctypes/__init__.py
index 0d86078..1c9d3a5 100644
--- a/Lib/ctypes/__init__.py
+++ b/Lib/ctypes/__init__.py
@@ -16,7 +16,7 @@
 if __version__ != _ctypes_version:
     raise Exception("Version number mismatch", __version__, _ctypes_version)
 
-if _os.name in ("nt", "ce"):
+if _os.name == "nt":
     from _ctypes import FormatError
 
 DEFAULT_MODE = RTLD_LOCAL
@@ -103,12 +103,9 @@
         _c_functype_cache[(restype, argtypes, flags)] = CFunctionType
         return CFunctionType
 
-if _os.name in ("nt", "ce"):
+if _os.name == "nt":
     from _ctypes import LoadLibrary as _dlopen
     from _ctypes import FUNCFLAG_STDCALL as _FUNCFLAG_STDCALL
-    if _os.name == "ce":
-        # 'ce' doesn't have the stdcall calling convention
-        _FUNCFLAG_STDCALL = _FUNCFLAG_CDECL
 
     _win_functype_cache = {}
     def WINFUNCTYPE(restype, *argtypes, **kw):
@@ -262,7 +259,7 @@
 def _reset_cache():
     _pointer_type_cache.clear()
     _c_functype_cache.clear()
-    if _os.name in ("nt", "ce"):
+    if _os.name == "nt":
         _win_functype_cache.clear()
     # _SimpleCData.c_wchar_p_from_param
     POINTER(c_wchar).from_param = c_wchar_p.from_param
@@ -374,7 +371,7 @@
     """
     _func_flags_ = _FUNCFLAG_CDECL | _FUNCFLAG_PYTHONAPI
 
-if _os.name in ("nt", "ce"):
+if _os.name == "nt":
 
     class WinDLL(CDLL):
         """This class represents a dll exporting functions using the
@@ -427,7 +424,7 @@
 cdll = LibraryLoader(CDLL)
 pydll = LibraryLoader(PyDLL)
 
-if _os.name in ("nt", "ce"):
+if _os.name == "nt":
     pythonapi = PyDLL("python dll", None, _sys.dllhandle)
 elif _sys.platform == "cygwin":
     pythonapi = PyDLL("libpython%d.%d.dll" % _sys.version_info[:2])
@@ -435,7 +432,7 @@
     pythonapi = PyDLL(None)
 
 
-if _os.name in ("nt", "ce"):
+if _os.name == "nt":
     windll = LibraryLoader(WinDLL)
     oledll = LibraryLoader(OleDLL)
 
@@ -503,7 +500,7 @@
         return _wstring_at(ptr, size)
 
 
-if _os.name in ("nt", "ce"): # COM stuff
+if _os.name == "nt": # COM stuff
     def DllGetClassObject(rclsid, riid, ppv):
         try:
             ccom = __import__("comtypes.server.inprocserver", globals(), locals(), ['*'])
diff --git a/Lib/ctypes/test/test_bitfields.py b/Lib/ctypes/test/test_bitfields.py
index 0eb09fb..c71d71d 100644
--- a/Lib/ctypes/test/test_bitfields.py
+++ b/Lib/ctypes/test/test_bitfields.py
@@ -196,7 +196,7 @@
         class X(Structure):
             _fields_ = [("a", c_byte, 4),
                         ("b", c_int, 4)]
-        if os.name in ("nt", "ce"):
+        if os.name == "nt":
             self.assertEqual(sizeof(X), sizeof(c_int)*2)
         else:
             self.assertEqual(sizeof(X), sizeof(c_int))
@@ -224,7 +224,7 @@
         # MSVC does NOT combine c_short and c_int into one field, GCC
         # does (unless GCC is run with '-mms-bitfields' which
         # produces code compatible with MSVC).
-        if os.name in ("nt", "ce"):
+        if os.name == "nt":
             self.assertEqual(sizeof(X), sizeof(c_int) * 4)
         else:
             self.assertEqual(sizeof(X), sizeof(c_int) * 2)
diff --git a/Lib/ctypes/test/test_funcptr.py b/Lib/ctypes/test/test_funcptr.py
index ff25c8f..636c045 100644
--- a/Lib/ctypes/test/test_funcptr.py
+++ b/Lib/ctypes/test/test_funcptr.py
@@ -39,7 +39,7 @@
         # possible, as in C, to call cdecl functions with more parameters.
         #self.assertRaises(TypeError, c, 1, 2, 3)
         self.assertEqual(c(1, 2, 3, 4, 5, 6), 3)
-        if not WINFUNCTYPE is CFUNCTYPE and os.name != "ce":
+        if not WINFUNCTYPE is CFUNCTYPE:
             self.assertRaises(TypeError, s, 1, 2, 3)
 
     def test_structures(self):
diff --git a/Lib/ctypes/test/test_loading.py b/Lib/ctypes/test/test_loading.py
index 28468c1..45571f3 100644
--- a/Lib/ctypes/test/test_loading.py
+++ b/Lib/ctypes/test/test_loading.py
@@ -11,8 +11,6 @@
     global libc_name
     if os.name == "nt":
         libc_name = find_library("c")
-    elif os.name == "ce":
-        libc_name = "coredll"
     elif sys.platform == "cygwin":
         libc_name = "cygwin1.dll"
     else:
@@ -49,8 +47,8 @@
                 cdll.LoadLibrary(lib)
                 CDLL(lib)
 
-    @unittest.skipUnless(os.name in ("nt", "ce"),
-                         'test specific to Windows (NT/CE)')
+    @unittest.skipUnless(os.name == "nt",
+                         'test specific to Windows')
     def test_load_library(self):
         # CRT is no longer directly loadable. See issue23606 for the
         # discussion about alternative approaches.
@@ -64,14 +62,9 @@
             windll["kernel32"].GetModuleHandleW
             windll.LoadLibrary("kernel32").GetModuleHandleW
             WinDLL("kernel32").GetModuleHandleW
-        elif os.name == "ce":
-            windll.coredll.GetModuleHandleW
-            windll["coredll"].GetModuleHandleW
-            windll.LoadLibrary("coredll").GetModuleHandleW
-            WinDLL("coredll").GetModuleHandleW
 
-    @unittest.skipUnless(os.name in ("nt", "ce"),
-                         'test specific to Windows (NT/CE)')
+    @unittest.skipUnless(os.name == "nt",
+                         'test specific to Windows')
     def test_load_ordinal_functions(self):
         import _ctypes_test
         dll = WinDLL(_ctypes_test.__file__)
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
index f5c6b26..339ae8a 100644
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -67,16 +67,6 @@
                 return fname
         return None
 
-if os.name == "ce":
-    # search path according to MSDN:
-    # - absolute path specified by filename
-    # - The .exe launch directory
-    # - the Windows directory
-    # - ROM dll files (where are they?)
-    # - OEM specified search path: HKLM\Loader\SystemPath
-    def find_library(name):
-        return name
-
 if os.name == "posix" and sys.platform == "darwin":
     from ctypes.macholib.dyld import dyld_find as _dyld_find
     def find_library(name):
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index 1fa4448..a8f4b37 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -28,8 +28,6 @@
 pathsep = ';'
 altsep = '/'
 defpath = '.;C:\\bin'
-if 'ce' in sys.builtin_module_names:
-    defpath = '\\Windows'
 devnull = 'nul'
 
 def _get_bothseps(path):
diff --git a/Lib/os.py b/Lib/os.py
index 307a1de..10d70ad 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -1,9 +1,9 @@
 r"""OS routines for NT or Posix depending on what system we're on.
 
 This exports:
-  - all functions from posix, nt or ce, e.g. unlink, stat, etc.
+  - all functions from posix or nt, e.g. unlink, stat, etc.
   - os.path is either posixpath or ntpath
-  - os.name is either 'posix', 'nt' or 'ce'.
+  - os.name is either 'posix' or 'nt'
   - os.curdir is a string representing the current directory ('.' or ':')
   - os.pardir is a string representing the parent directory ('..' or '::')
   - os.sep is the (or a most common) pathname separator ('/' or ':' or '\\')
@@ -85,27 +85,6 @@
     except ImportError:
         pass
 
-elif 'ce' in _names:
-    name = 'ce'
-    linesep = '\r\n'
-    from ce import *
-    try:
-        from ce import _exit
-        __all__.append('_exit')
-    except ImportError:
-        pass
-    # We can use the standard Windows path.
-    import ntpath as path
-
-    import ce
-    __all__.extend(_get_exports_list(ce))
-    del ce
-
-    try:
-        from ce import _have_functions
-    except ImportError:
-        pass
-
 else:
     raise ImportError('no os specific module found')
 
diff --git a/Lib/platform.py b/Lib/platform.py
index b8f3ebc..a5dd763 100755
--- a/Lib/platform.py
+++ b/Lib/platform.py
@@ -13,7 +13,6 @@
 #    Python bug tracker (http://bugs.python.org) and assign them to "lemburg".
 #
 #    Still needed:
-#    * more support for WinCE
 #    * support for MS-DOS (PythonDX ?)
 #    * support for Amiga and other still unsupported platforms running Python
 #    * support for additional Linux distributions
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
index df4745d..960c673 100755
--- a/Lib/tarfile.py
+++ b/Lib/tarfile.py
@@ -144,7 +144,7 @@
 #---------------------------------------------------------
 # initialization
 #---------------------------------------------------------
-if os.name in ("nt", "ce"):
+if os.name == "nt":
     ENCODING = "utf-8"
 else:
     ENCODING = sys.getfilesystemencoding()
diff --git a/Lib/test/support/__init__.py b/Lib/test/support/__init__.py
index d907b10..4a7cd40 100644
--- a/Lib/test/support/__init__.py
+++ b/Lib/test/support/__init__.py
@@ -811,7 +811,7 @@
 # encoded by the filesystem encoding (in strict mode). It can be None if we
 # cannot generate such filename.
 TESTFN_UNENCODABLE = None
-if os.name in ('nt', 'ce'):
+if os.name == 'nt':
     # skip win32s (0) or Windows 9x/ME (1)
     if sys.getwindowsversion().platform >= 2:
         # Different kinds of characters from various languages to minimize the