LSST Applications g04a91732dc+146a938ab0,g07dc498a13+80b84b0d75,g0fba68d861+4c4f3dcb5c,g1409bbee79+80b84b0d75,g1a7e361dbc+80b84b0d75,g1fd858c14a+f6e422e056,g20f46db602+333b6c0f32,g35bb328faa+fcb1d3bbc8,g42c1b31a95+a1301e4c20,g4d2262a081+f1facf12e5,g4d39ba7253+9b833be27e,g4e0f332c67+5d362be553,g53246c7159+fcb1d3bbc8,g60b5630c4e+9b833be27e,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g7b71ed6315+fcb1d3bbc8,g8852436030+790117df0f,g89139ef638+80b84b0d75,g8d6b6b353c+9b833be27e,g9125e01d80+fcb1d3bbc8,g989de1cb63+80b84b0d75,g9f33ca652e+9c6b68d7f3,ga9baa6287d+9b833be27e,gaaedd4e678+80b84b0d75,gabe3b4be73+1e0a283bba,gb1101e3267+9f3571abad,gb58c049af0+f03b321e39,gb90eeb9370+691e4ab549,gc741bbaa4f+2bcd3860df,gcf25f946ba+790117df0f,gd315a588df+5b65d88fe4,gd6cbbdb0b4+c8606af20c,gd9a9a58781+fcb1d3bbc8,gde0f65d7ad+ee6a3faa19,ge278dab8ac+932305ba37,ge82c20c137+76d20ab76d,gee8db133a9+2a6ae0040b,w.2025.10
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst::daf::base Namespace Reference

Namespaces

namespace  dateTime
 
namespace  propertyContainer
 
namespace  version
 
namespace  yaml
 

Classes

class  DateTime
 Class for handling dates/times, including MJD, UTC, and TAI. More...
 
class  Persistable
 Base class for all persistable classes. More...
 
class  PropertyList
 Class for storing ordered metadata with comments. More...
 
class  PropertySet
 Class for storing generic metadata. More...
 
class  WrapperCollection
 A helper class for subdividing pybind11 module across multiple translation units (i.e. More...
 

Functions

std::ostreamoperator<< (std::ostream &os, PropertySet const &propertySet)
 
template<>
void PropertySet::add< std::shared_ptr< PropertySet > > (std::string const &name, std::shared_ptr< PropertySet > const &value)
 
template<>
void PropertySet::add< std::shared_ptr< PropertySet > > (std::string const &name, std::vector< std::shared_ptr< PropertySet > > const &value)
 
void wrapPersistable (WrapperCollection &wrappers)
 
void wrapDateTime (WrapperCollection &wrappers)
 
void wrapPropertyList (WrapperCollection &wrappers)
 
void wrapPropertySet (WrapperCollection &wrappers)
 
 PYBIND11_MODULE (_dafBaseLib, mod)
 

Function Documentation

◆ operator<<()

std::ostream & lsst::daf::base::operator<< ( std::ostream & os,
PropertySet const & propertySet )

◆ PropertySet::add< std::shared_ptr< PropertySet > >() [1/2]

template<>
void lsst::daf::base::PropertySet::add< std::shared_ptr< PropertySet > > ( std::string const & name,
std::shared_ptr< PropertySet > const & value )

◆ PropertySet::add< std::shared_ptr< PropertySet > >() [2/2]

◆ PYBIND11_MODULE()

lsst::daf::base::PYBIND11_MODULE ( _dafBaseLib ,
mod  )

Definition at line 37 of file _dafBaseLib.cc.

37 {
38 lsst::cpputils::python::WrapperCollection wrappers(mod, "lsst.daf.base");
39 wrapPersistable(wrappers);
40 wrapDateTime(wrappers);
41 wrapPropertySet(wrappers);
42 wrapPropertyList(wrappers);
43 wrappers.finish();
44}
A helper class for subdividing pybind11 module across multiple translation units (i....
Definition python.h:242
void wrapPropertySet(WrapperCollection &wrappers)
void wrapPropertyList(WrapperCollection &wrappers)
void wrapPersistable(WrapperCollection &wrappers)
void wrapDateTime(WrapperCollection &wrappers)
Definition dateTime.cc:12

◆ wrapDateTime()

void lsst::daf::base::wrapDateTime ( WrapperCollection & wrappers)

Definition at line 12 of file dateTime.cc.

12 {
13 auto clsDef = wrappers.wrapType(py::class_<DateTime>(wrappers.module, "DateTime"), [](auto &mod, auto &cls) {
14 cls.def(py::init<>());
15 cls.def_readonly_static("invalid_nsecs", &DateTime::invalid_nsecs);
16 cls.def(py::init<long long, DateTime::Timescale>(), "nsecs"_a, "scale"_a = DateTime::Timescale::TAI);
17 cls.def(py::init<double, DateTime::DateSystem, DateTime::Timescale>(), "date"_a,
18 "system"_a = DateTime::DateSystem::MJD, "scale"_a = DateTime::Timescale::TAI);
19 cls.def(py::init<int, int, int, int, int, int, DateTime::Timescale>());
20 cls.def(py::init<const std::string &, DateTime::Timescale>());
21 cls.def("nsecs", &DateTime::nsecs, "scale"_a = DateTime::Timescale::TAI);
22 cls.def("get", &DateTime::get, "system"_a = DateTime::DateSystem::MJD,
23 "scale"_a = DateTime::Timescale::TAI);
24 cls.def("toString", &DateTime::toString);
25 cls.def("gmtime", &DateTime::gmtime);
26 cls.def("timespec", &DateTime::timespec);
27 cls.def("timeval", &DateTime::timeval);
28 cls.def("isValid", &DateTime::isValid);
29 cls.def_static("now", &DateTime::now);
30 cls.def_static("initializeLeapSeconds", &DateTime::initializeLeapSeconds);
31 cls.def("__eq__", [](DateTime const &self, DateTime const &other) { return self == other; },
32 py::is_operator());
33 });
34
35 wrappers.wrapType(py::enum_<DateTime::Timescale>(clsDef, "Timescale"), [](auto &mod, auto &enm) {
36 enm.value("TAI", DateTime::Timescale::TAI);
37 enm.value("UTC", DateTime::Timescale::UTC);
38 enm.value("TT", DateTime::Timescale::TT);
39 enm.export_values();
40 });
41
42 wrappers.wrapType(py::enum_<DateTime::DateSystem>(clsDef, "DateSystem"), [](auto &mod, auto &enm) {
43 enm.value("JD", DateTime::DateSystem::JD);
44 enm.value("MJD", DateTime::DateSystem::MJD);
45 enm.value("EPOCH", DateTime::DateSystem::EPOCH);
46 enm.export_values();
47 });
48
49}
PyType wrapType(PyType cls, ClassWrapperCallback function, bool setModuleName=true)
Add a type (class or enum) wrapper, deferring method and other attribute definitions until finish() i...
Definition python.h:391
pybind11::module module
The module object passed to the PYBIND11_MODULE block that contains this WrapperCollection.
Definition python.h:448

◆ wrapPersistable()

void lsst::daf::base::wrapPersistable ( WrapperCollection & wrappers)

Definition at line 12 of file persistable.cc.

12 {
13 using PyPersistable = py::class_<Persistable, std::shared_ptr<Persistable>>;
14 wrappers.wrapType(PyPersistable(wrappers.module, "Persistable"), [] (auto &mod, auto &cls) {
15 });
16}

◆ wrapPropertyList()

void lsst::daf::base::wrapPropertyList ( WrapperCollection & wrappers)

Definition at line 61 of file propertyList.cc.

61 {
62 using PyPropertyList = py::class_<PropertyList, std::shared_ptr<PropertyList>, PropertySet>;
63 wrappers.wrapType(PyPropertyList(wrappers.module, "PropertyList"), [](auto &mod, auto &cls) {
64 cls.def(py::init<>());
65
66 cls.def("getComment", &PropertyList::getComment);
67 cls.def("getOrderedNames", &PropertyList::getOrderedNames);
68 cls.def("deepCopy",
69 [](PropertyList const &self) { return std::static_pointer_cast<PropertySet>(self.deepCopy()); });
70 declareAccessors<bool>(cls, "Bool");
71 declareAccessors<short>(cls, "Short");
72 declareAccessors<int>(cls, "Int");
73 declareAccessors<long>(cls, "Long");
74 declareAccessors<long long>(cls, "LongLong");
75 declareAccessors<float>(cls, "Float");
76 declareAccessors<double>(cls, "Double");
77 declareAccessors<std::nullptr_t>(cls, "Undef");
78 declareAccessors<std::string>(cls, "String");
79 declareAccessors<DateTime>(cls, "DateTime");
80
81 cls.def("setPropertySet",
82 (void (PropertyList::*)(std::string const &, PropertySet::Ptr const &)) &PropertyList::set);
83 });
84}
Class for storing ordered metadata with comments.
void set(std::string const &name, T const &value)
Replace all values for a property name (possibly hierarchical) with a new scalar value.
Class for storing generic metadata.
Definition PropertySet.h:67
std::shared_ptr< PropertySet > Ptr
Definition PropertySet.h:70

◆ wrapPropertySet()

void lsst::daf::base::wrapPropertySet ( WrapperCollection & wrappers)

Definition at line 51 of file propertySet.cc.

51 {
52 wrappers.wrapType(py::class_<std::type_info>(wrappers.module, "TypeInfo"), [](auto &mod, auto &cls) {
53 cls.def("__eq__",
54 [](std::type_info const &self, std::type_info const &other) { return self == other; });
55 cls.def("__ne__",
56 [](std::type_info const &self, std::type_info const &other) { return self != other; });
57 cls.def("name", &std::type_info::name);
58 cls.def("__hash__", &std::type_info::hash_code);
59 });
60
61 using PyPropertySet = py::class_<PropertySet, std::shared_ptr<PropertySet>>;
62 wrappers.wrapType(PyPropertySet(wrappers.module, "PropertySet"), [](auto &mod, auto &cls) {
63 cls.def(py::init<bool>(), "flat"_a = false);
64
65 cls.def("deepCopy", &PropertySet::deepCopy);
66 cls.def("nameCount", &PropertySet::nameCount, "topLevelOnly"_a = true);
67 cls.def("names", &PropertySet::names, "topLevelOnly"_a = true);
68 cls.def("paramNames", &PropertySet::paramNames, "topLevelOnly"_a = true);
69 cls.def("propertySetNames", &PropertySet::propertySetNames, "topLevelOnly"_a = true);
70 cls.def("exists", &PropertySet::exists);
71 cls.def("isArray", &PropertySet::isArray);
72 cls.def("isUndefined", &PropertySet::isUndefined);
73 cls.def("isPropertySetPtr", &PropertySet::isPropertySetPtr);
74 cls.def("valueCount",
75 py::overload_cast<>(&PropertySet::valueCount, py::const_));
76 cls.def("valueCount",
77 py::overload_cast<std::string const &>(&PropertySet::valueCount,
78 py::const_));
79 cls.def("typeOf", &PropertySet::typeOf, py::return_value_policy::reference);
80 cls.def("toString", &PropertySet::toString, "topLevelOnly"_a = false, "indent"_a = "");
81 cls.def(
82 "copy",
83 py::overload_cast<std::string const &, PropertySet const &, std::string const &, bool>(
85 ),
86 "dest"_a, "source"_a, "name"_a, "asScalar"_a = false
87 );
88 cls.def("combine", py::overload_cast<PropertySet const &>(&PropertySet::combine));
89 cls.def("remove", &PropertySet::remove);
90 cls.def("getAsBool", &PropertySet::getAsBool);
91 cls.def("getAsInt", &PropertySet::getAsInt);
92 cls.def("getAsInt64", &PropertySet::getAsInt64);
93 cls.def("getAsUInt64", &PropertySet::getAsUInt64);
94 cls.def("getAsDouble", &PropertySet::getAsDouble);
95 cls.def("getAsString", &PropertySet::getAsString);
96 cls.def("getAsPropertySetPtr", &PropertySet::getAsPropertySetPtr);
97 cls.def("getAsPersistablePtr", &PropertySet::getAsPersistablePtr);
98
99 cpputils::python::addOutputOp(cls, "__repr__");
100 cpputils::python::addOutputOp(cls, "__str__");
101
102 declareAccessors<bool>(cls, "Bool");
103 declareAccessors<short>(cls, "Short");
104 declareAccessors<int>(cls, "Int");
105 declareAccessors<long>(cls, "Long");
106 declareAccessors<long long>(cls, "LongLong");
107 declareAccessors<unsigned long long>(cls, "UnsignedLongLong");
108 declareAccessors<float>(cls, "Float");
109 declareAccessors<double>(cls, "Double");
110 declareAccessors<std::nullptr_t>(cls, "Undef");
111 declareAccessors<std::string>(cls, "String");
112 declareAccessors<DateTime>(cls, "DateTime");
113 declareAccessors<std::shared_ptr<PropertySet>>(cls, "PropertySet");
114 });
115}
std::string getAsString(std::string const &name) const
Get the last value for a string property name (possibly hierarchical).
size_t nameCount(bool topLevelOnly=true) const
Get the number of names in the PropertySet, optionally including those in subproperties.
int getAsInt(std::string const &name) const
Get the last value for a bool/char/short/int property name (possibly hierarchical).
virtual void remove(std::string const &name)
Remove all values for a property name (possibly hierarchical).
bool isArray(std::string const &name) const
Determine if a name (possibly hierarchical) has multiple values.
int64_t getAsInt64(std::string const &name) const
Get the last value for a bool/char/short/int/int64_t property name (possibly hierarchical).
bool isUndefined(std::string const &name) const
Determine if a name (possibly hierarchical) has a defined value.
bool exists(std::string const &name) const
Determine if a name (possibly hierarchical) exists.
std::vector< std::string > names(bool topLevelOnly=true) const
Get the names in the PropertySet, optionally including those in subproperties.
size_t valueCount() const
Get the number of values in the entire PropertySet, counting each element of a vector.
bool isPropertySetPtr(std::string const &name) const
Determine if a name (possibly hierarchical) is a subproperty.
virtual void copy(std::string const &dest, PropertySet const &source, std::string const &name, bool asScalar=false)
Replace a single value vector in the destination with one from the source.
virtual void combine(PropertySet const &source)
Append all value vectors from the source to their corresponding properties.
std::shared_ptr< PropertySet > getAsPropertySetPtr(std::string const &name) const
Get the last value for a subproperty name (possibly hierarchical).
std::type_info const & typeOf(std::string const &name) const
Get the type of values for a property name (possibly hierarchical).
double getAsDouble(std::string const &name) const
Get the last value for any arithmetic property name (possibly hierarchical).
Persistable::Ptr getAsPersistablePtr(std::string const &name) const
Get the last value for a Persistable name (possibly hierarchical).
uint64_t getAsUInt64(std::string const &name) const
Get the last value for an bool/char/short/int/int64_t property name (possibly hierarchical).
virtual std::shared_ptr< PropertySet > deepCopy() const
Make a deep copy of the PropertySet and all of its contents.
std::vector< std::string > propertySetNames(bool topLevelOnly=true) const
A variant of names that only returns the names of subproperties.
virtual std::string toString(bool topLevelOnly=false, std::string const &indent="") const
Generate a string representation of the PropertySet.
std::vector< std::string > paramNames(bool topLevelOnly=true) const
A variant of names that excludes the names of subproperties.
bool getAsBool(std::string const &name) const
Get the last value for a bool property name (possibly hierarchical).
T hash_code(T... args)
T name(T... args)
void addOutputOp(PyClass &cls, std::string const &method)
Add __str__ or __repr__ method implemented by operator<<.
Definition python.h:87