From 57900c6323808bf99d10daa42e7940f3d750e7c3 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Tue, 30 Nov 2021 15:54:47 +0900 Subject: [PATCH] ci: add settings (#16) * release v0.4.0 * Use MkDocs to generate the documentation (#1346) * Use MkDocs to generate the documentation * Serach all docs source files under the root directory * Add space Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Fix layout errors and 404 in the generated documentation (#1348) * Specify the site_url to prevent layout errors * Add README.md since the top-level file could not be generated * Change the MathJax URL since the current one will be deprecated Signed-off-by: Kenji Miyake Co-authored-by: IshitaTakeshi * adding css and favicons (#1452) * adding css and favicons Signed-off-by: Masaya Kataoka * Update tierivcolor.css * Rename CSS Signed-off-by: Kenji Miyake * Don't remove css files Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Co-authored-by: Kenji Miyake * Add dependabot (#1561) * add dependabot * add pull request limit * Change nested_indent for mkdocs (#1639) * Change nested_indent for mkdocs Signed-off-by: Kenji Miyake * Fix a lint issue Signed-off-by: Kenji Miyake * Add "/" to documentation URL Signed-off-by: Kenji Miyake * Add pre-commit (#1560) * add pre-commit * add pre-commit-config * add additional settings for private repository * use default pre-commit-config * update pre-commit setting * Ignore whitespace for line breaks in markdown * Update .github/workflows/pre-commit.yml Co-authored-by: Kazuki Miyahara * exclude svg * remove pretty-format-json * add double-quote-string-fixer * consider COLCON_IGNORE file when seaching modified package * format file * pre-commit fixes * Update pre-commit.yml * Update .pre-commit-config.yaml Co-authored-by: Kazuki Miyahara Co-authored-by: pre-commit Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Add markdownlint and prettier (#1661) * Add markdownlint and prettier Signed-off-by: Kenji Miyake * Ignore .param.yaml Signed-off-by: Kenji Miyake * Apply format Signed-off-by: Kenji Miyake * Fix MD029 (#1813) Signed-off-by: Kenji Miyake * Invoke code formatter at pre-commit (#1935) * Run ament_uncrustify at pre-commit * Reformat existing files * Fix copyright and cpplint errors Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake * add sort-package-xml hook in pre-commit (#1881) * add sort xml hook in pre-commit * change retval to exit_status * rename * add prettier plugin-xml * use early return * add license note * add tier4 license * restore prettier * change license order * move local hooks to public repo * move prettier-xml to pre-commit-hooks-ros * update version for bug-fix * apply pre-commit * Add shellcheck (#2079) * Add shellcheck Signed-off-by: Kenji Miyake * Fix shellcheck Signed-off-by: Kenji Miyake * update pre-commit-hooks-ros to v0.2.0 (#2137) * Auto-update pre-commit hooks (#2138) Co-authored-by: KeisukeShima * Auto-update pre-commit hooks (#2146) * Auto-update pre-commit hooks * Update update-pre-commit.yml Co-authored-by: kenji-miyake Co-authored-by: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> * Add markdown-link-check pre-commit (#2215) * add markdown-lint-check pre-commit * delete files argument * add optional hook * modify comment * add comment * delete hook * add retry option * add option * add files arg * Fix links in hdd_reader.md Signed-off-by: Kenji Miyake * Ignore 403 Signed-off-by: Kenji Miyake * Ignore tier4 github url Signed-off-by: Kenji Miyake * Update link Signed-off-by: Kenji Miyake Co-authored-by: Kenji Miyake * Auto-update pre-commit hooks (#2323) Co-authored-by: kenji-miyake * ignore .swp file (#1833) * Add settings for new formatters (#2330) * Update .pre-commit-config.yaml Signed-off-by: Kenji Miyake * Ignore .cu for cpplint Signed-off-by: Kenji Miyake * Update .clang-format Signed-off-by: Kenji Miyake * Add setup.cfg Signed-off-by: Kenji Miyake * Add CPPLINT.cfg Signed-off-by: Kenji Miyake * Add autoware-lint-common Signed-off-by: Kenji Miyake * Remove unnecessary part Signed-off-by: Kenji Miyake * Add includeorder=standardcfirst Signed-off-by: Kenji Miyake * Use clang-format-12 Signed-off-by: Kenji Miyake * Add IncludeCategories to clang-format Signed-off-by: Kenji Miyake * Remove unnecessary file Signed-off-by: Kenji Miyake * Temporarily comment out pre-commit hooks Signed-off-by: Kenji Miyake * Fix indent miss Signed-off-by: Kenji Miyake * Change include order rule and ignore build/include_order in cpplint Signed-off-by: Kenji Miyake * Change formatter to clang-format and black (#2332) * Revert "Temporarily comment out pre-commit hooks" This reverts commit 748e9cdb145ce12f8b520bcbd97f5ff899fc28a3. * Replace ament_lint_common with autoware_lint_common Signed-off-by: Kenji Miyake * Remove ament_cmake_uncrustify and ament_clang_format Signed-off-by: Kenji Miyake * Apply Black Signed-off-by: Kenji Miyake * Apply clang-format Signed-off-by: Kenji Miyake * Fix build errors Signed-off-by: Kenji Miyake * Fix for cpplint * Fix include double quotes to angle brackets Signed-off-by: Kenji Miyake * Apply clang-format Signed-off-by: Kenji Miyake * Fix build errors Signed-off-by: Kenji Miyake * Back port .auto control packages (#571) * Implement Lateral and Longitudinal Control Muxer * [#570] Porting wf_simulator * [#1189] Deactivate flaky test in 'trajectory_follower_nodes' * [#1189] Fix flacky test in 'trajectory_follower_nodes/latlon_muxer' * [#1057] Add osqp_interface package * [#1057] Add library code for MPC-based lateral control * [#1271] Use std::abs instead of abs * [#1057] Implement Lateral Controller for Cargo ODD * [#1246] Resolve "Test case names currently use snake_case but should be CamelCase" * [#1325] Deactivate flaky smoke test in 'trajectory_follower_nodes' * [#1058] Add library code of longitudinal controller * Fix build error for trajectory follower Signed-off-by: wep21 * Fix build error for trajectory follower nodes Signed-off-by: wep21 * [#1272] Add AckermannControlCommand support to simple_planning_simulator * [#1058] Add Longitudinal Controller node * [#1058] Rename velocity_controller -> longitudinal_controller * [#1058] Update CMakeLists.txt for the longitudinal_controller_node * [#1058] Add smoke test python launch file * [#1058] Use LowPassFilter1d from trajectory_follower * [#1058] Use autoware_auto_msgs * [#1058] Changes for .auto (debug msg tmp fix, common func, tf listener) * [#1058] Remove unused parameters * [#1058] Fix ros test * [#1058] Rm default params from declare_parameters + use autoware types * [#1058] Use default param file to setup NodeOptions in the ros test * [#1058] Fix docstring * [#1058] Replace receiving a Twist with a VehicleKinematicState * [#1058] Change class variables format to m_ prefix * [#1058] Fix plugin name of LongitudinalController in CMakeLists.txt * [#1058] Fix copyright dates * [#1058] Reorder includes * [#1058] Add some tests (~89% coverage without disabling flaky tests) * [#1058] Add more tests (90+% coverage without disabling flaky tests) * [#1058] Use Float32MultiArrayDiagnostic message for debug and slope * [#1058] Calculate wheel_base value from vehicle parameters * [#1058] Cleanup redundant logger setting in tests * [#1058] Set ROS_DOMAIN_ID when running tests to prevent CI failures * [#1058] Remove TF listener and use published vehicle state instead * [#1058] Change smoke tests to use autoware_testing * [#1058] Add plotjuggler cfg for both lateral and longitudinal control * [#1058] Improve design documents * [#1058] Disable flaky test * [#1058] Properly transform vehicle state in longitudinal node * [#1058] Fix TF buffer of lateral controller * [#1058] Tuning of lateral controller for LGSVL * [#1058] Fix formating * [#1058] Fix /tf_static sub to be transient_local * [#1058] Fix yaw recalculation of reverse trajs in the lateral controller * modify trajectory_follower for galactic build Signed-off-by: Takamasa Horibe * [#1379] Update trajectory_follower * [#1379] Update simple_planning_simulator * [#1379] Update trajectory_follower_nodes * apply trajectory msg modification in control Signed-off-by: Takamasa Horibe * move directory Signed-off-by: Takamasa Horibe * remote control/trajectory_follower level dorectpry Signed-off-by: Takamasa Horibe * remove .iv trajectory follower Signed-off-by: Takamasa Horibe * use .auto trajectory_follower Signed-off-by: Takamasa Horibe * remove .iv simple_planning_simulator & osqp_interface Signed-off-by: Takamasa Horibe * use .iv simple_planning_simulator & osqp_interface Signed-off-by: Takamasa Horibe * add tmp_autoware_auto_dependencies Signed-off-by: Takamasa Horibe * tmporally add autoware_auto_msgs Signed-off-by: Takamasa Horibe * apply .auto message split Signed-off-by: Takamasa Horibe * fix build depend Signed-off-by: Takamasa Horibe * fix packages using osqp * fix autoware_auto_geometry * ignore lint of some packages * ignore ament_lint of some packages * ignore lint/pre-commit of trajectory_follower_nodes * disable unit tests of some packages Co-authored-by: Maxime CLEMENT Co-authored-by: Joshua Whitley Co-authored-by: Igor Bogoslavskyi Co-authored-by: MIURA Yasuyuki Co-authored-by: wep21 Co-authored-by: tomoya.kimura * Port parking planner packages from .Auto (#600) * Copy code of 'vehicle_constants_manager' * Fix vehicle_constants_manager for ROS galactic * Rm .iv costmap_generator freespace_planner freespace_planning_aglorihtms * Add astar_search (from .Auto) * Copy freespace_planner from .Auto * Update freespace_planner for .IV * Copy costmap_generator from .Auto * Copy and update had_map_utils from .Auto * Update costmap_generator * Copy costmap_generator_nodes * Update costmap_generator_nodes * Comment out all tests * Move vehicle_constant_managers to tmp_autoware_auto_dependencies * ignore pre-commit for back-ported packages Signed-off-by: Takamasa Horibe * ignore testing Signed-off-by: Takamasa Horibe Co-authored-by: Takamasa Horibe * adding autoware_auto_perception_rviz_plugin (#574) * [152] Implement BoundingBoxArray rviz display plugin. * [285] Clear bounding box markers before adding new markers on new message * [274] Trajectory visualization plugin * raw types to sized type * ControllerTestingNode: added publish_state(), publish_trajectory(), no timer hack to start test, all init is init() * Squashed 'src/external/mpc/' changes from 8fc7cfdd..eaa5908b eaa5908b Merge branch 'input-weight-modify' into 'master' b9ee8e4f Update default mpc_controller_node parameters 8d15f49d Add weights to acceleration and steer controls; loosen simulation test case: git-subtree-dir: src/external/mpc git-subtree-split: eaa5908bdd987051a9dcd9c505f99bfd7f028547 * [#404] apply ament_auto macro to autoware_rviz_plugins * Adding missing dependency on rviz2. * Squashed 'src/external/autoware_auto_msgs/' changes from 56550efd..f40970ea f40970ea Adding velocity_mps to VehicleControlCommand. git-subtree-dir: src/external/autoware_auto_msgs git-subtree-split: f40970ead34d36a695b432dc37accff9d67c17e2 * Update copyright headers to transfer ownership to Autoware Foundation Signed-off-by: Juan Pablo Samper * Add CHANGELOG and update package versions for release Add CHANGELOG and update package versions for release * [#286] Parameterize boundingbox colors from rviz - Add visualization colours via Qt * [#813] use autoware_set_compile_options() for nearly all compiled tests - fix a few causes of warnings and disable warning flags as needed for other tests - set CXX_STANDARD strictly and only in a single place - add CMake flag `AUTOWARE_OPTIMIZATION_OF_SLOW_TARGETS`. Default: OFF - update building instructions and MR template - fix nasty initialization error of static constexpr member in `GenericState` of Kalman filter * [#910] remove private compilation warning ignore flags * [#900] Implement rviz plugin to visualize TrackedObjects * [#1110] Implement rviz plugin for DetectedObjects msg * Resolve "Clarify meaning of pose in *ObjectKinematics messages" * [#1221] Add co-developed entry to copyright * [#1282] Fix double free in ObjectPolygonDisplayBase rviz plugin * [#1355] Make DetectedObject shape corners be in object-local coordinates * porting AAP perception visualization from https://github.com/tier4/AutowareArchitectureProposal.iv/blob/main/perception/util/visualizer/dynamic_object_visualization/include/dynamic_object_visualization/dynamic_object_visualizer.hpp * rename to autoware_auto_perception_rviz_plugin * fix copyright * format code * fix typo * convert camel to snake case * Apply suggestions from code review Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> * change color * replace boost::optional to std::optional * add icons * set marker id to value corresponding to the upper 32 bits of uuid * format code * change motorsycle color * add uuid map to set marker id * format code * remove brief comment * fix lint error * fix include sort * format code * fix include * add autoware_auto_perception_rviz_plugin to pre commit excluded list Co-authored-by: Yunus Emre Caliskan Co-authored-by: Christopher Ho Co-authored-by: MIURA Yasuyuki Co-authored-by: Jit Ray Chowdhury Co-authored-by: Joshua Whitley Co-authored-by: Juan Pablo Samper Co-authored-by: Jilada Eccleston Co-authored-by: Frederik Beaujean Co-authored-by: Vincent Richard Co-authored-by: Gowtham Co-authored-by: Nikolai Morin Co-authored-by: Igor Bogoslavskyi Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> * style(prettier): change printWitdh Signed-off-by: Kenji Miyake * chore: add empty build_depends.repos Signed-off-by: Kenji Miyake * style: fix styles of .pre-commit-config.yaml Signed-off-by: Kenji Miyake * docs(mkdocs): update settings Signed-off-by: Kenji Miyake * chore: update .gitignore Signed-off-by: Kenji Miyake * chore: update .markdown-link-check.json Signed-off-by: Kenji Miyake * chore: update .pre-commit-config.yaml Signed-off-by: Kenji Miyake Co-authored-by: mitsudome-r Co-authored-by: Ishita Takeshi Co-authored-by: Masaya Kataoka Co-authored-by: Keisuke Shima <19993104+KeisukeShima@users.noreply.github.com> Co-authored-by: Kazuki Miyahara Co-authored-by: pre-commit Co-authored-by: autoware-iv-sync-ci[bot] <87871706+autoware-iv-sync-ci[bot]@users.noreply.github.com> Co-authored-by: KeisukeShima Co-authored-by: kenji-miyake Co-authored-by: Satoshi OTA <44889564+satoshi-ota@users.noreply.github.com> Co-authored-by: Takamasa Horibe Co-authored-by: Maxime CLEMENT Co-authored-by: Joshua Whitley Co-authored-by: Igor Bogoslavskyi Co-authored-by: MIURA Yasuyuki Co-authored-by: wep21 Co-authored-by: tomoya.kimura Co-authored-by: Maxime CLEMENT <78338830+maxime-clem@users.noreply.github.com> Co-authored-by: Taichi Higashide Co-authored-by: Yunus Emre Caliskan Co-authored-by: Christopher Ho Co-authored-by: Jit Ray Chowdhury Co-authored-by: Juan Pablo Samper Co-authored-by: Jilada Eccleston Co-authored-by: Frederik Beaujean Co-authored-by: Vincent Richard Co-authored-by: Gowtham Co-authored-by: Nikolai Morin Co-authored-by: Daisuke Nishimatsu <42202095+wep21@users.noreply.github.com> --- .clang-format | 44 +++++++++++ .github/dependabot.yml | 7 ++ .gitignore | 16 ++++ .markdown-link-check.json | 6 ++ .markdownlint.yaml | 6 ++ .pre-commit-config.yaml | 81 +++++++++++++++++++++ .prettierignore | 1 + .prettierrc.yaml | 2 + build_depends.repos | 1 + docs/assets/images/autoware-foundation.png | Bin 0 -> 31688 bytes mkdocs.yaml | 62 ++++++++++++++++ setup.cfg | 15 ++++ 12 files changed, 241 insertions(+) create mode 100644 .clang-format create mode 100644 .github/dependabot.yml create mode 100644 .gitignore create mode 100644 .markdown-link-check.json create mode 100644 .markdownlint.yaml create mode 100644 .pre-commit-config.yaml create mode 100644 .prettierignore create mode 100644 .prettierrc.yaml create mode 100644 build_depends.repos create mode 100644 docs/assets/images/autoware-foundation.png create mode 100644 mkdocs.yaml create mode 100644 setup.cfg diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000000..88623d36ddbcb --- /dev/null +++ b/.clang-format @@ -0,0 +1,44 @@ +--- +# Modified from https://github.com/ament/ament_lint/blob/master/ament_clang_format/ament_clang_format/configuration/.clang-format +Language: Cpp +BasedOnStyle: Google + +AccessModifierOffset: -2 +AlignAfterOpenBracket: AlwaysBreak +BraceWrapping: + AfterClass: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true +BreakBeforeBraces: Custom +ColumnLimit: 100 +ConstructorInitializerIndentWidth: 0 +ContinuationIndentWidth: 2 +DerivePointerAlignment: false +PointerAlignment: Middle +ReflowComments: true +IncludeCategories: + # C++ system headers + - Regex: "<[a-z_]*>" + Priority: 6 + CaseSensitive: true + # C system headers + - Regex: '<.*\.h>' + Priority: 5 + CaseSensitive: true + # Boost headers + - Regex: "boost/.*" + Priority: 4 + CaseSensitive: true + # Message headers + - Regex: ".*_msgs/.*" + Priority: 3 + CaseSensitive: true + # Other Package headers + - Regex: "<.*>" + Priority: 2 + CaseSensitive: true + # Local package headers + - Regex: '".*"' + Priority: 1 + CaseSensitive: true diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000000..b940a74a4c60b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "daily" + open-pull-requests-limit: 1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000..70254bd0936f2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,16 @@ +# Vim +*.swp +*.swo + +# Visual Studio Code +.vscode/ +*.code-workspace + +# colcon +build/ +install/ +log/ + +# Python +*.pyc + diff --git a/.markdown-link-check.json b/.markdown-link-check.json new file mode 100644 index 0000000000000..230751bcfe76f --- /dev/null +++ b/.markdown-link-check.json @@ -0,0 +1,6 @@ +{ + "aliveStatusCodes": [200, 206, 403], + "ignorePatterns": [], + "retryOn429": true, + "retryCount": 10 +} diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000000000..605ac41ce9fb6 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,6 @@ +default: true +MD013: false +MD024: + siblings_only: true +MD033: false +MD041: false diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000000000..1ca7eb51ffc66 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,81 @@ +ci: + autofix_commit_msg: "ci(pre-commit): autofix" + autoupdate_commit_msg: "ci(pre-commit): autoupdate" + +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 + hooks: + - id: check-json + - id: check-merge-conflict + - id: check-toml + - id: check-xml + - id: check-yaml + - id: detect-private-key + - id: end-of-file-fixer + - id: mixed-line-ending + - id: trailing-whitespace + args: [--markdown-linebreak-ext=md] + + - repo: https://github.com/igorshubovych/markdownlint-cli + rev: v0.30.0 + hooks: + - id: markdownlint + args: ["-c", ".markdownlint.yaml", "--fix"] + + - repo: https://github.com/pre-commit/mirrors-prettier + rev: v2.5.0 + hooks: + - id: prettier + + - repo: https://github.com/tier4/pre-commit-hooks-ros + rev: v0.4.0 + hooks: + - id: prettier-package-xml + - id: sort-package-xml + + - repo: https://github.com/gruntwork-io/pre-commit + rev: v0.1.17 + hooks: + - id: shellcheck + + - repo: https://github.com/pycqa/isort + rev: 5.10.1 + hooks: + - id: isort + + - repo: https://github.com/psf/black + rev: 21.11b1 + hooks: + - id: black + args: ["--line-length=100"] + + - repo: https://github.com/PyCQA/flake8 + rev: 4.0.1 + hooks: + - id: flake8 + additional_dependencies: + [ + "flake8-blind-except", + "flake8-builtins", + "flake8-class-newline", + "flake8-comprehensions", + "flake8-deprecated", + "flake8-docstrings", + "flake8-import-order", + "flake8-quotes", + ] + + - repo: https://github.com/pre-commit/mirrors-clang-format + rev: v12.0.1 + hooks: + - id: clang-format + + - repo: https://github.com/cpplint/cpplint + rev: 1.5.5 + hooks: + - id: cpplint + args: ["--quiet"] + exclude: ".cu" + +exclude: ".svg" diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000000000..f740580782527 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +*.param.yaml diff --git a/.prettierrc.yaml b/.prettierrc.yaml new file mode 100644 index 0000000000000..48b0552e3fe47 --- /dev/null +++ b/.prettierrc.yaml @@ -0,0 +1,2 @@ +printWidth: 100 +tabWidth: 2 diff --git a/build_depends.repos b/build_depends.repos new file mode 100644 index 0000000000000..56f46b6f79b6e --- /dev/null +++ b/build_depends.repos @@ -0,0 +1 @@ +repositories: diff --git a/docs/assets/images/autoware-foundation.png b/docs/assets/images/autoware-foundation.png new file mode 100644 index 0000000000000000000000000000000000000000..8d5ce44879fb70275055b0ddbd0ab30e42c186a8 GIT binary patch literal 31688 zcmeFZ_dnJD|3CgfBsoZA3rVP+h+}1(tdPUWZW$%nBYWkj95O;Aql_}Mi z{emELm*}bCN=rqFApF_mrhU!>L71A+e^mF6GVvgY0HULD%Gmee_hIMjJg4u`jpYRG z6Js00+g_$$7Z#S&3ZNOWath0ePqG@QyCV?lxqqJ7*BF|uY@AVvCot9^DZ+0 zw7=ia*?KGwwFen`ys)U>SiCWKh8jsq2bc|?$WP(U#~_608={DnAH1JxR+8>O^xxWM zKw@Loxe+TJX6}qMpBEPC+nzUGSQrGEAjtcB0NarYPI;xPqKJSp;B+bRb4>8Pj|g%n z*^&lnb11ZyA)&wW0oZN3WuDpwqd(UG^@$3+qsULCxw8mP1d!e8ywMTtDEg)XdNW_I z2l@Hf=irEA3^h_E0&j~*T|3wQi?M?0?@z54PKL|J(YJFUlaTFPYf&NEZkEbSsp{5IW;wf!bK$I_%rw{Ix`sZ58xp_!x#Dfvz6+7FL(7 zJ%asJewqrgMt{*M%i@#`9B7bT!obHW>vG|InH{jDh9)fuZ3^;J2-ak|4Qlk&ucOPG zvWJ^O=pr!%i9La5;LT%az+_6sxm2@$AD*w8TkatjCESI)pP6p6l*LD%em$aX=_G zHcNyWWO9=P-Pk;#5@%C)Mu;@PfB^F~uNIp;P_ZsZ#AQc}FaQOYs={-g1~kT}QLa^h zLYI^dJ{Mgn4WuLfV^5rYlnJ+_(OXYfHr>k#wZ{OPu?8QC+_H0eEtfxM(Wahv8y4){;SKZENw#`+m z9u%mcB1QoxlJN|K4bly#j4IyGr&Cg#=jfP&OSH9eKU`FC26}UFEYpgr}&^Z3U}r&jfC7w+yv^ zO&(p2kMjs$9sLuN^gK%5_jd@xYr-w?JO3*;Fi2EJpyp$Z}U`o>X)L!rN zyP4%S12Et^kIw>xwCIi+c?@tSUlJyp#)TBh*b@`D(-W5!;fEPpX{ZnGiuh!NwS zw2Ab!T83a#&^F6M05SR7&#Th=d$?b0XAV=mt|# z&S$aR{``=1uIll;$?pryr`d$45DI7;cZ&gwZDE#6mN878cUs8J+J3?e(1lZiRR_+* z;WvIr<851wz8*sv`iL?lzywZPlc8qR7S8iC=i;Fr$-U`l;Q1Pzr4@APuGd5I!Ry08L{FAsdNjv+D@n+dH+oFpG=|D zzHc)LfR0HiHFU(P?uCLWu~2iRf9^=4=2I9$T~-V@2l$bG45qpB?A~kXC#Sgp>Ui}m zXmH0hUvxb;QEuL&dy|oW%VOQl4Z?%G3!L2eY^LVbuUiR(Xl?gOJ4Bu0>P5PjXxG1t3vJ$cO&e|sKTyf%N(|>G#r`~&IUAH_m~{vR9^RR-YzYL( zc{ap3#pKx0_pQ^i{@61qm-W|a+ny@J_dlJyP?CCsJ#tcH@77z}=hZ*EM}rVav7bQD zIP-_iU~xS0HTGmt@6pHvk>P?^I}{X}AjDfmHu-&j*v5}JpSFIUb=su$Kp0Yg4Vk_R z+E9wnqdONk%A?A%C*Z{|qliFHa8}|bXrnblEl%xrmaU!MfyAn>W9&Es9ZPOmZP2eP z=(p;@jR!mqkwa%@bpHrtfI}%UH{2LUSmKv6k?8?Q*N|~NTwO+kd=F+?U(3z6%l=uO zz9x~X-n1z1K*AF2t4b5Cih59q+Ti*A zN=`({z=DQM-Mt_jFsk*H3449JUpaQmf@gi3hl>0J{J-s~*H_0F|54?f^!KS-s*52E z6;A5gzxWWP#ini!1jk;Dzdm337sbykq`pZVby?jW=ik24+4n7{J9k92yjtK%OTBUY zu$*)fuH94_FZ~s2#0j*u6E@-Z^-u%pNkSHV;QY!J#(869~k zg{ieUZ4-ZTmuHG?Y>N)d;!U)Jq#((tK@uUCi3?+2O<5YNh}q|M zGvVzu>yoQ)H8jQO1p6>wb#X%!vkx*5)xUpaxb8aT9V$HY>w3{OUjv`Rdrtss3o11w z(hoHF$JuV{Ry0!bYV2&(zfBb_x)*EHaI^=)4I5x%%0Ad-TolaH&eCw9gtB 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 literal 0 HcmV?d00001 diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 0000000000000..912888ad38d1f --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,62 @@ +site_name: Autoware Universe Documentation +site_url: https://autowarefoundation.github.io/autoware.universe +repo_url: https://github.com/autowarefoundation/autoware.universe +edit_uri: edit/main/ +docs_dir: . +copyright: "Copyright © 2021 The Autoware Foundation" + +theme: + name: material + features: + - navigation.expand + - navigation.instant + - navigation.sections + - navigation.tabs + - navigation.tabs.sticky + - navigation.top + favicon: assets/images/autoware-foundation.png + icon: + logo: fontawesome/solid/car + repo: fontawesome/brands/github + language: en + palette: + - primary: white + - scheme: default + toggle: + icon: material/weather-sunny + name: Switch to dark mode + - scheme: slate + toggle: + icon: material/weather-night + name: Switch to light mode + +extra: + font: + text: Roboto + code: Roboto Mono + +extra_css: + - https://use.fontawesome.com/releases/v5.15.4/css/all.css + +extra_javascript: + - https://cdn.jsdelivr.net/npm/mathjax@2/MathJax.js?config=TeX-AMS-MML_HTMLorMML + +plugins: + - awesome-pages + - same-dir + - search + +markdown_extensions: + - admonition + - attr_list + - codehilite: { guess_lang: false } + - fontawesome_markdown + - footnotes + - mdx_math + - mdx_truly_sane_lists: { nested_indent: 2 } + - mdx_unimoji + - plantuml_markdown: { server: "http://www.plantuml.com/plantuml", format: svg } + - pymdownx.arithmatex + - pymdownx.highlight + - pymdownx.superfences + - toc: { permalink: "#" } diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000000000..fd61ed536ebc4 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,15 @@ +[flake8] +# Modified from https://github.com/ament/ament_lint/blob/ebd524bb9973d5ec1dc48a670ce54f958a5a0243/ament_flake8/ament_flake8/configuration/ament_flake8.ini +extend-ignore = B902,C816,D100,D101,D102,D103,D104,D105,D106,D107,D203,D212,D404,I202,CNL100,E203,E501,Q000 +import-order-style = google +max-line-length = 100 +show-source = true +statistics = true + +[isort] +profile=black +line_length=100 +force_sort_within_sections=true +force_single_line=true +reverse_relative=true +known_third_party=launch