mirror of
https://github.com/pybind/pybind11.git
synced 2024-11-23 13:45:10 +00:00
Merge branch 'pybind:master' into master
This commit is contained in:
commit
44265a1f4e
49
.github/workflows/ci.yml
vendored
49
.github/workflows/ci.yml
vendored
@ -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:
|
||||||
|
10
.github/workflows/configure.yml
vendored
10
.github/workflows/configure.yml
vendored
@ -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 }}
|
||||||
|
@ -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]
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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>
|
||||||
|
@ -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)) {
|
||||||
|
@ -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.*"]
|
||||||
|
Loading…
Reference in New Issue
Block a user