Hello community,

here is the log from the commit of package python-Transplant for 
openSUSE:Factory checked in at 2019-07-24 20:37:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-Transplant (Old)
 and      /work/SRC/openSUSE:Factory/.python-Transplant.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-Transplant"

Wed Jul 24 20:37:11 2019 rev:4 rq:718208 version:0.8.10

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-Transplant/python-Transplant.changes      
2019-01-08 12:28:20.896280705 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-Transplant.new.4126/python-Transplant.changes
    2019-07-24 20:37:12.630563058 +0200
@@ -1,0 +2,6 @@
+Wed Jul 24 10:17:08 UTC 2019 - Tomáš Chvátal <tchva...@suse.com>
+
+- Update to 0.8.10:
+  * fixes (benign) Matlab crash on exit
+
+-------------------------------------------------------------------

Old:
----
  Transplant-0.8.8.tar.gz

New:
----
  LICENSE
  Transplant-0.8.10.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-Transplant.spec ++++++
--- /var/tmp/diff_new_pack.3xiKlA/_old  2019-07-24 20:37:13.066563010 +0200
+++ /var/tmp/diff_new_pack.3xiKlA/_new  2019-07-24 20:37:13.070563010 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-Transplant
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,28 +19,30 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-Transplant
-Version:        0.8.8
+Version:        0.8.10
 Release:        0
 Summary:        Python module for calling out to Matlab
 License:        BSD-3-Clause
 Group:          Development/Languages/Python
-Url:            https://github.com/bastibe/transplant
+URL:            https://github.com/bastibe/transplant
 Source:         
https://files.pythonhosted.org/packages/source/T/Transplant/Transplant-%{version}.tar.gz
+Source99:       
https://raw.githubusercontent.com/bastibe/transplant/master/LICENSE
 BuildRequires:  %{python_module devel >= 3.4}
 BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+Requires:       python-msgpack-python
+Requires:       python-numpy
+Requires:       python-pyzmq
+BuildArch:      noarch
 # SECTION test requirements
 BuildRequires:  %{python_module msgpack-python}
 BuildRequires:  %{python_module numpy}
+BuildRequires:  %{python_module pytest-runner}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module pyzmq}
+BuildRequires:  %{python_module scipy}
 # /SECTION
-BuildRequires:  fdupes
-Requires:       python-msgpack-python
-Requires:       python-numpy
-Requires:       python-pyzmq
-BuildArch:      noarch
-
 %python_subpackages
 
 %description
@@ -54,6 +56,7 @@
 
 %prep
 %setup -q -n Transplant-%{version}
+cp %{SOURCE99} .
 
 %build
 %python_build
@@ -62,8 +65,13 @@
 %python_install
 %python_expand %fdupes %{buildroot}%{$python_sitelib}
 
+%check
+# tests sadly need matlab install
+#%%python_exec setup.py test
+
 %files %{python_files}
-%doc README.md
+%license LICENSE
+%doc README.rst
 %{python_sitelib}/*
 
 %changelog

++++++ Transplant-0.8.8.tar.gz -> Transplant-0.8.10.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/PKG-INFO 
new/Transplant-0.8.10/PKG-INFO
--- old/Transplant-0.8.8/PKG-INFO       2018-11-29 14:52:55.000000000 +0100
+++ new/Transplant-0.8.10/PKG-INFO      2019-07-01 16:27:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Transplant
-Version: 0.8.8
+Version: 0.8.10
 Summary: Call Matlab from Python (requires Matlab)
 Home-page: https://github.com/bastibe/transplant
 Author: Bastian Bechtold
@@ -289,7 +289,7 @@
            zeromq if you use conda.
         
         2. Install Transplant using ``pip install transplant``. This will
-           install ``pyzmq``, ``numpy`` and ``msgpack-python`` as
+           install ``pyzmq``, ``numpy`` and ``msgpack`` as
            dependencies.
         
         If you want to run Transplant over the network, the remote Matlab has
@@ -392,6 +392,10 @@
         * Does Transplant work in Python 2.7?
           No, it does not.
         
+        * How to integrate Transplant with Jupyter?
+          Use the provided ``transplant_magic.py``, to get %%matlab cell
+          magic.
+        
         
         SIMILAR PROGRAMS
         ----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/README.md 
new/Transplant-0.8.10/README.md
--- old/Transplant-0.8.8/README.md      2018-11-29 14:09:57.000000000 +0100
+++ new/Transplant-0.8.10/README.md     1970-01-01 01:00:00.000000000 +0100
@@ -1,419 +0,0 @@
-TRANSPLANT
-==========
-
-Transplant is an easy way of calling Matlab from Python.
-
-```python
- import transplant
- matlab = transplant.Matlab()
- # call Matlab functions:
- length = matlab.numel([1, 2, 3])
- magic = matlab.magic(2)
- spectrum = matlab.fft(numpy.random.randn(100))
- # inject variables into Matlab:
- matlab.signal = numpy.zeros(100)
-```
-
-Python lists are converted to cell arrays in Matlab, dicts are
-converted to Maps, and numpy ND-Arrays are converted do native Matlab
-matrices.
-
-All Matlab functions and objects can be accessed from Python.
-
-
-RECENT CHANGES
---------------
-
-- Should now reliably raise an error if Matlab dies unexpectedly.
-- Keyword arguments are now automatically translated to string-value
-  pairs in Matlab.
-- `close` was renamed `exit`. Even though Python typically uses
-  `close` to close files and connections, this conflicts with Matlab's
-  own `close` function. 
-- Matlab will now start Matlab at the current working directory.
-- Transplant can now be installed through `pip install transplant`.
-- You can now use `jvm=False` and `desktop=False` to auto-supply
-  common command line arguments for Matlab.
-
-
-STARTING MATLAB
-----------------
-
-```python
-matlab = transplant.Matlab()
-```
-
-Will start a Matlab session and connect to it. This will take a few
-seconds while Matlab starts up. All of Matlab's output will go to the
-standard output and will appear interspersed with Python output.
-Standard input is suppressed to make REPLs work, so Matlab's `input`
-function will not work.
-
-By default, this will try to call `matlab` on the command line. If you
-want to use a different version of Matlab, or `matlab` is not in PATH,
-use `Matlab(executable='/path/to/matlab')`.
-
-By default, Matlab is called with `-nodesktop` and `-nosplash` (and
-`-minimize` on Windows), so no IDE or splash screen show up. You can
-change this by setting `desktop=True`.
-
-You can start Matlab without loading the Java-based GUI system
-(`'-nojvm'`) by setting `jvm=False`. This will speed up startup
-considerably, but you won't be able to open figures any more.
-
-If you want to start Matlab with additional command line arguments,
-you can supply them like this: `Matlab(arguments=['-c licensefile'])`.
-
-By default, Matlab will be started on the local machine. To start
-Matlab on a different computer, supply the IP address of that
-computer: `Matlab(address='172.168.1.5')`. This only works if that
-computer is reachable through `ssh`, Matlab is available on the other
-computer's command line, and transplant is in the other Matlab's path.
-
-Note that due to a limitation of Matlab on Windows, command line
-output from Matlab running on Windows isn't visible to Transplant.
-
-
-CALLING MATLAB 
---------------
-
-```python
-matlab.disp("Hello, World")
-```
-
-Will call Matlab's `disp` function with the argument `'Hello, World'`.
-It is equivalent to `disp('Hello, World')` in Matlab. Return values
-will be returned to Python, and errors will be converted to Python
-errors (Matlab stack traces will be given, too!).
-
-Input arguments are converted to Matlab data structures:
-
-| Python Argument                 | Matlab Type                 |
-| ------------------------------- | --------------------------- |
-| `str`                           | `char` vector               |
-| `float`                         | `double` scalar             |
-| `int`                           | an `int{8,16,32,64}` scalar |
-| `True`/`False`                  | `logical` scalar            |
-| `None`                          | `[]`                        |
-| `list`                          | `cell`                      |
-| `dict`                          | `containers.Map`            |
-| `transplant.MatlabStruct(dict)` | `struct`                    |
-| `numpy.ndarray`                 | `double` matrix             |
-| `scipy.sparse`                  | `sparse` matrix             |
-| proxy object                    | original object             |
-
-Return values are treated similarly:
-
-| Matlab Return Value          | Python Type     |
-| ---------------------------- | --------------- |
-| `char` vector                | `str`           |
-| numeric scalar               | number          |
-| `logical` scalar             | `True`/`False`  |
-| `[]`                         | `None`          |
-| `cell`                       | `list`          |
-| `struct` or `containers.Map` | `dict`          |
-| numeric matrix               | `numpy.ndarray` |
-| sparse matrix                | `scipy.sparse`  |
-| function                     | proxy function  |
-| object                       | proxy object    |
-
-If the function returns a function handle or an object, a matching
-Python functions/objects will be created that forwards every access to
-Matlab. Objects can also be handed back to Matlab and will work as
-intended.
-
-```python
-f = matlab.figure() # create a Figure object
-f.Visible = 'off' # modify a property of the Figure object
-matlab.set(f, 'Visible', 'on') # pass the Figure object to a function
-```
-
-In Matlab, some functions behave differently depending on the number
-of output arguments. By default, Transplant uses the Matlab function
-`nargout` to figure out the number of return values for a function. If
-`nargout` can not determine the number of output arguments either,
-Matlab functions will return the value of `ans` after the function
-call.
-
-In some cases, `nargout` will report a wrong number of output
-arguments. For example `nargout profile` will say `1`, but `x =
-profile('on')` will raise an error that too few output arguments were
-used. To fix this, every function has a keyword argument `nargout`,
-which can be used in these cases: `matlab.profile('on', nargout=0)`
-calls `profile on` with no output arguments. `s, f, t, p =
-matlab.spectrogram(numpy.random.randn(1000), nargout=4)` returns all
-four output arguments of `spectrogram`.
-
-When working with plots, note that the Matlab program does not wait
-for drawing on its own. Use `matlab.drawnow()` to make figures appear.
-
-Note that functions are not called in the base workspace. Functions
-that access the current non-lexical workspace (this is very rare) will
-therefore not work as expected. For example, `matlab.truth = 42`,
-`matlab.exist('truth')` will not find the `truth` variable. Use
-`matlab.evalin('base', "exist('truth')", nargout=1)` instead in this
-case.
-
-If you hit Ctrl-C, the `KeyboardInterrupt` will be applied to both
-Python and Matlab, stopping any currently running function. Due to a
-limitation of Matlab, the error and stack trace of that function will
-be lost.
-
-
-MATRIX DIMENSIONS
------------------
-
-The way multidimensional arrays are indexed in Matlab and Python are
-fundamentally different. Thankfully, the two-dimensional case works as
-expected:
-
-               Python         |        Matlab
-    --------------------------+------------------------
-     array([[  1,   2,   3],  |     1   2   3
-            [ 10,  20,  30]]) |    10  20  30
-
-In both languages, this array has the shape `(2, 3)`.
-
-With higher-dimension arrays, this becomes harder. The next array is
-again identical:
-
-               Python         |        Matlab
-    --------------------------+------------------------
-     array([[[  1,   2],      | (:,:,1) =
-             [  3,   4]],     |              1    3
-                              |             10   30
-            [[ 10,  20],      |            100  300
-             [ 30,  40]],     | (:,:,2) =
-                              |              2    4
-            [[100, 200],      |             20   40
-             [300, 400]]])    |            200  400
-
-Even though they look different, they both have the same shape `(3, 2,
-2)`, and are indexed in the same way. The element at position `a, b,
-c` in Python is the same as the element at position `a+1, b+1, c+1` in
-Matlab (`+1` due to zero-based/one-based indexing).
-
-You can think about the difference in presentation like this: Python
-displays multidimensional arrays as `[n,:,:]`, whereas Matlab displays
-them as `(:,:,n)`.
-
-
-STOPPING MATLAB
----------------
-
-Matlab processes end when the `Matlab` instance goes out of scope or
-is explicitly closed using the `exit` method. Alternatively, the
-`Matlab` class can be used as a context manager, which will properly
-clean up after itself.
-
-If you are not using the context manager or the `exit` method, you
-will notice that some Matlab processes don't die when you expect them
-to die. If you are running the regular `python` interpreter, chances
-are that the Matlab process is still referenced to in
-`sys.last_traceback`, which holds the value of the last exception that
-was raised. Your Matlab process will die once the next exception is
-raised.
-
-If you are running `ipython`, though, all bets are off. I have noticed
-that `ipython` keeps all kinds of references to all kinds of things.
-Sometimes, `%reset` will clear them, sometimes it won't. Sometimes
-they only go away when `ipython` quits. And sometimes, even stopping
-`ipython` doesn't kill it (how is this even possible?). This can be
-quite annoying. Use the `exit` method or the context manager to make
-sure the processes are stopped correctly.
-
-
-INSTALLATION
-------------
-
-1. Install the zeromq library on your computer and add it to your
-   PATH. Alternatively, Transplant automatically uses `conda`'s zeromq
-   if you use conda.
-   
-2. Install Transplant using `pip install transplant`. This will
-   install `pyzmq`, `numpy` and `msgpack-python` as dependencies.
-
-If you want to run Transplant over the network, the remote Matlab has
-to have access to *ZMQ.m* and *transplant_remote.m* and the zeromq
-library and has to be reachable through SSH.
-
-INSTALLATION GUIDE FOR LINUX
-----------------------------
-
-1. Install the latest version of zeromq through your package manager.
-   Install version 4 (often called 5).
-
-2. Make sure that Matlab is using the system's version of libstdc++.
-   If it is using an incompatible version, starting Transplant might
-   fail with an error like `GLIBCXX_3.4.21 not found`. If you
-   experience this, disable Matlab's own libstdc++ either by
-   removing/renaming $MATLABROOT/sys/os/glnxa64/libstdc++, or by
-   installing `matlab-support` (if you are running Ubuntu).
-
-   
-INSTALLATION GUIDE FOR WINDOWS   
------------------------------
-
-1. Install the latest version of zeromq from here:
-   http://zeromq.org/distro:microsoft-windows OR through conda.
-
-2. Install a compiler. See here for a list of supported compilers: 
-   http://uk.mathworks.com/support/compilers/R2017a/  
-   Matlab needs a compiler in order to load and use the ZeroMQ library
-   using `loadlibrary`.
-
-
-HOW DOES IT WORK?
------------------
-
-Transplant opens Matlab as a subprocess (optionally over SSH), then
-connects to it via [0MQ](http://zeromq.org/) in a request-response
-pattern. Matlab then runs the _transplant_ remote and starts listening
-for messages. Now, Python can send messages to Matlab, and Matlab will
-respond. Roundtrip time for sending/receiving and encoding/decoding
-values from Python to Matlab and back is about 2 ms.
-
-All messages are Msgpack-encoded or JSON-encoded objects. You can
-choose between Msgpack (faster) and JSON (slower, human-readable)
-using the `msgformat` attribute of the `Matlab` constructor. There are
-seven messages types used by Python:
-
-* `set_global` and `get_global` set and retrieve a global variable.
-* `del_proxy` removes a cached object.
-* `call` calls a Matlab function with some function arguments and
-  returns the result.
-* `die` tells Matlab to shut down.
-
-Matlab can then respond with one of three message types:
-
-* `ack` for successful execution.
-* `value` for return values.
-* `error` if there was an error during execution.
-
-In addition to the regular Msgpack/JSON data types, _transplant_ uses
-specially formatted Msgpack/JSON arrays for transmitting numerical
-matrices as binary data. A numerical 2x2 32-bit integer matrix
-containing `[[1, 2], [3, 4]]` would be encoded as
-`["__matrix__", "int32", [2, 2], "AQAAAAIAAAADAAAABAAAA==\n"]`, where
-`"int32"` is the data type, `[2, 2]` is the matrix shape and the long
-string is the base64-encoded matrix content. This allows for efficient
-data exchange and prevents rounding errors due to JSON serialization.
-In Msgpack, the data is not base64-encoded.
-
-When Matlab returns a function handle, it is encoded as
-`["__function__", func2str(f)]`. When Matlab returns an object, it
-caches its value and returns `["__object__", cache_idx]`. These arrays
-are translated back to their original Matlab values if passed to
-Matlab.
-
-Note that this project includes a Msgpack serializer/parser, a JSON
-serializer/parser, and a Base64 encoder/decoder in pure Matlab.   
-
-
-FAQ
----
-
-* I get errors with integer numbers  
-  Many Matlab functions crash if called with integers. Convert your
-  numbers to `float` in Python to fix this problem.
-  
-* How do I pass structs to Matlab?  
-  Since Matlab structs can't use arbitrary keys, all Python
-  dictionaries are converted to Matlab `containers.Map` instead of
-  structs. Wrap your dicts in `transplant.MatlabStruct` in Python to
-  have them converted to structs. Note that this will change all
-  invalid keys to whatever Matlab thinks is an appropriate key name
-  using `matlab.lang.makeValidName`.
-
-* I get errors like `GLIBCXX_3.4.21 not found`  
-  Matlab's version of libstdc++ is incompatible with your OS's
-  version. See INSTALLATION GUIDE FOR LINUX for details.
-
-* Does Transplant work in Python 2.7?
-  No, it does not.
-  
-  
-SIMILAR PROGRAMS
-----------------
-
-I know of two programs that try to do similar things as Transplant:
-
-- Mathwork's own [MATLAB Engine API for Python][MEfP] provides a
-  CPython extension for calling Matlab code from some versions of
-  Python. In my experience, it is significantly slower than
-  Transplant, less feature-complete (no support for non-scalar
-  structs, objects, methods, packages, numpy), and more cumbersome to
-  use (all arguments and return values need to be wrapped in a
-  `matlab.double` instead of Numpy Arrays). For a comparison of the
-  two, here are two blog posts on the topic:
-  [Intro to Transplant][bde1], [Transplant speed][bde2].
-- Oct2Py calls Octave from Python. It is very similar to Transplant,
-  but uses Octave instead of Matlab. This has huge benefits in startup
-  time, but of course doesn't support all Matlab code.
-
-[MEfP]: http://mathworks.com/help/matlab/matlab-engine-for-python.html
-[bde1]: http://bastibe.de/2016-06-21-transplant-revisited.html
-[bde2]: http://bastibe.de/2015-11-03-matlab-engine-performance.html
-
-KNOWN ISSUES
--------------
-
-Transplant is a side project of mine that I use for running
-cross-language experiments on a small compute cluster. As such, my
-usage of Transplant is very narrow, and I do not see bugs that don't
-happen in my typical usage. That said, I have used Transplant for
-hundreds of hours, and hundreds of Gigabytes of data without errors.
-
-If you find a bug, or would like to discuss a new feature, or would
-like to contribute code, please open an issue on Github.
-
-I do not have a Windows machine to test Transplant. Windows support
-might contain bugs, but at least one user has used it on Windows in
-the past. If you are hitting problems on Windows, please open an issue
-on Github.
-
-Running Transplant over the network might contain bugs. If you are
-hitting problems, please open an issue on Github.
-
-Finally, I would like to remind you that I am developing this project
-for free, and in my spare time. While I try to be as accomodating as
-possible, I can not guarantee a timely response to issues. Publishing
-Open Source Software on Github does not imply an obligation to *fix
-your problem right now*. Please be civil.
-
-
-LICENSE
--------
-
-MATLAB (R) is copyright of the Mathworks
-
-Copyright (c) 2014-2018 Bastian Bechtold
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-1. Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the
-   distribution.
-
-3. Neither the name of the copyright holder nor the names of its
-   contributors may be used to endorse or promote products derived
-   from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/README.rst 
new/Transplant-0.8.10/README.rst
--- old/Transplant-0.8.8/README.rst     2018-11-29 13:39:06.000000000 +0100
+++ new/Transplant-0.8.10/README.rst    2019-04-25 13:52:29.000000000 +0200
@@ -281,7 +281,7 @@
    zeromq if you use conda.
 
 2. Install Transplant using ``pip install transplant``. This will
-   install ``pyzmq``, ``numpy`` and ``msgpack-python`` as
+   install ``pyzmq``, ``numpy`` and ``msgpack`` as
    dependencies.
 
 If you want to run Transplant over the network, the remote Matlab has
@@ -384,6 +384,10 @@
 * Does Transplant work in Python 2.7?
   No, it does not.
 
+* How to integrate Transplant with Jupyter?
+  Use the provided ``transplant_magic.py``, to get %%matlab cell
+  magic.
+
 
 SIMILAR PROGRAMS
 ----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/Transplant.egg-info/PKG-INFO 
new/Transplant-0.8.10/Transplant.egg-info/PKG-INFO
--- old/Transplant-0.8.8/Transplant.egg-info/PKG-INFO   2018-11-29 
14:52:55.000000000 +0100
+++ new/Transplant-0.8.10/Transplant.egg-info/PKG-INFO  2019-07-01 
16:27:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: Transplant
-Version: 0.8.8
+Version: 0.8.10
 Summary: Call Matlab from Python (requires Matlab)
 Home-page: https://github.com/bastibe/transplant
 Author: Bastian Bechtold
@@ -289,7 +289,7 @@
            zeromq if you use conda.
         
         2. Install Transplant using ``pip install transplant``. This will
-           install ``pyzmq``, ``numpy`` and ``msgpack-python`` as
+           install ``pyzmq``, ``numpy`` and ``msgpack`` as
            dependencies.
         
         If you want to run Transplant over the network, the remote Matlab has
@@ -392,6 +392,10 @@
         * Does Transplant work in Python 2.7?
           No, it does not.
         
+        * How to integrate Transplant with Jupyter?
+          Use the provided ``transplant_magic.py``, to get %%matlab cell
+          magic.
+        
         
         SIMILAR PROGRAMS
         ----------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/Transplant.egg-info/SOURCES.txt 
new/Transplant-0.8.10/Transplant.egg-info/SOURCES.txt
--- old/Transplant-0.8.8/Transplant.egg-info/SOURCES.txt        2018-11-29 
14:52:55.000000000 +0100
+++ new/Transplant-0.8.10/Transplant.egg-info/SOURCES.txt       2019-07-01 
16:27:54.000000000 +0200
@@ -1,5 +1,5 @@
-README.md
 README.rst
+setup.cfg
 setup.py
 Transplant.egg-info/PKG-INFO
 Transplant.egg-info/SOURCES.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/Transplant.egg-info/requires.txt 
new/Transplant-0.8.10/Transplant.egg-info/requires.txt
--- old/Transplant-0.8.8/Transplant.egg-info/requires.txt       2018-11-29 
14:52:55.000000000 +0100
+++ new/Transplant-0.8.10/Transplant.egg-info/requires.txt      2019-07-01 
16:27:54.000000000 +0200
@@ -1,3 +1,3 @@
 numpy
 pyzmq
-msgpack-python
+msgpack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/setup.cfg 
new/Transplant-0.8.10/setup.cfg
--- old/Transplant-0.8.8/setup.cfg      2018-11-29 14:52:55.000000000 +0100
+++ new/Transplant-0.8.10/setup.cfg     2019-07-01 16:27:54.000000000 +0200
@@ -1,3 +1,6 @@
+[aliases]
+test = pytest
+
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/setup.py 
new/Transplant-0.8.10/setup.py
--- old/Transplant-0.8.8/setup.py       2018-11-29 14:45:42.000000000 +0100
+++ new/Transplant-0.8.10/setup.py      2019-07-01 16:27:48.000000000 +0200
@@ -13,7 +13,7 @@
 
 setup(
     name='Transplant',
-    version='0.8.8',
+    version='0.8.10',
     description='Call Matlab from Python (requires Matlab)',
     author='Bastian Bechtold',
     author_email='ba...@bastibe.de',
@@ -38,7 +38,9 @@
         'Programming Language :: Python :: 3.7',
     ],
     license='BSD 3-clause',
-    install_requires=['numpy', 'pyzmq', 'msgpack-python'],
+    install_requires=['numpy', 'pyzmq', 'msgpack'],
+    setup_requires=['pytest-runner'],
+    tests_require=['pytest', 'scipy'],
     python_requires='>=3.4',
     requires=['matlab', 'libzmq'],
     long_description=open('README.rst').read(),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/transplant/transplant_master.py 
new/Transplant-0.8.10/transplant/transplant_master.py
--- old/Transplant-0.8.8/transplant/transplant_master.py        2018-11-29 
14:44:21.000000000 +0100
+++ new/Transplant-0.8.10/transplant/transplant_master.py       2019-07-01 
16:26:19.000000000 +0200
@@ -94,6 +94,9 @@
 
     def _del_proxy(self, handle):
         """Tell the remote to forget about this proxy object."""
+        # ignore if remote already shut down:
+        if self.socket.closed:
+            return
         self.send_message('del_proxy', handle=handle)
 
     def __getattr__(self, name):
@@ -153,7 +156,7 @@
 
         self._wait_socket(zmq.POLLIN)
         if self.msgformat == 'msgpack':
-            response = msgpack.unpackb(self.socket.recv(flags=zmq.NOBLOCK), 
encoding='utf-8')
+            response = msgpack.unpackb(self.socket.recv(flags=zmq.NOBLOCK), 
raw=False, max_bin_len=2**31-1)
         else:
             response = self.socket.recv_json(flags=zmq.NOBLOCK)
 
@@ -277,7 +280,7 @@
         if isinstance(data, str):
             out = np.fromstring(base64.b64decode(data.encode()), dtype)
         else:
-            out = np.fromstring(data, dtype)
+            out = np.frombuffer(data, dtype)
         shape = [int(n) for n in shape]; # numpy requires integer indices
         return out.reshape(*shape)
 
@@ -317,7 +320,8 @@
         row, col, value = (self._decode_matrix(d).ravel()
                            if d is not None else []
                            for d in data[2:])
-        return scipy.sparse.coo_matrix((value, (row, col)), shape=data[1])
+        shape = (int(d) for d in data[1]) # convert shape to int
+        return scipy.sparse.coo_matrix((value, (row, col)), shape=shape)
 
     def _encode_proxy(self, data):
         """Encode a ProxyObject as a special list.
@@ -583,7 +587,7 @@
             self.process.send_signal(SIGINT)
             # receive outstanding message to get ZMQ back in the right state
             if self.msgformat == 'msgpack':
-                response = msgpack.unpackb(self.socket.recv(), 
encoding='utf-8')
+                response = msgpack.unpackb(self.socket.recv(), raw=False, 
max_bin_len=2**31-1)
             else:
                 response = self.socket.recv_json()
             # continue with the exception
@@ -715,7 +719,7 @@
         except:
             return []
 
-        search_dirs = re.compile('SEARCH_DIR\(([^)]*)\)').findall(output)
+        search_dirs = re.compile(r'SEARCH_DIR\(([^)]*)\)').findall(output)
         return [d.strip(' "') for d in search_dirs]
 
     def _read_ldsoconf(self, file):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Transplant-0.8.8/transplant/transplant_remote.m 
new/Transplant-0.8.10/transplant/transplant_remote.m
--- old/Transplant-0.8.8/transplant/transplant_remote.m 2017-08-09 
10:32:20.000000000 +0200
+++ new/Transplant-0.8.10/transplant/transplant_remote.m        2019-04-25 
13:52:29.000000000 +0200
@@ -34,7 +34,7 @@
     % since the onCleanup prevents direct exit, quit here after revival before
     % a new onCleanup is created:
     if should_die
-        quit('force')
+        return
     end
 
     try


Reply via email to