24 #include "pybind11/pybind11.h"
25 #include "ndarray/pybind11.h"
37 using namespace py::literals;
43 using utils::python::WrapperCollection;
47 using PySimpleTable = py::class_<SimpleTable, std::shared_ptr<SimpleTable>, BaseTable>;
48 using PySimpleRecord = py::class_<SimpleRecord, std::shared_ptr<SimpleRecord>, BaseRecord>;
50 PySimpleRecord declareSimpleRecord(WrapperCollection &wrappers) {
51 return wrappers.wrapType(PySimpleRecord(wrappers.module,
"SimpleRecord"), [](
auto &mod,
auto &
cls) {
52 cls.def(
"getId", &SimpleRecord::getId);
53 cls.def(
"setId", &SimpleRecord::setId);
54 cls.def(
"getTable", &SimpleRecord::getTable);
55 cls.def_property_readonly(
"table", &SimpleRecord::getTable);
56 cls.def(
"getCoord", &SimpleRecord::getCoord);
57 cls.def(
"setCoord", &SimpleRecord::setCoord);
58 cls.def(
"getRa", &SimpleRecord::getRa);
59 cls.def(
"setRa", &SimpleRecord::setRa);
60 cls.def(
"getDec", &SimpleRecord::getDec);
61 cls.def(
"setDec", &SimpleRecord::setDec);
65 PySimpleTable declareSimpleTable(WrapperCollection &wrappers) {
66 return wrappers.wrapType(PySimpleTable(wrappers.module,
"SimpleTable"), [](
auto &mod,
auto &
cls) {
67 cls.def_static(
"make",
68 (std::shared_ptr<SimpleTable>(*)(Schema const &, std::shared_ptr<IdFactory> const &)) &
70 cls.def_static(
"make", (std::shared_ptr<SimpleTable>(*)(Schema const &)) & SimpleTable::make);
71 cls.def_static(
"makeMinimalSchema", &SimpleTable::makeMinimalSchema);
72 cls.def_static(
"checkSchema", &SimpleTable::checkSchema,
"schema"_a);
73 cls.def_static(
"getIdKey", &SimpleTable::getIdKey);
74 cls.def_static(
"getCoordKey", &SimpleTable::getCoordKey);
76 cls.def(
"getIdFactory", (std::shared_ptr<IdFactory>(SimpleTable::*)()) & SimpleTable::getIdFactory);
77 cls.def(
"setIdFactory", &SimpleTable::setIdFactory,
"idFactory"_a);
78 cls.def(
"clone", &SimpleTable::clone);
79 cls.def(
"makeRecord", &SimpleTable::makeRecord);
81 (std::shared_ptr<SimpleRecord>(SimpleTable::*)(BaseRecord const &)) & SimpleTable::copyRecord,
84 (std::shared_ptr<SimpleRecord>(SimpleTable::*)(BaseRecord const &, SchemaMapper const &)) &
85 SimpleTable::copyRecord,
86 "other"_a,
"mapper"_a);
93 auto clsSimpleRecord = declareSimpleRecord(wrappers);
94 auto clsSimpleTable = declareSimpleTable(wrappers);
95 auto clsSimpleColumnView = table::python::declareColumnView<SimpleRecord>(wrappers,
"Simple");
96 auto clsSimpleCatalog = table::python::declareSortedCatalog<SimpleRecord>(wrappers,
"Simple");
98 clsSimpleRecord.attr(
"Table") = clsSimpleTable;
99 clsSimpleRecord.attr(
"ColumnView") = clsSimpleColumnView;
100 clsSimpleRecord.attr(
"Catalog") = clsSimpleCatalog;
101 clsSimpleTable.attr(
"Record") = clsSimpleRecord;
102 clsSimpleTable.attr(
"ColumnView") = clsSimpleColumnView;
103 clsSimpleTable.attr(
"Catalog") = clsSimpleCatalog;
104 clsSimpleCatalog.attr(
"Record") = clsSimpleRecord;
105 clsSimpleCatalog.attr(
"Table") = clsSimpleTable;
106 clsSimpleCatalog.attr(
"ColumnView") = clsSimpleColumnView;