robotframework 6.1rc1__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.
- {robotframework-6.1rc1 → robotframework-7.0}/INSTALL.rst +25 -25
- {robotframework-6.1rc1 → robotframework-7.0}/PKG-INFO +6 -8
- {robotframework-6.1rc1 → robotframework-7.0}/README.rst +3 -2
- {robotframework-6.1rc1 → robotframework-7.0}/setup.py +3 -6
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/__init__.py +4 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/deco.py +60 -14
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/exceptions.py +6 -6
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/interfaces.py +403 -68
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/logger.py +27 -20
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/api/parsing.py +4 -2
- robotframework-7.0/src/robot/api/py.typed +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/conf/gatherfailed.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/conf/languages.py +61 -25
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/conf/settings.py +21 -14
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/common/storage.js +11 -6
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/htmlfilewriter.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.css +10 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.html +10 -0
- robotframework-7.0/src/robot/htmldata/rebot/common.css +362 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/doc_formatting.css +13 -7
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/log.css +51 -10
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/log.html +14 -23
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/model.js +2 -4
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/report.css +83 -19
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/report.html +22 -7
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/testdata.js +10 -3
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/view.js +84 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/template.py +3 -3
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/builder.py +0 -8
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/datatypes.py +9 -10
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/htmlutils.py +4 -7
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/jsonbuilder.py +38 -20
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/model.py +21 -28
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/robotbuilder.py +50 -31
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/standardtypes.py +9 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/xmlbuilder.py +35 -20
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/xmlwriter.py +18 -38
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/BuiltIn.py +255 -205
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Collections.py +384 -240
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/DateTime.py +73 -60
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/OperatingSystem.py +6 -5
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Process.py +26 -27
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Remote.py +40 -36
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/String.py +66 -76
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/XML.py +66 -59
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/__init__.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/dialogs_py.py +14 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/__init__.py +5 -5
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/body.py +44 -13
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/configurer.py +19 -15
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/control.py +230 -88
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/filter.py +31 -25
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/itemlist.py +9 -8
- robotframework-7.0/src/robot/model/keyword.py +77 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/message.py +19 -10
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/modelobject.py +27 -15
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/modifier.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/namepatterns.py +3 -25
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/stats.py +9 -15
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/tags.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/testcase.py +15 -27
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/testsuite.py +44 -28
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/visitor.py +35 -8
- robotframework-7.0/src/robot/output/console/dotted.py +90 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/console/quiet.py +3 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/console/verbose.py +61 -61
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/debugfile.py +39 -24
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/filelogger.py +18 -15
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/librarylogger.py +3 -2
- robotframework-7.0/src/robot/output/listeners.py +753 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/logger.py +216 -80
- robotframework-7.0/src/robot/output/loggerapi.py +215 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/loggerhelper.py +23 -56
- robotframework-7.0/src/robot/output/output.py +185 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/stdoutlogsplitter.py +8 -5
- robotframework-7.0/src/robot/output/xmllogger.py +459 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/blocklexers.py +17 -13
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/context.py +12 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/lexer.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/settings.py +6 -3
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/statementlexers.py +39 -10
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/tokens.py +27 -29
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/model/blocks.py +19 -6
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/model/statements.py +193 -94
- robotframework-7.0/src/robot/parsing/model/visitor.py +100 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/rebot.py +2 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/expandkeywordmatcher.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/jsbuildingcontext.py +8 -6
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/jsmodelbuilders.py +88 -61
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/logreportwriters.py +16 -10
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/outputwriter.py +18 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/resultwriter.py +4 -4
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/stringcache.py +3 -3
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/xunitwriter.py +15 -21
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/__init__.py +3 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/configurer.py +12 -9
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/executionresult.py +56 -8
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/flattenkeywordmatcher.py +48 -9
- robotframework-7.0/src/robot/result/keywordremover.py +207 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/merger.py +1 -1
- robotframework-7.0/src/robot/result/model.py +1185 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/modeldeprecation.py +9 -3
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/resultbuilder.py +46 -36
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/xmlelementhandlers.py +83 -43
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/run.py +3 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/__init__.py +14 -4
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/__init__.py +2 -1
- robotframework-7.0/src/robot/running/arguments/argumentconverter.py +100 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/argumentmapper.py +26 -24
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/argumentparser.py +85 -61
- robotframework-7.0/src/robot/running/arguments/argumentresolver.py +158 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/argumentspec.py +83 -116
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/argumentvalidator.py +33 -27
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/customconverters.py +15 -12
- robotframework-7.0/src/robot/running/arguments/embedded.py +145 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/arguments/typeconverters.py +268 -220
- robotframework-7.0/src/robot/running/arguments/typeinfo.py +317 -0
- robotframework-7.0/src/robot/running/arguments/typeinfoparser.py +219 -0
- robotframework-7.0/src/robot/running/arguments/typevalidator.py +60 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/bodyrunner.py +147 -129
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/builder/builders.py +17 -26
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/builder/parsers.py +17 -11
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/builder/settings.py +9 -17
- robotframework-7.0/src/robot/running/builder/transformers.py +535 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/context.py +113 -31
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/dynamicmethods.py +62 -34
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/importer.py +27 -49
- robotframework-7.0/src/robot/running/invalidkeyword.py +67 -0
- robotframework-7.0/src/robot/running/keywordfinder.py +91 -0
- robotframework-7.0/src/robot/running/keywordimplementation.py +164 -0
- robotframework-7.0/src/robot/running/librarykeyword.py +392 -0
- robotframework-7.0/src/robot/running/librarykeywordrunner.py +250 -0
- robotframework-7.0/src/robot/running/libraryscopes.py +115 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/model.py +198 -337
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/namespace.py +124 -137
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/outputcapture.py +20 -12
- robotframework-7.0/src/robot/running/resourcemodel.py +448 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/statusreporter.py +16 -13
- robotframework-7.0/src/robot/running/suiterunner.py +265 -0
- robotframework-7.0/src/robot/running/testlibraries.py +500 -0
- robotframework-7.0/src/robot/running/userkeywordrunner.py +260 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/testdoc.py +18 -13
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/__init__.py +53 -35
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/connectioncache.py +64 -59
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/dotdict.py +3 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/encodingsniffer.py +9 -4
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/escaping.py +19 -19
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/importer.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/markupwriters.py +23 -15
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/misc.py +1 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/normalizing.py +9 -24
- robotframework-7.0/src/robot/utils/notset.py +33 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/platform.py +15 -5
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robotio.py +9 -9
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robotpath.py +1 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robottime.py +122 -90
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robottypes.py +21 -31
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/setter.py +0 -5
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/text.py +7 -4
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/unic.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/__init__.py +2 -2
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/assigner.py +17 -19
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/evaluation.py +20 -17
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/filesetter.py +80 -80
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/replacer.py +33 -36
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/scopes.py +17 -12
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/search.py +66 -41
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/store.py +14 -16
- robotframework-7.0/src/robot/variables/tablesetter.py +164 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/variables.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/version.py +1 -1
- {robotframework-6.1rc1 → robotframework-7.0}/src/robotframework.egg-info/PKG-INFO +6 -8
- {robotframework-6.1rc1 → robotframework-7.0}/src/robotframework.egg-info/SOURCES.txt +10 -8
- {robotframework-6.1rc1 → robotframework-7.0}/tasks.py +6 -6
- robotframework-6.1rc1/src/robot/htmldata/rebot/common.css +0 -239
- 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/output/xmllogger.py +0 -354
- robotframework-6.1rc1/src/robot/parsing/model/visitor.py +0 -67
- robotframework-6.1rc1/src/robot/result/keywordremover.py +0 -183
- robotframework-6.1rc1/src/robot/result/model.py +0 -957
- robotframework-6.1rc1/src/robot/running/arguments/argumentconverter.py +0 -79
- robotframework-6.1rc1/src/robot/running/arguments/argumentresolver.py +0 -131
- robotframework-6.1rc1/src/robot/running/arguments/embedded.py +0 -146
- robotframework-6.1rc1/src/robot/running/arguments/typevalidator.py +0 -56
- robotframework-6.1rc1/src/robot/running/builder/transformers.py +0 -642
- robotframework-6.1rc1/src/robot/running/handlers.py +0 -321
- robotframework-6.1rc1/src/robot/running/handlerstore.py +0 -66
- robotframework-6.1rc1/src/robot/running/librarykeywordrunner.py +0 -238
- robotframework-6.1rc1/src/robot/running/libraryscopes.py +0 -97
- robotframework-6.1rc1/src/robot/running/modelcombiner.py +0 -32
- robotframework-6.1rc1/src/robot/running/suiterunner.py +0 -249
- robotframework-6.1rc1/src/robot/running/testlibraries.py +0 -420
- robotframework-6.1rc1/src/robot/running/usererrorhandler.py +0 -75
- robotframework-6.1rc1/src/robot/running/userkeyword.py +0 -111
- robotframework-6.1rc1/src/robot/running/userkeywordrunner.py +0 -274
- robotframework-6.1rc1/src/robot/variables/tablesetter.py +0 -156
- {robotframework-6.1rc1 → robotframework-7.0}/AUTHORS.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/BUILD.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/CONTRIBUTING.rst +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/COPYRIGHT.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/LICENSE.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/MANIFEST.in +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/setup.cfg +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/__main__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/conf/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/errors.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/print.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/libdoc/pygments.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdoc.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/htmlwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libdocpkg/writer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Easter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/fixture.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/metadata.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/statistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/suitestatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/tagsetter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/tagstatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/model/totalstatistics.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/console/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/console/highlighting.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/output/pyloggingconf.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/model/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/parser/blockparsers.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/executionerrors.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/messagefilter.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/result/visitor.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/randomizer.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/runkwregister.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/signalhandler.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/status.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/application.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/asserts.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/charwidth.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/compress.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/encoding.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/error.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/filereader.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/frange.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/markuputils.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/match.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/recommendations.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/restreader.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robotenv.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/sortable.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/utils/typehints.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/finders.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/notfound.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robot/variables/resolvable.py +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-6.1rc1 → robotframework-7.0}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -1,25 +1,42 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--col-toggle-color: #6c6c6c; /* same as in sort icon */
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
@media (prefers-color-scheme: dark) {
|
|
6
|
+
:root {
|
|
7
|
+
--col-toggle-color: #adadad;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
1
10
|
/* Generic table styles */
|
|
2
11
|
table {
|
|
3
12
|
margin: 0 1px;
|
|
4
|
-
background: white;
|
|
13
|
+
background: white; /* Fallback value */
|
|
14
|
+
background: var(--background-color);
|
|
5
15
|
}
|
|
6
16
|
tr {
|
|
7
|
-
background: white;
|
|
17
|
+
background: white; /* Fallback value */
|
|
18
|
+
background: var(--background-color);
|
|
8
19
|
}
|
|
9
20
|
th {
|
|
10
|
-
background: #ddd;
|
|
11
|
-
|
|
21
|
+
background: #ddd; /* Fallback value */
|
|
22
|
+
background: var(--primary-color);
|
|
23
|
+
color: black; /* Fallback value */
|
|
24
|
+
color: var(--text-color);
|
|
12
25
|
}
|
|
13
26
|
/* Summary and total/tag/suite details */
|
|
14
27
|
.details {
|
|
15
|
-
border:
|
|
28
|
+
border-color: #ccc; /* Fallback value */
|
|
29
|
+
border-color: var(--secondary-color);
|
|
30
|
+
border-width: 1px;
|
|
31
|
+
border-style: solid;
|
|
16
32
|
border-spacing: 0.2em;
|
|
17
33
|
clear: both;
|
|
18
34
|
width: 65em;
|
|
19
35
|
margin-bottom: 1em;
|
|
20
36
|
}
|
|
21
37
|
.details th {
|
|
22
|
-
background: white;
|
|
38
|
+
background: white; /* Fallback value */
|
|
39
|
+
background: var(--background-color);
|
|
23
40
|
width: 11em;
|
|
24
41
|
text-align: left;
|
|
25
42
|
vertical-align: top;
|
|
@@ -46,8 +63,30 @@ th {
|
|
|
46
63
|
display: none;
|
|
47
64
|
}
|
|
48
65
|
/* Search */
|
|
66
|
+
input[type='submit'], input[type='button'] {
|
|
67
|
+
background-color: #ddd; /* Fallback value */
|
|
68
|
+
background-color: var(--primary-color);
|
|
69
|
+
border-radius: 4px;
|
|
70
|
+
border: 0;
|
|
71
|
+
padding: 4px 6px 4px 6px;
|
|
72
|
+
color: black; /* Fallback value */
|
|
73
|
+
color: var(--text-color);
|
|
74
|
+
}
|
|
75
|
+
input[type='submit']:hover, input[type='button']:hover {
|
|
76
|
+
background-color: #ccc; /* Fallback value */
|
|
77
|
+
background-color: var(--secondary-color);
|
|
78
|
+
}
|
|
49
79
|
#search-suite, #search-test, #search-include, #search-exclude {
|
|
50
80
|
width: 25em;
|
|
81
|
+
background-color: white; /* Fallback value */
|
|
82
|
+
background-color: var(--background-color);
|
|
83
|
+
border-color: #ccc; /* Fallback value */
|
|
84
|
+
border-color: var(--secondary-color);
|
|
85
|
+
border-width: 2px;
|
|
86
|
+
border-style: solid;
|
|
87
|
+
border-radius: 2px;
|
|
88
|
+
color: black; /* Fallback value */
|
|
89
|
+
color: var(--text-color);
|
|
51
90
|
}
|
|
52
91
|
#search a:hover {
|
|
53
92
|
text-decoration: none;
|
|
@@ -55,8 +94,12 @@ th {
|
|
|
55
94
|
#search-help div {
|
|
56
95
|
margin: 0.5em 0.5em 0.7em 0;
|
|
57
96
|
padding: 0.7em;
|
|
58
|
-
background: #eee;
|
|
59
|
-
|
|
97
|
+
background: #eee; /* Fallback value */
|
|
98
|
+
background: var(--highlight-color);
|
|
99
|
+
border-color: #ccc; /* Fallback value */
|
|
100
|
+
border-color: var(--secondary-color);
|
|
101
|
+
border-width: 1px;
|
|
102
|
+
border-style: solid;
|
|
60
103
|
border-radius: 3px;
|
|
61
104
|
}
|
|
62
105
|
#search-help h3, #search-help p {
|
|
@@ -91,18 +134,24 @@ th {
|
|
|
91
134
|
}
|
|
92
135
|
.detail-tab {
|
|
93
136
|
float: left;
|
|
94
|
-
background: #ddd;
|
|
95
|
-
|
|
137
|
+
background: #ddd; /* Fallback value */
|
|
138
|
+
background: var(--primary-color);
|
|
139
|
+
border-color: #ccc; /* Fallback value */
|
|
140
|
+
border-color: var(--secondary-color);
|
|
141
|
+
border-width: 1px;
|
|
142
|
+
border-style: solid;
|
|
96
143
|
border-bottom-width: 0;
|
|
97
144
|
margin: 0 0.5em 0 0;
|
|
98
145
|
padding-top: 0.1em;
|
|
99
146
|
border-radius: 3px 3px 0 0;
|
|
100
147
|
}
|
|
101
148
|
.detail-tab:hover {
|
|
102
|
-
background: #ccc;
|
|
149
|
+
background: #ccc; /* Fallback value */
|
|
150
|
+
background: var(--secondary-color);
|
|
103
151
|
}
|
|
104
152
|
.detail-tab a {
|
|
105
|
-
color: black;
|
|
153
|
+
color: black; /* Fallback value */
|
|
154
|
+
color: var(--text-color);
|
|
106
155
|
text-decoration: none;
|
|
107
156
|
font-weight: bold;
|
|
108
157
|
padding: 0 1em;
|
|
@@ -110,19 +159,23 @@ th {
|
|
|
110
159
|
.detail-tab-selected {
|
|
111
160
|
position: relative;
|
|
112
161
|
top: 1px;
|
|
113
|
-
background: white;
|
|
162
|
+
background: white; /* Fallback value */
|
|
163
|
+
background: var(--background-color);
|
|
114
164
|
}
|
|
115
165
|
.detail-tab-selected:hover {
|
|
116
|
-
background: white;
|
|
166
|
+
background: white; /* Fallback value */
|
|
167
|
+
background: var(--background-color);
|
|
117
168
|
}
|
|
118
169
|
/* Test details table */
|
|
119
170
|
#test-details {
|
|
120
171
|
width: 100%;
|
|
121
172
|
border-spacing: 1px;
|
|
122
|
-
background-color: #ccc;
|
|
173
|
+
background-color: #ccc; /* Fallback value */
|
|
174
|
+
background-color: var(--secondary-color);
|
|
123
175
|
}
|
|
124
176
|
#test-details > tbody > tr:hover {
|
|
125
|
-
background: #
|
|
177
|
+
background: #eee; /* Fallback value */
|
|
178
|
+
background: var(--highlight-color);
|
|
126
179
|
cursor: pointer;
|
|
127
180
|
}
|
|
128
181
|
#test-details th, #test-details td {
|
|
@@ -137,11 +190,13 @@ th {
|
|
|
137
190
|
}
|
|
138
191
|
.details-col-toggle {
|
|
139
192
|
float: left;
|
|
140
|
-
color: #6c6c6c; /*
|
|
193
|
+
color: #6c6c6c; /* Fallback value */
|
|
194
|
+
color: var(--col-toggle-color);
|
|
141
195
|
cursor: pointer;
|
|
142
196
|
}
|
|
143
197
|
.details-col-toggle:hover {
|
|
144
|
-
color: black;
|
|
198
|
+
color: black; /* Fallback value */
|
|
199
|
+
color: var(--text-color);
|
|
145
200
|
}
|
|
146
201
|
.details-col-name {
|
|
147
202
|
min-width: 20em;
|
|
@@ -182,5 +237,14 @@ th {
|
|
|
182
237
|
background-image: none;
|
|
183
238
|
}
|
|
184
239
|
th.hidden:hover {
|
|
185
|
-
background-color: #
|
|
240
|
+
background-color: #ddd; /* Fallback value */
|
|
241
|
+
background-color: var(--primary-color);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
#status-bar {
|
|
245
|
+
height: 100%;
|
|
246
|
+
width: 10px;
|
|
247
|
+
position: fixed;
|
|
248
|
+
top: 0;
|
|
249
|
+
left: 0;
|
|
186
250
|
}
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<!-- JS MODEL --><script type="text/javascript" src="../testdata/data.js"></script>
|
|
26
26
|
<title></title>
|
|
27
27
|
</head>
|
|
28
|
-
<body>
|
|
28
|
+
<body data-theme="dark">
|
|
29
29
|
<div id="javascript-disabled">
|
|
30
30
|
<h1>Opening Robot Framework report failed</h1>
|
|
31
31
|
<ul>
|
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
</ul>
|
|
36
36
|
</div>
|
|
37
37
|
<script type="text/javascript">removeJavaScriptDisabledWarning();</script>
|
|
38
|
-
|
|
38
|
+
<div id="status-bar"></div>
|
|
39
39
|
<div id="header"></div>
|
|
40
40
|
<div id="statistics-container"></div>
|
|
41
41
|
<div id="test-details-container"></div>
|
|
42
42
|
|
|
43
43
|
<script type="text/javascript">
|
|
44
44
|
$(document).ready(function () {
|
|
45
|
+
storage.init();
|
|
46
|
+
theme.init(storage);
|
|
45
47
|
try {
|
|
46
48
|
var topsuite = window.testdata.suite();
|
|
47
49
|
} catch (error) {
|
|
@@ -49,24 +51,37 @@ $(document).ready(function () {
|
|
|
49
51
|
return;
|
|
50
52
|
}
|
|
51
53
|
window.prevLocationHash = '';
|
|
52
|
-
setBackground(topsuite);
|
|
53
54
|
initLayout(topsuite.name, 'Report');
|
|
54
|
-
|
|
55
|
+
setStatusColor(topsuite);
|
|
55
56
|
addSummary(topsuite);
|
|
56
57
|
addStatistics();
|
|
57
58
|
addDetails();
|
|
58
59
|
window.onhashchange = showDetailsByHash;
|
|
60
|
+
document.addEventListener("theme-change", () => {
|
|
61
|
+
setStatusColor(topsuite);
|
|
62
|
+
});
|
|
59
63
|
});
|
|
60
64
|
|
|
61
|
-
function
|
|
65
|
+
function setStatusColor(topsuite) {
|
|
62
66
|
var color;
|
|
63
|
-
|
|
67
|
+
let fail = Boolean(topsuite.fail);
|
|
68
|
+
let pass = Boolean(!topsuite.fail && topsuite.pass);
|
|
69
|
+
let skip = Boolean(!topsuite.fail && !topsuite.pass);
|
|
70
|
+
if (theme.getPreference() === 'dark') {
|
|
71
|
+
$('#status-bar').toggleClass("fail-bar", fail);
|
|
72
|
+
$('#status-bar').toggleClass("pass-bar", pass);
|
|
73
|
+
$('#status-bar').toggleClass("skip-bar", skip);
|
|
74
|
+
$('body').css('background-color', "#1c2227");
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (fail)
|
|
64
78
|
color = window.settings.background.fail;
|
|
65
|
-
else if (
|
|
79
|
+
else if (pass)
|
|
66
80
|
color = window.settings.background.pass;
|
|
67
81
|
else
|
|
68
82
|
color = window.settings.background.skip;
|
|
69
83
|
$('body').css('background-color', color);
|
|
84
|
+
$('#status-bar').toggleClass("fail-bar pass-bar skip-bar", false);
|
|
70
85
|
}
|
|
71
86
|
|
|
72
87
|
function addSummary(topsuite) {
|
|
@@ -5,8 +5,9 @@ window.testdata = function () {
|
|
|
5
5
|
var _statistics = null;
|
|
6
6
|
var LEVELS = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FAIL', 'SKIP'];
|
|
7
7
|
var STATUSES = ['FAIL', 'PASS', 'SKIP', 'NOT RUN'];
|
|
8
|
-
var KEYWORD_TYPES = ['KEYWORD', 'SETUP', 'TEARDOWN', 'FOR', 'ITERATION', 'IF',
|
|
9
|
-
'
|
|
8
|
+
var KEYWORD_TYPES = ['KEYWORD', 'SETUP', 'TEARDOWN', 'FOR', 'ITERATION', 'IF',
|
|
9
|
+
'ELSE IF', 'ELSE', 'RETURN', 'VAR', 'TRY', 'EXCEPT', 'FINALLY',
|
|
10
|
+
'WHILE', 'CONTINUE', 'BREAK', 'ERROR'];
|
|
10
11
|
|
|
11
12
|
function addElement(elem) {
|
|
12
13
|
if (!elem.id)
|
|
@@ -57,6 +58,7 @@ window.testdata = function () {
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
function createKeyword(parent, element, strings, index) {
|
|
61
|
+
var status = element[8];
|
|
60
62
|
var kw = model.Keyword({
|
|
61
63
|
parent: parent,
|
|
62
64
|
type: KEYWORD_TYPES[element[0]],
|
|
@@ -72,7 +74,12 @@ window.testdata = function () {
|
|
|
72
74
|
this.doc = function () { return doc; };
|
|
73
75
|
return doc;
|
|
74
76
|
},
|
|
75
|
-
status: parseStatus(
|
|
77
|
+
status: parseStatus(status),
|
|
78
|
+
message: function () {
|
|
79
|
+
var msg = status.length == 4 ? strings.get(status[3]) : '';
|
|
80
|
+
this.message = function () { return msg; };
|
|
81
|
+
return msg;
|
|
82
|
+
},
|
|
76
83
|
times: model.Times(times(element[8])),
|
|
77
84
|
isChildrenLoaded: typeof(element[9]) !== 'number'
|
|
78
85
|
});
|
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
const lightModeIcon = `
|
|
2
|
+
<svg class="light-mode-icon" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24"
|
|
3
|
+
viewBox="0 0 24 24" fill="var(--text-color)">
|
|
4
|
+
<rect fill="none" height="24" width="24" />
|
|
5
|
+
<path
|
|
6
|
+
d="M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0 c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2 c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1 C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06 c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41 l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41 c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36 c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z" />
|
|
7
|
+
</svg>`
|
|
8
|
+
|
|
9
|
+
const darkModeIcon = `
|
|
10
|
+
<svg class="dark-mode-icon" xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24"
|
|
11
|
+
viewBox="0 0 24 24" fill="var(--text-color)">
|
|
12
|
+
<rect fill="none" height="24" width="24" />
|
|
13
|
+
<path
|
|
14
|
+
d="M11.01,3.05C6.51,3.54,3,7.36,3,12c0,4.97,4.03,9,9,9c4.63,0,8.45-3.5,8.95-8c0.09-0.79-0.78-1.42-1.54-0.95 c-0.84,0.54-1.84,0.85-2.91,0.85c-2.98,0-5.4-2.42-5.4-5.4c0-1.06,0.31-2.06,0.84-2.89C12.39,3.94,11.9,2.98,11.01,3.05z" />
|
|
15
|
+
</svg>`
|
|
16
|
+
|
|
17
|
+
|
|
1
18
|
function removeJavaScriptDisabledWarning() {
|
|
2
19
|
// Not using jQuery here for maximum speed
|
|
3
20
|
document.getElementById('javascript-disabled').style.display = 'none';
|
|
@@ -39,6 +56,10 @@ function setTitle(suiteName, type) {
|
|
|
39
56
|
function addHeader() {
|
|
40
57
|
var generated = util.timestamp(window.output.generated);
|
|
41
58
|
$.tmpl('<h1>${title}</h1>' +
|
|
59
|
+
'<button id=theme-toggle>' +
|
|
60
|
+
lightModeIcon +
|
|
61
|
+
darkModeIcon +
|
|
62
|
+
'</button>' +
|
|
42
63
|
'<div id="generated">' +
|
|
43
64
|
'<span>Generated<br>${generated}</span><br>' +
|
|
44
65
|
'<span id="generated-ago">${ago} ago</span>' +
|
|
@@ -50,6 +71,7 @@ function addHeader() {
|
|
|
50
71
|
ago: util.createGeneratedAgoString(generated),
|
|
51
72
|
title: document.title
|
|
52
73
|
}).appendTo($('#header'));
|
|
74
|
+
document.getElementById('theme-toggle')?.addEventListener('click', theme.onClick);
|
|
53
75
|
}
|
|
54
76
|
|
|
55
77
|
function addReportOrLogLink(myType) {
|
|
@@ -188,3 +210,65 @@ function stopPropagation(event) {
|
|
|
188
210
|
if (event.stopPropagation)
|
|
189
211
|
event.stopPropagation();
|
|
190
212
|
}
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
const theme = function () {
|
|
216
|
+
|
|
217
|
+
const storageKey = 'theme-preference';
|
|
218
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
219
|
+
var storage;
|
|
220
|
+
var theme;
|
|
221
|
+
|
|
222
|
+
function init(givenStorage) {
|
|
223
|
+
storage = givenStorage;
|
|
224
|
+
theme = { value: getPreference() };
|
|
225
|
+
document.body.setAttribute('data-theme', theme.value);
|
|
226
|
+
reflectPreference();
|
|
227
|
+
|
|
228
|
+
window.matchMedia('(prefers-color-scheme: dark)')
|
|
229
|
+
.addEventListener('change', ({matches:isDark}) => {
|
|
230
|
+
theme.value = isDark ? 'dark' : 'light';
|
|
231
|
+
setPreference();
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
window.addEventListener('storage', ({key, newValue}) => {
|
|
235
|
+
if (key === storage.fullKey(storageKey)) {
|
|
236
|
+
theme.value = newValue === 'dark' ? 'dark' : 'light';
|
|
237
|
+
setPreference();
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
function getPreference() {
|
|
243
|
+
if (urlParams.has('theme')) {
|
|
244
|
+
var urlTheme = urlParams.get('theme') === 'dark' ? 'dark' : 'light';
|
|
245
|
+
storage.set(storageKey, urlTheme);
|
|
246
|
+
urlParams.delete('theme');
|
|
247
|
+
return urlTheme;
|
|
248
|
+
}
|
|
249
|
+
if (storage.get(storageKey))
|
|
250
|
+
return storage.get(storageKey) === 'dark' ? 'dark' : 'light';
|
|
251
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function setPreference() {
|
|
255
|
+
storage.set(storageKey, theme.value);
|
|
256
|
+
reflectPreference();
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function reflectPreference() {
|
|
260
|
+
document.body.setAttribute('data-theme', theme.value);
|
|
261
|
+
document.querySelector('#theme-toggle')?.setAttribute('aria-label', theme.value);
|
|
262
|
+
const event = new Event('theme-change', {value: theme.value});
|
|
263
|
+
document.dispatchEvent(event);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
function onClick() {
|
|
267
|
+
theme.value = theme.value === 'light' ? 'dark' : 'light';
|
|
268
|
+
document.body.setAttribute('theme-toggled', "");
|
|
269
|
+
setPreference();
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
return {init: init, getPreference: getPreference, setPreference: setPreference,
|
|
273
|
+
reflectPreference: reflectPreference, onClick: onClick};
|
|
274
|
+
}();
|
|
@@ -27,13 +27,13 @@ if sys.version_info < (3, 9) and not Path(__file__).exists(): # zipsafe
|
|
|
27
27
|
except ImportError:
|
|
28
28
|
raise ImportError(
|
|
29
29
|
"'importlib_resources' backport module needs to be installed with "
|
|
30
|
-
"Python 3.8
|
|
31
|
-
"
|
|
30
|
+
"Python 3.8 when Robot Framework is distributed as a zip package "
|
|
31
|
+
"or '__file__' does not exist for other reasons."
|
|
32
32
|
)
|
|
33
33
|
else:
|
|
34
34
|
try:
|
|
35
35
|
from importlib.resources import files
|
|
36
|
-
except ImportError: # Python 3.8
|
|
36
|
+
except ImportError: # Python 3.8
|
|
37
37
|
BASE_DIR = Path(__file__).absolute().parent.parent.parent # zipsafe
|
|
38
38
|
|
|
39
39
|
def files(module):
|
|
@@ -71,14 +71,6 @@ class DocumentationBuilder:
|
|
|
71
71
|
instead.
|
|
72
72
|
"""
|
|
73
73
|
|
|
74
|
-
def __init__(self, library_or_resource=None):
|
|
75
|
-
"""`library_or_resource` is accepted for backwards compatibility reasons.
|
|
76
|
-
|
|
77
|
-
It is not used for anything internally and passing it to the builder is
|
|
78
|
-
considered deprecated starting from RF 6.0.1.
|
|
79
|
-
"""
|
|
80
|
-
pass
|
|
81
|
-
|
|
82
74
|
def build(self, source):
|
|
83
75
|
# Source can contain arguments separated with `::` so we cannot convert
|
|
84
76
|
# it to Path and instead need to make sure it's a string. It would be
|
|
@@ -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,50 +57,68 @@ 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),
|
|
64
64
|
source=data['source'],
|
|
65
65
|
lineno=int(data.get('lineno', -1)))
|
|
66
66
|
self._create_arguments(data['args'], kw)
|
|
67
|
+
self._add_return_type(data.get('returnType'), kw)
|
|
67
68
|
return kw
|
|
68
69
|
|
|
69
70
|
def _create_arguments(self, arguments, kw: KeywordDoc):
|
|
70
71
|
spec = kw.args
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
ArgInfo.POSITIONAL_OR_NAMED: spec.positional_or_named.append,
|
|
75
|
-
ArgInfo.VAR_POSITIONAL: lambda value: setattr(spec, 'var_positional', value),
|
|
76
|
-
ArgInfo.NAMED_ONLY_MARKER: lambda value: None,
|
|
77
|
-
ArgInfo.NAMED_ONLY: spec.named_only.append,
|
|
78
|
-
ArgInfo.VAR_NAMED: lambda value: setattr(spec, 'var_named', value),
|
|
79
|
-
}
|
|
72
|
+
positional_only = []
|
|
73
|
+
positional_or_named = []
|
|
74
|
+
named_only = []
|
|
80
75
|
for arg in arguments:
|
|
76
|
+
kind = arg['kind']
|
|
81
77
|
name = arg['name']
|
|
82
|
-
|
|
78
|
+
if kind == ArgInfo.POSITIONAL_ONLY:
|
|
79
|
+
positional_only.append(name)
|
|
80
|
+
elif kind == ArgInfo.POSITIONAL_OR_NAMED:
|
|
81
|
+
positional_or_named.append(name)
|
|
82
|
+
elif kind == ArgInfo.VAR_POSITIONAL:
|
|
83
|
+
spec.var_positional = name
|
|
84
|
+
elif kind == ArgInfo.NAMED_ONLY:
|
|
85
|
+
named_only.append(name)
|
|
86
|
+
elif kind == ArgInfo.VAR_NAMED:
|
|
87
|
+
spec.var_named = name
|
|
83
88
|
default = arg.get('defaultValue')
|
|
84
89
|
if default is not None:
|
|
85
90
|
spec.defaults[name] = default
|
|
86
|
-
if
|
|
91
|
+
if 'type' in arg: # RF >= 6.1
|
|
87
92
|
type_docs = {}
|
|
88
|
-
type_info = self.
|
|
89
|
-
else:
|
|
93
|
+
type_info = self._parse_type_info(arg['type'], type_docs)
|
|
94
|
+
else: # RF < 6.1
|
|
90
95
|
type_docs = arg.get('typedocs', {})
|
|
91
|
-
type_info =
|
|
96
|
+
type_info = self._parse_legacy_type_info(arg['types'])
|
|
92
97
|
if type_info:
|
|
93
98
|
if not spec.types:
|
|
94
99
|
spec.types = {}
|
|
95
100
|
spec.types[name] = type_info
|
|
96
101
|
kw.type_docs[name] = type_docs
|
|
102
|
+
spec.positional_only = positional_only
|
|
103
|
+
spec.positional_or_named = positional_or_named
|
|
104
|
+
spec.named_only = named_only
|
|
97
105
|
|
|
98
|
-
def
|
|
106
|
+
def _parse_type_info(self, data, type_docs):
|
|
107
|
+
if not data:
|
|
108
|
+
return None
|
|
99
109
|
if data.get('typedoc'):
|
|
100
110
|
type_docs[data['name']] = data['typedoc']
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
111
|
+
nested = [self._parse_type_info(typ, type_docs) for typ in data.get('nested', ())]
|
|
112
|
+
return TypeInfo(data['name'], None, nested=nested or None)
|
|
113
|
+
|
|
114
|
+
def _parse_legacy_type_info(self, types):
|
|
115
|
+
return TypeInfo.from_sequence(types) if types else None
|
|
116
|
+
|
|
117
|
+
def _add_return_type(self, data, kw: KeywordDoc):
|
|
118
|
+
if data:
|
|
119
|
+
type_docs = {}
|
|
120
|
+
kw.args.return_type = self._parse_type_info(data, type_docs)
|
|
121
|
+
kw.type_docs['return'] = type_docs
|
|
104
122
|
|
|
105
123
|
def _parse_type_docs(self, type_docs):
|
|
106
124
|
for data in type_docs:
|