1. 07 Oct, 2015 2 commits
    • David Gobbi's avatar
      Remove Python version from vtkPythonConfigure.h. · 7d78e329
      David Gobbi authored
      This is no longer needed, and is needlessly restrictive.
      It's best to have a header that can be used by multiple
      versions of python.
    • Max Smolens's avatar
      Fix HAVE_ROUND-related build warnings in Visual Studio 2013 · 96ca3e6f
      Max Smolens authored
      When built with certain versions of Python, a VTK build with
      VTK_WRAP_PYTHON enabled results in many build warnings. For example:
      Python 2.7.10:
          c:\python27\include\pyconfig.h(444): warning C4005: 'HAVE_ROUND' : macro redefinition
                    C:\dev\VTK\Utilities\Python\vtkPython.h(77) : see previous definition of 'HAVE_ROUND'
      This warning occurs because both vtkPython.h and Python.h define the
      HAVE_ROUND macro, but the definitions don't match. Python 2.7.9+ and
      Python 3.4.2+ define HAVE_ROUND when compiling with Visual Studio 2013+
      (see http://bugs.python.org/issue21958).
      Python 3.4.1:
          c:\python34\include\pymath.h(22): warning C4273: 'round' : inconsistent dll linkage
                    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\math.h(516) : see previous definition of 'round'
          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtgmath.h(206): warning C4273: 'round' : inconsistent dll linkage
                    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\math.h(516) : see previous definition of 'round'
      This warning occurs because neither Python.h nor vtkPython.h define HAVE_ROUND.
      This commit removes the build warnings by:
      - changing the HAVE_ROUND macro definition to match Python's definition
      - removing the Python version check
  2. 06 Oct, 2015 1 commit
  3. 04 Oct, 2015 2 commits
  4. 19 Sep, 2015 1 commit
    • David Gobbi's avatar
      FindPythonLibs Py3k fixes from cmake master. · 7bb212d3
      David Gobbi authored
      Since Python 3.2, the python libraries and include directories can
      have the suffixes m (pymalloc), u (wide unicode), and d (debug).
      The first two (m and u) are now included in the default search path.
      If someone wants the debug library on Linux/OS X, they must select
      it explicitly.
      Everything in this change came from the master branch of make.
  5. 14 Sep, 2015 1 commit
    • David Gobbi's avatar
      Help FindPythonLibs.cmake find Py3k on OS X. · 79ed9c29
      David Gobbi authored
      VTK calls FindPythonInterp first, tries to find the python libraries that
      match the version of the interpreter.  This wasn't working for the OS X
      python 3.4 package from python.org, because the includes were stored in
      the directory python3.2m instead of the directory python3.2.
  6. 11 Sep, 2015 1 commit
  7. 05 Sep, 2015 3 commits
  8. 30 Aug, 2015 1 commit
  9. 28 Aug, 2015 1 commit
    • David Gobbi's avatar
      The Py3K wrapping broke init args for subclasses. · 4d3bc03f
      David Gobbi authored
      The tp_new slot was unconditionally checking the constructor args,
      looking for a swig-style pointer.  This meant that if a vtk class
      was subclassed in Python, the subclass constructor args were checked
      in the same way regardless of whether it defined its own __init__
  10. 24 Aug, 2015 2 commits
  11. 23 Aug, 2015 1 commit
  12. 21 Aug, 2015 2 commits
  13. 19 Aug, 2015 1 commit
  14. 11 Aug, 2015 3 commits
    • David Gobbi's avatar
      Fix remaining py3k issues with vtk.tk module. · aa4e0d02
      David Gobbi authored
      Two major changes: 1) the vtkLoadPythonTkWidgets utility module is now
      imported explicitly as a relative module, necessitating absolute_import.
      The alternative is to import it as vtk.tk.vtkLoadPythonTkWidgets, which
      makes the tk module less mobile, in case someone wanted to incorporate it
      or the vtk module itself into a larger package (e.g. what paraview does).
      2) I've explicitly added an "if" check for python3 before importing the
      tkinter module.  This is done to ensure that an appropriate error is
      reported if the module fails to load (i.e. so that it won't complain
      about trying to import "tkinter" on Python 2, just because it had a
      fallthrough on an attemp to import "Tkinter".
    • David Gobbi's avatar
      Add a few other minor py3k test fixes. · c7d7de28
      David Gobbi authored
      1) Change unicode string unicode string check in TestTemplates.py.
      2) Eliminate some obsolete imports (like "exceptions").
      3) Convert string to bytes in TestDataEncoder.py.
    • Andrew Maclean's avatar
      Fixing tests for Python3. · ae48313c
      Andrew Maclean authored
  15. 10 Aug, 2015 2 commits
    • David Gobbi's avatar
      Add a python function to check buffer equivalence. · 8320da24
      David Gobbi authored
      The python "buffer" and "memoryview" objects do not expose the pointer
      to the underlying memory, they only expose the contents of the memory.
      Likewise, if you check (buffer1 == buffer2) within python, then python
      will iterate through both buffers to see if they have the same contents!
      After all, for python, that's how equality is defined for sequence types.
      This commit adds a method called buffer_shared(ob1, ob2) that checks to
      see if two objects (e.g. arrays) expose the same block of memory via
      their buffer interface.  It assumes that the "buf" pointer is the lowest
      address of the buffer (i.e. the strides must be non-negative).
      It also adds two changes to dataset_adapter.py:
      1) The adapter now uses buffer_shared() instead of using "==" to compare
      buffers, because as stated above "==" does the wrong thing.
      2) It repairs an infinite recursion where __getattr__ called hasattr().
      The infinite recursion was caught silently by hasattr() itself in python2,
      but is exposed as a RuntimeError in python3.
    • David Gobbi's avatar
      Fix typo PYTHON_VERSION_HEX to PY_VERSION_HEX · d6f7466d
      David Gobbi authored
      A typo in vtkPythonArgs.cxx resulted in the use of a "char *" from a
      deleted Python object.  I've fixed the typo and have completely
      removed the code that can give rise to the invalid pointer.
      This commit also changes a BuildBytes to actually build a Bytes object
      on Python 3 (it was building a string).
      Under Python 3.2, the default locale encoding will be used for 8-bit
      strings rather than utf8 (similar to Python 2).  It wasn't until 3.3
      that unicode objects kept a cached copy of the utf8 string.
  16. 09 Aug, 2015 1 commit
  17. 07 Aug, 2015 3 commits
  18. 06 Aug, 2015 6 commits
    • David Gobbi's avatar
      Patch CommonCore python tests for py3k. · b7308b03
      David Gobbi authored
      This change modifies the python code for the tests so that they are
      cross-compatible between python 2 and python 3.  The new code will not
      run on Python 2.5 or earlier, because only python 2.6 and 2.7 allow
      py3k-friendly syntax.
      The numpy_interface does not fully support python 3 yet, due to changes
      in the way numeric operators work and the way type coercion is done.
    • David Gobbi's avatar
      Python API compatibility for py3k. · d3eb4043
      David Gobbi authored
      This is a large change that adds conditional compilation to support
      both python 2 and python 3.  The header vtkPythonCompatibility.h
      does a lot of the necessary work:
      1) PyInt is redefined to PyLong for py3k
      2) PyString is redefied to PyUnicode for py3k
      3) PyBytes is redefined to PyString for python 2
    • David Gobbi's avatar
      Make vtk/__init__.py compatible with py3k. · c96458b9
      David Gobbi authored
    • David Gobbi's avatar
      Fix PyVTKTemplate dict compatibility methods. · e1ff8866
      David Gobbi authored
      The get() method was incorrectly implemented and segfaulted.  Also,
      with py3k, the keys() method returned a special object instead of
      a plain list, and this caused the wrapping to fail.
    • David Gobbi's avatar
      Add the new py3k buffer interface. · 16bb32d4
      David Gobbi authored
      Python 3 introduced a multi-dimensional buffer interface, which was
      backported to Python 2.6 and Python 2.7.
    • David Gobbi's avatar
      Provide py3k module initialization. · f2aebb86
      David Gobbi authored
      This changes the return value of the "real_init" function from void
      to PyObject *, in accordance with the new PyInit method.
  19. 30 Jul, 2015 1 commit
  20. 28 Jul, 2015 1 commit
  21. 27 Jul, 2015 1 commit
  22. 26 Jul, 2015 3 commits
    • David Gobbi's avatar
      Simplify PyVTKClass struct by removing vtk_mangle. · d0d6e833
      David Gobbi authored
      The vtk_mangle member was exactly the same as the python name for
      the class, so it can be retrieved from the PyTypeObject.  I also
      renamed the vtk_cppname member to vtk_name and renamed its attrib
      to __vtkname__.  This attrib is what the VTK GetClassName() method
    • David Gobbi's avatar
      Make python enum type objects static. · 41c65801
      David Gobbi authored
      This was the last generated type object that was exported.  Now that
      it is static, the wrapper-specific import/export macros are no longer
    • David Gobbi's avatar
      Simplify type check for overload resolution. · c4aaab42
      David Gobbi authored
      The overloaded method resolution code in vtkPythonOverload.cxx used to
      make assumptions about type based on the class name (e.g. vtk types start
      with "vtk", python types start with "Py").  Now a distinct character code
      is used for each type.