1. 18 Apr, 2017 5 commits
    • Jason Rhinelander's avatar
      Don't allow mixed static/non-static overloads · d355f2fc
      Jason Rhinelander authored
      We currently fail at runtime when trying to call a method that is
      overloaded with both static and non-static methods.  This is something
      python won't allow: the object is either a function or an instance, and
      can't be both.
      d355f2fc
    • Jason Rhinelander's avatar
      Keep skipping buffer tests on pypy · 90bac963
      Jason Rhinelander authored
      Adding numpy to the pypy test exposed a segfault caused by the buffer
      tests in test_stl_binders.py: the first such test was explicitly skipped
      on pypy, but the second (test_vector_buffer_numpy) which also seems to
      cause an occasional segfault was just marked as requiring numpy.
      
      Explicitly skip it on pypy as well (until a workaround, fix, or pypy fix
      are found).
      90bac963
    • Jason Rhinelander's avatar
      Remove unneeded exports · d170731f
      Jason Rhinelander authored
      Various bash variables that are only used in the travis-ci script and
      don't need to propagate (e.g. to cmake) are being pointlessly exported;
      this removes these `export`s.
      d170731f
    • Jason Rhinelander's avatar
      Switch clang-4.0 build to trusty; cache libc++ · f0c7c008
      Jason Rhinelander authored
      This uses the trusty container rather than docker for the clang 4.0
      build.  It also caches the local libc++ installation so that it doesn't
      need to be compiled every time, which should speed up the job
      considerably.
      f0c7c008
    • Jason Rhinelander's avatar
      travis-ci: switch to trusty; cache pip packages · 3d500516
      Jason Rhinelander authored
      This applies several changes to the non-docker travis-ci builds:
      
      - Make all builds use trusty rather than precise.  pybind can't really
        build in precise anyway (we install essentially the entire toolchain
        backported from trusty on every build), and so this saves needing to
        install all the backported packages during the build setup.
      - Updated the 3.5 build to 3.6 (via deadsnakes, which didn't backport
        3.6 to ubuntu releases earlier than trusty).
      - As a result of the switch to trusty, the BAREBONES build now picks up
        the (default installed) python 3.5 installation.
      - Invoke pip everywhere via $PYTHON -m pip rather than the pip
        executable, which saves us having to figure out what the pip
        executable is, and ensures that we are using the correct pip.
      - Install packages with `pip --user` rather than in a virtualenv.
      - Add the local user python package archive to the travis-ci cache
        (rather than the pip cache).  This saves needing to install packages
        during installation (unless there are updates, in which case the
        package and the cache are updated).
      - Install numpy and scipy on the pypy build.  This has to build from
        source (and so blas and fortran need to be installed on the build),
        but given the above caching, the build will only be slow for the first
        build after a new numpy/scipy release.  This testing is valuable:
        numpy has various behaviour differences under pypy.
      - Added set -e/+e around the before_install/install blocks so that a
        failure here (e.g. a pip install failure or dependency download
        failure) triggers a build failure.
      - Update eigen version to latest (3.3.3), mainly to be consistent with
        the appveyor build.
      - The travis trusty environment has an upgraded cmake, so this
        downgrades cmake (to the stock trusty version) on the first couple
        jobs so that we're still including some cmake 2.8.12 testing.
      3d500516
  2. 17 Apr, 2017 1 commit
  3. 15 Apr, 2017 1 commit
    • Jason Rhinelander's avatar
      Fixed bad_arg_def imports · 2d14c1c5
      Jason Rhinelander authored
      Don't try to define these in the issues submodule, because that fails
      if testing without issues compiled in (e.g. using
      cmake -DPYBIND11_TEST_OVERRIDE=test_methods_and_attributes.cpp).
      2d14c1c5
  4. 14 Apr, 2017 1 commit
  5. 13 Apr, 2017 4 commits
    • Jason Rhinelander's avatar
      Make any_container implicitly constructible from arithmetic values · 201796d9
      Jason Rhinelander authored
      This further reduces the constructors required in buffer_info/numpy by
      removing the need for the constructors that take a single size_t and
      just forward it on via an initializer_list to the container-accepting
      constructor.
      
      Unfortunately, in `array` one of the constructors runs into an ambiguity
      problem with the deprecated `array(handle, bool)` constructor (because
      both the bool constructor and the any_container constructor involve an
      implicit conversion, so neither has precedence), so a forwarding
      constructor is kept there (until the deprecated constructor is
      eventually removed).
      201796d9
    • Jason Rhinelander's avatar
      Accept abitrary containers and iterators for shape/strides · 5f383862
      Jason Rhinelander authored
      This adds support for constructing `buffer_info` and `array`s using
      arbitrary containers or iterator pairs instead of requiring a vector.
      
      This is primarily needed by PR #782 (which makes strides signed to
      properly support negative strides, and will likely also make shape and
      itemsize to avoid mixed integer issues), but also needs to preserve
      backwards compatibility with 2.1 and earlier which accepts the strides
      parameter as a vector of size_t's.
      
      Rather than adding nearly duplicate constructors for each stride-taking
      constructor, it seems nicer to simply allow any type of container (or
      iterator pairs).  This works by replacing the existing vector arguments
      with a new `detail::any_container` class that handles implicit
      conversion of arbitrary containers into a vector of the desired type.
      It can also be explicitly instantiated with a pair of iterators (e.g.
      by passing {begin, end} instead of the container).
      5f383862
    • Jason Rhinelander's avatar
      Move buffer_info to its own header · dbb4c5b5
      Jason Rhinelander authored
      Upcoming changes to buffer_info make it need some things declared in
      common.h; it also feels a bit misplaced in common.h (which is arguably
      too large already), so move it out.  (Separating this and the subsequent
      changes into separate commits to make the changes easier to distinguish
      from the move.)
      dbb4c5b5
    • Jason Rhinelander's avatar
      array: set exception message on failure · 5749b502
      Jason Rhinelander authored
      When attempting to get a raw array pointer we return nullptr if given a
      nullptr, which triggers an error_already_set(), but we haven't set an
      exception message, which results in "Unknown internal error".
      
      Callers that want explicit allowing of a nullptr here already handle it
      (by clearing the exception after the call).
      5749b502
  6. 12 Apr, 2017 1 commit
    • Wenzel Jakob's avatar
      improve mkdoc.py determinism · 257df10f
      Wenzel Jakob authored
      When processing many files that contain top-level items with the same
      name (e.g. "operator<<"), the output was non-deterministic and depended
      on the order in which the different Clang processes finished. This
      commit adds sorting that also accounts for the filename to prevent
      random changes from run to run.
      257df10f
  7. 11 Apr, 2017 1 commit
  8. 10 Apr, 2017 1 commit
  9. 09 Apr, 2017 2 commits
    • Jason Rhinelander's avatar
      Appveyor: Remove /m to attempt to resolve build failures · 4c72ec22
      Jason Rhinelander authored
      /m also doesn't seem to have made the builds any faster.
      4c72ec22
    • Jason Rhinelander's avatar
      Fix Eigen argument doc strings · e9e17746
      Jason Rhinelander authored
      Many of the Eigen type casters' name() methods weren't wrapping the type
      description in a `type_descr` object, which thus wasn't adding the
      "{...}" annotation used to identify an argument which broke the help
      output by skipping eigen arguments.
      
      The test code I had added even had some (unnoticed) broken output (with
      the "arg0: " showing up in the return value).
      
      This commit also adds test code to ensure that named eigen arguments
      actually work properly, despite the invalid help output.  (The added
      tests pass without the rest of this commit).
      e9e17746
  10. 08 Apr, 2017 2 commits
    • Jason Rhinelander's avatar
      Add static_assert to holder casters · 501135fa
      Jason Rhinelander authored
      The holder casters assume but don't check that a `holder<type>`'s `type`
      is really a `type_caster_base<type>`; this adds a static_assert to make
      sure this is really the case, to turn things like
      `std::shared_ptr<array>` into a compilation failure.
      
      Fixes #785
      501135fa
    • Jason Rhinelander's avatar
      Remove gcc 6/7 LTO and -Werror workarounds · d994db2d
      Jason Rhinelander authored
      The gcc versions in Debian stretch (gcc 6) and experimental (gcc 7)
      incorporate the upstream gcc fixes.
      d994db2d
  11. 07 Apr, 2017 2 commits
  12. 06 Apr, 2017 3 commits
    • Jason Rhinelander's avatar
      Remove object::borrowed/stolen · 16c86638
      Jason Rhinelander authored
      PR #771 deprecated them as they can cause linking failures (#770), but
      the deprecation tags cause warnings on GCC 5.x through 6.2.x.  Removing
      them entirely will break backwards-compatibility consequences, but the
      effects should be minimal (only code that was inheriting from `object`
      could get at them at all as they are protected).
      
      Fixes #777
      16c86638
    • Dean Moldovan's avatar
      Fix test_cmake_build failure with bare python exe name (fix #783) · 555dc4f0
      Dean Moldovan authored
      Besides appearing in the CMake GUI, the `:FILENAME` specifier changes
      behavior as well:
      
      cmake -DPYTHON_EXECUTABLE=python ..  # FAIL, can't find python
      cmake -DPYTHON_EXECUTABLE=/path/to/python ..  # OK
      cmake -DPYTHON_EXECUTABLE:FILENAME=python ..  # OK
      cmake -DPYTHON_EXECUTABLE:FILENAME=/path/to/python ..  # OK
      555dc4f0
    • Jason Rhinelander's avatar
      Skip VS2015/x86 builds · 087b8d84
      Jason Rhinelander authored
      AppVeyor just added support for excluding specific jobs; thhis commit
      cuts the number of builds down to 6 from 8 by eliminating the VS2015 x86
      builds.
      087b8d84
  13. 05 Apr, 2017 3 commits
    • Ivan Smirnov's avatar
      Fix -Wmissing-braces warning · 7348c407
      Ivan Smirnov authored
      7348c407
    • Jason Rhinelander's avatar
      Improve make_tuple error message under debugging · 6906b270
      Jason Rhinelander authored
      When make_tuple fails (for example, when print() is called with a
      non-convertible argument, as in #778) the error message a less helpful
      than it could be:
      
          make_tuple(): unable to convert arguments of types 'std::tuple<type1, type2>' to Python object
      
      There is no actual std::tuple involved (only a parameter pack and a
      Python tuple), but it also doesn't immediately reveal which type caused
      the problem.
      
      This commit changes the debugging mode output to show just the
      problematic type:
      
          make_tuple(): unable to convert argument of type 'type2' to Python object
      6906b270
    • Wenzel Jakob's avatar
      AppVeyor: use parallel builds · 8f010cce
      Wenzel Jakob authored
      My group now has a subscription to AppVeyor pro, which also permits
      running parallel builds on the open source projects.
      8f010cce
  14. 02 Apr, 2017 3 commits
  15. 01 Apr, 2017 1 commit
  16. 30 Mar, 2017 2 commits
  17. 28 Mar, 2017 2 commits
    • Dean Moldovan's avatar
      Support raw string literals as input for py::eval (#766) · 194d8b99
      Dean Moldovan authored
      * Support raw string literals as input for py::eval
      * Dedent only when needed
      194d8b99
    • Jason Rhinelander's avatar
      Deprecated borrowed/stolen for borrowed_t{}/stolen_t{} (#771) · 6db60cd9
      Jason Rhinelander authored
      The constexpr static instances can cause linking failures if the
      compiler doesn't optimize away the reference, as reported in #770.
      
      There's no particularly nice way of fixing this in C++11/14: we can't
      inline definitions to match the declaration aren't permitted for
      non-templated static variables (C++17 *does* allows "inline" on
      variables, but that obviously doesn't help us.)
      
      One solution that could work around it is to add an extra inherited
      subclass to `object`'s hierarchy, but that's a bit of a messy solution
      and was decided against in #771 in favour of just deprecating (and
      eventually dropping) the constexpr statics.
      
      Fixes #770.
      6db60cd9
  18. 26 Mar, 2017 1 commit
  19. 24 Mar, 2017 1 commit
    • Ghislain Antony Vaillant's avatar
      Arch-indep CMake packaging (#764) · 5b503764
      Ghislain Antony Vaillant authored
      * Arch-indep CMake packaging
      
      Since pybind11 is a header-only library, the CMake packaging does not have to carry any architecture specific checks. Without this patch, the detection of pybind11 will fail on 32-bit architectures if the project was built on a 64-bit machine and vice-versa. This fix is similar to what is applied to `Eigen` and other header-only C++ libraries.
      5b503764
  20. 22 Mar, 2017 3 commits