1
0
mirror of https://github.com/pybind/pybind11.git synced 2025-02-27 16:14:46 +00:00
Commit Graph

150 Commits

Author SHA1 Message Date
Sergiu Deitsch
d2b2131603
cmake: report version type in the version string () 2021-11-16 10:03:41 -05:00
Henry Schreiner
90707b46f2
fix(build): support conan's multiple includes of all files () 2021-10-27 15:06:02 -04:00
Henry Schreiner
e7e2c79f3f
fix: improve support for Python 3.11-dev ()
* ci: support Python 3.11-dev

Also update 3.10 to final, better PyPy usage

* fix: use PyFrame_GetCode on Python 3.9+

* ci: some bitiness of pypy not supported on win

* chore: update CMake support to 3.22rc1 to quiet warning

* fix: use dev version of py to fix Py 3.11

* tests: print proper Eigen version

* ci: include pypy2, not sure why

* ci: avoid running on Python 3.11 for now

* ci: fix runs

* ci: simpler PyPy usage, drop unmaintained scipy + pypy index

* ci: only binary numpy, wait on pypy 3.8

* refactor: address review
2021-10-26 14:50:34 -04:00
Henry Schreiner
d58699c9ab
fix(cmake): reduce chance for variable collision () 2021-09-24 17:47:03 -04:00
Wenzel Jakob
409be8336f CMake: react to python version changes
The new FindPython-based variant of the CMake scripts caches information
about the chosen Python version that can become stale. For example,
suppose I configure a simple pybind11-based project as follows

```
cmake -S . -B build -GNinja -DPython_ROOT=<path to python 3.8>
```

which will generate `my_extension.cpython-38-x86_64-linux-gnu.so`.
A subsequent change to the python version like

```
cmake -S . -B build -GNinja -DPython_ROOT=<path to python 3.9>
```

does not update all necessary build system information. In particular,
the compiled file is still called
`my_extension.cpython-38-x86_64-linux-gnu.so`.

This commit fixes the problem by detecting changes in
`Python_EXECUTABLE` and re-running Python as needed.

Note that the previous way of detecting Python does not seem to be
affected, it always specifies the right suffix.
2021-09-24 17:42:06 +02:00
Henry Schreiner
6ad3f874a7
fix(build): avoid a possible warning about shadowed variables and changing behaviors () 2021-09-23 15:42:16 -04:00
Aaron Gokaslan
9df2f1ff13
maint(precommit): Apply isort ()
* Apply isort

* Tweak isort config

* Add env.py as a known_first_party

* Add one missing known first party

* Make config compat with older isort versions

* Add another comment

* Revert pyproject setting
2021-08-13 12:37:05 -04:00
Ralf W. Grosse-Kunstleve
7d3b05715b
Improved workaround for Centos 8 failure (follow-on to PR ). ()
* Rollback of PR  (Working around Centos 8 failure).

* Adding `-DCMAKE_BUILD_TYPE=Release`

* Improving existing workaround (undoing the originally intended rollback).

* Fixing minor documentation bug.
2021-08-12 13:21:49 -07:00
Jerome Robert
9e8a741baa
fix: Mingw64 corrected and add a CI job to test it ()
* mingw64 platform string is like mingw_xxx not "mingw"

See https://github.com/msys2/MINGW-packages/blob/master/mingw-w64-python/0099-Change-the-get_platform-method-in-sysconfig-and-dist.patch

* Mingw: Do not dllexport exceptions

This is a fix for errors like:

D:/a/pybind11/pybind11/include/pybind11/detail/common.h:735:23: error: 'dllexport' implies default visibility, but 'class pybind11::builtin_exception' has already been declared with a different visibility
  735 | class PYBIND11_EXPORT builtin_exception : public std::runtime_error {
      |                       ^~~~~~~~~~~~~~~~~

* GHA: Test Mingw64 build

* fix: avoid thin binaries on mingw

* fix: drop lto on MinGW

* Mingw64: disable PYBIND11_DEPRECATED

It trigger many warnings for unknown reasons

Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2021-07-30 13:48:41 -04:00
Henry Schreiner
7cc0ebb475
fix: the CMake config in Python package had a hard coded path () 2021-07-27 17:23:52 -04:00
Henry Schreiner
2415c09459
feat(package): support pipx run () 2021-07-15 15:01:29 -04:00
Aaron Gokaslan
c4b0dc7cdd
Add shellcheck style checking () 2021-07-14 16:52:13 -04:00
Henry Schreiner
7a64b8adcc
docs: fix script issues for changelog compilation ()
[skip ci]
2021-07-12 14:10:46 -04:00
Ralf W. Grosse-Kunstleve
6d1b197b46
Splitting out pybind11/stl/filesystem.h. ()
* Splitting out pybind11/stl/filesystem.h.

To solve breakages like: https://github.com/deepmind/open_spiel/runs/2999582108

Mostly following the suggestion here: https://github.com/pybind/pybind11/pull/2730#issuecomment-750507575

Except using pybind11/stl/filesystem.h instead of pybind11/stlfs.h, as decided via chat.

stl.h restored to the exact state before merging PR  via:
```
git checkout 733f8de24f stl.h
```

* Properly including new stl subdirectory in pip wheel config.

This now passes interactively:
```
pytest tests/extra_python_package/
```

* iwyu cleanup.

iwyuh.py -c -std=c++17 -DPYBIND11_TEST_BOOST -Ipybind11/include -I/usr/include/python3.9 -I/usr/include/eigen3 include/pybind11/stl/filesystem.h

* Adding PYBIND11_HAS_FILESYSTEM_IS_OPTIONAL.

* Eliminating else after return.
2021-07-08 09:02:48 -07:00
Robert Schütz
d00fc62931
use CMAKE_INSTALL_FULL_INCLUDEDIR () 2021-06-19 18:45:53 -04:00
Akira Kawata
417fd120cc
Fix: fix typo of WITHOUT_SOABI () 2021-05-06 00:19:05 -07:00
Weiming Zhao
4f0727f280
Fix the enabling of default extension handling () 2021-04-05 23:50:50 -04:00
Axel Huebl
c78dfb69f2
MSVC but not Clang: /MP ()
On Windows, clang-cl does not understand /MP.
```
clang-cl: warning: argument unused during compilation: '/MP' [-Wunused-command-line-argument]
```
with Clang 10.0.0
2021-02-08 15:40:04 -05:00
Henry Schreiner
08bca374fd
docs: update changelog, nicer output for script () 2021-01-21 11:34:39 -05:00
Henry Schreiner
eb83feefff
style: avoid using unintialized variables ()
* style: avoid using unintialized variables

Tested with cmake --warn-unintialized -S . -B build

* refactor: use function for possibly uninit vars
2021-01-19 18:48:22 -05:00
heyer2
76a160070b
fix: STATIC and SHARED flags not being detected ()
* Fix STATIC and SHARED flags not being detected

* fix: use classic naming for all lib types

Co-authored-by: Henry Schreiner <henryschreineriii@gmail.com>
2021-01-14 19:51:41 +01:00
Henry Schreiner
230fa53f16
fix: Don't override global settings for VISIBILITY if set ()
Sometimes programmers want to control this, and while it can be changed after the fact, it's commonly set via a CMAKE_ variable; if that variable is set, we should respect that (like the CMAKE_INTERPROCEDURAL_OPTIMIZATION setting).
2021-01-14 08:31:48 -05:00
Yannick Jadoul
f243450e89
ci: disable builds for 3.10.0a4, and enable a nightly 3.10-dev build ()
* Disable builds for 3.10.0a4, and enable a nightly 3.10-dev build

* Fix job name

* Remove deadsnakes job for now

* Add deadsnakes jobs

* There's no deadsnakes 2.7

* Add 3.10 to versions to be discovered by legacy FindPython, and fix debug input to deadsnakes/action

* Try out branch with fix

* Update to deadsnakes/action@v2.1.1
2021-01-13 23:13:19 -05:00
Henry Schreiner
5bd766bf6c
docs: update changelog and add script to help generate it () 2020-12-21 21:04:33 -05:00
Henry Schreiner
ffb113d1d8
fix: regression with installed pybind11 overriding local one ()
* fix: regression with installed pybind11 overriding discovered one

Closes 

* docs: wording incorrect
2020-12-15 21:55:14 -05:00
Frank
f8b8107b46
fix: make FindPython2 and FindPython3 work () 2020-11-15 11:55:42 -05:00
Henry Schreiner
3e4d54bc01
fix: match new extension discovery with changes to classic discovery ()
* fix: match new extension discovery with changes to classic discovery

Followup to  - this was fixed in 2.6.0, but only for classic Python

* fix: followup to avoid warnings
2020-11-05 14:37:11 -05:00
Henry Schreiner
b8dc60ec8f
fix: Python include directory was missing from DIRS () 2020-11-02 20:45:54 -05:00
Henry Schreiner
a42211536b fix: new line in PYPY_VERSION 2020-10-15 17:38:49 -04:00
Henry Schreiner
ad2fe0ee7b fix: pypy3 windows extension issue 2020-10-15 17:38:49 -04:00
Henry Schreiner
645d83813b
feat: typing support for helpers ()
* feat: basic typing support

* docs: mention syncing as suggested by @rwgk

* docs: update changelog

* docs: copy of warning in limitations
2020-10-14 14:08:41 -04:00
Henry Schreiner
a8c2e3eec5
fix: ipo should be off for debug or relwithdebinfo ()
* fix: ipo should be off for debug or relwithdebinfo

Closes 

* docs: slightly more detailed about IPO

* Update pybind11Common.cmake
2020-10-14 13:43:31 -04:00
Henry Schreiner
d46f3322a4
fix: allow cmake varibles from Python calls to be cached () 2020-10-09 17:33:45 -04:00
Henry Schreiner
2a2f52201d
fix: find_import didn't work properly for classic tools ()
* fix: find_import didn't work properly for classic tools

* ci: fix all files not being checked in style run
2020-10-05 15:31:00 -04:00
Henry Schreiner
3488494a81
refactor: import check as a common function ()
* feat: import check as a common function

* docs: add cmake to docs
2020-10-02 22:34:22 -04:00
Henry Schreiner
6d2d08db00
fix: conda-forge patch () 2020-10-02 09:56:54 -04:00
Wenzel Jakob
3232e59b83
Check if module file extension could be queried correctly ()
On very incomplete python installations (e.g. within Docker), it's
possible that distutils is not installed. In that case, the
``execute_command`` statement that queries distutils for the Python
module extension fails, and pybind11 uses the empty string. This commit
adds an extra check that causes a CMake failure with more actionable
information (just spent a lot of time trying to track down this problem :))
2020-09-30 17:49:11 -04:00
Henry Schreiner
82dbc5b78f
ci: releases ()
* ci: releases

* docs: minor update form @wjakob

* fix: enforce reasonable version of setuptools
2020-09-30 15:48:08 -04:00
Henry Schreiner
e01f492462
fix: Add a nice CMake error when Interpreter component is missing. ()
Closes , found by @rhjdjong
2020-09-21 18:34:48 -04:00
Henry Schreiner
e37921d761
refactor: drop mkdoc and update changelog ()
* refactor: drop mkdoc

* docs: update changelog
2020-09-16 17:14:06 -04:00
Henry Schreiner
fd61f5038e
feat: setup.py redesign and helpers ()
* feat: setup.py redesign and helpers

* refactor: simpler design with two outputs

* refactor: helper file update and Windows support

* fix: review points from @YannickJadoul

* refactor: fixes to naming and more docs

* feat: more customization points

* feat: add entry point pybind11-config

* refactor: Try Extension-focused method

* refactor: rename alt/inplace to global

* fix: allow usage with git modules, better docs

* feat: global as an extra (@YannickJadoul's suggestion)

* feat: single version location

* fix: remove the requirement that setuptools must be imported first

* fix: some review points from @wjacob

* fix: use .in, add procedure to docs

* refactor: avoid monkeypatch copy

* docs: minor typos corrected

* fix: minor points from @YannickJadoul

* fix: typo on Windows C++ mode

* fix: MSVC 15 update 3+ have c++14 flag

See <https://docs.microsoft.com/en-us/cpp/build/reference/std-specify-language-standard-version?view=vs-2019>

* docs: discuss making SDists by hand

* ci: use pep517.build instead of manual setup.py

* refactor: more comments from @YannickJadoul

* docs: updates from @ktbarrett

* fix: change to newly recommended tool instead of pep517.build

This was intended as a proof of concept; build seems to be the correct replacement.

See https://github.com/pypa/pep517/pull/83

* docs: updates from @wjakob

* refactor: dual version locations

* docs: typo spotted by @wjakob
2020-09-16 17:13:41 -04:00
Wenzel Jakob
36c666f027 pybind11_add_module(): OPT_SIZE target 2020-09-06 16:46:38 +02:00
Henry Schreiner
ce1a07ef45
fix: use classic extension handling unless otherwise requested ()
* fix: use classic extension handling unless otherwise requested

* fix: variable must be cached to be used externally
2020-09-04 21:54:09 -04:00
Henry Schreiner
9b8cb02030
fix: respect PYTHON_VERSION if set in classic mode ()
* fix: respect PYTHON_VERSION if set in classic mode

* fix: add warning when using PYTHON_VERSION
2020-08-26 09:07:30 -04:00
Henry Schreiner
c58f7b745b
fix: reduce target collision in add_submodule mode ()
* fix: reduce target collision in add_submodule mode

Closes 

* fix: update CMakeLists.txt
2020-08-22 09:06:01 -04:00
Henry Schreiner
56df3c4649
fix: a couple more places where pybind11 is missing 11 () 2020-08-21 15:27:21 -04:00
Bjorn
d4d7ef5d27
Update pybind11Tools.cmake ()
CPython configured with `--with-pydebug` could not use `pybind11_add_module`
2020-08-21 14:52:38 -04:00
Henry Schreiner
1729aae96f
feat: new FindPython support ()
* feat: FindPython support

* refactor: rename to PYBIND11_FINDPYTHON

* docs: Caps fixes

* feat: NOPYTHON mode

* test: check simple call

* docs: add changelog/upgrade guide

* feat: Support Python3 and Python2

* refactor: Use targets in tests

* fix: support CMake 3.4+

* feat: classic search also finds virtual environments

* docs: some updates from @wjakob's review

* fix: wrong name for QUIET mode variable, reported by @skoslowski

* refactor: cleaner output messaging

* fix: support debug Python's in FindPython mode too

* fixup! refactor: cleaner output messaging

* fix: missing pybind11_FOUND and pybind11_INCLUDE_DIR restored to subdir mode

* fix: nicer reporting of Python / PyPy

* fix: out-of-order variable fix

* docs: minor last-minute cleanup
2020-08-19 12:26:26 -04:00
Henry Schreiner
0af7fe6c19
fix: typo in pybind11_add_module () 2020-08-08 17:34:38 -04:00
Henry Schreiner
227170dc2f fix: better handling of PYBIND11_CPP_STANDARD 2020-08-06 11:54:41 -04:00