| 936 | } |
| 937 | |
| 938 | PyObject* DocumentObjectPy::getCustomAttributes(const char* attr) const |
| 939 | { |
| 940 | // Must call PropertyContainerPy here, not ExtensionContainerPy |
| 941 | if (PyObject* py = PropertyContainerPy::getCustomAttributes(attr)) { // NOLINT |
| 942 | return py; |
| 943 | } |
| 944 | |
| 945 | if (auto customProvider = Base::provideService<App::CustomAttributeProvider>()) { |
| 946 | auto opt = customProvider->getAttribute(getDocumentObjectPtr(), attr); |
| 947 | if (opt.has_value()) { |
| 948 | return opt.value(); |
| 949 | } |
| 950 | } |
| 951 | |
| 952 | return nullptr; |
| 953 | } |
| 954 | |
| 955 | int DocumentObjectPy::setCustomAttributes(const char*, PyObject*) |
| 956 | { |
nothing calls this directly
no test coverage detected