robotframework 3.0.4rc1__tar.gz → 7.2rc1__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.2rc1/AUTHORS.rst +108 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/BUILD.rst +56 -74
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/CONTRIBUTING.rst +62 -55
- robotframework-7.2rc1/INSTALL.rst +324 -0
- robotframework-7.2rc1/MANIFEST.in +3 -0
- robotframework-7.2rc1/PKG-INFO +187 -0
- robotframework-7.2rc1/README.rst +151 -0
- robotframework-7.2rc1/setup.py +75 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/__init__.py +2 -3
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/__main__.py +2 -5
- robotframework-7.2rc1/src/robot/api/__init__.py +113 -0
- robotframework-7.2rc1/src/robot/api/deco.py +203 -0
- robotframework-7.2rc1/src/robot/api/exceptions.py +84 -0
- robotframework-7.2rc1/src/robot/api/interfaces.py +1052 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/api/logger.py +37 -30
- robotframework-7.2rc1/src/robot/api/parsing.py +565 -0
- robotframework-7.2rc1/src/robot/api/py.typed +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/conf/__init__.py +1 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/conf/gatherfailed.py +22 -19
- robotframework-7.2rc1/src/robot/conf/languages.py +1358 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/conf/settings.py +310 -141
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/errors.py +78 -63
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/__init__.py +2 -1
- robotframework-7.2rc1/src/robot/htmldata/common/__init__.py +14 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/common/storage.js +11 -6
- robotframework-7.2rc1/src/robot/htmldata/htmlfilewriter.py +119 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/jsonwriter.py +20 -22
- robotframework-7.2rc1/src/robot/htmldata/lib/__init__.py +14 -0
- robotframework-7.2rc1/src/robot/htmldata/lib/jquery.min.js +2 -0
- robotframework-7.2rc1/src/robot/htmldata/lib/jquery.tablesorter.min.js +1 -0
- robotframework-7.2rc1/src/robot/htmldata/lib/jsxcompressor.min.js +19 -0
- robotframework-7.2rc1/src/robot/htmldata/libdoc/__init__.py +14 -0
- robotframework-7.2rc1/src/robot/htmldata/libdoc/libdoc.html +408 -0
- robotframework-7.2rc1/src/robot/htmldata/rebot/__init__.py +14 -0
- robotframework-7.2rc1/src/robot/htmldata/rebot/common.css +362 -0
- {robotframework-3.0.4rc1/src/robot/htmldata/common → robotframework-7.2rc1/src/robot/htmldata/rebot}/doc_formatting.css +13 -7
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/log.css +62 -15
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/log.html +33 -41
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/log.js +32 -12
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/model.js +56 -40
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/print.css +2 -2
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/report.css +85 -24
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/report.html +119 -112
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/testdata.js +53 -38
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/util.js +3 -3
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/view.js +106 -14
- robotframework-7.2rc1/src/robot/htmldata/template.py +62 -0
- robotframework-7.2rc1/src/robot/htmldata/testdoc/__init__.py +14 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/testdoc/testdoc.html +3 -3
- robotframework-7.2rc1/src/robot/libdoc.py +303 -0
- robotframework-7.2rc1/src/robot/libdocpkg/__init__.py +22 -0
- robotframework-7.2rc1/src/robot/libdocpkg/builder.py +116 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libdocpkg/consoleviewer.py +6 -7
- robotframework-7.2rc1/src/robot/libdocpkg/datatypes.py +119 -0
- robotframework-3.0.4rc1/src/robot/libdocpkg/htmlwriter.py → robotframework-7.2rc1/src/robot/libdocpkg/htmlutils.py +58 -78
- robotframework-7.2rc1/src/robot/libdocpkg/htmlwriter.py +43 -0
- robotframework-7.2rc1/src/robot/libdocpkg/jsonbuilder.py +151 -0
- robotframework-7.2rc1/src/robot/libdocpkg/jsonwriter.py +23 -0
- robotframework-7.2rc1/src/robot/libdocpkg/model.py +218 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libdocpkg/output.py +20 -3
- robotframework-7.2rc1/src/robot/libdocpkg/robotbuilder.py +206 -0
- robotframework-7.2rc1/src/robot/libdocpkg/standardtypes.py +194 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libdocpkg/writer.py +9 -4
- robotframework-7.2rc1/src/robot/libdocpkg/xmlbuilder.py +175 -0
- robotframework-7.2rc1/src/robot/libdocpkg/xmlwriter.py +152 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/BuiltIn.py +1753 -1037
- robotframework-7.2rc1/src/robot/libraries/Collections.py +1227 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/DateTime.py +110 -141
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/Dialogs.py +43 -31
- robotframework-3.0.4rc1/src/robot/htmldata/normaltemplate.py → robotframework-7.2rc1/src/robot/libraries/Easter.py +13 -12
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/OperatingSystem.py +217 -196
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/Process.py +200 -149
- robotframework-7.2rc1/src/robot/libraries/Remote.py +281 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/Screenshot.py +58 -87
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/String.py +265 -157
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/Telnet.py +33 -70
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/XML.py +165 -146
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/libraries/__init__.py +2 -2
- robotframework-7.2rc1/src/robot/libraries/dialogs_py.py +209 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/__init__.py +12 -10
- robotframework-7.2rc1/src/robot/model/body.py +322 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/configurer.py +22 -17
- robotframework-7.2rc1/src/robot/model/control.py +596 -0
- robotframework-7.2rc1/src/robot/model/filter.py +114 -0
- robotframework-7.2rc1/src/robot/model/fixture.py +41 -0
- robotframework-7.2rc1/src/robot/model/itemlist.py +227 -0
- robotframework-7.2rc1/src/robot/model/keyword.py +70 -0
- robotframework-7.2rc1/src/robot/model/message.py +85 -0
- robotframework-7.2rc1/src/robot/model/metadata.py +39 -0
- robotframework-7.2rc1/src/robot/model/modelobject.py +227 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/modifier.py +18 -18
- robotframework-7.2rc1/src/robot/model/namepatterns.py +35 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/statistics.py +17 -13
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/stats.py +32 -65
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/suitestatistics.py +10 -11
- robotframework-7.2rc1/src/robot/model/tags.py +254 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/tagsetter.py +12 -7
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/tagstatistics.py +31 -63
- robotframework-7.2rc1/src/robot/model/testcase.py +211 -0
- robotframework-7.2rc1/src/robot/model/testsuite.py +450 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/model/totalstatistics.py +40 -26
- robotframework-7.2rc1/src/robot/model/visitor.py +616 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/__init__.py +3 -2
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/console/__init__.py +3 -3
- robotframework-7.2rc1/src/robot/output/console/dotted.py +93 -0
- robotframework-7.2rc1/src/robot/output/console/highlighting.py +252 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/console/quiet.py +3 -2
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/console/verbose.py +63 -61
- robotframework-7.2rc1/src/robot/output/debugfile.py +122 -0
- robotframework-7.2rc1/src/robot/output/filelogger.py +65 -0
- robotframework-7.2rc1/src/robot/output/jsonlogger.py +338 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/librarylogger.py +19 -22
- robotframework-7.2rc1/src/robot/output/listeners.py +599 -0
- robotframework-7.2rc1/src/robot/output/logger.py +464 -0
- robotframework-7.2rc1/src/robot/output/loggerapi.py +232 -0
- robotframework-7.2rc1/src/robot/output/loggerhelper.py +125 -0
- robotframework-7.2rc1/src/robot/output/loglevel.py +54 -0
- robotframework-7.2rc1/src/robot/output/output.py +190 -0
- robotframework-7.2rc1/src/robot/output/outputfile.py +174 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/pyloggingconf.py +16 -10
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/output/stdoutlogsplitter.py +17 -12
- robotframework-7.2rc1/src/robot/output/xmllogger.py +332 -0
- robotframework-7.2rc1/src/robot/parsing/__init__.py +28 -0
- robotframework-3.0.4rc1/src/robot/htmldata/template.py → robotframework-7.2rc1/src/robot/parsing/lexer/__init__.py +2 -4
- robotframework-7.2rc1/src/robot/parsing/lexer/blocklexers.py +344 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/context.py +155 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/lexer.py +193 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/settings.py +277 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/statementlexers.py +401 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/tokenizer.py +138 -0
- robotframework-7.2rc1/src/robot/parsing/lexer/tokens.py +272 -0
- robotframework-7.2rc1/src/robot/parsing/model/__init__.py +21 -0
- robotframework-7.2rc1/src/robot/parsing/model/blocks.py +538 -0
- robotframework-7.2rc1/src/robot/parsing/model/statements.py +1441 -0
- robotframework-7.2rc1/src/robot/parsing/model/visitor.py +100 -0
- robotframework-7.2rc1/src/robot/parsing/parser/__init__.py +16 -0
- robotframework-7.2rc1/src/robot/parsing/parser/blockparsers.py +128 -0
- robotframework-7.2rc1/src/robot/parsing/parser/fileparser.py +119 -0
- robotframework-7.2rc1/src/robot/parsing/parser/parser.py +131 -0
- robotframework-7.2rc1/src/robot/parsing/suitestructure.py +246 -0
- robotframework-7.2rc1/src/robot/pythonpathsetter.py +32 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/rebot.py +149 -145
- robotframework-7.2rc1/src/robot/reporting/expandkeywordmatcher.py +38 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/jsbuildingcontext.py +38 -16
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/jsexecutionresult.py +11 -21
- robotframework-7.2rc1/src/robot/reporting/jsmodelbuilders.py +242 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/jswriter.py +3 -3
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/logreportwriters.py +24 -15
- robotframework-7.2rc1/src/robot/reporting/outputwriter.py +30 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/resultwriter.py +16 -20
- robotframework-7.2rc1/src/robot/reporting/stringcache.py +50 -0
- robotframework-7.2rc1/src/robot/reporting/xunitwriter.py +87 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/result/__init__.py +11 -13
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/result/configurer.py +15 -17
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/result/executionerrors.py +19 -14
- robotframework-7.2rc1/src/robot/result/executionresult.py +330 -0
- robotframework-7.2rc1/src/robot/result/flattenkeywordmatcher.py +122 -0
- robotframework-7.2rc1/src/robot/result/keywordremover.py +207 -0
- robotframework-7.2rc1/src/robot/result/merger.py +132 -0
- robotframework-3.0.4rc1/src/robot/reporting/outputwriter.py → robotframework-7.2rc1/src/robot/result/messagefilter.py +15 -16
- robotframework-7.2rc1/src/robot/result/model.py +1233 -0
- robotframework-7.2rc1/src/robot/result/modeldeprecation.py +73 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/result/resultbuilder.py +82 -66
- robotframework-7.2rc1/src/robot/result/suiteteardownfailed.py +66 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/result/visitor.py +1 -2
- robotframework-7.2rc1/src/robot/result/xmlelementhandlers.py +496 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/run.py +250 -214
- robotframework-7.2rc1/src/robot/running/__init__.py +128 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/arguments/__init__.py +6 -9
- robotframework-7.2rc1/src/robot/running/arguments/argumentconverter.py +100 -0
- robotframework-7.2rc1/src/robot/running/arguments/argumentmapper.py +83 -0
- robotframework-7.2rc1/src/robot/running/arguments/argumentparser.py +266 -0
- robotframework-7.2rc1/src/robot/running/arguments/argumentresolver.py +154 -0
- robotframework-7.2rc1/src/robot/running/arguments/argumentspec.py +209 -0
- robotframework-7.2rc1/src/robot/running/arguments/argumentvalidator.py +90 -0
- robotframework-7.2rc1/src/robot/running/arguments/customconverters.py +116 -0
- robotframework-7.2rc1/src/robot/running/arguments/embedded.py +146 -0
- robotframework-7.2rc1/src/robot/running/arguments/typeconverters.py +827 -0
- robotframework-7.2rc1/src/robot/running/arguments/typeinfo.py +363 -0
- robotframework-7.2rc1/src/robot/running/arguments/typeinfoparser.py +219 -0
- robotframework-7.2rc1/src/robot/running/arguments/typevalidator.py +60 -0
- robotframework-7.2rc1/src/robot/running/bodyrunner.py +824 -0
- robotframework-7.2rc1/src/robot/running/builder/__init__.py +18 -0
- robotframework-7.2rc1/src/robot/running/builder/builders.py +302 -0
- robotframework-7.2rc1/src/robot/running/builder/parsers.py +168 -0
- robotframework-7.2rc1/src/robot/running/builder/settings.py +216 -0
- robotframework-7.2rc1/src/robot/running/builder/transformers.py +561 -0
- robotframework-7.2rc1/src/robot/running/context.py +362 -0
- robotframework-7.2rc1/src/robot/running/dynamicmethods.py +182 -0
- robotframework-7.2rc1/src/robot/running/importer.py +135 -0
- robotframework-7.2rc1/src/robot/running/invalidkeyword.py +70 -0
- robotframework-7.2rc1/src/robot/running/keywordfinder.py +91 -0
- robotframework-7.2rc1/src/robot/running/keywordimplementation.py +168 -0
- robotframework-7.2rc1/src/robot/running/librarykeyword.py +402 -0
- robotframework-7.2rc1/src/robot/running/librarykeywordrunner.py +262 -0
- robotframework-7.2rc1/src/robot/running/libraryscopes.py +115 -0
- robotframework-7.2rc1/src/robot/running/model.py +809 -0
- robotframework-7.2rc1/src/robot/running/namespace.py +504 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/outputcapture.py +25 -55
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/randomizer.py +1 -4
- robotframework-7.2rc1/src/robot/running/resourcemodel.py +456 -0
- robotframework-7.2rc1/src/robot/running/runkwregister.py +86 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/signalhandler.py +14 -15
- robotframework-7.2rc1/src/robot/running/status.py +330 -0
- robotframework-7.2rc1/src/robot/running/statusreporter.py +97 -0
- robotframework-7.2rc1/src/robot/running/suiterunner.py +272 -0
- robotframework-7.2rc1/src/robot/running/testlibraries.py +500 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/timeouts/__init__.py +17 -19
- robotframework-7.2rc1/src/robot/running/timeouts/nosupport.py +25 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/timeouts/posix.py +1 -1
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/running/timeouts/windows.py +1 -1
- robotframework-7.2rc1/src/robot/running/userkeywordrunner.py +269 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/testdoc.py +75 -58
- robotframework-7.2rc1/src/robot/utils/__init__.py +134 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/application.py +2 -4
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/argumentparser.py +35 -94
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/asserts.py +16 -16
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/charwidth.py +3 -2
- robotframework-7.2rc1/src/robot/utils/compress.py +22 -0
- robotframework-7.2rc1/src/robot/utils/connectioncache.py +180 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/dotdict.py +1 -4
- robotframework-7.2rc1/src/robot/utils/encoding.py +89 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/encodingsniffer.py +28 -23
- robotframework-7.2rc1/src/robot/utils/error.py +129 -0
- robotframework-7.2rc1/src/robot/utils/escaping.py +132 -0
- robotframework-7.2rc1/src/robot/utils/etreewrapper.py +84 -0
- robotframework-7.2rc1/src/robot/utils/filereader.py +105 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/frange.py +2 -4
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/htmlformatters.py +27 -26
- robotframework-7.2rc1/src/robot/utils/importer.py +349 -0
- robotframework-7.2rc1/src/robot/utils/json.py +75 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/markuputils.py +8 -4
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/markupwriters.py +43 -27
- robotframework-7.2rc1/src/robot/utils/match.py +85 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/misc.py +80 -40
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/normalizing.py +47 -48
- robotframework-3.0.4rc1/src/robot/result/messagefilter.py → robotframework-7.2rc1/src/robot/utils/notset.py +12 -8
- robotframework-7.2rc1/src/robot/utils/platform.py +51 -0
- robotframework-7.2rc1/src/robot/utils/recommendations.py +94 -0
- robotframework-3.0.4rc1/src/robot/parsing/restsupport.py → robotframework-7.2rc1/src/robot/utils/restreader.py +57 -16
- robotframework-7.2rc1/src/robot/utils/robotinspect.py +27 -0
- robotframework-7.2rc1/src/robot/utils/robotio.py +60 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/robotpath.py +18 -30
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/robottime.py +182 -118
- robotframework-7.2rc1/src/robot/utils/robottypes.py +166 -0
- robotframework-7.2rc1/src/robot/utils/setter.py +94 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/sortable.py +1 -4
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/text.py +53 -17
- robotframework-7.2rc1/src/robot/utils/typehints.py +34 -0
- robotframework-7.2rc1/src/robot/utils/unic.py +66 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/variables/__init__.py +10 -4
- robotframework-7.2rc1/src/robot/variables/assigner.py +316 -0
- robotframework-7.2rc1/src/robot/variables/evaluation.py +177 -0
- robotframework-7.2rc1/src/robot/variables/filesetter.py +176 -0
- robotframework-7.2rc1/src/robot/variables/finders.py +151 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/variables/notfound.py +8 -11
- robotframework-7.2rc1/src/robot/variables/replacer.py +205 -0
- robotframework-7.2rc1/src/robot/variables/resolvable.py +34 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/variables/scopes.py +58 -30
- robotframework-7.2rc1/src/robot/variables/search.py +286 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/variables/store.py +43 -27
- robotframework-7.2rc1/src/robot/variables/tablesetter.py +161 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/variables/variables.py +12 -10
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/version.py +1 -5
- robotframework-7.2rc1/src/robotframework.egg-info/PKG-INFO +187 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robotframework.egg-info/SOURCES.txt +72 -70
- robotframework-7.2rc1/src/robotframework.egg-info/entry_points.txt +5 -0
- robotframework-7.2rc1/tasks.py +164 -0
- robotframework-3.0.4rc1/AUTHORS.txt +0 -76
- robotframework-3.0.4rc1/INSTALL.rst +0 -725
- robotframework-3.0.4rc1/MANIFEST.in +0 -4
- robotframework-3.0.4rc1/PKG-INFO +0 -175
- robotframework-3.0.4rc1/README.rst +0 -146
- robotframework-3.0.4rc1/setup.py +0 -106
- robotframework-3.0.4rc1/src/bin/ipybot +0 -6
- robotframework-3.0.4rc1/src/bin/ipybot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/ipyrebot +0 -6
- robotframework-3.0.4rc1/src/bin/ipyrebot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/jybot +0 -6
- robotframework-3.0.4rc1/src/bin/jybot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/jyrebot +0 -6
- robotframework-3.0.4rc1/src/bin/jyrebot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/pybot +0 -6
- robotframework-3.0.4rc1/src/bin/pybot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/rebot +0 -9
- robotframework-3.0.4rc1/src/bin/rebot.bat +0 -2
- robotframework-3.0.4rc1/src/bin/robot +0 -9
- robotframework-3.0.4rc1/src/bin/robot.bat +0 -2
- robotframework-3.0.4rc1/src/robot/api/__init__.py +0 -74
- robotframework-3.0.4rc1/src/robot/api/deco.py +0 -54
- robotframework-3.0.4rc1/src/robot/htmldata/htmlfilewriter.py +0 -115
- robotframework-3.0.4rc1/src/robot/htmldata/jartemplate.py +0 -46
- robotframework-3.0.4rc1/src/robot/htmldata/lib/jquery.min.js +0 -2
- robotframework-3.0.4rc1/src/robot/htmldata/lib/jquery.tablesorter.min.js +0 -5
- robotframework-3.0.4rc1/src/robot/htmldata/lib/jsxcompressor.min.js +0 -19
- robotframework-3.0.4rc1/src/robot/htmldata/libdoc/libdoc.css +0 -148
- robotframework-3.0.4rc1/src/robot/htmldata/libdoc/libdoc.html +0 -379
- robotframework-3.0.4rc1/src/robot/htmldata/libdoc/print.css +0 -11
- robotframework-3.0.4rc1/src/robot/htmldata/libdoc/pygments.css +0 -69
- robotframework-3.0.4rc1/src/robot/htmldata/rebot/common.css +0 -227
- robotframework-3.0.4rc1/src/robot/jarrunner.py +0 -69
- robotframework-3.0.4rc1/src/robot/libdoc.py +0 -233
- robotframework-3.0.4rc1/src/robot/libdocpkg/__init__.py +0 -47
- robotframework-3.0.4rc1/src/robot/libdocpkg/builder.py +0 -39
- robotframework-3.0.4rc1/src/robot/libdocpkg/javabuilder.py +0 -129
- robotframework-3.0.4rc1/src/robot/libdocpkg/model.py +0 -70
- robotframework-3.0.4rc1/src/robot/libdocpkg/robotbuilder.py +0 -121
- robotframework-3.0.4rc1/src/robot/libdocpkg/specbuilder.py +0 -61
- robotframework-3.0.4rc1/src/robot/libdocpkg/xmlwriter.py +0 -47
- robotframework-3.0.4rc1/src/robot/libraries/Collections.py +0 -941
- robotframework-3.0.4rc1/src/robot/libraries/Easter.py +0 -27
- robotframework-3.0.4rc1/src/robot/libraries/Remote.py +0 -288
- robotframework-3.0.4rc1/src/robot/libraries/Reserved.py +0 -31
- robotframework-3.0.4rc1/src/robot/libraries/dialogs_ipy.py +0 -201
- robotframework-3.0.4rc1/src/robot/libraries/dialogs_jy.py +0 -113
- robotframework-3.0.4rc1/src/robot/libraries/dialogs_py.py +0 -179
- robotframework-3.0.4rc1/src/robot/model/criticality.py +0 -43
- robotframework-3.0.4rc1/src/robot/model/filter.py +0 -102
- robotframework-3.0.4rc1/src/robot/model/imports.py +0 -62
- robotframework-3.0.4rc1/src/robot/model/itemlist.py +0 -102
- robotframework-3.0.4rc1/src/robot/model/keyword.py +0 -182
- robotframework-3.0.4rc1/src/robot/model/message.py +0 -75
- robotframework-3.0.4rc1/src/robot/model/metadata.py +0 -33
- robotframework-3.0.4rc1/src/robot/model/modelobject.py +0 -85
- robotframework-3.0.4rc1/src/robot/model/namepatterns.py +0 -54
- robotframework-3.0.4rc1/src/robot/model/tags.py +0 -180
- robotframework-3.0.4rc1/src/robot/model/testcase.py +0 -88
- robotframework-3.0.4rc1/src/robot/model/testsuite.py +0 -168
- robotframework-3.0.4rc1/src/robot/model/visitor.py +0 -163
- robotframework-3.0.4rc1/src/robot/output/console/dotted.py +0 -87
- robotframework-3.0.4rc1/src/robot/output/console/highlighting.py +0 -200
- robotframework-3.0.4rc1/src/robot/output/debugfile.py +0 -112
- robotframework-3.0.4rc1/src/robot/output/filelogger.py +0 -62
- robotframework-3.0.4rc1/src/robot/output/listenerarguments.py +0 -141
- robotframework-3.0.4rc1/src/robot/output/listenermethods.py +0 -114
- robotframework-3.0.4rc1/src/robot/output/listeners.py +0 -168
- robotframework-3.0.4rc1/src/robot/output/logger.py +0 -220
- robotframework-3.0.4rc1/src/robot/output/loggerhelper.py +0 -150
- robotframework-3.0.4rc1/src/robot/output/output.py +0 -74
- robotframework-3.0.4rc1/src/robot/output/xmllogger.py +0 -161
- robotframework-3.0.4rc1/src/robot/parsing/__init__.py +0 -66
- robotframework-3.0.4rc1/src/robot/parsing/comments.py +0 -63
- robotframework-3.0.4rc1/src/robot/parsing/datarow.py +0 -97
- robotframework-3.0.4rc1/src/robot/parsing/htmlreader.py +0 -205
- robotframework-3.0.4rc1/src/robot/parsing/model.py +0 -717
- robotframework-3.0.4rc1/src/robot/parsing/populators.py +0 -215
- robotframework-3.0.4rc1/src/robot/parsing/restreader.py +0 -52
- robotframework-3.0.4rc1/src/robot/parsing/settings.py +0 -393
- robotframework-3.0.4rc1/src/robot/parsing/tablepopulators.py +0 -335
- robotframework-3.0.4rc1/src/robot/parsing/tsvreader.py +0 -48
- robotframework-3.0.4rc1/src/robot/parsing/txtreader.py +0 -36
- robotframework-3.0.4rc1/src/robot/pythonpathsetter.py +0 -41
- robotframework-3.0.4rc1/src/robot/reporting/jsmodelbuilders.py +0 -189
- robotframework-3.0.4rc1/src/robot/reporting/stringcache.py +0 -52
- robotframework-3.0.4rc1/src/robot/reporting/xunitwriter.py +0 -100
- robotframework-3.0.4rc1/src/robot/result/executionresult.py +0 -136
- robotframework-3.0.4rc1/src/robot/result/flattenkeywordmatcher.py +0 -77
- robotframework-3.0.4rc1/src/robot/result/keywordremover.py +0 -164
- robotframework-3.0.4rc1/src/robot/result/merger.py +0 -98
- robotframework-3.0.4rc1/src/robot/result/model.py +0 -295
- robotframework-3.0.4rc1/src/robot/result/suiteteardownfailed.py +0 -47
- robotframework-3.0.4rc1/src/robot/result/xmlelementhandlers.py +0 -258
- robotframework-3.0.4rc1/src/robot/running/__init__.py +0 -109
- robotframework-3.0.4rc1/src/robot/running/arguments/argumentmapper.py +0 -73
- robotframework-3.0.4rc1/src/robot/running/arguments/argumentparser.py +0 -196
- robotframework-3.0.4rc1/src/robot/running/arguments/argumentresolver.py +0 -134
- robotframework-3.0.4rc1/src/robot/running/arguments/argumentspec.py +0 -50
- robotframework-3.0.4rc1/src/robot/running/arguments/argumentvalidator.py +0 -68
- robotframework-3.0.4rc1/src/robot/running/arguments/embedded.py +0 -88
- robotframework-3.0.4rc1/src/robot/running/arguments/javaargumentcoercer.py +0 -146
- robotframework-3.0.4rc1/src/robot/running/builder.py +0 -231
- robotframework-3.0.4rc1/src/robot/running/context.py +0 -198
- robotframework-3.0.4rc1/src/robot/running/defaults.py +0 -43
- robotframework-3.0.4rc1/src/robot/running/dynamicmethods.py +0 -145
- robotframework-3.0.4rc1/src/robot/running/handlers.py +0 -269
- robotframework-3.0.4rc1/src/robot/running/handlerstore.py +0 -85
- robotframework-3.0.4rc1/src/robot/running/importer.py +0 -149
- robotframework-3.0.4rc1/src/robot/running/librarykeywordrunner.py +0 -224
- robotframework-3.0.4rc1/src/robot/running/libraryscopes.py +0 -101
- robotframework-3.0.4rc1/src/robot/running/model.py +0 -319
- robotframework-3.0.4rc1/src/robot/running/namespace.py +0 -440
- robotframework-3.0.4rc1/src/robot/running/runkwregister.py +0 -65
- robotframework-3.0.4rc1/src/robot/running/runner.py +0 -220
- robotframework-3.0.4rc1/src/robot/running/status.py +0 -234
- robotframework-3.0.4rc1/src/robot/running/statusreporter.py +0 -75
- robotframework-3.0.4rc1/src/robot/running/steprunner.py +0 -272
- robotframework-3.0.4rc1/src/robot/running/testlibraries.py +0 -411
- robotframework-3.0.4rc1/src/robot/running/timeouts/ironpython.py +0 -58
- robotframework-3.0.4rc1/src/robot/running/timeouts/jython.py +0 -57
- robotframework-3.0.4rc1/src/robot/running/usererrorhandler.py +0 -68
- robotframework-3.0.4rc1/src/robot/running/userkeyword.py +0 -114
- robotframework-3.0.4rc1/src/robot/running/userkeywordrunner.py +0 -236
- robotframework-3.0.4rc1/src/robot/tidy.py +0 -330
- robotframework-3.0.4rc1/src/robot/utils/__init__.py +0 -76
- robotframework-3.0.4rc1/src/robot/utils/compat.py +0 -76
- robotframework-3.0.4rc1/src/robot/utils/compress.py +0 -54
- robotframework-3.0.4rc1/src/robot/utils/connectioncache.py +0 -178
- robotframework-3.0.4rc1/src/robot/utils/encoding.py +0 -104
- robotframework-3.0.4rc1/src/robot/utils/error.py +0 -206
- robotframework-3.0.4rc1/src/robot/utils/escaping.py +0 -145
- robotframework-3.0.4rc1/src/robot/utils/etreewrapper.py +0 -88
- robotframework-3.0.4rc1/src/robot/utils/importer.py +0 -274
- robotframework-3.0.4rc1/src/robot/utils/match.py +0 -103
- robotframework-3.0.4rc1/src/robot/utils/ordereddict.py +0 -127
- robotframework-3.0.4rc1/src/robot/utils/platform.py +0 -32
- robotframework-3.0.4rc1/src/robot/utils/recommendations.py +0 -75
- robotframework-3.0.4rc1/src/robot/utils/robotinspect.py +0 -36
- robotframework-3.0.4rc1/src/robot/utils/robotio.py +0 -43
- robotframework-3.0.4rc1/src/robot/utils/robottypes.py +0 -52
- robotframework-3.0.4rc1/src/robot/utils/robottypes2.py +0 -74
- robotframework-3.0.4rc1/src/robot/utils/robottypes3.py +0 -65
- robotframework-3.0.4rc1/src/robot/utils/setter.py +0 -46
- robotframework-3.0.4rc1/src/robot/utils/unic.py +0 -89
- robotframework-3.0.4rc1/src/robot/utils/utf8reader.py +0 -52
- robotframework-3.0.4rc1/src/robot/variables/assigner.py +0 -252
- robotframework-3.0.4rc1/src/robot/variables/filesetter.py +0 -144
- robotframework-3.0.4rc1/src/robot/variables/finders.py +0 -153
- robotframework-3.0.4rc1/src/robot/variables/isvar.py +0 -52
- robotframework-3.0.4rc1/src/robot/variables/replacer.py +0 -177
- robotframework-3.0.4rc1/src/robot/variables/splitter.py +0 -187
- robotframework-3.0.4rc1/src/robot/variables/tablesetter.py +0 -150
- robotframework-3.0.4rc1/src/robot/writer/__init__.py +0 -26
- robotframework-3.0.4rc1/src/robot/writer/aligners.py +0 -64
- robotframework-3.0.4rc1/src/robot/writer/dataextractor.py +0 -57
- robotframework-3.0.4rc1/src/robot/writer/datafilewriter.py +0 -126
- robotframework-3.0.4rc1/src/robot/writer/filewriters.py +0 -149
- robotframework-3.0.4rc1/src/robot/writer/formatters.py +0 -150
- robotframework-3.0.4rc1/src/robot/writer/htmlformatter.py +0 -131
- robotframework-3.0.4rc1/src/robot/writer/htmltemplate.py +0 -71
- robotframework-3.0.4rc1/src/robot/writer/rowsplitter.py +0 -108
- robotframework-3.0.4rc1/src/robotframework.egg-info/PKG-INFO +0 -175
- robotframework-3.0.4rc1/tasks.py +0 -277
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/COPYRIGHT.txt +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/LICENSE.txt +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/setup.cfg +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/common/js_disabled.css +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/lib/jquery.highlight.min.js +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/lib/jquery.tmpl.min.js +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/rebot/fileloading.js +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/htmldata/testdoc/testdoc.css +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/reporting/__init__.py +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robot/utils/robotenv.py +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robotframework.egg-info/dependency_links.txt +0 -0
- {robotframework-3.0.4rc1 → robotframework-7.2rc1}/src/robotframework.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Robot Framework contributors
|
|
2
|
+
============================
|
|
3
|
+
|
|
4
|
+
This file lists contributors to Robot Framework during the time it was
|
|
5
|
+
developed at Nokia Networks. There are both `core team members`_ as well
|
|
6
|
+
as `other contributors`_.
|
|
7
|
+
|
|
8
|
+
Nowadays contributors are acknowledged separately in the release notes
|
|
9
|
+
and this file is not anymore updated. Contributors can also be found easily
|
|
10
|
+
via GitHub__.
|
|
11
|
+
|
|
12
|
+
__ https://github.com/robotframework/robotframework/graphs/contributors
|
|
13
|
+
|
|
14
|
+
Core team members
|
|
15
|
+
-----------------
|
|
16
|
+
|
|
17
|
+
The members of the Robot Framework core team during the Nokia Networks years
|
|
18
|
+
2005 - 2015.
|
|
19
|
+
|
|
20
|
+
=========================== ===========
|
|
21
|
+
Name Years
|
|
22
|
+
=========================== ===========
|
|
23
|
+
Pekka Klärck (né Laukkanen) 2005 - 2015
|
|
24
|
+
Petri Haapio 2005 - 2008
|
|
25
|
+
Juha Rantanen 2005 - 2011
|
|
26
|
+
Lasse Koskela 2005 - 2006
|
|
27
|
+
Janne Härkönen 2006 - 2012
|
|
28
|
+
Sami Honkonen 2006 - 2007
|
|
29
|
+
Antti Tuomaala 2006
|
|
30
|
+
Ran Nyman 2007 - 2010
|
|
31
|
+
Heikki Hulkko 2007 - 2009
|
|
32
|
+
Anna Tevaniemi 2008
|
|
33
|
+
Kari Husa 2009 - 2011
|
|
34
|
+
Jussi Malinen 2010 - 2015
|
|
35
|
+
Mikko Korpela 2010 - 2014
|
|
36
|
+
Ismo Aro 2010 - 2012
|
|
37
|
+
Ilmari Kontulainen 2010 - 2013
|
|
38
|
+
Tommi Asiala 2012
|
|
39
|
+
Mika Hänninen 2012 - 2013
|
|
40
|
+
Tatu Kairi 2012 - 2014
|
|
41
|
+
Anssi Syrjäsalo 2013
|
|
42
|
+
Janne Piironen 2013 - 2014
|
|
43
|
+
=========================== ===========
|
|
44
|
+
|
|
45
|
+
Other contributors
|
|
46
|
+
------------------
|
|
47
|
+
|
|
48
|
+
External contributors after Robot Framework was open sourced in 2008.
|
|
49
|
+
As already mentioned above, this list is not anymore updated.
|
|
50
|
+
|
|
51
|
+
=========================== ===============================================
|
|
52
|
+
Name Contribution
|
|
53
|
+
=========================== ===============================================
|
|
54
|
+
Elisabeth Hendrickson | Quick Start Guide (2.0)
|
|
55
|
+
Marcin Michalak | String library (2.1)
|
|
56
|
+
Chris Prinos | reST (HTML) support (2.1)
|
|
57
|
+
| How-to debug execution with `pdb` (2.7.6)
|
|
58
|
+
Régis Desgroppes | Fixing installation paths (2.1.3)
|
|
59
|
+
| xUnit compatible outputs (2.5.5)
|
|
60
|
+
Robert Spielmann | Report background colors (2.5)
|
|
61
|
+
Xie Yanbo | Alignment of east asian characters (2.5.3)
|
|
62
|
+
JSXGraph Developers | JSXGraph tool and license changes for it (2.6)
|
|
63
|
+
Imran | Template names to listener API (2.6)
|
|
64
|
+
| Suite source to listener API (2.7)
|
|
65
|
+
Tatu Aalto | Get Time keyword enhancement (2.7.5)
|
|
66
|
+
Eemeli Kantola | Fix for non-breaking spaces (2.7.5)
|
|
67
|
+
Martti Haukijärvi | IronPython support to Screenshot library (2.7.5)
|
|
68
|
+
Guy Kisel | How-to use decorators when creating libraries (2.7.7)
|
|
69
|
+
| BuiltIn.Log pprint support (2.8.6)
|
|
70
|
+
| New pattern matching keywords in Collections (2.8.6)
|
|
71
|
+
| Keyword/variable not found recommendations (2.8.6)
|
|
72
|
+
| Tidy ELSE and ELSE IF onto separate lines (2.8.7)
|
|
73
|
+
| Initial contribution guidelines (2.9, #1805)
|
|
74
|
+
Mike Terzo | Better connection errors to Remote library (2.7.7)
|
|
75
|
+
Asko Soukka | reST (plain text) support (2.8.2)
|
|
76
|
+
Vivek Kumar Verma | reST (plain text) support (2.8.2)
|
|
77
|
+
Stefan Zimmermann | `**kwargs` support for dynamic libraries (2.8.2)
|
|
78
|
+
| `**kwargs` support for Java libraries (2.8.3)
|
|
79
|
+
| `*varargs` support using java.util.List (2.8.3)
|
|
80
|
+
Mirel Pehadzic | Terminal emulation for Telnet library (2.8.2)
|
|
81
|
+
Diogo Sa-Chaves De Oliveira | Terminal emulation for Telnet library (2.8.2)
|
|
82
|
+
Lionel Perrin | Giving custom seed to --randomize (2.8.5)
|
|
83
|
+
Michael Walle | Telnet.Write Control Character keyword (2.8.5)
|
|
84
|
+
| Telnet.Read Until Prompt strip_prompt option (2.8.7)
|
|
85
|
+
| String.Strip String (3.0)
|
|
86
|
+
Tero Kinnunen | BDD 'But' prefix ignored (2.8.7)
|
|
87
|
+
Heiko Thiery | Enable log level config option for TelnetLibrary (2.8.7)
|
|
88
|
+
Nicolae Chedea | Float parameters in FOR IN RANGE (2.8.7)
|
|
89
|
+
Jared Hellman | Custom keyword names (2.9)
|
|
90
|
+
| Embedded arguments for library keywords (2.9)
|
|
91
|
+
Vinicius K. Ruoso | Support multiple listeners per library (2.9)
|
|
92
|
+
| Allowing control over connection timeout in Telnet library (2.9.2)
|
|
93
|
+
| Suppress docutils errors/warnings with reST format (2.9.2)
|
|
94
|
+
Joseph Lorenzini | Exposed ERROR log level for keywords (2.9)
|
|
95
|
+
Guillaume Grossetie | Less flashy report and log styles (2.9, #1943)
|
|
96
|
+
Ed Brannin | `FOR ... IN ZIP`, `FOR ... IN ENUMERATE` (2.9, #1989)
|
|
97
|
+
Moon SungHoon | String.Get Regexp Matches keyword (2.9, #1985)
|
|
98
|
+
Hélio Guilherme | Support partial match with String.Get Lines Matching Regexp (2.9, #1836)
|
|
99
|
+
Jean-Charles Deville | Make variable errors not exit `Runner keywords` (2.9, #1869)
|
|
100
|
+
Laurent Bristiel | Convert examples in User Guide to plain text format (2.9, #1972)
|
|
101
|
+
Tim Orling | IronPython support for `Dialogs` library (2.9.2, #1235)
|
|
102
|
+
Jozef Behran | Fix `${TEST_MESSAGE}` to reflect current test message (3.0, #2188)
|
|
103
|
+
Joong-Hee Lee | Extend 'Repeat Keyword' to support timeout (3.0, #2245)
|
|
104
|
+
Anton Nikitin | Should (Not) Contain Any (3.0.1, #2120)
|
|
105
|
+
Yang Qian | Support to copy/deepcopy model objects (3.0.1, #2483)
|
|
106
|
+
Chris Callan | Case-insensitivity support to various comparison keywords (3.0.1, #2439)
|
|
107
|
+
Benjamin Einaudi | Add `--rerunfailedsuites` option (3.0.1, #2117)
|
|
108
|
+
=========================== ===============================================
|
|
@@ -36,9 +36,9 @@ Many steps are automated using the generic `Invoke <http://pyinvoke.org>`_
|
|
|
36
36
|
tool with a help by our `rellu <https://github.com/robotframework/rellu>`_
|
|
37
37
|
utilities, but also other tools and modules are needed. A pre-condition is
|
|
38
38
|
installing all these, and that's easiest done using `pip
|
|
39
|
-
<http://pip-installer.org>`_ and the provided `<requirements-
|
|
39
|
+
<http://pip-installer.org>`_ and the provided `<requirements-dev.txt>`_ file::
|
|
40
40
|
|
|
41
|
-
pip install -r requirements-
|
|
41
|
+
pip install -r requirements-dev.txt
|
|
42
42
|
|
|
43
43
|
Using Invoke
|
|
44
44
|
~~~~~~~~~~~~
|
|
@@ -66,10 +66,17 @@ Testing
|
|
|
66
66
|
Make sure that adequate tests are executed before releases are created.
|
|
67
67
|
See `<atest/README.rst>`_ for details.
|
|
68
68
|
|
|
69
|
+
If output.xml `schema <doc/schema/README.rst>`_ has changed, remember to
|
|
70
|
+
run tests also with `full schema validation`__ enabled::
|
|
71
|
+
|
|
72
|
+
atest/run.py --schema-validation
|
|
73
|
+
|
|
74
|
+
__ https://github.com/robotframework/robotframework/tree/master/atest#schema-validation
|
|
75
|
+
|
|
69
76
|
Preparation
|
|
70
77
|
-----------
|
|
71
78
|
|
|
72
|
-
1. Check that you are on the
|
|
79
|
+
1. Check that you are on the right branch and have nothing left to commit,
|
|
73
80
|
pull, or push::
|
|
74
81
|
|
|
75
82
|
git branch
|
|
@@ -86,35 +93,40 @@ Preparation
|
|
|
86
93
|
|
|
87
94
|
VERSION=<version>
|
|
88
95
|
|
|
89
|
-
For example, ``VERSION=
|
|
96
|
+
For example, ``VERSION=7.1.1`` or ``VERSION=7.2a2``. No ``v`` prefix!
|
|
90
97
|
|
|
91
98
|
Release notes
|
|
92
99
|
-------------
|
|
93
100
|
|
|
94
|
-
1.
|
|
95
|
-
|
|
101
|
+
1. Create a personal `GitHub access token`__ to be able to access issue tracker
|
|
102
|
+
programmatically. The token needs only the ``repo/public_repo`` scope.
|
|
103
|
+
|
|
104
|
+
2. Set GitHub user information into shell variables to ease running the
|
|
105
|
+
``invoke release-notes`` command in the next step::
|
|
96
106
|
|
|
97
107
|
GITHUB_USERNAME=<username>
|
|
98
|
-
|
|
108
|
+
GITHUB_ACCESS_TOKEN=<token>
|
|
99
109
|
|
|
100
|
-
|
|
110
|
+
``<username>`` is your normal GitHub user name and ``<token>`` is the personal
|
|
111
|
+
access token generated in the previous step. Alternatively this information can
|
|
112
|
+
be given when running the command in the next step.
|
|
101
113
|
|
|
102
|
-
|
|
114
|
+
3. Generate a template for the release notes::
|
|
103
115
|
|
|
104
|
-
invoke release-notes -w -v $VERSION -u $GITHUB_USERNAME -p $
|
|
116
|
+
invoke release-notes -w -v $VERSION -u $GITHUB_USERNAME -p $GITHUB_ACCESS_TOKEN
|
|
105
117
|
|
|
106
118
|
The ``-v $VERSION`` option can be omitted if `version is already set
|
|
107
119
|
<Set version_>`__. Omit the ``-w`` option if you just want to get release
|
|
108
120
|
notes printed to the console, not written to a file.
|
|
109
121
|
|
|
110
|
-
When generating release notes for a preview release like ``
|
|
122
|
+
When generating release notes for a preview release like ``7.2rc1``,
|
|
111
123
|
the list of issues is only going to contain issues with that label
|
|
112
124
|
(e.g. ``rc1``) or with a label of an earlier preview release (e.g.
|
|
113
125
|
``alpha1``, ``beta2``).
|
|
114
126
|
|
|
115
|
-
|
|
127
|
+
4. Fill the missing details in the generated release notes template.
|
|
116
128
|
|
|
117
|
-
|
|
129
|
+
5. Make sure that issues have correct information:
|
|
118
130
|
|
|
119
131
|
- All issues should have type (bug, enhancement or task) and priority set.
|
|
120
132
|
Notice that issues with the task type are automatically excluded from
|
|
@@ -127,26 +139,28 @@ Release notes
|
|
|
127
139
|
issue tracker than in the generated release notes. This allows re-generating
|
|
128
140
|
the list of issues later if more issues are added.
|
|
129
141
|
|
|
130
|
-
|
|
142
|
+
6. Add, commit and push::
|
|
131
143
|
|
|
132
144
|
git add doc/releasenotes/rf-$VERSION.rst
|
|
133
145
|
git commit -m "Release notes for $VERSION" doc/releasenotes/rf-$VERSION.rst
|
|
134
146
|
git push
|
|
135
147
|
|
|
136
|
-
|
|
148
|
+
7. Update later if necessary. Writing release notes is typically the biggest
|
|
137
149
|
task when generating releases, and getting everything done in one go is
|
|
138
150
|
often impossible.
|
|
139
151
|
|
|
152
|
+
__ https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/creating-a-personal-access-token
|
|
153
|
+
|
|
140
154
|
Set version
|
|
141
155
|
-----------
|
|
142
156
|
|
|
143
|
-
1. Set version information in `<src/robot/version.py>`_ and
|
|
157
|
+
1. Set version information in `<src/robot/version.py>`_ and `<setup.py>`_::
|
|
144
158
|
|
|
145
159
|
invoke set-version $VERSION
|
|
146
160
|
|
|
147
161
|
2. Commit and push changes::
|
|
148
162
|
|
|
149
|
-
git commit -m "Updated version to $VERSION" src/robot/version.py
|
|
163
|
+
git commit -m "Updated version to $VERSION" src/robot/version.py setup.py
|
|
150
164
|
git push
|
|
151
165
|
|
|
152
166
|
Tagging
|
|
@@ -175,71 +189,39 @@ Creating distributions
|
|
|
175
189
|
|
|
176
190
|
invoke clean
|
|
177
191
|
|
|
178
|
-
3.
|
|
179
|
-
|
|
180
|
-
python setup.py sdist
|
|
181
|
-
ls -l dist
|
|
182
|
-
|
|
183
|
-
Distributions can be tested locally if needed.
|
|
184
|
-
|
|
185
|
-
4. Upload distributions to PyPI::
|
|
186
|
-
|
|
187
|
-
twine upload dist/*
|
|
192
|
+
3. Build `libdoc.html`::
|
|
188
193
|
|
|
189
|
-
|
|
190
|
-
<https://pypi.python.org/pypi/robotframework>`_ looks good.
|
|
194
|
+
npm run build --prefix src/web/
|
|
191
195
|
|
|
192
|
-
|
|
196
|
+
This step can be skipped if there are no changes to Libdoc. Prerequisites
|
|
197
|
+
are listed in `<src/web/README.md>`_.
|
|
193
198
|
|
|
194
|
-
|
|
199
|
+
4. Create and validate source distribution and `wheel <https://pythonwheels.com>`_::
|
|
195
200
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
invoke jar
|
|
201
|
-
|
|
202
|
-
- Test that JAR is not totally borken::
|
|
203
|
-
|
|
204
|
-
java -jar dist/robotframework-$VERSION.jar --version
|
|
205
|
-
java -jar dist/robotframework-$VERSION.jar atest/testdata/misc/pass_and_fail.robot
|
|
206
|
-
|
|
207
|
-
8. Upload JAR to Sonatype
|
|
208
|
-
|
|
209
|
-
- Sonatype offers a service where users can upload JARs and they will be synced
|
|
210
|
-
to the maven central repository. Below are the instructions to upload the JAR.
|
|
211
|
-
|
|
212
|
-
- Prequisites:
|
|
213
|
-
|
|
214
|
-
- Install maven
|
|
215
|
-
- Create a `Sonatype account`__
|
|
216
|
-
- Add these lines (filled with the Sonatype account information) to your ``settings.xml``::
|
|
201
|
+
python setup.py sdist bdist_wheel
|
|
202
|
+
ls -l dist
|
|
203
|
+
twine check dist/*
|
|
217
204
|
|
|
218
|
-
|
|
219
|
-
<server>
|
|
220
|
-
<id>sonatype-nexus-staging</id>
|
|
221
|
-
<username></username>
|
|
222
|
-
<password></password>
|
|
223
|
-
</server>
|
|
224
|
-
</servers>
|
|
205
|
+
Distributions can be tested locally if needed.
|
|
225
206
|
|
|
226
|
-
|
|
227
|
-
- Apply for `publish rights`__ to org.robotframework project. This will
|
|
228
|
-
take some time from them to accept.
|
|
207
|
+
5. Upload distributions to PyPI::
|
|
229
208
|
|
|
209
|
+
twine upload dist/*
|
|
230
210
|
|
|
231
|
-
|
|
211
|
+
6. Verify that project pages at `PyPI
|
|
212
|
+
<https://pypi.python.org/pypi/robotframework>`_ look good.
|
|
232
213
|
|
|
233
|
-
|
|
214
|
+
7. Test installation::
|
|
234
215
|
|
|
235
|
-
|
|
236
|
-
- After that, the released JAR is synced to Maven central within an hour.
|
|
216
|
+
pip install --pre --upgrade robotframework
|
|
237
217
|
|
|
238
|
-
|
|
239
|
-
__ http://central.sonatype.org/pages/working-with-pgp-signatures.html
|
|
240
|
-
__ https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
|
|
218
|
+
8. Documentation
|
|
241
219
|
|
|
242
|
-
|
|
220
|
+
- For a reproducible build, set the ``SOURCE_DATE_EPOCH``
|
|
221
|
+
environment variable to a constant value, corresponding to the
|
|
222
|
+
date in seconds since the Epoch (also known as Epoch time). For
|
|
223
|
+
more information regarding this environment variable, see
|
|
224
|
+
https://reproducible-builds.org/docs/source-date-epoch/.
|
|
243
225
|
|
|
244
226
|
- Generate library documentation::
|
|
245
227
|
|
|
@@ -253,19 +235,19 @@ __ https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Us
|
|
|
253
235
|
|
|
254
236
|
git checkout gh-pages
|
|
255
237
|
invoke add-docs $VERSION --push
|
|
256
|
-
git checkout master
|
|
238
|
+
git checkout master # replace master with v*-maintenance if needed!
|
|
257
239
|
|
|
258
240
|
Post actions
|
|
259
241
|
------------
|
|
260
242
|
|
|
261
243
|
1. Back to master if needed::
|
|
262
244
|
|
|
263
|
-
git checkout master
|
|
245
|
+
git checkout master # replace master with v*-maintenance if needed!
|
|
264
246
|
|
|
265
247
|
2. Set dev version based on the previous version::
|
|
266
248
|
|
|
267
249
|
invoke set-version dev
|
|
268
|
-
git commit -m "Back to dev version" src/robot/version.py
|
|
250
|
+
git commit -m "Back to dev version" src/robot/version.py setup.py
|
|
269
251
|
git push
|
|
270
252
|
|
|
271
253
|
For example, ``1.2.3`` is changed to ``1.2.4.dev1`` and ``2.0.1a1``
|
|
@@ -297,7 +279,7 @@ Announcements
|
|
|
297
279
|
3. ``#devel`` and ``#general`` channels on Slack.
|
|
298
280
|
|
|
299
281
|
4. `Robot Framework LinkedIn
|
|
300
|
-
<https://www.linkedin.com/groups/
|
|
282
|
+
<https://www.linkedin.com/groups/3710899/>`_ group.
|
|
301
283
|
|
|
302
284
|
5. Consider sending announcements, at least with major releases, also to other
|
|
303
285
|
forums where we want to make the framework more well known. For example:
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
Contribution guidelines
|
|
2
2
|
=======================
|
|
3
3
|
|
|
4
|
-
These guidelines instruct how to submit issues and contribute code
|
|
5
|
-
`Robot Framework project
|
|
4
|
+
These guidelines instruct how to submit issues and contribute code or
|
|
5
|
+
documentation to the `Robot Framework project
|
|
6
|
+
<https://github.com/robotframework/robotframework>`_.
|
|
6
7
|
There are also many other projects in the larger `Robot Framework ecosystem
|
|
7
8
|
<http://robotframework.org>`_ that you can contribute to. If you notice
|
|
8
9
|
a library or tool missing, there is hardly any better way to contribute
|
|
@@ -12,6 +13,11 @@ answering questions and participating discussion on `robotframework-users
|
|
|
12
13
|
and other forums, as well as spreading the word about the framework one way or
|
|
13
14
|
the other.
|
|
14
15
|
|
|
16
|
+
These guidelines expect readers to have a basic knowledge about open source
|
|
17
|
+
as well as why and how to contribute to open source projects. If you are
|
|
18
|
+
totally new to these topics, it may be a good idea to look at the generic
|
|
19
|
+
`Open Source Guides <https://opensource.guide/>`_ first.
|
|
20
|
+
|
|
15
21
|
.. contents::
|
|
16
22
|
:depth: 2
|
|
17
23
|
:local:
|
|
@@ -25,7 +31,7 @@ unsure if something is a bug or is a feature worth implementing, you can
|
|
|
25
31
|
first ask on `robotframework-users`_ mailing list, on `IRC
|
|
26
32
|
<http://webchat.freenode.net/?channels=robotframework&prompt=1>`_
|
|
27
33
|
(#robotframework on irc.freenode.net), or on `Slack
|
|
28
|
-
<https://robotframework-slack.herokuapp.com>`_. These and other similar
|
|
34
|
+
<https://robotframework-slack-invite.herokuapp.com>`_. These and other similar
|
|
29
35
|
forums, not the issue tracker, are also places where to ask general questions.
|
|
30
36
|
|
|
31
37
|
Before submitting a new issue, it is always a good idea to check is the
|
|
@@ -41,8 +47,8 @@ and preferably also reproduce it. Key things to have in good bug report:
|
|
|
41
47
|
1. Version information
|
|
42
48
|
|
|
43
49
|
- Robot Framework version
|
|
44
|
-
- Python interpreter
|
|
45
|
-
- Operating system
|
|
50
|
+
- Python interpreter version
|
|
51
|
+
- Operating system and its version
|
|
46
52
|
|
|
47
53
|
2. Steps to reproduce the problem. With more complex problems it is often
|
|
48
54
|
a good idea to create a `short, self contained, correct example (SSCCE)
|
|
@@ -58,7 +64,7 @@ Enhancement requests
|
|
|
58
64
|
|
|
59
65
|
Describe the new feature and use cases for it in as much detail as possible.
|
|
60
66
|
Especially with larger enhancements, be prepared to contribute the code
|
|
61
|
-
in form of a pull request as explained below or to pay someone for the work.
|
|
67
|
+
in the form of a pull request as explained below or to pay someone for the work.
|
|
62
68
|
Consider also would it be better to implement this functionality as a separate
|
|
63
69
|
tool outside the core framework.
|
|
64
70
|
|
|
@@ -77,15 +83,27 @@ Often you already have a bug or an enhancement you want to work on in your
|
|
|
77
83
|
mind, but you can also look at the `issue tracker`_ to find bugs and
|
|
78
84
|
enhancements submitted by others. The issues vary significantly in complexity
|
|
79
85
|
and difficulty, so you can try to find something that matches your skill level
|
|
80
|
-
and knowledge.
|
|
86
|
+
and knowledge. There are two specific labels to look for when looking for
|
|
87
|
+
something to contribute:
|
|
88
|
+
|
|
89
|
+
`good first issue`__
|
|
90
|
+
These issues typically do not require any knowledge of Robot Framework
|
|
91
|
+
internals and are generally easy to implement or fix. Thus these issues
|
|
92
|
+
are especially good for new contributors.
|
|
93
|
+
|
|
94
|
+
`help wanted`__
|
|
95
|
+
These issues require external help to get implemented or fixed.
|
|
96
|
+
|
|
97
|
+
__ https://github.com/robotframework/robotframework/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22
|
|
98
|
+
__ https://github.com/robotframework/robotframework/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22
|
|
81
99
|
|
|
82
100
|
Pull requests
|
|
83
101
|
~~~~~~~~~~~~~
|
|
84
102
|
|
|
85
103
|
On GitHub pull requests are the main mechanism to contribute code. They
|
|
86
|
-
are easy to use both for the contributor and for person accepting
|
|
104
|
+
are easy to use both for the contributor and for the person accepting
|
|
87
105
|
the contribution, and with more complex contributions it is easy also
|
|
88
|
-
for others to join the discussion. Preconditions for creating
|
|
106
|
+
for others to join the discussion. Preconditions for creating pull
|
|
89
107
|
requests are having a `GitHub account <https://github.com/>`_,
|
|
90
108
|
installing `Git <https://git-scm.com>`_ and forking the
|
|
91
109
|
`Robot Framework project`_.
|
|
@@ -94,8 +112,8 @@ GitHub has good articles explaining how to
|
|
|
94
112
|
`set up Git <https://help.github.com/articles/set-up-git/>`_,
|
|
95
113
|
`fork a repository <https://help.github.com/articles/fork-a-repo/>`_ and
|
|
96
114
|
`use pull requests <https://help.github.com/articles/using-pull-requests>`_
|
|
97
|
-
and we do not go through them in more detail. We do, however,
|
|
98
|
-
|
|
115
|
+
and we do not go through them in more detail. We do, however, recommend to
|
|
116
|
+
create dedicated topic branches for pull requests instead of creating
|
|
99
117
|
them based on the master branch. This is especially important if you plan to
|
|
100
118
|
work on multiple pull requests at the same time.
|
|
101
119
|
|
|
@@ -118,6 +136,18 @@ All code, including test code, must be compatible with all supported Python
|
|
|
118
136
|
interpreters and versions. Most importantly this means that the code must
|
|
119
137
|
support both Python 2 and Python 3.
|
|
120
138
|
|
|
139
|
+
Line length
|
|
140
|
+
'''''''''''
|
|
141
|
+
|
|
142
|
+
Maximum line length with Python code, including docstrings and comments, is 88
|
|
143
|
+
characters. This is also what `Black <https://pypi.org/project/black/>`__ uses
|
|
144
|
+
by default and `their documentation
|
|
145
|
+
<https://black.readthedocs.io/en/stable/the_black_code_style.html#line-length>`__
|
|
146
|
+
explains why. Notice that we do not have immediate plans to actually take Black
|
|
147
|
+
into use but we may consider that later.
|
|
148
|
+
|
|
149
|
+
With Robot Framework tests the maximum line length is 100.
|
|
150
|
+
|
|
121
151
|
Whitespace
|
|
122
152
|
''''''''''
|
|
123
153
|
|
|
@@ -125,6 +155,8 @@ We are pretty picky about using whitespace. We follow `PEP-8`_ in how to use
|
|
|
125
155
|
blank lines and whitespace in general, but we also have some stricter rules:
|
|
126
156
|
|
|
127
157
|
- No blank lines inside functions.
|
|
158
|
+
- No blank lines between a class declaration and class attributes or between
|
|
159
|
+
attributes.
|
|
128
160
|
- Indentation using spaces, not tabs.
|
|
129
161
|
- No trailing spaces.
|
|
130
162
|
- No extra empty lines at the end of the file.
|
|
@@ -179,11 +211,24 @@ and follow these guidelines:
|
|
|
179
211
|
not trivial.
|
|
180
212
|
|
|
181
213
|
- All new enhancements or changes should have a note telling when the change
|
|
182
|
-
was introduced. Often adding something like ``New in Robot Framework
|
|
214
|
+
was introduced. Often adding something like ``New in Robot Framework 3.1.``
|
|
183
215
|
is enough.
|
|
184
216
|
|
|
185
|
-
Library documentation can be
|
|
186
|
-
|
|
217
|
+
Library documentation can be generated using `Invoke <http://pyinvoke.org>`_
|
|
218
|
+
by running command
|
|
219
|
+
|
|
220
|
+
::
|
|
221
|
+
|
|
222
|
+
invoke library-docs <name>
|
|
223
|
+
|
|
224
|
+
where ``<name>`` is the name of the library or its unique prefix. Run
|
|
225
|
+
|
|
226
|
+
::
|
|
227
|
+
|
|
228
|
+
invoke --help library-docs
|
|
229
|
+
|
|
230
|
+
for more information see `<BUILD.rst>`_ for details about installing and
|
|
231
|
+
using Invoke.
|
|
187
232
|
|
|
188
233
|
API documentation
|
|
189
234
|
'''''''''''''''''
|
|
@@ -211,13 +256,13 @@ Tests
|
|
|
211
256
|
When submitting a pull request with a new feature or a fix, you should
|
|
212
257
|
always include tests for your changes. These tests prove that your changes
|
|
213
258
|
work, help prevent bugs in the future, and help document what your changes
|
|
214
|
-
do. Depending
|
|
259
|
+
do. Depending on the change, you may need acceptance tests, unit tests
|
|
215
260
|
or both.
|
|
216
261
|
|
|
217
262
|
Make sure to run all of the tests before submitting a pull request to be sure
|
|
218
263
|
that your changes do not break anything. If you can, test in multiple
|
|
219
|
-
environments and interpreters (Windows, Linux, OS X, Python
|
|
220
|
-
|
|
264
|
+
environments and interpreters (Windows, Linux, OS X, different Python
|
|
265
|
+
versions etc). Pull requests are also automatically tested on
|
|
221
266
|
continuous integration.
|
|
222
267
|
|
|
223
268
|
Executing changed code
|
|
@@ -248,41 +293,3 @@ Unit tests
|
|
|
248
293
|
|
|
249
294
|
Unit tests are great for testing internal logic and should be added when
|
|
250
295
|
appropriate. For more details see `<utest/README.rst>`_.
|
|
251
|
-
|
|
252
|
-
Finalizing pull requests
|
|
253
|
-
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
254
|
-
|
|
255
|
-
Once you have code, documentation and tests ready, it is time to finalize
|
|
256
|
-
the pull request.
|
|
257
|
-
|
|
258
|
-
AUTHORS.txt
|
|
259
|
-
'''''''''''
|
|
260
|
-
|
|
261
|
-
If you have done any non-trivial change and would like to be credited,
|
|
262
|
-
add yourself to `<AUTHORS.txt>`_ file.
|
|
263
|
-
|
|
264
|
-
Resolving conflicts
|
|
265
|
-
'''''''''''''''''''
|
|
266
|
-
|
|
267
|
-
Conflicts can occur if there are new changes to the master that touch the
|
|
268
|
-
same code as your changes. In that case you should `sync your fork
|
|
269
|
-
<https://help.github.com/articles/syncing-a-fork>`_ and `resolve conflicts
|
|
270
|
-
<https://help.github.com/articles/resolving-a-merge-conflict-from-the-command-line>`_
|
|
271
|
-
to allow for an easy merge.
|
|
272
|
-
|
|
273
|
-
The most common conflicting file is the aforementioned `AUTHORS.txt`_, but
|
|
274
|
-
luckily fixing those conflicts is typically easy.
|
|
275
|
-
|
|
276
|
-
Squashing commits
|
|
277
|
-
'''''''''''''''''
|
|
278
|
-
|
|
279
|
-
If the pull request contains multiple commits, it is recommended that you
|
|
280
|
-
squash them into a single commit before the pull request is merged.
|
|
281
|
-
See `Squashing Github pull requests into a single commit
|
|
282
|
-
<http://eli.thegreenplace.net/2014/02/19/squashing-github-pull-requests-into-a-single-commit>`_
|
|
283
|
-
article for more details about why and how.
|
|
284
|
-
|
|
285
|
-
Squashing is especially important if the pull request contains lots of
|
|
286
|
-
temporary commits and changes that have been later reverted or redone.
|
|
287
|
-
Squashing is not needed if the commit history is clean and individual
|
|
288
|
-
commits are meaningful alone.
|