robotframework 7.1rc2__zip → 7.2b1__zip

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. {robotframework-7.1rc2 → robotframework-7.2b1}/BUILD.rst +7 -7
  2. {robotframework-7.1rc2 → robotframework-7.2b1}/PKG-INFO +2 -2
  3. {robotframework-7.1rc2 → robotframework-7.2b1}/setup.py +1 -1
  4. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/__init__.py +33 -9
  5. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/deco.py +8 -6
  6. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/interfaces.py +66 -15
  7. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/parsing.py +72 -68
  8. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/languages.py +4 -3
  9. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/settings.py +11 -10
  10. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/errors.py +3 -3
  11. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/htmlfilewriter.py +3 -0
  12. robotframework-7.2b1/src/robot/htmldata/libdoc/libdoc.html +408 -0
  13. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.html +1 -1
  14. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/report.html +1 -1
  15. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/testdata.js +1 -1
  16. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/template.py +0 -2
  17. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdoc.py +19 -11
  18. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/htmlwriter.py +7 -4
  19. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/model.py +7 -5
  20. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/writer.py +2 -2
  21. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/BuiltIn.py +121 -32
  22. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Collections.py +20 -7
  23. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/__init__.py +3 -3
  24. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/body.py +48 -57
  25. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/control.py +35 -4
  26. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/message.py +13 -8
  27. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/modelobject.py +26 -0
  28. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/statistics.py +13 -9
  29. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/stats.py +12 -14
  30. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/suitestatistics.py +8 -9
  31. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tags.py +10 -0
  32. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tagstatistics.py +7 -8
  33. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/testcase.py +1 -0
  34. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/testsuite.py +1 -0
  35. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/totalstatistics.py +14 -21
  36. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/visitor.py +29 -3
  37. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/__init__.py +3 -2
  38. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/dotted.py +6 -3
  39. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/highlighting.py +18 -10
  40. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/debugfile.py +3 -3
  41. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/filelogger.py +7 -3
  42. robotframework-7.2b1/src/robot/output/jsonlogger.py +338 -0
  43. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/librarylogger.py +12 -11
  44. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/listeners.py +49 -47
  45. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/logger.py +33 -20
  46. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/loggerapi.py +6 -0
  47. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/loggerhelper.py +29 -57
  48. robotframework-7.2b1/src/robot/output/loglevel.py +54 -0
  49. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/output.py +21 -17
  50. robotframework-7.2b1/src/robot/output/outputfile.py +174 -0
  51. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/pyloggingconf.py +2 -0
  52. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/xmllogger.py +40 -169
  53. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/blocklexers.py +25 -12
  54. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/statementlexers.py +16 -7
  55. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/tokens.py +2 -1
  56. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/__init__.py +1 -1
  57. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/blocks.py +34 -2
  58. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/statements.py +32 -2
  59. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/blockparsers.py +7 -2
  60. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/rebot.py +10 -2
  61. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsmodelbuilders.py +1 -1
  62. robotframework-7.2b1/src/robot/reporting/outputwriter.py +30 -0
  63. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/__init__.py +1 -1
  64. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/executionerrors.py +9 -9
  65. robotframework-7.2b1/src/robot/result/executionresult.py +331 -0
  66. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/messagefilter.py +14 -10
  67. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/model.py +90 -18
  68. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/resultbuilder.py +2 -5
  69. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/xmlelementhandlers.py +20 -9
  70. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/run.py +18 -6
  71. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/__init__.py +1 -1
  72. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/embedded.py +7 -6
  73. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeconverters.py +14 -2
  74. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeinfo.py +23 -4
  75. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/bodyrunner.py +41 -0
  76. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/settings.py +2 -1
  77. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/transformers.py +46 -20
  78. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/context.py +22 -11
  79. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/librarykeyword.py +1 -1
  80. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/librarykeywordrunner.py +29 -23
  81. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/model.py +31 -4
  82. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/outputcapture.py +2 -1
  83. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/signalhandler.py +7 -3
  84. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/status.py +49 -38
  85. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/statusreporter.py +1 -1
  86. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/suiterunner.py +22 -15
  87. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/userkeywordrunner.py +4 -0
  88. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/importer.py +39 -23
  89. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/unic.py +7 -8
  90. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/evaluation.py +21 -2
  91. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/replacer.py +20 -24
  92. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/scopes.py +19 -9
  93. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/variables.py +4 -1
  94. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/version.py +1 -1
  95. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/PKG-INFO +2 -2
  96. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/SOURCES.txt +3 -4
  97. robotframework-7.1rc2/src/robot/htmldata/libdoc/doc_formatting.css +0 -74
  98. robotframework-7.1rc2/src/robot/htmldata/libdoc/libdoc.css +0 -747
  99. robotframework-7.1rc2/src/robot/htmldata/libdoc/libdoc.html +0 -702
  100. robotframework-7.1rc2/src/robot/htmldata/libdoc/print.css +0 -11
  101. robotframework-7.1rc2/src/robot/htmldata/libdoc/pygments.css +0 -162
  102. robotframework-7.1rc2/src/robot/reporting/outputwriter.py +0 -48
  103. robotframework-7.1rc2/src/robot/result/executionresult.py +0 -201
  104. {robotframework-7.1rc2 → robotframework-7.2b1}/AUTHORS.rst +0 -0
  105. {robotframework-7.1rc2 → robotframework-7.2b1}/CONTRIBUTING.rst +0 -0
  106. {robotframework-7.1rc2 → robotframework-7.2b1}/COPYRIGHT.txt +0 -0
  107. {robotframework-7.1rc2 → robotframework-7.2b1}/INSTALL.rst +0 -0
  108. {robotframework-7.1rc2 → robotframework-7.2b1}/LICENSE.txt +0 -0
  109. {robotframework-7.1rc2 → robotframework-7.2b1}/MANIFEST.in +0 -0
  110. {robotframework-7.1rc2 → robotframework-7.2b1}/README.rst +0 -0
  111. {robotframework-7.1rc2 → robotframework-7.2b1}/setup.cfg +0 -0
  112. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/__init__.py +0 -0
  113. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/__main__.py +0 -0
  114. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/exceptions.py +0 -0
  115. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/logger.py +0 -0
  116. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/api/py.typed +0 -0
  117. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/__init__.py +0 -0
  118. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/conf/gatherfailed.py +0 -0
  119. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/__init__.py +0 -0
  120. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/__init__.py +0 -0
  121. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/js_disabled.css +0 -0
  122. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/common/storage.js +0 -0
  123. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/jsonwriter.py +0 -0
  124. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/__init__.py +0 -0
  125. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
  126. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.min.js +0 -0
  127. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
  128. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
  129. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
  130. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/libdoc/__init__.py +0 -0
  131. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/__init__.py +0 -0
  132. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/common.css +0 -0
  133. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
  134. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/fileloading.js +0 -0
  135. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.css +0 -0
  136. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/log.js +0 -0
  137. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/model.js +0 -0
  138. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/print.css +0 -0
  139. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/report.css +0 -0
  140. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/util.js +0 -0
  141. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/rebot/view.js +0 -0
  142. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/__init__.py +0 -0
  143. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
  144. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
  145. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/__init__.py +0 -0
  146. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/builder.py +0 -0
  147. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/consoleviewer.py +0 -0
  148. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/datatypes.py +0 -0
  149. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/htmlutils.py +0 -0
  150. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/jsonbuilder.py +0 -0
  151. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/jsonwriter.py +0 -0
  152. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/output.py +0 -0
  153. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/robotbuilder.py +0 -0
  154. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/standardtypes.py +0 -0
  155. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/xmlbuilder.py +0 -0
  156. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libdocpkg/xmlwriter.py +0 -0
  157. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/DateTime.py +0 -0
  158. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Dialogs.py +0 -0
  159. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Easter.py +0 -0
  160. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/OperatingSystem.py +0 -0
  161. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Process.py +0 -0
  162. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Remote.py +0 -0
  163. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Screenshot.py +0 -0
  164. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/String.py +0 -0
  165. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/Telnet.py +0 -0
  166. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/XML.py +0 -0
  167. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/__init__.py +0 -0
  168. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/libraries/dialogs_py.py +0 -0
  169. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/configurer.py +0 -0
  170. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/filter.py +0 -0
  171. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/fixture.py +0 -0
  172. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/itemlist.py +0 -0
  173. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/keyword.py +0 -0
  174. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/metadata.py +0 -0
  175. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/modifier.py +0 -0
  176. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/namepatterns.py +0 -0
  177. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/model/tagsetter.py +0 -0
  178. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/__init__.py +0 -0
  179. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/quiet.py +0 -0
  180. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/console/verbose.py +0 -0
  181. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/output/stdoutlogsplitter.py +0 -0
  182. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/__init__.py +0 -0
  183. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/__init__.py +0 -0
  184. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/context.py +0 -0
  185. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/lexer.py +0 -0
  186. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/settings.py +0 -0
  187. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/lexer/tokenizer.py +0 -0
  188. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/model/visitor.py +0 -0
  189. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/__init__.py +0 -0
  190. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/fileparser.py +0 -0
  191. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/parser/parser.py +0 -0
  192. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/parsing/suitestructure.py +0 -0
  193. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/pythonpathsetter.py +0 -0
  194. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/__init__.py +0 -0
  195. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/expandkeywordmatcher.py +0 -0
  196. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsbuildingcontext.py +0 -0
  197. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jsexecutionresult.py +0 -0
  198. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/jswriter.py +0 -0
  199. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/logreportwriters.py +0 -0
  200. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/resultwriter.py +0 -0
  201. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/stringcache.py +0 -0
  202. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/reporting/xunitwriter.py +0 -0
  203. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/configurer.py +0 -0
  204. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/flattenkeywordmatcher.py +0 -0
  205. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/keywordremover.py +0 -0
  206. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/merger.py +0 -0
  207. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/modeldeprecation.py +0 -0
  208. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/suiteteardownfailed.py +0 -0
  209. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/result/visitor.py +0 -0
  210. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/__init__.py +0 -0
  211. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentconverter.py +0 -0
  212. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentmapper.py +0 -0
  213. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentparser.py +0 -0
  214. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentresolver.py +0 -0
  215. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentspec.py +0 -0
  216. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/argumentvalidator.py +0 -0
  217. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/customconverters.py +0 -0
  218. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typeinfoparser.py +0 -0
  219. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/arguments/typevalidator.py +0 -0
  220. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/__init__.py +0 -0
  221. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/builders.py +0 -0
  222. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/builder/parsers.py +0 -0
  223. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/dynamicmethods.py +0 -0
  224. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/importer.py +0 -0
  225. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/invalidkeyword.py +0 -0
  226. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/keywordfinder.py +0 -0
  227. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/keywordimplementation.py +0 -0
  228. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/libraryscopes.py +0 -0
  229. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/namespace.py +0 -0
  230. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/randomizer.py +0 -0
  231. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/resourcemodel.py +0 -0
  232. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/runkwregister.py +0 -0
  233. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/testlibraries.py +0 -0
  234. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/__init__.py +0 -0
  235. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/nosupport.py +0 -0
  236. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/posix.py +0 -0
  237. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/running/timeouts/windows.py +0 -0
  238. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/testdoc.py +0 -0
  239. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/__init__.py +0 -0
  240. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/application.py +0 -0
  241. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/argumentparser.py +0 -0
  242. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/asserts.py +0 -0
  243. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/charwidth.py +0 -0
  244. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/compress.py +0 -0
  245. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/connectioncache.py +0 -0
  246. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/dotdict.py +0 -0
  247. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/encoding.py +0 -0
  248. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/encodingsniffer.py +0 -0
  249. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/error.py +0 -0
  250. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/escaping.py +0 -0
  251. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/etreewrapper.py +0 -0
  252. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/filereader.py +0 -0
  253. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/frange.py +0 -0
  254. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/htmlformatters.py +0 -0
  255. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/markuputils.py +0 -0
  256. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/markupwriters.py +0 -0
  257. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/match.py +0 -0
  258. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/misc.py +0 -0
  259. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/normalizing.py +0 -0
  260. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/notset.py +0 -0
  261. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/platform.py +0 -0
  262. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/recommendations.py +0 -0
  263. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/restreader.py +0 -0
  264. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotenv.py +0 -0
  265. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotinspect.py +0 -0
  266. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotio.py +0 -0
  267. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robotpath.py +0 -0
  268. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robottime.py +0 -0
  269. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/robottypes.py +0 -0
  270. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/setter.py +0 -0
  271. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/sortable.py +0 -0
  272. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/text.py +0 -0
  273. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/utils/typehints.py +0 -0
  274. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/__init__.py +0 -0
  275. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/assigner.py +0 -0
  276. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/filesetter.py +0 -0
  277. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/finders.py +0 -0
  278. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/notfound.py +0 -0
  279. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/resolvable.py +0 -0
  280. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/search.py +0 -0
  281. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/store.py +0 -0
  282. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robot/variables/tablesetter.py +0 -0
  283. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/dependency_links.txt +0 -0
  284. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/entry_points.txt +0 -0
  285. {robotframework-7.1rc2 → robotframework-7.2b1}/src/robotframework.egg-info/top_level.txt +0 -0
  286. {robotframework-7.1rc2 → robotframework-7.2b1}/tasks.py +0 -0
@@ -76,7 +76,7 @@ __ https://github.com/robotframework/robotframework/tree/master/atest#schema-val
76
76
  Preparation
77
77
  -----------
78
78
 
79
- 1. Check that you are on the master branch and have nothing left to commit,
79
+ 1. Check that you are on the right branch and have nothing left to commit,
80
80
  pull, or push::
81
81
 
82
82
  git branch
@@ -93,13 +93,13 @@ Preparation
93
93
 
94
94
  VERSION=<version>
95
95
 
96
- For example, ``VERSION=3.0.1`` or ``VERSION=3.1a2``.
96
+ For example, ``VERSION=7.1.1`` or ``VERSION=7.2a2``. No ``v`` prefix!
97
97
 
98
98
  Release notes
99
99
  -------------
100
100
 
101
- 1. Create personal `GitHub access token`__ to be able to access issue tracker
102
- programmatically. The token needs only the `repo/public_repo` scope.
101
+ 1. Create a personal `GitHub access token`__ to be able to access issue tracker
102
+ programmatically. The token needs only the ``repo/public_repo`` scope.
103
103
 
104
104
  2. Set GitHub user information into shell variables to ease running the
105
105
  ``invoke release-notes`` command in the next step::
@@ -119,7 +119,7 @@ Release notes
119
119
  <Set version_>`__. Omit the ``-w`` option if you just want to get release
120
120
  notes printed to the console, not written to a file.
121
121
 
122
- When generating release notes for a preview release like ``3.0.2rc1``,
122
+ When generating release notes for a preview release like ``7.2rc1``,
123
123
  the list of issues is only going to contain issues with that label
124
124
  (e.g. ``rc1``) or with a label of an earlier preview release (e.g.
125
125
  ``alpha1``, ``beta2``).
@@ -229,14 +229,14 @@ Creating distributions
229
229
 
230
230
  git checkout gh-pages
231
231
  invoke add-docs $VERSION --push
232
- git checkout master
232
+ git checkout master # replace master with v*-maintenance if needed!
233
233
 
234
234
  Post actions
235
235
  ------------
236
236
 
237
237
  1. Back to master if needed::
238
238
 
239
- git checkout master
239
+ git checkout master # replace master with v*-maintenance if needed!
240
240
 
241
241
  2. Set dev version based on the previous version::
242
242
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: robotframework
3
- Version: 7.1rc2
3
+ Version: 7.2b1
4
4
  Summary: Generic automation framework for acceptance testing and robotic process automation (RPA)
5
5
  Home-page: https://robotframework.org
6
6
  Author: Pekka Klärck
@@ -10,7 +10,7 @@ Download-URL: https://pypi.org/project/robotframework
10
10
  Project-URL: Source, https://github.com/robotframework/robotframework
11
11
  Project-URL: Issue Tracker, https://github.com/robotframework/robotframework/issues
12
12
  Project-URL: Documentation, https://robotframework.org/robotframework
13
- Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.1rc2.rst
13
+ Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.2b1.rst
14
14
  Project-URL: Slack, http://slack.robotframework.org
15
15
  Description: Robot Framework
16
16
  ===============
@@ -6,7 +6,7 @@ from setuptools import find_packages, setup
6
6
 
7
7
  # Version number typically updated by running `invoke set-version <version>`.
8
8
  # Run `invoke --help set-version` or see tasks.py for details.
9
- VERSION = '7.1rc2'
9
+ VERSION = '7.2b1'
10
10
  with open(join(dirname(abspath(__file__)), 'README.rst')) as f:
11
11
  LONG_DESCRIPTION = f.read()
12
12
  base_url = 'https://github.com/robotframework/robotframework/blob/master'
@@ -72,18 +72,42 @@ All of the above classes can be imported like::
72
72
 
73
73
  from robot.api import ClassName
74
74
 
75
+ The public API intends to follow the `distributing type information specification
76
+ <https://typing.readthedocs.io/en/latest/spec/distributing.html#distributing-type-information>`_
77
+ originally specified in `PEP 484 <https://peps.python.org/pep-0484/>`_.
78
+
75
79
  See documentations of the individual APIs for more details.
76
80
 
77
81
  .. tip:: APIs related to the command line entry points are exposed directly
78
82
  via the :mod:`robot` root package.
79
83
  """
80
84
 
81
- from robot.conf.languages import Language, Languages
82
- from robot.model import SuiteVisitor
83
- from robot.parsing import (get_tokens, get_resource_tokens, get_init_tokens,
84
- get_model, get_resource_model, get_init_model, Token)
85
- from robot.reporting import ResultWriter
86
- from robot.result import ExecutionResult, ResultVisitor
87
- from robot.running import TestSuite, TestSuiteBuilder, TypeInfo
88
-
89
- from .exceptions import ContinuableFailure, Failure, FatalError, Error, SkipExecution
85
+ from robot.conf.languages import Language as Language, Languages as Languages
86
+ from robot.model import SuiteVisitor as SuiteVisitor
87
+ from robot.parsing import (
88
+ get_tokens as get_tokens,
89
+ get_resource_tokens as get_resource_tokens,
90
+ get_init_tokens as get_init_tokens,
91
+ get_model as get_model,
92
+ get_resource_model as get_resource_model,
93
+ get_init_model as get_init_model,
94
+ Token as Token
95
+ )
96
+ from robot.reporting import ResultWriter as ResultWriter
97
+ from robot.result import (
98
+ ExecutionResult as ExecutionResult,
99
+ ResultVisitor as ResultVisitor
100
+ )
101
+ from robot.running import (
102
+ TestSuite as TestSuite,
103
+ TestSuiteBuilder as TestSuiteBuilder,
104
+ TypeInfo as TypeInfo
105
+ )
106
+
107
+ from .exceptions import (
108
+ ContinuableFailure as ContinuableFailure,
109
+ Failure as Failure,
110
+ FatalError as FatalError,
111
+ Error as Error,
112
+ SkipExecution as SkipExecution
113
+ )
@@ -13,7 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- from typing import Any, Callable, Sequence, TypeVar, Union, overload
16
+ from typing import Any, Callable, Literal, Sequence, TypeVar, Union, overload
17
17
 
18
18
  from .interfaces import TypeHints
19
19
 
@@ -26,7 +26,9 @@ K = TypeVar('K', bound=Callable[..., Any]) # Keyword function.
26
26
  L = TypeVar('L', bound=type) # Library class.
27
27
  KeywordDecorator = Callable[[K], K]
28
28
  LibraryDecorator = Callable[[L], L]
29
+ Scope = Literal['GLOBAL', 'SUITE', 'TEST', 'TASK']
29
30
  Converter = Union[Callable[[Any], Any], Callable[[Any, Any], Any]]
31
+ DocFormat = Literal['ROBOT', 'HTML', 'TEXT', 'REST']
30
32
 
31
33
 
32
34
  def not_keyword(func: F) -> F:
@@ -107,7 +109,7 @@ def keyword(name: 'K | str | None' = None,
107
109
  def types_as_list(length, case_insensitive):
108
110
  # ...
109
111
 
110
- @keyword(types=None])
112
+ @keyword(types=None)
111
113
  def no_conversion(length, case_insensitive=False):
112
114
  # ...
113
115
  """
@@ -129,20 +131,20 @@ def library(cls: L, /) -> L:
129
131
 
130
132
 
131
133
  @overload
132
- def library(scope: 'str | None' = None,
134
+ def library(scope: 'Scope | None' = None,
133
135
  version: 'str | None' = None,
134
136
  converters: 'dict[type, Converter] | None' = None,
135
- doc_format: 'str | None' = None,
137
+ doc_format: 'DocFormat | None' = None,
136
138
  listener: 'Any | None' = None,
137
139
  auto_keywords: bool = False) -> LibraryDecorator:
138
140
  ...
139
141
 
140
142
 
141
143
  @not_keyword
142
- def library(scope: 'L | str | None' = None,
144
+ def library(scope: 'L | Scope | None' = None,
143
145
  version: 'str | None' = None,
144
146
  converters: 'dict[type, Converter] | None' = None,
145
- doc_format: 'str | None' = None,
147
+ doc_format: 'DocFormat | None' = None,
146
148
  listener: 'Any | None' = None,
147
149
  auto_keywords: bool = False) -> 'L | LibraryDecorator':
148
150
  """Class decorator to control keyword discovery and other library settings.
@@ -53,7 +53,6 @@ else:
53
53
  UnionType = type
54
54
 
55
55
  from robot import result, running
56
- from robot.model import Message
57
56
  from robot.running import TestDefaults, TestSuite
58
57
 
59
58
 
@@ -366,7 +365,7 @@ class StartKeywordAttributes(OptionalKeywordAttributes):
366
365
  assign: 'list[str]'
367
366
  tags: 'list[str]'
368
367
  source: str
369
- lineno: int
368
+ lineno: 'int|None'
370
369
  status: str
371
370
  starttime: str
372
371
 
@@ -478,20 +477,37 @@ class ListenerV2:
478
477
  def output_file(self, path: str):
479
478
  """Called after the output file has been created.
480
479
 
481
- At this point the file is guaranteed to be closed.
480
+ ``path`` is an absolute path to the output file or
481
+ a string ``None`` if creating the output file is disabled.
482
482
  """
483
483
 
484
484
  def log_file(self, path: str):
485
- """Called after the log file has been created."""
485
+ """Called after the log file has been created.
486
+
487
+ ``path`` is an absolute path to the log file.
488
+ Not called if creating the log file is disabled.
489
+ """
486
490
 
487
491
  def report_file(self, path: str):
488
- """Called after the report file has been created."""
492
+ """Called after the report file has been created.
493
+
494
+ ``path`` is an absolute path to the report file.
495
+ Not called if creating the report file is disabled.
496
+ """
489
497
 
490
498
  def xunit_file(self, path: str):
491
- """Called after the xunit compatible output file has been created."""
499
+ """Called after the xunit compatible output file has been created.
500
+
501
+ ``path`` is an absolute path to the xunit file.
502
+ Only called if creating the xunit file is enabled.
503
+ """
492
504
 
493
505
  def debug_file(self, path: str):
494
- """Called after the debug file has been created."""
506
+ """Called after the debug file has been created.
507
+
508
+ ``path`` is an absolute path to the debug file.
509
+ Only called if creating the debug file is enabled.
510
+ """
495
511
 
496
512
  def close(self):
497
513
  """Called when the whole execution ends.
@@ -692,6 +708,24 @@ class ListenerV3:
692
708
  """
693
709
  self.end_body_item(data, result)
694
710
 
711
+ def start_group(self, data: running.Group, result: result.Group):
712
+ """Called when a GROUP starts.
713
+
714
+ The default implementation calls :meth:`start_body_item`.
715
+
716
+ New in Robot Framework 7.2.
717
+ """
718
+ self.start_body_item(data, result)
719
+
720
+ def end_group(self, data: running.Group, result: result.Group):
721
+ """Called when a GROUP ends.
722
+
723
+ The default implementation calls :meth:`end_body_item`.
724
+
725
+ New in Robot Framework 7.2.
726
+ """
727
+ self.end_body_item(data, result)
728
+
695
729
  def start_if(self, data: running.If, result: result.If):
696
730
  """Called when an IF/ELSE structure starts.
697
731
 
@@ -868,7 +902,7 @@ class ListenerV3:
868
902
  """
869
903
  pass
870
904
 
871
- def log_message(self, message: Message):
905
+ def log_message(self, message: result.Message):
872
906
  """Called when a normal log message are emitted.
873
907
 
874
908
  The messages are typically logged by keywords, but also the framework
@@ -876,7 +910,7 @@ class ListenerV3:
876
910
  log.html.
877
911
  """
878
912
 
879
- def message(self, message: Message):
913
+ def message(self, message: result.Message):
880
914
  """Called when framework's internal messages are emitted.
881
915
 
882
916
  Only logged by the framework itself. These messages end up to the syslog
@@ -915,23 +949,40 @@ class ListenerV3:
915
949
  the imported variable file.
916
950
  """
917
951
 
918
- def output_file(self, path: Path):
952
+ def output_file(self, path: 'Path | None'):
919
953
  """Called after the output file has been created.
920
954
 
921
- At this point the file is guaranteed to be closed.
955
+ ``path`` is an absolute path to the output file or
956
+ ``None`` if creating the output file is disabled.
922
957
  """
923
958
 
924
959
  def log_file(self, path: Path):
925
- """Called after the log file has been created."""
960
+ """Called after the log file has been created.
961
+
962
+ ``path`` is an absolute path to the log file.
963
+ Not called if creating the log file is disabled.
964
+ """
926
965
 
927
966
  def report_file(self, path: Path):
928
- """Called after the report file has been created."""
967
+ """Called after the report file has been created.
968
+
969
+ ``path`` is an absolute path to the report file.
970
+ Not called if creating the report file is disabled.
971
+ """
929
972
 
930
973
  def xunit_file(self, path: Path):
931
- """Called after the xunit compatible output file has been created."""
974
+ """Called after the xunit compatible output file has been created.
975
+
976
+ ``path`` is an absolute path to the xunit file.
977
+ Only called if creating the xunit file is enabled.
978
+ """
932
979
 
933
980
  def debug_file(self, path: Path):
934
- """Called after the debug file has been created."""
981
+ """Called after the debug file has been created.
982
+
983
+ ``path`` is an absolute path to the debug file.
984
+ Only called if creating the debug file is enabled.
985
+ """
935
986
 
936
987
  def close(self):
937
988
  """Called when the whole execution ends.
@@ -196,6 +196,7 @@ Blocks:
196
196
  - :class:`~robot.parsing.model.blocks.Try`
197
197
  - :class:`~robot.parsing.model.blocks.For`
198
198
  - :class:`~robot.parsing.model.blocks.While`
199
+ - :class:`~robot.parsing.model.blocks.Group` (new in RF 7.2)
199
200
 
200
201
  Statements:
201
202
 
@@ -236,6 +237,7 @@ Statements:
236
237
  - :class:`~robot.parsing.model.statements.FinallyHeader`
237
238
  - :class:`~robot.parsing.model.statements.ForHeader`
238
239
  - :class:`~robot.parsing.model.statements.WhileHeader`
240
+ - :class:`~robot.parsing.model.statements.GroupHeader` (new in RF 7.2)
239
241
  - :class:`~robot.parsing.model.statements.Var` (new in RF 7.0)
240
242
  - :class:`~robot.parsing.model.statements.End`
241
243
  - :class:`~robot.parsing.model.statements.ReturnStatement`
@@ -484,78 +486,80 @@ get the executable suite by using the
484
486
  """
485
487
 
486
488
  from robot.parsing import (
487
- get_tokens,
488
- get_resource_tokens,
489
- get_init_tokens,
490
- get_model,
491
- get_resource_model,
492
- get_init_model,
493
- Token
489
+ get_tokens as get_tokens,
490
+ get_resource_tokens as get_resource_tokens,
491
+ get_init_tokens as get_init_tokens,
492
+ get_model as get_model,
493
+ get_resource_model as get_resource_model,
494
+ get_init_model as get_init_model,
495
+ Token as Token
494
496
  )
495
497
  from robot.parsing.model.blocks import (
496
- File,
497
- SettingSection,
498
- VariableSection,
499
- TestCaseSection,
500
- KeywordSection,
501
- CommentSection,
502
- TestCase,
503
- Keyword,
504
- If,
505
- Try,
506
- For,
507
- While
498
+ File as File,
499
+ SettingSection as SettingSection,
500
+ VariableSection as VariableSection,
501
+ TestCaseSection as TestCaseSection,
502
+ KeywordSection as KeywordSection,
503
+ CommentSection as CommentSection,
504
+ TestCase as TestCase,
505
+ Keyword as Keyword,
506
+ If as If,
507
+ Try as Try,
508
+ For as For,
509
+ While as While,
510
+ Group as Group
508
511
  )
509
512
  from robot.parsing.model.statements import (
510
- SectionHeader,
511
- LibraryImport,
512
- ResourceImport,
513
- VariablesImport,
514
- Documentation,
515
- Metadata,
516
- SuiteName,
517
- SuiteSetup,
518
- SuiteTeardown,
519
- TestSetup,
520
- TestTeardown,
521
- TestTemplate,
522
- TestTimeout,
523
- TestTags,
524
- DefaultTags,
525
- KeywordTags,
526
- Variable,
527
- TestCaseName,
528
- KeywordName,
529
- Setup,
530
- Teardown,
531
- Tags,
532
- Template,
533
- Timeout,
534
- Arguments,
535
- Return,
536
- ReturnSetting,
537
- KeywordCall,
538
- TemplateArguments,
539
- IfHeader,
540
- InlineIfHeader,
541
- ElseIfHeader,
542
- ElseHeader,
543
- TryHeader,
544
- ExceptHeader,
545
- FinallyHeader,
546
- ForHeader,
547
- WhileHeader,
548
- End,
549
- Var,
550
- ReturnStatement,
551
- Continue,
552
- Break,
553
- Comment,
554
- Config,
555
- Error,
556
- EmptyLine
513
+ SectionHeader as SectionHeader,
514
+ LibraryImport as LibraryImport,
515
+ ResourceImport as ResourceImport,
516
+ VariablesImport as VariablesImport,
517
+ Documentation as Documentation,
518
+ Metadata as Metadata,
519
+ SuiteName as SuiteName,
520
+ SuiteSetup as SuiteSetup,
521
+ SuiteTeardown as SuiteTeardown,
522
+ TestSetup as TestSetup,
523
+ TestTeardown as TestTeardown,
524
+ TestTemplate as TestTemplate,
525
+ TestTimeout as TestTimeout,
526
+ TestTags as TestTags,
527
+ DefaultTags as DefaultTags,
528
+ KeywordTags as KeywordTags,
529
+ Variable as Variable,
530
+ TestCaseName as TestCaseName,
531
+ KeywordName as KeywordName,
532
+ Setup as Setup,
533
+ Teardown as Teardown,
534
+ Tags as Tags,
535
+ Template as Template,
536
+ Timeout as Timeout,
537
+ Arguments as Arguments,
538
+ Return as Return,
539
+ ReturnSetting as ReturnSetting,
540
+ KeywordCall as KeywordCall,
541
+ TemplateArguments as TemplateArguments,
542
+ IfHeader as IfHeader,
543
+ InlineIfHeader as InlineIfHeader,
544
+ ElseIfHeader as ElseIfHeader,
545
+ ElseHeader as ElseHeader,
546
+ TryHeader as TryHeader,
547
+ ExceptHeader as ExceptHeader,
548
+ FinallyHeader as FinallyHeader,
549
+ ForHeader as ForHeader,
550
+ WhileHeader as WhileHeader,
551
+ GroupHeader as GroupHeader,
552
+ End as End,
553
+ Var as Var,
554
+ ReturnStatement as ReturnStatement,
555
+ Continue as Continue,
556
+ Break as Break,
557
+ Comment as Comment,
558
+ Config as Config,
559
+ Error as Error,
560
+ EmptyLine as EmptyLine
557
561
  )
558
562
  from robot.parsing.model.visitor import (
559
- ModelTransformer,
560
- ModelVisitor
563
+ ModelTransformer as ModelTransformer,
564
+ ModelVisitor as ModelVisitor
561
565
  )
@@ -115,8 +115,7 @@ class Languages:
115
115
  self.false_strings |= {s.title() for s in lang.false_strings}
116
116
 
117
117
  def _get_languages(self, languages, add_english=True) -> 'list[Language]':
118
- languages = self._resolve_languages(languages, add_english)
119
- available = self._get_available_languages()
118
+ languages, available = self._resolve_languages(languages, add_english)
120
119
  returned: 'list[Language]' = []
121
120
  for lang in languages:
122
121
  if isinstance(lang, Language):
@@ -138,9 +137,11 @@ class Languages:
138
137
  languages = list(languages)
139
138
  else:
140
139
  languages = [languages]
140
+ # Get available languages only if custom languages are used to save time.
141
+ available = self._get_available_languages() if languages else {}
141
142
  if add_english:
142
143
  languages.append(En())
143
- return languages
144
+ return languages, available
144
145
 
145
146
  def _get_available_languages(self) -> 'dict[str, type[Language]]':
146
147
  available = {}
@@ -23,7 +23,7 @@ from datetime import datetime
23
23
  from pathlib import Path
24
24
 
25
25
  from robot.errors import DataError, FrameworkError
26
- from robot.output import LOGGER, loggerhelper
26
+ from robot.output import LOGGER, LogLevel
27
27
  from robot.result.keywordremover import KeywordRemover
28
28
  from robot.result.flattenkeywordmatcher import validate_flatten_keyword
29
29
  from robot.utils import (abspath, create_destination_directory, escape,
@@ -163,16 +163,17 @@ class _BaseSettings:
163
163
 
164
164
  def _split_log_level(self, level):
165
165
  if ':' in level:
166
- log_level, visible_level = level.split(':', 1)
166
+ collect, show = level.split(':', 1)
167
167
  else:
168
- log_level = visible_level = level
169
- for level in log_level, visible_level:
170
- if level not in loggerhelper.LEVELS:
171
- self._raise_invalid('LogLevel', f"Invalid level '{level}'.")
172
- if not loggerhelper.IsLogged(log_level)(visible_level):
173
- self._raise_invalid('LogLevel', f"Level in log '{visible_level}' is lower "
174
- f"than execution level '{log_level}'.")
175
- return log_level, visible_level
168
+ collect = show = level
169
+ try:
170
+ collect, show = LogLevel(collect), LogLevel(show)
171
+ except DataError as err:
172
+ self._raise_invalid('LogLevel', str(err))
173
+ if collect.priority > show.priority:
174
+ self._raise_invalid('LogLevel', f"Level in log '{show.level}' is lower "
175
+ f"than execution level '{collect.level}'.")
176
+ return collect.level, show.level
176
177
 
177
178
  def _process_max_error_lines(self, value):
178
179
  if not value or value.upper() == 'NONE':
@@ -143,13 +143,13 @@ class ExecutionStatus(RobotError):
143
143
  def can_continue(self, context, templated=False):
144
144
  if context.dry_run:
145
145
  return True
146
- if self.syntax or self.exit or self.skip or self.test_timeout:
146
+ if self.syntax or self.exit or self.test_timeout:
147
147
  return False
148
148
  if templated:
149
149
  return context.continue_on_failure(default=True)
150
+ if self.skip:
151
+ return False
150
152
  if self.keyword_timeout:
151
- if context.in_teardown:
152
- self.keyword_timeout = False
153
153
  return False
154
154
  return self.continue_on_failure or context.continue_on_failure()
155
155
 
@@ -63,6 +63,9 @@ class Writer(ABC):
63
63
  class ModelWriter(Writer, ABC):
64
64
  handles_line = '<!-- JS MODEL -->'
65
65
 
66
+ def handles(self, line: str):
67
+ return line.strip().startswith(self.handles_line)
68
+
66
69
 
67
70
  class LineWriter(Writer):
68
71