From 05b9a91ac8c5f5ade802956369ac62901b582df5 Mon Sep 17 00:00:00 2001 From: Liam Keegan Date: Thu, 11 Jan 2024 10:15:48 +0100 Subject: [PATCH] Restructure project layout to allow mixing of pure Python and compiled module - c++ library code in /lib - pybind11 c++/python binding code in /src - pure python code in /src/pybind11_numpy_example - add example pure python function `pure_python_list()` - replace `-` with `_` in all filenames and paths - update plots --- .github/workflows/ci.yml | 24 +++------- .readthedocs.yml | 4 +- CMakeLists.txt | 28 +++++------ README.md | 4 +- doc/index.rst | 2 +- ext/Catch2 | 2 +- .../pybind11_numpy_example.hpp} | 0 lib/CMakeLists.txt | 5 ++ lib/pybind11_numpy_example.cpp | 1 + pyproject.toml | 5 +- python/CMakeLists.txt | 7 --- scripts/benchmarks.sh | 10 ++-- scripts/mem_array.txt | 35 ++++++++------ scripts/mem_array_nocopy.txt | 44 +++++++++++------- scripts/mem_list.txt | 24 ++++++---- scripts/memory.png | Bin 40826 -> 39866 bytes scripts/memory.py | 8 ++-- scripts/time.png | Bin 32626 -> 37769 bytes scripts/time.py | 8 ++-- scripts/time_array.txt | 35 ++++++++------ scripts/time_array_nocopy.txt | 44 +++++++++++------- scripts/time_list.txt | 24 ++++++---- src/CMakeLists.txt | 9 ++-- src/pybind11-numpy-example.cpp | 1 - src/pybind11_numpy_example/__init__.py | 7 +++ .../pybind11_numpy_example_python.cpp | 4 +- tests/{ => cpp}/CMakeLists.txt | 4 +- .../pybind11_numpy_example_t.cpp} | 2 +- tests/{ => cpp}/tests.cpp | 0 {python/tests => tests/python}/__init__.py | 0 .../python/test_pybind11_numpy_example.py | 17 ++++--- 31 files changed, 199 insertions(+), 159 deletions(-) rename include/{pybind11-numpy-example/pybind11-numpy-example.hpp => pybind11_numpy_example/pybind11_numpy_example.hpp} (100%) create mode 100644 lib/CMakeLists.txt create mode 100644 lib/pybind11_numpy_example.cpp delete mode 100644 python/CMakeLists.txt delete mode 100644 src/pybind11-numpy-example.cpp create mode 100644 src/pybind11_numpy_example/__init__.py rename python/pybind11-numpy-example_python.cpp => src/pybind11_numpy_example_python.cpp (95%) rename tests/{ => cpp}/CMakeLists.txt (56%) rename tests/{pybind11-numpy-example_t.cpp => cpp/pybind11_numpy_example_t.cpp} (86%) rename tests/{ => cpp}/tests.cpp (100%) rename {python/tests => tests/python}/__init__.py (100%) rename python/tests/test_python_bindings.py => tests/python/test_pybind11_numpy_example.py (60%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d914901..fcf3ef4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,23 +14,13 @@ jobs: with: submodules: "recursive" - - name: Make build directory - run: cmake -E make_directory ${{runner.workspace}}/build - - - name: Configure cmake - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOCS=OFF -DBUILD_TESTING=ON -DBUILD_PYTHON=OFF - - - name: Build - shell: bash - working-directory: ${{runner.workspace}}/build - run: cmake --build . - - - name: Run tests - shell: bash - working-directory: ${{runner.workspace}}/build - run: ctest + - name: Build and run c++ tests + run: | + mkdir build + cd build + cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_DOCS=OFF -DBUILD_PYTHON=OFF -DBUILD_TESTING=ON .. + cmake --build . + ctest python: name: "${{ matrix.os }} :: Python ${{ matrix.python-version }}" diff --git a/.readthedocs.yml b/.readthedocs.yml index 6da12dd..d462055 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,9 +1,9 @@ version: 2 build: - os: "ubuntu-20.04" + os: "ubuntu-22.04" tools: - python: "3.9" + python: "3.12" sphinx: builder: html diff --git a/CMakeLists.txt b/CMakeLists.txt index 75e22d1..1b84119 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,14 +3,14 @@ cmake_minimum_required(VERSION 3.15..3.26) # Set a name and a version number for your project: project( pybind11-numpy-example - VERSION 0.0.7 + VERSION 0.0.9 LANGUAGES CXX) # Initialize some default paths include(GNUInstallDirs) # Define the minimum C++ standard that is required -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -19,15 +19,15 @@ set(CMAKE_POSITION_INDEPENDENT_CODE ON) option(BUILD_PYTHON "Enable building of Python bindings" ON) option(BUILD_DOCS "Enable building of documentation" ON) -# Build the library -add_subdirectory(src) +# Build the c++ library +add_subdirectory(lib) -# Build the tests +# Build the c++ tests include(CTest) if(BUILD_TESTING) add_subdirectory(ext/Catch2) include(./ext/Catch2/extras/Catch.cmake) - add_subdirectory(tests) + add_subdirectory(tests/cpp) endif() # Build the documentation @@ -37,26 +37,26 @@ endif() # Build the python bindings if(BUILD_PYTHON) - add_subdirectory(python) + add_subdirectory(src) endif() # Add an alias target for use if this project is included as a subproject in # another project -add_library(pybind11-numpy-example::pybind11-numpy-example ALIAS - pybind11-numpy-example) +add_library(pybind11_numpy_example::pybind11_numpy_example ALIAS + pybind11_numpy_example) # Install targets and configuration install( - TARGETS pybind11-numpy-example - EXPORT pybind11-numpy-example-config + TARGETS pybind11_numpy_example + EXPORT pybind11_numpy_example_config RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install( - EXPORT pybind11-numpy-example-config - NAMESPACE pybind11-numpy-example:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pybind11-numpy-example) + EXPORT pybind11_numpy_example_config + NAMESPACE pybind11_numpy_example:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/pybind11_numpy_example) install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/README.md b/README.md index 5b91b1c..2e4be5c 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,9 @@ a Numpy array is much faster and uses a lot less memory: # How -The pybind11 code is in [python/pybind11-numpy-example_python.cpp](https://github.com/ssciwr/pybind11-numpy-example/blob/main/python/pybind11-numpy-example_python.cpp). +The pybind11 code is in [src/pybind11_numpy_example_python.cpp](https://github.com/ssciwr/pybind11-numpy-example/blob/main/src/pybind11_numpy_example_python.cpp). -The python project is defined in [pyproject.toml](https://github.com/ssciwr/pybind11-numpy-example/blob/main/pyproject.toml) +The python package is defined in [pyproject.toml](https://github.com/ssciwr/pybind11-numpy-example/blob/main/pyproject.toml) and uses [scikit-build-core](https://github.com/scikit-build/scikit-build-core). Each tagged commit triggers a [GitHub action job](https://github.com/ssciwr/pybind11-numpy-example/actions/workflows/pypi.yml) diff --git a/doc/index.rst b/doc/index.rst index d38b142..40b4b15 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -42,7 +42,7 @@ How === The pybind11 code is in -`python/pybind11-numpy-example\_python.cpp `__. +`src/pybind11\_numpy\_example\_python.cpp `__. The python project is defined in `pyproject.toml `__ and uses `scikit-build-core `__. diff --git a/ext/Catch2 b/ext/Catch2 index 6e79e68..f981c9c 160000 --- a/ext/Catch2 +++ b/ext/Catch2 @@ -1 +1 @@ -Subproject commit 6e79e682b726f524310d55dec8ddac4e9c52fb5f +Subproject commit f981c9cbcac07a2690e5a86767eba490b5465463 diff --git a/include/pybind11-numpy-example/pybind11-numpy-example.hpp b/include/pybind11_numpy_example/pybind11_numpy_example.hpp similarity index 100% rename from include/pybind11-numpy-example/pybind11-numpy-example.hpp rename to include/pybind11_numpy_example/pybind11_numpy_example.hpp diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..ba11044 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1,5 @@ +add_library(pybind11_numpy_example pybind11_numpy_example.cpp) +target_include_directories( + pybind11_numpy_example + PUBLIC $ + $) diff --git a/lib/pybind11_numpy_example.cpp b/lib/pybind11_numpy_example.cpp new file mode 100644 index 0000000..7aab0b8 --- /dev/null +++ b/lib/pybind11_numpy_example.cpp @@ -0,0 +1 @@ +#include "pybind11_numpy_example/pybind11_numpy_example.hpp" diff --git a/pyproject.toml b/pyproject.toml index c5f3247..95e0ba2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,9 @@ description = "An example of using numpy with pybind11" readme = "README.md" license = {text = "MIT"} authors=[{name="Liam Keegan", email="liam@keegan.ch"}] +maintainers=[{name="Liam Keegan", email="liam@keegan.ch"}] requires-python = ">=3.7" +keywords = ["pybind11", "cibuildwheel", "c++", "pypi", "numpy", "simple", "example"] classifiers=[ "Programming Language :: C++", "Programming Language :: Python :: 3 :: Only", @@ -29,6 +31,7 @@ classifiers=[ [project.urls] Github = "https://github.com/ssciwr/pybind11-numpy-example" +Documentation = "https://pybind11-numpy-example.readthedocs.io" [project.optional-dependencies] test = ["pytest", "numpy"] @@ -41,5 +44,5 @@ BUILD_DOCS = "OFF" [tool.cibuildwheel] test-extras = "test" -test-command = "python -m pytest {project}/python/tests -v" +test-command = "python -m pytest {project}/tests/python -v" test-skip = "pp* *-musllinux* *-manylinux_i686" diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt deleted file mode 100644 index a3c5ebc..0000000 --- a/python/CMakeLists.txt +++ /dev/null @@ -1,7 +0,0 @@ -find_package(pybind11 CONFIG REQUIRED) -pybind11_add_module(pybind11numpyexample_python - pybind11-numpy-example_python.cpp) -target_link_libraries(pybind11numpyexample_python PUBLIC pybind11-numpy-example) -set_target_properties(pybind11numpyexample_python - PROPERTIES OUTPUT_NAME pybind11numpyexample) -install(TARGETS pybind11numpyexample_python DESTINATION .) diff --git a/scripts/benchmarks.sh b/scripts/benchmarks.sh index 1337f97..22348a2 100755 --- a/scripts/benchmarks.sh +++ b/scripts/benchmarks.sh @@ -8,8 +8,9 @@ echo "#n time (seconds)" > time_list.txt cp time_list.txt time_array.txt cp time_list.txt time_array_nocopy.txt -for n in 1000 10000 100000 1000000 10000000 50000000 100000000 200000000 300000000 400000000 +for n in 1000 10000 100000 1000000 10000000 50000000 100000000 200000000 300000000 400000000 600000000 800000000 1000000000 1200000000 do + echo $n m_list=$(./memory.py $n 0) m_array=$(./memory.py $n 1) m_array_nocopy=$(./memory.py $n 2) @@ -24,9 +25,9 @@ do echo "${n} ${t_array}" >> time_array.txt echo "${n} ${t_array_nocopy}" >> time_array_nocopy.txt done - -for n in 1000000000 2000000000 3000000000 4000000000 +for n in 2000000000 3000000000 4000000000 6000000000 8000000000 10000000000 12000000000 do + echo $n m_array=$(./memory.py $n 1) echo "${n} ${m_array}" >> mem_array.txt m_array_nocopy=$(./memory.py $n 2) @@ -38,8 +39,9 @@ do echo "${n} ${t_array_nocopy}" >> time_array_nocopy.txt done -for n in 5000000000 6000000000 7000000000 8000000000 +for n in 14000000000 16000000000 18000000000 20000000000 24000000000 do + echo $n m_array_nocopy=$(./memory.py $n 2) echo "${n} ${m_array_nocopy}" >> mem_array_nocopy.txt diff --git a/scripts/mem_array.txt b/scripts/mem_array.txt index 2042bc9..84b288d 100644 --- a/scripts/mem_array.txt +++ b/scripts/mem_array.txt @@ -1,15 +1,22 @@ #n memory (kb) -1000 18896 -10000 18864 -100000 19560 -1000000 23260 -10000000 58380 -50000000 214536 -100000000 410024 -200000000 800452 -300000000 1191012 -400000000 1581412 -1000000000 3925392 -2000000000 7831684 -3000000000 11737892 -4000000000 15644044 +1000 20648 +10000 20664 +100000 20840 +1000000 24520 +10000000 59672 +50000000 215920 +100000000 411412 +200000000 801848 +300000000 1192548 +400000000 1583112 +600000000 2363992 +800000000 3145808 +1000000000 3926680 +1200000000 4708296 +2000000000 7832800 +3000000000 11739192 +4000000000 15645488 +6000000000 23458288 +8000000000 31270592 +10000000000 39083108 +12000000000 46895616 diff --git a/scripts/mem_array_nocopy.txt b/scripts/mem_array_nocopy.txt index 3380000..daf7a68 100644 --- a/scripts/mem_array_nocopy.txt +++ b/scripts/mem_array_nocopy.txt @@ -1,19 +1,27 @@ #n memory (kb) -1000 18808 -10000 18864 -100000 18936 -1000000 20912 -10000000 38284 -50000000 116396 -100000000 214164 -200000000 409508 -300000000 604768 -400000000 800084 -1000000000 1971984 -2000000000 3925016 -3000000000 5878236 -4000000000 7831396 -5000000000 9784604 -6000000000 11737484 -7000000000 13690668 -8000000000 15643960 +1000 20656 +10000 20668 +100000 20844 +1000000 22596 +10000000 39936 +50000000 118080 +100000000 215964 +200000000 411264 +300000000 606336 +400000000 801716 +600000000 1192512 +800000000 1583148 +1000000000 1973368 +1200000000 2364404 +2000000000 3926908 +3000000000 5880000 +4000000000 7832964 +6000000000 11739264 +8000000000 15645624 +10000000000 19551908 +12000000000 23457968 +14000000000 27364404 +16000000000 31270648 +18000000000 35176512 +20000000000 39083136 +24000000000 46895548 diff --git a/scripts/mem_list.txt b/scripts/mem_list.txt index 111cb6a..a5c4ec1 100644 --- a/scripts/mem_list.txt +++ b/scripts/mem_list.txt @@ -1,11 +1,15 @@ #n memory (kb) -1000 0 -10000 444 -100000 4164 -1000000 41356 -10000000 414140 -50000000 2069920 -100000000 4139380 -200000000 8278588 -300000000 12418828 -400000000 16557252 +1000 192 +10000 384 +100000 4224 +1000000 41088 +10000000 410304 +50000000 2050752 +100000000 4101504 +200000000 8203200 +300000000 12304704 +400000000 16405824 +600000000 24609216 +800000000 32811840 +1000000000 41014464 +1200000000 49218432 diff --git a/scripts/memory.png b/scripts/memory.png index 7ac77cb2b62a75a41281d21ae5bd6ca5766b8684..3603730514cf9ca03b1560633f41a4e85b9a641e 100644 GIT binary patch literal 39866 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 _G;F>kC~4B5HFqzO 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 diff --git a/scripts/time.py b/scripts/time.py index e4c7497..0a7f277 100755 --- a/scripts/time.py +++ b/scripts/time.py @@ -2,7 +2,7 @@ # simple script to print approx time taken -import pybind11numpyexample +import pybind11_numpy_example import timeit import sys @@ -13,11 +13,11 @@ def doit(): if data_type == 0: - return pybind11numpyexample.vector_as_list(n) + return pybind11_numpy_example.vector_as_list(n) elif data_type == 1: - return pybind11numpyexample.vector_as_array(n) + return pybind11_numpy_example.vector_as_array(n) elif data_type == 2: - return pybind11numpyexample.vector_as_array_nocopy(n) + return pybind11_numpy_example.vector_as_array_nocopy(n) print(timeit.timeit(doit, number=iters) / iters) diff --git a/scripts/time_array.txt b/scripts/time_array.txt index de17e6c..6dfe24e 100644 --- a/scripts/time_array.txt +++ b/scripts/time_array.txt @@ -1,15 +1,22 @@ #n time (seconds) -1000 1.0294279672216436e-05 -10000 9.17243686327655e-05 -100000 0.0008979495345340525 -1000000 0.008858304726097478 -10000000 0.053286767499230336 -50000000 0.13255561800906435 -100000000 0.17452786200738046 -200000000 0.25977244100067765 -300000000 0.3446448600006988 -400000000 0.4255073300009826 -1000000000 0.9024126849981258 -2000000000 1.6776944080047542 -3000000000 2.439360503994976 -4000000000 3.1745616889966186 +1000 8.885241385522114e-06 +10000 8.064530965231068e-05 +100000 0.0007929159005605938 +1000000 0.009228698179041121 +10000000 0.05545463500311598 +50000000 0.16033962194342166 +100000000 0.23489250801503658 +200000000 0.387445722008124 +300000000 0.5446825119433925 +400000000 0.6931000800104812 +600000000 1.0074213709449396 +800000000 1.3038605999900028 +1000000000 1.6112821800634265 +1200000000 1.8958396930247545 +2000000000 3.080139480996877 +3000000000 4.569697203929536 +4000000000 6.015317940968089 +6000000000 8.836932464968413 +8000000000 11.728594742016867 +10000000000 14.558276921976358 +12000000000 17.50521888397634 diff --git a/scripts/time_array_nocopy.txt b/scripts/time_array_nocopy.txt index 213bec0..20b7c96 100644 --- a/scripts/time_array_nocopy.txt +++ b/scripts/time_array_nocopy.txt @@ -1,19 +1,27 @@ #n time (seconds) -1000 9.999668932844945e-06 -10000 9.167261039231114e-05 -100000 0.0008991213465261614 -1000000 0.008335511999162422 -10000000 0.050443788000848144 -50000000 0.12099327699979767 -100000000 0.15236243599792942 -200000000 0.21317349300079513 -300000000 0.27599514700705186 -400000000 0.33998234900354873 -1000000000 0.6818497240019497 -2000000000 1.2458708429912804 -3000000000 1.7789631179912249 -4000000000 2.310697248991346 -5000000000 2.809482886994374 -6000000000 3.338349138997728 -7000000000 3.847873509992496 -8000000000 4.3607585489953635 +1000 8.883211479922996e-06 +10000 7.990702798778003e-05 +100000 0.0007843043065012092 +1000000 0.007740272727625614 +10000000 0.050859106006100774 +50000000 0.1441949950531125 +100000000 0.239397105993703 +200000000 0.3419582910137251 +300000000 0.48297904699575156 +400000000 0.6020817440003157 +600000000 0.8661073229741305 +800000000 1.1198496220167726 +1000000000 1.3745229849591851 +1200000000 1.6183152759913355 +2000000000 2.622669712989591 +3000000000 3.8534785190131515 +4000000000 5.067567399004474 +6000000000 7.537025678087957 +8000000000 9.918707602075301 +10000000000 12.325743645080365 +12000000000 14.685017141047865 +14000000000 17.10181719996035 +16000000000 19.59815236995928 +18000000000 21.906724045053124 +20000000000 24.42910428403411 +24000000000 29.188139538047835 diff --git a/scripts/time_list.txt b/scripts/time_list.txt index dda04c7..2c1d011 100644 --- a/scripts/time_list.txt +++ b/scripts/time_list.txt @@ -1,11 +1,15 @@ #n time (seconds) -1000 1.6527705828344668e-05 -10000 0.00021758406994293084 -100000 0.0027138690693571353 -1000000 0.03301038918222978 -10000000 0.3295107399972039 -50000000 1.6292891499906546 -100000000 3.3216604850022122 -200000000 6.464595986995846 -300000000 9.88627804099815 -400000000 12.484707872994477 +1000 1.1281892404451172e-05 +10000 0.00012381860035491158 +100000 0.0021609368014822504 +1000000 0.028091967190531166 +10000000 0.3382009760243818 +50000000 1.6539601690601557 +100000000 3.3066364750266075 +200000000 6.4062930109212175 +300000000 9.456814253004268 +400000000 12.655741214985028 +600000000 18.71708781796042 +800000000 24.94151852594223 +1000000000 31.0570098310709 +1200000000 37.80632794194389 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9a4856f..d9b6912 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,4 @@ -add_library(pybind11-numpy-example pybind11-numpy-example.cpp) -target_include_directories( - pybind11-numpy-example - PUBLIC $ - $) +find_package(pybind11 CONFIG REQUIRED) +pybind11_add_module(_pybind11_numpy_example pybind11_numpy_example_python.cpp) +target_link_libraries(_pybind11_numpy_example PUBLIC pybind11_numpy_example) +install(TARGETS _pybind11_numpy_example DESTINATION pybind11_numpy_example) diff --git a/src/pybind11-numpy-example.cpp b/src/pybind11-numpy-example.cpp deleted file mode 100644 index b24c418..0000000 --- a/src/pybind11-numpy-example.cpp +++ /dev/null @@ -1 +0,0 @@ -#include "pybind11-numpy-example/pybind11-numpy-example.hpp" diff --git a/src/pybind11_numpy_example/__init__.py b/src/pybind11_numpy_example/__init__.py new file mode 100644 index 0000000..f22de2d --- /dev/null +++ b/src/pybind11_numpy_example/__init__.py @@ -0,0 +1,7 @@ +# here we import the contents of our compiled C++ module into this package: +from ._pybind11_numpy_example import * + + +# this allows us to also include pure python code in the same namespace: +def pure_python_list(size: int): + return list(range(size)) diff --git a/python/pybind11-numpy-example_python.cpp b/src/pybind11_numpy_example_python.cpp similarity index 95% rename from python/pybind11-numpy-example_python.cpp rename to src/pybind11_numpy_example_python.cpp index 504da91..27c4155 100644 --- a/python/pybind11-numpy-example_python.cpp +++ b/src/pybind11_numpy_example_python.cpp @@ -2,7 +2,7 @@ #include #include -#include "pybind11-numpy-example/pybind11-numpy-example.hpp" +#include "pybind11_numpy_example/pybind11_numpy_example.hpp" namespace py = pybind11; @@ -57,7 +57,7 @@ static py::array_t vector_as_array_nocopy(std::size_t size) { return as_pyarray(std::move(temp_vector)); } -PYBIND11_MODULE(pybind11numpyexample, m) { +PYBIND11_MODULE(_pybind11_numpy_example, m) { m.doc() = "Python Bindings for pybind11-numpy-example"; m.def("vector_as_list", &vector_as_list, "Returns a vector of 16-bit ints as a Python List"); diff --git a/tests/CMakeLists.txt b/tests/cpp/CMakeLists.txt similarity index 56% rename from tests/CMakeLists.txt rename to tests/cpp/CMakeLists.txt index eb5dc08..14600b3 100644 --- a/tests/CMakeLists.txt +++ b/tests/cpp/CMakeLists.txt @@ -1,5 +1,5 @@ -add_executable(tests pybind11-numpy-example_t.cpp) -target_link_libraries(tests PUBLIC pybind11-numpy-example +add_executable(tests pybind11_numpy_example_t.cpp) +target_link_libraries(tests PUBLIC pybind11_numpy_example Catch2::Catch2WithMain) # allow user to run tests with `make test` or `ctest` diff --git a/tests/pybind11-numpy-example_t.cpp b/tests/cpp/pybind11_numpy_example_t.cpp similarity index 86% rename from tests/pybind11-numpy-example_t.cpp rename to tests/cpp/pybind11_numpy_example_t.cpp index 899b42d..dd3744b 100644 --- a/tests/pybind11-numpy-example_t.cpp +++ b/tests/cpp/pybind11_numpy_example_t.cpp @@ -1,4 +1,4 @@ -#include "pybind11-numpy-example/pybind11-numpy-example.hpp" +#include "pybind11_numpy_example/pybind11_numpy_example.hpp" #include using namespace pybind11numpyexample; diff --git a/tests/tests.cpp b/tests/cpp/tests.cpp similarity index 100% rename from tests/tests.cpp rename to tests/cpp/tests.cpp diff --git a/python/tests/__init__.py b/tests/python/__init__.py similarity index 100% rename from python/tests/__init__.py rename to tests/python/__init__.py diff --git a/python/tests/test_python_bindings.py b/tests/python/test_pybind11_numpy_example.py similarity index 60% rename from python/tests/test_python_bindings.py rename to tests/python/test_pybind11_numpy_example.py index 0d08daa..d3b810b 100644 --- a/python/tests/test_python_bindings.py +++ b/tests/python/test_pybind11_numpy_example.py @@ -1,16 +1,19 @@ -import pybind11numpyexample +import pybind11_numpy_example as pne import numpy as np def test_pybind11_numpy_example(): - assert pybind11numpyexample.vector_as_list(0) == [] - assert pybind11numpyexample.vector_as_list(3) == [0, 1, 2] + assert pne.pure_python_list(0) == [] + assert pne.pure_python_list(3) == [0, 1, 2] - a0 = pybind11numpyexample.vector_as_array(0) + assert pne.vector_as_list(0) == [] + assert pne.vector_as_list(3) == [0, 1, 2] + + a0 = pne.vector_as_array(0) assert type(a0) == np.ndarray assert len(a0) == 0 assert a0.dtype == np.int16 - a3 = pybind11numpyexample.vector_as_array(3) + a3 = pne.vector_as_array(3) assert type(a3) == np.ndarray assert len(a3) == 3 assert a3.dtype == np.int16 @@ -18,11 +21,11 @@ def test_pybind11_numpy_example(): assert a3[1] == 1 assert a3[2] == 2 - a0 = pybind11numpyexample.vector_as_array_nocopy(0) + a0 = pne.vector_as_array_nocopy(0) assert type(a0) == np.ndarray assert len(a0) == 0 assert a0.dtype == np.int16 - a3 = pybind11numpyexample.vector_as_array_nocopy(3) + a3 = pne.vector_as_array_nocopy(3) assert type(a3) == np.ndarray assert len(a3) == 3 assert a3.dtype == np.int16