diff --git a/.clang-tidy b/.clang-tidy index ddee835c1..d945a4a27 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,66 +1,66 @@ FormatStyle: file -Checks: ' -*bugprone*, -clang-analyzer-optin.performance.Padding, -clang-analyzer-optin.cplusplus.VirtualCall, -cppcoreguidelines-init-variables, -cppcoreguidelines-prefer-member-initializer, -cppcoreguidelines-pro-type-static-cast-downcast, -cppcoreguidelines-slicing, -google-explicit-constructor, -llvm-namespace-comment, -misc-definitions-in-headers, -misc-misplaced-const, -misc-non-copyable-objects, -misc-static-assert, -misc-throw-by-value-catch-by-reference, -misc-uniqueptr-reset-release, -misc-unused-parameters, -modernize-avoid-bind, -modernize-loop-convert, -modernize-make-shared, -modernize-redundant-void-arg, -modernize-replace-auto-ptr, -modernize-replace-disallow-copy-and-assign-macro, -modernize-replace-random-shuffle, -modernize-shrink-to-fit, -modernize-use-auto, -modernize-use-bool-literals, -modernize-use-default-member-init, -modernize-use-equals-default, -modernize-use-equals-delete, -modernize-use-emplace, -modernize-use-noexcept, -modernize-use-nullptr, -modernize-use-override, -modernize-use-using, -*performance*, -readability-avoid-const-params-in-decls, -readability-braces-around-statements, -readability-const-return-type, -readability-container-size-empty, -readability-delete-null-pointer, -readability-else-after-return, -readability-implicit-bool-conversion, -readability-inconsistent-declaration-parameter-name, -readability-make-member-function-const, -readability-misplaced-array-index, -readability-non-const-parameter, -readability-qualified-auto, -readability-redundant-function-ptr-dereference, -readability-redundant-smartptr-get, -readability-redundant-string-cstr, -readability-simplify-subscript-expr, -readability-static-accessed-through-instance, -readability-static-definition-in-anonymous-namespace, -readability-string-compare, -readability-suspicious-call-argument, -readability-uniqueptr-delete-release, --bugprone-exception-escape, --bugprone-reserved-identifier, --bugprone-unused-raii, -' +Checks: | + *bugprone*, + *performance*, + clang-analyzer-optin.cplusplus.VirtualCall, + clang-analyzer-optin.performance.Padding, + cppcoreguidelines-init-variables, + cppcoreguidelines-prefer-member-initializer, + cppcoreguidelines-pro-type-static-cast-downcast, + cppcoreguidelines-slicing, + google-explicit-constructor, + llvm-namespace-comment, + misc-definitions-in-headers, + misc-misplaced-const, + misc-non-copyable-objects, + misc-static-assert, + misc-throw-by-value-catch-by-reference, + misc-uniqueptr-reset-release, + misc-unused-parameters, + modernize-avoid-bind, + modernize-loop-convert, + modernize-make-shared, + modernize-redundant-void-arg, + modernize-replace-auto-ptr, + modernize-replace-disallow-copy-and-assign-macro, + modernize-replace-random-shuffle, + modernize-shrink-to-fit, + modernize-use-auto, + modernize-use-bool-literals, + modernize-use-default-member-init, + modernize-use-emplace, + modernize-use-equals-default, + modernize-use-equals-delete, + modernize-use-noexcept, + modernize-use-nullptr, + modernize-use-override, + modernize-use-using, + readability-avoid-const-params-in-decls, + readability-braces-around-statements, + readability-const-return-type, + readability-container-size-empty, + readability-delete-null-pointer, + readability-else-after-return, + readability-implicit-bool-conversion, + readability-inconsistent-declaration-parameter-name, + readability-make-member-function-const, + readability-misplaced-array-index, + readability-non-const-parameter, + readability-qualified-auto, + readability-redundant-function-ptr-dereference, + readability-redundant-smartptr-get, + readability-redundant-string-cstr, + readability-simplify-subscript-expr, + readability-static-accessed-through-instance, + readability-static-definition-in-anonymous-namespace, + readability-string-compare, + readability-suspicious-call-argument, + readability-uniqueptr-delete-release, + -bugprone-easily-swappable-parameters, + -bugprone-exception-escape, + -bugprone-reserved-identifier, + -bugprone-unused-raii, CheckOptions: - key: performance-for-range-copy.WarnOnAllAutoCopies @@ -73,5 +73,3 @@ CheckOptions: value: true HeaderFilterRegex: 'pybind11/.*h' - -WarningsAsErrors: '*' diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index c8ec91ff7..00b1fea4c 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -235,12 +235,14 @@ directory inside your pybind11 git clone. Files will be modified in place, so you can use git to monitor the changes. ```bash -docker run --rm -v $PWD:/mounted_pybind11 -it silkeh/clang:12 +docker run --rm -v $PWD:/mounted_pybind11 -it silkeh/clang:13 apt-get update && apt-get install -y python3-dev python3-pytest -cmake -S /mounted_pybind11/ -B build -DCMAKE_CXX_CLANG_TIDY="$(which clang-tidy);-fix" -DDOWNLOAD_EIGEN=ON -DDOWNLOAD_CATCH=ON -DCMAKE_CXX_STANDARD=17 -cmake --build build -j 2 -- --keep-going +cmake -S /mounted_pybind11/ -B build -DCMAKE_CXX_CLANG_TIDY="$(which clang-tidy);--use-color" -DDOWNLOAD_EIGEN=ON -DDOWNLOAD_CATCH=ON -DCMAKE_CXX_STANDARD=17 +cmake --build build -j 2 ``` +You can add `--fix` to the options list if you want. + ### Include what you use To run include what you use, install (`brew install include-what-you-use` on diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 787fa3c50..412282a4f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -281,6 +281,8 @@ jobs: std: 20 - clang: 10 std: 17 + - clang: 14 + std: 20 name: "🐍 3 • Clang ${{ matrix.clang }} • C++${{ matrix.std }} • x64" container: "silkeh/clang:${{ matrix.clang }}" diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index a54a72734..31d893c47 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -36,7 +36,7 @@ jobs: # in .github/CONTRIBUTING.md and update as needed. name: Clang-Tidy runs-on: ubuntu-latest - container: silkeh/clang:12 + container: silkeh/clang:13 steps: - uses: actions/checkout@v3 @@ -46,7 +46,7 @@ jobs: - name: Configure run: > cmake -S . -B build - -DCMAKE_CXX_CLANG_TIDY="$(which clang-tidy)" + -DCMAKE_CXX_CLANG_TIDY="$(which clang-tidy);--use-color;--warnings-as-errors=*" -DDOWNLOAD_EIGEN=ON -DDOWNLOAD_CATCH=ON -DCMAKE_CXX_STANDARD=17 diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 000000000..7a49a6ac4 --- /dev/null +++ b/docs/_static/css/custom.css @@ -0,0 +1,3 @@ +.highlight .go { + color: #707070; +} diff --git a/docs/_static/theme_overrides.css b/docs/_static/theme_overrides.css deleted file mode 100644 index 1071809fa..000000000 --- a/docs/_static/theme_overrides.css +++ /dev/null @@ -1,11 +0,0 @@ -.wy-table-responsive table td, -.wy-table-responsive table th { - white-space: initial !important; -} -.rst-content table.docutils td { - vertical-align: top !important; -} -div[class^='highlight'] pre { - white-space: pre; - white-space: pre-wrap; -} diff --git a/docs/conf.py b/docs/conf.py index 00796fbdb..2da6773f4 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,6 +35,7 @@ DIR = Path(__file__).parent.resolve() # ones. extensions = [ "breathe", + "sphinx_copybutton", "sphinxcontrib.rsvgconverter", "sphinxcontrib.moderncmakedomain", ] @@ -125,23 +126,7 @@ todo_include_todos = False # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -on_rtd = os.environ.get("READTHEDOCS", None) == "True" - -if not on_rtd: # only import and set the theme if we're building docs locally - import sphinx_rtd_theme - - html_theme = "sphinx_rtd_theme" - html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] - - html_context = {"css_files": ["_static/theme_overrides.css"]} -else: - html_context = { - "css_files": [ - "//media.readthedocs.org/css/sphinx_rtd_theme.css", - "//media.readthedocs.org/css/readthedocs-doc-embed.css", - "_static/theme_overrides.css", - ] - } +html_theme = "furo" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the @@ -172,6 +157,10 @@ else: # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] +html_css_files = [ + "css/custom.css", +] + # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. diff --git a/docs/pybind11-logo.png b/docs/pybind11-logo.png index 4cbad54f7..2d633a4d0 100644 Binary files a/docs/pybind11-logo.png and b/docs/pybind11-logo.png differ diff --git a/docs/requirements.txt b/docs/requirements.txt index e452ed261..d2a9ae164 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,5 +1,6 @@ -breathe==4.32.0 -sphinx==4.4.0 -sphinx_rtd_theme==1.0.0 +breathe==4.34.0 +furo==2022.6.21 +sphinx==5.0.2 +sphinx-copybutton==0.5.0 sphinxcontrib-moderncmakedomain==3.21.4 sphinxcontrib-svg2pdfconverter==1.2.0 diff --git a/include/pybind11/eigen.h b/include/pybind11/eigen.h index 71df3eb8b..4d221b3d7 100644 --- a/include/pybind11/eigen.h +++ b/include/pybind11/eigen.h @@ -692,9 +692,9 @@ struct type_caster::value>> { array outerIndices((rowMajor ? src.rows() : src.cols()) + 1, src.outerIndexPtr()); array innerIndices(src.nonZeros(), src.innerIndexPtr()); - return matrix_type(std::make_tuple( + return matrix_type(pybind11::make_tuple( std::move(data), std::move(innerIndices), std::move(outerIndices)), - std::make_pair(src.rows(), src.cols())) + pybind11::make_tuple(src.rows(), src.cols())) .release(); } diff --git a/noxfile.py b/noxfile.py index 341d964e9..fe36d70fe 100644 --- a/noxfile.py +++ b/noxfile.py @@ -61,10 +61,10 @@ def docs(session: nox.Session) -> None: session.chdir("docs") if "pdf" in session.posargs: - session.run("sphinx-build", "-b", "latexpdf", ".", "_build") + session.run("sphinx-build", "-M", "latexpdf", ".", "_build") return - session.run("sphinx-build", "-b", "html", ".", "_build") + session.run("sphinx-build", "-M", "html", ".", "_build") if "serve" in session.posargs: session.log("Launching docs at http://localhost:8000/ - use Ctrl-C to quit") diff --git a/tests/test_embed/CMakeLists.txt b/tests/test_embed/CMakeLists.txt index 69c33bbd5..09a369399 100644 --- a/tests/test_embed/CMakeLists.txt +++ b/tests/test_embed/CMakeLists.txt @@ -7,7 +7,7 @@ if("${PYTHON_MODULE_EXTENSION}" MATCHES "pypy" OR "${Python_INTERPRETER_ID}" STR return() endif() -find_package(Catch 2.13.5) +find_package(Catch 2.13.9) if(CATCH_FOUND) message(STATUS "Building interpreter tests using Catch v${CATCH_VERSION}") diff --git a/tests/test_virtual_functions.cpp b/tests/test_virtual_functions.cpp index f6d8c5e3c..323aa0d22 100644 --- a/tests/test_virtual_functions.cpp +++ b/tests/test_virtual_functions.cpp @@ -342,9 +342,8 @@ TEST_SUBMODULE(virtual_functions, m) { const AdderBase &adder, const AdderBase::DataVisitor &visitor) { adder(first, second, [&](const AdderBase::Data &first_plus_second) { - adder(first_plus_second, - third, - visitor); // NOLINT(readability-suspicious-call-argument) + // NOLINTNEXTLINE(readability-suspicious-call-argument) + adder(first_plus_second, third, visitor); }); });