lsst.daf.base
g8ea07a8fe4+8f00719e4e
Toggle main menu visibility
Loading...
Searching...
No Matches
python
lsst
daf
base
yaml.py
Go to the documentation of this file.
1
# This file is part of daf_base
2
#
3
# Developed for the LSST Data Management System.
4
# This product includes software developed by the LSST Project
5
# (http://www.lsst.org/).
6
# See the COPYRIGHT file at the top-level directory of this distribution
7
# for details of code ownership.
8
#
9
# This program is free software: you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation, either version 3 of the License, or
12
# (at your option) any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program. If not, see <http://www.gnu.org/licenses/>.
21
22
"""This module defines YAML I/O for key lsst.daf.base classes."""
23
24
# If yaml package is not installed there is no reason to fail everywhere
25
try
:
26
import
yaml
27
except
ImportError:
28
yaml =
None
29
30
from
.dateTime
import
DateTime
31
from
.propertyContainer
import
PropertyList, getPropertyListState, setPropertyListState, \
32
getPropertySetState, setPropertySetState, PropertySet
33
34
# For YAML >= 5.1 need a different Loader for the constructor
35
loaderList = []
36
if
yaml:
37
loaderList = [yaml.Loader, yaml.CLoader]
38
try
:
39
loaderList.append(yaml.FullLoader)
40
except
AttributeError:
41
pass
42
try
:
43
loaderList.append(yaml.UnsafeLoader)
44
except
AttributeError:
45
pass
46
try
:
47
loaderList.append(yaml.SafeLoader)
48
except
AttributeError:
49
pass
50
51
52
# YAML representers for key lsst.daf.base classes
53
54
55
def
dt_representer
(dumper, data):
56
"""Represent an lsst.daf.base.DateTime (as ISO8601-formatted string in TAI)
57
"""
58
return
dumper.represent_scalar(
'lsst.daf.base.DateTime'
,
59
data.toString(DateTime.TAI))
60
61
62
if
yaml:
63
yaml.add_representer(DateTime, dt_representer)
64
65
66
def
pl_representer
(dumper, data):
67
"""Represent an lsst.daf.base.PropertyList as an ordered sequence of
68
name/type/value/comment lists)
69
"""
70
# Turn the tuples into lists for cleaner representation in yaml
71
result =
getPropertyListState
(data, asLists=
True
)
72
return
dumper.represent_sequence(
'lsst.daf.base.PropertyList'
, result,
73
flow_style=
None
)
74
75
76
if
yaml:
77
yaml.add_representer(PropertyList, pl_representer)
78
79
80
def
ps_representer
(dumper, data):
81
"""Represent an lsst.daf.base.PropertySet as a mapping from names to
82
type/value pairs.
83
"""
84
# Turn the tuples into lists for cleaner representation in yaml
85
result =
getPropertySetState
(data, asLists=
True
)
86
return
dumper.represent_sequence(
'lsst.daf.base.PropertySet'
, result,
87
flow_style=
None
)
88
89
90
if
yaml:
91
yaml.add_representer(PropertySet, ps_representer)
92
93
94
95
# YAML constructors for key lsst.daf.base classes
96
97
98
def
dt_constructor
(loader, node):
99
"""Construct an lsst.daf.base.DateTime from an ISO8601-formatted string in
100
TAI
101
"""
102
dt = loader.construct_scalar(node)
103
return
DateTime
(str(dt), DateTime.TAI)
104
105
106
def
pl_constructor
(loader, node):
107
"""Construct an lsst.daf.base.PropertyList from a YAML pickle-like
108
structure.
109
"""
110
pl =
PropertyList
()
111
yield
pl
112
state = loader.construct_sequence(node, deep=
True
)
113
setPropertyListState
(pl, state)
114
115
116
def
ps_constructor
(loader, node):
117
"""Construct an lsst.daf.base.PropertyList from a YAML pickle-like
118
structure.
119
"""
120
ps =
PropertySet
()
121
yield
ps
122
state = loader.construct_sequence(node, deep=
True
)
123
setPropertySetState
(ps, state)
124
125
126
if
yaml:
127
for
loader
in
loaderList:
128
yaml.add_constructor(
'lsst.daf.base.PropertyList'
, pl_constructor, Loader=loader)
129
yaml.add_constructor(
'lsst.daf.base.PropertySet'
, ps_constructor, Loader=loader)
130
yaml.add_constructor(
'lsst.daf.base.DateTime'
, dt_constructor, Loader=loader)
lsst::daf::base.dateTime.dateTimeContinued.DateTime
Definition
dateTimeContinued.py:31
lsst::daf::base.propertyContainer.propertyContainerContinued.PropertyList
Definition
propertyContainerContinued.py:849
lsst::daf::base.propertyContainer.propertyContainerContinued.PropertySet
Definition
propertyContainerContinued.py:445
lsst::daf::base.propertyContainer.propertyContainerContinued.setPropertySetState
setPropertySetState(container, state)
Definition
propertyContainerContinued.py:129
lsst::daf::base.propertyContainer.propertyContainerContinued.getPropertyListState
getPropertyListState(container, asLists=False)
Definition
propertyContainerContinued.py:92
lsst::daf::base.propertyContainer.propertyContainerContinued.setPropertyListState
setPropertyListState(container, state)
Definition
propertyContainerContinued.py:147
lsst::daf::base.propertyContainer.propertyContainerContinued.getPropertySetState
getPropertySetState(container, asLists=False)
Definition
propertyContainerContinued.py:57
lsst::daf::base.yaml.pl_representer
pl_representer(dumper, data)
Definition
yaml.py:66
lsst::daf::base.yaml.ps_representer
ps_representer(dumper, data)
Definition
yaml.py:80
lsst::daf::base.yaml.ps_constructor
ps_constructor
Definition
yaml.py:129
lsst::daf::base.yaml.pl_constructor
pl_constructor
Definition
yaml.py:128
lsst::daf::base.yaml.dt_representer
dt_representer(dumper, data)
Definition
yaml.py:55
lsst::daf::base.yaml.dt_constructor
dt_constructor
Definition
yaml.py:130
Generated on
for lsst.daf.base by
1.17.0