[Scipy-svn] r5375 - in trunk/scipy/weave: . tests
scipy-svn at scipy.org
scipy-svn at scipy.org
Thu Jan 8 02:49:27 EST 2009
Author: stefan
Date: 2009-01-08 01:49:11 -0600 (Thu, 08 Jan 2009)
New Revision: 5375
Removed:
trunk/scipy/weave/tests/test_wx_spec.py
trunk/scipy/weave/vtk_spec.py
trunk/scipy/weave/wx_spec.py
Modified:
trunk/scipy/weave/converters.py
trunk/scipy/weave/swig2_spec.py
Log:
Remove wx_spec and vtk_spec from weave.
Modified: trunk/scipy/weave/converters.py
===================================================================
--- trunk/scipy/weave/converters.py 2009-01-07 23:55:37 UTC (rev 5374)
+++ trunk/scipy/weave/converters.py 2009-01-08 07:49:11 UTC (rev 5375)
@@ -41,29 +41,6 @@
pass
#----------------------------------------------------------------------------
-# Add wxPython support
-#
-# RuntimeError can occur if wxPython isn't installed.
-#----------------------------------------------------------------------------
-
-try:
- # this is currently safe because it doesn't import wxPython.
- import wx_spec
- default.insert(0,wx_spec.wx_converter())
-except (RuntimeError,IndexError):
- pass
-
-#----------------------------------------------------------------------------
-# Add VTK support
-#----------------------------------------------------------------------------
-
-try:
- import vtk_spec
- default.insert(0,vtk_spec.vtk_converter())
-except IndexError:
- pass
-
-#----------------------------------------------------------------------------
# Add "sentinal" catchall converter
#
# if everything else fails, this one is the last hope (it always works)
Modified: trunk/scipy/weave/swig2_spec.py
===================================================================
--- trunk/scipy/weave/swig2_spec.py 2009-01-07 23:55:37 UTC (rev 5374)
+++ trunk/scipy/weave/swig2_spec.py 2009-01-08 07:49:11 UTC (rev 5375)
@@ -2,13 +2,12 @@
This module allows one to use SWIG2 (SWIG version >= 1.3) wrapped
objects from Weave. SWIG-1.3 wraps objects differently from SWIG-1.1.
-The code here is based on wx_spec.py. However, this module is more
-like a template for any SWIG2 wrapped converter. To wrap any special
-code that uses SWIG the user simply needs to override the defaults in
-the swig2_converter class. These special circumstances arise when one
-has wrapped code that uses C++ namespaces. However, for most
-straightforward SWIG wrappers this converter should work fine out of
-the box.
+This module is a template for a SWIG2 wrapped converter. To wrap any
+special code that uses SWIG the user simply needs to override the
+defaults in the swig2_converter class. These special circumstances
+arise when one has wrapped code that uses C++ namespaces. However,
+for most straightforward SWIG wrappers this converter should work fine
+out of the box.
Newer versions of SWIG (>=1.3.22) represent the wrapped object using a
PyCObject and also a PySwigObject (>=1.3.24). This code supports all
Deleted: trunk/scipy/weave/tests/test_wx_spec.py
===================================================================
--- trunk/scipy/weave/tests/test_wx_spec.py 2009-01-07 23:55:37 UTC (rev 5374)
+++ trunk/scipy/weave/tests/test_wx_spec.py 2009-01-08 07:49:11 UTC (rev 5375)
@@ -1,123 +0,0 @@
-"""
-check_var_in -- tests whether a variable is passed in correctly
- and also if the passed in variable can be reassigned
-check_var_local -- tests wheter a variable is passed in , modified,
- and returned correctly in the local_dict dictionary
- argument
-check_return -- test whether a variable is passed in, modified, and
- then returned as a function return value correctly
-"""
-
-from numpy.testing import *
-
-e = None
-DONOTRUN = False
-try:
- from scipy.weave import ext_tools, wx_spec
- import wx
-except ImportError, e:
- wx = None
- DONOTRUN = True
-except RuntimeError, e:
- wx = None
- DONOTRUN = True
-
-skip = dec.skipif(DONOTRUN, "(error was %s)" % str(e))
-
-class TestWxConverter(TestCase):
- def setUp(self):
- if not DONOTRUN:
- self.app = wx.App()
- self.s = wx_spec.wx_converter()
-
- @dec.slow
- def test_type_match_string(self):
- assert(not self.s.type_match('string') )
-
- @dec.slow
- def test_type_match_int(self):
- assert(not self.s.type_match(5))
-
- @dec.slow
- def test_type_match_float(self):
- assert(not self.s.type_match(5.))
-
- @dec.slow
- def test_type_match_complex(self):
- assert(not self.s.type_match(5.+1j))
-
- @dec.slow
- def test_type_match_complex(self):
- assert(not self.s.type_match(5.+1j))
-
- @dec.slow
- def test_type_match_wxframe(self):
- f=wx.Frame(None,-1,'bob')
- assert(self.s.type_match(f))
-
- @dec.slow
- def test_var_in(self):
- mod = ext_tools.ext_module('wx_var_in',compiler='')
- mod.customize.add_header('<wx/string.h>')
- mod.customize.add_extra_compile_arg(' '.join(self.s.extra_compile_args))
- mod.customize.add_extra_link_arg(' '.join(self.s.extra_link_args))
-
- a = wx.Frame(None,-1,'bob')
- code = """
- py::tuple args(1);
- args[0] = py::object("jim");
- a.mcall("SetTitle",args);
- """
- test = ext_tools.ext_function('test',code,['a'],locals(),globals())
- mod.add_function(test)
- mod.compile()
- import wx_var_in
- b=a
- wx_var_in.test(b)
- assert(b.GetTitle() == "jim")
- try:
- b = 1.
- wx_var_in.test(b)
- except AttributeError:
- pass
- try:
- b = 1
- wx_var_in.test(b)
- except AttributeError:
- pass
-
- @dec.slow
- def no_check_var_local(self):
- mod = ext_tools.ext_module('wx_var_local')
- a = 'string'
- code = 'a="hello";'
- var_specs = ext_tools.assign_variable_types(['a'],locals())
- test = ext_tools.ext_function_from_specs('test',code,var_specs)
- mod.add_function(test)
- mod.compile()
- import wx_var_local
- b='bub'
- q={}
- wx_var_local.test(b,q)
- assert('a' == 'string')
-
- @dec.slow
- def no_test_no_check_return(self):
- mod = ext_tools.ext_module('wx_return')
- a = 'string'
- code = """
- a= Py::wx("hello");
- return_val = Py::new_reference_to(a);
- """
- test = ext_tools.ext_function('test',code,['a'],locals())
- mod.add_function(test)
- mod.compile()
- import wx_return
- b='bub'
- c = wx_return.test(b)
- assert(c == 'hello')
-
-decorate_methods(TestWxConverter, skip)
-
-if __name__ == "__main__":
- nose.run(argv=['', __file__])
Deleted: trunk/scipy/weave/vtk_spec.py
===================================================================
--- trunk/scipy/weave/vtk_spec.py 2009-01-07 23:55:37 UTC (rev 5374)
+++ trunk/scipy/weave/vtk_spec.py 2009-01-08 07:49:11 UTC (rev 5375)
@@ -1,130 +0,0 @@
-"""
-VTK type converter.
-
-This module handles conversion between VTK C++ and VTK Python objects
-so that one can write inline C++ code to manipulate VTK Python
-objects. It requires that you have VTK and the VTK-Python wrappers
-installed. It has been tested with VTK 4.0 and above. The code is
-based on wx_spec.py. You will need to call inline with include_dirs,
-library_dirs and often even libraries appropriately set for this to
-work without errors. Sometimes you might need to include additional
-headers.
-
-Distributed under the SciPy License.
-
-Authors:
- Prabhu Ramachandran <prabhu at aero.iitm.ernet.in>
- Eric Jones <eric at enthought.com>
-"""
-
-from c_spec import common_base_converter
-
-
-vtk_py_to_c_template = \
-"""
-class %(type_name)s_handler
-{
-public:
- %(c_type)s convert_to_%(type_name)s(PyObject* py_obj, const char* name)
- {
- %(c_type)s vtk_ptr = (%(c_type)s) vtkPythonGetPointerFromObject(py_obj, "%(type_name)s");
- if (!vtk_ptr)
- handle_conversion_error(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return vtk_ptr;
- }
-
- %(c_type)s py_to_%(type_name)s(PyObject* py_obj, const char* name)
- {
- %(c_type)s vtk_ptr = (%(c_type)s) vtkPythonGetPointerFromObject(py_obj, "%(type_name)s");
- if (!vtk_ptr)
- handle_bad_type(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return vtk_ptr;
- }
-};
-
-%(type_name)s_handler x__%(type_name)s_handler = %(type_name)s_handler();
-#define convert_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.convert_to_%(type_name)s(py_obj,name)
-#define py_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.py_to_%(type_name)s(py_obj,name)
-
-"""
-
-vtk_c_to_py_template = \
-"""
-PyObject* %(type_name)s_to_py(vtkObjectBase* obj)
-{
- return vtkPythonGetObjectFromPointer(obj);
-}
-"""
-
-
-class vtk_converter(common_base_converter):
- def __init__(self,class_name="undefined"):
- self.class_name = class_name
- common_base_converter.__init__(self)
-
- def init_info(self):
- common_base_converter.init_info(self)
- # These are generated on the fly instead of defined at
- # the class level.
- self.type_name = self.class_name
- self.c_type = self.class_name + "*"
- self.return_type = self.c_type
- self.to_c_return = None # not used
- self.check_func = None # not used
- hdr = self.class_name + ".h"
- # Remember that you need both the quotes!
- self.headers.extend(['"vtkPythonUtil.h"', '"vtkObject.h"',
- '"%s"'%hdr])
- #self.include_dirs.extend(vtk_inc)
- #self.define_macros.append(('SOME_VARIABLE', '1'))
- #self.library_dirs.extend(vtk_lib)
- self.libraries.extend(['vtkCommonPython', 'vtkCommon'])
- #self.support_code.append(common_info.swig_support_code)
-
- def type_match(self,value):
- is_match = 0
- try:
- if value.IsA('vtkObject'):
- is_match = 1
- except AttributeError:
- pass
- return is_match
-
- def generate_build_info(self):
- if self.class_name != "undefined":
- res = common_base_converter.generate_build_info(self)
- else:
- # if there isn't a class_name, we don't want the
- # we don't want the support_code to be included
- import base_info
- res = base_info.base_info()
- return res
-
- def py_to_c_code(self):
- return vtk_py_to_c_template % self.template_vars()
-
- def c_to_py_code(self):
- return vtk_c_to_py_template % self.template_vars()
-
- def type_spec(self,name,value):
- # factory
- class_name = value.__class__.__name__
- new_spec = self.__class__(class_name)
- new_spec.name = name
- return new_spec
-
- def __cmp__(self,other):
- #only works for equal
- res = -1
- try:
- res = cmp(self.name,other.name) or \
- cmp(self.__class__, other.__class__) or \
- cmp(self.class_name, other.class_name) or \
- cmp(self.type_name,other.type_name)
- except:
- pass
- return res
Deleted: trunk/scipy/weave/wx_spec.py
===================================================================
--- trunk/scipy/weave/wx_spec.py 2009-01-07 23:55:37 UTC (rev 5374)
+++ trunk/scipy/weave/wx_spec.py 2009-01-08 07:49:11 UTC (rev 5375)
@@ -1,184 +0,0 @@
-import common_info
-from c_spec import common_base_converter
-import sys,os
-import glob
-
-def find_base_dir():
- searched_locations = ['c:\third\wxpython*',
- '/usr/lib/wx*']
-
- candidate_locations = []
- for pattern in searched_locations:
- candidate_locations.extend(glob.glob(pattern))
- candidate_locations.sort()
-
- if len(candidate_locations) == 0:
- raise RuntimeError("Could not locate wxPython base directory.")
- else:
- return candidate_locations[-1]
-
-wx_base = find_base_dir()
-
-def get_wxconfig(flag):
- wxconfig = os.path.join(wx_base,'bin','wx-config')
- if not os.path.exists(wxconfig):
- # Could not locate wx-config, assume it is on the path.
- wxconfig = 'wx-config'
-
- import commands
- res,settings = commands.getstatusoutput(wxconfig + ' --' + flag)
- if res:
- msg = wxconfig + ' failed. Impossible to learn wxPython settings'
- raise RuntimeError, msg
- return settings.split()
-
-wx_to_c_template = \
-"""
-class %(type_name)s_handler
-{
-public:
- %(c_type)s convert_to_%(type_name)s(PyObject* py_obj, const char* name)
- {
- %(c_type)s wx_ptr;
- // work on this error reporting...
- if (SWIG_GetPtrObj(py_obj,(void **) &wx_ptr,"_%(type_name)s_p"))
- handle_conversion_error(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return wx_ptr;
- }
-
- %(c_type)s py_to_%(type_name)s(PyObject* py_obj,const char* name)
- {
- %(c_type)s wx_ptr;
- // work on this error reporting...
- if (SWIG_GetPtrObj(py_obj,(void **) &wx_ptr,"_%(type_name)s_p"))
- handle_bad_type(py_obj,"%(type_name)s", name);
- %(inc_ref_count)s
- return wx_ptr;
- }
-};
-
-%(type_name)s_handler x__%(type_name)s_handler = %(type_name)s_handler();
-#define convert_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.convert_to_%(type_name)s(py_obj,name)
-#define py_to_%(type_name)s(py_obj,name) \\
- x__%(type_name)s_handler.py_to_%(type_name)s(py_obj,name)
-
-"""
-
-class wx_converter(common_base_converter):
- def __init__(self,class_name="undefined"):
- self.class_name = class_name
- common_base_converter.__init__(self)
-
- def init_info(self):
- common_base_converter.init_info(self)
- # These are generated on the fly instead of defined at
- # the class level.
- self.type_name = self.class_name
- self.c_type = self.class_name + "*"
- self.return_type = self.class_name + "*"
- self.to_c_return = None # not used
- self.check_func = None # not used
- self.headers.append('"wx/wx.h"')
- if sys.platform == "win32":
- # These will be used in many cases
- self.headers.append('<windows.h>')
-
- # These are needed for linking.
- self.libraries.extend(['kernel32','user32','gdi32','comdlg32',
- 'winspool', 'winmm', 'shell32',
- 'oldnames', 'comctl32', 'ctl3d32',
- 'odbc32', 'ole32', 'oleaut32',
- 'uuid', 'rpcrt4', 'advapi32', 'wsock32'])
-
- # not sure which of these macros are needed.
- self.define_macros.append(('WIN32', '1'))
- self.define_macros.append(('__WIN32__', '1'))
- self.define_macros.append(('_WINDOWS', '1'))
- self.define_macros.append(('STRICT', '1'))
- # I think this will only work on NT/2000/XP set
- # set to 0x0400 for earlier versions.
- # Hmmm. setting this breaks stuff
- #self.define_macros.append(('WINVER', '0x0350'))
-
- self.library_dirs.append(os.path.join(wx_base,'lib'))
- #self.include_dirs.append(os.path.join(wx_base,'include'))
- self.include_dirs.append(wx_base)
- self.include_dirs.append(os.path.join(wx_base,'include'))
- self.include_dirs.append(os.path.join(wx_base,'include','msw'))
- # how do I discover unicode or not unicode??
- # non-unicode
- self.libraries.append('wxmsw24h')
- self.include_dirs.append(os.path.join(wx_base,'lib'))
-
- # unicode
- #self.libraries.append('wxmswuh')
- #self.include_dirs.append(os.path.join(wx_base,'lib','mswdlluh'))
- #self.define_macros.append(('UNICODE', '1'))
- else:
- # make sure the gtk files are available
- # ?? Do I need to link to them?
- self.headers.append('"gdk/gdk.h"')
- # !! This shouldn't be hard coded.
- self.include_dirs.append("/usr/include/gtk-1.2")
- self.include_dirs.append("/usr/include/glib-1.2")
- self.include_dirs.append("/usr/lib/glib/include")
- cxxflags = get_wxconfig('cxxflags')
- libflags = get_wxconfig('libs') + get_wxconfig('gl-libs')
-
- #older versions of wx do not support the ldflags.
- try:
- ldflags = get_wxconfig('ldflags')
- except RuntimeError:
- ldflags = []
-
- self.extra_compile_args.extend(cxxflags)
- self.extra_link_args.extend(libflags)
- self.extra_link_args.extend(ldflags)
- self.support_code.append(common_info.swig_support_code)
-
- def type_match(self,value):
- is_match = 0
- try:
- wx_class = str(value.this).split('_')[-1]
- if wx_class[:2] == 'wx':
- is_match = 1
- except AttributeError:
- pass
- return is_match
-
- def generate_build_info(self):
- if self.class_name != "undefined":
- res = common_base_converter.generate_build_info(self)
- else:
- # if there isn't a class_name, we don't want the
- # we don't want the support_code to be included
- import base_info
- res = base_info.base_info()
- return res
-
- def py_to_c_code(self):
- return wx_to_c_template % self.template_vars()
-
- #def c_to_py_code(self):
- # return simple_c_to_py_template % self.template_vars()
-
- def type_spec(self,name,value):
- # factory
- class_name = str(value.this).split('_')[-1]
- new_spec = self.__class__(class_name)
- new_spec.name = name
- return new_spec
-
- def __cmp__(self,other):
- #only works for equal
- res = -1
- try:
- res = cmp(self.name,other.name) or \
- cmp(self.__class__, other.__class__) or \
- cmp(self.class_name, other.class_name) or \
- cmp(self.type_name,other.type_name)
- except:
- pass
- return res
More information about the Scipy-svn
mailing list