LSST Applications g00d0e8bbd7+8c5ae1fdc5,g013ef56533+603670b062,g083dd6704c+2e189452a7,g199a45376c+0ba108daf9,g1c5cce2383+bc9f6103a4,g1fd858c14a+cd69ed4fc1,g210f2d0738+c4742f2e9e,g262e1987ae+612fa42d85,g29ae962dfc+83d129e820,g2cef7863aa+aef1011c0b,g35bb328faa+8c5ae1fdc5,g3fd5ace14f+5eaa884f2a,g47891489e3+e32160a944,g53246c7159+8c5ae1fdc5,g5b326b94bb+dcc56af22d,g64539dfbff+c4742f2e9e,g67b6fd64d1+e32160a944,g74acd417e5+c122e1277d,g786e29fd12+668abc6043,g87389fa792+8856018cbb,g88cb488625+47d24e4084,g89139ef638+e32160a944,g8d7436a09f+d14b4ff40a,g8ea07a8fe4+b212507b11,g90f42f885a+e1755607f3,g97be763408+34be90ab8c,g98df359435+ec1fa61bf1,ga2180abaac+8c5ae1fdc5,ga9e74d7ce9+43ac651df0,gbf99507273+8c5ae1fdc5,gc2a301910b+c4742f2e9e,gca7fc764a6+e32160a944,gd7ef33dd92+e32160a944,gdab6d2f7ff+c122e1277d,gdb1e2cdc75+1b18322db8,ge410e46f29+e32160a944,ge41e95a9f2+c4742f2e9e,geaed405ab2+0d91c11c6d,w.2025.44
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst::sphgeom::python Namespace Reference

Functions

ptrdiff_t convertIndex (ptrdiff_t len, pybind11::int_ i)
 Convert a Python index i over a sequence with length len to a non-negative (C++ style) index, and perform a bounds-check.
 
pybind11::bytes encode (Region const &self)
 Encode a Region as a pybind11 bytes object.
 
template<typename R>
std::unique_ptr< R > decode (pybind11::bytes bytes)
 Decode a Region from a pybind11 bytes object.
 
template<typename S>
std::vector< std::unique_ptr< Region > > convert_region_sequence (S const &seq)
 Create a vector of Region (or Region-subclass) pointers by copying the regions from a sized Python iterable (e.g.
 

Function Documentation

◆ convert_region_sequence()

template<typename S>
std::vector< std::unique_ptr< Region > > lsst::sphgeom::python::convert_region_sequence ( S const & seq)
inline

Create a vector of Region (or Region-subclass) pointers by copying the regions from a sized Python iterable (e.g.

S == py::tuple).

Note that the pybind11 built-in STL conversions don't work, because they use unique_ptr - we can't transfer ownership out of Python, and those converters don't know about our clone methods.

Definition at line 83 of file utils.h.

83 {
85 result.reserve(seq.size());
86 for (pybind11::handle py_region : seq) {
87 result.push_back(py_region.cast<Region const &>().clone());
88 }
89 return result;
90}
Region is a minimal interface for 2-dimensional regions on the unit sphere.
Definition Region.h:89
virtual std::unique_ptr< Region > clone() const =0
clone returns a deep copy of this region.

◆ convertIndex()

ptrdiff_t lsst::sphgeom::python::convertIndex ( ptrdiff_t len,
pybind11::int_ i )
inline

Convert a Python index i over a sequence with length len to a non-negative (C++ style) index, and perform a bounds-check.

Definition at line 48 of file utils.h.

48 {
49 auto j = static_cast<ptrdiff_t>(i);
50 if ((j == -1 && PyErr_Occurred()) || j < -len || j >= len) {
51 PyErr_Clear();
52 throw pybind11::index_error(
53 pybind11::str("Index {} not in range({}, {})")
54 .format(i, -len, len));
55 }
56 return (j < 0) ? j + len : j;
57}

◆ decode()

template<typename R>
std::unique_ptr< R > lsst::sphgeom::python::decode ( pybind11::bytes bytes)

Decode a Region from a pybind11 bytes object.

Definition at line 69 of file utils.h.

69 {
70 std::uint8_t const *buffer = reinterpret_cast<std::uint8_t const *>(
71 PYBIND11_BYTES_AS_STRING(bytes.ptr()));
72 size_t n = static_cast<size_t>(PYBIND11_BYTES_SIZE(bytes.ptr()));
73 return R::decode(buffer, n);
74}

◆ encode()

pybind11::bytes lsst::sphgeom::python::encode ( Region const & self)
inline

Encode a Region as a pybind11 bytes object.

Definition at line 61 of file utils.h.

61 {
62 std::vector<std::uint8_t> bytes = self.encode();
63 return pybind11::bytes(reinterpret_cast<char const *>(bytes.data()),
64 bytes.size());
65}
T data(T... args)
T size(T... args)