mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-27 07:32:02 +00:00
Merge branch 'pybind:master' into master
This commit is contained in:
commit
56b14f2307
@ -90,7 +90,7 @@ repos:
|
|||||||
|
|
||||||
# Automatically remove noqa that are not used
|
# Automatically remove noqa that are not used
|
||||||
- repo: https://github.com/asottile/yesqa
|
- repo: https://github.com/asottile/yesqa
|
||||||
rev: "v1.3.0"
|
rev: "v1.4.0"
|
||||||
hooks:
|
hooks:
|
||||||
- id: yesqa
|
- id: yesqa
|
||||||
additional_dependencies: &flake8_dependencies
|
additional_dependencies: &flake8_dependencies
|
||||||
@ -99,7 +99,7 @@ repos:
|
|||||||
|
|
||||||
# Flake8 also supports pre-commit natively (same author)
|
# Flake8 also supports pre-commit natively (same author)
|
||||||
- repo: https://github.com/PyCQA/flake8
|
- repo: https://github.com/PyCQA/flake8
|
||||||
rev: "5.0.2"
|
rev: "5.0.4"
|
||||||
hooks:
|
hooks:
|
||||||
- id: flake8
|
- id: flake8
|
||||||
exclude: ^(docs/.*|tools/.*)$
|
exclude: ^(docs/.*|tools/.*)$
|
||||||
|
@ -502,31 +502,6 @@ inline PyObject *make_object_base_type(PyTypeObject *metaclass) {
|
|||||||
return (PyObject *) heap_type;
|
return (PyObject *) heap_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// dynamic_attr: Support for `d = instance.__dict__`.
|
|
||||||
extern "C" inline PyObject *pybind11_get_dict(PyObject *self, void *) {
|
|
||||||
PyObject *&dict = *_PyObject_GetDictPtr(self);
|
|
||||||
if (!dict) {
|
|
||||||
dict = PyDict_New();
|
|
||||||
}
|
|
||||||
Py_XINCREF(dict);
|
|
||||||
return dict;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// dynamic_attr: Support for `instance.__dict__ = dict()`.
|
|
||||||
extern "C" inline int pybind11_set_dict(PyObject *self, PyObject *new_dict, void *) {
|
|
||||||
if (!PyDict_Check(new_dict)) {
|
|
||||||
PyErr_Format(PyExc_TypeError,
|
|
||||||
"__dict__ must be set to a dictionary, not a '%.200s'",
|
|
||||||
get_fully_qualified_tp_name(Py_TYPE(new_dict)).c_str());
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
PyObject *&dict = *_PyObject_GetDictPtr(self);
|
|
||||||
Py_INCREF(new_dict);
|
|
||||||
Py_CLEAR(dict);
|
|
||||||
dict = new_dict;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// dynamic_attr: Allow the garbage collector to traverse the internal instance `__dict__`.
|
/// dynamic_attr: Allow the garbage collector to traverse the internal instance `__dict__`.
|
||||||
extern "C" inline int pybind11_traverse(PyObject *self, visitproc visit, void *arg) {
|
extern "C" inline int pybind11_traverse(PyObject *self, visitproc visit, void *arg) {
|
||||||
PyObject *&dict = *_PyObject_GetDictPtr(self);
|
PyObject *&dict = *_PyObject_GetDictPtr(self);
|
||||||
@ -558,9 +533,17 @@ inline void enable_dynamic_attributes(PyHeapTypeObject *heap_type) {
|
|||||||
type->tp_traverse = pybind11_traverse;
|
type->tp_traverse = pybind11_traverse;
|
||||||
type->tp_clear = pybind11_clear;
|
type->tp_clear = pybind11_clear;
|
||||||
|
|
||||||
static PyGetSetDef getset[] = {
|
static PyGetSetDef getset[] = {{
|
||||||
{const_cast<char *>("__dict__"), pybind11_get_dict, pybind11_set_dict, nullptr, nullptr},
|
#if PY_VERSION_HEX < 0x03070000
|
||||||
{nullptr, nullptr, nullptr, nullptr, nullptr}};
|
const_cast<char *>("__dict__"),
|
||||||
|
#else
|
||||||
|
"__dict__",
|
||||||
|
#endif
|
||||||
|
PyObject_GenericGetDict,
|
||||||
|
PyObject_GenericSetDict,
|
||||||
|
nullptr,
|
||||||
|
nullptr},
|
||||||
|
{nullptr, nullptr, nullptr, nullptr, nullptr}};
|
||||||
type->tp_getset = getset;
|
type->tp_getset = getset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +233,9 @@ function(pybind11_add_module target_name)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT MSVC AND NOT ${CMAKE_BUILD_TYPE} MATCHES Debug|RelWithDebInfo)
|
# Use case-insensitive comparison to match the result of $<CONFIG:cfgs>
|
||||||
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
|
||||||
|
if(NOT MSVC AND NOT ${uppercase_CMAKE_BUILD_TYPE} MATCHES DEBUG|RELWITHDEBINFO)
|
||||||
# Strip unnecessary sections of the binary on Linux/macOS
|
# Strip unnecessary sections of the binary on Linux/macOS
|
||||||
pybind11_strip(${target_name})
|
pybind11_strip(${target_name})
|
||||||
endif()
|
endif()
|
||||||
|
@ -208,7 +208,9 @@ function(pybind11_add_module target_name)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(NOT MSVC AND NOT ${CMAKE_BUILD_TYPE} MATCHES Debug|RelWithDebInfo)
|
# Use case-insensitive comparison to match the result of $<CONFIG:cfgs>
|
||||||
|
string(TOUPPER "${CMAKE_BUILD_TYPE}" uppercase_CMAKE_BUILD_TYPE)
|
||||||
|
if(NOT MSVC AND NOT ${uppercase_CMAKE_BUILD_TYPE} MATCHES DEBUG|RELWITHDEBINFO)
|
||||||
pybind11_strip(${target_name})
|
pybind11_strip(${target_name})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user