Skip to content

Commit d7bf157

Browse files
committed
use pipx to simplify venv creation and allow newer python version to be used in CI
1 parent f556d63 commit d7bf157

3 files changed

Lines changed: 17 additions & 22 deletions

File tree

src/cmake/pythonutils.cmake

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -161,42 +161,26 @@ macro (setup_python_module)
161161
install(FILES __init__.py DESTINATION ${PYTHON_SITE_DIR} COMPONENT user)
162162

163163
# Create the __init__.pyi stub file
164-
# Define where to create the virtual environment
165-
set(PYTHON_VENV_DIR "${CMAKE_BINARY_DIR}/venv")
166-
167-
if(WIN32)
168-
set(PYTHON_VENV_EXE "${PYTHON_VENV_DIR}/Scripts/python.exe")
169-
else()
170-
set(PYTHON_VENV_EXE "${PYTHON_VENV_DIR}/bin/python")
171-
endif()
172-
173-
# Create the virtualenv if it doesn't exist
174-
add_custom_command(
175-
COMMAND ${Python3_EXECUTABLE} -m venv "${PYTHON_VENV_DIR}"
176-
COMMAND ${PYTHON_VENV_EXE} -m pip install mypy~=1.15.0 stubgenlib~=0.1.0
177-
OUTPUT "${PYTHON_VENV_DIR}/bin/activate"
178-
COMMENT "Creating virtualenv at ${PYTHON_VENV_DIR}"
179-
)
180164

181165
# Run stub generation process
182166
set(_stub_file "${CMAKE_BINARY_DIR}/lib/python/site-packages/OpenImageIO.pyi")
183-
# FIXME: is this the right location to use? the source gets copied to build/src
167+
# FIXME: is this the right location to use? the source gets copied to build/src
184168
set(_stub_gen "${CMAKE_SOURCE_DIR}/src/python/generate_stubs.py")
185169
add_custom_command(
186-
COMMAND PYTHONPATH=${PYTHON_BUILD_SITE} ${PYTHON_VENV_EXE} ${_stub_gen} -p OpenImageIO -o ${PYTHON_BUILD_SITE}
170+
COMMAND pipx run ${_stub_gen} ${PYTHON_BUILD_SITE}
187171
OUTPUT ${_stub_file}
188-
DEPENDS "${PYTHON_VENV_DIR}/bin/activate" ${_stub_gen}
172+
DEPENDS ${_stub_gen}
189173
COMMENT "Creating python stubs"
190174
)
191175
install(FILES ${_stub_file} DESTINATION ${PYTHON_SITE_DIR} RENAME __init__.pyi COMPONENT user)
192176
# install the marker file
193-
file(WRITE "py.typed" "")
194-
install(FILES "py.typed"DESTINATION ${PYTHON_SITE_DIR} COMPONENT user)
177+
file(WRITE "${CMAKE_BINARY_DIR}/lib/python/site-packages/py.typed" "")
178+
install(FILES "${CMAKE_BINARY_DIR}/lib/python/site-packages/py.typed" DESTINATION ${PYTHON_SITE_DIR} COMPONENT user)
195179

196180
# Ensure this runs after PyOpenImageIO
197181
add_custom_target(
198182
PyOpenImageIO_stubs ALL
199-
DEPENDS "${PYTHON_VENV_DIR}/bin/activate" ${_stub_file} ${CMAKE_SOURCE_DIR}/src/python/py.typed
183+
DEPENDS ${_stub_file} "${CMAKE_BINARY_DIR}/lib/python/site-packages/py.typed"
200184
)
201185
add_dependencies(PyOpenImageIO_stubs PyOpenImageIO)
202186

src/python/generate_stubs.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
# /// script
2+
# dependencies = [
3+
# "mypy~=1.15.0",
4+
# "stubgenlib~=0.1.0",
5+
# ]
6+
# ///
7+
18
from __future__ import absolute_import, annotations, division, print_function
29

310
import mypy.stubgen
@@ -109,4 +116,8 @@ def set_defined_names(self, defined_names: set[str]) -> None:
109116
mypy.stubgenc.InspectionStubGenerator = InspectionStubGenerator # type: ignore[misc]
110117

111118
if __name__ == "__main__":
119+
import sys
120+
oiio_path = sys.argv[1]
121+
sys.path.append(oiio_path)
122+
sys.argv[1:] = ["-p", "OpenImageIO", "-o", oiio_path]
112123
mypy.stubgen.main()

src/python/py.typed

Whitespace-only changes.

0 commit comments

Comments
 (0)