LSSTApplications  19.0.0-10-g4a5fae6+21,20.0.0,20.0.0+1,20.0.0+2,20.0.0+3,20.0.0+6,20.0.0+7,20.0.0+8,20.0.0-1-g10df615+6,20.0.0-1-g253301a+2,20.0.0-1-g32a200e+6,20.0.0-1-g596936a+6,20.0.0-1-g8a53f90,20.0.0-1-gc96f8cb+7,20.0.0-1-gd1c87d7,20.0.0-15-g34741e2+1,20.0.0-2-g04cfba9,20.0.0-2-g92e20685+7,20.0.0-2-gec03fae,20.0.0-3-g082faa5,20.0.0-3-g2fa8bb8+3,20.0.0-4-gde602ef96+1,20.0.0-4-ge48a6ca+1,20.0.0-7-g180d0f2+2,20.0.0-8-g7eef53f7+2,w.2020.26
lsst::afw::table::io::python Namespace Reference


template<typename T >
void declarePersistableFacade (pybind11::module &module, std::string const &suffix)
 Wraps an instantiation of PersistableFacade. More...
template<typename Class , typename... Args>
void addPersistableMethods (pybind11::class_< Class, Args... > &cls)
 Add table::io::Persistable and PersistableFacade methods to the pybind11 wrapper for a class. More...

Function Documentation

◆ addPersistableMethods()

template<typename Class , typename... Args>
void lsst::afw::table::io::python::addPersistableMethods ( pybind11::class_< Class, Args... > &  cls)

Add table::io::Persistable and PersistableFacade methods to the pybind11 wrapper for a class.

Use this instead of declarePersistableFacade to avoid circular import issues in Python; it allows your class to be used without importing lsst.afw.table.

Use as follows:

  • When declaring the pybind11 class that wraps your Class do not list table::io::PersistableFacade<Class> and table::io::Persistable as base classes.
  • Call this function to wrap the methods that make your object persistable.

Definition at line 90 of file python.h.

90  {
91  cls.def_static("readFits",
92  (std::shared_ptr<Class>(*)(std::string const &, int)) & PersistableFacade<Class>::readFits,
93  "fileName"_a, "hdu"_a = fits::DEFAULT_HDU);
94  cls.def_static(
95  "readFits",
96  (std::shared_ptr<Class>(*)(fits::MemFileManager &, int)) & PersistableFacade<Class>::readFits,
97  "manager"_a, "hdu"_a = fits::DEFAULT_HDU);
98  cls.def("writeFits", (void (Class::*)(std::string const &, std::string const &) const) & Class::writeFits,
99  "fileName"_a, "mode"_a = "w");
100  cls.def("writeFits",
101  (void (Class::*)(fits::MemFileManager &, std::string const &) const) & Class::writeFits,
102  "manager"_a, "mode"_a = "w");
103  cls.def("isPersistable", &Class::isPersistable);
104 }

◆ declarePersistableFacade()

template<typename T >
void lsst::afw::table::io::python::declarePersistableFacade ( pybind11::module &  module,
std::string const &  suffix 

Wraps an instantiation of PersistableFacade.

Use addPersistableMethods for all new code.

Pybind11 shall assume that PersistableFacade is managed using std::shared_ptr, as this is required for compatibility with existing subclasses of PersistableFacade. This means that wrapping will only work if new classes also use std::shared_ptr as their holder type.

Template Parameters
TThe type of object this PersistableFacade is for.
moduleThe pybind11 module that shall contain PersistableFacade<T>
suffixA string to disambiguate this class from other PersistableFacades. The Python name of this class shall be PersistableFacade<suffix>.

Definition at line 65 of file python.h.

65  {
66  using namespace pybind11::literals;
68  pybind11::class_<PersistableFacade<T>, std::shared_ptr<PersistableFacade<T>>> cls(
69  module, ("PersistableFacade" + suffix).c_str());
70  cls.def_static("readFits",
71  (std::shared_ptr<T>(*)(std::string const &, int)) & PersistableFacade<T>::readFits,
72  "fileName"_a, "hdu"_a = fits::DEFAULT_HDU);
73  cls.def_static("readFits",
74  (std::shared_ptr<T>(*)(fits::MemFileManager &, int)) & PersistableFacade<T>::readFits,
75  "manager"_a, "hdu"_a = fits::DEFAULT_HDU);
76 }
STL class.
STL class.
const int DEFAULT_HDU
Specify that the default HDU should be read.
Definition: fitsDefaults.h:18