robotframework 6.1.1__zip → 7.0a1__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 (288) hide show
  1. {robotframework-6.1.1/src/robotframework.egg-info → robotframework-7.0a1}/PKG-INFO +3 -6
  2. {robotframework-6.1.1 → robotframework-7.0a1}/setup.py +2 -5
  3. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/interfaces.py +35 -48
  4. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/parsing.py +4 -2
  5. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/gatherfailed.py +2 -2
  6. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/languages.py +0 -9
  7. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/settings.py +8 -5
  8. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.css +4 -0
  9. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.html +9 -1
  10. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/model.js +2 -4
  11. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/testdata.js +10 -3
  12. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/template.py +3 -3
  13. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/builder.py +0 -8
  14. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/datatypes.py +9 -10
  15. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlutils.py +4 -7
  16. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonbuilder.py +14 -10
  17. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/model.py +13 -25
  18. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/robotbuilder.py +13 -3
  19. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlbuilder.py +8 -8
  20. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlwriter.py +12 -38
  21. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/BuiltIn.py +215 -189
  22. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Collections.py +2 -9
  23. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/DateTime.py +1 -1
  24. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/OperatingSystem.py +4 -3
  25. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Process.py +26 -27
  26. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Remote.py +40 -36
  27. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/String.py +4 -4
  28. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/XML.py +7 -8
  29. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/__init__.py +2 -2
  30. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/__init__.py +4 -4
  31. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/body.py +14 -6
  32. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/configurer.py +15 -11
  33. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/control.py +151 -81
  34. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/filter.py +31 -25
  35. robotframework-7.0a1/src/robot/model/keyword.py +70 -0
  36. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/message.py +19 -10
  37. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/namepatterns.py +3 -25
  38. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/stats.py +9 -15
  39. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tags.py +1 -1
  40. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/testcase.py +12 -21
  41. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/testsuite.py +16 -22
  42. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/visitor.py +35 -8
  43. robotframework-7.0a1/src/robot/output/console/dotted.py +90 -0
  44. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/quiet.py +3 -2
  45. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/verbose.py +60 -60
  46. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/debugfile.py +36 -23
  47. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/filelogger.py +16 -13
  48. robotframework-7.0a1/src/robot/output/listeners.py +586 -0
  49. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/logger.py +164 -77
  50. robotframework-7.0a1/src/robot/output/loggerapi.py +152 -0
  51. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/loggerhelper.py +23 -56
  52. robotframework-7.0a1/src/robot/output/output.py +158 -0
  53. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/stdoutlogsplitter.py +8 -5
  54. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/xmllogger.py +163 -109
  55. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/blocklexers.py +17 -13
  56. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/context.py +12 -2
  57. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/lexer.py +1 -1
  58. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/settings.py +6 -3
  59. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/statementlexers.py +39 -10
  60. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokens.py +27 -29
  61. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/blocks.py +19 -6
  62. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/statements.py +184 -84
  63. robotframework-7.0a1/src/robot/parsing/model/visitor.py +102 -0
  64. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/expandkeywordmatcher.py +1 -1
  65. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsbuildingcontext.py +8 -6
  66. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsmodelbuilders.py +88 -61
  67. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/stringcache.py +4 -3
  68. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/xunitwriter.py +15 -21
  69. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/__init__.py +3 -2
  70. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/configurer.py +12 -9
  71. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/flattenkeywordmatcher.py +8 -8
  72. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/keywordremover.py +71 -54
  73. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/merger.py +1 -1
  74. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/model.py +400 -316
  75. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/modeldeprecation.py +9 -3
  76. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/resultbuilder.py +21 -23
  77. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/xmlelementhandlers.py +76 -40
  78. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/__init__.py +1 -1
  79. robotframework-7.0a1/src/robot/running/arguments/argumentconverter.py +101 -0
  80. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentmapper.py +16 -14
  81. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentresolver.py +41 -33
  82. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentspec.py +24 -90
  83. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentvalidator.py +34 -27
  84. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/customconverters.py +14 -11
  85. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/embedded.py +23 -26
  86. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/typeconverters.py +175 -213
  87. robotframework-7.0a1/src/robot/running/arguments/typeinfo.py +367 -0
  88. robotframework-7.0a1/src/robot/running/arguments/typevalidator.py +62 -0
  89. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/bodyrunner.py +83 -68
  90. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/parsers.py +8 -10
  91. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/settings.py +9 -17
  92. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/transformers.py +166 -308
  93. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/context.py +80 -25
  94. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/handlers.py +11 -16
  95. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/handlerstore.py +1 -1
  96. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/librarykeywordrunner.py +9 -17
  97. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/model.py +109 -32
  98. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/namespace.py +18 -19
  99. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/statusreporter.py +13 -12
  100. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/suiterunner.py +15 -17
  101. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/testlibraries.py +33 -40
  102. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/usererrorhandler.py +8 -8
  103. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/userkeyword.py +13 -8
  104. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/userkeywordrunner.py +18 -21
  105. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/testdoc.py +18 -13
  106. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/__init__.py +50 -35
  107. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/connectioncache.py +64 -59
  108. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/encodingsniffer.py +1 -1
  109. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/escaping.py +11 -9
  110. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/markupwriters.py +20 -13
  111. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/normalizing.py +9 -24
  112. robotframework-7.0a1/src/robot/utils/notset.py +33 -0
  113. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/platform.py +15 -5
  114. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotpath.py +1 -0
  115. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robottime.py +120 -88
  116. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robottypes.py +16 -31
  117. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/setter.py +0 -5
  118. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/text.py +7 -4
  119. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/unic.py +2 -2
  120. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/__init__.py +2 -2
  121. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/assigner.py +17 -19
  122. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/evaluation.py +20 -17
  123. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/filesetter.py +80 -80
  124. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/replacer.py +33 -36
  125. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/scopes.py +3 -3
  126. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/search.py +66 -41
  127. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/store.py +14 -16
  128. robotframework-7.0a1/src/robot/variables/tablesetter.py +164 -0
  129. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/variables.py +1 -1
  130. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/version.py +1 -1
  131. {robotframework-6.1.1 → robotframework-7.0a1/src/robotframework.egg-info}/PKG-INFO +3 -6
  132. {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/SOURCES.txt +3 -4
  133. {robotframework-6.1.1 → robotframework-7.0a1}/tasks.py +6 -6
  134. robotframework-6.1.1/src/robot/libraries/Reserved.py +0 -48
  135. robotframework-6.1.1/src/robot/model/keyword.py +0 -173
  136. robotframework-6.1.1/src/robot/output/console/dotted.py +0 -90
  137. robotframework-6.1.1/src/robot/output/listenerarguments.py +0 -165
  138. robotframework-6.1.1/src/robot/output/listenermethods.py +0 -113
  139. robotframework-6.1.1/src/robot/output/listeners.py +0 -174
  140. robotframework-6.1.1/src/robot/output/output.py +0 -95
  141. robotframework-6.1.1/src/robot/parsing/model/visitor.py +0 -67
  142. robotframework-6.1.1/src/robot/running/arguments/argumentconverter.py +0 -79
  143. robotframework-6.1.1/src/robot/running/arguments/typevalidator.py +0 -56
  144. robotframework-6.1.1/src/robot/running/modelcombiner.py +0 -32
  145. robotframework-6.1.1/src/robot/variables/tablesetter.py +0 -156
  146. {robotframework-6.1.1 → robotframework-7.0a1}/AUTHORS.rst +0 -0
  147. {robotframework-6.1.1 → robotframework-7.0a1}/BUILD.rst +0 -0
  148. {robotframework-6.1.1 → robotframework-7.0a1}/CONTRIBUTING.rst +0 -0
  149. {robotframework-6.1.1 → robotframework-7.0a1}/COPYRIGHT.txt +0 -0
  150. {robotframework-6.1.1 → robotframework-7.0a1}/INSTALL.rst +0 -0
  151. {robotframework-6.1.1 → robotframework-7.0a1}/LICENSE.txt +0 -0
  152. {robotframework-6.1.1 → robotframework-7.0a1}/MANIFEST.in +0 -0
  153. {robotframework-6.1.1 → robotframework-7.0a1}/README.rst +0 -0
  154. {robotframework-6.1.1 → robotframework-7.0a1}/setup.cfg +0 -0
  155. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/__init__.py +0 -0
  156. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/__main__.py +0 -0
  157. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/__init__.py +0 -0
  158. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/deco.py +0 -0
  159. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/exceptions.py +0 -0
  160. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/logger.py +0 -0
  161. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/__init__.py +0 -0
  162. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/errors.py +0 -0
  163. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/__init__.py +0 -0
  164. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/__init__.py +0 -0
  165. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/js_disabled.css +0 -0
  166. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/storage.js +0 -0
  167. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/htmlfilewriter.py +0 -0
  168. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/jsonwriter.py +0 -0
  169. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/__init__.py +0 -0
  170. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
  171. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.min.js +0 -0
  172. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
  173. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
  174. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
  175. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/__init__.py +0 -0
  176. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
  177. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.css +0 -0
  178. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.html +0 -0
  179. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/print.css +0 -0
  180. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/pygments.css +0 -0
  181. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/__init__.py +0 -0
  182. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/common.css +0 -0
  183. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
  184. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/fileloading.js +0 -0
  185. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.js +0 -0
  186. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/print.css +0 -0
  187. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.css +0 -0
  188. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.html +0 -0
  189. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/util.js +0 -0
  190. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/view.js +0 -0
  191. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/__init__.py +0 -0
  192. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
  193. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
  194. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdoc.py +0 -0
  195. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/__init__.py +0 -0
  196. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/consoleviewer.py +0 -0
  197. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlwriter.py +0 -0
  198. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonwriter.py +0 -0
  199. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/output.py +0 -0
  200. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/standardtypes.py +0 -0
  201. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/writer.py +0 -0
  202. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Dialogs.py +0 -0
  203. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Easter.py +0 -0
  204. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Screenshot.py +0 -0
  205. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Telnet.py +0 -0
  206. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/dialogs_py.py +0 -0
  207. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/fixture.py +0 -0
  208. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/itemlist.py +0 -0
  209. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/metadata.py +0 -0
  210. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/modelobject.py +0 -0
  211. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/modifier.py +0 -0
  212. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/statistics.py +0 -0
  213. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/suitestatistics.py +0 -0
  214. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tagsetter.py +0 -0
  215. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tagstatistics.py +0 -0
  216. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/totalstatistics.py +0 -0
  217. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/__init__.py +0 -0
  218. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/__init__.py +0 -0
  219. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/highlighting.py +0 -0
  220. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/librarylogger.py +0 -0
  221. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/pyloggingconf.py +0 -0
  222. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/__init__.py +0 -0
  223. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/__init__.py +0 -0
  224. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokenizer.py +0 -0
  225. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/__init__.py +0 -0
  226. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/__init__.py +0 -0
  227. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/blockparsers.py +0 -0
  228. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/fileparser.py +0 -0
  229. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/parser.py +0 -0
  230. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/suitestructure.py +0 -0
  231. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/pythonpathsetter.py +0 -0
  232. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/rebot.py +0 -0
  233. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/__init__.py +0 -0
  234. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsexecutionresult.py +0 -0
  235. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jswriter.py +0 -0
  236. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/logreportwriters.py +0 -0
  237. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/outputwriter.py +0 -0
  238. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/resultwriter.py +0 -0
  239. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/executionerrors.py +0 -0
  240. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/executionresult.py +0 -0
  241. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/messagefilter.py +0 -0
  242. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/suiteteardownfailed.py +0 -0
  243. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/visitor.py +0 -0
  244. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/run.py +0 -0
  245. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/__init__.py +0 -0
  246. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentparser.py +0 -0
  247. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/__init__.py +0 -0
  248. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/builders.py +0 -0
  249. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/dynamicmethods.py +0 -0
  250. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/importer.py +0 -0
  251. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/libraryscopes.py +0 -0
  252. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/outputcapture.py +0 -0
  253. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/randomizer.py +0 -0
  254. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/runkwregister.py +0 -0
  255. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/signalhandler.py +0 -0
  256. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/status.py +0 -0
  257. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/__init__.py +0 -0
  258. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/posix.py +0 -0
  259. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/windows.py +0 -0
  260. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/application.py +0 -0
  261. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/argumentparser.py +0 -0
  262. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/asserts.py +0 -0
  263. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/charwidth.py +0 -0
  264. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/compress.py +0 -0
  265. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/dotdict.py +0 -0
  266. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/encoding.py +0 -0
  267. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/error.py +0 -0
  268. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/etreewrapper.py +0 -0
  269. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/filereader.py +0 -0
  270. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/frange.py +0 -0
  271. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/htmlformatters.py +0 -0
  272. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/importer.py +0 -0
  273. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/markuputils.py +0 -0
  274. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/match.py +0 -0
  275. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/misc.py +0 -0
  276. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/recommendations.py +0 -0
  277. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/restreader.py +0 -0
  278. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotenv.py +0 -0
  279. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotinspect.py +0 -0
  280. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotio.py +0 -0
  281. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/sortable.py +0 -0
  282. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/typehints.py +0 -0
  283. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/finders.py +0 -0
  284. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/notfound.py +0 -0
  285. {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/resolvable.py +0 -0
  286. {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/dependency_links.txt +0 -0
  287. {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/entry_points.txt +0 -0
  288. {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/top_level.txt +0 -0
@@ -13,21 +13,21 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
+ import re
17
+ import time
16
18
  from collections import OrderedDict
17
19
  from contextlib import contextmanager
20
+ from datetime import datetime
18
21
  from itertools import zip_longest
19
- import re
20
- import time
21
22
 
22
23
  from robot.errors import (BreakLoop, ContinueLoop, DataError, ExecutionFailed,
23
24
  ExecutionFailures, ExecutionPassed, ExecutionStatus)
24
25
  from robot.result import (For as ForResult, While as WhileResult, If as IfResult,
25
- IfBranch as IfBranchResult, Try as TryResult,
26
- TryBranch as TryBranchResult)
26
+ Try as TryResult)
27
27
  from robot.output import librarylogger as logger
28
- from robot.utils import (cut_assign_value, frange, get_error_message, get_timestamp,
29
- is_list_like, is_number, plural_or_not as s, secs_to_timestr,
30
- seq2str, split_from_equals, type_name, Matcher, timestr_to_secs)
28
+ from robot.utils import (cut_assign_value, frange, get_error_message, is_list_like,
29
+ is_number, plural_or_not as s, secs_to_timestr, seq2str,
30
+ split_from_equals, type_name, Matcher, timestr_to_secs)
31
31
  from robot.variables import is_dict_variable, evaluate_expression
32
32
 
33
33
  from .statusreporter import StatusReporter
@@ -101,7 +101,7 @@ class ForInRunner:
101
101
  error = DataError(data.error, syntax=True)
102
102
  else:
103
103
  run = True
104
- result = ForResult(data.variables, data.flavor, data.values, data.start,
104
+ result = ForResult(data.assign, data.flavor, data.values, data.start,
105
105
  data.mode, data.fill)
106
106
  with StatusReporter(data, result, self._context, run) as status:
107
107
  if run:
@@ -143,7 +143,7 @@ class ForInRunner:
143
143
  def _get_values_for_rounds(self, data):
144
144
  if self._context.dry_run:
145
145
  return [None]
146
- values_per_round = len(data.variables)
146
+ values_per_round = len(data.assign)
147
147
  if self._is_dict_iteration(data.values):
148
148
  values = self._resolve_dict_values(data.values)
149
149
  values = self._map_dict_values_to_rounds(values, values_per_round)
@@ -218,10 +218,10 @@ class ForInRunner:
218
218
  variables = self._context.variables
219
219
  else: # Not really run (earlier failure, unexecuted IF branch, dry-run)
220
220
  variables = {}
221
- values = [''] * len(data.variables)
222
- for name, value in self._map_variables_and_values(data.variables, values):
221
+ values = [''] * len(data.assign)
222
+ for name, value in self._map_variables_and_values(data.assign, values):
223
223
  variables[name] = value
224
- result.variables[name] = cut_assign_value(value)
224
+ result.assign[name] = cut_assign_value(value)
225
225
  runner = BodyRunner(self._context, run, self._templated)
226
226
  with StatusReporter(data, result, self._context, run):
227
227
  runner.run(data.body)
@@ -274,13 +274,13 @@ class ForInZipRunner(ForInRunner):
274
274
  if not mode or self._context.dry_run:
275
275
  return None
276
276
  try:
277
- mode = self._context.variables.replace_string(mode).upper()
278
- if mode in ('STRICT', 'SHORTEST', 'LONGEST'):
279
- return mode
280
- raise DataError(f"Mode must be 'STRICT', 'SHORTEST' or 'LONGEST', "
281
- f"got '{mode}'.")
277
+ mode = self._context.variables.replace_string(mode)
278
+ if mode.upper() in ('STRICT', 'SHORTEST', 'LONGEST'):
279
+ return mode.upper()
280
+ raise DataError(f"Value '{mode}' is not accepted. Valid values "
281
+ f"are 'STRICT', 'SHORTEST' and 'LONGEST'.")
282
282
  except DataError as err:
283
- raise DataError(f'Invalid mode: {err}')
283
+ raise DataError(f'Invalid FOR IN ZIP mode: {err}')
284
284
 
285
285
  def _resolve_fill(self, fill):
286
286
  if not fill or self._context.dry_run:
@@ -288,7 +288,7 @@ class ForInZipRunner(ForInRunner):
288
288
  try:
289
289
  return self._context.variables.replace_scalar(fill)
290
290
  except DataError as err:
291
- raise DataError(f'Invalid fill value: {err}')
291
+ raise DataError(f'Invalid FOR IN ZIP fill value: {err}')
292
292
 
293
293
  def _resolve_dict_values(self, values):
294
294
  raise DataError('FOR IN ZIP loops do not support iterating over dictionaries.',
@@ -302,6 +302,8 @@ class ForInZipRunner(ForInRunner):
302
302
  return zip_longest(*values, fillvalue=self._fill)
303
303
  if self._mode == 'STRICT':
304
304
  self._validate_strict_lengths(values)
305
+ if self._mode is None:
306
+ self._deprecate_different_lengths(values)
305
307
  return zip(*values)
306
308
 
307
309
  def _validate_types(self, values):
@@ -316,12 +318,21 @@ class ForInZipRunner(ForInRunner):
316
318
  try:
317
319
  lengths.append(len(item))
318
320
  except TypeError:
319
- raise DataError(f"FOR IN ZIP items should have length in STRICT mode, "
320
- f"but item {index} does not.")
321
+ raise DataError(f"FOR IN ZIP items must have length in the STRICT "
322
+ f"mode, but item {index} does not.")
321
323
  if len(set(lengths)) > 1:
322
- raise DataError(f"FOR IN ZIP items should have equal lengths in STRICT "
324
+ raise DataError(f"FOR IN ZIP items must have equal lengths in the STRICT "
323
325
  f"mode, but lengths are {seq2str(lengths, quote='')}.")
324
326
 
327
+ def _deprecate_different_lengths(self, values):
328
+ try:
329
+ self._validate_strict_lengths(values)
330
+ except DataError as err:
331
+ logger.warn(f"FOR IN ZIP default mode will be changed from SHORTEST to "
332
+ f"STRICT in Robot Framework 8.0. Use 'mode=SHORTEST' to keep "
333
+ f"using the SHORTEST mode. If the mode is not changed, "
334
+ f"execution will fail like this in the future: {err}")
335
+
325
336
 
326
337
  class ForInEnumerateRunner(ForInRunner):
327
338
  flavor = 'IN ENUMERATE'
@@ -339,9 +350,9 @@ class ForInEnumerateRunner(ForInRunner):
339
350
  try:
340
351
  return int(start)
341
352
  except ValueError:
342
- raise DataError(f"Start value must be an integer, got '{start}'.")
353
+ raise DataError(f"Value must be an integer, got '{start}'.")
343
354
  except DataError as err:
344
- raise DataError(f'Invalid start value: {err}')
355
+ raise DataError(f'Invalid FOR IN ENUMERATE start value: {err}')
345
356
 
346
357
  def _map_dict_values_to_rounds(self, values, per_round):
347
358
  if per_round > 3:
@@ -375,10 +386,12 @@ class WhileRunner:
375
386
  error = None
376
387
  run = False
377
388
  limit = None
378
- loop_result = WhileResult(data.condition, data.limit,
379
- data.on_limit, data.on_limit_message,
380
- starttime=get_timestamp())
381
- iter_result = loop_result.body.create_iteration(starttime=get_timestamp())
389
+ loop_result = WhileResult(data.condition,
390
+ data.limit,
391
+ data.on_limit,
392
+ data.on_limit_message,
393
+ start_time=datetime.now())
394
+ iter_result = loop_result.body.create_iteration(start_time=datetime.now())
382
395
  if self._run:
383
396
  if data.error:
384
397
  error = DataError(data.error, syntax=True)
@@ -420,7 +433,7 @@ class WhileRunner:
420
433
  errors.extend(failed.get_errors())
421
434
  if not failed.can_continue(ctx, self._templated):
422
435
  break
423
- iter_result = loop_result.body.create_iteration(starttime=get_timestamp())
436
+ iter_result = loop_result.body.create_iteration(start_time=datetime.now())
424
437
  if not self._should_run(data.condition, ctx.variables):
425
438
  break
426
439
  if errors:
@@ -453,10 +466,11 @@ class IfRunner:
453
466
  def run(self, data):
454
467
  with self._dry_run_recursion_detection(data) as recursive_dry_run:
455
468
  error = None
456
- with StatusReporter(data, IfResult(), self._context, self._run):
469
+ result = IfResult()
470
+ with StatusReporter(data, result, self._context, self._run):
457
471
  for branch in data.body:
458
472
  try:
459
- if self._run_if_branch(branch, recursive_dry_run, data.error):
473
+ if self._run_if_branch(branch, result, recursive_dry_run, data.error):
460
474
  self._run = False
461
475
  except ExecutionStatus as err:
462
476
  error = err
@@ -478,9 +492,9 @@ class IfRunner:
478
492
  if dry_run:
479
493
  self._dry_run_stack.pop()
480
494
 
481
- def _run_if_branch(self, branch, recursive_dry_run=False, syntax_error=None):
495
+ def _run_if_branch(self, branch, result, recursive_dry_run=False, syntax_error=None):
482
496
  context = self._context
483
- result = IfBranchResult(branch.type, branch.condition, starttime=get_timestamp())
497
+ result = result.body.create_branch(branch.type, branch.condition, start_time=datetime.now())
484
498
  error = None
485
499
  if syntax_error:
486
500
  run_branch = False
@@ -525,28 +539,29 @@ class TryRunner:
525
539
 
526
540
  def run(self, data):
527
541
  run = self._run
528
- with StatusReporter(data, TryResult(), self._context, run):
542
+ result = TryResult()
543
+ with StatusReporter(data, result, self._context, run):
529
544
  if data.error:
530
- self._run_invalid(data)
545
+ self._run_invalid(data, result)
531
546
  return
532
- error = self._run_try(data, run)
547
+ error = self._run_try(data, result, run)
533
548
  run_excepts_or_else = self._should_run_excepts_or_else(error, run)
534
549
  if error:
535
- error = self._run_excepts(data, error, run=run_excepts_or_else)
536
- self._run_else(data, run=False)
550
+ error = self._run_excepts(data, result, error, run=run_excepts_or_else)
551
+ self._run_else(data, result, run=False)
537
552
  else:
538
- self._run_excepts(data, error, run=False)
539
- error = self._run_else(data, run=run_excepts_or_else)
540
- error = self._run_finally(data, run) or error
553
+ self._run_excepts(data, result, error, run=False)
554
+ error = self._run_else(data, result, run=run_excepts_or_else)
555
+ error = self._run_finally(data, result, run) or error
541
556
  if error:
542
557
  raise error
543
558
 
544
- def _run_invalid(self, data):
559
+ def _run_invalid(self, data, result):
545
560
  error_reported = False
546
561
  for branch in data.body:
547
- result = TryBranchResult(branch.type, branch.patterns, branch.pattern_type,
548
- branch.variable)
549
- with StatusReporter(branch, result, self._context, run=False, suppress=True):
562
+ branch_result = result.body.create_branch(branch.type, branch.patterns,
563
+ branch.pattern_type, branch.assign)
564
+ with StatusReporter(branch, branch_result, self._context, run=False, suppress=True):
550
565
  runner = BodyRunner(self._context, run=False, templated=self._templated)
551
566
  runner.run(branch.body)
552
567
  if not error_reported:
@@ -554,8 +569,8 @@ class TryRunner:
554
569
  raise DataError(data.error, syntax=True)
555
570
  raise ExecutionFailed(data.error, syntax=True)
556
571
 
557
- def _run_try(self, data, run):
558
- result = TryBranchResult(data.TRY)
572
+ def _run_try(self, data, result, run):
573
+ result = result.body.create_branch(data.TRY)
559
574
  return self._run_branch(data.try_branch, result, run)
560
575
 
561
576
  def _should_run_excepts_or_else(self, error, run):
@@ -577,7 +592,7 @@ class TryRunner:
577
592
  else:
578
593
  return None
579
594
 
580
- def _run_excepts(self, data, error, run):
595
+ def _run_excepts(self, data, result, error, run):
581
596
  for branch in data.except_branches:
582
597
  try:
583
598
  run_branch = run and self._should_run_except(branch, error)
@@ -586,15 +601,15 @@ class TryRunner:
586
601
  pattern_error = err
587
602
  else:
588
603
  pattern_error = None
589
- result = TryBranchResult(branch.type, branch.patterns,
590
- branch.pattern_type, branch.variable)
604
+ branch_result = result.body.create_branch(branch.type, branch.patterns,
605
+ branch.pattern_type, branch.assign)
591
606
  if run_branch:
592
- if branch.variable:
593
- self._context.variables[branch.variable] = str(error)
594
- error = self._run_branch(branch, result, error=pattern_error)
607
+ if branch.assign:
608
+ self._context.variables[branch.assign] = str(error)
609
+ error = self._run_branch(branch, branch_result, error=pattern_error)
595
610
  run = False
596
611
  else:
597
- self._run_branch(branch, result, run=False)
612
+ self._run_branch(branch, branch_result, run=False)
598
613
  return error
599
614
 
600
615
  def _should_run_except(self, branch, error):
@@ -602,9 +617,9 @@ class TryRunner:
602
617
  return True
603
618
  matchers = {
604
619
  'GLOB': lambda m, p: Matcher(p, spaceless=False, caseless=False).match(m),
620
+ 'REGEXP': lambda m, p: re.fullmatch(p, m) is not None,
621
+ 'START': lambda m, p: m.startswith(p),
605
622
  'LITERAL': lambda m, p: m == p,
606
- 'REGEXP': lambda m, p: re.match(rf'{p}\Z', m) is not None,
607
- 'START': lambda m, p: m.startswith(p)
608
623
  }
609
624
  if branch.pattern_type:
610
625
  pattern_type = self._context.variables.replace_string(branch.pattern_type)
@@ -612,21 +627,21 @@ class TryRunner:
612
627
  pattern_type = 'LITERAL'
613
628
  matcher = matchers.get(pattern_type.upper())
614
629
  if not matcher:
615
- raise DataError(f"Invalid EXCEPT pattern type '{pattern_type}', "
616
- f"expected {seq2str(matchers, lastsep=' or ')}.")
630
+ raise DataError(f"Invalid EXCEPT pattern type '{pattern_type}'. "
631
+ f"Valid values are {seq2str(matchers)}.")
617
632
  for pattern in branch.patterns:
618
633
  if matcher(error.message, self._context.variables.replace_string(pattern)):
619
634
  return True
620
635
  return False
621
636
 
622
- def _run_else(self, data, run):
637
+ def _run_else(self, data, result, run):
623
638
  if data.else_branch:
624
- result = TryBranchResult(data.ELSE)
639
+ result = result.body.create_branch(data.ELSE)
625
640
  return self._run_branch(data.else_branch, result, run)
626
641
 
627
- def _run_finally(self, data, run):
642
+ def _run_finally(self, data, result, run):
628
643
  if data.finally_branch:
629
- result = TryBranchResult(data.FINALLY)
644
+ result = result.body.create_branch(data.FINALLY)
630
645
  try:
631
646
  with StatusReporter(data.finally_branch, result, self._context, run):
632
647
  runner = BodyRunner(self._context, run, self._templated)
@@ -679,15 +694,15 @@ class WhileLimit:
679
694
  return None
680
695
  try:
681
696
  on_limit = variables.replace_string(on_limit)
682
- if on_limit.upper() not in ['PASS', 'FAIL']:
683
- raise DataError("Value must be 'PASS' or 'FAIL'.")
697
+ if on_limit.upper() in ('PASS', 'FAIL'):
698
+ return on_limit.upper()
699
+ raise DataError(f"Value '{on_limit}' is not accepted. Valid values "
700
+ f"are 'PASS' and 'FAIL'.")
684
701
  except DataError as err:
685
- raise DataError(f"Invalid WHILE loop 'on_limit' value '{on_limit}': {err}")
686
- else:
687
- return on_limit.lower()
702
+ raise DataError(f"Invalid WHILE loop 'on_limit' value: {err}")
688
703
 
689
704
  def limit_exceeded(self):
690
- on_limit_pass = self.on_limit == 'pass'
705
+ on_limit_pass = self.on_limit == 'PASS'
691
706
  if self.on_limit_message:
692
707
  raise LimitExceeded(on_limit_pass, self.on_limit_message)
693
708
  else:
@@ -53,23 +53,21 @@ class RobotParser(Parser):
53
53
  def parse_suite_file(self, source: Path, defaults: TestDefaults) -> TestSuite:
54
54
  model = get_model(self._get_source(source), data_only=True,
55
55
  curdir=self._get_curdir(source), lang=self.lang)
56
- suite = TestSuite(name=TestSuite.name_from_source(source, self.extensions),
57
- source=source)
58
- SuiteBuilder(suite, FileSettings(defaults)).build(model)
59
- return suite
56
+ model.source = source
57
+ return self.parse_model(model, defaults)
60
58
 
61
59
  def parse_init_file(self, source: Path, defaults: TestDefaults) -> TestSuite:
62
60
  model = get_init_model(self._get_source(source), data_only=True,
63
61
  curdir=self._get_curdir(source), lang=self.lang)
64
- directory = source.parent
65
- suite = TestSuite(name=TestSuite.name_from_source(directory),
66
- source=directory, rpa=None)
62
+ model.source = source
63
+ suite = TestSuite(name=TestSuite.name_from_source(source.parent),
64
+ source=source.parent, rpa=None)
67
65
  SuiteBuilder(suite, InitFileSettings(defaults)).build(model)
68
66
  return suite
69
67
 
70
68
  def parse_model(self, model: File, defaults: 'TestDefaults|None' = None) -> TestSuite:
71
- source = model.source
72
- suite = TestSuite(name=TestSuite.name_from_source(source), source=source)
69
+ name = TestSuite.name_from_source(model.source, self.extensions)
70
+ suite = TestSuite(name=name, source=model.source)
73
71
  SuiteBuilder(suite, FileSettings(defaults)).build(model)
74
72
  return suite
75
73
 
@@ -82,8 +80,8 @@ class RobotParser(Parser):
82
80
  def parse_resource_file(self, source: Path) -> ResourceFile:
83
81
  model = get_resource_model(self._get_source(source), data_only=True,
84
82
  curdir=self._get_curdir(source), lang=self.lang)
83
+ model.source = source
85
84
  resource = self.parse_resource_model(model)
86
- resource.source = source
87
85
  return resource
88
86
 
89
87
  def parse_resource_model(self, model: File) -> ResourceFile:
@@ -13,31 +13,23 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- import sys
17
16
  from collections.abc import Sequence
17
+ from typing import TypedDict
18
18
 
19
19
  from ..model import TestCase
20
20
 
21
21
 
22
- if sys.version_info >= (3, 8):
23
- from typing import TypedDict
22
+ class OptionalItems(TypedDict, total=False):
23
+ args: 'Sequence[str]'
24
+ lineno: int
24
25
 
25
26
 
26
- class OptionalItems(TypedDict, total=False):
27
- args: 'Sequence[str]'
28
- lineno: int
27
+ class FixtureDict(OptionalItems):
28
+ """Dictionary containing setup or teardown info.
29
29
 
30
-
31
- class FixtureDict(OptionalItems):
32
- """Dictionary containing setup or teardown info.
33
-
34
- :attr:`args` and :attr:`lineno` are optional.
35
- """
36
- name: str
37
-
38
- else:
39
- class FixtureDict(dict):
40
- pass
30
+ :attr:`args` and :attr:`lineno` are optional.
31
+ """
32
+ name: str
41
33
 
42
34
 
43
35
  class TestDefaults: