Skip to content

Metaclassing causes different classes for custom contexts #532

@sylee957

Description

@sylee957
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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionmark support request

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions