robotframework 7.2.2__tar.gz → 7.3rc2__tar.gz
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.2.2 → robotframework-7.3rc2}/BUILD.rst +18 -7
- robotframework-7.3rc2/PKG-INFO +190 -0
- robotframework-7.3rc2/pyproject.toml +39 -0
- robotframework-7.3rc2/setup.py +85 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/__init__.py +4 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/__main__.py +4 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/__init__.py +9 -9
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/deco.py +34 -34
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/exceptions.py +8 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/interfaces.py +101 -62
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/logger.py +20 -19
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/parsing.py +49 -49
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/conf/__init__.py +7 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/conf/gatherfailed.py +10 -8
- robotframework-7.3rc2/src/robot/conf/languages.py +1462 -0
- robotframework-7.3rc2/src/robot/conf/settings.py +800 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/errors.py +94 -59
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/__init__.py +6 -7
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/htmlfilewriter.py +16 -14
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/jsonwriter.py +31 -22
- robotframework-7.3rc2/src/robot/htmldata/libdoc/libdoc.html +408 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/template.py +13 -12
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdoc.py +89 -45
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/__init__.py +3 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/builder.py +13 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/consoleviewer.py +22 -22
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/datatypes.py +61 -35
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/htmlutils.py +51 -39
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/htmlwriter.py +9 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/jsonbuilder.py +79 -56
- robotframework-7.3rc2/src/robot/libdocpkg/languages.py +29 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/model.py +91 -60
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/output.py +3 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/robotbuilder.py +61 -44
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/standardtypes.py +40 -36
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/writer.py +7 -7
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/xmlbuilder.py +84 -58
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/xmlwriter.py +78 -61
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/BuiltIn.py +678 -441
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Collections.py +268 -127
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/DateTime.py +76 -42
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Dialogs.py +16 -15
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Easter.py +4 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/OperatingSystem.py +162 -158
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Process.py +304 -172
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Remote.py +83 -63
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Screenshot.py +79 -65
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/String.py +98 -61
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/Telnet.py +257 -160
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/XML.py +205 -110
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/__init__.py +16 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libraries/dialogs_py.py +92 -60
- robotframework-7.3rc2/src/robot/logo.png +0 -0
- robotframework-7.3rc2/src/robot/model/__init__.py +66 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/body.py +106 -81
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/configurer.py +36 -20
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/control.py +225 -179
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/filter.py +35 -27
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/fixture.py +8 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/itemlist.py +61 -50
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/keyword.py +18 -14
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/message.py +19 -18
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/metadata.py +7 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/modelobject.py +72 -51
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/modifier.py +12 -8
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/namepatterns.py +2 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/statistics.py +23 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/stats.py +38 -21
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/suitestatistics.py +1 -1
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/tags.py +50 -48
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/tagsetter.py +8 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/tagstatistics.py +28 -19
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/testcase.py +70 -43
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/testsuite.py +121 -76
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/totalstatistics.py +5 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/model/visitor.py +69 -68
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/__init__.py +5 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/console/__init__.py +17 -8
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/console/dotted.py +26 -24
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/console/highlighting.py +44 -33
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/console/quiet.py +3 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/console/verbose.py +42 -24
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/debugfile.py +30 -28
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/filelogger.py +21 -12
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/jsonlogger.py +109 -82
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/librarylogger.py +10 -11
- robotframework-7.3rc2/src/robot/output/listeners.py +613 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/logger.py +36 -36
- robotframework-7.3rc2/src/robot/output/loggerapi.py +271 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/loggerhelper.py +29 -26
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/loglevel.py +9 -9
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/output.py +14 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/outputfile.py +51 -13
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/pyloggingconf.py +13 -11
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/output/stdoutlogsplitter.py +12 -9
- robotframework-7.3rc2/src/robot/output/xmllogger.py +350 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/__init__.py +23 -5
- {robotframework-7.2.2/src/robot/running/builder → robotframework-7.3rc2/src/robot/parsing/lexer}/__init__.py +6 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/blocklexers.py +180 -76
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/context.py +30 -23
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/lexer.py +41 -25
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/settings.py +112 -103
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/statementlexers.py +60 -49
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/tokenizer.py +23 -22
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/lexer/tokens.py +149 -120
- robotframework-7.3rc2/src/robot/parsing/model/__init__.py +38 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/model/blocks.py +153 -105
- robotframework-7.3rc2/src/robot/parsing/model/statements.py +1783 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/model/visitor.py +12 -11
- {robotframework-7.2.2/src/robot/parsing/lexer → robotframework-7.3rc2/src/robot/parsing/parser}/__init__.py +5 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/parser/blockparsers.py +13 -12
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/parser/fileparser.py +16 -14
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/parser/parser.py +33 -15
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/parsing/suitestructure.py +58 -49
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/pythonpathsetter.py +3 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/rebot.py +20 -12
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/__init__.py +1 -1
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/expandkeywordmatcher.py +6 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/jsbuildingcontext.py +17 -9
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/jsexecutionresult.py +30 -16
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/jsmodelbuilders.py +124 -63
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/jswriter.py +32 -29
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/logreportwriters.py +14 -14
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/outputwriter.py +3 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/resultwriter.py +31 -23
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/stringcache.py +2 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/reporting/xunitwriter.py +34 -26
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/__init__.py +26 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/configurer.py +12 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/executionerrors.py +7 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/executionresult.py +83 -56
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/flattenkeywordmatcher.py +25 -23
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/keywordremover.py +27 -25
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/merger.py +35 -26
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/messagefilter.py +4 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/model.py +376 -291
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/modeldeprecation.py +9 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/resultbuilder.py +27 -23
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/suiteteardownfailed.py +4 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/visitor.py +1 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/result/xmlelementhandlers.py +162 -138
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/run.py +37 -23
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/__init__.py +42 -12
- robotframework-7.3rc2/src/robot/running/arguments/__init__.py +26 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/argumentconverter.py +36 -20
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/argumentmapper.py +8 -7
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/argumentparser.py +94 -51
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/argumentresolver.py +25 -15
- robotframework-7.3rc2/src/robot/running/arguments/argumentspec.py +286 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/argumentvalidator.py +19 -15
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/customconverters.py +30 -16
- robotframework-7.3rc2/src/robot/running/arguments/embedded.py +195 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/typeconverters.py +254 -245
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/typeinfo.py +209 -114
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/typeinfoparser.py +25 -24
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/arguments/typevalidator.py +17 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/bodyrunner.py +236 -130
- robotframework-7.3rc2/src/robot/running/builder/__init__.py +21 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/builder/builders.py +77 -58
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/builder/parsers.py +59 -31
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/builder/settings.py +37 -33
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/builder/transformers.py +149 -83
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/context.py +77 -41
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/dynamicmethods.py +37 -28
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/importer.py +31 -18
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/invalidkeyword.py +13 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/keywordfinder.py +16 -16
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/keywordimplementation.py +45 -35
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/librarykeyword.py +207 -127
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/librarykeywordrunner.py +131 -80
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/libraryscopes.py +6 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/model.py +307 -202
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/namespace.py +108 -76
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/randomizer.py +7 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/resourcemodel.py +183 -127
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/runkwregister.py +10 -4
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/signalhandler.py +17 -15
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/status.py +71 -57
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/statusreporter.py +16 -7
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/suiterunner.py +100 -73
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/testlibraries.py +258 -168
- {robotframework-7.2.2/src/robot/parsing/parser → robotframework-7.3rc2/src/robot/running/timeouts}/__init__.py +1 -1
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/timeouts/nosupport.py +4 -5
- robotframework-7.3rc2/src/robot/running/timeouts/posix.py +57 -0
- robotframework-7.3rc2/src/robot/running/timeouts/runner.py +89 -0
- robotframework-7.3rc2/src/robot/running/timeouts/timeout.py +144 -0
- robotframework-7.3rc2/src/robot/running/timeouts/windows.py +84 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/userkeywordrunner.py +93 -67
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/testdoc.py +62 -56
- robotframework-7.3rc2/src/robot/utils/__init__.py +251 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/application.py +40 -18
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/argumentparser.py +115 -98
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/asserts.py +35 -29
- robotframework-7.3rc2/src/robot/utils/charwidth.py +106 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/compress.py +2 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/connectioncache.py +13 -11
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/dotdict.py +7 -5
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/encoding.py +13 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/encodingsniffer.py +23 -19
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/error.py +33 -30
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/escaping.py +31 -28
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/etreewrapper.py +15 -26
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/filereader.py +15 -18
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/frange.py +10 -12
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/htmlformatters.py +104 -89
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/importer.py +86 -56
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/json.py +13 -16
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/markuputils.py +13 -9
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/markupwriters.py +32 -15
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/match.py +29 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/misc.py +33 -31
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/normalizing.py +29 -22
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/notset.py +2 -1
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/platform.py +10 -9
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/recommendations.py +14 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/restreader.py +14 -16
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robotenv.py +5 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robotio.py +19 -20
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robotpath.py +17 -17
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robottime.py +179 -112
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robottypes.py +60 -67
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/setter.py +11 -14
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/sortable.py +2 -3
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/text.py +31 -26
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/typehints.py +2 -2
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/unic.py +3 -3
- robotframework-7.3rc2/src/robot/variables/__init__.py +44 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/assigner.py +146 -111
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/evaluation.py +43 -30
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/filesetter.py +50 -38
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/finders.py +36 -32
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/notfound.py +16 -10
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/replacer.py +25 -19
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/scopes.py +48 -41
- robotframework-7.3rc2/src/robot/variables/search.py +333 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/store.py +32 -21
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/tablesetter.py +80 -31
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/variables.py +16 -6
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/version.py +8 -11
- robotframework-7.3rc2/src/robotframework.egg-info/PKG-INFO +190 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robotframework.egg-info/SOURCES.txt +5 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robotframework.egg-info/entry_points.txt +0 -1
- {robotframework-7.2.2 → robotframework-7.3rc2}/tasks.py +103 -25
- robotframework-7.2.2/PKG-INFO +0 -187
- robotframework-7.2.2/setup.py +0 -75
- robotframework-7.2.2/src/robot/conf/languages.py +0 -1358
- robotframework-7.2.2/src/robot/conf/settings.py +0 -757
- robotframework-7.2.2/src/robot/htmldata/libdoc/libdoc.html +0 -408
- robotframework-7.2.2/src/robot/model/__init__.py +0 -43
- robotframework-7.2.2/src/robot/output/listeners.py +0 -599
- robotframework-7.2.2/src/robot/output/loggerapi.py +0 -232
- robotframework-7.2.2/src/robot/output/xmllogger.py +0 -332
- robotframework-7.2.2/src/robot/parsing/model/__init__.py +0 -21
- robotframework-7.2.2/src/robot/parsing/model/statements.py +0 -1441
- robotframework-7.2.2/src/robot/running/arguments/__init__.py +0 -23
- robotframework-7.2.2/src/robot/running/arguments/argumentspec.py +0 -209
- robotframework-7.2.2/src/robot/running/arguments/embedded.py +0 -146
- robotframework-7.2.2/src/robot/running/timeouts/__init__.py +0 -131
- robotframework-7.2.2/src/robot/running/timeouts/posix.py +0 -40
- robotframework-7.2.2/src/robot/running/timeouts/windows.py +0 -71
- robotframework-7.2.2/src/robot/utils/__init__.py +0 -134
- robotframework-7.2.2/src/robot/utils/charwidth.py +0 -140
- robotframework-7.2.2/src/robot/variables/__init__.py +0 -33
- robotframework-7.2.2/src/robot/variables/search.py +0 -285
- robotframework-7.2.2/src/robotframework.egg-info/PKG-INFO +0 -187
- {robotframework-7.2.2 → robotframework-7.3rc2}/AUTHORS.rst +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/CONTRIBUTING.rst +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/COPYRIGHT.txt +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/INSTALL.rst +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/LICENSE.txt +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/MANIFEST.in +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/README.rst +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/setup.cfg +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/api/py.typed +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/common/__init__.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/common/storage.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/__init__.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/jquery.min.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/lib/jsxcompressor.min.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/libdoc/__init__.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/__init__.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/common.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/doc_formatting.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/log.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/log.html +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/log.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/model.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/print.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/report.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/report.html +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/testdata.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/util.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/rebot/view.js +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/testdoc/__init__.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/htmldata/testdoc/testdoc.html +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/libdocpkg/jsonwriter.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/running/outputcapture.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/utils/robotinspect.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robot/variables/resolvable.py +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-7.2.2 → robotframework-7.3rc2}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -151,6 +151,24 @@ Release notes
|
|
|
151
151
|
|
|
152
152
|
__ https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token
|
|
153
153
|
|
|
154
|
+
|
|
155
|
+
Update libdoc generated files
|
|
156
|
+
-----------------------------
|
|
157
|
+
|
|
158
|
+
Run
|
|
159
|
+
|
|
160
|
+
invoke build-libdoc
|
|
161
|
+
|
|
162
|
+
This step can be skipped if there are no changes to Libdoc. Prerequisites
|
|
163
|
+
are listed in `<src/web/README.md>`_.
|
|
164
|
+
|
|
165
|
+
This will regenerate the libdoc html template and update libdoc command line
|
|
166
|
+
with the latest supported lagnuages.
|
|
167
|
+
|
|
168
|
+
Commit & push if there are changes any changes to either
|
|
169
|
+
`src/robot/htmldata/libdoc/libdoc.html` or `src/robot/libdocpkg/languages.py`.
|
|
170
|
+
|
|
171
|
+
|
|
154
172
|
Set version
|
|
155
173
|
-----------
|
|
156
174
|
|
|
@@ -189,13 +207,6 @@ Creating distributions
|
|
|
189
207
|
|
|
190
208
|
invoke clean
|
|
191
209
|
|
|
192
|
-
3. Build `libdoc.html`::
|
|
193
|
-
|
|
194
|
-
npm run build --prefix src/web/
|
|
195
|
-
|
|
196
|
-
This step can be skipped if there are no changes to Libdoc. Prerequisites
|
|
197
|
-
are listed in `<src/web/README.md>`_.
|
|
198
|
-
|
|
199
210
|
4. Create and validate source distribution and `wheel <https://pythonwheels.com>`_::
|
|
200
211
|
|
|
201
212
|
python setup.py sdist bdist_wheel
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: robotframework
|
|
3
|
+
Version: 7.3rc2
|
|
4
|
+
Summary: Generic automation framework for acceptance testing and robotic process automation (RPA)
|
|
5
|
+
Home-page: https://robotframework.org
|
|
6
|
+
Download-URL: https://pypi.org/project/robotframework
|
|
7
|
+
Author: Pekka Klärck
|
|
8
|
+
Author-email: peke@eliga.fi
|
|
9
|
+
License: Apache License 2.0
|
|
10
|
+
Project-URL: Source, https://github.com/robotframework/robotframework
|
|
11
|
+
Project-URL: Issue Tracker, https://github.com/robotframework/robotframework/issues
|
|
12
|
+
Project-URL: Documentation, https://robotframework.org/robotframework
|
|
13
|
+
Project-URL: Release Notes, https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-7.3rc2.rst
|
|
14
|
+
Project-URL: Slack, http://slack.robotframework.org
|
|
15
|
+
Keywords: robotframework automation testautomation rpa testing acceptancetesting atdd bdd
|
|
16
|
+
Platform: any
|
|
17
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
18
|
+
Classifier: License :: OSI Approved :: Apache Software License
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
24
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
25
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
26
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
27
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
29
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
30
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
31
|
+
Classifier: Topic :: Software Development :: Testing
|
|
32
|
+
Classifier: Topic :: Software Development :: Testing :: Acceptance
|
|
33
|
+
Classifier: Topic :: Software Development :: Testing :: BDD
|
|
34
|
+
Classifier: Framework :: Robot Framework
|
|
35
|
+
Requires-Python: >=3.8
|
|
36
|
+
Description-Content-Type: text/x-rst
|
|
37
|
+
License-File: LICENSE.txt
|
|
38
|
+
License-File: AUTHORS.rst
|
|
39
|
+
|
|
40
|
+
Robot Framework
|
|
41
|
+
===============
|
|
42
|
+
|
|
43
|
+
.. contents::
|
|
44
|
+
:local:
|
|
45
|
+
|
|
46
|
+
Introduction
|
|
47
|
+
------------
|
|
48
|
+
|
|
49
|
+
`Robot Framework <http://robotframework.org>`_ |r| is a generic open source
|
|
50
|
+
automation framework for acceptance testing, acceptance test driven
|
|
51
|
+
development (ATDD), and robotic process automation (RPA). It has simple plain
|
|
52
|
+
text syntax and it can be extended easily with generic and custom libraries.
|
|
53
|
+
|
|
54
|
+
Robot Framework is operating system and application independent. It is
|
|
55
|
+
implemented using `Python <http://python.org>`_ which is also the primary
|
|
56
|
+
language to extend it. The framework has a rich ecosystem around it consisting
|
|
57
|
+
of various generic libraries and tools that are developed as separate projects.
|
|
58
|
+
For more information about Robot Framework and the ecosystem, see
|
|
59
|
+
http://robotframework.org.
|
|
60
|
+
|
|
61
|
+
Robot Framework project is hosted on GitHub_ where you can find source code,
|
|
62
|
+
an issue tracker, and some further documentation. Downloads are hosted on PyPI_.
|
|
63
|
+
|
|
64
|
+
Robot Framework development is sponsored by non-profit `Robot Framework Foundation
|
|
65
|
+
<http://robotframework.org/foundation>`_. If you are using the framework
|
|
66
|
+
and benefiting from it, consider joining the foundation to help maintaining
|
|
67
|
+
the framework and developing it further.
|
|
68
|
+
|
|
69
|
+
.. _GitHub: https://github.com/robotframework/robotframework
|
|
70
|
+
.. _PyPI: https://pypi.python.org/pypi/robotframework
|
|
71
|
+
|
|
72
|
+
.. image:: https://img.shields.io/pypi/v/robotframework.svg?label=version
|
|
73
|
+
:target: https://pypi.python.org/pypi/robotframework
|
|
74
|
+
:alt: Latest version
|
|
75
|
+
|
|
76
|
+
.. image:: https://img.shields.io/pypi/l/robotframework.svg
|
|
77
|
+
:target: http://www.apache.org/licenses/LICENSE-2.0.html
|
|
78
|
+
:alt: License
|
|
79
|
+
|
|
80
|
+
Installation
|
|
81
|
+
------------
|
|
82
|
+
|
|
83
|
+
If you already have Python_ with `pip <https://pip.pypa.io>`_ installed,
|
|
84
|
+
you can simply run::
|
|
85
|
+
|
|
86
|
+
pip install robotframework
|
|
87
|
+
|
|
88
|
+
For more detailed installation instructions, including installing Python, see
|
|
89
|
+
`INSTALL.rst <https://github.com/robotframework/robotframework/blob/master/INSTALL.rst>`__.
|
|
90
|
+
|
|
91
|
+
Robot Framework requires Python 3.8 or newer and runs also on `PyPy <http://pypy.org>`_.
|
|
92
|
+
The latest version that supports Python 3.6 and 3.7 is `Robot Framework 6.1.1`__.
|
|
93
|
+
If you need to use Python 2, `Jython <http://jython.org>`_ or
|
|
94
|
+
`IronPython <http://ironpython.net>`_, you can use `Robot Framework 4.1.3`__.
|
|
95
|
+
|
|
96
|
+
__ https://github.com/robotframework/robotframework/tree/v6.1.1#readme
|
|
97
|
+
__ https://github.com/robotframework/robotframework/tree/v4.1.3#readme
|
|
98
|
+
|
|
99
|
+
Example
|
|
100
|
+
-------
|
|
101
|
+
|
|
102
|
+
Below is a simple example test case for testing login to some system.
|
|
103
|
+
You can find more examples with links to related demo projects from
|
|
104
|
+
http://robotframework.org.
|
|
105
|
+
|
|
106
|
+
.. code:: robotframework
|
|
107
|
+
|
|
108
|
+
*** Settings ***
|
|
109
|
+
Documentation A test suite with a single test for valid login.
|
|
110
|
+
...
|
|
111
|
+
... This test has a workflow that is created using keywords in
|
|
112
|
+
... the imported resource file.
|
|
113
|
+
Resource login.resource
|
|
114
|
+
|
|
115
|
+
*** Test Cases ***
|
|
116
|
+
Valid Login
|
|
117
|
+
Open Browser To Login Page
|
|
118
|
+
Input Username demo
|
|
119
|
+
Input Password mode
|
|
120
|
+
Submit Credentials
|
|
121
|
+
Welcome Page Should Be Open
|
|
122
|
+
[Teardown] Close Browser
|
|
123
|
+
|
|
124
|
+
Usage
|
|
125
|
+
-----
|
|
126
|
+
|
|
127
|
+
Tests (or tasks) are executed from the command line using the ``robot``
|
|
128
|
+
command or by executing the ``robot`` module directly like ``python -m robot`` .
|
|
129
|
+
|
|
130
|
+
The basic usage is giving a path to a test (or task) file or directory as an
|
|
131
|
+
argument with possible command line options before the path::
|
|
132
|
+
|
|
133
|
+
robot tests.robot
|
|
134
|
+
robot --variable BROWSER:Firefox --outputdir results path/to/tests/
|
|
135
|
+
|
|
136
|
+
Additionally, there is the ``rebot`` tool for combining results and otherwise
|
|
137
|
+
post-processing outputs::
|
|
138
|
+
|
|
139
|
+
rebot --name Example output1.xml output2.xml
|
|
140
|
+
|
|
141
|
+
Run ``robot --help`` and ``rebot --help`` for more information about the command
|
|
142
|
+
line usage. For a complete reference manual see `Robot Framework User Guide`_.
|
|
143
|
+
|
|
144
|
+
Documentation
|
|
145
|
+
-------------
|
|
146
|
+
|
|
147
|
+
- `Robot Framework User Guide
|
|
148
|
+
<http://robotframework.org/robotframework/#user-guide>`_
|
|
149
|
+
- `Standard libraries
|
|
150
|
+
<http://robotframework.org/robotframework/#standard-libraries>`_
|
|
151
|
+
- `API documentation <http://robot-framework.readthedocs.org>`_
|
|
152
|
+
- `General documentation <http://robotframework.org/>`_
|
|
153
|
+
|
|
154
|
+
Support and Contact
|
|
155
|
+
-------------------
|
|
156
|
+
|
|
157
|
+
- `Slack <http://slack.robotframework.org/>`_
|
|
158
|
+
- `Forum <https://forum.robotframework.org/>`_
|
|
159
|
+
- `robotframework-users
|
|
160
|
+
<https://groups.google.com/group/robotframework-users/>`_ mailing list
|
|
161
|
+
|
|
162
|
+
Contributing
|
|
163
|
+
------------
|
|
164
|
+
|
|
165
|
+
Interested to contribute to Robot Framework? Great! In that case it is a good
|
|
166
|
+
start by looking at the `CONTRIBUTING.rst <https://github.com/robotframework/robotframework/blob/master/CONTRIBUTING.rst>`__. If you
|
|
167
|
+
do not already have an issue you would like to work on, you can check
|
|
168
|
+
issues with `good new issue`__ and `help wanted`__ labels.
|
|
169
|
+
|
|
170
|
+
Remember also that there are many other tools and libraries in the wider
|
|
171
|
+
`Robot Framework ecosystem <http://robotframework.org>`_ that you can
|
|
172
|
+
contribute to!
|
|
173
|
+
|
|
174
|
+
__ https://github.com/robotframework/robotframework/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22
|
|
175
|
+
__ https://github.com/robotframework/robotframework/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22
|
|
176
|
+
|
|
177
|
+
License and Trademark
|
|
178
|
+
---------------------
|
|
179
|
+
|
|
180
|
+
Robot Framework is open source software provided under the `Apache License 2.0`__.
|
|
181
|
+
Robot Framework documentation and other similar content use the
|
|
182
|
+
`Creative Commons Attribution 3.0 Unported`__ license. Most libraries and tools
|
|
183
|
+
in the ecosystem are also open source, but they may use different licenses.
|
|
184
|
+
|
|
185
|
+
Robot Framework trademark is owned by `Robot Framework Foundation`_.
|
|
186
|
+
|
|
187
|
+
__ http://apache.org/licenses/LICENSE-2.0
|
|
188
|
+
__ http://creativecommons.org/licenses/by/3.0
|
|
189
|
+
|
|
190
|
+
.. |r| unicode:: U+00AE
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
requires-python = ">=3.8"
|
|
3
|
+
|
|
4
|
+
[tool.black]
|
|
5
|
+
line_length = 88
|
|
6
|
+
extend-exclude = "atest/result/"
|
|
7
|
+
|
|
8
|
+
[tool.ruff]
|
|
9
|
+
extend-exclude = ["atest/result/"]
|
|
10
|
+
|
|
11
|
+
[tool.ruff.format]
|
|
12
|
+
quote-style = "double"
|
|
13
|
+
|
|
14
|
+
[tool.ruff.lint]
|
|
15
|
+
extend-select = ["I"] # imports
|
|
16
|
+
ignore = ["E731"] # lambda assignment
|
|
17
|
+
|
|
18
|
+
[tool.ruff.lint.pyflakes]
|
|
19
|
+
# Needed due to https://github.com/astral-sh/ruff/issues/9298
|
|
20
|
+
extend-generics = ["robot.model.body.BaseBranches"]
|
|
21
|
+
|
|
22
|
+
[tool.ruff.lint.isort]
|
|
23
|
+
# Ruff is used to sort and fix imports first. Multiline imports are organized so
|
|
24
|
+
# that each item is on its own line. This is same as the Vertical Hanging Indent
|
|
25
|
+
# mode with isort.
|
|
26
|
+
combine-as-imports = true
|
|
27
|
+
order-by-type = false
|
|
28
|
+
|
|
29
|
+
[tool.isort]
|
|
30
|
+
# isort is used after Ruff to sort "normal" imports so that multiline imports use
|
|
31
|
+
# the Hanging Grid Grouped mode. Files contained redundant import aliases denoting
|
|
32
|
+
# module/package API are excluded. For details about multiline modes see:
|
|
33
|
+
# https://pycqa.github.io/isort/docs/configuration/multi_line_output_modes.html
|
|
34
|
+
multi_line_output = 5
|
|
35
|
+
extend_skip = ["__init__.py", "src/robot/api/parsing.py"]
|
|
36
|
+
skip_glob = ["atest/result/*"]
|
|
37
|
+
combine_as_imports = true
|
|
38
|
+
order_by_type = false
|
|
39
|
+
line_length = 88
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
from os.path import abspath, dirname, join
|
|
4
|
+
|
|
5
|
+
from setuptools import find_packages, setup
|
|
6
|
+
|
|
7
|
+
# Version number typically updated by running `invoke set-version <version>`.
|
|
8
|
+
# Run `invoke --help set-version` or see tasks.py for details.
|
|
9
|
+
VERSION = "7.3rc2"
|
|
10
|
+
with open(join(dirname(abspath(__file__)), "README.rst")) as f:
|
|
11
|
+
LONG_DESCRIPTION = f.read()
|
|
12
|
+
base_url = "https://github.com/robotframework/robotframework/blob/master"
|
|
13
|
+
for text in ("INSTALL", "CONTRIBUTING"):
|
|
14
|
+
search = f"`<{text}.rst>`__"
|
|
15
|
+
replace = f"`{text}.rst <{base_url}/{text}.rst>`__"
|
|
16
|
+
if search not in LONG_DESCRIPTION:
|
|
17
|
+
raise RuntimeError(f"{search} not found from README.rst")
|
|
18
|
+
LONG_DESCRIPTION = LONG_DESCRIPTION.replace(search, replace)
|
|
19
|
+
CLASSIFIERS = """
|
|
20
|
+
Development Status :: 5 - Production/Stable
|
|
21
|
+
License :: OSI Approved :: Apache Software License
|
|
22
|
+
Operating System :: OS Independent
|
|
23
|
+
Programming Language :: Python :: 3
|
|
24
|
+
Programming Language :: Python :: 3 :: Only
|
|
25
|
+
Programming Language :: Python :: 3.8
|
|
26
|
+
Programming Language :: Python :: 3.9
|
|
27
|
+
Programming Language :: Python :: 3.10
|
|
28
|
+
Programming Language :: Python :: 3.11
|
|
29
|
+
Programming Language :: Python :: 3.12
|
|
30
|
+
Programming Language :: Python :: 3.13
|
|
31
|
+
Programming Language :: Python :: 3.14
|
|
32
|
+
Programming Language :: Python :: Implementation :: CPython
|
|
33
|
+
Programming Language :: Python :: Implementation :: PyPy
|
|
34
|
+
Topic :: Software Development :: Testing
|
|
35
|
+
Topic :: Software Development :: Testing :: Acceptance
|
|
36
|
+
Topic :: Software Development :: Testing :: BDD
|
|
37
|
+
Framework :: Robot Framework
|
|
38
|
+
""".strip().splitlines()
|
|
39
|
+
DESCRIPTION = (
|
|
40
|
+
"Generic automation framework for acceptance testing "
|
|
41
|
+
"and robotic process automation (RPA)"
|
|
42
|
+
)
|
|
43
|
+
KEYWORDS = (
|
|
44
|
+
"robotframework automation testautomation rpa testing acceptancetesting atdd bdd"
|
|
45
|
+
)
|
|
46
|
+
PACKAGE_DATA = [
|
|
47
|
+
join("htmldata", directory, pattern)
|
|
48
|
+
for directory in ("rebot", "libdoc", "testdoc", "lib", "common")
|
|
49
|
+
for pattern in ("*.html", "*.css", "*.js")
|
|
50
|
+
] + ["api/py.typed", "logo.png"]
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
setup(
|
|
54
|
+
name="robotframework",
|
|
55
|
+
version=VERSION,
|
|
56
|
+
author="Pekka Klärck",
|
|
57
|
+
author_email="peke@eliga.fi",
|
|
58
|
+
url="https://robotframework.org",
|
|
59
|
+
project_urls={
|
|
60
|
+
"Source": "https://github.com/robotframework/robotframework",
|
|
61
|
+
"Issue Tracker": "https://github.com/robotframework/robotframework/issues",
|
|
62
|
+
"Documentation": "https://robotframework.org/robotframework",
|
|
63
|
+
"Release Notes": f"https://github.com/robotframework/robotframework/blob/master/doc/releasenotes/rf-{VERSION}.rst",
|
|
64
|
+
"Slack": "http://slack.robotframework.org",
|
|
65
|
+
},
|
|
66
|
+
download_url="https://pypi.org/project/robotframework",
|
|
67
|
+
license="Apache License 2.0",
|
|
68
|
+
description=DESCRIPTION,
|
|
69
|
+
long_description=LONG_DESCRIPTION,
|
|
70
|
+
long_description_content_type="text/x-rst",
|
|
71
|
+
keywords=KEYWORDS,
|
|
72
|
+
platforms="any",
|
|
73
|
+
python_requires=">=3.8",
|
|
74
|
+
classifiers=CLASSIFIERS,
|
|
75
|
+
package_dir={"": "src"},
|
|
76
|
+
package_data={"robot": PACKAGE_DATA},
|
|
77
|
+
packages=find_packages("src"),
|
|
78
|
+
entry_points={
|
|
79
|
+
"console_scripts": [
|
|
80
|
+
"robot = robot.run:run_cli",
|
|
81
|
+
"rebot = robot.rebot:rebot_cli",
|
|
82
|
+
"libdoc = robot.libdoc:libdoc_cli",
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
)
|
|
@@ -40,16 +40,15 @@ this package are for internal usage and may change without prior notice.
|
|
|
40
40
|
import sys
|
|
41
41
|
import warnings
|
|
42
42
|
|
|
43
|
-
from robot.rebot import rebot, rebot_cli
|
|
44
|
-
from robot.run import run, run_cli
|
|
43
|
+
from robot.rebot import rebot as rebot, rebot_cli as rebot_cli
|
|
44
|
+
from robot.run import run as run, run_cli as run_cli
|
|
45
45
|
from robot.version import get_version
|
|
46
46
|
|
|
47
|
-
|
|
48
47
|
# Avoid warnings when using `python -m robot.run`.
|
|
49
48
|
# https://github.com/robotframework/robotframework/issues/2552
|
|
50
49
|
if not sys.warnoptions:
|
|
51
|
-
warnings.filterwarnings(
|
|
50
|
+
warnings.filterwarnings("ignore", category=RuntimeWarning, module="runpy")
|
|
52
51
|
|
|
53
52
|
|
|
54
|
-
__all__ = [
|
|
53
|
+
__all__ = ["rebot", "rebot_cli", "run", "run_cli"]
|
|
55
54
|
__version__ = get_version()
|
|
@@ -17,8 +17,10 @@
|
|
|
17
17
|
|
|
18
18
|
import sys
|
|
19
19
|
|
|
20
|
-
if __name__ ==
|
|
21
|
-
import
|
|
20
|
+
if __name__ == "__main__" and "robot" not in sys.modules:
|
|
21
|
+
from pythonpathsetter import set_pythonpath
|
|
22
|
+
|
|
23
|
+
set_pythonpath()
|
|
22
24
|
|
|
23
25
|
from robot import run_cli
|
|
24
26
|
|
|
@@ -73,7 +73,7 @@ All of the above classes can be imported like::
|
|
|
73
73
|
from robot.api import ClassName
|
|
74
74
|
|
|
75
75
|
The public API intends to follow the `distributing type information specification
|
|
76
|
-
<https://typing.readthedocs.io/en/latest/spec/distributing.html#distributing-type-information>`_
|
|
76
|
+
<https://typing.readthedocs.io/en/latest/spec/distributing.html#distributing-type-information>`_
|
|
77
77
|
originally specified in `PEP 484 <https://peps.python.org/pep-0484/>`_.
|
|
78
78
|
|
|
79
79
|
See documentations of the individual APIs for more details.
|
|
@@ -85,29 +85,29 @@ See documentations of the individual APIs for more details.
|
|
|
85
85
|
from robot.conf.languages import Language as Language, Languages as Languages
|
|
86
86
|
from robot.model import SuiteVisitor as SuiteVisitor
|
|
87
87
|
from robot.parsing import (
|
|
88
|
-
|
|
89
|
-
get_resource_tokens as get_resource_tokens,
|
|
88
|
+
get_init_model as get_init_model,
|
|
90
89
|
get_init_tokens as get_init_tokens,
|
|
91
90
|
get_model as get_model,
|
|
92
91
|
get_resource_model as get_resource_model,
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
get_resource_tokens as get_resource_tokens,
|
|
93
|
+
get_tokens as get_tokens,
|
|
94
|
+
Token as Token,
|
|
95
95
|
)
|
|
96
96
|
from robot.reporting import ResultWriter as ResultWriter
|
|
97
97
|
from robot.result import (
|
|
98
98
|
ExecutionResult as ExecutionResult,
|
|
99
|
-
ResultVisitor as ResultVisitor
|
|
99
|
+
ResultVisitor as ResultVisitor,
|
|
100
100
|
)
|
|
101
101
|
from robot.running import (
|
|
102
102
|
TestSuite as TestSuite,
|
|
103
103
|
TestSuiteBuilder as TestSuiteBuilder,
|
|
104
|
-
TypeInfo as TypeInfo
|
|
104
|
+
TypeInfo as TypeInfo,
|
|
105
105
|
)
|
|
106
106
|
|
|
107
107
|
from .exceptions import (
|
|
108
108
|
ContinuableFailure as ContinuableFailure,
|
|
109
|
+
Error as Error,
|
|
109
110
|
Failure as Failure,
|
|
110
111
|
FatalError as FatalError,
|
|
111
|
-
|
|
112
|
-
SkipExecution as SkipExecution
|
|
112
|
+
SkipExecution as SkipExecution,
|
|
113
113
|
)
|
|
@@ -13,22 +13,18 @@
|
|
|
13
13
|
# See the License for the specific language governing permissions and
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
|
|
16
|
-
from typing import Any, Callable, Literal, Sequence, TypeVar, Union
|
|
16
|
+
from typing import Any, Callable, Literal, overload, Sequence, TypeVar, Union
|
|
17
17
|
|
|
18
18
|
from .interfaces import TypeHints
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
# See: https://discuss.python.org/t/questions-related-to-typing-overload-style/38130
|
|
24
|
-
F = TypeVar('F', bound=Callable[..., Any]) # Any function.
|
|
25
|
-
K = TypeVar('K', bound=Callable[..., Any]) # Keyword function.
|
|
26
|
-
L = TypeVar('L', bound=type) # Library class.
|
|
20
|
+
F = TypeVar("F", bound=Callable[..., Any])
|
|
21
|
+
K = TypeVar("K", bound=Callable[..., Any])
|
|
22
|
+
L = TypeVar("L", bound=type)
|
|
27
23
|
KeywordDecorator = Callable[[K], K]
|
|
28
24
|
LibraryDecorator = Callable[[L], L]
|
|
29
|
-
Scope = Literal[
|
|
25
|
+
Scope = Literal["GLOBAL", "SUITE", "TEST", "TASK"]
|
|
30
26
|
Converter = Union[Callable[[Any], Any], Callable[[Any, Any], Any]]
|
|
31
|
-
DocFormat = Literal[
|
|
27
|
+
DocFormat = Literal["ROBOT", "HTML", "TEXT", "REST"]
|
|
32
28
|
|
|
33
29
|
|
|
34
30
|
def not_keyword(func: F) -> F:
|
|
@@ -57,21 +53,23 @@ not_keyword.robot_not_keyword = True
|
|
|
57
53
|
|
|
58
54
|
|
|
59
55
|
@overload
|
|
60
|
-
def keyword(func: K, /) -> K:
|
|
61
|
-
...
|
|
56
|
+
def keyword(func: K, /) -> K: ...
|
|
62
57
|
|
|
63
58
|
|
|
64
59
|
@overload
|
|
65
|
-
def keyword(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
def keyword(
|
|
61
|
+
name: "str|None" = None,
|
|
62
|
+
tags: Sequence[str] = (),
|
|
63
|
+
types: "TypeHints|None" = (),
|
|
64
|
+
) -> KeywordDecorator: ...
|
|
69
65
|
|
|
70
66
|
|
|
71
67
|
@not_keyword
|
|
72
|
-
def keyword(
|
|
73
|
-
|
|
74
|
-
|
|
68
|
+
def keyword(
|
|
69
|
+
name: "K|str|None" = None,
|
|
70
|
+
tags: Sequence[str] = (),
|
|
71
|
+
types: "TypeHints|None" = (),
|
|
72
|
+
) -> "K|KeywordDecorator":
|
|
75
73
|
"""Decorator to set custom name, tags and argument types to keywords.
|
|
76
74
|
|
|
77
75
|
This decorator creates ``robot_name``, ``robot_tags`` and ``robot_types``
|
|
@@ -126,27 +124,29 @@ def keyword(name: 'K | str | None' = None,
|
|
|
126
124
|
|
|
127
125
|
|
|
128
126
|
@overload
|
|
129
|
-
def library(cls: L, /) -> L:
|
|
130
|
-
...
|
|
127
|
+
def library(cls: L, /) -> L: ...
|
|
131
128
|
|
|
132
129
|
|
|
133
130
|
@overload
|
|
134
|
-
def library(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
131
|
+
def library(
|
|
132
|
+
scope: "Scope|None" = None,
|
|
133
|
+
version: "str|None" = None,
|
|
134
|
+
converters: "dict[type, Converter]|None" = None,
|
|
135
|
+
doc_format: "DocFormat|None" = None,
|
|
136
|
+
listener: "Any|None" = None,
|
|
137
|
+
auto_keywords: bool = False,
|
|
138
|
+
) -> LibraryDecorator: ...
|
|
141
139
|
|
|
142
140
|
|
|
143
141
|
@not_keyword
|
|
144
|
-
def library(
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
142
|
+
def library(
|
|
143
|
+
scope: "L|Scope|None" = None,
|
|
144
|
+
version: "str|None" = None,
|
|
145
|
+
converters: "dict[type, Converter]|None" = None,
|
|
146
|
+
doc_format: "DocFormat|None" = None,
|
|
147
|
+
listener: "Any|None" = None,
|
|
148
|
+
auto_keywords: bool = False,
|
|
149
|
+
) -> "L|LibraryDecorator":
|
|
150
150
|
"""Class decorator to control keyword discovery and other library settings.
|
|
151
151
|
|
|
152
152
|
Disables automatic keyword detection by setting class attribute
|
|
@@ -29,6 +29,7 @@ class Failure(AssertionError):
|
|
|
29
29
|
the standard ``AssertionError``. The main benefits are HTML support and that
|
|
30
30
|
the name of this exception is consistent with other exceptions in this module.
|
|
31
31
|
"""
|
|
32
|
+
|
|
32
33
|
ROBOT_SUPPRESS_NAME = True
|
|
33
34
|
|
|
34
35
|
def __init__(self, message: str, html: bool = False):
|
|
@@ -36,11 +37,12 @@ class Failure(AssertionError):
|
|
|
36
37
|
:param message: Exception message.
|
|
37
38
|
:param html: When ``True``, message is considered to be HTML and not escaped.
|
|
38
39
|
"""
|
|
39
|
-
super().__init__(message if not html else
|
|
40
|
+
super().__init__(message if not html else "*HTML* " + message)
|
|
40
41
|
|
|
41
42
|
|
|
42
43
|
class ContinuableFailure(Failure):
|
|
43
44
|
"""Report failed validation but allow continuing execution."""
|
|
45
|
+
|
|
44
46
|
ROBOT_CONTINUE_ON_FAILURE = True
|
|
45
47
|
|
|
46
48
|
|
|
@@ -55,6 +57,7 @@ class Error(RuntimeError):
|
|
|
55
57
|
the standard ``RuntimeError``. The main benefits are HTML support and that
|
|
56
58
|
the name of this exception is consistent with other exceptions in this module.
|
|
57
59
|
"""
|
|
60
|
+
|
|
58
61
|
ROBOT_SUPPRESS_NAME = True
|
|
59
62
|
|
|
60
63
|
def __init__(self, message: str, html: bool = False):
|
|
@@ -62,17 +65,19 @@ class Error(RuntimeError):
|
|
|
62
65
|
:param message: Exception message.
|
|
63
66
|
:param html: When ``True``, message is considered to be HTML and not escaped.
|
|
64
67
|
"""
|
|
65
|
-
super().__init__(message if not html else
|
|
68
|
+
super().__init__(message if not html else "*HTML* " + message)
|
|
66
69
|
|
|
67
70
|
|
|
68
71
|
class FatalError(Error):
|
|
69
72
|
"""Report error that stops the whole execution."""
|
|
73
|
+
|
|
70
74
|
ROBOT_EXIT_ON_FAILURE = True
|
|
71
75
|
ROBOT_SUPPRESS_NAME = False
|
|
72
76
|
|
|
73
77
|
|
|
74
78
|
class SkipExecution(Exception):
|
|
75
79
|
"""Mark the executed test or task skipped."""
|
|
80
|
+
|
|
76
81
|
ROBOT_SKIP_EXECUTION = True
|
|
77
82
|
ROBOT_SUPPRESS_NAME = True
|
|
78
83
|
|
|
@@ -81,4 +86,4 @@ class SkipExecution(Exception):
|
|
|
81
86
|
:param message: Exception message.
|
|
82
87
|
:param html: When ``True``, message is considered to be HTML and not escaped.
|
|
83
88
|
"""
|
|
84
|
-
super().__init__(message if not html else
|
|
89
|
+
super().__init__(message if not html else "*HTML* " + message)
|