Author: Maciej Fijalkowski <fij...@gmail.com>
Branch: 
Changeset: r62954:b293049d40a5
Date: 2013-04-03 10:05 +0200
http://bitbucket.org/pypy/pypy/changeset/b293049d40a5/

Log:    actually kill _minimal_curses

diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -31,7 +31,7 @@
     ["_socket", "unicodedata", "mmap", "fcntl", "_locale", "pwd",
      "rctime" , "select", "zipimport", "_lsprof",
      "crypt", "signal", "_rawffi", "termios", "zlib", "bz2",
-     "struct", "_hashlib", "_md5", "_sha", "_minimal_curses", "cStringIO",
+     "struct", "_hashlib", "_md5", "_sha", "cStringIO",
      "thread", "itertools", "pyexpat", "_ssl", "cpyext", "array",
      "binascii", "_multiprocessing", '_warnings',
      "_collections", "_multibytecodec", "micronumpy", "_ffi",
@@ -45,7 +45,7 @@
      "binascii",
      # the following are needed for pyrepl (and hence for the
      # interactive prompt/pdb)
-     "termios", "_minimal_curses",
+     "termios",
      ]))
 
 working_oo_modules = default_modules.copy()
@@ -62,7 +62,6 @@
     del working_modules["fcntl"]
     del working_modules["pwd"]
     del working_modules["termios"]
-    del working_modules["_minimal_curses"]
 
     # The _locale module is needed by site.py on Windows
     default_modules["_locale"] = None
@@ -72,7 +71,6 @@
     del working_modules['rctime'] # depend on ctypes, missing tm_zone/tm_gmtoff
     del working_modules['signal'] # depend on ctypes, can't get at c-level 
'errono'
     del working_modules['fcntl']  # LOCK_NB not defined
-    del working_modules["_minimal_curses"]
     del working_modules["termios"]
     del working_modules["_multiprocessing"]   # depends on rctime
 
@@ -103,7 +101,6 @@
     "pyexpat"   : ["pypy.module.pyexpat.interp_pyexpat"],
     "_ssl"      : ["pypy.module._ssl.interp_ssl"],
     "_hashlib"  : ["pypy.module._ssl.interp_ssl"],
-    "_minimal_curses": ["pypy.module._minimal_curses.fficurses"],
     "_continuation": ["rpython.rlib.rstacklet"],
     }
 
diff --git a/pypy/module/_minimal_curses/__init__.py 
b/pypy/module/_minimal_curses/__init__.py
deleted file mode 100644
--- a/pypy/module/_minimal_curses/__init__.py
+++ /dev/null
@@ -1,32 +0,0 @@
-try:
-    import _curses
-except ImportError:
-    try:
-        import _minimal_curses as _curses   # when running on top of pypy-c
-    except ImportError:
-        import py
-        py.test.skip("no _curses or _minimal_curses module") #no _curses at all
-
-from pypy.interpreter.mixedmodule import MixedModule
-from pypy.module._minimal_curses import fficurses  # for side effects
-
-
-class Module(MixedModule):
-    """ Low-level interface for curses module,
-    not meant to be used directly
-    """
-
-    appleveldefs = {
-        'error'          : 'app_curses.error',
-    }
-
-    interpleveldefs = {
-        'setupterm'      : 'interp_curses.setupterm',
-        'tigetstr'       : 'interp_curses.tigetstr',
-        'tparm'          : 'interp_curses.tparm',
-    }
-
-for i in dir(_curses):
-    val = getattr(_curses, i)
-    if i.isupper() and type(val) is int:
-        Module.interpleveldefs[i] = "space.wrap(%s)" % val
diff --git a/pypy/module/_minimal_curses/app_curses.py 
b/pypy/module/_minimal_curses/app_curses.py
deleted file mode 100644
--- a/pypy/module/_minimal_curses/app_curses.py
+++ /dev/null
@@ -1,3 +0,0 @@
-
-class error(Exception):
-    pass
diff --git a/pypy/module/_minimal_curses/fficurses.py 
b/pypy/module/_minimal_curses/fficurses.py
deleted file mode 100644
--- a/pypy/module/_minimal_curses/fficurses.py
+++ /dev/null
@@ -1,113 +0,0 @@
-
-""" The ffi for rpython, need to be imported for side effects
-"""
-
-from rpython.rtyper.lltypesystem import rffi
-from rpython.rtyper.lltypesystem import lltype
-from rpython.rtyper.tool import rffi_platform
-from rpython.rtyper.extfunc import register_external
-from pypy.module._minimal_curses import interp_curses
-from rpython.translator.tool.cbuild import ExternalCompilationInfo
-from sys import platform
-import os.path
-
-_CYGWIN = platform == 'cygwin'
-_NCURSES_CURSES = os.path.isfile("/usr/include/ncurses/curses.h") 
-
-if _CYGWIN or _NCURSES_CURSES:
-    eci = ExternalCompilationInfo(
-        includes = ['ncurses/curses.h', 'ncurses/term.h'],
-        libraries = ['curses'],
-    )
-else:
-    eci = ExternalCompilationInfo(
-        includes = ['curses.h', 'term.h'],
-        libraries = ['curses'],
-    )
-
-rffi_platform.verify_eci(eci)
-
-
-INT = rffi.INT
-INTP = lltype.Ptr(lltype.Array(INT, hints={'nolength':True}))
-c_setupterm = rffi.llexternal('setupterm', [rffi.CCHARP, INT, INTP], INT,
-                              compilation_info=eci)
-c_tigetstr = rffi.llexternal('tigetstr', [rffi.CCHARP], rffi.CCHARP,
-                             compilation_info=eci)
-c_tparm = rffi.llexternal('tparm', [rffi.CCHARP, INT, INT, INT, INT, INT,
-                                    INT, INT, INT, INT], rffi.CCHARP,
-                          compilation_info=eci)
-
-ERR = rffi.CConstant('ERR', lltype.Signed)
-OK = rffi.CConstant('OK', lltype.Signed)
-
-def curses_setupterm(term, fd):
-    intp = lltype.malloc(INTP.TO, 1, flavor='raw')
-    err = rffi.cast(lltype.Signed, c_setupterm(term, fd, intp))
-    try:
-        if err == ERR:
-            errret = rffi.cast(lltype.Signed, intp[0])
-            if errret == 0:
-                msg = "setupterm: could not find terminal"
-            elif errret == -1:
-                msg = "setupterm: could not find terminfo database"
-            else:
-                msg = "setupterm: unknown error"
-            raise interp_curses.curses_error(msg)
-        interp_curses.module_info.setupterm_called = True
-    finally:
-        lltype.free(intp, flavor='raw')
-
-def curses_setupterm_null_llimpl(fd):
-    curses_setupterm(lltype.nullptr(rffi.CCHARP.TO), fd)
-
-def curses_setupterm_llimpl(term, fd):
-    ll_s = rffi.str2charp(term)
-    try:
-        curses_setupterm(ll_s, fd)
-    finally:
-        rffi.free_charp(ll_s)
-
-register_external(interp_curses._curses_setupterm_null,
-                  [int], llimpl=curses_setupterm_null_llimpl,
-                  export_name='_curses.setupterm_null')
-register_external(interp_curses._curses_setupterm,
-                  [str, int], llimpl=curses_setupterm_llimpl,
-                  export_name='_curses.setupterm')
-
-def check_setup_invoked():
-    if not interp_curses.module_info.setupterm_called:
-        raise interp_curses.curses_error("must call (at least) setupterm() 
first")
-
-def tigetstr_llimpl(cap):
-    check_setup_invoked()
-    ll_cap = rffi.str2charp(cap)
-    try:
-        ll_res = c_tigetstr(ll_cap)
-        num = lltype.cast_ptr_to_int(ll_res)
-        if num == 0 or num == -1:
-            raise interp_curses.TermError()
-        res = rffi.charp2str(ll_res)
-        return res
-    finally:
-        rffi.free_charp(ll_cap)
-
-register_external(interp_curses._curses_tigetstr, [str], str,
-                  export_name='_curses.tigetstr', llimpl=tigetstr_llimpl)
-
-def tparm_llimpl(s, args):
-    check_setup_invoked()
-    l = [0, 0, 0, 0, 0, 0, 0, 0, 0]
-    for i in range(min(len(args), 9)):
-        l[i] = args[i]
-    ll_s = rffi.str2charp(s)
-    # XXX nasty trick stolen from CPython
-    ll_res = c_tparm(ll_s, l[0], l[1], l[2], l[3], l[4], l[5], l[6],
-                     l[7], l[8])
-    rffi.free_charp(ll_s)
-    res = rffi.charp2str(ll_res)
-    return res
-
-register_external(interp_curses._curses_tparm, [str, [int]], str,
-                  export_name='_curses.tparm', llimpl=tparm_llimpl)
-
diff --git a/pypy/module/_minimal_curses/interp_curses.py 
b/pypy/module/_minimal_curses/interp_curses.py
deleted file mode 100644
--- a/pypy/module/_minimal_curses/interp_curses.py
+++ /dev/null
@@ -1,94 +0,0 @@
-
-from pypy.interpreter.gateway import unwrap_spec
-from pypy.interpreter.error import OperationError
-from pypy.module._minimal_curses import _curses
-
-class ModuleInfo:
-    def __init__(self):
-        self.setupterm_called = False
-
-module_info = ModuleInfo()
-
-class curses_error(Exception):
-    def __init__(self, msg):
-        self.msg = msg
-
-from rpython.annotator.classdef import FORCE_ATTRIBUTES_INTO_CLASSES
-from rpython.annotator.model import SomeString
-
-# this is necessary due to annmixlevel
-FORCE_ATTRIBUTES_INTO_CLASSES[curses_error] = {'msg': SomeString()}
-
-def convert_error(space, error):
-    msg = error.msg
-    w_module = space.getbuiltinmodule('_minimal_curses')
-    w_exception_class = space.getattr(w_module, space.wrap('error'))
-    w_exception = space.call_function(w_exception_class, space.wrap(msg))
-    return OperationError(w_exception_class, w_exception)
-
-def _curses_setupterm_null(fd):
-    # NOT_RPYTHON
-    try:
-        _curses.setupterm(None, fd)
-    except _curses.error, e:
-        raise curses_error(e.args[0])
-
-def _curses_setupterm(termname, fd):
-    # NOT_RPYTHON
-    try:
-        _curses.setupterm(termname, fd)
-    except _curses.error, e:
-        raise curses_error(e.args[0])
-
-@unwrap_spec(fd=int)
-def setupterm(space, w_termname=None, fd=-1):
-    if fd == -1:
-        w_stdout = space.getattr(space.getbuiltinmodule('sys'),
-                                 space.wrap('stdout'))
-        fd = space.int_w(space.call_function(space.getattr(w_stdout,
-                                             space.wrap('fileno'))))
-    try:
-        if space.is_none(w_termname):
-            _curses_setupterm_null(fd)
-        else:
-            _curses_setupterm(space.str_w(w_termname), fd)
-    except curses_error, e:
-        raise convert_error(space, e)
-
-class TermError(Exception):
-    pass
-
-def _curses_tigetstr(capname):
-    # NOT_RPYTHON
-    try:
-        res = _curses.tigetstr(capname)
-    except _curses.error, e:
-        raise curses_error(e.args[0])
-    if res is None:
-        raise TermError
-    return res
-
-def _curses_tparm(s, args):
-    # NOT_RPYTHON
-    try:
-        return _curses.tparm(s, *args)
-    except _curses.error, e:
-        raise curses_error(e.args[0])
-
-@unwrap_spec(capname=str)
-def tigetstr(space, capname):
-    try:
-        result = _curses_tigetstr(capname)
-    except TermError:
-        return space.w_None
-    except curses_error, e:
-        raise convert_error(space, e)
-    return space.wrap(result)
-
-@unwrap_spec(s=str)
-def tparm(space, s, args_w):
-    args = [space.int_w(a) for a in args_w]
-    try:
-        return space.wrap(_curses_tparm(s, args))
-    except curses_error, e:
-        raise convert_error(space, e)
diff --git a/pypy/module/_minimal_curses/test/__init__.py 
b/pypy/module/_minimal_curses/test/__init__.py
deleted file mode 100644
diff --git a/pypy/module/_minimal_curses/test/test_curses.py 
b/pypy/module/_minimal_curses/test/test_curses.py
deleted file mode 100644
--- a/pypy/module/_minimal_curses/test/test_curses.py
+++ /dev/null
@@ -1,108 +0,0 @@
-from pypy.conftest import pypydir
-from rpython.tool.udir import udir
-import py
-import sys
-# tests here are run as snippets through a pexpected python subprocess
-
-
-def setup_module(mod):
-    try:
-        import curses
-        curses.setupterm()
-    except:
-        py.test.skip("Cannot test this here")
-
-class TestCurses(object):
-    """ We need to fork here, to prevent
-    the setup to be done
-    """
-    def _spawn(self, *args, **kwds):
-        import pexpect
-        kwds.setdefault('timeout', 600)
-        print 'SPAWN:', args, kwds
-        child = pexpect.spawn(*args, **kwds)
-        child.logfile = sys.stdout
-        return child
-
-    def spawn(self, argv):
-        py_py = py.path.local(pypydir).join('bin', 'pyinteractive.py')
-        return self._spawn(sys.executable, [str(py_py)] + argv)
-
-    def setup_class(self):
-        try:
-            import pexpect
-        except ImportError:
-            py.test.skip('pexpect not found')
-
-    def test_setupterm(self):
-        source = py.code.Source("""
-        import _minimal_curses
-        try:
-            _minimal_curses.tigetstr('cup')
-        except _minimal_curses.error:
-            print 'ok!'
-        """)
-        f = udir.join("test_setupterm.py")
-        f.write(source)
-        child = self.spawn(['--withmod-_minimal_curses', str(f)])
-        child.expect('ok!')
-
-    def test_tigetstr(self):
-        source = py.code.Source("""
-        import _minimal_curses
-        _minimal_curses.setupterm()
-        assert _minimal_curses.tigetstr('cup') == '\x1b[%i%p1%d;%p2%dH'
-        print 'ok!'
-        """)
-        f = udir.join("test_tigetstr.py")
-        f.write(source)
-        child = self.spawn(['--withmod-_minimal_curses', str(f)])
-        child.expect('ok!')
-
-    def test_tparm(self):
-        source = py.code.Source("""
-        import _minimal_curses
-        _minimal_curses.setupterm()
-        assert _minimal_curses.tparm(_minimal_curses.tigetstr('cup'), 5, 3) == 
'\033[6;4H'
-        print 'ok!'
-        """)
-        f = udir.join("test_tparm.py")
-        f.write(source)
-        child = self.spawn(['--withmod-_minimal_curses', str(f)])
-        child.expect('ok!')
-        
-class TestCCurses(object):
-    """ Test compiled version
-    """
-    def test_csetupterm(self):
-        from rpython.translator.c.test.test_genc import compile
-        from pypy.module._minimal_curses import interp_curses
-        def runs_setupterm():
-            interp_curses._curses_setupterm_null(1)
-
-        fn = compile(runs_setupterm, [])
-        fn()
-
-    def test_ctgetstr(self):
-        from rpython.translator.c.test.test_genc import compile
-        from pypy.module._minimal_curses import interp_curses
-        def runs_ctgetstr():
-            interp_curses._curses_setupterm("xterm", 1)
-            return interp_curses._curses_tigetstr('cup')
-
-        fn = compile(runs_ctgetstr, [])
-        res = fn()
-        assert res == '\x1b[%i%p1%d;%p2%dH'
-
-    def test_ctparm(self):
-        from rpython.translator.c.test.test_genc import compile
-        from pypy.module._minimal_curses import interp_curses
-        def runs_tparm():
-            interp_curses._curses_setupterm("xterm", 1)
-            cup = interp_curses._curses_tigetstr('cup')
-            return interp_curses._curses_tparm(cup, [5, 3])
-
-        fn = compile(runs_tparm, [])
-        res = fn()
-        assert res == '\033[6;4H'
-
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to