Merge branch 'pybind:master' into master

This commit is contained in:
Steve R. Sun 2022-04-12 09:30:11 +08:00 committed by GitHub
commit 44265a1f4e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 31 additions and 76 deletions

View File

@ -814,55 +814,6 @@ jobs:
- name: Python tests - name: Python tests
run: cmake --build build --config Debug -t pytest run: cmake --build build --config Debug -t pytest
win32-msvc2017:
name: "🐍 ${{ matrix.python }} • MSVC 2017 • x64"
runs-on: windows-2016
strategy:
fail-fast: false
matrix:
python:
- 3.6
- 3.7
std:
- 14
include:
- python: 3.7
std: 17
args: >
-DCMAKE_CXX_FLAGS="/permissive- /EHsc /GR"
steps:
- uses: actions/checkout@v2
- name: Setup 🐍 ${{ matrix.python }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Update CMake
uses: jwlawson/actions-setup-cmake@v1.12
- name: Prepare env
run: |
python -m pip install -r tests/requirements.txt
# First build - C++11 mode and inplace
- name: Configure
run: >
cmake -S . -B build
-G "Visual Studio 15 2017" -A x64
-DPYBIND11_WERROR=ON
-DDOWNLOAD_CATCH=ON
-DDOWNLOAD_EIGEN=ON
-DCMAKE_CXX_STANDARD=${{ matrix.std }}
${{ matrix.args }}
- name: Build ${{ matrix.std }}
run: cmake --build build -j 2
- name: Run all checks
run: cmake --build build -t check
windows-2022: windows-2022:
strategy: strategy:

View File

@ -18,7 +18,7 @@ jobs:
matrix: matrix:
runs-on: [ubuntu-latest, macos-latest, windows-latest] runs-on: [ubuntu-latest, macos-latest, windows-latest]
arch: [x64] arch: [x64]
cmake: ["3.21"] cmake: ["3.23"]
include: include:
- runs-on: ubuntu-latest - runs-on: ubuntu-latest
@ -29,12 +29,8 @@ jobs:
arch: x64 arch: x64
cmake: 3.7 cmake: 3.7
- runs-on: windows-2016 - runs-on: windows-2019
arch: x86 arch: x64 # x86 compilers seem to be missing on 2019 image
cmake: 3.8
- runs-on: windows-2016
arch: x86
cmake: 3.18 cmake: 3.18
name: 🐍 3.7 • CMake ${{ matrix.cmake }} • ${{ matrix.runs-on }} name: 🐍 3.7 • CMake ${{ matrix.cmake }} • ${{ matrix.runs-on }}

View File

@ -15,7 +15,7 @@
repos: repos:
# Standard hooks # Standard hooks
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: "v4.1.0" rev: "v4.2.0"
hooks: hooks:
- id: check-added-large-files - id: check-added-large-files
- id: check-case-conflict - id: check-case-conflict
@ -32,7 +32,7 @@ repos:
# Upgrade old Python syntax # Upgrade old Python syntax
- repo: https://github.com/asottile/pyupgrade - repo: https://github.com/asottile/pyupgrade
rev: "v2.31.1" rev: "v2.32.0"
hooks: hooks:
- id: pyupgrade - id: pyupgrade
args: [--py36-plus] args: [--py36-plus]
@ -74,7 +74,6 @@ repos:
rev: "v1.2.5" rev: "v1.2.5"
hooks: hooks:
- id: pycln - id: pycln
additional_dependencies: [click<8.1] # Unpin when typer updates
stages: [manual] stages: [manual]
# Checking for common mistakes # Checking for common mistakes
@ -108,7 +107,7 @@ repos:
# PyLint has native support - not always usable, but works for us # PyLint has native support - not always usable, but works for us
- repo: https://github.com/PyCQA/pylint - repo: https://github.com/PyCQA/pylint
rev: "v2.13.4" rev: "v2.13.5"
hooks: hooks:
- id: pylint - id: pylint
files: ^pybind11 files: ^pybind11
@ -127,7 +126,7 @@ repos:
rev: "v0.942" rev: "v0.942"
hooks: hooks:
- id: mypy - id: mypy
args: [--show-error-codes] args: []
exclude: ^(tests|docs)/ exclude: ^(tests|docs)/
additional_dependencies: [nox, rich] additional_dependencies: [nox, rich]

View File

@ -514,7 +514,7 @@ struct type_caster<std::basic_string_view<CharT, Traits>,
template <typename CharT> template <typename CharT>
struct type_caster<CharT, enable_if_t<is_std_char_type<CharT>::value>> { struct type_caster<CharT, enable_if_t<is_std_char_type<CharT>::value>> {
using StringType = std::basic_string<CharT>; using StringType = std::basic_string<CharT>;
using StringCaster = type_caster<StringType>; using StringCaster = make_caster<StringType>;
StringCaster str_caster; StringCaster str_caster;
bool none = false; bool none = false;
CharT one_char = 0; CharT one_char = 0;
@ -1155,15 +1155,18 @@ enable_if_t<!cast_is_temporary_value_reference<T>::value, T> cast_ref(object &&,
// static_assert, even though if it's in dead code, so we provide a "trampoline" to pybind11::cast // static_assert, even though if it's in dead code, so we provide a "trampoline" to pybind11::cast
// that only does anything in cases where pybind11::cast is valid. // that only does anything in cases where pybind11::cast is valid.
template <typename T> template <typename T>
enable_if_t<!cast_is_temporary_value_reference<T>::value, T> cast_safe(object &&o) {
return pybind11::cast<T>(std::move(o));
}
template <typename T>
enable_if_t<cast_is_temporary_value_reference<T>::value, T> cast_safe(object &&) { enable_if_t<cast_is_temporary_value_reference<T>::value, T> cast_safe(object &&) {
pybind11_fail("Internal error: cast_safe fallback invoked"); pybind11_fail("Internal error: cast_safe fallback invoked");
} }
template <> template <typename T>
inline void cast_safe<void>(object &&) {} enable_if_t<std::is_same<void, intrinsic_t<T>>::value, void> cast_safe(object &&) {}
template <typename T>
enable_if_t<detail::none_of<cast_is_temporary_value_reference<T>,
std::is_same<void, intrinsic_t<T>>>::value,
T>
cast_safe(object &&o) {
return pybind11::cast<T>(std::move(o));
}
PYBIND11_NAMESPACE_END(detail) PYBIND11_NAMESPACE_END(detail)

View File

@ -1817,7 +1817,8 @@ private:
if (holder_ptr) { if (holder_ptr) {
init_holder_from_existing(v_h, holder_ptr, std::is_copy_constructible<holder_type>()); init_holder_from_existing(v_h, holder_ptr, std::is_copy_constructible<holder_type>());
v_h.set_holder_constructed(); v_h.set_holder_constructed();
} else if (inst->owned || detail::always_construct_holder<holder_type>::value) { } else if (PYBIND11_SILENCE_MSVC_C4127(detail::always_construct_holder<holder_type>::value)
|| inst->owned) {
new (std::addressof(v_h.holder<holder_type>())) holder_type(v_h.value_ptr<type>()); new (std::addressof(v_h.holder<holder_type>())) holder_type(v_h.value_ptr<type>());
v_h.set_holder_constructed(); v_h.set_holder_constructed();
} }
@ -2402,7 +2403,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_iterator(Type &value, Extra &&...extra) { iterator make_iterator(Type &value, Extra &&...extra) {
return make_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
/// Makes an iterator over the keys (`.first`) of a stl map-like container supporting /// Makes an iterator over the keys (`.first`) of a stl map-like container supporting
@ -2411,7 +2413,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_key_iterator(Type &value, Extra &&...extra) { iterator make_key_iterator(Type &value, Extra &&...extra) {
return make_key_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_key_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
/// Makes an iterator over the values (`.second`) of a stl map-like container supporting /// Makes an iterator over the values (`.second`) of a stl map-like container supporting
@ -2420,7 +2423,8 @@ template <return_value_policy Policy = return_value_policy::reference_internal,
typename Type, typename Type,
typename... Extra> typename... Extra>
iterator make_value_iterator(Type &value, Extra &&...extra) { iterator make_value_iterator(Type &value, Extra &&...extra) {
return make_value_iterator<Policy>(std::begin(value), std::end(value), extra...); return make_value_iterator<Policy>(
std::begin(value), std::end(value), std::forward<Extra>(extra)...);
} }
template <typename InputType, typename OutputType> template <typename InputType, typename OutputType>

View File

@ -232,7 +232,7 @@ void vector_modifiers(
/// Slicing protocol /// Slicing protocol
cl.def( cl.def(
"__getitem__", "__getitem__",
[](const Vector &v, slice slice) -> Vector * { [](const Vector &v, const slice &slice) -> Vector * {
size_t start = 0, stop = 0, step = 0, slicelength = 0; size_t start = 0, stop = 0, step = 0, slicelength = 0;
if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) { if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) {
@ -253,7 +253,7 @@ void vector_modifiers(
cl.def( cl.def(
"__setitem__", "__setitem__",
[](Vector &v, slice slice, const Vector &value) { [](Vector &v, const slice &slice, const Vector &value) {
size_t start = 0, stop = 0, step = 0, slicelength = 0; size_t start = 0, stop = 0, step = 0, slicelength = 0;
if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) { if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) {
throw error_already_set(); throw error_already_set();
@ -281,7 +281,7 @@ void vector_modifiers(
cl.def( cl.def(
"__delitem__", "__delitem__",
[](Vector &v, slice slice) { [](Vector &v, const slice &slice) {
size_t start = 0, stop = 0, step = 0, slicelength = 0; size_t start = 0, stop = 0, step = 0, slicelength = 0;
if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) { if (!slice.compute(v.size(), &start, &stop, &step, &slicelength)) {

View File

@ -24,8 +24,10 @@ profile = "black"
[tool.mypy] [tool.mypy]
files = ["pybind11"] files = ["pybind11"]
python_version = "3.6" python_version = "3.6"
warn_unused_configs = true
strict = true strict = true
show_error_codes = true
enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
warn_unreachable = true
[[tool.mypy.overrides]] [[tool.mypy.overrides]]
module = ["ghapi.*", "setuptools.*"] module = ["ghapi.*", "setuptools.*"]