I tried to use ctypes pythonapi to extract PyCapsule_New objects using 
PyCapsule_GetPointer. But got erorr : 
              *ArgumentError: argument 1: TypeError: Don't know how to 
convert parameter 1*
Attaching file

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Also, please tell me about the implementations for accessing opaque C 
objects I will go through it
On Tuesday, January 30, 2024 at 8:58:43 PM UTC+5:30 Dima Pasechnik wrote:

> IMHO opaque C objects may be accessed from Python, it just needs an 
> implementation 
>
>
> On 29 January 2024 22:51:48 GMT, Nils Bruin <nbr...@sfu.ca> wrote:
>
>> By the looks of it, the routines you'd be using would be coming from 
>> umfpack. cvxopt has chosen to package the details of LU factorization in 
>> opaque objects and instead offer routines to use these decompositions (via 
>> taking the opaque object as input). In scipy, umfpack is also used: 
>> https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.spsolve.html#scipy.sparse.linalg.spsolve
>>  
>> . Scipy also offers LU decomposition routines: 
>> https://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.linalg.splu.html#scipy.sparse.linalg.splu
>>  
>> but that uses a different library. It looks suspicious that two packages 
>> offer umfpack for solving sparse problems, but don't give explicit access 
>> to LU factorizations produced in the process, when using UMFPACK. Perhaps 
>> UMFPACK isn't suited to provide the explicit factorization (but it may be 
>> very good at using its internally computed data).
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/b01b5f6c-bed7-4cc6-aa4d-37662587673cn%40googlegroups.com.
sage: a = cvxopt.spmatrix([int(1),int(1),int(1)], [int(0),int(1),int(2)], 
[int(0),int(1),int(2)], (3,4))
sage: print(a)
[ 1.00e+00     0         0         0    ]
[    0      1.00e+00     0         0    ]
[    0         0      1.00e+00     0    ]

sage: b = cvxopt.umfpack.symbolic(a)
sage: c = cvxopt.umfpack.numeric(a, b)
sage: type(c)
<class 'PyCapsule'>
sage: pointer = ctypes.pythonapi.PyCapsule_GetPointer(c)
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)
Cell In[40], line 1
----> 1 pointer = ctypes.pythonapi.PyCapsule_GetPointer(c)

ArgumentError: argument 1: TypeError: Don't know how to convert parameter 1
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: lib_path_so = cvxopt.umfpack.__file__
sage: lib = ctypes.CDLL(lib_path_so)
sage: type(lib)
<class 'ctypes.CDLL'>
sage: lib
<CDLL 
'/home/shay/sage/local/var/lib/sage/venv-python3.10/lib/python3.10/site-packages/cvxopt/umfpack.cpython-310-x86_64-linux-gnu.so',
 handle 555e561ab2d0 at 0x7f5a455c6320>
sage: cvxopt.umfpack.__dir__()
['__name__',
 '__doc__',
 '__package__',
 '__loader__',
 '__spec__',
 'linsolve',
 'symbolic',
 'numeric',
 'solve',
 '__file__']
sage: lib.__dir__()
['_name',
 '_FuncPtr',
 '_handle',
 '__module__',
 '__doc__',
 '_func_flags_',
 '_func_restype_',
 '__init__',
 '__repr__',
 '__getattr__',
 '__getitem__',
 '__dict__',
 '__weakref__',
 '__new__',
 '__hash__',
 '__str__',
 '__getattribute__',
 '__setattr__',
 '__delattr__',
 '__lt__',
 '__le__',
 '__eq__',
 '__ne__',
 '__gt__',
 '__ge__',
 '__reduce_ex__',
 '__reduce__',
 '__subclasshook__',
 '__init_subclass__',
 '__format__',
 '__sizeof__',
 '__dir__',
 '__class__']
sage: 
sage: 
sage: 
sage: lib.numeric.argtypes
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[47], line 1
----> 1 lib.numeric.argtypes

File /usr/lib/python3.10/ctypes/__init__.py:387, in CDLL.__getattr__(self, name)
    385 if name.startswith('__') and name.endswith('__'):
    386     raise AttributeError(name)
--> 387 func = self.__getitem__(name)
    388 setattr(self, name, func)
    389 return func

File /usr/lib/python3.10/ctypes/__init__.py:392, in CDLL.__getitem__(self, 
name_or_ordinal)
    391 def __getitem__(self, name_or_ordinal):
--> 392     func = self._FuncPtr((name_or_ordinal, self))
    393     if not isinstance(name_or_ordinal, int):
    394         func.__name__ = name_or_ordinal

AttributeError: 
/home/shay/sage/local/var/lib/sage/venv-python3.10/lib/python3.10/site-packages/cvxopt/umfpack.cpython-310-x86_64-linux-gnu.so:
 undefined symbol: numeric
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: 
sage: pointer = ctypes.pythonapi.PyCapsule_GetPointer(c)
---------------------------------------------------------------------------
ArgumentError                             Traceback (most recent call last)
Cell In[48], line 1
----> 1 pointer = ctypes.pythonapi.PyCapsule_GetPointer(c)

ArgumentError: argument 1: TypeError: Don't know how to convert parameter 1
sage: 

Reply via email to