LSST Applications  21.0.0+c4f5df5339,21.0.0+e70536a077,21.0.0-1-ga51b5d4+7c60f8a6ea,21.0.0-10-g2408eff+b1a641d84b,21.0.0-10-g560fb7b+92b8ef9dd1,21.0.0-10-gcf60f90+43207ce272,21.0.0-14-gb69b93b5+4d76db0002,21.0.0-19-g1706eef1c+e734d31160,21.0.0-2-g103fe59+22a7c7c8af,21.0.0-2-g1367e85+7da664439d,21.0.0-2-g45278ab+e70536a077,21.0.0-2-g5242d73+7da664439d,21.0.0-2-g7f82c8f+6d2855f563,21.0.0-2-g8f08a60+9c9a9cfcc8,21.0.0-2-ga326454+6d2855f563,21.0.0-2-gde069b7+bedfc5e1fb,21.0.0-2-gecfae73+a861af6170,21.0.0-2-gfc62afb+7da664439d,21.0.0-3-g357aad2+c828dac3d2,21.0.0-3-g4be5c26+7da664439d,21.0.0-3-g65f322c+d4023cc212,21.0.0-3-g7d9da8d+c4f5df5339,21.0.0-3-gaa929c8+92b8ef9dd1,21.0.0-3-ge02ed75+0deb8c0c58,21.0.0-4-g3af6bfd+b012c929b5,21.0.0-4-g591bb35+0deb8c0c58,21.0.0-4-g88306b8+46a2861271,21.0.0-4-gc004bbf+238ceb0735,21.0.0-4-gccdca77+a5c54364a0,21.0.0-4-ge8a399c+58522bebd9,21.0.0-40-gd3a68701+eacd05cfb3,21.0.0-5-g7ebb681+ddcb963ef6,21.0.0-6-g2d4f3f3+e70536a077,21.0.0-6-g4e60332+0deb8c0c58,21.0.0-6-gf32990f+87b8d260e6,21.0.0-7-g6531d7b+988fabe502,21.0.0-8-ga5967ee+f92c332e12,master-gac4afde19b+0deb8c0c58,w.2021.08
LSST Data Management Base Package
utils.h
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * See COPYRIGHT file at the top of the source tree.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the LSST License Statement and
19  * the GNU General Public License along with this program. If not,
20  * see <https://www.lsstcorp.org/LegalNotices/>.
21  */
22 
23 #ifndef LSST_SPHGEOM_PYTHON_UTILS_H_
24 #define LSST_SPHGEOM_PYTHON_UTILS_H_
25 
26 #include "pybind11/pybind11.h"
27 
28 #include <limits>
29 #include <sstream>
30 #include <stdexcept>
31 
32 #include "lsst/sphgeom/Region.h"
33 
34 namespace lsst {
35 namespace sphgeom {
36 namespace python {
37 namespace {
38 
41 ptrdiff_t convertIndex(ptrdiff_t len, pybind11::int_ i) {
42  auto j = static_cast<ptrdiff_t>(i);
43  if ((j == -1 && PyErr_Occurred()) || j < -len || j >= len) {
44  PyErr_Clear();
45  throw pybind11::index_error(
46  pybind11::str("Index {} not in range({}, {})")
47  .format(i, -len, len));
48  }
49  return (j < 0) ? j + len : j;
50 }
51 
52 
54 pybind11::bytes encode(Region const &self) {
55  std::vector<uint8_t> bytes = self.encode();
56  return pybind11::bytes(reinterpret_cast<char const *>(bytes.data()),
57  bytes.size());
58 }
59 
60 } // <anonymous>
61 } // python
62 } // sphgeom
63 } // lsst
64 
65 #endif // LSST_SPHGEOM_PYTHON_UTILS_H_
This file defines an interface for spherical regions.
table::Key< table::Array< std::uint8_t > > bytes
Definition: python.h:135
def format(config, name=None, writeSourceLine=True, prefix="", verbose=False)
Definition: history.py:174
A base class for image defects.