mpmath
mpmath copied to clipboard
Metaclassing causes different classes for custom contexts
import mpmath
from mpmath import MPContext
mp = mpmath.mp
mp0 = MPContext()
print(isinstance(mp.matrix([[1, 2], [3, 4]]), mp.matrix))
print(isinstance(mp.matrix([[1, 2], [3, 4]]), mp0.matrix))
print(isinstance(mp0.matrix([[1, 2], [3, 4]]), mp.matrix))
print(isinstance(mp0.matrix([[1, 2], [3, 4]]), mp0.matrix))
print(isinstance(mp.mpf(1), mp.mpf))
print(isinstance(mp.mpf(1), mp0.mpf))
print(isinstance(mp0.mpf(1), mp.mpf))
print(isinstance(mp0.mpf(1), mp0.mpf))
print(isinstance(mp.mpq(1), mp.mpq))
print(isinstance(mp.mpq(1), mp0.mpq))
print(isinstance(mp0.mpq(1), mp.mpq))
print(isinstance(mp0.mpq(1), mp0.mpq))
I see mp contexts are creating different classes on fly, but only mpq is hardcoded to a single class.
How should I check if a class is generally an instance of mpf or matrix across every contexts? Were those metaclsses necessary for mpf and matrix?