File: complex.py

package info (click to toggle)
python-asdf 4.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 7,032 kB
  • sloc: python: 24,068; makefile: 123
file content (25 lines) | stat: -rw-r--r-- 591 bytes parent folder | download | duplicates (3)
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)