robotframework 6.1.1__zip → 7.0__zip
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {robotframework-6.1.1 → robotframework-7.0}/INSTALL.rst +25 -25
- {robotframework-6.1.1 → robotframework-7.0}/PKG-INFO +6 -8
- {robotframework-6.1.1 → robotframework-7.0}/README.rst +3 -2
- {robotframework-6.1.1 → robotframework-7.0}/setup.py +3 -6
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/__init__.py +4 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/deco.py +60 -14
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/exceptions.py +6 -6
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/interfaces.py +402 -67
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/logger.py +27 -20
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/api/parsing.py +4 -2
- robotframework-7.0/src/robot/api/py.typed +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/gatherfailed.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/languages.py +0 -9
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/settings.py +21 -14
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/storage.js +11 -6
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/htmlfilewriter.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.css +10 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/libdoc.html +10 -0
- robotframework-7.0/src/robot/htmldata/rebot/common.css +362 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/doc_formatting.css +13 -7
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.css +51 -10
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.html +14 -23
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/model.js +2 -4
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.css +83 -19
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/report.html +22 -7
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/testdata.js +10 -3
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/view.js +84 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/template.py +3 -3
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/builder.py +0 -8
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/datatypes.py +9 -10
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlutils.py +4 -7
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonbuilder.py +38 -20
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/model.py +21 -28
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/robotbuilder.py +50 -31
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/standardtypes.py +9 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlbuilder.py +35 -20
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/xmlwriter.py +18 -38
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/BuiltIn.py +255 -205
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Collections.py +384 -240
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/DateTime.py +73 -60
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/OperatingSystem.py +6 -5
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Process.py +26 -27
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Remote.py +40 -36
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/String.py +66 -76
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/XML.py +66 -59
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/__init__.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/__init__.py +5 -5
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/body.py +44 -13
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/configurer.py +15 -11
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/control.py +226 -84
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/filter.py +31 -25
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/itemlist.py +9 -8
- robotframework-7.0/src/robot/model/keyword.py +77 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/message.py +19 -10
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modelobject.py +25 -7
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/namepatterns.py +3 -25
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/stats.py +9 -15
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tags.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testcase.py +15 -27
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/testsuite.py +17 -26
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/visitor.py +35 -8
- robotframework-7.0/src/robot/output/console/dotted.py +90 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/quiet.py +3 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/verbose.py +61 -61
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/debugfile.py +39 -24
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/filelogger.py +18 -15
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/librarylogger.py +3 -2
- robotframework-7.0/src/robot/output/listeners.py +753 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/logger.py +216 -80
- robotframework-7.0/src/robot/output/loggerapi.py +215 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/loggerhelper.py +23 -56
- robotframework-7.0/src/robot/output/output.py +185 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/stdoutlogsplitter.py +8 -5
- robotframework-7.0/src/robot/output/xmllogger.py +459 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/blocklexers.py +17 -13
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/context.py +12 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/lexer.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/settings.py +6 -3
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/statementlexers.py +39 -10
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokens.py +27 -29
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/blocks.py +19 -6
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/statements.py +193 -94
- robotframework-7.0/src/robot/parsing/model/visitor.py +100 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/rebot.py +2 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/expandkeywordmatcher.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsbuildingcontext.py +8 -6
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsmodelbuilders.py +88 -61
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/logreportwriters.py +16 -10
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/outputwriter.py +18 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/resultwriter.py +4 -4
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/stringcache.py +3 -3
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/xunitwriter.py +15 -21
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/__init__.py +3 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/configurer.py +12 -9
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionresult.py +56 -8
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/flattenkeywordmatcher.py +48 -9
- robotframework-7.0/src/robot/result/keywordremover.py +207 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/merger.py +1 -1
- robotframework-7.0/src/robot/result/model.py +1185 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/modeldeprecation.py +9 -3
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/resultbuilder.py +46 -36
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/xmlelementhandlers.py +83 -43
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/run.py +2 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/__init__.py +14 -4
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/__init__.py +2 -1
- robotframework-7.0/src/robot/running/arguments/argumentconverter.py +100 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentmapper.py +26 -24
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentparser.py +82 -60
- robotframework-7.0/src/robot/running/arguments/argumentresolver.py +158 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentspec.py +83 -116
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/argumentvalidator.py +33 -27
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/customconverters.py +15 -12
- robotframework-7.0/src/robot/running/arguments/embedded.py +145 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/arguments/typeconverters.py +233 -213
- robotframework-7.0/src/robot/running/arguments/typeinfo.py +317 -0
- robotframework-7.0/src/robot/running/arguments/typeinfoparser.py +219 -0
- robotframework-7.0/src/robot/running/arguments/typevalidator.py +60 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/bodyrunner.py +147 -129
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/builders.py +2 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/parsers.py +10 -11
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/settings.py +9 -17
- robotframework-7.0/src/robot/running/builder/transformers.py +535 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/context.py +113 -31
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/dynamicmethods.py +62 -34
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/importer.py +27 -49
- robotframework-7.0/src/robot/running/invalidkeyword.py +67 -0
- robotframework-7.0/src/robot/running/keywordfinder.py +91 -0
- robotframework-7.0/src/robot/running/keywordimplementation.py +164 -0
- robotframework-7.0/src/robot/running/librarykeyword.py +392 -0
- robotframework-7.0/src/robot/running/librarykeywordrunner.py +250 -0
- robotframework-7.0/src/robot/running/libraryscopes.py +115 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/model.py +195 -377
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/namespace.py +124 -137
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/outputcapture.py +20 -12
- robotframework-7.0/src/robot/running/resourcemodel.py +448 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/statusreporter.py +16 -13
- robotframework-7.0/src/robot/running/suiterunner.py +265 -0
- robotframework-7.0/src/robot/running/testlibraries.py +500 -0
- robotframework-7.0/src/robot/running/userkeywordrunner.py +260 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/testdoc.py +18 -13
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/__init__.py +53 -35
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/connectioncache.py +64 -59
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/dotdict.py +3 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encodingsniffer.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/escaping.py +19 -19
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/importer.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markupwriters.py +23 -15
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/misc.py +1 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/normalizing.py +9 -24
- robotframework-7.0/src/robot/utils/notset.py +33 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/platform.py +15 -5
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotio.py +9 -9
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotpath.py +1 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottime.py +122 -90
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robottypes.py +21 -31
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/setter.py +0 -5
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/text.py +7 -4
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/unic.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/__init__.py +2 -2
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/assigner.py +17 -19
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/evaluation.py +20 -17
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/filesetter.py +80 -80
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/replacer.py +33 -36
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/scopes.py +17 -12
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/search.py +66 -41
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/store.py +14 -16
- robotframework-7.0/src/robot/variables/tablesetter.py +164 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/variables.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/version.py +1 -1
- {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/PKG-INFO +6 -8
- {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/SOURCES.txt +10 -8
- {robotframework-6.1.1 → robotframework-7.0}/tasks.py +6 -6
- robotframework-6.1.1/src/robot/htmldata/rebot/common.css +0 -239
- 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/output/xmllogger.py +0 -354
- robotframework-6.1.1/src/robot/parsing/model/visitor.py +0 -67
- robotframework-6.1.1/src/robot/result/keywordremover.py +0 -183
- robotframework-6.1.1/src/robot/result/model.py +0 -957
- robotframework-6.1.1/src/robot/running/arguments/argumentconverter.py +0 -79
- robotframework-6.1.1/src/robot/running/arguments/argumentresolver.py +0 -131
- robotframework-6.1.1/src/robot/running/arguments/embedded.py +0 -146
- robotframework-6.1.1/src/robot/running/arguments/typevalidator.py +0 -56
- robotframework-6.1.1/src/robot/running/builder/transformers.py +0 -642
- robotframework-6.1.1/src/robot/running/handlers.py +0 -321
- robotframework-6.1.1/src/robot/running/handlerstore.py +0 -66
- robotframework-6.1.1/src/robot/running/librarykeywordrunner.py +0 -238
- robotframework-6.1.1/src/robot/running/libraryscopes.py +0 -97
- robotframework-6.1.1/src/robot/running/modelcombiner.py +0 -32
- robotframework-6.1.1/src/robot/running/suiterunner.py +0 -248
- robotframework-6.1.1/src/robot/running/testlibraries.py +0 -423
- robotframework-6.1.1/src/robot/running/usererrorhandler.py +0 -75
- robotframework-6.1.1/src/robot/running/userkeyword.py +0 -111
- robotframework-6.1.1/src/robot/running/userkeywordrunner.py +0 -274
- robotframework-6.1.1/src/robot/variables/tablesetter.py +0 -156
- {robotframework-6.1.1 → robotframework-7.0}/AUTHORS.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/BUILD.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/CONTRIBUTING.rst +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/COPYRIGHT.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/LICENSE.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/MANIFEST.in +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/setup.cfg +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/__main__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/conf/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/errors.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/jsonwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/doc_formatting.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/print.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/libdoc/pygments.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdoc.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/consoleviewer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/htmlwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/output.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libdocpkg/writer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Dialogs.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Easter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Screenshot.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/Telnet.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/libraries/dialogs_py.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/fixture.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/metadata.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/modifier.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/statistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/suitestatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagsetter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/tagstatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/model/totalstatistics.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/console/highlighting.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/output/pyloggingconf.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/lexer/tokenizer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/model/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/blockparsers.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/fileparser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/parser/parser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/parsing/suitestructure.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/pythonpathsetter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jsexecutionresult.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/reporting/jswriter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/executionerrors.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/messagefilter.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/suiteteardownfailed.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/result/visitor.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/builder/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/randomizer.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/runkwregister.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/signalhandler.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/status.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/__init__.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/posix.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/running/timeouts/windows.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/application.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/argumentparser.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/asserts.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/charwidth.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/compress.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/encoding.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/error.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/etreewrapper.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/filereader.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/frange.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/htmlformatters.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/markuputils.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/match.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/recommendations.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/restreader.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotenv.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/sortable.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/utils/typehints.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/finders.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/notfound.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robot/variables/resolvable.py +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/entry_points.txt +0 -0
- {robotframework-6.1.1 → robotframework-7.0}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
# Copyright 2008-2015 Nokia Networks
|
|
2
|
-
# Copyright 2016- Robot Framework Foundation
|
|
3
|
-
#
|
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
# you may not use this file except in compliance with the License.
|
|
6
|
-
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
# See the License for the specific language governing permissions and
|
|
14
|
-
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
from itertools import chain
|
|
17
|
-
|
|
18
|
-
from robot.errors import (BreakLoop, ContinueLoop, DataError, ExecutionFailed,
|
|
19
|
-
ExecutionPassed, ExecutionStatus, PassExecution,
|
|
20
|
-
ReturnFromKeyword, UserKeywordExecutionFailed, VariableError)
|
|
21
|
-
from robot.result import Keyword as KeywordResult
|
|
22
|
-
from robot.utils import DotDict, getshortdoc, prepr, split_tags_from_doc
|
|
23
|
-
from robot.variables import is_list_variable, VariableAssignment
|
|
24
|
-
|
|
25
|
-
from .arguments import DefaultValue
|
|
26
|
-
from .bodyrunner import BodyRunner, KeywordRunner
|
|
27
|
-
from .statusreporter import StatusReporter
|
|
28
|
-
from .timeouts import KeywordTimeout
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
class UserKeywordRunner:
|
|
32
|
-
|
|
33
|
-
def __init__(self, handler, name=None):
|
|
34
|
-
self._handler = handler
|
|
35
|
-
self.name = name or handler.name
|
|
36
|
-
self.pre_run_messages = ()
|
|
37
|
-
|
|
38
|
-
@property
|
|
39
|
-
def longname(self):
|
|
40
|
-
libname = self._handler.libname
|
|
41
|
-
return f'{libname}.{self.name}' if libname else self.name
|
|
42
|
-
|
|
43
|
-
@property
|
|
44
|
-
def libname(self):
|
|
45
|
-
return self._handler.libname
|
|
46
|
-
|
|
47
|
-
@property
|
|
48
|
-
def tags(self):
|
|
49
|
-
return self._handler.tags
|
|
50
|
-
|
|
51
|
-
@property
|
|
52
|
-
def source(self):
|
|
53
|
-
return self._handler.source
|
|
54
|
-
|
|
55
|
-
@property
|
|
56
|
-
def arguments(self):
|
|
57
|
-
""":rtype: :py:class:`robot.running.arguments.ArgumentSpec`"""
|
|
58
|
-
return self._handler.arguments
|
|
59
|
-
|
|
60
|
-
def run(self, kw, context, run=True):
|
|
61
|
-
assignment = VariableAssignment(kw.assign)
|
|
62
|
-
result = self._get_result(kw, assignment, context.variables)
|
|
63
|
-
with StatusReporter(kw, result, context, run):
|
|
64
|
-
if self._handler.private:
|
|
65
|
-
context.warn_on_invalid_private_call(self._handler)
|
|
66
|
-
with assignment.assigner(context) as assigner:
|
|
67
|
-
if run:
|
|
68
|
-
return_value = self._run(context, kw.args, result)
|
|
69
|
-
assigner.assign(return_value)
|
|
70
|
-
return return_value
|
|
71
|
-
|
|
72
|
-
def _get_result(self, kw, assignment, variables):
|
|
73
|
-
handler = self._handler
|
|
74
|
-
doc = variables.replace_string(handler.doc, ignore_errors=True)
|
|
75
|
-
doc, tags = split_tags_from_doc(doc)
|
|
76
|
-
tags = variables.replace_list(handler.tags, ignore_errors=True) + tags
|
|
77
|
-
return KeywordResult(kwname=self.name,
|
|
78
|
-
libname=handler.libname,
|
|
79
|
-
doc=getshortdoc(doc),
|
|
80
|
-
args=kw.args,
|
|
81
|
-
assign=tuple(assignment),
|
|
82
|
-
tags=tags,
|
|
83
|
-
type=kw.type)
|
|
84
|
-
|
|
85
|
-
def _run(self, context, args, result):
|
|
86
|
-
if self.pre_run_messages:
|
|
87
|
-
for message in self.pre_run_messages:
|
|
88
|
-
context.output.message(message)
|
|
89
|
-
variables = context.variables
|
|
90
|
-
args = self._resolve_arguments(args, variables)
|
|
91
|
-
with context.user_keyword(self._handler):
|
|
92
|
-
self._set_arguments(args, context)
|
|
93
|
-
timeout = self._get_timeout(variables)
|
|
94
|
-
if timeout is not None:
|
|
95
|
-
result.timeout = str(timeout)
|
|
96
|
-
with context.timeout(timeout):
|
|
97
|
-
exception, return_ = self._execute(context)
|
|
98
|
-
if exception and not exception.can_continue(context):
|
|
99
|
-
raise exception
|
|
100
|
-
return_value = self._get_return_value(variables, return_)
|
|
101
|
-
if exception:
|
|
102
|
-
exception.return_value = return_value
|
|
103
|
-
raise exception
|
|
104
|
-
return return_value
|
|
105
|
-
|
|
106
|
-
def _get_timeout(self, variables=None):
|
|
107
|
-
timeout = self._handler.timeout
|
|
108
|
-
return KeywordTimeout(timeout, variables) if timeout else None
|
|
109
|
-
|
|
110
|
-
def _resolve_arguments(self, arguments, variables=None):
|
|
111
|
-
return self.arguments.resolve(arguments, variables)
|
|
112
|
-
|
|
113
|
-
def _set_arguments(self, arguments, context):
|
|
114
|
-
positional, named = arguments
|
|
115
|
-
variables = context.variables
|
|
116
|
-
args, kwargs = self.arguments.map(positional, named,
|
|
117
|
-
replace_defaults=False)
|
|
118
|
-
self._set_variables(args, kwargs, variables)
|
|
119
|
-
context.output.trace(lambda: self._trace_log_args_message(variables),
|
|
120
|
-
write_if_flat=False)
|
|
121
|
-
|
|
122
|
-
def _set_variables(self, positional, kwargs, variables):
|
|
123
|
-
spec = self.arguments
|
|
124
|
-
args, varargs = self._split_args_and_varargs(positional)
|
|
125
|
-
kwonly, kwargs = self._split_kwonly_and_kwargs(kwargs)
|
|
126
|
-
for name, value in chain(zip(spec.positional, args), kwonly):
|
|
127
|
-
if isinstance(value, DefaultValue):
|
|
128
|
-
value = value.resolve(variables)
|
|
129
|
-
variables[f'${{{name}}}'] = value
|
|
130
|
-
if spec.var_positional:
|
|
131
|
-
variables[f'@{{{spec.var_positional}}}'] = varargs
|
|
132
|
-
if spec.var_named:
|
|
133
|
-
variables[f'&{{{spec.var_named}}}'] = DotDict(kwargs)
|
|
134
|
-
|
|
135
|
-
def _split_args_and_varargs(self, args):
|
|
136
|
-
if not self.arguments.var_positional:
|
|
137
|
-
return args, []
|
|
138
|
-
positional = len(self.arguments.positional)
|
|
139
|
-
return args[:positional], args[positional:]
|
|
140
|
-
|
|
141
|
-
def _split_kwonly_and_kwargs(self, all_kwargs):
|
|
142
|
-
kwonly = []
|
|
143
|
-
kwargs = []
|
|
144
|
-
for name, value in all_kwargs:
|
|
145
|
-
target = kwonly if name in self.arguments.named_only else kwargs
|
|
146
|
-
target.append((name, value))
|
|
147
|
-
return kwonly, kwargs
|
|
148
|
-
|
|
149
|
-
def _trace_log_args_message(self, variables):
|
|
150
|
-
return self._format_trace_log_args_message(
|
|
151
|
-
self._format_args_for_trace_logging(), variables)
|
|
152
|
-
|
|
153
|
-
def _format_args_for_trace_logging(self):
|
|
154
|
-
args = [f'${{{arg}}}' for arg in self.arguments.positional]
|
|
155
|
-
if self.arguments.var_positional:
|
|
156
|
-
args.append(f'@{{{self.arguments.var_positional}}}')
|
|
157
|
-
if self.arguments.var_named:
|
|
158
|
-
args.append(f'&{{{self.arguments.var_named}}}')
|
|
159
|
-
return args
|
|
160
|
-
|
|
161
|
-
def _format_trace_log_args_message(self, args, variables):
|
|
162
|
-
args = ' | '.join(f'{name}={prepr(variables[name])}' for name in args)
|
|
163
|
-
return f'Arguments: [ {args} ]'
|
|
164
|
-
|
|
165
|
-
def _execute(self, context):
|
|
166
|
-
handler = self._handler
|
|
167
|
-
if context.dry_run and handler.tags.robot('no-dry-run'):
|
|
168
|
-
return None, None
|
|
169
|
-
error = return_ = pass_ = None
|
|
170
|
-
try:
|
|
171
|
-
BodyRunner(context).run(handler.body)
|
|
172
|
-
except ReturnFromKeyword as exception:
|
|
173
|
-
return_ = exception
|
|
174
|
-
error = exception.earlier_failures
|
|
175
|
-
except (BreakLoop, ContinueLoop) as exception:
|
|
176
|
-
pass_ = exception
|
|
177
|
-
except ExecutionPassed as exception:
|
|
178
|
-
pass_ = exception
|
|
179
|
-
error = exception.earlier_failures
|
|
180
|
-
if error:
|
|
181
|
-
error.continue_on_failure = False
|
|
182
|
-
except ExecutionFailed as exception:
|
|
183
|
-
error = exception
|
|
184
|
-
if handler.teardown:
|
|
185
|
-
with context.keyword_teardown(error):
|
|
186
|
-
td_error = self._run_teardown(handler.teardown, context)
|
|
187
|
-
else:
|
|
188
|
-
td_error = None
|
|
189
|
-
if error or td_error:
|
|
190
|
-
error = UserKeywordExecutionFailed(error, td_error)
|
|
191
|
-
return error or pass_, return_
|
|
192
|
-
|
|
193
|
-
def _get_return_value(self, variables, return_):
|
|
194
|
-
ret = self._handler.return_value if not return_ else return_.return_value
|
|
195
|
-
if not ret:
|
|
196
|
-
return None
|
|
197
|
-
contains_list_var = any(is_list_variable(item) for item in ret)
|
|
198
|
-
try:
|
|
199
|
-
ret = variables.replace_list(ret)
|
|
200
|
-
except DataError as err:
|
|
201
|
-
raise VariableError(f'Replacing variables from keyword return '
|
|
202
|
-
f'value failed: {err}')
|
|
203
|
-
if len(ret) != 1 or contains_list_var:
|
|
204
|
-
return ret
|
|
205
|
-
return ret[0]
|
|
206
|
-
|
|
207
|
-
def _run_teardown(self, teardown, context):
|
|
208
|
-
try:
|
|
209
|
-
name = context.variables.replace_string(teardown.name)
|
|
210
|
-
except DataError as err:
|
|
211
|
-
if context.dry_run:
|
|
212
|
-
return None
|
|
213
|
-
return ExecutionFailed(err.message, syntax=True)
|
|
214
|
-
if name.upper() in ('', 'NONE'):
|
|
215
|
-
return None
|
|
216
|
-
try:
|
|
217
|
-
KeywordRunner(context).run(teardown, name)
|
|
218
|
-
except PassExecution:
|
|
219
|
-
return None
|
|
220
|
-
except ExecutionStatus as err:
|
|
221
|
-
return err
|
|
222
|
-
return None
|
|
223
|
-
|
|
224
|
-
def dry_run(self, kw, context):
|
|
225
|
-
assignment = VariableAssignment(kw.assign)
|
|
226
|
-
result = self._get_result(kw, assignment, context.variables)
|
|
227
|
-
with StatusReporter(kw, result, context):
|
|
228
|
-
assignment.validate_assignment()
|
|
229
|
-
self._dry_run(context, kw.args, result)
|
|
230
|
-
|
|
231
|
-
def _dry_run(self, context, args, result):
|
|
232
|
-
if self.pre_run_messages:
|
|
233
|
-
for message in self.pre_run_messages:
|
|
234
|
-
context.output.message(message)
|
|
235
|
-
self._resolve_arguments(args)
|
|
236
|
-
with context.user_keyword(self._handler):
|
|
237
|
-
timeout = self._get_timeout()
|
|
238
|
-
if timeout:
|
|
239
|
-
result.timeout = str(timeout)
|
|
240
|
-
error, _ = self._execute(context)
|
|
241
|
-
if error:
|
|
242
|
-
raise error
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
class EmbeddedArgumentsRunner(UserKeywordRunner):
|
|
246
|
-
|
|
247
|
-
def __init__(self, handler, name):
|
|
248
|
-
super().__init__(handler, name)
|
|
249
|
-
self.embedded_args = handler.embedded.match(name).groups()
|
|
250
|
-
|
|
251
|
-
def _resolve_arguments(self, args, variables=None):
|
|
252
|
-
self.arguments.resolve(args, variables)
|
|
253
|
-
if variables:
|
|
254
|
-
embedded = [variables.replace_scalar(e) for e in self.embedded_args]
|
|
255
|
-
self.embedded_args = self._handler.embedded.map(embedded)
|
|
256
|
-
return super()._resolve_arguments(args, variables)
|
|
257
|
-
|
|
258
|
-
def _set_arguments(self, args, context):
|
|
259
|
-
variables = context.variables
|
|
260
|
-
for name, value in self.embedded_args:
|
|
261
|
-
variables[f'${{{name}}}'] = value
|
|
262
|
-
super()._set_arguments(args, context)
|
|
263
|
-
context.output.trace(lambda: self._trace_log_args_message(variables),
|
|
264
|
-
write_if_flat=False)
|
|
265
|
-
|
|
266
|
-
def _trace_log_args_message(self, variables):
|
|
267
|
-
args = [f'${{{arg}}}' for arg in self._handler.embedded.args]
|
|
268
|
-
args += self._format_args_for_trace_logging()
|
|
269
|
-
return self._format_trace_log_args_message(args, variables)
|
|
270
|
-
|
|
271
|
-
def _get_result(self, kw, assignment, variables):
|
|
272
|
-
result = UserKeywordRunner._get_result(self, kw, assignment, variables)
|
|
273
|
-
result.sourcename = self._handler.name
|
|
274
|
-
return result
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
# Copyright 2008-2015 Nokia Networks
|
|
2
|
-
# Copyright 2016- Robot Framework Foundation
|
|
3
|
-
#
|
|
4
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
-
# you may not use this file except in compliance with the License.
|
|
6
|
-
# You may obtain a copy of the License at
|
|
7
|
-
#
|
|
8
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
-
#
|
|
10
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
# See the License for the specific language governing permissions and
|
|
14
|
-
# limitations under the License.
|
|
15
|
-
|
|
16
|
-
from contextlib import contextmanager
|
|
17
|
-
|
|
18
|
-
from robot.errors import DataError
|
|
19
|
-
from robot.utils import DotDict, is_string, split_from_equals
|
|
20
|
-
|
|
21
|
-
from .resolvable import Resolvable
|
|
22
|
-
from .search import is_assign, is_list_variable, is_dict_variable
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class VariableTableSetter:
|
|
26
|
-
|
|
27
|
-
def __init__(self, store):
|
|
28
|
-
self._store = store
|
|
29
|
-
|
|
30
|
-
def set(self, variables, overwrite=False):
|
|
31
|
-
for name, value in self._get_items(variables):
|
|
32
|
-
self._store.add(name, value, overwrite, decorated=False)
|
|
33
|
-
|
|
34
|
-
def _get_items(self, variables):
|
|
35
|
-
for var in variables:
|
|
36
|
-
if var.error:
|
|
37
|
-
var.report_invalid_syntax(var.error)
|
|
38
|
-
continue
|
|
39
|
-
try:
|
|
40
|
-
value = VariableTableValue(var.value, var.name,
|
|
41
|
-
var.report_invalid_syntax)
|
|
42
|
-
except DataError as err:
|
|
43
|
-
var.report_invalid_syntax(err)
|
|
44
|
-
else:
|
|
45
|
-
yield var.name[2:-1], value
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
def VariableTableValue(value, name, error_reporter=None):
|
|
49
|
-
if not is_assign(name):
|
|
50
|
-
raise DataError("Invalid variable name '%s'." % name)
|
|
51
|
-
VariableTableValue = {'$': ScalarVariableTableValue,
|
|
52
|
-
'@': ListVariableTableValue,
|
|
53
|
-
'&': DictVariableTableValue}[name[0]]
|
|
54
|
-
return VariableTableValue(value, error_reporter)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
class VariableTableValueBase(Resolvable):
|
|
58
|
-
|
|
59
|
-
def __init__(self, values, error_reporter=None):
|
|
60
|
-
self._values = self._format_values(values)
|
|
61
|
-
self._error_reporter = error_reporter
|
|
62
|
-
self._resolving = False
|
|
63
|
-
|
|
64
|
-
def _format_values(self, values):
|
|
65
|
-
return values
|
|
66
|
-
|
|
67
|
-
def resolve(self, variables):
|
|
68
|
-
with self._avoid_recursion:
|
|
69
|
-
return self._replace_variables(self._values, variables)
|
|
70
|
-
|
|
71
|
-
@property
|
|
72
|
-
@contextmanager
|
|
73
|
-
def _avoid_recursion(self):
|
|
74
|
-
if self._resolving:
|
|
75
|
-
raise DataError('Recursive variable definition.')
|
|
76
|
-
self._resolving = True
|
|
77
|
-
try:
|
|
78
|
-
yield
|
|
79
|
-
finally:
|
|
80
|
-
self._resolving = False
|
|
81
|
-
|
|
82
|
-
def _replace_variables(self, value, variables):
|
|
83
|
-
raise NotImplementedError
|
|
84
|
-
|
|
85
|
-
def report_error(self, error):
|
|
86
|
-
if self._error_reporter:
|
|
87
|
-
self._error_reporter(str(error))
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
class ScalarVariableTableValue(VariableTableValueBase):
|
|
91
|
-
|
|
92
|
-
def _format_values(self, values):
|
|
93
|
-
separator = None
|
|
94
|
-
if is_string(values):
|
|
95
|
-
values = [values]
|
|
96
|
-
elif values and values[0].startswith('SEPARATOR='):
|
|
97
|
-
separator = values[0][10:]
|
|
98
|
-
values = values[1:]
|
|
99
|
-
return separator, values
|
|
100
|
-
|
|
101
|
-
def _replace_variables(self, values, variables):
|
|
102
|
-
separator, values = values
|
|
103
|
-
# Avoid converting single value to string.
|
|
104
|
-
if self._is_single_value(separator, values):
|
|
105
|
-
return variables.replace_scalar(values[0])
|
|
106
|
-
if separator is None:
|
|
107
|
-
separator = ' '
|
|
108
|
-
separator = variables.replace_string(separator)
|
|
109
|
-
values = variables.replace_list(values)
|
|
110
|
-
return separator.join(str(item) for item in values)
|
|
111
|
-
|
|
112
|
-
def _is_single_value(self, separator, values):
|
|
113
|
-
return (separator is None and len(values) == 1 and
|
|
114
|
-
not is_list_variable(values[0]))
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
class ListVariableTableValue(VariableTableValueBase):
|
|
118
|
-
|
|
119
|
-
def _replace_variables(self, values, variables):
|
|
120
|
-
return variables.replace_list(values)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
class DictVariableTableValue(VariableTableValueBase):
|
|
124
|
-
|
|
125
|
-
def _format_values(self, values):
|
|
126
|
-
return list(self._yield_formatted(values))
|
|
127
|
-
|
|
128
|
-
def _yield_formatted(self, values):
|
|
129
|
-
for item in values:
|
|
130
|
-
if is_dict_variable(item):
|
|
131
|
-
yield item
|
|
132
|
-
else:
|
|
133
|
-
name, value = split_from_equals(item)
|
|
134
|
-
if value is None:
|
|
135
|
-
raise DataError(
|
|
136
|
-
"Invalid dictionary variable item '%s'. "
|
|
137
|
-
"Items must use 'name=value' syntax or be dictionary "
|
|
138
|
-
"variables themselves." % item
|
|
139
|
-
)
|
|
140
|
-
yield name, value
|
|
141
|
-
|
|
142
|
-
def _replace_variables(self, values, variables):
|
|
143
|
-
try:
|
|
144
|
-
return DotDict(self._yield_replaced(values,
|
|
145
|
-
variables.replace_scalar))
|
|
146
|
-
except TypeError as err:
|
|
147
|
-
raise DataError('Creating dictionary failed: %s' % err)
|
|
148
|
-
|
|
149
|
-
def _yield_replaced(self, values, replace_scalar):
|
|
150
|
-
for item in values:
|
|
151
|
-
if isinstance(item, tuple):
|
|
152
|
-
key, values = item
|
|
153
|
-
yield replace_scalar(key), replace_scalar(values)
|
|
154
|
-
else:
|
|
155
|
-
for key, values in replace_scalar(item).items():
|
|
156
|
-
yield key, values
|
|
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-6.1.1 → robotframework-7.0}/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
|
|
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
|