LSST Applications  21.0.0+3c14b91618,21.0.0+9f51b1e3f7,21.0.0-1-ga51b5d4+6691386486,21.0.0-10-g2408eff+1a328412bf,21.0.0-10-g560fb7b+52fd22d7b4,21.0.0-10-g8d1d15d+2f9043cae0,21.0.0-10-gcf60f90+d15de71c48,21.0.0-11-g25eff31+d43066e4ef,21.0.0-15-g490e301a+a676f0d5cf,21.0.0-2-g103fe59+4758c8ef83,21.0.0-2-g1367e85+a9f57e981a,21.0.0-2-g45278ab+9f51b1e3f7,21.0.0-2-g5242d73+a9f57e981a,21.0.0-2-g7f82c8f+1bcc828e4f,21.0.0-2-g8f08a60+e6fd6d9ff9,21.0.0-2-ga326454+1bcc828e4f,21.0.0-2-gde069b7+66c51b65da,21.0.0-2-gecfae73+251b9830c3,21.0.0-2-gfc62afb+a9f57e981a,21.0.0-20-g09baf175d+e1e7d1c708,21.0.0-3-g357aad2+854c3902c3,21.0.0-3-g4be5c26+a9f57e981a,21.0.0-3-g65f322c+feaa1990e9,21.0.0-3-g7d9da8d+3c14b91618,21.0.0-3-ge02ed75+bda8df9b93,21.0.0-4-g591bb35+bda8df9b93,21.0.0-4-g65b4814+52fd22d7b4,21.0.0-4-g88306b8+656365ce3f,21.0.0-4-gccdca77+86bf7a300d,21.0.0-4-ge8a399c+b99e86088e,21.0.0-5-gd00fb1e+6a0dc09319,21.0.0-51-gd3b42663+bf9f0d1c8b,21.0.0-6-g2d4f3f3+9f51b1e3f7,21.0.0-7-g04766d7+ee2ae02087,21.0.0-7-g98eecf7+3609eddee2,21.0.0-7-gde99fe0+bda8df9b93,21.0.0-8-gd70ce6f+79e45e76e4,master-gac4afde19b+bda8df9b93,w.2021.10
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.