Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • ostasse/dynamic-graph-python
  • gsaurel/dynamic-graph-python
  • stack-of-tasks/dynamic-graph-python
3 results
Show changes
Commits on Source (45)
# pre-commit run -a (Guilhem Saurel, 2022-07-27)
db4d991c9d727b8454695ce8d88948b948c6b36f
...@@ -3,12 +3,12 @@ ci: ...@@ -3,12 +3,12 @@ ci:
autoupdate_branch: 'devel' autoupdate_branch: 'devel'
repos: repos:
- repo: https://github.com/pre-commit/mirrors-clang-format - repo: https://github.com/pre-commit/mirrors-clang-format
rev: v13.0.1 rev: v14.0.6
hooks: hooks:
- id: clang-format - id: clang-format
args: [-i, --style=Google] args: [--style=Google]
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.2.0 rev: v4.3.0
hooks: hooks:
- id: check-added-large-files - id: check-added-large-files
- id: check-ast - id: check-ast
...@@ -26,10 +26,14 @@ repos: ...@@ -26,10 +26,14 @@ repos:
- id: mixed-line-ending - id: mixed-line-ending
- id: trailing-whitespace - id: trailing-whitespace
- repo: https://github.com/psf/black - repo: https://github.com/psf/black
rev: 22.3.0 rev: 22.8.0
hooks: hooks:
- id: black - id: black
- repo: https://github.com/PyCQA/flake8 - repo: https://github.com/PyCQA/flake8
rev: 4.0.1 rev: 5.0.4
hooks: hooks:
- id: flake8 - id: flake8
- repo: https://github.com/cheshirekow/cmake-format-precommit
rev: v0.6.13
hooks:
- id: cmake-format
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS # Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
CMAKE_MINIMUM_REQUIRED(VERSION 3.1) cmake_minimum_required(VERSION 3.1)
# Project properties # Project properties
SET(PROJECT_ORG stack-of-tasks) set(PROJECT_ORG stack-of-tasks)
SET(PROJECT_NAME dynamic-graph-python) set(PROJECT_NAME dynamic-graph-python)
SET(PROJECT_DESCRIPTION "Dynamic graph library Python bindings") set(PROJECT_DESCRIPTION "Dynamic graph library Python bindings")
SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
# Project options # Project options
OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON) option(SUFFIX_SO_VERSION "Suffix library name with its version" ON)
# Project configuration # Project configuration
SET(PROJECT_USE_CMAKE_EXPORT TRUE) set(PROJECT_USE_CMAKE_EXPORT TRUE)
SET(CUSTOM_HEADER_DIR "dynamic-graph/python") set(CUSTOM_HEADER_DIR "dynamic-graph/python")
SET(CXX_DISABLE_WERROR TRUE) set(CXX_DISABLE_WERROR TRUE)
SET(DOXYGEN_USE_MATHJAX YES) set(DOXYGEN_USE_MATHJAX YES)
# JRL-cmakemodule setup # JRL-cmakemodule setup
INCLUDE(cmake/base.cmake) include(cmake/base.cmake)
INCLUDE(cmake/boost.cmake) include(cmake/boost.cmake)
INCLUDE(cmake/python.cmake)
# Project definition # Project definition
COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX) compute_project_args(PROJECT_ARGS LANGUAGES CXX)
PROJECT(${PROJECT_NAME} ${PROJECT_ARGS}) project(${PROJECT_NAME} ${PROJECT_ARGS})
CHECK_MINIMAL_CXX_STANDARD(14 ENFORCE) check_minimal_cxx_standard(14 ENFORCE)
# Project dependencies # Project dependencies
FINDPYTHON() set(PYTHON_COMPONENTS Interpreter Development NumPy)
add_project_dependency(dynamic-graph 4.4.0 REQUIRED)
ADD_PROJECT_DEPENDENCY(dynamic-graph 4.4.0 REQUIRED) add_project_dependency(eigenpy 2.7.10 REQUIRED)
ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED) set(PYTHON_EXPORT_DEPENDENCY_MACROS
SEARCH_FOR_BOOST_PYTHON(REQUIRED) "list(APPEND PYTHON_COMPONENTS ${PYTHON_COMPONENTS})\n${PYTHON_EXPORT_DEPENDENCY_MACROS}"
IF(BUILD_TESTING) )
FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework) if(BUILD_TESTING)
ENDIF(BUILD_TESTING) find_package(Boost REQUIRED COMPONENTS unit_test_framework)
endif(BUILD_TESTING)
IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
if(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299)
# Silence a warning about a deprecated use of boost bind by boost >= 1.73 # Silence a warning about a deprecated use of boost bind by boost >= 1.73
# without dropping support for boost < 1.73 # without dropping support for boost < 1.73
ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS)
ENDIF() endif()
# Main Library # Main Library
SET(${PROJECT_NAME}_HEADERS set(${PROJECT_NAME}_HEADERS
include/${CUSTOM_HEADER_DIR}/api.hh include/${CUSTOM_HEADER_DIR}/api.hh
include/${CUSTOM_HEADER_DIR}/convert-dg-to-py.hh include/${CUSTOM_HEADER_DIR}/convert-dg-to-py.hh
include/${CUSTOM_HEADER_DIR}/dynamic-graph-py.hh include/${CUSTOM_HEADER_DIR}/dynamic-graph-py.hh
include/${CUSTOM_HEADER_DIR}/fwd.hh include/${CUSTOM_HEADER_DIR}/fwd.hh
include/${CUSTOM_HEADER_DIR}/interpreter.hh include/${CUSTOM_HEADER_DIR}/interpreter.hh
include/${CUSTOM_HEADER_DIR}/module.hh include/${CUSTOM_HEADER_DIR}/module.hh
include/${CUSTOM_HEADER_DIR}/python-compat.hh include/${CUSTOM_HEADER_DIR}/python-compat.hh
include/${CUSTOM_HEADER_DIR}/signal.hh include/${CUSTOM_HEADER_DIR}/signal.hh
include/${CUSTOM_HEADER_DIR}/signal-wrapper.hh include/${CUSTOM_HEADER_DIR}/signal-wrapper.hh)
)
set(${PROJECT_NAME}_SOURCES
SET(${PROJECT_NAME}_SOURCES src/interpreter.cc src/dynamic_graph/python-compat.cc
src/interpreter.cc src/dynamic_graph/entity-py.cc src/dynamic_graph/convert-dg-to-py.cc)
src/dynamic_graph/python-compat.cc
src/dynamic_graph/entity-py.cc add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES}
src/dynamic_graph/convert-dg-to-py.cc ${${PROJECT_NAME}_HEADERS})
) target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
target_link_libraries(${PROJECT_NAME} PUBLIC dynamic-graph::dynamic-graph)
ADD_LIBRARY(${PROJECT_NAME} SHARED modernize_target_link_libraries(
${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) ${PROJECT_NAME}
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM PUBLIC ${PYTHON_INCLUDE_DIR}) SCOPE
TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) PUBLIC
TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC ${PYTHON_LIBRARY} TARGETS
dynamic-graph::dynamic-graph) Python${PYTHON_VERSION_MAJOR}::Python
TARGET_LINK_BOOST_PYTHON(${PROJECT_NAME} PRIVATE) LIBRARIES
${PYTHON_LIBRARIES}
IF(SUFFIX_SO_VERSION) INCLUDE_DIRS
SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) ${PYTHON_INCLUDE_DIRS})
ENDIF(SUFFIX_SO_VERSION) target_link_boost_python(${PROJECT_NAME} PUBLIC)
TARGET_COMPILE_DEFINITIONS(${PROJECT_NAME} PRIVATE PYTHON_LIBRARY="${PYTHON_LIBRARY}") if(SUFFIX_SO_VERSION)
set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) endif(SUFFIX_SO_VERSION)
ADD_SUBDIRECTORY(src) target_compile_definitions(${PROJECT_NAME}
IF(BUILD_TESTING) PRIVATE PYTHON_LIBRARY="${PYTHON_LIBRARY}")
ADD_SUBDIRECTORY(tests)
ENDIF(BUILD_TESTING) install(
TARGETS ${PROJECT_NAME}
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME}) EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION lib)
add_subdirectory(src)
if(BUILD_TESTING)
add_subdirectory(tests)
endif(BUILD_TESTING)
install(FILES package.xml DESTINATION share/${PROJECT_NAME})
Subproject commit e77c9c32b1d69b21e447cf64f1ad1590aab61159 Subproject commit 08c2c18b9033c2f0a86b885b589f4fa63a163caf
File moved
<?xml version="1.0"?> <?xml version="1.0"?>
<package format="3"> <package format="3">
<name>dynamic-graph-python</name> <name>dynamic-graph-python</name>
<version>4.0.5</version> <version>4.0.11</version>
<description> <description>Dynamic graph library Python bindings</description>
Dynamic graph library Python bindings
</description>
<maintainer email="guilhem.saurel@laas.fr">Guilhem Saurel</maintainer> <maintainer email="guilhem.saurel@laas.fr">Guilhem Saurel</maintainer>
<license>BSD</license>
<url>http://github.com/stack-of-tasks/dynamic-graph-python</url>
<author>Nicolas Mansard</author> <author>Nicolas Mansard</author>
<author>Olivier Stasse</author> <author>Olivier Stasse</author>
<license>BSD</license>
<url type="website">https://github.com/stack-of-tasks/dynamic-graph-python</url>
<build_depend>git</build_depend> <build_depend>git</build_depend>
<build_depend>doxygen</build_depend> <build_depend>doxygen</build_depend>
<doc_depend>doxygen</doc_depend>
<!-- The following tags are recommended by REP-136 --> <!-- The following tag is recommended by REP-136 -->
<exec_depend condition="$ROS_VERSION == 1">catkin</exec_depend> <exec_depend condition="$ROS_VERSION == 1">catkin</exec_depend>
<exec_depend condition="$ROS_VERSION == 2">ament_cmake</exec_depend>
<depend>dynamic-graph</depend> <depend condition="$ROS_PYTHON_VERSION == 2">python</depend>
<depend condition="$ROS_PYTHON_VERSION == 3">python3</depend>
<depend condition="$ROS_PYTHON_VERSION == 2">python-numpy</depend>
<depend condition="$ROS_PYTHON_VERSION == 3">python3-numpy</depend>
<depend>eigen</depend>
<depend>boost</depend> <depend>boost</depend>
<depend>eigenpy</depend> <depend>eigenpy</depend>
<depend>dynamic-graph</depend>
<buildtool_depend>cmake</buildtool_depend> <buildtool_depend>cmake</buildtool_depend>
<export> <export>
<build_type>cmake</build_type> <build_type>cmake</build_type>
</export> </export>
</package> </package>
# Python bindings # Python bindings
ADD_SUBDIRECTORY(dynamic_graph) add_subdirectory(dynamic_graph)
SET(PYTHON_SOURCES set(PYTHON_SOURCES __init__.py attrpath.py entity.py signal_base.py
__init__.py script_shortcuts.py tools.py)
attrpath.py
entity.py
signal_base.py
script_shortcuts.py
tools.py
)
FOREACH(source ${PYTHON_SOURCES}) foreach(source ${PYTHON_SOURCES})
PYTHON_INSTALL_ON_SITE(dynamic_graph ${source}) python_install_on_site(dynamic_graph ${source})
ENDFOREACH(source) endforeach(source)
# --- ADD the wrap on the dg modules # --- ADD the wrap on the dg modules
LINK_DIRECTORIES(${DYNAMIC_GRAPH_PLUGINDIR}) link_directories(${DYNAMIC_GRAPH_PLUGINDIR})
DYNAMIC_GRAPH_PYTHON_MODULE("tracer" dynamic-graph::tracer tracer-wrap dynamic_graph_python_module(
SOURCE_PYTHON_MODULE ${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer/wrap.cc) "tracer" dynamic-graph::tracer tracer-wrap SOURCE_PYTHON_MODULE
DYNAMIC_GRAPH_PYTHON_MODULE("tracer_real_time" dynamic-graph::tracer-real-time tracer_real_time-wrap ${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer/wrap.cc)
SOURCE_PYTHON_MODULE ${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer_real_time/wrap.cc) dynamic_graph_python_module(
"tracer_real_time" dynamic-graph::tracer-real-time tracer_real_time-wrap
SOURCE_PYTHON_MODULE
${CMAKE_CURRENT_SOURCE_DIR}/dynamic_graph/tracer_real_time/wrap.cc)
# Copyright 2010-2021, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS # Copyright 2010-2021, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
SET(PYTHON_MODULE wrap) set(PYTHON_MODULE wrap)
ADD_LIBRARY(${PYTHON_MODULE} MODULE add_library(
debug-py.cc ${PYTHON_MODULE} MODULE debug-py.cc dynamic-graph-py.cc factory-py.cc
dynamic-graph-py.cc pool-py.cc signal-base-py.cc signal-wrapper.cc)
factory-py.cc
pool-py.cc
signal-base-py.cc
signal-wrapper.cc
)
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PUBLIC ${PROJECT_NAME} eigenpy::eigenpy) target_link_libraries(${PYTHON_MODULE} PUBLIC ${PROJECT_NAME} eigenpy::eigenpy)
TARGET_LINK_BOOST_PYTHON(${PYTHON_MODULE} PRIVATE)
# Remove prefix lib # Remove prefix lib
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES PREFIX "") set_target_properties(${PYTHON_MODULE} PROPERTIES PREFIX "")
IF(UNIX AND NOT APPLE) if(UNIX AND NOT APPLE)
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES INSTALL_RPATH "\$ORIGIN/../../..") set_target_properties(${PYTHON_MODULE} PROPERTIES INSTALL_RPATH
ENDIF() "\$ORIGIN/../../..")
endif()
INSTALL(TARGETS ${PYTHON_MODULE} install(
TARGETS ${PYTHON_MODULE}
EXPORT ${TARGETS_EXPORT_NAME} EXPORT ${TARGETS_EXPORT_NAME}
DESTINATION ${PYTHON_SITELIB}/dynamic_graph) DESTINATION ${PYTHON_SITELIB}/dynamic_graph)
# Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem Saurel, JRL, CNRS/AIST, LAAS-CNRS # Copyright 2010-2020, Florent Lamiraux, Thomas Moulard, Olivier Stasse, Guilhem
# Saurel, JRL, CNRS/AIST, LAAS-CNRS
# Test the interpreter # Test the interpreter
ADD_UNIT_TEST(interpreter-test interpreter-test.cc) add_unit_test(interpreter-test interpreter-test.cc)
TARGET_LINK_LIBRARIES(interpreter-test PRIVATE ${PROJECT_NAME}) target_link_libraries(interpreter-test PRIVATE ${PROJECT_NAME})
# Test runfile # Test runfile
ADD_UNIT_TEST(interpreter-test-runfile interpreter-test-runfile.cc) add_unit_test(interpreter-test-runfile interpreter-test-runfile.cc)
TARGET_LINK_LIBRARIES(interpreter-test-runfile PRIVATE ${PROJECT_NAME}) target_link_libraries(interpreter-test-runfile PRIVATE ${PROJECT_NAME})
TARGET_INCLUDE_DIRECTORIES(interpreter-test-runfile PRIVATE Boost::unit_test_framework) target_include_directories(interpreter-test-runfile
TARGET_COMPILE_DEFINITIONS(interpreter-test-runfile PRIVATE PATH="${CMAKE_CURRENT_LIST_DIR}/") PRIVATE Boost::unit_test_framework)
target_compile_definitions(interpreter-test-runfile
PRIVATE PATH="${CMAKE_CURRENT_LIST_DIR}/")
# Test the module generation # Test the module generation Create an entity
## Create an entity
SET(LIBRARY_NAME "custom_entity") set(LIBRARY_NAME "custom_entity")
ADD_LIBRARY(${LIBRARY_NAME} SHARED "${LIBRARY_NAME}.cpp") add_library(${LIBRARY_NAME} SHARED "${LIBRARY_NAME}.cpp")
IF(SUFFIX_SO_VERSION) if(SUFFIX_SO_VERSION)
SET_TARGET_PROPERTIES(${LIBRARY_NAME} set_target_properties(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
PROPERTIES SOVERSION ${PROJECT_VERSION}) endif(SUFFIX_SO_VERSION)
ENDIF(SUFFIX_SO_VERSION)
target_link_libraries(${LIBRARY_NAME} PRIVATE dynamic-graph::dynamic-graph) target_link_libraries(${LIBRARY_NAME} PRIVATE dynamic-graph::dynamic-graph)
## Create its bindings # Create its bindings This mimics DYNAMIC_GRAPH_PYTHON_MODULE(${LIBRARY_NAME}
## This mimics DYNAMIC_GRAPH_PYTHON_MODULE(${LIBRARY_NAME} ${LIBRARY_NAME} "${LIBRARY_NAME}-wrap") # ${LIBRARY_NAME} "${LIBRARY_NAME}-wrap")
CONFIGURE_FILE(
${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/submodule/__init__.py.cmake
${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}/__init__.py
)
SET(PYTHON_MODULE "${LIBRARY_NAME}-wrap")
set(DYNAMICGRAPH_MODULE_HEADER "${CMAKE_SOURCE_DIR}/tests/custom_entity_module.h")
configure_file( configure_file(
${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/python-module-py.cc.in ${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/submodule/__init__.py.cmake
${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc ${CMAKE_CURRENT_BINARY_DIR}/${LIBRARY_NAME}/__init__.py)
@ONLY set(PYTHON_MODULE "${LIBRARY_NAME}-wrap")
) set(DYNAMICGRAPH_MODULE_HEADER
ADD_LIBRARY(${PYTHON_MODULE} MODULE ${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc) "${CMAKE_SOURCE_DIR}/tests/custom_entity_module.h")
SET_TARGET_PROPERTIES(${PYTHON_MODULE} PROPERTIES configure_file(${PROJECT_SOURCE_DIR}/cmake/dynamic_graph/python-module-py.cc.in
PREFIX "" ${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc @ONLY)
OUTPUT_NAME ${LIBRARY_NAME}/wrap) add_library(${PYTHON_MODULE} MODULE
${CMAKE_CURRENT_BINARY_DIR}/python-module-py.cc)
IF(UNIX AND NOT APPLE) set_target_properties(${PYTHON_MODULE}
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PRIVATE "-Wl,--no-as-needed") PROPERTIES PREFIX "" OUTPUT_NAME ${LIBRARY_NAME}/wrap)
ENDIF(UNIX AND NOT APPLE)
if(UNIX AND NOT APPLE)
TARGET_LINK_LIBRARIES(${PYTHON_MODULE} PRIVATE target_link_libraries(${PYTHON_MODULE} PRIVATE "-Wl,--no-as-needed")
${LIBRARY_NAME} dynamic-graph-python endif(UNIX AND NOT APPLE)
${PYTHON_LIBRARY})
TARGET_LINK_BOOST_PYTHON(${PYTHON_MODULE} PRIVATE) target_link_libraries(${PYTHON_MODULE} PRIVATE ${LIBRARY_NAME} ${PROJECT_NAME})
TARGET_INCLUDE_DIRECTORIES(${PYTHON_MODULE} SYSTEM PRIVATE ${PYTHON_INCLUDE_DIRS})
# Test it
## Test it add_python_unit_test("test-custom-entity" "tests/test_custom_entity.py" src
ADD_PYTHON_UNIT_TEST("test-custom-entity" "tests/test_custom_entity.py" src tests) tests)
# also test other bindings, using this custom entity # also test other bindings, using this custom entity
ADD_PYTHON_UNIT_TEST("test-bindings" "tests/test_bindings.py" src tests) add_python_unit_test("test-bindings" "tests/test_bindings.py" src tests)