Merge branch 'pybind:master' into master

This commit is contained in:
Steve R. Sun 2022-03-02 07:52:29 +08:00 committed by GitHub
commit d6d28dc860
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 32 additions and 20 deletions

View File

@ -30,8 +30,8 @@ jobs:
- '3.6' - '3.6'
- '3.9' - '3.9'
- '3.10' - '3.10'
- 'pypy-3.7-v7.3.7' - 'pypy-3.7'
- 'pypy-3.8-v7.3.7' - 'pypy-3.8'
# Items in here will either be added to the build matrix (if not # Items in here will either be added to the build matrix (if not
# present), or add new keys to an existing matrix element if all the # present), or add new keys to an existing matrix element if all the

View File

@ -59,7 +59,7 @@ repos:
# Changes tabs to spaces # Changes tabs to spaces
- repo: https://github.com/Lucas-C/pre-commit-hooks - repo: https://github.com/Lucas-C/pre-commit-hooks
rev: "v1.1.12" rev: "v1.1.13"
hooks: hooks:
- id: remove-tabs - id: remove-tabs
@ -71,7 +71,7 @@ repos:
# Autoremoves unused imports # Autoremoves unused imports
- repo: https://github.com/hadialqattan/pycln - repo: https://github.com/hadialqattan/pycln
rev: "v1.2.0" rev: "v1.2.4"
hooks: hooks:
- id: pycln - id: pycln

View File

@ -101,14 +101,14 @@ inline PyTypeObject *make_static_property_type() {
inline PyTypeObject *make_static_property_type() { inline PyTypeObject *make_static_property_type() {
auto d = dict(); auto d = dict();
PyObject *result = PyRun_String(R"(\ PyObject *result = PyRun_String(R"(\
class pybind11_static_property(property): class pybind11_static_property(property):
def __get__(self, obj, cls): def __get__(self, obj, cls):
return property.__get__(self, cls, cls) return property.__get__(self, cls, cls)
def __set__(self, obj, value): def __set__(self, obj, value):
cls = obj if isinstance(obj, type) else type(obj) cls = obj if isinstance(obj, type) else type(obj)
property.__set__(self, cls, value) property.__set__(self, cls, value)
)", )",
Py_file_input, Py_file_input,
d.ptr(), d.ptr(),
d.ptr()); d.ptr());

View File

@ -334,7 +334,7 @@ protected:
const std::type_info *const *types, const std::type_info *const *types,
size_t args) { size_t args) {
// Do NOT receive `unique_rec` by value. If this function fails to move out the unique_ptr, // Do NOT receive `unique_rec` by value. If this function fails to move out the unique_ptr,
// we do not want this to destuct the pointer. `initialize` (the caller) still relies on // we do not want this to destruct the pointer. `initialize` (the caller) still relies on
// the pointee being alive after this call. Only move out if a `capsule` is going to keep // the pointee being alive after this call. Only move out if a `capsule` is going to keep
// it alive. // it alive.
auto *rec = unique_rec.get(); auto *rec = unique_rec.get();

View File

@ -2,6 +2,7 @@ import os
import nox import nox
nox.needs_version = ">=2022.1.7"
nox.options.sessions = ["lint", "tests", "tests_packaging"] nox.options.sessions = ["lint", "tests", "tests_packaging"]
PYTHON_VERISONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "pypy3.7", "pypy3.8"] PYTHON_VERISONS = ["3.6", "3.7", "3.8", "3.9", "3.10", "3.11", "pypy3.7", "pypy3.8"]
@ -29,14 +30,12 @@ def tests(session: nox.Session) -> None:
session.install("-r", "tests/requirements.txt") session.install("-r", "tests/requirements.txt")
session.run( session.run(
"cmake", "cmake",
"-S", "-S.",
".", f"-B{tmpdir}",
"-B",
tmpdir,
"-DPYBIND11_WERROR=ON", "-DPYBIND11_WERROR=ON",
"-DDOWNLOAD_CATCH=ON", "-DDOWNLOAD_CATCH=ON",
"-DDOWNLOAD_EIGEN=ON", "-DDOWNLOAD_EIGEN=ON",
*session.posargs *session.posargs,
) )
session.run("cmake", "--build", tmpdir) session.run("cmake", "--build", tmpdir)
session.run("cmake", "--build", tmpdir, "--config=Release", "--target", "check") session.run("cmake", "--build", tmpdir, "--config=Release", "--target", "check")

View File

@ -112,11 +112,24 @@ endif()
# VERSION. VERSION will typically be like "2.7" on unix, and "27" on windows. # VERSION. VERSION will typically be like "2.7" on unix, and "27" on windows.
execute_process( execute_process(
COMMAND COMMAND
"${PYTHON_EXECUTABLE}" "-c" "from distutils import sysconfig as s;import sys;import struct; "${PYTHON_EXECUTABLE}" "-c" "
import sys;import struct;
import sysconfig as s
USE_SYSCONFIG = sys.version_info >= (3, 10)
if not USE_SYSCONFIG:
from distutils import sysconfig as ds
print('.'.join(str(v) for v in sys.version_info)); print('.'.join(str(v) for v in sys.version_info));
print(sys.prefix); print(sys.prefix);
print(s.get_python_inc(plat_specific=True)); if USE_SYSCONFIG:
print(s.get_python_lib(plat_specific=True)); scheme = s.get_default_scheme()
if scheme == 'posix_local':
# Debian's default scheme installs to /usr/local/ but we want to find headers in /usr/
scheme = 'posix_prefix'
print(s.get_path('platinclude', scheme))
print(s.get_path('platlib'))
else:
print(ds.get_python_inc(plat_specific=True));
print(ds.get_python_lib(plat_specific=True));
print(s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO')); print(s.get_config_var('EXT_SUFFIX') or s.get_config_var('SO'));
print(hasattr(sys, 'gettotalrefcount')+0); print(hasattr(sys, 'gettotalrefcount')+0);
print(struct.calcsize('@P')); print(struct.calcsize('@P'));