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.
- {robotframework-6.1.1/src/robotframework.egg-info → robotframework-7.0a1}/PKG-INFO +3 -6
- {robotframework-6.1.1 → robotframework-7.0a1}/setup.py +2 -5
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/interfaces.py +35 -48
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/parsing.py +4 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/gatherfailed.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/languages.py +0 -9
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/settings.py +8 -5
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.css +4 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.html +9 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/model.js +2 -4
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/testdata.js +10 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/template.py +3 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/builder.py +0 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/datatypes.py +9 -10
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlutils.py +4 -7
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonbuilder.py +14 -10
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/model.py +13 -25
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/robotbuilder.py +13 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlbuilder.py +8 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/xmlwriter.py +12 -38
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/BuiltIn.py +215 -189
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Collections.py +2 -9
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/DateTime.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/OperatingSystem.py +4 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Process.py +26 -27
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Remote.py +40 -36
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/String.py +4 -4
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/XML.py +7 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/__init__.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/__init__.py +4 -4
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/body.py +14 -6
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/configurer.py +15 -11
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/control.py +151 -81
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/filter.py +31 -25
- robotframework-7.0a1/src/robot/model/keyword.py +70 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/message.py +19 -10
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/namepatterns.py +3 -25
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/stats.py +9 -15
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tags.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/testcase.py +12 -21
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/testsuite.py +16 -22
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/visitor.py +35 -8
- robotframework-7.0a1/src/robot/output/console/dotted.py +90 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/quiet.py +3 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/verbose.py +60 -60
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/debugfile.py +36 -23
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/filelogger.py +16 -13
- robotframework-7.0a1/src/robot/output/listeners.py +586 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/logger.py +164 -77
- robotframework-7.0a1/src/robot/output/loggerapi.py +152 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/loggerhelper.py +23 -56
- robotframework-7.0a1/src/robot/output/output.py +158 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/stdoutlogsplitter.py +8 -5
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/xmllogger.py +163 -109
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/blocklexers.py +17 -13
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/context.py +12 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/lexer.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/settings.py +6 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/statementlexers.py +39 -10
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokens.py +27 -29
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/blocks.py +19 -6
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/statements.py +184 -84
- robotframework-7.0a1/src/robot/parsing/model/visitor.py +102 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/expandkeywordmatcher.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsbuildingcontext.py +8 -6
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsmodelbuilders.py +88 -61
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/stringcache.py +4 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/xunitwriter.py +15 -21
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/__init__.py +3 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/configurer.py +12 -9
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/flattenkeywordmatcher.py +8 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/keywordremover.py +71 -54
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/merger.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/model.py +400 -316
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/modeldeprecation.py +9 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/resultbuilder.py +21 -23
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/xmlelementhandlers.py +76 -40
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/__init__.py +1 -1
- robotframework-7.0a1/src/robot/running/arguments/argumentconverter.py +101 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentmapper.py +16 -14
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentresolver.py +41 -33
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentspec.py +24 -90
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentvalidator.py +34 -27
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/customconverters.py +14 -11
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/embedded.py +23 -26
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/typeconverters.py +175 -213
- robotframework-7.0a1/src/robot/running/arguments/typeinfo.py +367 -0
- robotframework-7.0a1/src/robot/running/arguments/typevalidator.py +62 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/bodyrunner.py +83 -68
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/parsers.py +8 -10
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/settings.py +9 -17
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/transformers.py +166 -308
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/context.py +80 -25
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/handlers.py +11 -16
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/handlerstore.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/librarykeywordrunner.py +9 -17
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/model.py +109 -32
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/namespace.py +18 -19
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/statusreporter.py +13 -12
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/suiterunner.py +15 -17
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/testlibraries.py +33 -40
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/usererrorhandler.py +8 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/userkeyword.py +13 -8
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/userkeywordrunner.py +18 -21
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/testdoc.py +18 -13
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/__init__.py +50 -35
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/connectioncache.py +64 -59
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/encodingsniffer.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/escaping.py +11 -9
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/markupwriters.py +20 -13
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/normalizing.py +9 -24
- robotframework-7.0a1/src/robot/utils/notset.py +33 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/platform.py +15 -5
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotpath.py +1 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robottime.py +120 -88
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robottypes.py +16 -31
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/setter.py +0 -5
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/text.py +7 -4
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/unic.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/__init__.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/assigner.py +17 -19
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/evaluation.py +20 -17
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/filesetter.py +80 -80
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/replacer.py +33 -36
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/scopes.py +3 -3
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/search.py +66 -41
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/store.py +14 -16
- robotframework-7.0a1/src/robot/variables/tablesetter.py +164 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/variables.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/version.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0a1/src/robotframework.egg-info}/PKG-INFO +3 -6
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/SOURCES.txt +3 -4
- {robotframework-6.1.1 → robotframework-7.0a1}/tasks.py +6 -6
- robotframework-6.1.1/src/robot/libraries/Reserved.py +0 -48
- robotframework-6.1.1/src/robot/model/keyword.py +0 -173
- robotframework-6.1.1/src/robot/output/console/dotted.py +0 -90
- robotframework-6.1.1/src/robot/output/listenerarguments.py +0 -165
- robotframework-6.1.1/src/robot/output/listenermethods.py +0 -113
- robotframework-6.1.1/src/robot/output/listeners.py +0 -174
- robotframework-6.1.1/src/robot/output/output.py +0 -95
- robotframework-6.1.1/src/robot/parsing/model/visitor.py +0 -67
- robotframework-6.1.1/src/robot/running/arguments/argumentconverter.py +0 -79
- robotframework-6.1.1/src/robot/running/arguments/typevalidator.py +0 -56
- robotframework-6.1.1/src/robot/running/modelcombiner.py +0 -32
- robotframework-6.1.1/src/robot/variables/tablesetter.py +0 -156
- {robotframework-6.1.1 → robotframework-7.0a1}/AUTHORS.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/BUILD.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/CONTRIBUTING.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/COPYRIGHT.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/INSTALL.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/LICENSE.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/MANIFEST.in +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/README.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/setup.cfg +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/__main__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/deco.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/exceptions.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/api/logger.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/conf/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/errors.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/common/storage.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/htmlfilewriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/libdoc.html +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/print.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/libdoc/pygments.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/common.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/report.html +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/rebot/view.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdoc.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/htmlwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/standardtypes.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libdocpkg/writer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Easter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/libraries/dialogs_py.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/fixture.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/itemlist.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/metadata.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/modelobject.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/modifier.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/statistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/suitestatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tagsetter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/tagstatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/model/totalstatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/console/highlighting.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/librarylogger.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/output/pyloggingconf.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/model/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/blockparsers.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/rebot.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/logreportwriters.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/outputwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/reporting/resultwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/executionerrors.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/executionresult.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/messagefilter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/result/visitor.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/run.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/arguments/argumentparser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/builder/builders.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/dynamicmethods.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/importer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/libraryscopes.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/outputcapture.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/randomizer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/runkwregister.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/signalhandler.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/status.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/application.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/asserts.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/charwidth.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/compress.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/dotdict.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/encoding.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/error.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/filereader.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/frange.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/importer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/markuputils.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/match.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/misc.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/recommendations.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/restreader.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotenv.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/robotio.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/sortable.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/utils/typehints.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/finders.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/notfound.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robot/variables/resolvable.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0a1}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robotframework
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0a1
|
|
4
4
|
Summary: Generic automation framework for acceptance testing and robotic process automation (RPA)
|
|
5
5
|
Home-page: https://robotframework.org
|
|
6
6
|
Author: Pekka Klärck
|
|
@@ -10,9 +10,8 @@ Download-URL: https://pypi.org/project/robotframework
|
|
|
10
10
|
Project-URL: Source, https://github.com/robotframework/robotframework
|
|
11
11
|
Project-URL: Issue Tracker, https://github.com/robotframework/robotframework/issues
|
|
12
12
|
Project-URL: Documentation, https://robotframework.org/robotframework
|
|
13
|
-
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-
|
|
13
|
+
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.0a1.rst
|
|
14
14
|
Project-URL: Slack, http://slack.robotframework.org
|
|
15
|
-
Project-URL: Twitter, https://twitter.com/robotframework
|
|
16
15
|
Description: Robot Framework
|
|
17
16
|
===============
|
|
18
17
|
|
|
@@ -171,8 +170,6 @@ Classifier: License :: OSI Approved :: Apache Software License
|
|
|
171
170
|
Classifier: Operating System :: OS Independent
|
|
172
171
|
Classifier: Programming Language :: Python :: 3
|
|
173
172
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
174
|
-
Classifier: Programming Language :: Python :: 3.6
|
|
175
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
176
173
|
Classifier: Programming Language :: Python :: 3.8
|
|
177
174
|
Classifier: Programming Language :: Python :: 3.9
|
|
178
175
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -184,5 +181,5 @@ Classifier: Topic :: Software Development :: Testing
|
|
|
184
181
|
Classifier: Topic :: Software Development :: Testing :: Acceptance
|
|
185
182
|
Classifier: Topic :: Software Development :: Testing :: BDD
|
|
186
183
|
Classifier: Framework :: Robot Framework
|
|
187
|
-
Requires-Python: >=3.
|
|
184
|
+
Requires-Python: >=3.8
|
|
188
185
|
Description-Content-Type: text/x-rst
|
|
@@ -6,7 +6,7 @@ from setuptools import find_packages, setup
|
|
|
6
6
|
|
|
7
7
|
# Version number typically updated by running `invoke set-version <version>`.
|
|
8
8
|
# Run `invoke --help set-version` or see tasks.py for details.
|
|
9
|
-
VERSION = '
|
|
9
|
+
VERSION = '7.0a1'
|
|
10
10
|
with open(join(dirname(abspath(__file__)), 'README.rst')) as f:
|
|
11
11
|
LONG_DESCRIPTION = f.read()
|
|
12
12
|
base_url = 'https://github.com/robotframework/robotframework/blob/master'
|
|
@@ -22,8 +22,6 @@ License :: OSI Approved :: Apache Software License
|
|
|
22
22
|
Operating System :: OS Independent
|
|
23
23
|
Programming Language :: Python :: 3
|
|
24
24
|
Programming Language :: Python :: 3 :: Only
|
|
25
|
-
Programming Language :: Python :: 3.6
|
|
26
|
-
Programming Language :: Python :: 3.7
|
|
27
25
|
Programming Language :: Python :: 3.8
|
|
28
26
|
Programming Language :: Python :: 3.9
|
|
29
27
|
Programming Language :: Python :: 3.10
|
|
@@ -57,7 +55,6 @@ setup(
|
|
|
57
55
|
'Documentation': 'https://robotframework.org/robotframework',
|
|
58
56
|
'Release Notes': f'https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-{VERSION}.rst',
|
|
59
57
|
'Slack': 'http://slack.robotframework.org',
|
|
60
|
-
'Twitter': 'https://twitter.com/robotframework',
|
|
61
58
|
},
|
|
62
59
|
download_url = 'https://pypi.org/project/robotframework',
|
|
63
60
|
license = 'Apache License 2.0',
|
|
@@ -66,7 +63,7 @@ setup(
|
|
|
66
63
|
long_description_content_type = 'text/x-rst',
|
|
67
64
|
keywords = KEYWORDS,
|
|
68
65
|
platforms = 'any',
|
|
69
|
-
python_requires='>=3.
|
|
66
|
+
python_requires='>=3.8',
|
|
70
67
|
classifiers = CLASSIFIERS,
|
|
71
68
|
package_dir = {'': 'src'},
|
|
72
69
|
package_data = {'robot': PACKAGE_DATA},
|
|
@@ -34,9 +34,6 @@ base class.
|
|
|
34
34
|
.. note:: These classes are not exposed via the top level :mod:`robot.api`
|
|
35
35
|
package and need to imported via :mod:`robot.api.interfaces`.
|
|
36
36
|
|
|
37
|
-
.. note:: Using this module requires having the typing_extensions__ module
|
|
38
|
-
installed when using Python 3.6 or 3.7.
|
|
39
|
-
|
|
40
37
|
This module is new in Robot Framework 6.1.
|
|
41
38
|
|
|
42
39
|
__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#dynamic-library-api
|
|
@@ -44,22 +41,12 @@ __ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#
|
|
|
44
41
|
__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#listener-version-2
|
|
45
42
|
__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#listener-version-3
|
|
46
43
|
__ http://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#parser-interface
|
|
47
|
-
__ https://pypi.org/project/typing-extensions/
|
|
48
44
|
"""
|
|
49
45
|
|
|
50
46
|
import sys
|
|
51
47
|
from abc import ABC, abstractmethod
|
|
52
48
|
from pathlib import Path
|
|
53
|
-
from typing import Any,
|
|
54
|
-
# Need to use version check and not try/except to support Mypy's stubgen.
|
|
55
|
-
if sys.version_info >= (3, 8):
|
|
56
|
-
from typing import TypedDict
|
|
57
|
-
else:
|
|
58
|
-
try:
|
|
59
|
-
from typing_extensions import TypedDict
|
|
60
|
-
except ImportError:
|
|
61
|
-
raise ImportError("Using the 'robot.api.interfaces' module requires having "
|
|
62
|
-
"the 'typing_extensions' module installed with Python < 3.8.")
|
|
49
|
+
from typing import Any, Optional, Mapping, Sequence, TypedDict, Union
|
|
63
50
|
if sys.version_info >= (3, 10):
|
|
64
51
|
from types import UnionType
|
|
65
52
|
else:
|
|
@@ -72,32 +59,32 @@ from robot.running import TestDefaults, TestSuite
|
|
|
72
59
|
|
|
73
60
|
# Type aliases used by DynamicLibrary and HybridLibrary.
|
|
74
61
|
Name = str
|
|
75
|
-
PositArgs =
|
|
76
|
-
NamedArgs =
|
|
62
|
+
PositArgs = Sequence[Any]
|
|
63
|
+
NamedArgs = Mapping[str, Any]
|
|
77
64
|
Documentation = str
|
|
78
|
-
Arguments =
|
|
65
|
+
Arguments = Sequence[
|
|
79
66
|
Union[
|
|
80
|
-
str,
|
|
81
|
-
|
|
82
|
-
|
|
67
|
+
str, # Name with possible default like `arg` or `arg=1`.
|
|
68
|
+
'tuple[str]', # Name without a default like `('arg',)`.
|
|
69
|
+
'tuple[str, Any]' # Name and default like `('arg', 1)`.
|
|
83
70
|
]
|
|
84
71
|
]
|
|
85
|
-
|
|
86
|
-
type,
|
|
87
|
-
str,
|
|
88
|
-
UnionType,
|
|
89
|
-
|
|
72
|
+
TypeHint = Union[
|
|
73
|
+
type, # Actual type.
|
|
74
|
+
str, # Type name or alias.
|
|
75
|
+
UnionType, # Union syntax (e.g. `int | float`).
|
|
76
|
+
'tuple[TypeHint, ...]' # Tuple of type hints. Behaves like a union.
|
|
90
77
|
]
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
78
|
+
TypeHints = Union[
|
|
79
|
+
Mapping[str, TypeHint], # Types by name.
|
|
80
|
+
Sequence[ # Types by position.
|
|
94
81
|
Union[
|
|
95
|
-
|
|
96
|
-
None
|
|
82
|
+
TypeHint, # Type hint.
|
|
83
|
+
None # No type hint.
|
|
97
84
|
]
|
|
98
85
|
]
|
|
99
86
|
]
|
|
100
|
-
Tags =
|
|
87
|
+
Tags = Sequence[str]
|
|
101
88
|
Source = str
|
|
102
89
|
|
|
103
90
|
|
|
@@ -112,7 +99,7 @@ class DynamicLibrary(ABC):
|
|
|
112
99
|
"""
|
|
113
100
|
|
|
114
101
|
@abstractmethod
|
|
115
|
-
def get_keyword_names(self) ->
|
|
102
|
+
def get_keyword_names(self) -> Sequence[Name]:
|
|
116
103
|
"""Return names of the keywords this library implements.
|
|
117
104
|
|
|
118
105
|
:return: Keyword names as a list of strings.
|
|
@@ -198,7 +185,7 @@ class DynamicLibrary(ABC):
|
|
|
198
185
|
"""
|
|
199
186
|
return None
|
|
200
187
|
|
|
201
|
-
def get_keyword_types(self, name: Name) -> Optional[
|
|
188
|
+
def get_keyword_types(self, name: Name) -> Optional[TypeHints]:
|
|
202
189
|
"""Optional method to return keyword's type specification.
|
|
203
190
|
|
|
204
191
|
Type information is used for automatic argument conversion during
|
|
@@ -281,7 +268,7 @@ class HybridLibrary(ABC):
|
|
|
281
268
|
"""
|
|
282
269
|
|
|
283
270
|
@abstractmethod
|
|
284
|
-
def get_keyword_names(self) ->
|
|
271
|
+
def get_keyword_names(self) -> Sequence[Name]:
|
|
285
272
|
"""Return names of the implemented keyword methods as a list or strings.
|
|
286
273
|
|
|
287
274
|
Returned names must match names of the implemented keyword methods.
|
|
@@ -301,8 +288,8 @@ class StartSuiteAttributes(TypedDict):
|
|
|
301
288
|
doc: str
|
|
302
289
|
metadata: dict
|
|
303
290
|
source: str
|
|
304
|
-
suites:
|
|
305
|
-
tests:
|
|
291
|
+
suites: 'list[str]'
|
|
292
|
+
tests: 'list[str]'
|
|
306
293
|
totaltests: int
|
|
307
294
|
starttime: str
|
|
308
295
|
|
|
@@ -328,7 +315,7 @@ class StartTestAttributes(TypedDict):
|
|
|
328
315
|
longname: str
|
|
329
316
|
originalname: str
|
|
330
317
|
doc: str
|
|
331
|
-
tags:
|
|
318
|
+
tags: 'list[str]'
|
|
332
319
|
template: str
|
|
333
320
|
source: str
|
|
334
321
|
lineno: int
|
|
@@ -353,21 +340,21 @@ class OptionalKeywordAttributes(TypedDict, total=False):
|
|
|
353
340
|
IF structures attributes include ``condition``.
|
|
354
341
|
"""
|
|
355
342
|
# FOR
|
|
356
|
-
variables:
|
|
343
|
+
variables: 'list[str]'
|
|
357
344
|
flavor: str
|
|
358
|
-
values:
|
|
345
|
+
values: 'list[str]'
|
|
359
346
|
# ITERATION with FOR
|
|
360
|
-
variables:
|
|
347
|
+
variables: 'dict[str, str]'
|
|
361
348
|
# WHILE and IF
|
|
362
349
|
condition: str
|
|
363
350
|
# WHILE
|
|
364
351
|
limit: str
|
|
365
352
|
# EXCEPT
|
|
366
|
-
patterns:
|
|
353
|
+
patterns: 'list[str]'
|
|
367
354
|
pattern_type: str
|
|
368
355
|
variable: str
|
|
369
356
|
# RETURN
|
|
370
|
-
values:
|
|
357
|
+
values: 'list[str]'
|
|
371
358
|
|
|
372
359
|
|
|
373
360
|
class StartKeywordAttributes(OptionalKeywordAttributes):
|
|
@@ -379,9 +366,9 @@ class StartKeywordAttributes(OptionalKeywordAttributes):
|
|
|
379
366
|
kwname: str
|
|
380
367
|
libname: str
|
|
381
368
|
doc: str
|
|
382
|
-
args:
|
|
383
|
-
assign:
|
|
384
|
-
tags:
|
|
369
|
+
args: 'list[str]'
|
|
370
|
+
assign: 'list[str]'
|
|
371
|
+
tags: 'list[str]'
|
|
385
372
|
source: str
|
|
386
373
|
lineno: int
|
|
387
374
|
status: str
|
|
@@ -413,7 +400,7 @@ class LibraryAttributes(TypedDict):
|
|
|
413
400
|
|
|
414
401
|
See the User Guide for more information.
|
|
415
402
|
"""
|
|
416
|
-
args:
|
|
403
|
+
args: 'list[str]'
|
|
417
404
|
originalname: str
|
|
418
405
|
source: str
|
|
419
406
|
importer: Union[str, None]
|
|
@@ -433,7 +420,7 @@ class VariablesAttributes(TypedDict):
|
|
|
433
420
|
|
|
434
421
|
See the User Guide for more information.
|
|
435
422
|
"""
|
|
436
|
-
args:
|
|
423
|
+
args: 'list[str]'
|
|
437
424
|
source: str
|
|
438
425
|
importer: Union[str, None]
|
|
439
426
|
|
|
@@ -531,7 +518,7 @@ class ListenerV3:
|
|
|
531
518
|
"""Called when a test or task starts."""
|
|
532
519
|
|
|
533
520
|
def end_test(self, data: running.TestCase, result: result.TestCase):
|
|
534
|
-
"""Called when a test or ends
|
|
521
|
+
"""Called when a test or tasks ends."""
|
|
535
522
|
|
|
536
523
|
def log_message(self, message: Message):
|
|
537
524
|
"""Called when a normal log message are emitted.
|
|
@@ -223,7 +223,7 @@ Statements:
|
|
|
223
223
|
- :class:`~robot.parsing.model.statements.Template`
|
|
224
224
|
- :class:`~robot.parsing.model.statements.Timeout`
|
|
225
225
|
- :class:`~robot.parsing.model.statements.Arguments`
|
|
226
|
-
- :class:`~robot.parsing.model.statements.Return` (deprecated, will mean ``ReturnStatement`` in RF
|
|
226
|
+
- :class:`~robot.parsing.model.statements.Return` (deprecated, will mean ``ReturnStatement`` in RF 8.0)
|
|
227
227
|
- :class:`~robot.parsing.model.statements.ReturnSetting` (alias for ``Return``, new in RF 6.1)
|
|
228
228
|
- :class:`~robot.parsing.model.statements.KeywordCall`
|
|
229
229
|
- :class:`~robot.parsing.model.statements.TemplateArguments`
|
|
@@ -236,6 +236,7 @@ Statements:
|
|
|
236
236
|
- :class:`~robot.parsing.model.statements.FinallyHeader`
|
|
237
237
|
- :class:`~robot.parsing.model.statements.ForHeader`
|
|
238
238
|
- :class:`~robot.parsing.model.statements.WhileHeader`
|
|
239
|
+
- :class:`~robot.parsing.model.statements.Var` (new in RF 7.0)
|
|
239
240
|
- :class:`~robot.parsing.model.statements.End`
|
|
240
241
|
- :class:`~robot.parsing.model.statements.ReturnStatement`
|
|
241
242
|
- :class:`~robot.parsing.model.statements.Break`
|
|
@@ -519,7 +520,7 @@ from robot.parsing.model.statements import (
|
|
|
519
520
|
TestTeardown,
|
|
520
521
|
TestTemplate,
|
|
521
522
|
TestTimeout,
|
|
522
|
-
|
|
523
|
+
TestTags,
|
|
523
524
|
DefaultTags,
|
|
524
525
|
KeywordTags,
|
|
525
526
|
Variable,
|
|
@@ -545,6 +546,7 @@ from robot.parsing.model.statements import (
|
|
|
545
546
|
ForHeader,
|
|
546
547
|
WhileHeader,
|
|
547
548
|
End,
|
|
549
|
+
Var,
|
|
548
550
|
ReturnStatement,
|
|
549
551
|
Continue,
|
|
550
552
|
Break,
|
|
@@ -26,7 +26,7 @@ class GatherFailedTests(SuiteVisitor):
|
|
|
26
26
|
|
|
27
27
|
def visit_test(self, test):
|
|
28
28
|
if test.failed:
|
|
29
|
-
self.tests.append(glob_escape(test.
|
|
29
|
+
self.tests.append(glob_escape(test.full_name))
|
|
30
30
|
|
|
31
31
|
def visit_keyword(self, kw):
|
|
32
32
|
pass
|
|
@@ -39,7 +39,7 @@ class GatherFailedSuites(SuiteVisitor):
|
|
|
39
39
|
|
|
40
40
|
def start_suite(self, suite):
|
|
41
41
|
if any(test.failed for test in suite.tests):
|
|
42
|
-
self.suites.append(glob_escape(suite.
|
|
42
|
+
self.suites.append(glob_escape(suite.full_name))
|
|
43
43
|
|
|
44
44
|
def visit_test(self, test):
|
|
45
45
|
pass
|
|
@@ -130,15 +130,6 @@ class Languages:
|
|
|
130
130
|
languages = [languages]
|
|
131
131
|
if add_english:
|
|
132
132
|
languages.append(En())
|
|
133
|
-
# The English singular forms are added for backwards compatibility
|
|
134
|
-
self.headers = {
|
|
135
|
-
'Setting': 'Settings',
|
|
136
|
-
'Variable': 'Variables',
|
|
137
|
-
'Test Case': 'Test Cases',
|
|
138
|
-
'Task': 'Tasks',
|
|
139
|
-
'Keyword': 'Keywords',
|
|
140
|
-
'Comment': 'Comments'
|
|
141
|
-
}
|
|
142
133
|
return languages
|
|
143
134
|
|
|
144
135
|
def _get_available_languages(self) -> 'dict[str, type[Language]]':
|
|
@@ -20,13 +20,14 @@ import string
|
|
|
20
20
|
import sys
|
|
21
21
|
import time
|
|
22
22
|
import warnings
|
|
23
|
+
from datetime import datetime
|
|
23
24
|
from pathlib import Path
|
|
24
25
|
|
|
25
26
|
from robot.errors import DataError, FrameworkError
|
|
26
27
|
from robot.output import LOGGER, loggerhelper
|
|
27
28
|
from robot.result.keywordremover import KeywordRemover
|
|
28
29
|
from robot.result.flattenkeywordmatcher import validate_flatten_keyword
|
|
29
|
-
from robot.utils import (abspath, create_destination_directory, escape,
|
|
30
|
+
from robot.utils import (abspath, create_destination_directory, escape,
|
|
30
31
|
get_link_path, html_escape, is_list_like, plural_or_not as s,
|
|
31
32
|
seq2str, split_args_from_name_or_path)
|
|
32
33
|
|
|
@@ -73,7 +74,7 @@ class _BaseSettings:
|
|
|
73
74
|
_output_opts = ['Output', 'Log', 'Report', 'XUnit', 'DebugFile']
|
|
74
75
|
|
|
75
76
|
def __init__(self, options=None, **extra_options):
|
|
76
|
-
self.
|
|
77
|
+
self.start_time = datetime.now()
|
|
77
78
|
self._opts = {}
|
|
78
79
|
self._cli_opts = self._cli_opts.copy()
|
|
79
80
|
self._cli_opts.update(self._extra_cli_opts)
|
|
@@ -230,7 +231,9 @@ class _BaseSettings:
|
|
|
230
231
|
def _process_output_name(self, option, name):
|
|
231
232
|
base, ext = os.path.splitext(name)
|
|
232
233
|
if self['TimestampOutputs']:
|
|
233
|
-
|
|
234
|
+
s = self.start_time
|
|
235
|
+
base = (f'{base}-{s.year}{s.month:02}{s.day:02}-'
|
|
236
|
+
f'{s.hour:02}{s.minute:02}{s.second:02}')
|
|
234
237
|
ext = self._get_output_extension(ext, option)
|
|
235
238
|
return base + ext
|
|
236
239
|
|
|
@@ -336,7 +339,7 @@ class _BaseSettings:
|
|
|
336
339
|
def _validate_remove_keywords(self, values):
|
|
337
340
|
for value in values:
|
|
338
341
|
try:
|
|
339
|
-
KeywordRemover(value)
|
|
342
|
+
KeywordRemover.from_config(value)
|
|
340
343
|
except DataError as err:
|
|
341
344
|
self._raise_invalid('RemoveKeywords', err)
|
|
342
345
|
|
|
@@ -488,7 +491,7 @@ class RobotSettings(_BaseSettings):
|
|
|
488
491
|
|
|
489
492
|
def get_rebot_settings(self):
|
|
490
493
|
settings = RebotSettings()
|
|
491
|
-
settings.
|
|
494
|
+
settings.start_time = self.start_time
|
|
492
495
|
not_copied = {'Include', 'Exclude', 'TestNames', 'SuiteNames', 'ParseInclude',
|
|
493
496
|
'Name', 'Doc', 'Metadata', 'SetTag', 'Output', 'LogLevel',
|
|
494
497
|
'TimestampOutputs'}
|
|
@@ -322,8 +322,9 @@ function addExecutionLog(main) {
|
|
|
322
322
|
<div class="element-header-left" title="${type} {{if name}}{{html fullName}} {{/if}}[${status}]">
|
|
323
323
|
<span class="elapsed" title="Elapsed time">${times.elapsedTime}</span>
|
|
324
324
|
<span class="label ${status.toLowerCase()}">${type}</span>
|
|
325
|
-
<span>{{html assign}}</span>
|
|
325
|
+
<span class="assign">{{html assign}}</span>
|
|
326
326
|
<span class="name"><span class="parent-name">{{html libname}}{{if libname}} . {{/if}}</span>{{html name}}</span>
|
|
327
|
+
|
|
327
328
|
<span class="arg">{{html arguments}}</span>
|
|
328
329
|
</div>
|
|
329
330
|
<div class="element-header-right" onclick="stopPropagation(event)">
|
|
@@ -357,6 +358,12 @@ function addExecutionLog(main) {
|
|
|
357
358
|
<th>Start / End / Elapsed:</th>
|
|
358
359
|
<td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td>
|
|
359
360
|
</tr>
|
|
361
|
+
{{if message()}}
|
|
362
|
+
<tr>
|
|
363
|
+
<th>Message:</th>
|
|
364
|
+
<td class="message">{{html message()}}</td>
|
|
365
|
+
</tr>
|
|
366
|
+
{{/if}}
|
|
360
367
|
</table>
|
|
361
368
|
</div>
|
|
362
369
|
</div>
|
|
@@ -379,6 +386,7 @@ function addExecutionLog(main) {
|
|
|
379
386
|
<div id="log-level-selector">
|
|
380
387
|
Log level:
|
|
381
388
|
<select onchange="logLevelSelected(this.options[selectedIndex].value)">
|
|
389
|
+
<option value="3">WARN</option>
|
|
382
390
|
<option value="2">INFO</option>
|
|
383
391
|
<option value="1">DEBUG</option>
|
|
384
392
|
{{if showTrace()}}<option value="0">TRACE</option>{{/if}}
|
|
@@ -14,7 +14,6 @@ window.model = (function () {
|
|
|
14
14
|
suite.populateSuites = createIterablePopulator('Suite');
|
|
15
15
|
suite.childrenNames = ['keyword', 'suite', 'test'];
|
|
16
16
|
suite.callWhenChildrenReady = function (callable) { callable(); };
|
|
17
|
-
suite.message = data.message;
|
|
18
17
|
suite.children = function () {
|
|
19
18
|
return suite.keywords().concat(suite.tests()).concat(suite.suites());
|
|
20
19
|
};
|
|
@@ -110,6 +109,7 @@ window.model = (function () {
|
|
|
110
109
|
name: data.name,
|
|
111
110
|
doc: data.doc,
|
|
112
111
|
status: data.status,
|
|
112
|
+
message: data.message,
|
|
113
113
|
times: data.times,
|
|
114
114
|
id: data.parent ? data.parent.id + '-' + data.id : data.id
|
|
115
115
|
};
|
|
@@ -131,7 +131,6 @@ window.model = (function () {
|
|
|
131
131
|
return test.keywords();
|
|
132
132
|
};
|
|
133
133
|
test.tags = data.tags;
|
|
134
|
-
test.message = data.message;
|
|
135
134
|
test.matchesTagPattern = function (pattern) {
|
|
136
135
|
return containsTagPattern(test.tags, pattern);
|
|
137
136
|
};
|
|
@@ -143,13 +142,12 @@ window.model = (function () {
|
|
|
143
142
|
|
|
144
143
|
function Keyword(data) {
|
|
145
144
|
var kw = createModelObject(data);
|
|
146
|
-
var flatTypes = ['RETURN', 'BREAK', 'CONTINUE'];
|
|
147
145
|
kw.libname = data.libname;
|
|
148
146
|
kw.fullName = (kw.libname ? kw.libname + '.' : '') + kw.name;
|
|
149
147
|
kw.type = data.type;
|
|
150
148
|
kw.template = 'keywordTemplate';
|
|
151
149
|
kw.arguments = data.args;
|
|
152
|
-
kw.assign = data.assign + (data.assign ? ' =' : '');
|
|
150
|
+
kw.assign = data.assign + (data.assign ? ' = ' : '');
|
|
153
151
|
kw.tags = data.tags;
|
|
154
152
|
kw.timeout = data.timeout;
|
|
155
153
|
kw.populateKeywords = createIterablePopulator('Keyword');
|
|
@@ -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
|
});
|
|
@@ -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)
|