From 353ff644fcdf51ac3c9e94f99b9e2574dd1fe686 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 24 Jul 2022 12:40:11 -0400 Subject: [PATCH 1/9] generate python type hints during pip build --- python/setup.py.in | 1 + 1 file changed, 1 insertion(+) diff --git a/python/setup.py.in b/python/setup.py.in index 824a6656e..b9d7392c7 100644 --- a/python/setup.py.in +++ b/python/setup.py.in @@ -13,6 +13,7 @@ package_data = { "./*.so", "./*.dll", "./*.pyd", + "*.pyi", "**/*.pyi", # Add the type hints ] } From 51aadbda3411411597d7f0d53bede212e898dc08 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 24 Jul 2022 22:25:56 -0400 Subject: [PATCH 2/9] add type hints and make command to test gtsam_unstable for python --- python/CMakeLists.txt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index ba55ac2af..2068ee8dc 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,7 +266,9 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . + COMMAND stubgen -q -p gtsam && + rsync -a "out/gtsam/" gtsam && + ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) @@ -279,3 +281,12 @@ add_custom_target( ${PYTHON_EXECUTABLE} -m unittest discover -v -s . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam/tests") + +add_custom_target( + python-test-unstable + COMMAND + ${CMAKE_COMMAND} -E env # add package to python path so no need to install + "PYTHONPATH=${GTSAM_PYTHON_BUILD_DIRECTORY}/$ENV{PYTHONPATH}" + ${PYTHON_EXECUTABLE} -m unittest discover -v -s . + DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} + WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam_unstable/tests") From 48215b9063045921bba4268db36e3ac8085687e3 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 25 Aug 2024 14:03:43 -0400 Subject: [PATCH 3/9] remove duplicate target --- python/CMakeLists.txt | 9 --------- 1 file changed, 9 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 2068ee8dc..20f2eab4b 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -281,12 +281,3 @@ add_custom_target( ${PYTHON_EXECUTABLE} -m unittest discover -v -s . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam/tests") - -add_custom_target( - python-test-unstable - COMMAND - ${CMAKE_COMMAND} -E env # add package to python path so no need to install - "PYTHONPATH=${GTSAM_PYTHON_BUILD_DIRECTORY}/$ENV{PYTHONPATH}" - ${PYTHON_EXECUTABLE} -m unittest discover -v -s . - DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} ${GTSAM_PYTHON_TEST_FILES} - WORKING_DIRECTORY "${GTSAM_PYTHON_BUILD_DIRECTORY}/gtsam_unstable/tests") From 5f43b69c4371ca8d784378d11256f25412874a81 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 25 Aug 2024 16:45:23 -0400 Subject: [PATCH 4/9] add mypy to the dev_requirements so we can get stubgen --- python/dev_requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/dev_requirements.txt b/python/dev_requirements.txt index 6970ee613..c76d3bf1b 100644 --- a/python/dev_requirements.txt +++ b/python/dev_requirements.txt @@ -1,2 +1,3 @@ -r requirements.txt -pyparsing>=2.4.2 \ No newline at end of file +pyparsing>=2.4.2 +mypy>=1.11.2 \ No newline at end of file From 0e73367345f50f9c3a0a7f6e3beb7be124d99f23 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Sun, 25 Aug 2024 18:57:03 -0400 Subject: [PATCH 5/9] stubgen only for Windows until we can find the rsync equivalent --- python/CMakeLists.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 20f2eab4b..b32d51c68 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -265,12 +265,18 @@ endif() # Add custom target so we can install with `make python-install` set(GTSAM_PYTHON_INSTALL_TARGET python-install) -add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} - COMMAND stubgen -q -p gtsam && - rsync -a "out/gtsam/" gtsam && - ${PYTHON_EXECUTABLE} -m pip install --user . +if (NOT WIN32) + add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + COMMAND stubgen -q -p gtsam && rsync -a \"out/gtsam/\" gtsam && ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) +elseif() + #TODO(Varun) Find rsync equivalent on Windows + add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . + DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} + WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) +endif() # Custom make command to run all GTSAM Python tests add_custom_target( From bfcd5eb08a9feea9f84b079878396afae63e5b54 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Mon, 26 Aug 2024 05:48:18 -0400 Subject: [PATCH 6/9] use older version of mypy --- python/dev_requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python/dev_requirements.txt b/python/dev_requirements.txt index c76d3bf1b..6a5e7f924 100644 --- a/python/dev_requirements.txt +++ b/python/dev_requirements.txt @@ -1,3 +1,3 @@ -r requirements.txt pyparsing>=2.4.2 -mypy>=1.11.2 \ 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 From da99cf0e192ca4033d34575714b7591f343258ff Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Mon, 26 Aug 2024 06:25:17 -0400 Subject: [PATCH 7/9] remove extraneous variable --- python/CMakeLists.txt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index b32d51c68..677ee72ce 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -264,15 +264,14 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) endif() # Add custom target so we can install with `make python-install` -set(GTSAM_PYTHON_INSTALL_TARGET python-install) if (NOT WIN32) - add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + add_custom_target(python-install COMMAND stubgen -q -p gtsam && rsync -a \"out/gtsam/\" gtsam && ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) elseif() #TODO(Varun) Find rsync equivalent on Windows - add_custom_target(${GTSAM_PYTHON_INSTALL_TARGET} + add_custom_target(python-install COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) From 48f9d0b11664b5e69e4f8cd925851e3206ecb5af Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Mon, 26 Aug 2024 09:44:28 -0400 Subject: [PATCH 8/9] fix if-else mistype --- python/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 677ee72ce..1e4acf142 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -264,12 +264,12 @@ if(GTSAM_UNSTABLE_BUILD_PYTHON) endif() # Add custom target so we can install with `make python-install` -if (NOT WIN32) +if (NOT WIN32) # WIN32=1 is target platform is Windows add_custom_target(python-install COMMAND stubgen -q -p gtsam && rsync -a \"out/gtsam/\" gtsam && ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) -elseif() +else() #TODO(Varun) Find rsync equivalent on Windows add_custom_target(python-install COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . From 1744c4aeb3b8875b8c17651905eebb4c7687d4ef Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Mon, 26 Aug 2024 10:07:24 -0400 Subject: [PATCH 9/9] save stubs to 'stubs' directory and use cp instead of rsync --- python/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 1e4acf142..bdab178ba 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -266,11 +266,11 @@ endif() # Add custom target so we can install with `make python-install` if (NOT WIN32) # WIN32=1 is target platform is Windows add_custom_target(python-install - COMMAND stubgen -q -p gtsam && rsync -a \"out/gtsam/\" gtsam && ${PYTHON_EXECUTABLE} -m pip install --user . + COMMAND stubgen -q -p gtsam -o ./stubs && cp -a stubs/gtsam/ gtsam && ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES} WORKING_DIRECTORY ${GTSAM_PYTHON_BUILD_DIRECTORY}) else() - #TODO(Varun) Find rsync equivalent on Windows + #TODO(Varun) Find equivalent cp on Windows add_custom_target(python-install COMMAND ${PYTHON_EXECUTABLE} -m pip install --user . DEPENDS ${GTSAM_PYTHON_DEPENDENCIES}