From 785199b6e301e81ef94f1137a6a9df5549fd4394 Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Sun, 24 May 2020 17:09:43 -0400 Subject: [PATCH 1/2] Add sphinx documentation for tracetools_analysis Signed-off-by: Christophe Bedard --- tracetools_analysis/docs/.gitignore | 1 + tracetools_analysis/docs/Makefile | 19 ++ tracetools_analysis/docs/source/about.rst | 4 + tracetools_analysis/docs/source/api.rst | 8 + .../docs/source/api/tracetools_analysis.rst | 82 +++++++ tracetools_analysis/docs/source/conf.py | 208 ++++++++++++++++++ tracetools_analysis/docs/source/index.rst | 17 ++ .../test/tracetools_analysis/test_loading.py | 14 +- .../tracetools_analysis/loading/__init__.py | 10 +- .../tracetools_analysis/processor/ros2.py | 2 +- 10 files changed, 352 insertions(+), 13 deletions(-) create mode 100644 tracetools_analysis/docs/.gitignore create mode 100644 tracetools_analysis/docs/Makefile create mode 100644 tracetools_analysis/docs/source/about.rst create mode 100644 tracetools_analysis/docs/source/api.rst create mode 100644 tracetools_analysis/docs/source/api/tracetools_analysis.rst create mode 100644 tracetools_analysis/docs/source/conf.py create mode 100644 tracetools_analysis/docs/source/index.rst diff --git a/tracetools_analysis/docs/.gitignore b/tracetools_analysis/docs/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/tracetools_analysis/docs/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/tracetools_analysis/docs/Makefile b/tracetools_analysis/docs/Makefile new file mode 100644 index 0000000..69fe55e --- /dev/null +++ b/tracetools_analysis/docs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) \ No newline at end of file diff --git a/tracetools_analysis/docs/source/about.rst b/tracetools_analysis/docs/source/about.rst new file mode 100644 index 0000000..0e281d6 --- /dev/null +++ b/tracetools_analysis/docs/source/about.rst @@ -0,0 +1,4 @@ +About +===== + +Tools for analyzing trace data from ROS 2 systems generated by the `ros2_tracing packages `_. diff --git a/tracetools_analysis/docs/source/api.rst b/tracetools_analysis/docs/source/api.rst new file mode 100644 index 0000000..1cfb540 --- /dev/null +++ b/tracetools_analysis/docs/source/api.rst @@ -0,0 +1,8 @@ +API +=== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + api/tracetools_analysis diff --git a/tracetools_analysis/docs/source/api/tracetools_analysis.rst b/tracetools_analysis/docs/source/api/tracetools_analysis.rst new file mode 100644 index 0000000..f77b1bc --- /dev/null +++ b/tracetools_analysis/docs/source/api/tracetools_analysis.rst @@ -0,0 +1,82 @@ +tracetools_analysis +=================== + +loading +####### + +.. automodule:: tracetools_analysis.loading + +processor +######### + +.. automodule:: tracetools_analysis.processor + +CPU time +******** + +.. automodule:: tracetools_analysis.processor.cpu_time + +memory usage +************ + +.. automodule:: tracetools_analysis.processor.memory_usage + +profile +******* + +.. automodule:: tracetools_analysis.processor.profile + +ROS 2 +***** + +.. automodule:: tracetools_analysis.processor.ros2 + +data model +########## + +.. automodule:: tracetools_analysis.data_model + +CPU time +******** + +.. automodule:: tracetools_analysis.data_model.cpu_time + +memory usage +************ + +.. automodule:: tracetools_analysis.data_model.memory_usage + +profile +******* + +.. automodule:: tracetools_analysis.data_model.profile + +ROS 2 +***** + +.. automodule:: tracetools_analysis.data_model.ros2 + +utils +##### + +.. automodule:: tracetools_analysis.utils + +CPU time +******** + +.. automodule:: tracetools_analysis.utils.cpu_time + +memory usage +************ + +.. automodule:: tracetools_analysis.utils.memory_usage + +profile +******* + +.. automodule:: tracetools_analysis.utils.profile + +ROS 2 +***** + +.. automodule:: tracetools_analysis.utils.ros2 diff --git a/tracetools_analysis/docs/source/conf.py b/tracetools_analysis/docs/source/conf.py new file mode 100644 index 0000000..b81d861 --- /dev/null +++ b/tracetools_analysis/docs/source/conf.py @@ -0,0 +1,208 @@ +# Copyright 2019 Open Source Robotics Foundation, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +# tracetools_analysis +sys.path.insert(0, os.path.abspath('../../')) + + +# -- Project information ----------------------------------------------------- + +project = 'tracetools_test' +copyright = '2019-2020, Robert Bosch GmbH & Christophe Bedard' # noqa +author = 'Robert Bosch GmbH, Christophe Bedard' + +# The short X.Y version +version = os.environ.get('SPHINX_VERSION_SHORT', '') +# The full version, including alpha/beta/rc tags +release = os.environ.get('SPHINX_VERSION_FULL', '') + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx_autodoc_typehints', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.coverage', +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +# source_suffix = ['.rst', '.md'] +source_suffix = '.rst' + +# The master toctree document. +master_doc = 'index' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. +# exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = None + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = [] + +# Custom sidebar templates, must be a dictionary that maps document names +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'tracetools_analysis-doc' + + +# -- Options for LaTeX output ------------------------------------------------ + +# latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +# +# 'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +# +# 'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +# +# 'preamble': '', + +# Latex figure (float) alignment +# +# 'figure_align': 'htbp', +# } + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +# latex_documents = [ +# (master_doc, 'rclpy.tex', 'rclpy Documentation', +# 'Esteve Fernandez', 'manual'), +# ] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +# man_pages = [ +# (master_doc, 'rclpy', 'rclpy Documentation', +# [author], 1) +# ] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +# texinfo_documents = [ +# (master_doc, 'rclpy', 'rclpy Documentation', +# author, 'rclpy', 'One line description of project.', +# 'Miscellaneous'), +# ] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +# epub_exclude_files = ['search.html'] + + +# -- Extension configuration ------------------------------------------------- + +# Ignore these +autodoc_mock_imports = [ + 'tracetools_read', +] + +autoclass_content = 'both' + +autodoc_default_options = { + 'members': None, + 'undoc-members': True, +} diff --git a/tracetools_analysis/docs/source/index.rst b/tracetools_analysis/docs/source/index.rst new file mode 100644 index 0000000..91b16d3 --- /dev/null +++ b/tracetools_analysis/docs/source/index.rst @@ -0,0 +1,17 @@ +tracetools_analysis +=================== + +tracetools_analysis provides tools for analyzing trace data from ROS 2 systems generated by the `ros2_tracing packages `_. + +.. toctree:: + :maxdepth: 4 + + about + api + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/tracetools_analysis/test/tracetools_analysis/test_loading.py b/tracetools_analysis/test/tracetools_analysis/test_loading.py index f60a82f..f28c6ce 100644 --- a/tracetools_analysis/test/tracetools_analysis/test_loading.py +++ b/tracetools_analysis/test/tracetools_analysis/test_loading.py @@ -21,7 +21,7 @@ import shutil import tempfile import unittest -from tracetools_analysis.loading import inspect_input_path +from tracetools_analysis.loading import _inspect_input_path class TestLoading(unittest.TestCase): @@ -68,28 +68,28 @@ class TestLoading(unittest.TestCase): quiet: bool = False, ) -> None: # Should find converted file under directory - file_path, create_file = inspect_input_path(self.with_converted_file_dir, False, quiet) + file_path, create_file = _inspect_input_path(self.with_converted_file_dir, False, quiet) self.assertEqual(self.converted_file_path, file_path) self.assertFalse(create_file) # Should find it but set it to be re-created - file_path, create_file = inspect_input_path(self.with_converted_file_dir, True, quiet) + file_path, create_file = _inspect_input_path(self.with_converted_file_dir, True, quiet) self.assertEqual(self.converted_file_path, file_path) self.assertTrue(create_file) # Should fail to find converted file under directory - file_path, create_file = inspect_input_path(self.without_converted_file_dir, False, quiet) + file_path, create_file = _inspect_input_path(self.without_converted_file_dir, False, quiet) self.assertIsNone(file_path) self.assertFalse(create_file) - file_path, create_file = inspect_input_path(self.without_converted_file_dir, True, quiet) + file_path, create_file = _inspect_input_path(self.without_converted_file_dir, True, quiet) self.assertIsNone(file_path) self.assertFalse(create_file) # Should accept any file path if it exists - file_path, create_file = inspect_input_path(self.random_file_path, False, quiet) + file_path, create_file = _inspect_input_path(self.random_file_path, False, quiet) self.assertEqual(self.random_file_path, file_path) self.assertFalse(create_file) # Should set it to be re-created - file_path, create_file = inspect_input_path(self.random_file_path, True, quiet) + file_path, create_file = _inspect_input_path(self.random_file_path, True, quiet) self.assertEqual(self.random_file_path, file_path) self.assertTrue(create_file) diff --git a/tracetools_analysis/tracetools_analysis/loading/__init__.py b/tracetools_analysis/tracetools_analysis/loading/__init__.py index 48ff642..0b8a183 100644 --- a/tracetools_analysis/tracetools_analysis/loading/__init__.py +++ b/tracetools_analysis/tracetools_analysis/loading/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Module for converted trace file loading.""" +"""Module for loading traces.""" import os import pickle @@ -28,7 +28,7 @@ from ..convert import convert from ..convert import DEFAULT_CONVERT_FILE_NAME -def inspect_input_path( +def _inspect_input_path( input_path: str, force_conversion: bool = False, quiet: bool = False, @@ -96,7 +96,7 @@ def inspect_input_path( return converted_file_path, False -def convert_if_needed( +def _convert_if_needed( input_path: str, force_conversion: bool = False, quiet: bool = False, @@ -109,7 +109,7 @@ def convert_if_needed( :param quiet: whether to not print any output :return: the path to the converted file, or `None` if it failed """ - converted_file_path, create_converted_file = inspect_input_path( + converted_file_path, create_converted_file = _inspect_input_path( input_path, force_conversion, quiet, @@ -143,7 +143,7 @@ def load_file( :return: the list of events read from the file """ if do_convert_if_needed or force_conversion: - file_path = convert_if_needed(input_path, force_conversion, quiet) + file_path = _convert_if_needed(input_path, force_conversion, quiet) else: file_path = input_path diff --git a/tracetools_analysis/tracetools_analysis/processor/ros2.py b/tracetools_analysis/tracetools_analysis/processor/ros2.py index e46d5b4..8fbcc28 100644 --- a/tracetools_analysis/tracetools_analysis/processor/ros2.py +++ b/tracetools_analysis/tracetools_analysis/processor/ros2.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -"""Module for trace events processor and ROS model creation.""" +"""Module for trace events processor and ROS 2 model creation.""" from typing import Dict from typing import Set From 204a96067bb7b3f21c689892a6e9df7643a30fc6 Mon Sep 17 00:00:00 2001 From: Christophe Bedard Date: Sun, 24 May 2020 17:07:08 -0400 Subject: [PATCH 2/2] Add trigger_gen_docs job Signed-off-by: Christophe Bedard --- .gitlab-ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 982cdfe..fb2b0d0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -45,3 +45,11 @@ coverage: - colcon coveragepy-result --packages-select $PACKAGES_LIST --verbose --coverage-report-args -m allow_failure: true <<: *global_artifacts + +trigger_gen_docs: + stage: report + only: + refs: + - master + - foxy + trigger: micro-ROS/ros_tracing/tracetools_analysis-api