1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
import re
import numpy as np
from asdf import util
from asdf.extension import Converter
_REPLACEMENTS = {
re.compile("i(?!nf)"): "j",
re.compile("I(?!NF)"): "J",
}
class ComplexConverter(Converter):
tags = ["tag:stsci.edu:asdf/core/complex-1.0.0"]
types = [*list(util._iter_subclasses(np.complexfloating)), complex]
def to_yaml_tree(self, obj, tag, ctx):
return str(obj)
def from_yaml_tree(self, node, tag, ctx):
for pattern, replacement in _REPLACEMENTS.items():
node = pattern.sub(replacement, node)
return complex(node)
|