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
@@ -16,7 +16,7 @@
16
16
  import json
17
17
  import os.path
18
18
 
19
- from robot.running import ArgInfo
19
+ from robot.running import ArgInfo, TypeInfo
20
20
  from robot.errors import DataError
21
21
 
22
22
  from .datatypes import EnumMember, TypedDictItem, TypeDoc
@@ -57,7 +57,7 @@ class JsonDocBuilder:
57
57
  def _create_keyword(self, data):
58
58
  kw = KeywordDoc(name=data.get('name'),
59
59
  doc=data['doc'],
60
- shortdoc=data['shortdoc'],
60
+ short_doc=data['shortdoc'],
61
61
  tags=data['tags'],
62
62
  private=data.get('private', False),
63
63
  deprecated=data.get('deprecated', False),
@@ -83,24 +83,28 @@ class JsonDocBuilder:
83
83
  default = arg.get('defaultValue')
84
84
  if default is not None:
85
85
  spec.defaults[name] = default
86
- if arg.get('type'):
86
+ if 'type' in arg: # RF >= 6.1
87
87
  type_docs = {}
88
- type_info = self._parse_modern_type_info(arg['type'], type_docs)
89
- else: # Compatibility with RF < 6.1.
88
+ type_info = self._parse_type_info(arg['type'], type_docs)
89
+ else: # RF < 6.1
90
90
  type_docs = arg.get('typedocs', {})
91
- type_info = tuple(arg['types'])
91
+ type_info = self._parse_legacy_type_info(arg['types'])
92
92
  if type_info:
93
93
  if not spec.types:
94
94
  spec.types = {}
95
95
  spec.types[name] = type_info
96
96
  kw.type_docs[name] = type_docs
97
97
 
98
- def _parse_modern_type_info(self, data, type_docs):
98
+ def _parse_type_info(self, data, type_docs):
99
+ if not data:
100
+ return None
99
101
  if data.get('typedoc'):
100
102
  type_docs[data['name']] = data['typedoc']
101
- return {'name': data['name'],
102
- 'nested': [self._parse_modern_type_info(nested, type_docs)
103
- for nested in data.get('nested', ())]}
103
+ nested = [self._parse_type_info(typ, type_docs) for typ in data.get('nested', ())]
104
+ return TypeInfo(data['name'], nested=nested)
105
+
106
+ def _parse_legacy_type_info(self, types):
107
+ return TypeInfo.from_sequence(types) if types else None
104
108
 
105
109
  def _parse_type_docs(self, type_docs):
106
110
  for data in type_docs:
@@ -97,9 +97,9 @@ class LibraryDoc:
97
97
  formatter = DocFormatter(self.keywords, self.type_docs, self.doc, self.doc_format)
98
98
  self._doc = formatter.html(self.doc, intro=True)
99
99
  for item in self.inits + self.keywords:
100
- # If 'shortdoc' is not set, it is generated automatically based on 'doc'
100
+ # If 'short_doc' is not set, it is generated automatically based on 'doc'
101
101
  # when accessed. Generate and set it to avoid HTML format affecting it.
102
- item.shortdoc = item.shortdoc
102
+ item.short_doc = item.short_doc
103
103
  item.doc = formatter.html(item.doc)
104
104
  for type_doc in self.type_docs:
105
105
  # Standard docs are always in ROBOT format ...
@@ -113,7 +113,7 @@ class LibraryDoc:
113
113
 
114
114
  def to_dictionary(self, include_private=False, theme=None):
115
115
  data = {
116
- 'specversion': 2,
116
+ 'specversion': 3,
117
117
  'name': self.name,
118
118
  'doc': self.doc,
119
119
  'version': self.version,
@@ -127,22 +127,12 @@ class LibraryDoc:
127
127
  'inits': [init.to_dictionary() for init in self.inits],
128
128
  'keywords': [kw.to_dictionary() for kw in self.keywords
129
129
  if include_private or not kw.private],
130
- # 'dataTypes' was deprecated in RF 5, 'typedoc' should be used instead.
131
- 'dataTypes': self._get_data_types(self.type_docs),
132
130
  'typedocs': [t.to_dictionary() for t in sorted(self.type_docs)]
133
131
  }
134
132
  if theme:
135
133
  data['theme'] = theme.lower()
136
134
  return data
137
135
 
138
- def _get_data_types(self, types):
139
- enums = sorted(t for t in types if t.type == 'Enum')
140
- typed_dicts = sorted(t for t in types if t.type == 'TypedDict')
141
- return {
142
- 'enums': [t.to_dictionary(legacy=True) for t in enums],
143
- 'typedDicts': [t.to_dictionary(legacy=True) for t in typed_dicts]
144
- }
145
-
146
136
  def to_json(self, indent=None, include_private=True, theme=None):
147
137
  data = self.to_dictionary(include_private, theme)
148
138
  return json.dumps(data, indent=indent)
@@ -151,12 +141,12 @@ class LibraryDoc:
151
141
  class KeywordDoc(Sortable):
152
142
  """Documentation for a single keyword or an initializer."""
153
143
 
154
- def __init__(self, name='', args=None, doc='', shortdoc='', tags=(), private=False,
144
+ def __init__(self, name='', args=None, doc='', short_doc='', tags=(), private=False,
155
145
  deprecated=False, source=None, lineno=-1, parent=None):
156
146
  self.name = name
157
147
  self.args = args or ArgumentSpec()
158
148
  self.doc = doc
159
- self._shortdoc = shortdoc
149
+ self._short_doc = short_doc
160
150
  self.tags = Tags(tags)
161
151
  self.private = private
162
152
  self.deprecated = deprecated
@@ -167,19 +157,19 @@ class KeywordDoc(Sortable):
167
157
  self.type_docs = {arg.name: {} for arg in self.args}
168
158
 
169
159
  @property
170
- def shortdoc(self):
171
- return self._shortdoc or self._doc_to_shortdoc()
160
+ def short_doc(self):
161
+ return self._short_doc or self._doc_to_short_doc()
172
162
 
173
- def _doc_to_shortdoc(self):
163
+ def _doc_to_short_doc(self):
174
164
  if self.parent and self.parent.doc_format == 'HTML':
175
- doc = HtmlToText().get_shortdoc_from_html(self.doc)
165
+ doc = HtmlToText().get_short_doc_from_html(self.doc)
176
166
  else:
177
167
  doc = self.doc
178
168
  return ' '.join(getshortdoc(doc).splitlines())
179
169
 
180
- @shortdoc.setter
181
- def shortdoc(self, shortdoc):
182
- self._shortdoc = shortdoc
170
+ @short_doc.setter
171
+ def short_doc(self, short_doc):
172
+ self._short_doc = short_doc
183
173
 
184
174
  @property
185
175
  def _sort_key(self):
@@ -190,7 +180,7 @@ class KeywordDoc(Sortable):
190
180
  'name': self.name,
191
181
  'args': [self._arg_to_dict(arg) for arg in self.args],
192
182
  'doc': self.doc,
193
- 'shortdoc': self.shortdoc,
183
+ 'shortdoc': self.short_doc,
194
184
  'tags': list(self.tags),
195
185
  'source': str(self.source) if self.source else None,
196
186
  'lineno': self.lineno
@@ -206,8 +196,6 @@ class KeywordDoc(Sortable):
206
196
  return {
207
197
  'name': arg.name,
208
198
  'type': self._type_to_dict(arg.type, type_docs),
209
- 'types': arg.types_reprs,
210
- 'typedocs': type_docs,
211
199
  'defaultValue': arg.default_repr,
212
200
  'kind': arg.kind,
213
201
  'required': arg.required,
@@ -18,8 +18,8 @@ import sys
18
18
  import re
19
19
 
20
20
  from robot.errors import DataError
21
- from robot.running import (ArgInfo, ResourceFileBuilder, TestLibrary, TestSuiteBuilder,
22
- TypeInfo, UserLibrary, UserErrorHandler)
21
+ from robot.running import (ArgumentSpec, ResourceFileBuilder, TestLibrary,
22
+ TestSuiteBuilder, TypeInfo, UserLibrary, UserErrorHandler)
23
23
  from robot.utils import is_string, split_tags_from_doc, unescape
24
24
  from robot.variables import search_variable
25
25
 
@@ -71,7 +71,7 @@ class LibraryDocBuilder:
71
71
  for arg in kw.args:
72
72
  kw.type_docs[arg.name] = {}
73
73
  for type_info in self._yield_type_info(arg.type):
74
- type_doc = TypeDoc.for_type(type_info.type, custom_converters)
74
+ type_doc = TypeDoc.for_type(type_info, custom_converters)
75
75
  if type_doc:
76
76
  kw.type_docs[arg.name][type_info.name] = type_doc.name
77
77
  type_docs.setdefault(type_doc, set()).add(kw.name)
@@ -149,6 +149,8 @@ class KeywordDocBuilder:
149
149
  doc, tags = self._get_doc_and_tags(kw)
150
150
  if not self._resource:
151
151
  self._escape_strings_in_defaults(kw.arguments.defaults)
152
+ if kw.arguments.embedded:
153
+ self._remove_embedded(kw.arguments)
152
154
  return KeywordDoc(name=kw.name,
153
155
  args=kw.arguments,
154
156
  doc=doc,
@@ -185,3 +187,11 @@ class KeywordDocBuilder:
185
187
  if self._resource and not isinstance(kw, UserErrorHandler):
186
188
  return unescape(kw.doc)
187
189
  return kw.doc
190
+
191
+ def _remove_embedded(self, spec: ArgumentSpec):
192
+ embedded = len(spec.embedded)
193
+ pos_only = len(spec.positional_only)
194
+ spec.positional_only[:embedded] = []
195
+ if embedded > pos_only:
196
+ spec.positional_or_named[:embedded-pos_only] = []
197
+ spec.embedded = ()
@@ -16,7 +16,7 @@
16
16
  import os.path
17
17
 
18
18
  from robot.errors import DataError
19
- from robot.running import ArgInfo
19
+ from robot.running import ArgInfo, TypeInfo
20
20
  from robot.utils import ET, ETSource
21
21
 
22
22
  from .datatypes import EnumMember, TypedDictItem, TypeDoc
@@ -52,9 +52,9 @@ class XmlDocBuilder:
52
52
  if root.tag != 'keywordspec':
53
53
  raise DataError(f"Invalid spec file '{path}'.")
54
54
  version = root.get('specversion')
55
- if version not in ('3', '4', '5'):
55
+ if version not in ('3', '4', '5', '6'):
56
56
  raise DataError(f"Invalid spec file version '{version}'. "
57
- f"Supported versions are 3, 4 and 5.")
57
+ f"Supported versions are 3, 4, 5, and 6.")
58
58
  return root
59
59
 
60
60
  def _create_keywords(self, spec, path, lib_source):
@@ -63,7 +63,7 @@ class XmlDocBuilder:
63
63
  def _create_keyword(self, elem, lib_source):
64
64
  kw = KeywordDoc(name=elem.get('name', ''),
65
65
  doc=elem.find('doc').text or '',
66
- shortdoc=elem.find('shortdoc').text or '',
66
+ short_doc=elem.find('shortdoc').text or '',
67
67
  tags=[t.text for t in elem.findall('tags/tag')],
68
68
  private=elem.get('private', 'false') == 'true',
69
69
  deprecated=elem.get('deprecated', 'false') == 'true',
@@ -108,9 +108,9 @@ class XmlDocBuilder:
108
108
  name = type_elem.get('name')
109
109
  if type_elem.get('typedoc'):
110
110
  type_docs[name] = type_elem.get('typedoc')
111
- nested = tuple(self._parse_modern_type_info(child, type_docs)
112
- for child in type_elem.findall('type'))
113
- return {'name': name, 'nested': nested}
111
+ nested = [self._parse_modern_type_info(child, type_docs)
112
+ for child in type_elem.findall('type')]
113
+ return TypeInfo(name, nested=nested)
114
114
 
115
115
  def _parse_legacy_type_info(self, type_elems, type_docs):
116
116
  types = []
@@ -119,7 +119,7 @@ class XmlDocBuilder:
119
119
  types.append(name)
120
120
  if elem.get('typedoc'):
121
121
  type_docs[name] = elem.get('typedoc')
122
- return types
122
+ return TypeInfo.from_sequence(types) if types else None
123
123
 
124
124
  def _parse_type_docs(self, spec):
125
125
  for elem in spec.findall('typedocs/type'):
@@ -14,7 +14,7 @@
14
14
  # limitations under the License.
15
15
 
16
16
  from robot.running import TypeInfo
17
- from robot.utils import XmlWriter
17
+ from robot.utils import NOT_SET, XmlWriter
18
18
 
19
19
  from .output import get_generation_time
20
20
 
@@ -26,9 +26,6 @@ class LibdocXmlWriter:
26
26
  self._write_start(libdoc, writer)
27
27
  self._write_keywords('inits', 'init', libdoc.inits, libdoc.source, writer)
28
28
  self._write_keywords('keywords', 'kw', libdoc.keywords, libdoc.source, writer)
29
- # Write deprecated '<datatypes>' element.
30
- self._write_data_types(libdoc.type_docs, writer)
31
- # Write new '<types>' element.
32
29
  self._write_type_docs(libdoc.type_docs, writer)
33
30
  self._write_end(writer)
34
31
 
@@ -38,7 +35,7 @@ class LibdocXmlWriter:
38
35
  'format': libdoc.doc_format,
39
36
  'scope': libdoc.scope,
40
37
  'generated': get_generation_time(),
41
- 'specversion': '5'}
38
+ 'specversion': '6'}
42
39
  self._add_source_info(attrs, libdoc)
43
40
  writer.start('keywordspec', attrs)
44
41
  writer.element('version', libdoc.version)
@@ -58,7 +55,7 @@ class LibdocXmlWriter:
58
55
  writer.start(kw_type, attrs)
59
56
  self._write_arguments(kw, writer)
60
57
  writer.element('doc', kw.doc)
61
- writer.element('shortdoc', kw.shortdoc)
58
+ writer.element('shortdoc', kw.short_doc)
62
59
  if kw_type == 'kw' and kw.tags:
63
60
  self._write_tags(kw.tags, writer)
64
61
  writer.end(kw_type)
@@ -80,24 +77,24 @@ class LibdocXmlWriter:
80
77
  writer.element('name', arg.name)
81
78
  if arg.type:
82
79
  self._write_type_info(arg.type, kw.type_docs[arg.name], writer)
83
- if arg.default is not arg.NOTSET:
80
+ if arg.default is not NOT_SET:
84
81
  writer.element('default', arg.default_repr)
85
82
  writer.end('arg')
86
83
  writer.end('arguments')
87
84
 
88
- def _write_type_info(self, type_info: TypeInfo, type_docs: dict, writer, top=True):
85
+ def _write_type_info(self, type_info: TypeInfo, type_docs: dict, writer):
89
86
  attrs = {'name': type_info.name}
90
87
  if type_info.is_union:
91
88
  attrs['union'] = 'true'
92
89
  if type_info.name in type_docs:
93
90
  attrs['typedoc'] = type_docs[type_info.name]
94
- # Writing content, and omitting newlines, is backwards compatibility with
95
- # specs created using RF < 6.1. TODO: Remove in RF 7.
96
- writer.start('type', attrs, newline=False)
97
- writer.content(str(type_info))
98
- for nested in type_info.nested:
99
- self._write_type_info(nested, type_docs, writer, top=False)
100
- writer.end('type', newline=top)
91
+ if type_info.nested:
92
+ writer.start('type', attrs)
93
+ for nested in type_info.nested:
94
+ self._write_type_info(nested, type_docs, writer)
95
+ writer.end('type')
96
+ else:
97
+ writer.element('type', attrs=attrs)
101
98
 
102
99
  def _get_start_attrs(self, kw, lib_source):
103
100
  attrs = {'name': kw.name}
@@ -108,29 +105,6 @@ class LibdocXmlWriter:
108
105
  self._add_source_info(attrs, kw, lib_source)
109
106
  return attrs
110
107
 
111
- # Write legacy 'datatypes'. TODO: Remove in RF 7.
112
- def _write_data_types(self, types, writer):
113
- enums = sorted(t for t in types if t.type == 'Enum')
114
- typed_dicts = sorted(t for t in types if t.type == 'TypedDict')
115
- writer.start('datatypes')
116
- if enums:
117
- writer.start('enums')
118
- for enum in enums:
119
- writer.start('enum', {'name': enum.name})
120
- writer.element('doc', enum.doc)
121
- self._write_enum_members(enum, writer)
122
- writer.end('enum')
123
- writer.end('enums')
124
- if typed_dicts:
125
- writer.start('typeddicts')
126
- for typ_dict in typed_dicts:
127
- writer.start('typeddict', {'name': typ_dict.name})
128
- writer.element('doc', typ_dict.doc)
129
- self._write_typed_dict_items(typ_dict, writer)
130
- writer.end('typeddict')
131
- writer.end('typeddicts')
132
- writer.end('datatypes')
133
-
134
108
  def _write_type_docs(self, type_docs, writer):
135
109
  writer.start('typedocs')
136
110
  for doc in sorted(type_docs):