robotframework 6.1.1__zip → 7.0__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 (307) hide show
  1. {robotframework-6.1.1 → robotframework-7.0}/INSTALL.rst +25 -25
  2. {robotframework-6.1.1 → robotframework-7.0}/PKG-INFO +6 -8
  3. {robotframework-6.1.1 → robotframework-7.0}/README.rst +3 -2
  4. {robotframework-6.1.1 → robotframework-7.0}/setup.py +3 -6
  5. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/__init__.py +4 -1
  6. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/deco.py +60 -14
  7. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/exceptions.py +6 -6
  8. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/interfaces.py +402 -67
  9. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/logger.py +27 -20
  10. {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/parsing.py +4 -2
  11. robotframework-7.0/src/robot/api/py.typed +0 -0
  12. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/gatherfailed.py +2 -2
  13. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/languages.py +0 -9
  14. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/settings.py +21 -14
  15. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/storage.js +11 -6
  16. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/htmlfilewriter.py +1 -1
  17. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.css +10 -2
  18. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.html +10 -0
  19. robotframework-7.0/src/robot/htmldata/rebot/common.css +362 -0
  20. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/doc_formatting.css +13 -7
  21. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.css +51 -10
  22. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.html +14 -23
  23. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/model.js +2 -4
  24. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.css +83 -19
  25. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.html +22 -7
  26. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/testdata.js +10 -3
  27. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/view.js +84 -0
  28. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/template.py +3 -3
  29. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/builder.py +0 -8
  30. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/datatypes.py +9 -10
  31. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlutils.py +4 -7
  32. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonbuilder.py +38 -20
  33. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/model.py +21 -28
  34. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/robotbuilder.py +50 -31
  35. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/standardtypes.py +9 -1
  36. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlbuilder.py +35 -20
  37. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlwriter.py +18 -38
  38. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/BuiltIn.py +255 -205
  39. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Collections.py +384 -240
  40. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/DateTime.py +73 -60
  41. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/OperatingSystem.py +6 -5
  42. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Process.py +26 -27
  43. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Remote.py +40 -36
  44. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/String.py +66 -76
  45. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/XML.py +66 -59
  46. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/__init__.py +2 -2
  47. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/__init__.py +5 -5
  48. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/body.py +44 -13
  49. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/configurer.py +15 -11
  50. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/control.py +226 -84
  51. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/filter.py +31 -25
  52. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/itemlist.py +9 -8
  53. robotframework-7.0/src/robot/model/keyword.py +77 -0
  54. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/message.py +19 -10
  55. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modelobject.py +25 -7
  56. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/namepatterns.py +3 -25
  57. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/stats.py +9 -15
  58. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tags.py +1 -1
  59. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testcase.py +15 -27
  60. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testsuite.py +17 -26
  61. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/visitor.py +35 -8
  62. robotframework-7.0/src/robot/output/console/dotted.py +90 -0
  63. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/quiet.py +3 -2
  64. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/verbose.py +61 -61
  65. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/debugfile.py +39 -24
  66. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/filelogger.py +18 -15
  67. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/librarylogger.py +3 -2
  68. robotframework-7.0/src/robot/output/listeners.py +753 -0
  69. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/logger.py +216 -80
  70. robotframework-7.0/src/robot/output/loggerapi.py +215 -0
  71. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/loggerhelper.py +23 -56
  72. robotframework-7.0/src/robot/output/output.py +185 -0
  73. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/stdoutlogsplitter.py +8 -5
  74. robotframework-7.0/src/robot/output/xmllogger.py +459 -0
  75. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/blocklexers.py +17 -13
  76. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/context.py +12 -2
  77. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/lexer.py +1 -1
  78. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/settings.py +6 -3
  79. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/statementlexers.py +39 -10
  80. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokens.py +27 -29
  81. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/blocks.py +19 -6
  82. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/statements.py +193 -94
  83. robotframework-7.0/src/robot/parsing/model/visitor.py +100 -0
  84. {robotframework-6.1.1 → robotframework-7.0}/src/robot/rebot.py +2 -0
  85. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/expandkeywordmatcher.py +1 -1
  86. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsbuildingcontext.py +8 -6
  87. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsmodelbuilders.py +88 -61
  88. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/logreportwriters.py +16 -10
  89. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/outputwriter.py +18 -2
  90. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/resultwriter.py +4 -4
  91. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/stringcache.py +3 -3
  92. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/xunitwriter.py +15 -21
  93. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/__init__.py +3 -2
  94. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/configurer.py +12 -9
  95. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionresult.py +56 -8
  96. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/flattenkeywordmatcher.py +48 -9
  97. robotframework-7.0/src/robot/result/keywordremover.py +207 -0
  98. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/merger.py +1 -1
  99. robotframework-7.0/src/robot/result/model.py +1185 -0
  100. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/modeldeprecation.py +9 -3
  101. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/resultbuilder.py +46 -36
  102. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/xmlelementhandlers.py +83 -43
  103. {robotframework-6.1.1 → robotframework-7.0}/src/robot/run.py +2 -0
  104. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/__init__.py +14 -4
  105. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/__init__.py +2 -1
  106. robotframework-7.0/src/robot/running/arguments/argumentconverter.py +100 -0
  107. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentmapper.py +26 -24
  108. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentparser.py +82 -60
  109. robotframework-7.0/src/robot/running/arguments/argumentresolver.py +158 -0
  110. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentspec.py +83 -116
  111. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentvalidator.py +33 -27
  112. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/customconverters.py +15 -12
  113. robotframework-7.0/src/robot/running/arguments/embedded.py +145 -0
  114. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/typeconverters.py +233 -213
  115. robotframework-7.0/src/robot/running/arguments/typeinfo.py +317 -0
  116. robotframework-7.0/src/robot/running/arguments/typeinfoparser.py +219 -0
  117. robotframework-7.0/src/robot/running/arguments/typevalidator.py +60 -0
  118. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/bodyrunner.py +147 -129
  119. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/builders.py +2 -1
  120. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/parsers.py +10 -11
  121. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/settings.py +9 -17
  122. robotframework-7.0/src/robot/running/builder/transformers.py +535 -0
  123. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/context.py +113 -31
  124. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/dynamicmethods.py +62 -34
  125. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/importer.py +27 -49
  126. robotframework-7.0/src/robot/running/invalidkeyword.py +67 -0
  127. robotframework-7.0/src/robot/running/keywordfinder.py +91 -0
  128. robotframework-7.0/src/robot/running/keywordimplementation.py +164 -0
  129. robotframework-7.0/src/robot/running/librarykeyword.py +392 -0
  130. robotframework-7.0/src/robot/running/librarykeywordrunner.py +250 -0
  131. robotframework-7.0/src/robot/running/libraryscopes.py +115 -0
  132. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/model.py +195 -377
  133. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/namespace.py +124 -137
  134. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/outputcapture.py +20 -12
  135. robotframework-7.0/src/robot/running/resourcemodel.py +448 -0
  136. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/statusreporter.py +16 -13
  137. robotframework-7.0/src/robot/running/suiterunner.py +265 -0
  138. robotframework-7.0/src/robot/running/testlibraries.py +500 -0
  139. robotframework-7.0/src/robot/running/userkeywordrunner.py +260 -0
  140. {robotframework-6.1.1 → robotframework-7.0}/src/robot/testdoc.py +18 -13
  141. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/__init__.py +53 -35
  142. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/connectioncache.py +64 -59
  143. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/dotdict.py +3 -0
  144. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encodingsniffer.py +1 -1
  145. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/escaping.py +19 -19
  146. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/importer.py +2 -2
  147. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markupwriters.py +23 -15
  148. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/misc.py +1 -2
  149. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/normalizing.py +9 -24
  150. robotframework-7.0/src/robot/utils/notset.py +33 -0
  151. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/platform.py +15 -5
  152. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotio.py +9 -9
  153. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotpath.py +1 -0
  154. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottime.py +122 -90
  155. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottypes.py +21 -31
  156. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/setter.py +0 -5
  157. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/text.py +7 -4
  158. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/unic.py +2 -2
  159. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/__init__.py +2 -2
  160. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/assigner.py +17 -19
  161. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/evaluation.py +20 -17
  162. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/filesetter.py +80 -80
  163. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/replacer.py +33 -36
  164. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/scopes.py +17 -12
  165. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/search.py +66 -41
  166. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/store.py +14 -16
  167. robotframework-7.0/src/robot/variables/tablesetter.py +164 -0
  168. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/variables.py +1 -1
  169. {robotframework-6.1.1 → robotframework-7.0}/src/robot/version.py +1 -1
  170. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/PKG-INFO +6 -8
  171. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/SOURCES.txt +10 -8
  172. {robotframework-6.1.1 → robotframework-7.0}/tasks.py +6 -6
  173. robotframework-6.1.1/src/robot/htmldata/rebot/common.css +0 -239
  174. robotframework-6.1.1/src/robot/libraries/Reserved.py +0 -48
  175. robotframework-6.1.1/src/robot/model/keyword.py +0 -173
  176. robotframework-6.1.1/src/robot/output/console/dotted.py +0 -90
  177. robotframework-6.1.1/src/robot/output/listenerarguments.py +0 -165
  178. robotframework-6.1.1/src/robot/output/listenermethods.py +0 -113
  179. robotframework-6.1.1/src/robot/output/listeners.py +0 -174
  180. robotframework-6.1.1/src/robot/output/output.py +0 -95
  181. robotframework-6.1.1/src/robot/output/xmllogger.py +0 -354
  182. robotframework-6.1.1/src/robot/parsing/model/visitor.py +0 -67
  183. robotframework-6.1.1/src/robot/result/keywordremover.py +0 -183
  184. robotframework-6.1.1/src/robot/result/model.py +0 -957
  185. robotframework-6.1.1/src/robot/running/arguments/argumentconverter.py +0 -79
  186. robotframework-6.1.1/src/robot/running/arguments/argumentresolver.py +0 -131
  187. robotframework-6.1.1/src/robot/running/arguments/embedded.py +0 -146
  188. robotframework-6.1.1/src/robot/running/arguments/typevalidator.py +0 -56
  189. robotframework-6.1.1/src/robot/running/builder/transformers.py +0 -642
  190. robotframework-6.1.1/src/robot/running/handlers.py +0 -321
  191. robotframework-6.1.1/src/robot/running/handlerstore.py +0 -66
  192. robotframework-6.1.1/src/robot/running/librarykeywordrunner.py +0 -238
  193. robotframework-6.1.1/src/robot/running/libraryscopes.py +0 -97
  194. robotframework-6.1.1/src/robot/running/modelcombiner.py +0 -32
  195. robotframework-6.1.1/src/robot/running/suiterunner.py +0 -248
  196. robotframework-6.1.1/src/robot/running/testlibraries.py +0 -423
  197. robotframework-6.1.1/src/robot/running/usererrorhandler.py +0 -75
  198. robotframework-6.1.1/src/robot/running/userkeyword.py +0 -111
  199. robotframework-6.1.1/src/robot/running/userkeywordrunner.py +0 -274
  200. robotframework-6.1.1/src/robot/variables/tablesetter.py +0 -156
  201. {robotframework-6.1.1 → robotframework-7.0}/AUTHORS.rst +0 -0
  202. {robotframework-6.1.1 → robotframework-7.0}/BUILD.rst +0 -0
  203. {robotframework-6.1.1 → robotframework-7.0}/CONTRIBUTING.rst +0 -0
  204. {robotframework-6.1.1 → robotframework-7.0}/COPYRIGHT.txt +0 -0
  205. {robotframework-6.1.1 → robotframework-7.0}/LICENSE.txt +0 -0
  206. {robotframework-6.1.1 → robotframework-7.0}/MANIFEST.in +0 -0
  207. {robotframework-6.1.1 → robotframework-7.0}/setup.cfg +0 -0
  208. {robotframework-6.1.1 → robotframework-7.0}/src/robot/__init__.py +0 -0
  209. {robotframework-6.1.1 → robotframework-7.0}/src/robot/__main__.py +0 -0
  210. {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/__init__.py +0 -0
  211. {robotframework-6.1.1 → robotframework-7.0}/src/robot/errors.py +0 -0
  212. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/__init__.py +0 -0
  213. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/__init__.py +0 -0
  214. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/js_disabled.css +0 -0
  215. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/jsonwriter.py +0 -0
  216. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/__init__.py +0 -0
  217. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
  218. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.min.js +0 -0
  219. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
  220. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
  221. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
  222. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/__init__.py +0 -0
  223. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
  224. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/print.css +0 -0
  225. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/pygments.css +0 -0
  226. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/__init__.py +0 -0
  227. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/fileloading.js +0 -0
  228. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.js +0 -0
  229. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/print.css +0 -0
  230. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/util.js +0 -0
  231. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/__init__.py +0 -0
  232. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.css +0 -0
  233. {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.html +0 -0
  234. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdoc.py +0 -0
  235. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/__init__.py +0 -0
  236. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/consoleviewer.py +0 -0
  237. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlwriter.py +0 -0
  238. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonwriter.py +0 -0
  239. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/output.py +0 -0
  240. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/writer.py +0 -0
  241. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Dialogs.py +0 -0
  242. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Easter.py +0 -0
  243. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Screenshot.py +0 -0
  244. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Telnet.py +0 -0
  245. {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/dialogs_py.py +0 -0
  246. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/fixture.py +0 -0
  247. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/metadata.py +0 -0
  248. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modifier.py +0 -0
  249. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/statistics.py +0 -0
  250. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/suitestatistics.py +0 -0
  251. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagsetter.py +0 -0
  252. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagstatistics.py +0 -0
  253. {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/totalstatistics.py +0 -0
  254. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/__init__.py +0 -0
  255. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/__init__.py +0 -0
  256. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/highlighting.py +0 -0
  257. {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/pyloggingconf.py +0 -0
  258. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/__init__.py +0 -0
  259. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/__init__.py +0 -0
  260. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokenizer.py +0 -0
  261. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/__init__.py +0 -0
  262. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/__init__.py +0 -0
  263. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/blockparsers.py +0 -0
  264. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/fileparser.py +0 -0
  265. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/parser.py +0 -0
  266. {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/suitestructure.py +0 -0
  267. {robotframework-6.1.1 → robotframework-7.0}/src/robot/pythonpathsetter.py +0 -0
  268. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/__init__.py +0 -0
  269. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsexecutionresult.py +0 -0
  270. {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jswriter.py +0 -0
  271. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionerrors.py +0 -0
  272. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/messagefilter.py +0 -0
  273. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/suiteteardownfailed.py +0 -0
  274. {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/visitor.py +0 -0
  275. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/__init__.py +0 -0
  276. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/randomizer.py +0 -0
  277. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/runkwregister.py +0 -0
  278. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/signalhandler.py +0 -0
  279. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/status.py +0 -0
  280. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/__init__.py +0 -0
  281. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/posix.py +0 -0
  282. {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/windows.py +0 -0
  283. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/application.py +0 -0
  284. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/argumentparser.py +0 -0
  285. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/asserts.py +0 -0
  286. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/charwidth.py +0 -0
  287. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/compress.py +0 -0
  288. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encoding.py +0 -0
  289. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/error.py +0 -0
  290. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/etreewrapper.py +0 -0
  291. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/filereader.py +0 -0
  292. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/frange.py +0 -0
  293. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/htmlformatters.py +0 -0
  294. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markuputils.py +0 -0
  295. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/match.py +0 -0
  296. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/recommendations.py +0 -0
  297. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/restreader.py +0 -0
  298. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotenv.py +0 -0
  299. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotinspect.py +0 -0
  300. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/sortable.py +0 -0
  301. {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/typehints.py +0 -0
  302. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/finders.py +0 -0
  303. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/notfound.py +0 -0
  304. {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/resolvable.py +0 -0
  305. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/dependency_links.txt +0 -0
  306. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/entry_points.txt +0 -0
  307. {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/top_level.txt +0 -0
@@ -28,13 +28,13 @@ is having Python or its alternative implementation `PyPy <https://pypy.org>`_
28
28
  installed. Another recommended precondition is having the pip_ package manager
29
29
  available.
30
30
 
31
- Robot Framework requires Python 3.6 or newer. If you need to use Python 2,
31
+ Robot Framework requires Python 3.8 or newer. The latest version that supports
32
+ Python 3.6 and 3.7 is `Robot Framework 6.1.1`__. If you need to use Python 2,
32
33
  `Jython <http://jython.org>`_ or `IronPython <http://ironpython.net>`_,
33
34
  you can use `Robot Framework 4.1.3`__.
34
- The forthcoming Robot Framework 7.0 will require `Python 3.8 or newer`__.
35
35
 
36
+ __ https://github.com/robotframework/robotframework/blob/v6.1.1/INSTALL.rst
36
37
  __ https://github.com/robotframework/robotframework/blob/v4.1.3/INSTALL.rst
37
- __ https://github.com/robotframework/robotframework/issues/4294
38
38
 
39
39
  Installing Python on Linux
40
40
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -50,7 +50,7 @@ command in a terminal:
50
50
  .. sourcecode:: bash
51
51
 
52
52
  $ python --version
53
- Python 3.8.10
53
+ Python 3.10.13
54
54
 
55
55
  Notice that if your distribution provides also older Python 2, running `python`
56
56
  may use that. To use Python 3, you can use `python3` command or even more version
@@ -60,10 +60,10 @@ one to use:
60
60
 
61
61
  .. sourcecode:: bash
62
62
 
63
- $ python3.9 --version
64
- Python 3.9.10
65
- $ python3.10 --version
66
- Python 3.10.2
63
+ $ python3.11 --version
64
+ Python 3.11.7
65
+ $ python3.12 --version
66
+ Python 3.12.1
67
67
 
68
68
  Installing Robot Framework directly under the system provided Python
69
69
  has a risk that possible problems can affect the whole Python installation
@@ -92,7 +92,7 @@ added to `PATH`, you can open the command prompt and execute `python --version`:
92
92
  .. sourcecode:: batch
93
93
 
94
94
  C:\>python --version
95
- Python 3.9.4
95
+ Python 3.10.9
96
96
 
97
97
  If you install multiple Python versions on Windows, the version that is used
98
98
  when you execute `python` is the one first in `PATH`. If you need to use others,
@@ -101,9 +101,9 @@ the easiest way is using the `py launcher`__:
101
101
  .. sourcecode:: batch
102
102
 
103
103
  C:\>py --version
104
- Python 3.9.4
105
- C:\>py -3.10 --version
106
- Python 3.10.2
104
+ Python 3.10.9
105
+ C:\>py -3.12 --version
106
+ Python 3.12.1
107
107
 
108
108
  __ https://docs.python.org/3/using/windows.html
109
109
  __ https://docs.python.org/3/using/windows.html#windows-full
@@ -203,18 +203,18 @@ Examples on Linux:
203
203
  .. sourcecode:: bash
204
204
 
205
205
  $ pip --version
206
- pip 20.2 from ... (python 3.8)
207
- $ python3.10 -m pip --version
208
- pip 20.2 from ... (python 3.10)
206
+ pip 23.2.1 from ... (python 3.10)
207
+ $ python3.12 -m pip --version
208
+ pip 23.3.1 from ... (python 3.12)
209
209
 
210
210
  Examples on Windows:
211
211
 
212
212
  .. sourcecode:: batch
213
213
 
214
214
  C:\> pip --version
215
- pip 20.2.2 from ... (python 3.9)
216
- C:\> py -m 3.10 -m pip --version
217
- pip 20.2.1 from ... (python 3.10)
215
+ pip 23.2.1 from ... (python 3.10)
216
+ C:\> py -m 3.12 -m pip --version
217
+ pip 23.3.2 from ... (python 3.12)
218
218
 
219
219
  In the subsequent sections pip is always run using the `pip` command. You may
220
220
  need to use some of the other approaches explained above in your environment.
@@ -241,10 +241,10 @@ __ PyPI_
241
241
  pip install --upgrade --pre robotframework
242
242
 
243
243
  # Install a specific version
244
- pip install robotframework==5.0
244
+ pip install robotframework==7.0
245
245
 
246
246
  # Install separately downloaded package (no network connection needed)
247
- pip install robotframework-5.0-py3-none-any.whl
247
+ pip install robotframework-7.0-py3-none-any.whl
248
248
 
249
249
  # Install latest (possibly unreleased) code directly from GitHub
250
250
  pip install https://github.com/robotframework/robotframework/archive/master.zip
@@ -283,7 +283,7 @@ the following command:
283
283
  .. sourcecode:: bash
284
284
 
285
285
  $ robot --version
286
- Robot Framework 5.0 (Python 3.8.10 on linux)
286
+ Robot Framework 7.0 (Python 3.10.3 on linux)
287
287
 
288
288
  If running these commands fails with a message saying that the command is
289
289
  not found or recognized, a good first step is double-checking the PATH_
@@ -296,11 +296,11 @@ version.
296
296
 
297
297
  .. sourcecode:: bash
298
298
 
299
- $ python3.10 -m robot --version
300
- Robot Framework 5.0 (Python 3.10.2 on linux)
299
+ $ python3.12 -m robot --version
300
+ Robot Framework 7.0 (Python 3.12.1 on linux)
301
301
 
302
- C:\>py -3.10 -m robot --version
303
- Robot Framework 5.0 (Python 3.10.3 on win32)
302
+ C:\>py -3.11 -m robot --version
303
+ Robot Framework 7.0 (Python 3.11.7 on win32)
304
304
 
305
305
  Virtual environments
306
306
  --------------------
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: robotframework
3
- Version: 6.1.1
3
+ Version: 7.0
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,9 +10,8 @@ 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-6.1.1.rst
13
+ Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.0.rst
14
14
  Project-URL: Slack, http://slack.robotframework.org
15
- Project-URL: Twitter, https://twitter.com/robotframework
16
15
  Description: Robot Framework
17
16
  ===============
18
17
 
@@ -64,10 +63,12 @@ Description: Robot Framework
64
63
  For more detailed installation instructions, including installing Python, see
65
64
  `INSTALL.rst <https://github.com/robotframework/robotframework/blob/master/INSTALL.rst>`__.
66
65
 
67
- Robot Framework requires Python 3.6 or newer and runs also on `PyPy <http://pypy.org>`_.
66
+ Robot Framework requires Python 3.8 or newer and runs also on `PyPy <http://pypy.org>`_.
67
+ The latest version that supports Python 3.6 and 3.7 is `Robot Framework 6.1.1`__.
68
68
  If you need to use Python 2, `Jython <http://jython.org>`_ or
69
69
  `IronPython <http://ironpython.net>`_, you can use `Robot Framework 4.1.3`__.
70
70
 
71
+ __ https://github.com/robotframework/robotframework/tree/v6.1.1#readme
71
72
  __ https://github.com/robotframework/robotframework/tree/v4.1.3#readme
72
73
 
73
74
  Example
@@ -132,7 +133,6 @@ Description: Robot Framework
132
133
  - `Forum <https://forum.robotframework.org/>`_
133
134
  - `robotframework-users
134
135
  <https://groups.google.com/group/robotframework-users/>`_ mailing list
135
- - `@robotframework <https://twitter.com/robotframework>`_ on Twitter
136
136
 
137
137
  Contributing
138
138
  ------------
@@ -171,8 +171,6 @@ Classifier: License :: OSI Approved :: Apache Software License
171
171
  Classifier: Operating System :: OS Independent
172
172
  Classifier: Programming Language :: Python :: 3
173
173
  Classifier: Programming Language :: Python :: 3 :: Only
174
- Classifier: Programming Language :: Python :: 3.6
175
- Classifier: Programming Language :: Python :: 3.7
176
174
  Classifier: Programming Language :: Python :: 3.8
177
175
  Classifier: Programming Language :: Python :: 3.9
178
176
  Classifier: Programming Language :: Python :: 3.10
@@ -184,5 +182,5 @@ Classifier: Topic :: Software Development :: Testing
184
182
  Classifier: Topic :: Software Development :: Testing :: Acceptance
185
183
  Classifier: Topic :: Software Development :: Testing :: BDD
186
184
  Classifier: Framework :: Robot Framework
187
- Requires-Python: >=3.6
185
+ Requires-Python: >=3.8
188
186
  Description-Content-Type: text/x-rst
@@ -49,10 +49,12 @@ you can simply run::
49
49
  For more detailed installation instructions, including installing Python, see
50
50
  `<INSTALL.rst>`__.
51
51
 
52
- Robot Framework requires Python 3.6 or newer and runs also on `PyPy <http://pypy.org>`_.
52
+ Robot Framework requires Python 3.8 or newer and runs also on `PyPy <http://pypy.org>`_.
53
+ The latest version that supports Python 3.6 and 3.7 is `Robot Framework 6.1.1`__.
53
54
  If you need to use Python 2, `Jython <http://jython.org>`_ or
54
55
  `IronPython <http://ironpython.net>`_, you can use `Robot Framework 4.1.3`__.
55
56
 
57
+ __ https://github.com/robotframework/robotframework/tree/v6.1.1#readme
56
58
  __ https://github.com/robotframework/robotframework/tree/v4.1.3#readme
57
59
 
58
60
  Example
@@ -117,7 +119,6 @@ Support and Contact
117
119
  - `Forum <https://forum.robotframework.org/>`_
118
120
  - `robotframework-users
119
121
  <https://groups.google.com/group/robotframework-users/>`_ mailing list
120
- - `@robotframework <https://twitter.com/robotframework>`_ on Twitter
121
122
 
122
123
  Contributing
123
124
  ------------
@@ -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 = '6.1.1'
9
+ VERSION = '7.0'
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'
@@ -22,8 +22,6 @@ License :: OSI Approved :: Apache Software License
22
22
  Operating System :: OS Independent
23
23
  Programming Language :: Python :: 3
24
24
  Programming Language :: Python :: 3 :: Only
25
- Programming Language :: Python :: 3.6
26
- Programming Language :: Python :: 3.7
27
25
  Programming Language :: Python :: 3.8
28
26
  Programming Language :: Python :: 3.9
29
27
  Programming Language :: Python :: 3.10
@@ -42,7 +40,7 @@ KEYWORDS = ('robotframework automation testautomation rpa '
42
40
  'testing acceptancetesting atdd bdd')
43
41
  PACKAGE_DATA = [join('htmldata', directory, pattern)
44
42
  for directory in ('rebot', 'libdoc', 'testdoc', 'lib', 'common')
45
- for pattern in ('*.html', '*.css', '*.js')]
43
+ for pattern in ('*.html', '*.css', '*.js')] + ['api/py.typed']
46
44
 
47
45
 
48
46
  setup(
@@ -57,7 +55,6 @@ setup(
57
55
  'Documentation': 'https://robotframework.org/robotframework',
58
56
  'Release Notes': f'https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-{VERSION}.rst',
59
57
  'Slack': 'http://slack.robotframework.org',
60
- 'Twitter': 'https://twitter.com/robotframework',
61
58
  },
62
59
  download_url = 'https://pypi.org/project/robotframework',
63
60
  license = 'Apache License 2.0',
@@ -66,7 +63,7 @@ setup(
66
63
  long_description_content_type = 'text/x-rst',
67
64
  keywords = KEYWORDS,
68
65
  platforms = 'any',
69
- python_requires='>=3.6',
66
+ python_requires='>=3.8',
70
67
  classifiers = CLASSIFIERS,
71
68
  package_dir = {'': 'src'},
72
69
  package_data = {'robot': PACKAGE_DATA},
@@ -61,6 +61,9 @@ Currently exposed APIs are:
61
61
  returned by the :func:`~robot.result.resultbuilder.ExecutionResult` or
62
62
  an executed :class:`~robot.running.model.TestSuite`.
63
63
 
64
+ * :class:`~robot.running.arguments.typeinfo.TypeInfo` class for parsing
65
+ type hints and converting values based on them. New in Robot Framework 7.0.
66
+
64
67
  * :class:`~robot.conf.languages.Languages` and :class:`~robot.conf.languages.Language`
65
68
  classes for external tools that need to work with different translations.
66
69
  The latter is also the base class to use with custom translations.
@@ -81,6 +84,6 @@ from robot.parsing import (get_tokens, get_resource_tokens, get_init_tokens,
81
84
  get_model, get_resource_model, get_init_model, Token)
82
85
  from robot.reporting import ResultWriter
83
86
  from robot.result import ExecutionResult, ResultVisitor
84
- from robot.running import TestSuite, TestSuiteBuilder
87
+ from robot.running import TestSuite, TestSuiteBuilder, TypeInfo
85
88
 
86
89
  from .exceptions import ContinuableFailure, Failure, FatalError, Error, SkipExecution
@@ -13,10 +13,23 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- import inspect
16
+ from typing import Any, Callable, Sequence, TypeVar, Union, overload
17
17
 
18
+ from .interfaces import TypeHints
18
19
 
19
- def not_keyword(func):
20
+
21
+ # Current annotations report `attr-defined` errors. This can be solved once Python 3.10
22
+ # becomes the minimum version (error-free conditional typing proved too complex).
23
+ # See: https://discuss.python.org/t/questions-related-to-typing-overload-style/38130
24
+ F = TypeVar('F', bound=Callable[..., Any]) # Any function.
25
+ K = TypeVar('K', bound=Callable[..., Any]) # Keyword function.
26
+ L = TypeVar('L', bound=type) # Library class.
27
+ KeywordDecorator = Callable[[K], K]
28
+ LibraryDecorator = Callable[[L], L]
29
+ Converter = Union[Callable[[Any], Any], Callable[[Any, Any], Any]]
30
+
31
+
32
+ def not_keyword(func: F) -> F:
20
33
  """Decorator to disable exposing functions or methods as keywords.
21
34
 
22
35
  Examples::
@@ -41,8 +54,22 @@ def not_keyword(func):
41
54
  not_keyword.robot_not_keyword = True
42
55
 
43
56
 
57
+ @overload
58
+ def keyword(func: K, /) -> K:
59
+ ...
60
+
61
+
62
+ @overload
63
+ def keyword(name: 'str | None' = None,
64
+ tags: Sequence[str] = (),
65
+ types: 'TypeHints | None' = ()) -> KeywordDecorator:
66
+ ...
67
+
68
+
44
69
  @not_keyword
45
- def keyword(name=None, tags=(), types=()):
70
+ def keyword(name: 'K | str | None' = None,
71
+ tags: Sequence[str] = (),
72
+ types: 'TypeHints | None' = ()) -> 'K | KeywordDecorator':
46
73
  """Decorator to set custom name, tags and argument types to keywords.
47
74
 
48
75
  This decorator creates ``robot_name``, ``robot_tags`` and ``robot_types``
@@ -84,10 +111,10 @@ def keyword(name=None, tags=(), types=()):
84
111
  def no_conversion(length, case_insensitive=False):
85
112
  # ...
86
113
  """
87
- if inspect.isroutine(name):
114
+ if callable(name):
88
115
  return keyword()(name)
89
116
 
90
- def decorator(func):
117
+ def decorator(func: F) -> F:
91
118
  func.robot_name = name
92
119
  func.robot_tags = tags
93
120
  func.robot_types = types
@@ -96,15 +123,34 @@ def keyword(name=None, tags=(), types=()):
96
123
  return decorator
97
124
 
98
125
 
126
+ @overload
127
+ def library(cls: L, /) -> L:
128
+ ...
129
+
130
+
131
+ @overload
132
+ def library(scope: 'str | None' = None,
133
+ version: 'str | None' = None,
134
+ converters: 'dict[type, Converter] | None' = None,
135
+ doc_format: 'str | None' = None,
136
+ listener: 'Any | None' = None,
137
+ auto_keywords: bool = False) -> LibraryDecorator:
138
+ ...
139
+
140
+
99
141
  @not_keyword
100
- def library(scope=None, version=None, converters=None, doc_format=None, listener=None,
101
- auto_keywords=False):
142
+ def library(scope: 'L | str | None' = None,
143
+ version: 'str | None' = None,
144
+ converters: 'dict[type, Converter] | None' = None,
145
+ doc_format: 'str | None' = None,
146
+ listener: 'Any | None' = None,
147
+ auto_keywords: bool = False) -> 'L | LibraryDecorator':
102
148
  """Class decorator to control keyword discovery and other library settings.
103
149
 
104
- By default disables automatic keyword detection by setting class attribute
105
- ``ROBOT_AUTO_KEYWORDS = False`` to the decorated library. In that mode
106
- only methods decorated explicitly with the :func:`keyword` decorator become
107
- keywords. If that is not desired, automatic keyword discovery can be
150
+ Disables automatic keyword detection by setting class attribute
151
+ ``ROBOT_AUTO_KEYWORDS = False`` to the decorated library by default. In that
152
+ mode only methods decorated explicitly with the :func:`keyword` decorator
153
+ become keywords. If that is not desired, automatic keyword discovery can be
108
154
  enabled by using ``auto_keywords=True``.
109
155
 
110
156
  Arguments ``scope``, ``version``, ``converters``, ``doc_format`` and ``listener``
@@ -112,7 +158,7 @@ def library(scope=None, version=None, converters=None, doc_format=None, listener
112
158
  using class attributes ``ROBOT_LIBRARY_SCOPE``, ``ROBOT_LIBRARY_VERSION``,
113
159
  ``ROBOT_LIBRARY_CONVERTERS``, ``ROBOT_LIBRARY_DOC_FORMAT`` and
114
160
  ``ROBOT_LIBRARY_LISTENER``, respectively. These attributes are only set if
115
- the related arguments are given and they override possible existing attributes
161
+ the related arguments are given, and they override possible existing attributes
116
162
  in the decorated class.
117
163
 
118
164
  Examples::
@@ -135,10 +181,10 @@ def library(scope=None, version=None, converters=None, doc_format=None, listener
135
181
  The ``@library`` decorator is new in Robot Framework 3.2.
136
182
  The ``converters`` argument is new in Robot Framework 5.0.
137
183
  """
138
- if inspect.isclass(scope):
184
+ if isinstance(scope, type):
139
185
  return library()(scope)
140
186
 
141
- def decorator(cls):
187
+ def decorator(cls: L) -> L:
142
188
  if scope is not None:
143
189
  cls.ROBOT_LIBRARY_SCOPE = scope
144
190
  if version is not None:
@@ -31,12 +31,12 @@ class Failure(AssertionError):
31
31
  """
32
32
  ROBOT_SUPPRESS_NAME = True
33
33
 
34
- def __init__(self, message, html=False):
34
+ def __init__(self, message: str, html: bool = False):
35
35
  """
36
36
  :param message: Exception message.
37
37
  :param html: When ``True``, message is considered to be HTML and not escaped.
38
38
  """
39
- AssertionError.__init__(self, message if not html else '*HTML* ' + message)
39
+ super().__init__(message if not html else '*HTML* ' + message)
40
40
 
41
41
 
42
42
  class ContinuableFailure(Failure):
@@ -57,12 +57,12 @@ class Error(RuntimeError):
57
57
  """
58
58
  ROBOT_SUPPRESS_NAME = True
59
59
 
60
- def __init__(self, message, html=False):
60
+ def __init__(self, message: str, html: bool = False):
61
61
  """
62
62
  :param message: Exception message.
63
63
  :param html: When ``True``, message is considered to be HTML and not escaped.
64
64
  """
65
- RuntimeError.__init__(self, message if not html else '*HTML* ' + message)
65
+ super().__init__(message if not html else '*HTML* ' + message)
66
66
 
67
67
 
68
68
  class FatalError(Error):
@@ -76,9 +76,9 @@ class SkipExecution(Exception):
76
76
  ROBOT_SKIP_EXECUTION = True
77
77
  ROBOT_SUPPRESS_NAME = True
78
78
 
79
- def __init__(self, message, html=False):
79
+ def __init__(self, message: str, html: bool = False):
80
80
  """
81
81
  :param message: Exception message.
82
82
  :param html: When ``True``, message is considered to be HTML and not escaped.
83
83
  """
84
- Exception.__init__(self, message if not html else '*HTML* ' + message)
84
+ super().__init__(message if not html else '*HTML* ' + message)