robotframework 7.1rc2__zip → 7.1.1__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-7.1rc2 → robotframework-7.1.1}/BUILD.rst +5 -5
- {robotframework-7.1rc2 → robotframework-7.1.1}/PKG-INFO +2 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/setup.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/interfaces.py +45 -11
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/errors.py +0 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/template.py +0 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/BuiltIn.py +12 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Collections.py +2 -3
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/console/highlighting.py +18 -10
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/loggerhelper.py +3 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/typeinfo.py +1 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/outputcapture.py +2 -1
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/signalhandler.py +7 -3
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/status.py +7 -3
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/userkeywordrunner.py +4 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/scopes.py +2 -1
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/version.py +1 -1
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robotframework.egg-info/PKG-INFO +2 -2
- {robotframework-7.1rc2 → robotframework-7.1.1}/AUTHORS.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/CONTRIBUTING.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/COPYRIGHT.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/INSTALL.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/LICENSE.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/MANIFEST.in +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/README.rst +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/setup.cfg +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/__main__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/deco.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/exceptions.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/logger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/parsing.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/api/py.typed +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/conf/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/conf/gatherfailed.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/conf/languages.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/conf/settings.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/common/storage.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/htmlfilewriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/libdoc.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/libdoc.html +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/print.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/libdoc/pygments.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/common.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/log.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/log.html +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/model.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/report.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/report.html +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/testdata.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/rebot/view.js +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdoc.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/builder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/datatypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/htmlutils.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/htmlwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/jsonbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/model.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/robotbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/standardtypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/writer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/xmlbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libdocpkg/xmlwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/DateTime.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Easter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/OperatingSystem.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Process.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Remote.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/String.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/XML.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/libraries/dialogs_py.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/body.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/configurer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/control.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/filter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/fixture.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/itemlist.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/keyword.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/message.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/metadata.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/modelobject.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/modifier.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/namepatterns.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/statistics.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/stats.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/suitestatistics.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/tags.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/tagsetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/tagstatistics.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/testcase.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/testsuite.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/totalstatistics.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/model/visitor.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/console/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/console/dotted.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/console/quiet.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/console/verbose.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/debugfile.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/filelogger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/librarylogger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/listeners.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/logger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/loggerapi.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/output.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/pyloggingconf.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/stdoutlogsplitter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/output/xmllogger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/blocklexers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/context.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/lexer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/settings.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/statementlexers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/lexer/tokens.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/model/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/model/blocks.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/model/statements.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/model/visitor.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/parser/blockparsers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/rebot.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/expandkeywordmatcher.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/jsbuildingcontext.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/jsmodelbuilders.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/logreportwriters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/outputwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/resultwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/stringcache.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/reporting/xunitwriter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/configurer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/executionerrors.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/executionresult.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/flattenkeywordmatcher.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/keywordremover.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/merger.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/messagefilter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/model.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/modeldeprecation.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/resultbuilder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/visitor.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/result/xmlelementhandlers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/run.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentconverter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentmapper.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentresolver.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentspec.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/argumentvalidator.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/customconverters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/embedded.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/typeconverters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/typeinfoparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/arguments/typevalidator.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/bodyrunner.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/builder/builders.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/builder/parsers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/builder/settings.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/builder/transformers.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/context.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/dynamicmethods.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/importer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/invalidkeyword.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/keywordfinder.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/keywordimplementation.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/librarykeyword.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/librarykeywordrunner.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/libraryscopes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/model.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/namespace.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/randomizer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/resourcemodel.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/runkwregister.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/statusreporter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/suiterunner.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/testlibraries.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/timeouts/nosupport.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/testdoc.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/application.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/asserts.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/charwidth.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/compress.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/connectioncache.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/dotdict.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/encoding.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/encodingsniffer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/error.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/escaping.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/filereader.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/frange.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/importer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/markuputils.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/markupwriters.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/match.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/misc.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/normalizing.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/notset.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/platform.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/recommendations.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/restreader.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robotenv.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robotio.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robotpath.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robottime.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/robottypes.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/setter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/sortable.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/text.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/typehints.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/utils/unic.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/__init__.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/assigner.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/evaluation.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/filesetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/finders.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/notfound.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/replacer.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/resolvable.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/search.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/store.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/tablesetter.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/variables/variables.py +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robotframework.egg-info/SOURCES.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/src/robotframework.egg-info/top_level.txt +0 -0
- {robotframework-7.1rc2 → robotframework-7.1.1}/tasks.py +0 -0
|
@@ -76,7 +76,7 @@ __ https://github.com/robotframework/robotframework/tree/master/atest#schema-val
|
|
|
76
76
|
Preparation
|
|
77
77
|
-----------
|
|
78
78
|
|
|
79
|
-
1. Check that you are on the
|
|
79
|
+
1. Check that you are on the right branch and have nothing left to commit,
|
|
80
80
|
pull, or push::
|
|
81
81
|
|
|
82
82
|
git branch
|
|
@@ -93,13 +93,13 @@ Preparation
|
|
|
93
93
|
|
|
94
94
|
VERSION=<version>
|
|
95
95
|
|
|
96
|
-
For example, ``VERSION=
|
|
96
|
+
For example, ``VERSION=7.1.1`` or ``VERSION=7.2a2``. No ``v`` prefix!
|
|
97
97
|
|
|
98
98
|
Release notes
|
|
99
99
|
-------------
|
|
100
100
|
|
|
101
|
-
1. Create personal `GitHub access token`__ to be able to access issue tracker
|
|
102
|
-
programmatically. The token needs only the
|
|
101
|
+
1. Create a personal `GitHub access token`__ to be able to access issue tracker
|
|
102
|
+
programmatically. The token needs only the ``repo/public_repo`` scope.
|
|
103
103
|
|
|
104
104
|
2. Set GitHub user information into shell variables to ease running the
|
|
105
105
|
``invoke release-notes`` command in the next step::
|
|
@@ -119,7 +119,7 @@ Release notes
|
|
|
119
119
|
<Set version_>`__. Omit the ``-w`` option if you just want to get release
|
|
120
120
|
notes printed to the console, not written to a file.
|
|
121
121
|
|
|
122
|
-
When generating release notes for a preview release like ``
|
|
122
|
+
When generating release notes for a preview release like ``7.2rc1``,
|
|
123
123
|
the list of issues is only going to contain issues with that label
|
|
124
124
|
(e.g. ``rc1``) or with a label of an earlier preview release (e.g.
|
|
125
125
|
``alpha1``, ``beta2``).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robotframework
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.1
|
|
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,7 +10,7 @@ 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-7.
|
|
13
|
+
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.1.1.rst
|
|
14
14
|
Project-URL: Slack, http://slack.robotframework.org
|
|
15
15
|
Description: Robot Framework
|
|
16
16
|
===============
|
|
@@ -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 = '7.
|
|
9
|
+
VERSION = '7.1.1'
|
|
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'
|
|
@@ -478,20 +478,37 @@ class ListenerV2:
|
|
|
478
478
|
def output_file(self, path: str):
|
|
479
479
|
"""Called after the output file has been created.
|
|
480
480
|
|
|
481
|
-
|
|
481
|
+
``path`` is an absolute path to the output file or
|
|
482
|
+
a string ``None`` if creating the output file is disabled.
|
|
482
483
|
"""
|
|
483
484
|
|
|
484
485
|
def log_file(self, path: str):
|
|
485
|
-
"""Called after the log file has been created.
|
|
486
|
+
"""Called after the log file has been created.
|
|
487
|
+
|
|
488
|
+
``path`` is an absolute path to the log file.
|
|
489
|
+
Not called if creating the log file is disabled.
|
|
490
|
+
"""
|
|
486
491
|
|
|
487
492
|
def report_file(self, path: str):
|
|
488
|
-
"""Called after the report file has been created.
|
|
493
|
+
"""Called after the report file has been created.
|
|
494
|
+
|
|
495
|
+
``path`` is an absolute path to the report file.
|
|
496
|
+
Not called if creating the report file is disabled.
|
|
497
|
+
"""
|
|
489
498
|
|
|
490
499
|
def xunit_file(self, path: str):
|
|
491
|
-
"""Called after the xunit compatible output file has been created.
|
|
500
|
+
"""Called after the xunit compatible output file has been created.
|
|
501
|
+
|
|
502
|
+
``path`` is an absolute path to the xunit file.
|
|
503
|
+
Only called if creating the xunit file is enabled.
|
|
504
|
+
"""
|
|
492
505
|
|
|
493
506
|
def debug_file(self, path: str):
|
|
494
|
-
"""Called after the debug file has been created.
|
|
507
|
+
"""Called after the debug file has been created.
|
|
508
|
+
|
|
509
|
+
``path`` is an absolute path to the debug file.
|
|
510
|
+
Only called if creating the debug file is enabled.
|
|
511
|
+
"""
|
|
495
512
|
|
|
496
513
|
def close(self):
|
|
497
514
|
"""Called when the whole execution ends.
|
|
@@ -915,23 +932,40 @@ class ListenerV3:
|
|
|
915
932
|
the imported variable file.
|
|
916
933
|
"""
|
|
917
934
|
|
|
918
|
-
def output_file(self, path: Path):
|
|
935
|
+
def output_file(self, path: 'Path | None'):
|
|
919
936
|
"""Called after the output file has been created.
|
|
920
937
|
|
|
921
|
-
|
|
938
|
+
``path`` is an absolute path to the output file or
|
|
939
|
+
``None`` if creating the output file is disabled.
|
|
922
940
|
"""
|
|
923
941
|
|
|
924
942
|
def log_file(self, path: Path):
|
|
925
|
-
"""Called after the log file has been created.
|
|
943
|
+
"""Called after the log file has been created.
|
|
944
|
+
|
|
945
|
+
``path`` is an absolute path to the log file.
|
|
946
|
+
Not called if creating the log file is disabled.
|
|
947
|
+
"""
|
|
926
948
|
|
|
927
949
|
def report_file(self, path: Path):
|
|
928
|
-
"""Called after the report file has been created.
|
|
950
|
+
"""Called after the report file has been created.
|
|
951
|
+
|
|
952
|
+
``path`` is an absolute path to the report file.
|
|
953
|
+
Not called if creating the report file is disabled.
|
|
954
|
+
"""
|
|
929
955
|
|
|
930
956
|
def xunit_file(self, path: Path):
|
|
931
|
-
"""Called after the xunit compatible output file has been created.
|
|
957
|
+
"""Called after the xunit compatible output file has been created.
|
|
958
|
+
|
|
959
|
+
``path`` is an absolute path to the xunit file.
|
|
960
|
+
Only called if creating the xunit file is enabled.
|
|
961
|
+
"""
|
|
932
962
|
|
|
933
963
|
def debug_file(self, path: Path):
|
|
934
|
-
"""Called after the debug file has been created.
|
|
964
|
+
"""Called after the debug file has been created.
|
|
965
|
+
|
|
966
|
+
``path`` is an absolute path to the debug file.
|
|
967
|
+
Only called if creating the debug file is enabled.
|
|
968
|
+
"""
|
|
935
969
|
|
|
936
970
|
def close(self):
|
|
937
971
|
"""Called when the whole execution ends.
|
|
@@ -148,8 +148,6 @@ class ExecutionStatus(RobotError):
|
|
|
148
148
|
if templated:
|
|
149
149
|
return context.continue_on_failure(default=True)
|
|
150
150
|
if self.keyword_timeout:
|
|
151
|
-
if context.in_teardown:
|
|
152
|
-
self.keyword_timeout = False
|
|
153
151
|
return False
|
|
154
152
|
return self.continue_on_failure or context.continue_on_failure()
|
|
155
153
|
|
|
@@ -20,8 +20,6 @@ from pathlib import Path
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
if sys.version_info < (3, 9) and not Path(__file__).exists(): # zipsafe
|
|
23
|
-
# `importlib.resources.files` is new in Python 3.9, but that version does
|
|
24
|
-
# not seem to be compatible with zipapp.
|
|
25
23
|
try:
|
|
26
24
|
from importlib_resources import files
|
|
27
25
|
except ImportError:
|
|
@@ -2415,6 +2415,7 @@ class _RunKeyword(_BuiltInBase):
|
|
|
2415
2415
|
try:
|
|
2416
2416
|
return self.run_keyword(name, *args)
|
|
2417
2417
|
except ExecutionFailed as err:
|
|
2418
|
+
self._reset_keyword_timeout_in_teardown(err, self._context)
|
|
2418
2419
|
if err.dont_continue or err.skip:
|
|
2419
2420
|
raise
|
|
2420
2421
|
count -= 1
|
|
@@ -2434,6 +2435,17 @@ class _RunKeyword(_BuiltInBase):
|
|
|
2434
2435
|
)
|
|
2435
2436
|
self._sleep_in_parts(sleep_time)
|
|
2436
2437
|
|
|
2438
|
+
def _reset_keyword_timeout_in_teardown(self, err, context):
|
|
2439
|
+
# Keyword timeouts in teardowns have been converted to normal failures
|
|
2440
|
+
# to allow execution to continue on higher level:
|
|
2441
|
+
# https://github.com/robotframework/robotframework/issues/3398
|
|
2442
|
+
# We need to reset it here to not continue unnecessarily:
|
|
2443
|
+
# https://github.com/robotframework/robotframework/issues/5237
|
|
2444
|
+
if context.in_teardown:
|
|
2445
|
+
timeouts = [t for t in context.timeouts if t.type == 'Keyword']
|
|
2446
|
+
if timeouts and min(timeouts).timed_out():
|
|
2447
|
+
err.keyword_timeout = True
|
|
2448
|
+
|
|
2437
2449
|
@run_keyword_variant(resolve=1)
|
|
2438
2450
|
def set_variable_if(self, condition, *values):
|
|
2439
2451
|
"""Sets variable based on the given condition.
|
|
@@ -455,9 +455,8 @@ class _List:
|
|
|
455
455
|
normalize = Normalizer(ignore_case).normalize
|
|
456
456
|
list1 = normalize(list1)
|
|
457
457
|
list2 = normalize(list2)
|
|
458
|
-
diffs =
|
|
459
|
-
_verify_condition(not diffs,
|
|
460
|
-
f'Following values were not found from first list: {diffs}',
|
|
458
|
+
diffs = [item for item in list2 if item not in list1]
|
|
459
|
+
_verify_condition(not diffs, f'Following values are missing: {seq2str(diffs)}',
|
|
461
460
|
msg, values)
|
|
462
461
|
|
|
463
462
|
def log_list(self, list_, level='INFO'):
|
|
@@ -19,7 +19,6 @@
|
|
|
19
19
|
|
|
20
20
|
import errno
|
|
21
21
|
import os
|
|
22
|
-
import socket
|
|
23
22
|
import sys
|
|
24
23
|
from contextlib import contextmanager
|
|
25
24
|
try:
|
|
@@ -44,10 +43,12 @@ from robot.utils import console_encode, isatty, WINDOWS
|
|
|
44
43
|
class HighlightingStream:
|
|
45
44
|
|
|
46
45
|
def __init__(self, stream, colors='AUTO', links='AUTO'):
|
|
47
|
-
self.stream = stream
|
|
46
|
+
self.stream = stream or NullStream()
|
|
48
47
|
self._highlighter = self._get_highlighter(stream, colors, links)
|
|
49
48
|
|
|
50
49
|
def _get_highlighter(self, stream, colors, links):
|
|
50
|
+
if not stream:
|
|
51
|
+
return NoHighlighting()
|
|
51
52
|
options = {'AUTO': Highlighter if isatty(stream) else NoHighlighting,
|
|
52
53
|
'ON': Highlighter,
|
|
53
54
|
'OFF': NoHighlighting,
|
|
@@ -103,7 +104,7 @@ class HighlightingStream:
|
|
|
103
104
|
def error(self, message, level):
|
|
104
105
|
self.write('[ ', flush=False)
|
|
105
106
|
self.highlight(level, flush=False)
|
|
106
|
-
self.write(' ]
|
|
107
|
+
self.write(f' ] {message}\n')
|
|
107
108
|
|
|
108
109
|
@contextmanager
|
|
109
110
|
def _highlighting(self, status):
|
|
@@ -120,10 +121,19 @@ class HighlightingStream:
|
|
|
120
121
|
highlighter.reset()
|
|
121
122
|
|
|
122
123
|
def result_file(self, kind, path):
|
|
123
|
-
path = self._highlighter.link(path)
|
|
124
|
+
path = self._highlighter.link(path) if path else 'NONE'
|
|
124
125
|
self.write(f"{kind + ':':8} {path}\n")
|
|
125
126
|
|
|
126
127
|
|
|
128
|
+
class NullStream:
|
|
129
|
+
|
|
130
|
+
def write(self, text):
|
|
131
|
+
pass
|
|
132
|
+
|
|
133
|
+
def flush(self):
|
|
134
|
+
pass
|
|
135
|
+
|
|
136
|
+
|
|
127
137
|
def Highlighter(stream, links=True):
|
|
128
138
|
if os.sep == '/':
|
|
129
139
|
return AnsiHighlighter(stream, links)
|
|
@@ -163,12 +173,7 @@ class AnsiHighlighter:
|
|
|
163
173
|
uri = path.as_uri()
|
|
164
174
|
except ValueError:
|
|
165
175
|
return path
|
|
166
|
-
#
|
|
167
|
-
# Windows Terminal doesn't yet support the host component, though:
|
|
168
|
-
# https://github.com/microsoft/terminal/issues/14116
|
|
169
|
-
if uri[:8] == 'file:///' and not WINDOWS:
|
|
170
|
-
uri = f'file://{socket.getfqdn()}/{uri[8:]}'
|
|
171
|
-
# The hyperlink format is documented here:
|
|
176
|
+
# Terminal hyperlink syntax is documented here:
|
|
172
177
|
# https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
|
|
173
178
|
return f'\033]8;;{uri}\033\\{path}\033]8;;\033\\'
|
|
174
179
|
|
|
@@ -178,6 +183,9 @@ class AnsiHighlighter:
|
|
|
178
183
|
|
|
179
184
|
class NoHighlighting(AnsiHighlighter):
|
|
180
185
|
|
|
186
|
+
def __init__(self, stream=None, links=True):
|
|
187
|
+
super().__init__(stream, links)
|
|
188
|
+
|
|
181
189
|
def link(self, path):
|
|
182
190
|
return path
|
|
183
191
|
|
|
@@ -40,8 +40,9 @@ def write_to_console(msg, newline=True, stream='stdout'):
|
|
|
40
40
|
if newline:
|
|
41
41
|
msg += '\n'
|
|
42
42
|
stream = sys.__stdout__ if stream.lower() != 'stderr' else sys.__stderr__
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
if stream:
|
|
44
|
+
stream.write(console_encode(msg, stream=stream))
|
|
45
|
+
stream.flush()
|
|
45
46
|
|
|
46
47
|
|
|
47
48
|
class AbstractLogger:
|
|
@@ -175,8 +175,7 @@ class TypeInfo(metaclass=SetterAwareType):
|
|
|
175
175
|
- a sequence of supported type hints to create a union from such as
|
|
176
176
|
``[int, float]`` or ``('int', 'list[int]')``
|
|
177
177
|
|
|
178
|
-
In special cases
|
|
179
|
-
more specialized methods like :meth:`from_dict` or :meth:`from_sequence`
|
|
178
|
+
In special cases using a more specialized method like :meth:`from_sequence`
|
|
180
179
|
may be more appropriate than using this generic method.
|
|
181
180
|
"""
|
|
182
181
|
if hint is NOT_SET:
|
|
@@ -52,7 +52,8 @@ class OutputCapturer:
|
|
|
52
52
|
LOGGER.log_output(stdout)
|
|
53
53
|
if stderr:
|
|
54
54
|
LOGGER.log_output(stderr)
|
|
55
|
-
|
|
55
|
+
if sys.__stderr__:
|
|
56
|
+
sys.__stderr__.write(console_encode(stderr, stream=sys.__stderr__))
|
|
56
57
|
|
|
57
58
|
def _release(self):
|
|
58
59
|
stdout = self.stdout.release()
|
|
@@ -31,14 +31,18 @@ class _StopSignalMonitor:
|
|
|
31
31
|
|
|
32
32
|
def __call__(self, signum, frame):
|
|
33
33
|
self._signal_count += 1
|
|
34
|
-
LOGGER.info('Received signal:
|
|
34
|
+
LOGGER.info(f'Received signal: {signum}.')
|
|
35
35
|
if self._signal_count > 1:
|
|
36
|
-
|
|
36
|
+
self._write_to_stderr('Execution forcefully stopped.')
|
|
37
37
|
raise SystemExit()
|
|
38
|
-
|
|
38
|
+
self._write_to_stderr('Second signal will force exit.')
|
|
39
39
|
if self._running_keyword:
|
|
40
40
|
self._stop_execution_gracefully()
|
|
41
41
|
|
|
42
|
+
def _write_to_stderr(self, message):
|
|
43
|
+
if sys.__stderr__:
|
|
44
|
+
sys.__stderr__.write(message + '\n')
|
|
45
|
+
|
|
42
46
|
def _stop_execution_gracefully(self):
|
|
43
47
|
raise ExecutionFailed('Execution terminated by signal', exit=True)
|
|
44
48
|
|
|
@@ -29,9 +29,13 @@ class Failure:
|
|
|
29
29
|
self.teardown_skipped = None
|
|
30
30
|
|
|
31
31
|
def __bool__(self):
|
|
32
|
-
return
|
|
33
|
-
self.setup
|
|
34
|
-
|
|
32
|
+
return (
|
|
33
|
+
self.setup is not None
|
|
34
|
+
or self.test is not None
|
|
35
|
+
or self.teardown is not None
|
|
36
|
+
or self.setup_skipped is not None
|
|
37
|
+
or self.test_skipped is not None
|
|
38
|
+
or self.teardown_skipped is not None
|
|
35
39
|
)
|
|
36
40
|
|
|
37
41
|
|
|
@@ -85,6 +85,10 @@ class UserKeywordRunner:
|
|
|
85
85
|
with context.timeout(timeout):
|
|
86
86
|
exception, return_value = self._execute(kw, result, context)
|
|
87
87
|
if exception and not exception.can_continue(context):
|
|
88
|
+
if context.in_teardown and exception.keyword_timeout:
|
|
89
|
+
# Allow execution to continue on teardowns after timeout.
|
|
90
|
+
# https://github.com/robotframework/robotframework/issues/3398
|
|
91
|
+
exception.keyword_timeout = False
|
|
88
92
|
raise exception
|
|
89
93
|
return_value = self._handle_return_value(return_value, variables)
|
|
90
94
|
if exception:
|
|
@@ -192,7 +192,8 @@ class GlobalVariables(Variables):
|
|
|
192
192
|
'include': Tags(settings.include),
|
|
193
193
|
'exclude': Tags(settings.exclude),
|
|
194
194
|
'skip': Tags(settings.skip),
|
|
195
|
-
'skip_on_failure': Tags(settings.skip_on_failure)
|
|
195
|
+
'skip_on_failure': Tags(settings.skip_on_failure),
|
|
196
|
+
'console_width': settings.console_width
|
|
196
197
|
})),
|
|
197
198
|
('${/}', os.sep),
|
|
198
199
|
('${:}', os.pathsep),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: robotframework
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.1
|
|
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,7 +10,7 @@ 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-7.
|
|
13
|
+
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.1.1.rst
|
|
14
14
|
Project-URL: Slack, http://slack.robotframework.org
|
|
15
15
|
Description: Robot Framework
|
|
16
16
|
===============
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.highlight.min.js
RENAMED
|
File without changes
|
|
File without changes
|
{robotframework-7.1rc2 → robotframework-7.1.1}/src/robot/htmldata/lib/jquery.tablesorter.min.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|