From 92c7f51db53abeb27755e46fa0bd9a04013fb5d0 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Wed, 25 Sep 2024 11:06:51 -0400 Subject: [PATCH] Revert "Use pybind11-stubgen for generating stubs" This reverts commit 30c789dbdb54bacc8ded04b557416a7911b01229. --- python/CMakeLists.txt | 51 +++++++++++-------------------------- python/dev_requirements.txt | 2 +- 2 files changed, 16 insertions(+), 37 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 404f5ecc0..43f8d78bd 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -171,7 +171,6 @@ file(COPY "${GTSAM_SOURCE_DIR}/examples/Data" DESTINATION "${GTSAM_MODULE_PATH}" # Add gtsam as a dependency to the install target set(GTSAM_PYTHON_DEPENDENCIES ${GTSAM_PYTHON_TARGET}) -set(GTSAM_PYTHON_INSTALL_EXTRA "") if(GTSAM_UNSTABLE_BUILD_PYTHON) set(ignore @@ -251,22 +250,6 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) VERBATIM ) endif() - - add_custom_target( - python-unstable-stubs - COMMAND - ${CMAKE_COMMAND} -E env - "PYTHONPATH=${GTSAM_PYTHON_BUILD_DIRECTORY}/$ENV{PYTHONPATH}" - pybind11-stubgen -o . --enum-class-locations \"KernelFunctionType|NoiseFormat:gtsam.gtsam\" --enum-class-locations \"OrderingType:gtsam.gtsam.Ordering\" gtsam_unstable - DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} ${GTSAM_PYTHON_UNSTABLE_TARGET} - WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/" - ) - - if(NOT WIN32) - # Add the stubgen target as a dependency to the install target - list(APPEND GTSAM_PYTHON_INSTALL_EXTRA python-unstable-stubs) - endif() - # Custom make command to run all GTSAM_UNSTABLE Python tests add_custom_target( python-test-unstable @@ -279,30 +262,26 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) ) endif() -add_custom_target( - python-stubs - COMMAND - ${CMAKE_COMMAND} -E env - "PYTHONPATH=${GTSAM_PYTHON_BUILD_DIRECTORY}/$ENV{PYTHONPATH}" - pybind11-stubgen -o . --enum-class-locations \"KernelFunctionType|NoiseFormat:gtsam.gtsam\" --enum-class-locations \"OrderingType:gtsam.gtsam.Ordering\" gtsam - DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} ${GTSAM_PYTHON_TARGET} - WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/" -) - -if(NOT WIN32) - # Add the stubgen target as a dependency to the install target - list(APPEND GTSAM_PYTHON_INSTALL_EXTRA python-stubs) -endif() - # Add custom target so we can install with `make python-install` # Note below we make sure to install with --user iff not in a virtualenv set(GTSAM_PYTHON_INSTALL_TARGET python-install) - -add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; has_venv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix); cmd.append('--user' if not has_venv else ''); cmd.append('.'); subprocess.check_call([c for c in cmd if c])" - DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_INSTALL_EXTRA} +#TODO(Varun) Maybe move the long command to script? +# https://stackoverflow.com/questions/49053544/how-do-i-run-a-python-script-every-time-in-a-cmake-build +if (NOT WIN32) # WIN32=1 is target platform is Windows + add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + COMMAND stubgen -q -p gtsam && cp -a out/gtsam/ gtsam && ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; has_venv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix); cmd.append('--user' if not has_venv else ''); cmd.append('.'); subprocess.check_call([c for c in cmd if c])" + DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY} VERBATIM) +else() + #TODO(Varun) Find equivalent cp on Windows + add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + COMMAND ${PYTHON_EXECUTABLE} -c "import sys, subprocess; cmd = [sys.executable, '-m', 'pip', 'install']; has_venv = hasattr(sys, 'real_prefix') or (hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix); cmd.append('--user' if not has_venv else ''); cmd.append('.'); subprocess.check_call([c for c in cmd if c])" + DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} + WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY} + VERBATIM) +endif() + # Custom make command to run all GTSAM Python tests add_custom_target( diff --git a/python/dev_requirements.txt b/python/dev_requirements.txt index 94ab40189..6a5e7f924 100644 --- a/python/dev_requirements.txt +++ b/python/dev_requirements.txt @@ -1,3 +1,3 @@ -r requirements.txt pyparsing>=2.4.2 -pybind11-stubgen>=2.5.1 \ No newline at end of file +mypy==1.4.1 #TODO(Varun) A bug in mypy>=1.5.0 causes an unresolved placeholder error when importing numpy>=2.0.0 (https://github.com/python/mypy/issues/17396) \ No newline at end of file