Mercurial > pytave
annotate @pyobject/cell.m @ 302:de98627cf8ae
Minor fixes for failing doctests
* @pyobject/cell.m: Fix doctest failure.
* @pyobject/methods.m: More robust doctest.
author | Colin Macdonald <cbm@m.fsf.org> |
---|---|
date | Wed, 03 Aug 2016 21:11:14 -0700 |
parents | df1bddece9d5 |
children | 3afd890fff6d |
rev | line source |
---|---|
293
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
1 ## Copyright (C) 2016 Colin B. Macdonald |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
2 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
3 ## This file is part of Pytave |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
4 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
5 ## Pytave is free software; you can redistribute it and/or modify |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
6 ## it under the terms of the GNU General Public License as published |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
7 ## by the Free Software Foundation; either version 3 of the License, |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
8 ## or (at your option) any later version. |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
9 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
10 ## This software is distributed in the hope that it will be useful, |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
11 ## but WITHOUT ANY WARRANTY; without even the implied warranty |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
12 ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
13 ## the GNU General Public License for more details. |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
14 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
15 ## You should have received a copy of the GNU General Public |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
16 ## License along with this software; see the file COPYING. |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
17 ## If not, see <http://www.gnu.org/licenses/>. |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
18 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
19 ## -*- texinfo -*- |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
20 ## @documentencoding UTF-8 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
21 ## @defmethod @@pyobject cell (@var{x}) |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
22 ## Convert an iterable Python object to a cell array. |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
23 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
24 ## For example, by default Python lists are not automatically |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
25 ## converted into native Octave objects: |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
26 ## @example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
27 ## @group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
28 ## L = pyeval ("[10, 20, 'hello']") |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
29 ## @result{} L = [pyobject ...] |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
30 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
31 ## [10, 20, 'hello'] |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
32 ## @end group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
33 ## @end example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
34 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
35 ## However, we can convert the list to a cell array: |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
36 ## @example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
37 ## @group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
38 ## C = cell (L) |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
39 ## @result{} C = |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
40 ## @{ |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
41 ## [1,1] = 10 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
42 ## [1,2] = 20 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
43 ## [1,3] = hello |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
44 ## @} |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
45 ## @end group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
46 ## @end example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
47 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
48 ## The conversion is not recursive, in the following sense: |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
49 ## @example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
50 ## @group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
51 ## L = pyeval ("[10, 20, [33, 44], 50]"); |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
52 ## C = cell (L) |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
53 ## @result{} C = |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
54 ## @{ |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
55 ## [1,1] = 10 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
56 ## [1,2] = 20 |
302
de98627cf8ae
Minor fixes for failing doctests
Colin Macdonald <cbm@m.fsf.org>
parents:
298
diff
changeset
|
57 ## = [pyobject ...] |
293
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
58 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
59 ## [33, 44] |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
60 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
61 ## [1,4] = 50 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
62 ## @} |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
63 ## @end group |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
64 ## @end example |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
65 ## |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
66 ## @seealso{cell2mat} |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
67 ## @end defmethod |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
68 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
69 |
298
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
70 function c = cell (x) |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
71 ## FIXME: subsref should take care of this case |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
72 if (length (x) == 0) |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
73 c = cell (0, 1); |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
74 return |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
75 endif |
df1bddece9d5
Use subsref in "cell" method for casting to cell
Colin Macdonald <cbm@m.fsf.org>
parents:
293
diff
changeset
|
76 c = subsref (x, struct ("type", "{}", "subs", {{":"}})); |
293
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
77 endfunction |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
78 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
79 |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
80 %!test |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
81 %! L = pyeval ("(1, 2, 3)"); |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
82 %! C = cell (L); |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
83 %! assert (iscell (C)) |
3f74eeb0a5da
pyobject: add method for converting pyobject to cell array
Colin Macdonald <cbm@m.fsf.org>
parents:
diff
changeset
|
84 %! assert (C, {1, 2, 3}) |