• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

llnl / dftracer-utils / 28423703495

30 Jun 2026 05:59AM UTC coverage: 51.998% (-0.3%) from 52.278%
28423703495

Pull #83

github

web-flow
Merge fb542a938 into 2efed6649
Pull Request #83: refactor and improve code QoL

37282 of 93303 branches covered (39.96%)

Branch coverage included in aggregate %.

801 of 1525 new or added lines in 78 files covered. (52.52%)

98 existing lines in 37 files now uncovered.

33674 of 43157 relevant lines covered (78.03%)

20306.85 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

54.29
/src/dftracer/utils/python/py_errors.cpp
1
#include <dftracer/utils/python/py_errors.h>
2

3
#include <string>
4

5
PyObject *g_dft_error = nullptr;
6
PyObject *g_dft_value_error = nullptr;
7
PyObject *g_dft_not_found_error = nullptr;
8
PyObject *g_dft_io_error = nullptr;
9
PyObject *g_dft_parse_error = nullptr;
10
PyObject *g_dft_compression_error = nullptr;
11
PyObject *g_dft_query_error = nullptr;
12
PyObject *g_dft_reader_error = nullptr;
13
PyObject *g_dft_indexer_error = nullptr;
14
PyObject *g_dft_pipeline_error = nullptr;
15
PyObject *g_dft_aggregation_error = nullptr;
16

17
using dftracer::utils::ErrorCode;
18

19
namespace {
20

21
// Create exception "dftracer_utils_ext.<short_name>", register it on m, and
22
// keep a strong ref in *slot.
23
int add_exc(PyObject *m, const char *short_name, PyObject *base,
22✔
24
            PyObject **slot) {
25
    const std::string qualified =
26
        std::string("dftracer_utils_ext.") + short_name;
33!
27
    PyObject *exc = PyErr_NewException(qualified.c_str(), base, nullptr);
22!
28
    if (exc == nullptr) return -1;
22✔
29
    Py_INCREF(exc);  // keep one strong ref in *slot in addition to the module's
11!
30
    if (PyModule_AddObject(m, short_name, exc) < 0) {
22!
31
        Py_DECREF(exc);  // undo AddObject's intended steal
×
32
        Py_DECREF(exc);  // undo our INCREF
×
NEW
33
        return -1;
×
34
    }
35
    *slot = exc;
22✔
36
    return 0;
22✔
37
}
22✔
38

39
}  // namespace
40

41
int init_py_errors(PyObject *m) {
2✔
42
    if (add_exc(m, "DFTUtilsError", PyExc_RuntimeError, &g_dft_error) < 0)
2✔
NEW
43
        return -1;
×
44
    if (add_exc(m, "DFTUtilsValueError", g_dft_error, &g_dft_value_error) < 0)
2✔
NEW
45
        return -1;
×
46
    if (add_exc(m, "DFTUtilsNotFoundError", g_dft_error,
2✔
47
                &g_dft_not_found_error) < 0)
2✔
NEW
48
        return -1;
×
49
    if (add_exc(m, "DFTUtilsIOError", g_dft_error, &g_dft_io_error) < 0)
2✔
NEW
50
        return -1;
×
51
    if (add_exc(m, "DFTUtilsParseError", g_dft_error, &g_dft_parse_error) < 0)
2✔
NEW
52
        return -1;
×
53
    if (add_exc(m, "DFTUtilsCompressionError", g_dft_error,
2✔
54
                &g_dft_compression_error) < 0)
2✔
NEW
55
        return -1;
×
56
    if (add_exc(m, "DFTUtilsQueryError", g_dft_error, &g_dft_query_error) < 0)
2✔
NEW
57
        return -1;
×
58
    if (add_exc(m, "DFTUtilsReaderError", g_dft_error, &g_dft_reader_error) < 0)
2✔
NEW
59
        return -1;
×
60
    if (add_exc(m, "DFTUtilsIndexerError", g_dft_error, &g_dft_indexer_error) <
2✔
61
        0)
NEW
62
        return -1;
×
63
    if (add_exc(m, "DFTUtilsPipelineError", g_dft_error,
2✔
64
                &g_dft_pipeline_error) < 0)
2✔
NEW
65
        return -1;
×
66
    if (add_exc(m, "DFTUtilsAggregationError", g_dft_error,
2✔
67
                &g_dft_aggregation_error) < 0)
2✔
NEW
68
        return -1;
×
69
    return 0;
2✔
70
}
1✔
71

NEW
72
PyObject *py_error_type_for(ErrorCode code) {
×
NEW
73
    switch (code) {
×
74
        case ErrorCode::INVALID_ARGUMENT:
NEW
75
            return g_dft_value_error;
×
76
        case ErrorCode::NOT_FOUND:
NEW
77
            return g_dft_not_found_error;
×
78
        case ErrorCode::IO:
NEW
79
            return g_dft_io_error;
×
80
        case ErrorCode::PARSE:
NEW
81
            return g_dft_parse_error;
×
82
        case ErrorCode::COMPRESSION:
NEW
83
            return g_dft_compression_error;
×
84
        case ErrorCode::QUERY:
NEW
85
            return g_dft_query_error;
×
86
        case ErrorCode::READER:
NEW
87
            return g_dft_reader_error;
×
88
        case ErrorCode::INDEXER:
NEW
89
            return g_dft_indexer_error;
×
90
        case ErrorCode::PIPELINE:
NEW
91
            return g_dft_pipeline_error;
×
92
        case ErrorCode::AGGREGATION:
NEW
93
            return g_dft_aggregation_error;
×
94
        case ErrorCode::UNKNOWN:
95
        case ErrorCode::INTERNAL:
NEW
96
            return g_dft_error;
×
97
    }
NEW
98
    return g_dft_error;
×
99
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc