1. 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.
      8320da24
    • 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.
      d6f7466d
  2. 09 Aug, 2015 1 commit
  3. 07 Aug, 2015 3 commits
  4. 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.
      b7308b03
    • 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
      d3eb4043
    • David Gobbi's avatar
      Make vtk/__init__.py compatible with py3k. · c96458b9
      David Gobbi authored
      c96458b9
    • 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.
      e1ff8866
    • 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.
      16bb32d4
    • 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.
      f2aebb86
  5. 30 Jul, 2015 1 commit
  6. 28 Jul, 2015 1 commit
  7. 27 Jul, 2015 1 commit
  8. 26 Jul, 2015 6 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
      returns.
      d0d6e833
    • 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
      needed.
      41c65801
    • 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.
      c4aaab42
    • David Gobbi's avatar
      Add the module to the tp_name member of every type. · 74de9b8c
      David Gobbi authored
      This is done according to the documentation for PyTypeObject. It
      allows python to correctly generate the __module__ attribute for
      extension types, which is needed by some python packaging systems.
      74de9b8c
    • David Gobbi's avatar
      Update the PyVTKTemplate type object. · 45abed45
      David Gobbi authored
      This allowed me to remove its custom GetAttr method.
      45abed45
    • David Gobbi's avatar
      Do type checking with type objects, not strings. · c14475e3
      David Gobbi authored
      There is no guarantee that tp_name is unique, and it would be bad
      if someone fooled the type checking by simply creating a new type
      with the same name as an existing type.
      c14475e3
  9. 23 Jul, 2015 11 commits
  10. 20 Jul, 2015 7 commits
  11. 19 Jul, 2015 1 commit