mirror of
https://github.com/boostorg/python.git
synced 2026-01-19 16:32:16 +00:00
Compare commits
19 Commits
boost-1.67
...
pr/unconfi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a858c2dc3c | ||
|
|
11b9e3d4a7 | ||
|
|
02095af952 | ||
|
|
ed4776b59c | ||
|
|
ac62db1cf1 | ||
|
|
b4230e98f6 | ||
|
|
467a89eba7 | ||
|
|
28e2c6512c | ||
|
|
77ff0d6bbc | ||
|
|
24313709a7 | ||
|
|
ac9fa536c8 | ||
|
|
7352c9c0f7 | ||
|
|
26ac881b9d | ||
|
|
19f6c782aa | ||
|
|
f3df1bf912 | ||
|
|
d515eb82c8 | ||
|
|
0021720a46 | ||
|
|
61591f7ad2 | ||
|
|
6b8ab7a5a3 |
@@ -4,7 +4,7 @@ environment:
|
||||
# /E:ON and /V:ON options are not enabled in the batch script intepreter
|
||||
# See: http://stackoverflow.com/a/13751649/163740
|
||||
CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\ci\\run_with_env.cmd"
|
||||
BOOST_PREFIX: C:\Libraries\boost_1_63_0
|
||||
BOOST_PREFIX: C:\Libraries\boost_1_66_0
|
||||
|
||||
matrix:
|
||||
|
||||
@@ -18,21 +18,19 @@ environment:
|
||||
MSVC: "14.0"
|
||||
ARCH: x86
|
||||
|
||||
#- PYTHON: "C:\\Python27-x64"
|
||||
# PYTHON_VERSION: "2.7.x" # currently 2.7.9
|
||||
# PYTHON_ARCH: "64"
|
||||
# ARCH: "x86_64"
|
||||
|
||||
#- PYTHON: "C:\\Python35"
|
||||
# PYTHON_VERSION: "3.5.x" # currently 3.4.3
|
||||
# PYTHON_ARCH: "32"
|
||||
|
||||
- PYTHON: "C:\\Python36-x64"
|
||||
PYTHON_VERSION: "3.6.x"
|
||||
PYTHON_ARCH: "64"
|
||||
MSVC: "12.0"
|
||||
ARCH: x86_64
|
||||
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
PYTHON: "C:\\Python36-x64"
|
||||
PYTHON_VERSION: "3.6.x"
|
||||
PYTHON_ARCH: "64"
|
||||
MSVC: "14.13.26128"
|
||||
ARCH: x86_64
|
||||
|
||||
install:
|
||||
# If there is a newer build queued for the same PR, cancel this one.
|
||||
# The AppVeyor 'rollout builds' option is supposed to serve the same
|
||||
@@ -47,8 +45,9 @@ install:
|
||||
- ps: "ls \"C:/\""
|
||||
- ECHO "Installed libraries:"
|
||||
- ps: "ls \"C:/Libraries/\""
|
||||
- ECHO "Installed SDKs:"
|
||||
- ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
|
||||
## This path doesn't exist with the VS 2017 worker images
|
||||
#- ECHO "Installed SDKs:"
|
||||
#- ps: "ls \"C:/Program Files/Microsoft SDKs/Windows\""
|
||||
|
||||
# Install Python (from the official .msi of http://python.org) and pip when
|
||||
# not already installed.
|
||||
@@ -72,13 +71,13 @@ install:
|
||||
# pip will build them from source using the MSVC compiler matching the
|
||||
# target Python version and architecture
|
||||
- |
|
||||
curl -LfsS -o faber.tar.gz https://github.com/stefanseefeld/faber/archive/snapshot/2018-03-07.tar.gz
|
||||
curl -LfsS -o faber.tar.gz https://github.com/stefanseefeld/faber/archive/snapshot/2018-04-08.tar.gz
|
||||
tar xf faber.tar.gz
|
||||
CD faber-snapshot-2018-03-07
|
||||
CD faber-snapshot-2018-04-08
|
||||
python setup.py install
|
||||
CD ..
|
||||
# report the available MSVC compilers
|
||||
- python -m faber.tools.msvc
|
||||
- faber --info=tools cxx
|
||||
- easy_install sphinx
|
||||
- pip install numpy
|
||||
|
||||
|
||||
20
.travis.yml
20
.travis.yml
@@ -17,20 +17,23 @@ env:
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- compiler: gcc
|
||||
- os: linux
|
||||
env: CXX=g++ PYTHON=python CXXFLAGS=-std=c++98
|
||||
- compiler: gcc
|
||||
- os: linux
|
||||
env: CXX=g++ PYTHON=python CXXFLAGS=-std=c++11
|
||||
- compiler: gcc
|
||||
- os: linux
|
||||
env: CXX=g++ PYTHON=python3 CXXFLAGS=-std=c++98
|
||||
- compiler: gcc
|
||||
- os: linux
|
||||
env: CXX=g++ PYTHON=python3 CXXFLAGS=-std=c++11
|
||||
- compiler: clang
|
||||
- os: linux
|
||||
env: CXX=clang++ PYTHON=python3 CXXFLAGS=-std=c++98
|
||||
- compiler: clang
|
||||
- os: linux
|
||||
env: CXX=clang++ PYTHON=python3 CXXFLAGS=-std=c++11
|
||||
- os: osx
|
||||
env: CXX=clang++ PYTHON=python CXXFLAGS=-std=c++11
|
||||
- env: PYTHON=python DOC=1
|
||||
|
||||
allow_failures:
|
||||
- os: osx
|
||||
|
||||
addons:
|
||||
apt:
|
||||
@@ -64,7 +67,6 @@ install:
|
||||
# Install our own version of Boost (the subset we need) as the system version is
|
||||
# too old (for C++11 support).
|
||||
- |
|
||||
set -e
|
||||
if [ ! -d $HOME/Boost/tools/boostbook ]; then
|
||||
echo "rebuilding Boost prerequisites."
|
||||
wget https://sourceforge.net/projects/boost/files/boost/1.66.0/boost_1_66_0.tar.gz/download
|
||||
@@ -81,7 +83,7 @@ install:
|
||||
echo "using cached Boost prerequisites."
|
||||
fi
|
||||
# Install Faber, the build tool.
|
||||
date=2018-03-07
|
||||
date=2018-04-08
|
||||
wget https://github.com/stefanseefeld/faber/archive/snapshot/$date.tar.gz
|
||||
tar xf $date.tar.gz
|
||||
pushd faber-snapshot-$date
|
||||
|
||||
2
Jamfile
2
Jamfile
@@ -46,7 +46,7 @@ rule version-suffix ( version )
|
||||
python-id = [ option.get "python-buildid" ] ;
|
||||
if $(python-id)
|
||||
{
|
||||
PYTHON_ID = [ regex.replace $(python-id) [*\\/:.\"\'] _ ] ;
|
||||
PYTHON_ID = [ regex.replace $(python-id) "[*\\/:.\"\']" _ ] ;
|
||||
}
|
||||
|
||||
rule python-tag ( name : type ? : property-set )
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
# Synopsis
|
||||
|
||||
[](https://gitter.im/boostorg/python?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
Welcome to Boost.Python, a C++ library which enables seamless interoperability between C++ and the Python programming language. The library includes support for:
|
||||
|
||||
* References and Pointers
|
||||
@@ -19,7 +21,8 @@ See the [Boost.Python](http://boostorg.github.io/python) documentation for detai
|
||||
|
||||
**Hint :** Check out the [development version](http://boostorg.github.io/python/develop) of the documentation to see work in progress.
|
||||
|
||||
# Building 
|
||||
# Building [](https://travis-ci.org/boostorg/python) [](https://ci.appveyor.com/project/stefanseefeld/python/branch/develop)
|
||||
|
||||
|
||||
While Boost.Python is part of the Boost C++ Libraries super-project, and thus can be compiled as part of Boost, it can also be compiled and installed stand-alone, i.e. against a pre-installed Boost package.
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ else
|
||||
;
|
||||
}
|
||||
|
||||
if [ python.configured ]
|
||||
{
|
||||
project boost/python
|
||||
: source-location ../src
|
||||
;
|
||||
@@ -130,3 +132,30 @@ lib boost_numpy
|
||||
<link>static:<define>BOOST_NUMPY_STATIC_LIB
|
||||
<python-debugging>on:<define>BOOST_DEBUG_PYTHON
|
||||
;
|
||||
|
||||
# boost-install creates `stage` and `install` targets
|
||||
#
|
||||
# `stage` stages (builds and copies into `stage/lib`) the given libraries
|
||||
# `boost_python` and `boost_numpy` and their dependencies and is similar
|
||||
# to issuing `b2 --with-python stage` from top level
|
||||
#
|
||||
# `install` installs the two libraries and their dependencies and is similar
|
||||
# to issuing `b2 --with-python install` from top level
|
||||
|
||||
boost-install boost_python boost_numpy ;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
# When Python isn't configured, the above `boost-install` is not executed,
|
||||
# so we create empty `stage` and `install` targets that do nothing but issue
|
||||
# a warning message unless `--without-python` is given
|
||||
|
||||
alias stage : config-warning ;
|
||||
explicit stage ;
|
||||
|
||||
alias install : config-warning ;
|
||||
explicit install ;
|
||||
|
||||
}
|
||||
|
||||
@@ -1871,36 +1871,6 @@ This technique has several advantages:
|
||||
* Minimize the need to recompile
|
||||
* Rapid prototyping (you can move the code to C++ if required without changing the interface)
|
||||
|
||||
You can even add a little syntactic sugar with the use of metaclasses. Let's
|
||||
create a special metaclass that "injects" methods in other classes.
|
||||
|
||||
# The one Boost.Python uses for all wrapped classes.
|
||||
# You can use here any class exported by Boost instead of "point"
|
||||
BoostPythonMetaclass = point.__class__
|
||||
|
||||
class injector(object):
|
||||
class __metaclass__(BoostPythonMetaclass):
|
||||
def __init__(self, name, bases, dict):
|
||||
for b in bases:
|
||||
if type(b) not in (self, type):
|
||||
for k,v in dict.items():
|
||||
setattr(b,k,v)
|
||||
return type.__init__(self, name, bases, dict)
|
||||
|
||||
# inject some methods in the point foo
|
||||
class more_point(injector, point):
|
||||
def __repr__(self):
|
||||
return 'Point(x=%s, y=%s)' % (self.x, self.y)
|
||||
def foo(self):
|
||||
print 'foo!'
|
||||
|
||||
Now let's see how it got:
|
||||
|
||||
>>> print point()
|
||||
Point(x=10, y=10)
|
||||
>>> point().foo()
|
||||
foo!
|
||||
|
||||
Another useful idea is to replace constructors with factory functions:
|
||||
|
||||
_point = point
|
||||
|
||||
@@ -105,7 +105,9 @@
|
||||
// Set the name of our library, this will get undef'ed by auto_link.hpp
|
||||
// once it's done with it:
|
||||
//
|
||||
#define BOOST_LIB_NAME boost_python##PY_MAJOR_VERSION##PY_MINOR_VERSION
|
||||
#define _BOOST_PYTHON_CONCAT(N, M, m) N ## M ## m
|
||||
#define BOOST_PYTHON_CONCAT(N, M, m) _BOOST_PYTHON_CONCAT(N, M, m)
|
||||
#define BOOST_LIB_NAME BOOST_PYTHON_CONCAT(boost_python, PY_MAJOR_VERSION, PY_MINOR_VERSION)
|
||||
//
|
||||
// If we're importing code from a dll, then tell auto_link.hpp about it:
|
||||
//
|
||||
@@ -118,6 +120,9 @@
|
||||
#include <boost/config/auto_link.hpp>
|
||||
#endif // auto-linking disabled
|
||||
|
||||
#undef BOOST_PYTHON_CONCAT
|
||||
#undef _BOOST_PYTHON_CONCAT
|
||||
|
||||
#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
|
||||
#define BOOST_PYTHON_SUPPORTS_PY_SIGNATURES // enables smooth transition
|
||||
#endif
|
||||
|
||||
@@ -62,7 +62,9 @@
|
||||
// Set the name of our library, this will get undef'ed by auto_link.hpp
|
||||
// once it's done with it:
|
||||
//
|
||||
#define BOOST_LIB_NAME boost_numpy##PY_MAJOR_VERSION##PY_MINOR_VERSION
|
||||
#define _BOOST_PYTHON_CONCAT(N, M, m) N ## M ## m
|
||||
#define BOOST_PYTHON_CONCAT(N, M, m) _BOOST_PYTHON_CONCAT(N, M, m)
|
||||
#define BOOST_LIB_NAME BOOST_PYTHON_CONCAT(boost_numpy, PY_MAJOR_VERSION, PY_MINOR_VERSION)
|
||||
//
|
||||
// If we're importing code from a dll, then tell auto_link.hpp about it:
|
||||
//
|
||||
@@ -75,6 +77,9 @@
|
||||
#include <boost/config/auto_link.hpp>
|
||||
#endif // auto-linking disabled
|
||||
|
||||
#undef BOOST_PYTHON_CONCAT
|
||||
#undef _BOOST_PYTHON_CONCAT
|
||||
|
||||
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
|
||||
|
||||
#endif // CONFIG_NUMPY20170215_H_
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef OTHER_DWA20020601_HPP
|
||||
# define OTHER_DWA20020601_HPP
|
||||
#ifndef BOOST_PYTHON_OTHER_HPP
|
||||
# define BOOST_PYTHON_OTHER_HPP
|
||||
|
||||
# include <boost/python/detail/prefix.hpp>
|
||||
// Copyright David Abrahams 2002.
|
||||
@@ -7,8 +7,6 @@
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
# pragma once
|
||||
|
||||
# include <boost/config.hpp>
|
||||
|
||||
namespace boost { namespace python {
|
||||
@@ -51,4 +49,4 @@ namespace detail
|
||||
|
||||
}} // namespace boost::python
|
||||
|
||||
#endif // #ifndef OTHER_DWA20020601_HPP
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef PTR_DWA20020601_HPP
|
||||
# define PTR_DWA20020601_HPP
|
||||
#ifndef BOOST_PYTHON_PTR_HPP
|
||||
# define BOOST_PYTHON_PTR_HPP
|
||||
|
||||
# include <boost/python/detail/prefix.hpp>
|
||||
// Copyright David Abrahams 2002.
|
||||
@@ -11,8 +11,6 @@
|
||||
// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
|
||||
// Copyright (C) 2001 Peter Dimov
|
||||
|
||||
# pragma once
|
||||
|
||||
# include <boost/config.hpp>
|
||||
# include <boost/mpl/bool.hpp>
|
||||
|
||||
@@ -64,4 +62,4 @@ class unwrap_pointer<pointer_wrapper<T> >
|
||||
|
||||
}} // namespace boost::python
|
||||
|
||||
#endif // #ifndef PTR_DWA20020601_HPP
|
||||
#endif
|
||||
|
||||
@@ -19,6 +19,7 @@ static void wrap_import_array()
|
||||
static void * wrap_import_array()
|
||||
{
|
||||
import_array();
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
@@ -618,7 +618,7 @@ namespace objects
|
||||
{
|
||||
object property(
|
||||
(python::detail::new_reference)
|
||||
PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("Osss"), fget.ptr(), 0, 0, docstr));
|
||||
PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("Osss"), fget.ptr(), (char*)NULL, (char*)NULL, docstr));
|
||||
|
||||
this->setattr(name, property);
|
||||
}
|
||||
@@ -628,7 +628,7 @@ namespace objects
|
||||
{
|
||||
object property(
|
||||
(python::detail::new_reference)
|
||||
PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("OOss"), fget.ptr(), fset.ptr(), 0, docstr));
|
||||
PyObject_CallFunction((PyObject*)&PyProperty_Type, const_cast<char*>("OOss"), fget.ptr(), fset.ptr(), (char*)NULL, docstr));
|
||||
|
||||
this->setattr(name, property);
|
||||
}
|
||||
|
||||
@@ -158,11 +158,6 @@ PyObject* function::call(PyObject* args, PyObject* keywords) const
|
||||
{
|
||||
// no argument preprocessing
|
||||
}
|
||||
else if (n_actual > max_arity)
|
||||
{
|
||||
// too many arguments
|
||||
inner_args = handle<>();
|
||||
}
|
||||
else
|
||||
{
|
||||
// build a new arg tuple, will adjust its size later
|
||||
|
||||
@@ -50,6 +50,8 @@ rule require-windows ( properties * )
|
||||
}
|
||||
}
|
||||
|
||||
if [ python.configured ]
|
||||
{
|
||||
test-suite python
|
||||
:
|
||||
|
||||
@@ -97,12 +99,16 @@ bpl-test crossmod_exception
|
||||
|
||||
[ bpl-test polymorphism2_auto_ptr
|
||||
: polymorphism2_auto_ptr.py polymorphism2.py polymorphism2_auto_ptr.cpp
|
||||
: [ requires auto_ptr ]
|
||||
]
|
||||
|
||||
[ bpl-test polymorphism ]
|
||||
[ bpl-test polymorphism2 ]
|
||||
|
||||
[ bpl-test auto_ptr ]
|
||||
[ bpl-test auto_ptr
|
||||
: # files
|
||||
: [ requires auto_ptr ]
|
||||
]
|
||||
|
||||
[ bpl-test minimal ]
|
||||
[ bpl-test args ]
|
||||
@@ -248,3 +254,4 @@ bpl-test crossmod_opaque
|
||||
|
||||
|
||||
;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user