Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def represent_ordereddict(dumper, data):
return represent_ordered_mapping(dumper, YAML_OMAP_TAG, data)
AsdfLoader.add_constructor(YAML_OMAP_TAG, ordereddict_constructor)
AsdfDumper.add_representer(OrderedDict, represent_ordereddict)
# ----------------------------------------------------------------------
# Handle numpy scalars
for scalar_type in util.iter_subclasses(np.floating):
AsdfDumper.add_representer(scalar_type, AsdfDumper.represent_float)
for scalar_type in util.iter_subclasses(np.integer):
AsdfDumper.add_representer(scalar_type, AsdfDumper.represent_int)
def custom_tree_to_tagged_tree(tree, ctx):
"""
Convert a tree, possibly containing custom data types that aren't
directly representable in YAML, to a tree of basic data types,
annotated with tags.
"""
def walker(node):
tag = ctx.type_index.from_custom_type(type(node), ctx.version_string)
if tag is not None:
return tag.to_tree_tagged(node, ctx)
return node
return treeutil.walk_and_modify(tree, walker)
# Licensed under a 3-clause BSD style license - see LICENSE.rst
# -*- coding: utf-8 -*-
import numpy as np
from ...types import AsdfType
from ... import util
class ComplexType(AsdfType):
name = 'core/complex'
types = list(util.iter_subclasses(np.complexfloating)) + [complex]
@classmethod
def to_tree(cls, node, ctx):
return str(node)
@classmethod
def from_tree(cls, tree, ctx):
tree = tree.replace(
'inf', 'INF').replace(
'i', 'j').replace(
'INF', 'inf').replace(
'I', 'J')
return complex(tree)
def _add_subclasses(self, index, typ, asdftype):
for subclass in util.iter_subclasses(typ):
# Do not overwrite the tag type for an existing subclass if the
# new tag serializes a class that is higher in the type
# hierarchy than the existing subclass.
if subclass in self._class_by_subclass:
if issubclass(self._class_by_subclass[subclass], typ):
# Allow for cases where a subclass tag is being
# overridden by a tag from another extension.
if (self._extension_by_cls[subclass] ==
index._extension_by_type[asdftype]):
continue
self._class_by_subclass[subclass] = typ
self._type_by_subclasses[subclass] = asdftype
self._extension_by_cls[subclass] = index._extension_by_type[asdftype]
"asdftool",
description="Commandline utilities for managing ASDF files.")
parser.add_argument(
"--verbose", "-v", action="store_true",
help="Increase verbosity")
subparsers = parser.add_subparsers(
title='subcommands',
description='valid subcommands')
help_parser = subparsers.add_parser(
str("help"), help="Display usage information")
help_parser.set_defaults(func=help)
commands = dict((x.__name__, x) for x in util.iter_subclasses(Command))
for command in command_order:
commands[str(command)].setup_arguments(subparsers)
del commands[command]
for name, command in sorted(commands.items()):
command.setup_arguments(subparsers)
return parser, subparsers
def add_type(asdftype):
self._type_by_cls[asdftype] = asdftype
for typ in asdftype.types:
self._type_by_cls[typ] = asdftype
for typ2 in util.iter_subclasses(typ):
self._type_by_subclasses[typ2] = asdftype
if asdftype.handle_dynamic_subclasses:
for typ in asdftype.types:
self._types_with_dynamic_subclasses[typ] = asdftype