robotframework 6.1rc1__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.
- {robotframework-6.1rc1/src/robotframework.egg-info → robotframework-7.0a1}/PKG-INFO +3 -6
- {robotframework-6.1rc1 → robotframework-7.0a1}/setup.py +2 -5
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/interfaces.py +36 -49
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/parsing.py +4 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/conf/gatherfailed.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/conf/languages.py +61 -25
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/conf/settings.py +8 -5
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.css +4 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.html +9 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/model.js +2 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/testdata.js +10 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/template.py +3 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/builder.py +0 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/datatypes.py +9 -10
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlutils.py +4 -7
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonbuilder.py +14 -10
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/model.py +13 -25
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/robotbuilder.py +14 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlbuilder.py +8 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlwriter.py +12 -38
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/BuiltIn.py +215 -189
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Collections.py +2 -9
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/DateTime.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/OperatingSystem.py +4 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Process.py +26 -27
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Remote.py +40 -36
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/String.py +4 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/XML.py +7 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/__init__.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/dialogs_py.py +14 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/__init__.py +4 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/body.py +14 -6
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/configurer.py +19 -15
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/control.py +155 -85
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/filter.py +31 -25
- robotframework-7.0a1/src/robot/model/keyword.py +70 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/message.py +19 -10
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/modelobject.py +2 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/modifier.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/namepatterns.py +3 -25
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/stats.py +9 -15
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/tags.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/testcase.py +12 -21
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/testsuite.py +43 -24
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/visitor.py +35 -8
- robotframework-7.0a1/src/robot/output/console/dotted.py +90 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/console/quiet.py +3 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/console/verbose.py +60 -60
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/debugfile.py +36 -23
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/filelogger.py +16 -13
- robotframework-7.0a1/src/robot/output/listeners.py +586 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/logger.py +164 -77
- robotframework-7.0a1/src/robot/output/loggerapi.py +152 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/loggerhelper.py +23 -56
- robotframework-7.0a1/src/robot/output/output.py +158 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/stdoutlogsplitter.py +8 -5
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/xmllogger.py +163 -109
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/blocklexers.py +17 -13
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/context.py +12 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/lexer.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/settings.py +6 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/statementlexers.py +39 -10
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokens.py +27 -29
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/model/blocks.py +19 -6
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/model/statements.py +184 -84
- robotframework-7.0a1/src/robot/parsing/model/visitor.py +102 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/expandkeywordmatcher.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/jsbuildingcontext.py +8 -6
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/jsmodelbuilders.py +88 -61
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/stringcache.py +4 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/xunitwriter.py +15 -21
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/__init__.py +3 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/configurer.py +12 -9
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/flattenkeywordmatcher.py +8 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/keywordremover.py +71 -54
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/merger.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/model.py +400 -316
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/modeldeprecation.py +9 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/resultbuilder.py +21 -23
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/xmlelementhandlers.py +76 -40
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/run.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/__init__.py +1 -1
- robotframework-7.0a1/src/robot/running/arguments/argumentconverter.py +101 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/argumentmapper.py +16 -14
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/argumentparser.py +3 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/argumentresolver.py +41 -33
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/argumentspec.py +24 -90
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/argumentvalidator.py +34 -27
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/customconverters.py +14 -11
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/embedded.py +23 -26
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/typeconverters.py +210 -220
- robotframework-7.0a1/src/robot/running/arguments/typeinfo.py +367 -0
- robotframework-7.0a1/src/robot/running/arguments/typevalidator.py +62 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/bodyrunner.py +83 -68
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/builder/builders.py +15 -25
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/builder/parsers.py +15 -10
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/builder/settings.py +9 -17
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/builder/transformers.py +166 -308
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/context.py +80 -25
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/handlers.py +11 -16
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/handlerstore.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/librarykeywordrunner.py +9 -17
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/model.py +156 -36
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/namespace.py +18 -19
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/statusreporter.py +13 -12
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/suiterunner.py +18 -21
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/testlibraries.py +35 -39
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/usererrorhandler.py +8 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/userkeyword.py +13 -8
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/userkeywordrunner.py +18 -21
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/testdoc.py +18 -13
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/__init__.py +50 -35
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/connectioncache.py +64 -59
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/encodingsniffer.py +9 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/escaping.py +11 -9
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/markupwriters.py +20 -13
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/normalizing.py +9 -24
- robotframework-7.0a1/src/robot/utils/notset.py +33 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/platform.py +15 -5
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robotpath.py +1 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robottime.py +120 -88
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robottypes.py +16 -31
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/setter.py +0 -5
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/text.py +7 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/unic.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/__init__.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/assigner.py +17 -19
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/evaluation.py +20 -17
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/filesetter.py +80 -80
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/replacer.py +33 -36
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/scopes.py +3 -3
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/search.py +66 -41
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/store.py +14 -16
- robotframework-7.0a1/src/robot/variables/tablesetter.py +164 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/variables.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/version.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0a1/src/robotframework.egg-info}/PKG-INFO +3 -6
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robotframework.egg-info/SOURCES.txt +3 -4
- {robotframework-6.1rc1 → robotframework-7.0a1}/tasks.py +6 -6
- robotframework-6.1rc1/src/robot/libraries/Reserved.py +0 -48
- robotframework-6.1rc1/src/robot/model/keyword.py +0 -173
- robotframework-6.1rc1/src/robot/output/console/dotted.py +0 -90
- robotframework-6.1rc1/src/robot/output/listenerarguments.py +0 -165
- robotframework-6.1rc1/src/robot/output/listenermethods.py +0 -113
- robotframework-6.1rc1/src/robot/output/listeners.py +0 -174
- robotframework-6.1rc1/src/robot/output/output.py +0 -95
- robotframework-6.1rc1/src/robot/parsing/model/visitor.py +0 -67
- robotframework-6.1rc1/src/robot/running/arguments/argumentconverter.py +0 -79
- robotframework-6.1rc1/src/robot/running/arguments/typevalidator.py +0 -56
- robotframework-6.1rc1/src/robot/running/modelcombiner.py +0 -32
- robotframework-6.1rc1/src/robot/variables/tablesetter.py +0 -156
- {robotframework-6.1rc1 → robotframework-7.0a1}/AUTHORS.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/BUILD.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/CONTRIBUTING.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/COPYRIGHT.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/INSTALL.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/LICENSE.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/MANIFEST.in +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/README.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/setup.cfg +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/__main__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/deco.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/exceptions.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/api/logger.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/conf/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/errors.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/common/storage.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/htmlfilewriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.html +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/print.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/pygments.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/common.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.html +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/rebot/view.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdoc.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/standardtypes.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libdocpkg/writer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Easter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/fixture.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/itemlist.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/metadata.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/statistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/suitestatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/tagsetter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/tagstatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/model/totalstatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/console/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/console/highlighting.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/librarylogger.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/output/pyloggingconf.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/model/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/parser/blockparsers.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/rebot.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/logreportwriters.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/outputwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/reporting/resultwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/executionerrors.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/executionresult.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/messagefilter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/result/visitor.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/arguments/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/dynamicmethods.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/importer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/libraryscopes.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/outputcapture.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/randomizer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/runkwregister.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/signalhandler.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/status.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/application.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/asserts.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/charwidth.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/compress.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/dotdict.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/encoding.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/error.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/filereader.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/frange.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/importer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/markuputils.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/match.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/misc.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/recommendations.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/restreader.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robotenv.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/robotio.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/sortable.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/utils/typehints.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/finders.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/notfound.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robot/variables/resolvable.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0a1}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -47,12 +47,12 @@ class TypeDoc(Sortable):
|
|
|
47
47
|
return self.name.lower()
|
|
48
48
|
|
|
49
49
|
@classmethod
|
|
50
|
-
def for_type(cls,
|
|
51
|
-
if isinstance(
|
|
52
|
-
return cls.for_enum(
|
|
53
|
-
if isinstance(
|
|
54
|
-
return cls.for_typed_dict(
|
|
55
|
-
converter = TypeConverter.converter_for(
|
|
50
|
+
def for_type(cls, type_info, converters):
|
|
51
|
+
if isinstance(type_info.type, EnumType):
|
|
52
|
+
return cls.for_enum(type_info.type)
|
|
53
|
+
if isinstance(type_info.type, typeddict_types):
|
|
54
|
+
return cls.for_typed_dict(type_info.type)
|
|
55
|
+
converter = TypeConverter.converter_for(type_info, converters)
|
|
56
56
|
if not converter:
|
|
57
57
|
return None
|
|
58
58
|
elif not converter.type:
|
|
@@ -83,15 +83,14 @@ class TypeDoc(Sortable):
|
|
|
83
83
|
return cls(cls.TYPED_DICT, typed_dict.__name__, getdoc(typed_dict),
|
|
84
84
|
accepts=(str, 'Mapping'), items=items)
|
|
85
85
|
|
|
86
|
-
def to_dictionary(self
|
|
86
|
+
def to_dictionary(self):
|
|
87
87
|
data = {
|
|
88
88
|
'type': self.type,
|
|
89
89
|
'name': self.name,
|
|
90
90
|
'doc': self.doc,
|
|
91
|
+
'usages': self.usages,
|
|
92
|
+
'accepts': self.accepts
|
|
91
93
|
}
|
|
92
|
-
if not legacy:
|
|
93
|
-
data['usages'] = self.usages
|
|
94
|
-
data['accepts'] = self.accepts
|
|
95
94
|
if self.members is not None:
|
|
96
95
|
data['members'] = [m.to_dictionary() for m in self.members]
|
|
97
96
|
if self.items is not None:
|
|
@@ -14,10 +14,7 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
16
|
import re
|
|
17
|
-
|
|
18
|
-
from urllib import quote
|
|
19
|
-
except ImportError:
|
|
20
|
-
from urllib.parse import quote
|
|
17
|
+
from urllib.parse import quote
|
|
21
18
|
|
|
22
19
|
from robot.errors import DataError
|
|
23
20
|
from robot.utils import html_escape, html_format, NormalizedDict
|
|
@@ -97,10 +94,10 @@ class DocToHtml:
|
|
|
97
94
|
'HTML': lambda doc: doc,
|
|
98
95
|
'REST': self._format_rest}[doc_format]
|
|
99
96
|
except KeyError:
|
|
100
|
-
raise DataError("Invalid documentation format '
|
|
97
|
+
raise DataError(f"Invalid documentation format '{doc_format}'.")
|
|
101
98
|
|
|
102
99
|
def _format_text(self, doc):
|
|
103
|
-
return '<p style="white-space: pre-wrap"
|
|
100
|
+
return f'<p style="white-space: pre-wrap">{html_escape(doc)}</p>'
|
|
104
101
|
|
|
105
102
|
def _format_rest(self, doc):
|
|
106
103
|
try:
|
|
@@ -133,7 +130,7 @@ class HtmlToText:
|
|
|
133
130
|
''': "'"
|
|
134
131
|
}
|
|
135
132
|
|
|
136
|
-
def
|
|
133
|
+
def get_short_doc_from_html(self, doc):
|
|
137
134
|
match = re.search(r'<p.*?>(.*?)</?p>', doc, re.DOTALL)
|
|
138
135
|
if match:
|
|
139
136
|
doc = match.group(1)
|
|
@@ -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
|
-
|
|
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
|
|
86
|
+
if 'type' in arg: # RF >= 6.1
|
|
87
87
|
type_docs = {}
|
|
88
|
-
type_info = self.
|
|
89
|
-
else:
|
|
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 =
|
|
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
|
|
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
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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 '
|
|
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.
|
|
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':
|
|
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='',
|
|
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.
|
|
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
|
|
171
|
-
return self.
|
|
160
|
+
def short_doc(self):
|
|
161
|
+
return self._short_doc or self._doc_to_short_doc()
|
|
172
162
|
|
|
173
|
-
def
|
|
163
|
+
def _doc_to_short_doc(self):
|
|
174
164
|
if self.parent and self.parent.doc_format == 'HTML':
|
|
175
|
-
doc = HtmlToText().
|
|
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
|
-
@
|
|
181
|
-
def
|
|
182
|
-
self.
|
|
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.
|
|
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 (
|
|
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
|
|
|
@@ -61,7 +61,7 @@ class LibraryDocBuilder:
|
|
|
61
61
|
return lib.doc or f"Documentation for library ``{lib.name}``."
|
|
62
62
|
|
|
63
63
|
def _get_initializers(self, lib):
|
|
64
|
-
if lib.init.arguments
|
|
64
|
+
if lib.init.arguments:
|
|
65
65
|
return [KeywordDocBuilder().build_keyword(lib.init)]
|
|
66
66
|
return []
|
|
67
67
|
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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 =
|
|
112
|
-
|
|
113
|
-
return
|
|
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': '
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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):
|