2
0
mirror of https://github.com/boostorg/python.git synced 2026-01-19 16:32:16 +00:00

Compare commits

...

10 Commits

Author SHA1 Message Date
Stefan Seefeld
3e4c518f4d Don't upgrade pip. 2025-10-25 15:49:37 -04:00
Eisuke Kawashima
2b6f667e98 chore: remove meaningless comparison 2025-10-25 15:23:44 -04:00
Eisuke Kawashima
aa458d2ca9 fix(test.properties): use doctest.ELLIPSIS for traceback
Since python 3.11 (PEP 657) traceback info is changed
fix #460
2025-10-25 15:22:21 -04:00
Eisuke Kawashima
16627261f1 fix(test.pickle): fix for change in the return value of object.__reduce__()
https://docs.python.org/3.11/library/pickle.html#object.__reduce__

fix #461
2025-10-25 14:14:07 -04:00
Stefan Seefeld
303299e677 log commands 2025-10-25 13:25:52 -04:00
Stefan Seefeld
cb95b611bb Downgrade run-vcpkg dependency to avoid regression. 2025-10-25 13:25:52 -04:00
Eisuke Kawashima
b4fb28e99a ci: update GitHub Actions 2025-10-23 22:14:55 -04:00
Stefan Seefeld
867f0dddfe Fix windows header path. 2025-10-23 22:08:00 -04:00
Aditya Pillai
a40bb656ee Use Py_REFCNT instead of ob_refcnt on Python 3.9 and above 2025-10-23 19:38:05 -04:00
Eisuke Kawashima
f604eb8d0f fix(test.numpy/ufunc): fix import error and value comparison 2025-04-02 08:21:09 -04:00
10 changed files with 77 additions and 26 deletions

View File

@@ -4,20 +4,20 @@ on: [push]
jobs:
deploy:
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v5
- name: setup
run: |
sudo apt-get update
sudo apt-get install \
libboost1.71-tools-dev \
libboost-tools-dev \
python3 \
python3-numpy \
python3-sphinx \
xsltproc \
docbook-xsl
sudo python3 -m pip install --upgrade pip
#sudo python3 -m pip install --upgrade pip
sudo python3 -m pip install faber
- name: build
run: |
@@ -29,7 +29,7 @@ jobs:
echo "destination_dir=doc/develop/html" >> $GITHUB_ENV
fi
- name: deploy
uses: peaceiris/actions-gh-pages@v3
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: build/doc/html

View File

@@ -14,9 +14,9 @@ jobs:
std: [c++11, c++14] # TODO: c++17 is failing !
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: setup python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- name: setup prerequisites

View File

@@ -26,7 +26,7 @@ jobs:
image: ${{ matrix.docker-img }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: build
run: |

View File

@@ -11,11 +11,11 @@ jobs:
python-version: [3.7]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
- uses: microsoft/setup-msbuild@v1.1
- uses: microsoft/setup-msbuild@v2
- name: setup boost prerequisites
uses: lukka/run-vcpkg@v6
with:
@@ -42,8 +42,8 @@ jobs:
- name: build
shell: cmd
run: |
faber --builddir=build cxx.name=msvc --with-boost-include=${{ runner.workspace }}/vcpkg/installed/x64-windows/include -j4
faber --builddir=build cxx.name=msvc --log=commands --log=output --with-boost-include=${{ runner.workspace }}\vcpkg\installed\x64-windows\include -j4
- name: test
shell: cmd
run: |
faber --builddir=build cxx.name=msvc --with-boost-include=${{ runner.workspace }}/vcpkg/installed/x64-windows/include -j4 test.report
faber --builddir=build cxx.name=msvc --with-boost-include=${{ runner.workspace }}\vcpkg\installed\x64-windows\include -j4 test.report

View File

@@ -216,7 +216,13 @@ namespace boost { namespace python { namespace detail {
{
for (const_iterator i = proxies.begin(); i != proxies.end(); ++i)
{
if ((*i)->ob_refcnt <= 0)
if (
#if PY_VERSION_HEX < 0x03090000
(*i)->ob_refcnt
#else
Py_REFCNT(*i)
#endif
<= 0)
{
PyErr_SetString(PyExc_RuntimeError,
"Invariant: Proxy vector in an inconsistent state");

View File

@@ -161,7 +161,6 @@ PyObject* function::call(PyObject* args, PyObject* keywords) const
else
{
// build a new arg tuple, will adjust its size later
assert(max_arity <= static_cast<std::size_t>(ssize_t_max));
inner_args = handle<>(
PyTuple_New(static_cast<ssize_t>(max_arity)));

View File

@@ -8,7 +8,10 @@
import ufunc_ext
import unittest
import numpy
from numpy.testing.utils import assert_array_almost_equal
try:
from numpy.testing import assert_array_almost_equal
except ImportError:
from numpy.testing.utils import assert_array_almost_equal
class TestUnary(unittest.TestCase):
@@ -24,7 +27,7 @@ class TestUnary(unittest.TestCase):
assert_array_almost_equal(b, a*2.0)
c = numpy.zeros(5, dtype=float)
d = f(a,output=c)
self.assertTrue(c is d)
self.assertTrue((c == d).all())
assert_array_almost_equal(d, a*2.0)
def testList(self):
@@ -47,7 +50,7 @@ class TestBinary(unittest.TestCase):
assert_array_almost_equal(f(a,b), (a*2+b*3))
c = numpy.zeros(5, dtype=float)
d = f(a,b,output=c)
self.assertTrue(c is d)
self.assertTrue((c == d).all())
assert_array_almost_equal(d, a*2 + b*3)
assert_array_almost_equal(f(a, 2.0), a*2 + 6.0)
assert_array_almost_equal(f(1.0, b), 2.0 + b*3)

View File

@@ -9,8 +9,10 @@ r'''>>> import pickle1_ext
1
>>> pickle1_ext.world.__name__
'world'
>>> pickle1_ext.world('Hello').__reduce__()
>>> pickle1_ext.world('Hello').__reduce__() # doctest: +PY310
(<class 'pickle1_ext.world'>, ('Hello',))
>>> pickle1_ext.world('Hello').__reduce__() # doctest: +PY311
(<class 'pickle1_ext.world'>, ('Hello',), None)
>>> wd = pickle1_ext.world('California')
>>> pstr = pickle.dumps(wd)
>>> wl = pickle.loads(pstr)
@@ -31,7 +33,27 @@ def run(args = None):
if args is not None:
sys.argv = args
return doctest.testmod(sys.modules.get(__name__))
# > https://docs.python.org/3.11/library/pickle.html#object.__reduce__
# object.__reduce__() returns
# - python 3.10 or prior: a 2-element tuple
# - python 3.11 or later: a 3-element tuple (object's state added)
PY310 = doctest.register_optionflag("PY310")
PY311 = doctest.register_optionflag("PY311")
class ConditionalChecker(doctest.OutputChecker):
def check_output(self, want, got, optionflags):
if (optionflags & PY311) and (sys.version_info[:2] < (3, 11)):
return True
if (optionflags & PY310) and (sys.version_info[:2] >= (3, 11)):
return True
return doctest.OutputChecker.check_output(self, want, got, optionflags)
runner = doctest.DocTestRunner(ConditionalChecker())
for test in doctest.DocTestFinder().find(sys.modules.get(__name__)):
runner.run(test)
return doctest.TestResults(runner.failures, runner.tries)
if __name__ == '__main__':
print("running...")

View File

@@ -12,8 +12,10 @@ r'''>>> import pickle4_ext
1
>>> pickle4_ext.world.__name__
'world'
>>> pickle4_ext.world('Hello').__reduce__()
>>> pickle4_ext.world('Hello').__reduce__() # doctest: +PY310
(<class 'pickle4_ext.world'>, ('Hello',))
>>> pickle4_ext.world('Hello').__reduce__() # doctest: +PY311
(<class 'pickle4_ext.world'>, ('Hello',), None)
>>> wd = pickle4_ext.world('California')
>>> pstr = pickle.dumps(wd)
>>> wl = pickle.loads(pstr)
@@ -29,7 +31,27 @@ def run(args = None):
if args is not None:
sys.argv = args
return doctest.testmod(sys.modules.get(__name__))
# > https://docs.python.org/3.11/library/pickle.html#object.__reduce__
# object.__reduce__() returns
# - python 3.10 or prior: a 2-element tuple
# - python 3.11 or later: a 3-element tuple (object's state added)
PY310 = doctest.register_optionflag("PY310")
PY311 = doctest.register_optionflag("PY311")
class ConditionalChecker(doctest.OutputChecker):
def check_output(self, want, got, optionflags):
if (optionflags & PY311) and (sys.version_info[:2] < (3, 11)):
return True
if (optionflags & PY310) and (sys.version_info[:2] >= (3, 11)):
return True
return doctest.OutputChecker.check_output(self, want, got, optionflags)
runner = doctest.DocTestRunner(ConditionalChecker())
for test in doctest.DocTestFinder().find(sys.modules.get(__name__)):
runner.run(test)
return doctest.TestResults(runner.failures, runner.tries)
if __name__ == '__main__':
print("running...")

View File

@@ -56,11 +56,10 @@ class instance count from object:
1
as expected you can't assign new value to read only property
>>> x1.value_r = 2
>>> x1.value_r = 2 # doctest: +ELLIPSIS
Traceback (most recent call last):
File "properties.py", line 49, in ?
x1.value_r = 2
AttributeError: can't set attribute
...
AttributeError: ...
setting value_rw to 2. value_direct:
>>> x1.value_rw = 2