From 9b044761ee226974cf17e0c5f695bddfc42ba581 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 22:45:28 -0500 Subject: [PATCH 1/6] Unit test friendly folder structure for Python parameters --- .../minimal_publisher.py | 0 .../generate_parameter_module_example/__init__.py | 0 example_python/setup.py | 4 ++-- example_python/test/test_parameters.py | 7 +++++++ .../custom_validation.py | 0 .../generate_parameter_library_py/setup_helper.py | 1 + 6 files changed, 10 insertions(+), 2 deletions(-) rename example_python/{generate_parameter_module_example => examples}/minimal_publisher.py (100%) delete mode 100644 example_python/generate_parameter_module_example/__init__.py create mode 100644 example_python/test/test_parameters.py rename example_python/{generate_parameter_module_example => validators}/custom_validation.py (100%) diff --git a/example_python/generate_parameter_module_example/minimal_publisher.py b/example_python/examples/minimal_publisher.py similarity index 100% rename from example_python/generate_parameter_module_example/minimal_publisher.py rename to example_python/examples/minimal_publisher.py diff --git a/example_python/generate_parameter_module_example/__init__.py b/example_python/generate_parameter_module_example/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/example_python/setup.py b/example_python/setup.py index c757ec8c..d261bad1 100644 --- a/example_python/setup.py +++ b/example_python/setup.py @@ -11,7 +11,7 @@ # set module_name and yaml file module_name = 'admittance_parameters' yaml_file = 'generate_parameter_module_example/parameters.yaml' - validation_module = 'generate_parameter_module_example.custom_validation' + validation_module = 'validators.custom_validation' generate_parameter_module( module_name, yaml_file, validation_module=validation_module ) @@ -33,7 +33,7 @@ tests_require=['pytest'], entry_points={ 'console_scripts': [ - 'test_node = generate_parameter_module_example.minimal_publisher:main' + 'test_node = examples.minimal_publisher:main' ], }, ) diff --git a/example_python/test/test_parameters.py b/example_python/test/test_parameters.py new file mode 100644 index 00000000..a5a5ddcc --- /dev/null +++ b/example_python/test/test_parameters.py @@ -0,0 +1,7 @@ +import generate_parameter_module_example +print(f'Imported file from: {generate_parameter_module_example.__file__}') +print('OK 1') + +import generate_parameter_module_example.admittance_parameters # noqa: E402 + +print('OK 2') diff --git a/example_python/generate_parameter_module_example/custom_validation.py b/example_python/validators/custom_validation.py similarity index 100% rename from example_python/generate_parameter_module_example/custom_validation.py rename to example_python/validators/custom_validation.py diff --git a/generate_parameter_library_py/generate_parameter_library_py/setup_helper.py b/generate_parameter_library_py/generate_parameter_library_py/setup_helper.py index 4149223e..ed4de8e3 100644 --- a/generate_parameter_library_py/generate_parameter_library_py/setup_helper.py +++ b/generate_parameter_library_py/generate_parameter_library_py/setup_helper.py @@ -55,6 +55,7 @@ def generate_parameter_module(module_name, yaml_file, validation_module=''): install_dir = os.path.join( colcon_ws, 'install', + pkg_name, 'lib', py_version, 'site-packages', From eb3f7e6b3f4d5a8a1899b6ee6e66c4c98c9e2470 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 22:53:01 -0500 Subject: [PATCH 2/6] Ensure to add an init file --- .../generate_parameter_library_py/generate_python_module.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py b/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py index 8ba867f1..bd2ded65 100755 --- a/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py +++ b/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py @@ -48,6 +48,9 @@ def run(output_file, yaml_file, validation_module=''): with open(output_file, 'w') as f: f.write(code) + # Put an __init__.py file if one does not yet exist. + init_file = os.path.join(os.path.dirname(output_file), '__init__.py') + open(init_file, 'a').close() def parse_args(): parser = argparse.ArgumentParser() From 37ad69e226b3f5a742bc46379adc37ddfa5d0da4 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 22:54:01 -0500 Subject: [PATCH 3/6] Format --- example_python/setup.py | 4 +--- example_python/test/test_parameters.py | 2 ++ .../generate_parameter_library_py/generate_python_module.py | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/example_python/setup.py b/example_python/setup.py index d261bad1..5f91b8e1 100644 --- a/example_python/setup.py +++ b/example_python/setup.py @@ -32,8 +32,6 @@ license='BSD-3-Clause', tests_require=['pytest'], entry_points={ - 'console_scripts': [ - 'test_node = examples.minimal_publisher:main' - ], + 'console_scripts': ['test_node = examples.minimal_publisher:main'], }, ) diff --git a/example_python/test/test_parameters.py b/example_python/test/test_parameters.py index a5a5ddcc..46490a55 100644 --- a/example_python/test/test_parameters.py +++ b/example_python/test/test_parameters.py @@ -1,4 +1,6 @@ +# -*- coding: utf-8 -*- import generate_parameter_module_example + print(f'Imported file from: {generate_parameter_module_example.__file__}') print('OK 1') diff --git a/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py b/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py index bd2ded65..e0c899d6 100755 --- a/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py +++ b/generate_parameter_library_py/generate_parameter_library_py/generate_python_module.py @@ -52,6 +52,7 @@ def run(output_file, yaml_file, validation_module=''): init_file = os.path.join(os.path.dirname(output_file), '__init__.py') open(init_file, 'a').close() + def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('output_python_module_file') From 0d6f1490688a231455a2dffd3201121567d8eaea Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 23:05:02 -0500 Subject: [PATCH 4/6] Ensure other files in module folder do get installed --- .../custom_validation.py | 0 example_python/setup.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename example_python/{validators => generate_parameter_module_example}/custom_validation.py (100%) diff --git a/example_python/validators/custom_validation.py b/example_python/generate_parameter_module_example/custom_validation.py similarity index 100% rename from example_python/validators/custom_validation.py rename to example_python/generate_parameter_module_example/custom_validation.py diff --git a/example_python/setup.py b/example_python/setup.py index 5f91b8e1..7478a124 100644 --- a/example_python/setup.py +++ b/example_python/setup.py @@ -11,7 +11,7 @@ # set module_name and yaml file module_name = 'admittance_parameters' yaml_file = 'generate_parameter_module_example/parameters.yaml' - validation_module = 'validators.custom_validation' + validation_module = 'generate_parameter_module_example.custom_validation' generate_parameter_module( module_name, yaml_file, validation_module=validation_module ) From b0aee7c4aa744158a864e161cf6b6485ec3e38b7 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 23:08:48 -0500 Subject: [PATCH 5/6] More roll back and clean up test --- .../minimal_publisher.py | 0 example_python/setup.py | 4 +++- example_python/test/test_load_modules.py | 12 ++++++++++++ example_python/test/test_parameters.py | 9 --------- 4 files changed, 15 insertions(+), 10 deletions(-) rename example_python/{examples => generate_parameter_module_example}/minimal_publisher.py (100%) create mode 100644 example_python/test/test_load_modules.py delete mode 100644 example_python/test/test_parameters.py diff --git a/example_python/examples/minimal_publisher.py b/example_python/generate_parameter_module_example/minimal_publisher.py similarity index 100% rename from example_python/examples/minimal_publisher.py rename to example_python/generate_parameter_module_example/minimal_publisher.py diff --git a/example_python/setup.py b/example_python/setup.py index 7478a124..8ade3b73 100644 --- a/example_python/setup.py +++ b/example_python/setup.py @@ -32,6 +32,8 @@ license='BSD-3-Clause', tests_require=['pytest'], entry_points={ - 'console_scripts': ['test_node = examples.minimal_publisher:main'], + 'generate_parameter_module_example': [ + 'test_node = examples.minimal_publisher:main' + ], }, ) diff --git a/example_python/test/test_load_modules.py b/example_python/test/test_load_modules.py new file mode 100644 index 00000000..0d0bdf4a --- /dev/null +++ b/example_python/test/test_load_modules.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +import generate_parameter_module_example + +print(f'Imported module from: {generate_parameter_module_example.__file__}') + +import generate_parameter_module_example.admittance_parameters # noqa: E402 + +print('Imported generated parameter module') + +import generate_parameter_module_example.minimal_publisher # noqa: E402 + +print('Imported minimal publisher module') diff --git a/example_python/test/test_parameters.py b/example_python/test/test_parameters.py deleted file mode 100644 index 46490a55..00000000 --- a/example_python/test/test_parameters.py +++ /dev/null @@ -1,9 +0,0 @@ -# -*- coding: utf-8 -*- -import generate_parameter_module_example - -print(f'Imported file from: {generate_parameter_module_example.__file__}') -print('OK 1') - -import generate_parameter_module_example.admittance_parameters # noqa: E402 - -print('OK 2') From 52345ec3197207788f425bcf49c752b61842edd7 Mon Sep 17 00:00:00 2001 From: Sebastian Castro Date: Fri, 10 Jan 2025 23:10:04 -0500 Subject: [PATCH 6/6] Fix --- example_python/setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/example_python/setup.py b/example_python/setup.py index 8ade3b73..c757ec8c 100644 --- a/example_python/setup.py +++ b/example_python/setup.py @@ -32,8 +32,8 @@ license='BSD-3-Clause', tests_require=['pytest'], entry_points={ - 'generate_parameter_module_example': [ - 'test_node = examples.minimal_publisher:main' + 'console_scripts': [ + 'test_node = generate_parameter_module_example.minimal_publisher:main' ], }, )