Creating a Python Node with a template (for :program:`ament_python`)
====================================================================

It is always good to rely on the templates available in :program:`ros2 pkg create`, mostly because the best practices for packaging might change between ROS2 versions. 

Let us use the template for creating a package with a Node, as follows.

.. code :: console

   cd ~/ros2_tutorial_workspace/src
   ros2 pkg create python_package_with_a_node \
   --build-type ament_python \
   --node-name sample_python_node
   
Which will output many things in common with the prior example, but with two major differences. 

#. It generates a template Node
#. The :file:`setup.py` has information about the Node.

.. code-block:: bash
   :emphasize-lines: 16, 25

   going to create a new package
   package name: python_package_with_a_node
   destination directory: /root/ros2_tutorial_workspace/src
   package format: 3
   version: 0.0.0
   description: TODO: Package description
   maintainer: ['root <murilo.marinho@manchester.ac.uk>']
   licenses: ['TODO: License declaration']
   build type: ament_python
   dependencies: []
   node_name: sample_python_node
   creating folder ./python_package_with_a_node
   creating ./python_package_with_a_node/package.xml
   creating source folder
   creating folder ./python_package_with_a_node/python_package_with_a_node
   creating ./python_package_with_a_node/setup.py
   creating ./python_package_with_a_node/setup.cfg
   creating folder ./python_package_with_a_node/resource
   creating ./python_package_with_a_node/resource/python_package_with_a_node
   creating ./python_package_with_a_node/python_package_with_a_node/__init__.py
   creating folder ./python_package_with_a_node/test
   creating ./python_package_with_a_node/test/test_copyright.py
   creating ./python_package_with_a_node/test/test_flake8.py
   creating ./python_package_with_a_node/test/test_pep257.py
   creating ./python_package_with_a_node/python_package_with_a_node/sample_python_node.py

   [WARNING]: Unknown license 'TODO: License declaration'.  This has been set in the package.xml, but no LICENSE file has been created.
   It is recommended to use one of the ament license identifiers:
   Apache-2.0
   BSL-1.0
   BSD-2.0
   BSD-2-Clause
   BSD-3-Clause
   GPL-3.0-only
   LGPL-3.0-only
   MIT
   MIT-0

Then, we can build the workspace as usual to consider the new package as well.

.. code :: console

   cd ~/ros2_tutorial_workspace
   colcon build
   
which will result in going through the package we created in the prior example and the current one.   

.. code :: console

   Starting >>> python_package_with_a_node
   Starting >>> the_simplest_python_package
   Finished <<< the_simplest_python_package [0.56s]
   Finished <<< python_package_with_a_node [0.56s]

   Summary: 2 packages finished [0.62s]
